Lines Matching refs:addr

78 	struct sctp_sockaddr_entry *addr;  in sctp_v4_copy_addrlist()  local
88 addr = kzalloc(sizeof(*addr), GFP_ATOMIC); in sctp_v4_copy_addrlist()
89 if (addr) { in sctp_v4_copy_addrlist()
90 addr->a.v4.sin_family = AF_INET; in sctp_v4_copy_addrlist()
91 addr->a.v4.sin_addr.s_addr = ifa->ifa_local; in sctp_v4_copy_addrlist()
92 addr->valid = 1; in sctp_v4_copy_addrlist()
93 INIT_LIST_HEAD(&addr->list); in sctp_v4_copy_addrlist()
94 list_add_tail(&addr->list, addrlist); in sctp_v4_copy_addrlist()
123 struct sctp_sockaddr_entry *addr; in sctp_free_local_addr_list() local
127 addr = list_entry(pos, struct sctp_sockaddr_entry, list); in sctp_free_local_addr_list()
129 kfree(addr); in sctp_free_local_addr_list()
137 struct sctp_sockaddr_entry *addr; in sctp_copy_local_addr_list() local
142 list_for_each_entry_rcu(addr, &net->sctp.local_addr_list, list) { in sctp_copy_local_addr_list()
143 if (!addr->valid) in sctp_copy_local_addr_list()
145 if (!sctp_in_scope(net, &addr->a, scope)) in sctp_copy_local_addr_list()
152 if (addr->a.sa.sa_family == AF_INET && in sctp_copy_local_addr_list()
156 if (addr->a.sa.sa_family == AF_INET6 && in sctp_copy_local_addr_list()
161 laddr = addr->a; in sctp_copy_local_addr_list()
167 error = sctp_add_bind_addr(bp, &addr->a, sizeof(addr->a), in sctp_copy_local_addr_list()
214 static void sctp_v4_from_skb(union sctp_addr *addr, struct sk_buff *skb, in sctp_v4_from_skb() argument
219 struct sockaddr_in *sa = &addr->v4; in sctp_v4_from_skb()
221 addr->v4.sin_family = AF_INET; in sctp_v4_from_skb()
234 static void sctp_v4_from_sk(union sctp_addr *addr, struct sock *sk) in sctp_v4_from_sk() argument
236 addr->v4.sin_family = AF_INET; in sctp_v4_from_sk()
237 addr->v4.sin_port = 0; in sctp_v4_from_sk()
238 addr->v4.sin_addr.s_addr = inet_sk(sk)->inet_rcv_saddr; in sctp_v4_from_sk()
239 memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero)); in sctp_v4_from_sk()
243 static void sctp_v4_to_sk_saddr(union sctp_addr *addr, struct sock *sk) in sctp_v4_to_sk_saddr() argument
245 inet_sk(sk)->inet_rcv_saddr = addr->v4.sin_addr.s_addr; in sctp_v4_to_sk_saddr()
249 static void sctp_v4_to_sk_daddr(union sctp_addr *addr, struct sock *sk) in sctp_v4_to_sk_daddr() argument
251 inet_sk(sk)->inet_daddr = addr->v4.sin_addr.s_addr; in sctp_v4_to_sk_daddr()
255 static bool sctp_v4_from_addr_param(union sctp_addr *addr, in sctp_v4_from_addr_param() argument
262 addr->v4.sin_family = AF_INET; in sctp_v4_from_addr_param()
263 addr->v4.sin_port = port; in sctp_v4_from_addr_param()
264 addr->v4.sin_addr.s_addr = param->v4.addr.s_addr; in sctp_v4_from_addr_param()
265 memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero)); in sctp_v4_from_addr_param()
273 static int sctp_v4_to_addr_param(const union sctp_addr *addr, in sctp_v4_to_addr_param() argument
280 param->v4.addr.s_addr = addr->v4.sin_addr.s_addr; in sctp_v4_to_addr_param()
310 static void sctp_v4_inaddr_any(union sctp_addr *addr, __be16 port) in sctp_v4_inaddr_any() argument
312 addr->v4.sin_family = AF_INET; in sctp_v4_inaddr_any()
313 addr->v4.sin_addr.s_addr = htonl(INADDR_ANY); in sctp_v4_inaddr_any()
314 addr->v4.sin_port = port; in sctp_v4_inaddr_any()
315 memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero)); in sctp_v4_inaddr_any()
319 static int sctp_v4_is_any(const union sctp_addr *addr) in sctp_v4_is_any() argument
321 return htonl(INADDR_ANY) == addr->v4.sin_addr.s_addr; in sctp_v4_is_any()
331 static int sctp_v4_addr_valid(union sctp_addr *addr, in sctp_v4_addr_valid() argument
340 if (IS_IPV4_UNUSABLE_ADDRESS(addr->v4.sin_addr.s_addr)) in sctp_v4_addr_valid()
351 static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp) in sctp_v4_available() argument
359 ret = inet_addr_type_table(net, addr->v4.sin_addr.s_addr, tb_id); in sctp_v4_available()
360 if (addr->v4.sin_addr.s_addr != htonl(INADDR_ANY) && in sctp_v4_available()
389 static enum sctp_scope sctp_v4_scope(union sctp_addr *addr) in sctp_v4_scope() argument
394 if (IS_IPV4_UNUSABLE_ADDRESS(addr->v4.sin_addr.s_addr)) { in sctp_v4_scope()
396 } else if (ipv4_is_loopback(addr->v4.sin_addr.s_addr)) { in sctp_v4_scope()
398 } else if (ipv4_is_linklocal_169(addr->v4.sin_addr.s_addr)) { in sctp_v4_scope()
400 } else if (ipv4_is_private_10(addr->v4.sin_addr.s_addr) || in sctp_v4_scope()
401 ipv4_is_private_172(addr->v4.sin_addr.s_addr) || in sctp_v4_scope()
402 ipv4_is_private_192(addr->v4.sin_addr.s_addr) || in sctp_v4_scope()
403 ipv4_is_test_198(addr->v4.sin_addr.s_addr)) { in sctp_v4_scope()
614 static int sctp_v4_addr_to_user(struct sctp_sock *sp, union sctp_addr *addr) in sctp_v4_addr_to_user() argument
617 memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero)); in sctp_v4_addr_to_user()
622 static void sctp_v4_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr) in sctp_v4_seq_dump_addr() argument
624 seq_printf(seq, "%pI4 ", &addr->v4.sin_addr); in sctp_v4_seq_dump_addr()
710 struct sctp_sockaddr_entry *addr) in sctp_addr_wq_lookup() argument
715 if (addrw->a.sa.sa_family != addr->a.sa.sa_family) in sctp_addr_wq_lookup()
719 addr->a.v4.sin_addr.s_addr) in sctp_addr_wq_lookup()
723 &addr->a.v6.sin6_addr)) in sctp_addr_wq_lookup()
730 void sctp_addr_wq_mgmt(struct net *net, struct sctp_sockaddr_entry *addr, int cmd) in sctp_addr_wq_mgmt() argument
757 addrw = sctp_addr_wq_lookup(net, addr); in sctp_addr_wq_mgmt()
772 addrw = kmemdup(addr, sizeof(struct sctp_sockaddr_entry), GFP_ATOMIC); in sctp_addr_wq_mgmt()
801 struct sctp_sockaddr_entry *addr = NULL; in sctp_inetaddr_event() local
808 addr = kzalloc(sizeof(*addr), GFP_ATOMIC); in sctp_inetaddr_event()
809 if (addr) { in sctp_inetaddr_event()
810 addr->a.v4.sin_family = AF_INET; in sctp_inetaddr_event()
811 addr->a.v4.sin_addr.s_addr = ifa->ifa_local; in sctp_inetaddr_event()
812 addr->valid = 1; in sctp_inetaddr_event()
814 list_add_tail_rcu(&addr->list, &net->sctp.local_addr_list); in sctp_inetaddr_event()
815 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_NEW); in sctp_inetaddr_event()
821 list_for_each_entry_safe(addr, temp, in sctp_inetaddr_event()
823 if (addr->a.sa.sa_family == AF_INET && in sctp_inetaddr_event()
824 addr->a.v4.sin_addr.s_addr == in sctp_inetaddr_event()
827 addr->valid = 0; in sctp_inetaddr_event()
828 list_del_rcu(&addr->list); in sctp_inetaddr_event()
829 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_DEL); in sctp_inetaddr_event()
835 kfree_rcu(addr, rcu); in sctp_inetaddr_event()
1046 static int sctp_inet_bind_verify(struct sctp_sock *opt, union sctp_addr *addr) in sctp_inet_bind_verify() argument
1048 return sctp_v4_available(addr, opt); in sctp_inet_bind_verify()
1054 static int sctp_inet_send_verify(struct sctp_sock *opt, union sctp_addr *addr) in sctp_inet_send_verify() argument