]> err.no Git - linux-2.6/blobdiff - net/sctp/bind_addr.c
[SCTP]: sctp_copy_one_addr() switched to net-endian.
[linux-2.6] / net / sctp / bind_addr.c
index 2b9c12a170e55584bef8cf5335abe2aa06309642..50f3697625fda943909e79df63d0e7a25cb02b01 100644 (file)
@@ -161,7 +161,9 @@ int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new,
         * Both v4 and v6 have the port at the same offset.
         */
        if (!addr->a.v4.sin_port)
-               addr->a.v4.sin_port = bp->port;
+               addr->a.v4.sin_port = htons(bp->port);
+
+       flip_to_h(&addr->a_h, &addr->a);
 
        addr->use_as_src = use_as_src;
 
@@ -237,8 +239,8 @@ union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp,
 
        list_for_each(pos, &bp->address_list) {
                addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-               af = sctp_get_af_specific(addr->a.v4.sin_family);
-               len = af->to_addr_param(&addr->a, &rawaddr);
+               af = sctp_get_af_specific(addr->a_h.v4.sin_family);
+               len = af->to_addr_param(&addr->a_h, &rawaddr);
                memcpy(addrparms.v, &rawaddr, len);
                addrparms.v += len;
                addrparms_len += len;
@@ -275,7 +277,7 @@ int sctp_raw_to_bind_addrs(struct sctp_bind_addr *bp, __u8 *raw_addr_list,
                        break;
                }
 
-               af->from_addr_param(&addr, rawaddr, port, 0);
+               af->from_addr_param(&addr, rawaddr, htons(port), 0);
                retval = sctp_add_bind_addr(bp, &addr, 1, gfp);
                if (retval) {
                        /* Can't finish building the list, clean up. */
@@ -343,7 +345,7 @@ union sctp_addr *sctp_find_unmatch_addr(struct sctp_bind_addr       *bp,
                        addr_buf += af->sockaddr_len;
                }
                if (i == addrcnt)
-                       return &laddr->a;
+                       return &laddr->a_h;
        }
 
        return NULL;