Lines Matching refs:addr
63 struct sctp_sockaddr_entry *addr; in sctp_bind_addr_copy() local
70 list_for_each_entry(addr, &src->address_list, list) { in sctp_bind_addr_copy()
71 error = sctp_copy_one_addr(net, dest, &addr->a, scope, in sctp_bind_addr_copy()
82 list_for_each_entry(addr, &src->address_list, list) { in sctp_bind_addr_copy()
83 error = sctp_copy_one_addr(net, dest, &addr->a, in sctp_bind_addr_copy()
107 struct sctp_sockaddr_entry *addr; in sctp_bind_addr_dup() local
113 list_for_each_entry(addr, &src->address_list, list) { in sctp_bind_addr_dup()
114 error = sctp_add_bind_addr(dest, &addr->a, 1, gfp); in sctp_bind_addr_dup()
134 struct sctp_sockaddr_entry *addr, *temp; in sctp_bind_addr_clean() local
137 list_for_each_entry_safe(addr, temp, &bp->address_list, list) { in sctp_bind_addr_clean()
138 list_del_rcu(&addr->list); in sctp_bind_addr_clean()
139 kfree_rcu(addr, rcu); in sctp_bind_addr_clean()
140 SCTP_DBG_OBJCNT_DEC(addr); in sctp_bind_addr_clean()
155 struct sctp_sockaddr_entry *addr; in sctp_add_bind_addr() local
158 addr = kzalloc(sizeof(*addr), gfp); in sctp_add_bind_addr()
159 if (!addr) in sctp_add_bind_addr()
162 memcpy(&addr->a, new, sizeof(*new)); in sctp_add_bind_addr()
167 if (!addr->a.v4.sin_port) in sctp_add_bind_addr()
168 addr->a.v4.sin_port = htons(bp->port); in sctp_add_bind_addr()
170 addr->state = addr_state; in sctp_add_bind_addr()
171 addr->valid = 1; in sctp_add_bind_addr()
173 INIT_LIST_HEAD(&addr->list); in sctp_add_bind_addr()
178 list_add_tail_rcu(&addr->list, &bp->address_list); in sctp_add_bind_addr()
179 SCTP_DBG_OBJCNT_INC(addr); in sctp_add_bind_addr()
189 struct sctp_sockaddr_entry *addr, *temp; in sctp_del_bind_addr() local
195 list_for_each_entry_safe(addr, temp, &bp->address_list, list) { in sctp_del_bind_addr()
196 if (sctp_cmp_addr_exact(&addr->a, del_addr)) { in sctp_del_bind_addr()
199 addr->valid = 0; in sctp_del_bind_addr()
200 list_del_rcu(&addr->list); in sctp_del_bind_addr()
206 kfree_rcu(addr, rcu); in sctp_del_bind_addr()
207 SCTP_DBG_OBJCNT_DEC(addr); in sctp_del_bind_addr()
228 struct sctp_sockaddr_entry *addr; in sctp_bind_addrs_to_raw() local
254 list_for_each_entry(addr, &bp->address_list, list) { in sctp_bind_addrs_to_raw()
255 af = sctp_get_af_specific(addr->a.v4.sin_family); in sctp_bind_addrs_to_raw()
256 len = af->to_addr_param(&addr->a, &rawaddr); in sctp_bind_addrs_to_raw()
276 union sctp_addr addr; in sctp_raw_to_bind_addrs() local
293 af->from_addr_param(&addr, rawaddr, htons(port), 0); in sctp_raw_to_bind_addrs()
294 retval = sctp_add_bind_addr(bp, &addr, SCTP_ADDR_SRC, gfp); in sctp_raw_to_bind_addrs()
315 const union sctp_addr *addr, in sctp_bind_addr_match() argument
325 if (opt->pf->cmp_addr(&laddr->a, addr, opt)) { in sctp_bind_addr_match()
339 const union sctp_addr *addr, in sctp_bind_addr_conflict() argument
363 conflict = sp->pf->cmp_addr(&laddr->a, addr, sp); in sctp_bind_addr_conflict()
374 const union sctp_addr *addr) in sctp_bind_addr_state() argument
380 af = sctp_get_af_specific(addr->sa.sa_family); in sctp_bind_addr_state()
388 if (af->cmp_addr(&laddr->a, addr)) { in sctp_bind_addr_state()
407 union sctp_addr *addr; in sctp_find_unmatch_addr() local
419 addr = addr_buf; in sctp_find_unmatch_addr()
420 af = sctp_get_af_specific(addr->v4.sin_family); in sctp_find_unmatch_addr()
424 if (opt->pf->cmp_addr(&laddr->a, addr, opt)) in sctp_find_unmatch_addr()
438 union sctp_addr *addr, in sctp_copy_one_addr() argument
444 if (sctp_is_any(NULL, addr)) { in sctp_copy_one_addr()
446 } else if (sctp_in_scope(net, addr, scope)) { in sctp_copy_one_addr()
451 if ((((AF_INET == addr->sa.sa_family) && in sctp_copy_one_addr()
453 (((AF_INET6 == addr->sa.sa_family) && in sctp_copy_one_addr()
456 error = sctp_add_bind_addr(dest, addr, SCTP_ADDR_SRC, in sctp_copy_one_addr()
464 int sctp_is_any(struct sock *sk, const union sctp_addr *addr) in sctp_is_any() argument
470 if (addr->sa.sa_family != AF_UNSPEC) in sctp_is_any()
471 fam = addr->sa.sa_family; in sctp_is_any()
479 return af->is_any(addr); in sctp_is_any()
483 int sctp_in_scope(struct net *net, const union sctp_addr *addr, sctp_scope_t scope) in sctp_in_scope() argument
485 sctp_scope_t addr_scope = sctp_scope(addr); in sctp_in_scope()
526 struct sctp_sockaddr_entry *addr; in sctp_is_ep_boundall() local
530 addr = list_entry(bp->address_list.next, in sctp_is_ep_boundall()
532 if (sctp_is_any(sk, &addr->a)) in sctp_is_ep_boundall()
543 sctp_scope_t sctp_scope(const union sctp_addr *addr) in sctp_scope() argument
547 af = sctp_get_af_specific(addr->sa.sa_family); in sctp_scope()
551 return af->scope((union sctp_addr *)addr); in sctp_scope()