const union sctp_addr *laddr)
{
struct sctp_endpoint *retval;
- union sctp_addr tmp;
- flip_to_n(&tmp, laddr);
sctp_read_lock(&ep->base.addr_lock);
- if (ep->base.bind_addr.port == laddr->v4.sin_port) {
- if (sctp_bind_addr_match(&ep->base.bind_addr, &tmp,
+ if (htons(ep->base.bind_addr.port) == laddr->v4.sin_port) {
+ if (sctp_bind_addr_match(&ep->base.bind_addr, laddr,
sctp_sk(ep->base.sk))) {
retval = ep;
goto out;
struct sctp_association *asoc;
struct list_head *pos;
- rport = paddr->v4.sin_port;
+ rport = ntohs(paddr->v4.sin_port);
list_for_each(pos, &ep->asocs) {
asoc = list_entry(pos, struct sctp_association, asocs);
* COOKIE-ECHO chunk.
*/
if (NULL == chunk->asoc) {
+ union sctp_addr tmp;
+ flip_to_n(&tmp, sctp_source(chunk));
asoc = sctp_endpoint_lookup_assoc(ep,
- sctp_source(chunk),
+ &tmp,
&transport);
chunk->asoc = asoc;
chunk->transport = transport;