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;
/* 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;
};
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;
/* 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
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
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.
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;
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;
}
* 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)
/* 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
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);
}
" %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. */
" %p addr: ",
" port: %d\n",
asoc,
- (&t->ipaddr),
- t->ipaddr.v4.sin_port);
+ (&t->ipaddr_h),
+ t->ipaddr_h.v4.sin_port);
return t;
}
/* 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;
/* 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;
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)
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;
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);
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;
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;
}
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;
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;
}
/* 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;
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;
}
}
/* 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);
}
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, "*");
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, "*");
/* 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);
}
}
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;
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);
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;
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));
}
{
/* 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;
}
}
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);
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);
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);
}
}
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;
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;
}
/* 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. */
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;
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;
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);
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);
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)
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++;
}
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;
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;
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);
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);
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) {
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)
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);
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:
*
{
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);
{
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) {
* 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;