[SCTP]: sctp_endpoint_lookup_assoc() switched to net-endian.
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 21 Nov 2006 01:11:33 +0000 (17:11 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Sun, 3 Dec 2006 05:26:49 +0000 (21:26 -0800)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/endpointola.c
net/sctp/socket.c

index c543f32..5ffb1af 100644 (file)
@@ -257,16 +257,14 @@ static struct sctp_association *__sctp_endpoint_lookup_assoc(
        int rport;
        struct sctp_association *asoc;
        struct list_head *pos;
-       union sctp_addr tmp;
-       flip_to_n(&tmp, paddr);
 
-       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);
                if (rport == asoc->peer.port) {
                        sctp_read_lock(&asoc->base.addr_lock);
-                       *transport = sctp_assoc_lookup_paddr(asoc, &tmp);
+                       *transport = sctp_assoc_lookup_paddr(asoc, paddr);
                        sctp_read_unlock(&asoc->base.addr_lock);
 
                        if (*transport)
@@ -348,8 +346,10 @@ static void sctp_endpoint_bh_rcv(struct sctp_endpoint *ep)
                 * 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;
index d09589a..6beaa78 100644 (file)
@@ -228,11 +228,9 @@ static struct sctp_transport *sctp_addr_id2transport(struct sock *sk,
        struct sctp_association *addr_asoc = NULL, *id_asoc = NULL;
        struct sctp_transport *transport;
        union sctp_addr *laddr = (union sctp_addr *)addr;
-       union sctp_addr tmp;
 
-       flip_to_h(&tmp, laddr);
        addr_asoc = sctp_endpoint_lookup_assoc(sctp_sk(sk)->ep,
-                                              &tmp,
+                                              laddr,
                                               &transport);
 
        if (!addr_asoc)
@@ -1007,7 +1005,7 @@ static int __sctp_connect(struct sock* sk,
                /* Check if there already is a matching association on the
                 * endpoint (other than the one created here).
                 */
-               asoc2 = sctp_endpoint_lookup_assoc(ep, &to, &transport);
+               asoc2 = sctp_endpoint_lookup_assoc(ep, sa_addr, &transport);
                if (asoc2 && asoc2 != asoc) {
                        if (asoc2->state >= SCTP_STATE_ESTABLISHED)
                                err = -EISCONN;
@@ -1468,7 +1466,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
        /* If a msg_name has been specified, assume this is to be used.  */
        if (msg_name) {
                /* Look for a matching association on the endpoint. */
-               asoc = sctp_endpoint_lookup_assoc(ep, &to, &transport);
+               asoc = sctp_endpoint_lookup_assoc(ep, &tmp, &transport);
                if (!asoc) {
                        /* If we could not find a matching association on the
                         * endpoint, make sure that it is not a TCP-style