[SCTP]: Beginning of conversion to net-endian for embedded sctp_addr.

Part 1: rename sctp_chunk->source, sctp_sockaddr_entry->a,
sctp_transport->ipaddr and sctp_transport->saddr (to ..._h)

The next patch will reintroduce these fields and keep them as
net-endian mirrors of the original (renamed) ones.  Split in
two patches to make sure that we hadn't forgotten any instanes.

Later in the series we'll eliminate uses of host-endian variants
(basically switching users to net-endian counterparts as we
progress through that mess).  Then host-endian ones will die.

Other embedded host-endian sctp_addr will be easier to switch
directly, so we leave them alone for now.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 2aa61ac..953a73f 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -713,7 +713,7 @@
 	unsigned long sent_at;
 
 	/* What is the origin IP address for this chunk?  */
-	union sctp_addr source;
+	union sctp_addr source_h;
 	/* Destination address for this chunk. */
 	union sctp_addr dest;
 
@@ -756,7 +756,7 @@
 /* This is a structure for holding either an IPv6 or an IPv4 address.  */
 struct sctp_sockaddr_entry {
 	struct list_head list;
-	union sctp_addr a;
+	union sctp_addr a_h;
 	__u8 use_as_src;
 };
 
@@ -842,7 +842,7 @@
 	int	 dead;
 
 	/* This is the peer's IP address and port. */
-	union sctp_addr ipaddr;
+	union sctp_addr ipaddr_h;
 
 	/* These are the functions we call to handle LLP stuff.	 */
 	struct sctp_af *af_specific;
@@ -900,7 +900,7 @@
 	/* Destination */
 	struct dst_entry *dst;
 	/* Source address. */
-	union sctp_addr saddr;
+	union sctp_addr saddr_h;
 
 	/* When was the last time(in jiffies) that a data packet was sent on
 	 * this transport?  This is used to adjust the cwnd when the transport
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 746b0b0..83318e7 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -442,7 +442,7 @@
 	asoc->peer.primary_path = transport;
 
 	/* Set a default msg_name for events. */
-	memcpy(&asoc->peer.primary_addr, &transport->ipaddr,
+	memcpy(&asoc->peer.primary_addr, &transport->ipaddr_h,
 	       sizeof(union sctp_addr));
 
 	/* If the primary path is changing, assume that the
@@ -487,8 +487,8 @@
 	SCTP_DEBUG_PRINTK_IPADDR("sctp_assoc_rm_peer:association %p addr: ",
 				 " port: %d\n",
 				 asoc,
-				 (&peer->ipaddr),
-				 peer->ipaddr.v4.sin_port);
+				 (&peer->ipaddr_h),
+				 peer->ipaddr_h.v4.sin_port);
 
 	/* If we are to remove the current retran_path, update it
 	 * to the next peer before removing this peer from the list.
@@ -669,7 +669,7 @@
 
 	list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
 		transport = list_entry(pos, struct sctp_transport, transports);
-		if (sctp_cmp_addr_exact(addr, &transport->ipaddr)) {
+		if (sctp_cmp_addr_exact(addr, &transport->ipaddr_h)) {
 			/* Do book keeping for removing the peer and free it. */
 			sctp_assoc_rm_peer(asoc, transport);
 			break;
@@ -689,7 +689,7 @@
 
 	list_for_each(pos, &asoc->peer.transport_addr_list) {
 		t = list_entry(pos, struct sctp_transport, transports);
-		if (sctp_cmp_addr_exact(address, &t->ipaddr))
+		if (sctp_cmp_addr_exact(address, &t->ipaddr_h))
 			return t;
 	}
 
@@ -733,7 +733,7 @@
 	 * user.
 	 */
 	memset(&addr, 0, sizeof(struct sockaddr_storage));
-	flip_to_n((union sctp_addr *)&addr, &transport->ipaddr);
+	flip_to_n((union sctp_addr *)&addr, &transport->ipaddr_h);
 	event = sctp_ulpevent_make_peer_addr_change(asoc, &addr,
 				0, spc_state, error, GFP_ATOMIC);
 	if (event)
@@ -1043,8 +1043,8 @@
 	/* Remove any peer addresses not present in the new association. */
 	list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
 		trans = list_entry(pos, struct sctp_transport, transports);
-		if (!sctp_assoc_lookup_paddr(new, &trans->ipaddr))
-			sctp_assoc_del_peer(asoc, &trans->ipaddr);
+		if (!sctp_assoc_lookup_paddr(new, &trans->ipaddr_h))
+			sctp_assoc_del_peer(asoc, &trans->ipaddr_h);
 	}
 
 	/* If the case is A (association restart), use
@@ -1067,8 +1067,8 @@
 		list_for_each(pos, &new->peer.transport_addr_list) {
 			trans = list_entry(pos, struct sctp_transport,
 					   transports);
-			if (!sctp_assoc_lookup_paddr(asoc, &trans->ipaddr))
-				sctp_assoc_add_peer(asoc, &trans->ipaddr,
+			if (!sctp_assoc_lookup_paddr(asoc, &trans->ipaddr_h))
+				sctp_assoc_add_peer(asoc, &trans->ipaddr_h,
 						    GFP_ATOMIC, trans->state);
 		}
 
@@ -1136,8 +1136,8 @@
 				 " %p addr: ",
 				 " port: %d\n",
 				 asoc,
-				 (&t->ipaddr),
-				 t->ipaddr.v4.sin_port);
+				 (&t->ipaddr_h),
+				 t->ipaddr_h.v4.sin_port);
 }
 
 /* Choose the transport for sending a INIT packet.  */
