[SCTP]: Switch sctp_add_bind_addr() to net-endian.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
index eafdd11..eb3a5e2 100644
--- a/net/sctp/bind_addr.c
+++ b/net/sctp/bind_addr.c
@@ -155,15 +155,15 @@
if (!addr)
return -ENOMEM;
- memcpy(&addr->a_h, new, sizeof(*new));
+ memcpy(&addr->a, new, sizeof(*new));
/* Fix up the port if it has not yet been set.
* Both v4 and v6 have the port at the same offset.
*/
- if (!addr->a_h.v4.sin_port)
- addr->a_h.v4.sin_port = bp->port;
+ if (!addr->a.v4.sin_port)
+ addr->a.v4.sin_port = htons(bp->port);
- flip_to_n(&addr->a, &addr->a_h);
+ flip_to_h(&addr->a_h, &addr->a);
addr->use_as_src = use_as_src;
@@ -264,6 +264,7 @@
int retval = 0;
int len;
struct sctp_af *af;
+ union sctp_addr tmp;
/* Convert the raw address to standard address format */
while (addrs_len) {
@@ -278,7 +279,8 @@
}
af->from_addr_param(&addr, rawaddr, port, 0);
- retval = sctp_add_bind_addr(bp, &addr, 1, gfp);
+ flip_to_n(&tmp, &addr);
+ retval = sctp_add_bind_addr(bp, &tmp, 1, gfp);
if (retval) {
/* Can't finish building the list, clean up. */
sctp_bind_addr_clean(bp);
@@ -358,6 +360,8 @@
int flags)
{
int error = 0;
+ union sctp_addr tmp;
+ flip_to_n(&tmp, addr);
if (sctp_is_any(addr)) {
error = sctp_copy_local_addr_list(dest, scope, gfp, flags);
@@ -371,7 +375,7 @@
(((AF_INET6 == addr->sa.sa_family) &&
(flags & SCTP_ADDR6_ALLOWED) &&
(flags & SCTP_ADDR6_PEERSUPP))))
- error = sctp_add_bind_addr(dest, addr, 1, gfp);
+ error = sctp_add_bind_addr(dest, &tmp, 1, gfp);
}
return error;