struct list_head *pos;
struct list_head *temp;
struct sctp_transport *transport;
- union sctp_addr tmp;
-
- flip_to_n(&tmp, addr);
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
transport = list_entry(pos, struct sctp_transport, transports);
- if (sctp_cmp_addr_exact(&tmp, &transport->ipaddr)) {
+ if (sctp_cmp_addr_exact(addr, &transport->ipaddr)) {
/* Do book keeping for removing the peer and free it. */
sctp_assoc_rm_peer(asoc, transport);
break;
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_h))
- sctp_assoc_del_peer(asoc, &trans->ipaddr_h);
+ sctp_assoc_del_peer(asoc, &trans->ipaddr);
}
/* If the case is A (association restart), use
if (sctp_cmp_addr_exact(&tmp, &tmp_addr))
return SCTP_ERROR_DEL_SRC_IP;
- sctp_assoc_del_peer(asoc, &addr);
+ sctp_assoc_del_peer(asoc, &tmp_addr);
break;
case SCTP_PARAM_SET_PRIMARY:
peer = sctp_assoc_lookup_paddr(asoc, &addr);
t = list_entry(pos, struct sctp_transport, transports);
if (!sctp_cmp_addr_exact(&t->ipaddr,
&asoc->peer.primary_addr)) {
- sctp_assoc_del_peer(asoc, &t->ipaddr_h);
+ sctp_assoc_del_peer(asoc, &t->ipaddr);
}
}