@@ -1161,8 +1161,8 @@
 				 " %p addr: ",
 				 " port: %d\n",
 				 asoc,
-				 (&t->ipaddr),
-				 t->ipaddr.v4.sin_port);
+				 (&t->ipaddr_h),
+				 t->ipaddr_h.v4.sin_port);
 
 	return t;
 }
@@ -1307,7 +1307,7 @@
 	/* Use scoping rules to determine the subset of addresses from
 	 * the endpoint.
 	 */
-	scope = sctp_scope(&asoc->peer.active_path->ipaddr);
+	scope = sctp_scope(&asoc->peer.active_path->ipaddr_h);
 	flags = (PF_INET6 == asoc->base.sk->sk_family) ? SCTP_ADDR6_ALLOWED : 0;
 	if (asoc->peer.ipv4_address)
 		flags |= SCTP_ADDR4_PEERSUPP;
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
index 23b5b66..b8115cb 100644
--- a/net/sctp/bind_addr.c
+++ b/net/sctp/bind_addr.c
@@ -77,7 +77,7 @@
 	/* Extract the addresses which are relevant for this scope.  */
 	list_for_each(pos, &src->address_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		error = sctp_copy_one_addr(dest, &addr->a, scope,
+		error = sctp_copy_one_addr(dest, &addr->a_h, scope,
 					   gfp, flags);
 		if (error < 0)
 			goto out;
@@ -91,7 +91,7 @@
 		list_for_each(pos, &src->address_list) {
 			addr = list_entry(pos, struct sctp_sockaddr_entry,
 					  list);
-			error = sctp_copy_one_addr(dest, &addr->a,
+			error = sctp_copy_one_addr(dest, &addr->a_h,
 						   SCTP_SCOPE_LINK, gfp,
 						   flags);
 			if (error < 0)
@@ -155,13 +155,13 @@
 	if (!addr)
 		return -ENOMEM;
 
-	memcpy(&addr->a, new, sizeof(*new));
+	memcpy(&addr->a_h, 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.v4.sin_port)
-		addr->a.v4.sin_port = bp->port;
+	if (!addr->a_h.v4.sin_port)
+		addr->a_h.v4.sin_port = bp->port;
 
 	addr->use_as_src = use_as_src;
 
@@ -182,7 +182,7 @@
 
 	list_for_each_safe(pos, temp, &bp->address_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		if (sctp_cmp_addr_exact(&addr->a, del_addr)) {
+		if (sctp_cmp_addr_exact(&addr->a_h, del_addr)) {
 			/* Found the exact match. */
 			list_del(pos);
 			kfree(addr);
@@ -237,8 +237,8 @@
 
 	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;
@@ -305,7 +305,7 @@
 
 	list_for_each(pos, &bp->address_list) {
 		laddr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		if (opt->pf->cmp_addr(&laddr->a, addr, opt))
+		if (opt->pf->cmp_addr(&laddr->a_h, addr, opt))
  			return 1;
 	}
 
@@ -339,13 +339,13 @@
 				return NULL;
 			flip_to_h(&tmp, addr);
 
-			if (opt->pf->cmp_addr(&laddr->a, &tmp, opt))
+			if (opt->pf->cmp_addr(&laddr->a_h, &tmp, opt))
 				break;
 
 			addr_buf += af->sockaddr_len;
 		}
 		if (i == addrcnt)
-			return &laddr->a;
+			return &laddr->a_h;
 	}
 
 	return NULL;
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c
index 090f2b2..75904b0 100644
--- a/net/sctp/endpointola.c
+++ b/net/sctp/endpointola.c
@@ -305,7 +305,7 @@
 	bp = &ep->base.bind_addr;
 	list_for_each(pos, &bp->address_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		if (sctp_has_association(&addr->a, paddr)) {
+		if (sctp_has_association(&addr->a_h, paddr)) {
 			sctp_read_unlock(&ep->base.addr_lock);
 			return 1;
 		}
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index 1f9f5ec..e533970 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -161,17 +161,17 @@
 	/* Fill in the dest address from the route entry passed with the skb
 	 * and the source address from the transport.
 	 */
-	ipv6_addr_copy(&fl.fl6_dst, &transport->ipaddr.v6.sin6_addr);
-	ipv6_addr_copy(&fl.fl6_src, &transport->saddr.v6.sin6_addr);
+	ipv6_addr_copy(&fl.fl6_dst, &transport->ipaddr_h.v6.sin6_addr);
+	ipv6_addr_copy(&fl.fl6_src, &transport->saddr_h.v6.sin6_addr);
 
 	fl.fl6_flowlabel = np->flow_label;
 	IP6_ECN_flow_xmit(sk, fl.fl6_flowlabel);
 	if (ipv6_addr_type(&fl.fl6_src) & IPV6_ADDR_LINKLOCAL)
-		fl.oif = transport->saddr.v6.sin6_scope_id;
+		fl.oif = transport->saddr_h.v6.sin6_scope_id;
 	else
 		fl.oif = sk->sk_bound_dev_if;
 	fl.fl_ip_sport = inet_sk(sk)->sport;
-	fl.fl_ip_dport = transport->ipaddr.v6.sin6_port;
+	fl.fl_ip_dport = transport->ipaddr_h.v6.sin6_port;
 
 	if (np->opt && np->opt->srcrt) {
 		struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
@@ -290,11 +290,11 @@
 	list_for_each(pos, &bp->address_list) {
 		laddr = list_entry(pos, struct sctp_sockaddr_entry, list);
 		if ((laddr->use_as_src) &&
-		    (laddr->a.sa.sa_family == AF_INET6) &&
-		    (scope <= sctp_scope(&laddr->a))) {
-			bmatchlen = sctp_v6_addr_match_len(daddr, &laddr->a);
+		    (laddr->a_h.sa.sa_family == AF_INET6) &&
+		    (scope <= sctp_scope(&laddr->a_h))) {
+			bmatchlen = sctp_v6_addr_match_len(daddr, &laddr->a_h);
 			if (!baddr || (matchlen < bmatchlen)) {
-				baddr = &laddr->a;
+				baddr = &laddr->a_h;
 				matchlen = bmatchlen;
 			}
 		}
@@ -332,10 +332,10 @@
 		/* Add the address to the local list.  */
 		addr = t_new(struct sctp_sockaddr_entry, GFP_ATOMIC);
 		if (addr) {
-			addr->a.v6.sin6_family = AF_INET6;
-			addr->a.v6.sin6_port = 0;
-			addr->a.v6.sin6_addr = ifp->addr;
-			addr->a.v6.sin6_scope_id = dev->ifindex;
+			addr->a_h.v6.sin6_family = AF_INET6;
+			addr->a_h.v6.sin6_port = 0;
+			addr->a_h.v6.sin6_addr = ifp->addr;
+			addr->a_h.v6.sin6_scope_id = dev->ifindex;
 			INIT_LIST_HEAD(&addr->list);
 			list_add_tail(&addr->list, addrlist);
 		}
diff --git a/net/sctp/proc.c b/net/sctp/proc.c
index 7f49e76..47ccec5 100644
--- a/net/sctp/proc.c
+++ b/net/sctp/proc.c
@@ -155,12 +155,12 @@
 	if (epb->type == SCTP_EP_TYPE_ASSOCIATION) {
 	    asoc = sctp_assoc(epb);
 	    peer = asoc->peer.primary_path;
-	    primary = &peer->saddr;
+	    primary = &peer->saddr_h;
 	}
 
 	list_for_each(pos, &epb->bind_addr.address_list) {
 		laddr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		addr = (union sctp_addr *)&laddr->a;
+		addr = (union sctp_addr *)&laddr->a_h;
 		af = sctp_get_af_specific(addr->sa.sa_family);
 		if (primary && af->cmp_addr(addr, primary)) {
 			seq_printf(seq, "*");
@@ -180,7 +180,7 @@
 	primary = &(assoc->peer.primary_addr);
 	list_for_each(pos, &assoc->peer.transport_addr_list) {
 		transport = list_entry(pos, struct sctp_transport, transports);
-		addr = (union sctp_addr *)&transport->ipaddr;
+		addr = (union sctp_addr *)&transport->ipaddr_h;
 		af = sctp_get_af_specific(addr->sa.sa_family);
 		if (af->cmp_addr(addr, primary)) {
 			seq_printf(seq, "*");
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 4310e7f..20883ff 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -150,9 +150,9 @@
 		/* Add the address to the local list.  */
 		addr = t_new(struct sctp_sockaddr_entry, GFP_ATOMIC);
 		if (addr) {
-			addr->a.v4.sin_family = AF_INET;
-			addr->a.v4.sin_port = 0;
-			addr->a.v4.sin_addr.s_addr = ifa->ifa_local;
+			addr->a_h.v4.sin_family = AF_INET;
+			addr->a_h.v4.sin_port = 0;
+			addr->a_h.v4.sin_addr.s_addr = ifa->ifa_local;
 			list_add_tail(&addr->list, addrlist);
 		}
 	}
@@ -223,17 +223,17 @@
 	sctp_spin_lock_irqsave(&sctp_local_addr_lock, flags);
 	list_for_each(pos, &sctp_local_addr_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		if (sctp_in_scope(&addr->a, scope)) {
+		if (sctp_in_scope(&addr->a_h, scope)) {
 			/* Now that the address is in scope, check to see if
 			 * the address type is really supported by the local
 			 * sock as well as the remote peer.
 			 */
-			if ((((AF_INET == addr->a.sa.sa_family) &&
+			if ((((AF_INET == addr->a_h.sa.sa_family) &&
 			      (copy_flags & SCTP_ADDR4_PEERSUPP))) ||
-			    (((AF_INET6 == addr->a.sa.sa_family) &&
+			    (((AF_INET6 == addr->a_h.sa.sa_family) &&
 			      (copy_flags & SCTP_ADDR6_ALLOWED) &&
 			      (copy_flags & SCTP_ADDR6_PEERSUPP)))) {
-				error = sctp_add_bind_addr(bp, &addr->a, 1,
+				error = sctp_add_bind_addr(bp, &addr->a_h, 1,
 							   GFP_ATOMIC);
 				if (error)
 					goto end_copy;
@@ -482,7 +482,7 @@
 			if (!laddr->use_as_src)
 				continue;
 			sctp_v4_dst_saddr(&dst_saddr, dst, bp->port);
-			if (sctp_v4_cmp_addr(&dst_saddr, &laddr->a))
+			if (sctp_v4_cmp_addr(&dst_saddr, &laddr->a_h))
 				goto out_unlock;
 		}
 		sctp_read_unlock(addr_lock);
@@ -502,8 +502,8 @@
 		laddr = list_entry(pos, struct sctp_sockaddr_entry, list);
 
 		if ((laddr->use_as_src) &&
-		    (AF_INET == laddr->a.sa.sa_family)) {
-			fl.fl4_src = laddr->a.v4.sin_addr.s_addr;
+		    (AF_INET == laddr->a_h.sa.sa_family)) {
+			fl.fl4_src = laddr->a_h.v4.sin_addr.s_addr;
 			if (!ip_route_output_key(&rt, &fl)) {
 				dst = &rt->u.dst;
 				goto out_unlock;
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index ccbba6b..13109cf 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1031,7 +1031,7 @@
 void sctp_init_addrs(struct sctp_chunk *chunk, union sctp_addr *src,
 		     union sctp_addr *dest)
 {
-	memcpy(&chunk->source, src, sizeof(union sctp_addr));
+	memcpy(&chunk->source_h, src, sizeof(union sctp_addr));
 	memcpy(&chunk->dest, dest, sizeof(union sctp_addr));
 }
 
@@ -1040,10 +1040,10 @@
 {
 	/* If we have a known transport, use that.  */
 	if (chunk->transport) {
-		return &chunk->transport->ipaddr;
+		return &chunk->transport->ipaddr_h;
 	} else {
 		/* Otherwise, extract it from the IP header.  */
-		return &chunk->source;
+		return &chunk->source_h;
 	}
 }
 
@@ -2594,7 +2594,7 @@
 		sctp_write_lock(&asoc->base.addr_lock);
 		list_for_each(pos, &bp->address_list) {
 			saddr = list_entry(pos, struct sctp_sockaddr_entry, list);
-			if (sctp_cmp_addr_exact(&saddr->a, &addr))
+			if (sctp_cmp_addr_exact(&saddr->a_h, &addr))
 				saddr->use_as_src = 1;
 		}
 		sctp_write_unlock(&asoc->base.addr_lock);
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 2423b8e..e1c5cdd 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -441,8 +441,8 @@
 		SCTP_DEBUG_PRINTK_IPADDR("transport_strike:association %p",
 					 " transport IP: port:%d failed.\n",
 					 asoc,
-					 (&transport->ipaddr),
-					 transport->ipaddr.v4.sin_port);
+					 (&transport->ipaddr_h),
+					 transport->ipaddr_h.v4.sin_port);
 		sctp_assoc_control_transport(asoc, transport,
 					     SCTP_TRANSPORT_DOWN,
 					     SCTP_FAILED_THRESHOLD);
@@ -833,9 +833,9 @@
 
 	list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
 		t = list_entry(pos, struct sctp_transport, transports);
-		if (!sctp_cmp_addr_exact(&t->ipaddr,
+		if (!sctp_cmp_addr_exact(&t->ipaddr_h,
 		                         &asoc->peer.primary_addr)) {
-			sctp_assoc_del_peer(asoc, &t->ipaddr);
+			sctp_assoc_del_peer(asoc, &t->ipaddr_h);
 		}
 	}
 
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index b70e3258..f460727 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -852,7 +852,7 @@
 
 	hbinfo.param_hdr.type = SCTP_PARAM_HEARTBEAT_INFO;
 	hbinfo.param_hdr.length = htons(sizeof(sctp_sender_hb_info_t));
-	hbinfo.daddr = transport->ipaddr;
+	hbinfo.daddr = transport->ipaddr_h;
 	hbinfo.sent_at = jiffies;
 	hbinfo.hb_nonce = transport->hb_nonce;
 
@@ -1167,8 +1167,8 @@
 		list_for_each(pos2, &asoc->peer.transport_addr_list) {
 			addr = list_entry(pos2, struct sctp_transport,
 					  transports);
-			if (sctp_cmp_addr_exact(&new_addr->ipaddr,
-						&addr->ipaddr)) {
+			if (sctp_cmp_addr_exact(&new_addr->ipaddr_h,
+						&addr->ipaddr_h)) {
 				found = 1;
 				break;
 			}
@@ -1179,7 +1179,7 @@
 
 	/* If a new address was added, ABORT the sender. */
 	if (!found && new_addr) {
-		sctp_sf_send_restart_abort(&new_addr->ipaddr, init, commands);
+		sctp_sf_send_restart_abort(&new_addr->ipaddr_h, init, commands);
 	}
 
 	/* Return success if all addresses were found. */
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index b6e038a..459f32c 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -551,7 +551,7 @@
 		laddr = list_entry(p, struct sctp_sockaddr_entry, list);
 		sctp_read_unlock(&asoc->base.addr_lock);
 
-		chunk = sctp_make_asconf_update_ip(asoc, &laddr->a, addrs,
+		chunk = sctp_make_asconf_update_ip(asoc, &laddr->a_h, addrs,
 						   addrcnt, SCTP_PARAM_ADD_IP);
 		if (!chunk) {
 			retval = -ENOMEM;
@@ -779,7 +779,7 @@
 				saddr = list_entry(pos1,
 						   struct sctp_sockaddr_entry,
 						   list);
-				if (sctp_cmp_addr_exact(&saddr->a, &saveaddr))
+				if (sctp_cmp_addr_exact(&saddr->a_h, &saveaddr))
 					saddr->use_as_src = 0;
 			}
 			addr_buf += af->sockaddr_len;
@@ -3218,7 +3218,7 @@
 	status.sstat_fragmentation_point = asoc->frag_point;
 	status.sstat_primary.spinfo_assoc_id = sctp_assoc2id(transport->asoc);
 	flip_to_n((union sctp_addr *)&status.sstat_primary.spinfo_address,
-	       &transport->ipaddr);
+	       &transport->ipaddr_h);
 	/* Map ipv4 address into v4-mapped-on-v6 address.  */
 	sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
 		(union sctp_addr *)&status.sstat_primary.spinfo_address);
@@ -3767,7 +3767,7 @@
 	to = (void __user *)getaddrs.addrs;
 	list_for_each(pos, &asoc->peer.transport_addr_list) {
 		from = list_entry(pos, struct sctp_transport, transports);
-		memcpy(&temp, &from->ipaddr, sizeof(temp));
+		memcpy(&temp, &from->ipaddr_h, sizeof(temp));
 		sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
 		addrlen = sctp_get_af_specific(sk->sk_family)->sockaddr_len;
 		temp.v4.sin_port = htons(temp.v4.sin_port);
@@ -3816,7 +3816,7 @@
 
 	list_for_each(pos, &asoc->peer.transport_addr_list) {
 		from = list_entry(pos, struct sctp_transport, transports);
-		memcpy(&temp, &from->ipaddr, sizeof(temp));
+		memcpy(&temp, &from->ipaddr_h, sizeof(temp));
 		sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
 		addrlen = sctp_get_af_specific(sk->sk_family)->sockaddr_len;
 		if(space_left < addrlen)
@@ -3882,14 +3882,14 @@
 	if (sctp_list_single_entry(&bp->address_list)) {
 		addr = list_entry(bp->address_list.next,
 				  struct sctp_sockaddr_entry, list);
-		if (sctp_is_any(&addr->a)) {
+		if (sctp_is_any(&addr->a_h)) {
 			sctp_spin_lock_irqsave(&sctp_local_addr_lock, flags);
 			list_for_each(pos, &sctp_local_addr_list) {
 				addr = list_entry(pos,
 						  struct sctp_sockaddr_entry,
 						  list);
 				if ((PF_INET == sk->sk_family) && 
-				    (AF_INET6 == addr->a.sa.sa_family))	
+				    (AF_INET6 == addr->a_h.sa.sa_family))
 					continue;
 				cnt++;
 			}
@@ -3927,9 +3927,9 @@
 	list_for_each(pos, &sctp_local_addr_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
 		if ((PF_INET == sk->sk_family) && 
-		    (AF_INET6 == addr->a.sa.sa_family))
+		    (AF_INET6 == addr->a_h.sa.sa_family))
 			continue;
-		memcpy(&temp, &addr->a, sizeof(temp));
+		memcpy(&temp, &addr->a_h, sizeof(temp));
 		sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
 								&temp);
 		addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
@@ -3962,9 +3962,9 @@
 	list_for_each(pos, &sctp_local_addr_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
 		if ((PF_INET == sk->sk_family) && 
-		    (AF_INET6 == addr->a.sa.sa_family))
+		    (AF_INET6 == addr->a_h.sa.sa_family))
 			continue;
-		memcpy(&temp, &addr->a, sizeof(temp));
+		memcpy(&temp, &addr->a_h, sizeof(temp));
 		sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
 								&temp);
 		addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
@@ -4038,7 +4038,7 @@
 	if (sctp_list_single_entry(&bp->address_list)) {
 		addr = list_entry(bp->address_list.next,
 				  struct sctp_sockaddr_entry, list);
-		if (sctp_is_any(&addr->a)) {
+		if (sctp_is_any(&addr->a_h)) {
 			cnt = sctp_copy_laddrs_to_user_old(sk, bp->port,
 							   getaddrs.addr_num,
 							   to);
@@ -4052,7 +4052,7 @@
 
 	list_for_each(pos, &bp->address_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		memcpy(&temp, &addr->a, sizeof(temp));
+		memcpy(&temp, &addr->a_h, sizeof(temp));
 		sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
 		addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
 		temp.v4.sin_port = htons(temp.v4.sin_port);
@@ -4128,7 +4128,7 @@
 	if (sctp_list_single_entry(&bp->address_list)) {
 		addr = list_entry(bp->address_list.next,
 				  struct sctp_sockaddr_entry, list);
-		if (sctp_is_any(&addr->a)) {
+		if (sctp_is_any(&addr->a_h)) {
 			cnt = sctp_copy_laddrs_to_user(sk, bp->port,
 						       &to, space_left);
 			if (cnt < 0) {
@@ -4141,7 +4141,7 @@
 
 	list_for_each(pos, &bp->address_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		memcpy(&temp, &addr->a, sizeof(temp));
+		memcpy(&temp, &addr->a_h, sizeof(temp));
 		sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
 		addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
 		if(space_left < addrlen)
@@ -4195,7 +4195,7 @@
 		return -ENOTCONN;
 	
 	flip_to_n((union sctp_addr *)&prim.ssp_addr,
-		  &asoc->peer.primary_path->ipaddr);
+		  &asoc->peer.primary_path->ipaddr_h);
 
 	sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp,
 			(union sctp_addr *)&prim.ssp_addr);
diff --git a/net/sctp/transport.c b/net/sctp/transport.c
index 3e5936a..1f56c9d 100644
--- a/net/sctp/transport.c
+++ b/net/sctp/transport.c
@@ -61,12 +61,12 @@
 						  gfp_t gfp)
 {
 	/* Copy in the address.  */
-	peer->ipaddr = *addr;
+	peer->ipaddr_h = *addr;
 	peer->af_specific = sctp_get_af_specific(addr->sa.sa_family);
 	peer->asoc = NULL;
 
 	peer->dst = NULL;
-	memset(&peer->saddr, 0, sizeof(union sctp_addr));
+	memset(&peer->saddr_h, 0, sizeof(union sctp_addr));
 
 	/* From 6.3.1 RTO Calculation:
 	 *
@@ -232,7 +232,7 @@
 {
 	struct dst_entry *dst;
 
-	dst = transport->af_specific->get_dst(NULL, &transport->ipaddr, NULL);
+	dst = transport->af_specific->get_dst(NULL, &transport->ipaddr_h, NULL);
 
 	if (dst) {
 		transport->pathmtu = dst_mtu(dst);
@@ -249,15 +249,15 @@
 {
 	struct sctp_association *asoc = transport->asoc;
 	struct sctp_af *af = transport->af_specific;
-	union sctp_addr *daddr = &transport->ipaddr;
+	union sctp_addr *daddr = &transport->ipaddr_h;
 	struct dst_entry *dst;
 
 	dst = af->get_dst(asoc, daddr, saddr);
 
 	if (saddr)
-		memcpy(&transport->saddr, saddr, sizeof(union sctp_addr));
+		memcpy(&transport->saddr_h, saddr, sizeof(union sctp_addr));
 	else
-		af->get_saddr(asoc, dst, daddr, &transport->saddr);
+		af->get_saddr(asoc, dst, daddr, &transport->saddr_h);
 
 	transport->dst = dst;
 	if ((transport->param_flags & SPP_PMTUD_DISABLE) && transport->pathmtu) {
@@ -270,7 +270,7 @@
 		 * association's active path for getsockname().
 		 */ 
 		if (asoc && (transport == asoc->peer.active_path))
-			opt->pf->af->to_sk_saddr(&transport->saddr,
+			opt->pf->af->to_sk_saddr(&transport->saddr_h,
 						 asoc->base.sk);
 	} else
 		transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT;