diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2006-11-20 17:04:10 -0800 | 
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-02 21:26:29 -0800 | 
| commit | 09ef7fecea40c5e4c0dfe35bed3f0ed8da554cf5 (patch) | |
| tree | b293f6aa012265dcb413d7dd6c0b68b1f2676b9f /net | |
| parent | 30330ee00ce077de9d459c17125573ff618bd7a9 (diff) | |
| download | olio-linux-3.10-09ef7fecea40c5e4c0dfe35bed3f0ed8da554cf5.tar.xz olio-linux-3.10-09ef7fecea40c5e4c0dfe35bed3f0ed8da554cf5.zip  | |
[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>
Diffstat (limited to 'net')
| -rw-r--r-- | net/sctp/associola.c | 30 | ||||
| -rw-r--r-- | net/sctp/bind_addr.c | 22 | ||||
| -rw-r--r-- | net/sctp/endpointola.c | 2 | ||||
| -rw-r--r-- | net/sctp/ipv6.c | 24 | ||||
| -rw-r--r-- | net/sctp/proc.c | 6 | ||||
| -rw-r--r-- | net/sctp/protocol.c | 20 | ||||
| -rw-r--r-- | net/sctp/sm_make_chunk.c | 8 | ||||
| -rw-r--r-- | net/sctp/sm_sideeffect.c | 8 | ||||
| -rw-r--r-- | net/sctp/sm_statefuns.c | 8 | ||||
| -rw-r--r-- | net/sctp/socket.c | 32 | ||||
| -rw-r--r-- | net/sctp/transport.c | 14 | 
11 files changed, 87 insertions, 87 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 746b0b0f5ac..83318e72790 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -442,7 +442,7 @@ void sctp_assoc_set_primary(struct sctp_association *asoc,  	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 @@ void sctp_assoc_rm_peer(struct sctp_association *asoc,  	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 @@ void sctp_assoc_del_peer(struct sctp_association *asoc,  	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 @@ struct sctp_transport *sctp_assoc_lookup_paddr(  	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 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,  	 * 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 @@ void sctp_assoc_update(struct sctp_association *asoc,  	/* 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 @@ void sctp_assoc_update(struct sctp_association *asoc,  		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 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc)  				 " %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 @@ struct sctp_transport *sctp_assoc_choose_init_transport(  				 " %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 @@ int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc,  	/* 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 23b5b664a8a..b8115cb31ae 100644 --- a/net/sctp/bind_addr.c +++ b/net/sctp/bind_addr.c @@ -77,7 +77,7 @@ int sctp_bind_addr_copy(struct sctp_bind_addr *dest,  	/* 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 @@ int sctp_bind_addr_copy(struct sctp_bind_addr *dest,  		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 @@ int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new,  	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 @@ int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr)  	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 @@ 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; @@ -305,7 +305,7 @@ int sctp_bind_addr_match(struct sctp_bind_addr *bp,  	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 @@ union sctp_addr *sctp_find_unmatch_addr(struct sctp_bind_addr	*bp,  				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 090f2b2a0ca..75904b037ec 100644 --- a/net/sctp/endpointola.c +++ b/net/sctp/endpointola.c @@ -305,7 +305,7 @@ int sctp_endpoint_is_peeled_off(struct sctp_endpoint *ep,  	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 1f9f5ec0759..e533970fa33 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c @@ -161,17 +161,17 @@ static int sctp_v6_xmit(struct sk_buff *skb, struct sctp_transport *transport,  	/* 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 @@ static void sctp_v6_get_saddr(struct sctp_association *asoc,  	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 @@ static void sctp_v6_copy_addrlist(struct list_head *addrlist,  		/* 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 7f49e769080..47ccec565a2 100644 --- a/net/sctp/proc.c +++ b/net/sctp/proc.c @@ -155,12 +155,12 @@ static void sctp_seq_dump_local_addrs(struct seq_file *seq, struct sctp_ep_commo  	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 @@ static void sctp_seq_dump_remote_addrs(struct seq_file *seq, struct sctp_associa  	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 4310e7fac44..20883ffd51d 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c @@ -150,9 +150,9 @@ static void sctp_v4_copy_addrlist(struct list_head *addrlist,  		/* 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 @@ int sctp_copy_local_addr_list(struct sctp_bind_addr *bp, sctp_scope_t scope,  	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 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,  			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 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,  		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 ccbba6b24d1..13109cfc3ae 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -1031,7 +1031,7 @@ nodata:  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 @@ const union sctp_addr *sctp_source(const struct sctp_chunk *chunk)  {  	/* 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 @@ static int sctp_asconf_param_success(struct sctp_association *asoc,  		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 2423b8ef9ce..e1c5cddf32d 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c @@ -441,8 +441,8 @@ static void sctp_do_8_2_transport_strike(struct sctp_association *asoc,  		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 @@ static void sctp_cmd_del_non_primary(struct sctp_association *asoc)  	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 b70e3258b6d..f4607276754 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c @@ -852,7 +852,7 @@ static sctp_disposition_t sctp_sf_heartbeat(const struct sctp_endpoint *ep,  	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 @@ static int sctp_sf_check_restart_addrs(const struct sctp_association *new_asoc,  		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 @@ static int sctp_sf_check_restart_addrs(const struct sctp_association *new_asoc,  	/* 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 b6e038a387c..459f32c5c3a 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -551,7 +551,7 @@ static int sctp_send_asconf_add_ip(struct sock		*sk,  		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 @@ static int sctp_send_asconf_del_ip(struct sock		*sk,  				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 @@ static int sctp_getsockopt_sctp_status(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_peer_addrs_old(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_local_addrs_num_old(struct sock *sk, int len,  	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 @@ static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_add  	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 @@ static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port,  	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 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,  	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 @@ static int sctp_getsockopt_primary_addr(struct sock *sk, int len,  		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 3e5936a5f67..1f56c9d9573 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -61,12 +61,12 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,  						  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 @@ void sctp_transport_pmtu(struct sctp_transport *transport)  {  	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 @@ void sctp_transport_route(struct sctp_transport *transport,  {  	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 @@ void sctp_transport_route(struct sctp_transport *transport,  		 * 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;  |