Lines Matching refs:net

105 static void sctp_get_local_addr_list(struct net *net)  in sctp_get_local_addr_list()  argument
112 for_each_netdev_rcu(net, dev) { in sctp_get_local_addr_list()
115 af->copy_addrlist(&net->sctp.local_addr_list, dev); in sctp_get_local_addr_list()
122 static void sctp_free_local_addr_list(struct net *net) in sctp_free_local_addr_list() argument
127 list_for_each_safe(pos, temp, &net->sctp.local_addr_list) { in sctp_free_local_addr_list()
135 int sctp_copy_local_addr_list(struct net *net, struct sctp_bind_addr *bp, in sctp_copy_local_addr_list() argument
143 list_for_each_entry_rcu(addr, &net->sctp.local_addr_list, list) { in sctp_copy_local_addr_list()
146 if (!sctp_in_scope(net, &addr->a, scope)) in sctp_copy_local_addr_list()
355 struct net *net = sock_net(sk); in sctp_v4_available() local
359 tb_id = l3mdev_fib_table_by_index(net, sk->sk_bound_dev_if) ?: tb_id; in sctp_v4_available()
360 ret = inet_addr_type_table(net, addr->v4.sin_addr.s_addr, tb_id); in sctp_v4_available()
364 !READ_ONCE(net->ipv4.sysctl_ip_nonlocal_bind)) in sctp_v4_available()
603 struct net *net = timer_container_of(net, t, sctp.addr_wq_timer); in sctp_addr_wq_timeout_handler() local
607 spin_lock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_timeout_handler()
609 list_for_each_entry_safe(addrw, temp, &net->sctp.addr_waitq, list) { in sctp_addr_wq_timeout_handler()
611 "entry:%p\n", __func__, &net->sctp.addr_waitq, &addrw->a.sa, in sctp_addr_wq_timeout_handler()
625 if (ipv6_chk_addr(net, in6, NULL, 0) == 0 && in sctp_addr_wq_timeout_handler()
635 mod_timer(&net->sctp.addr_wq_timer, timeo_val); in sctp_addr_wq_timeout_handler()
640 list_for_each_entry(sp, &net->sctp.auto_asconf_splist, auto_asconf_list) { in sctp_addr_wq_timeout_handler()
658 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_timeout_handler()
661 static void sctp_free_addr_wq(struct net *net) in sctp_free_addr_wq() argument
666 spin_lock_bh(&net->sctp.addr_wq_lock); in sctp_free_addr_wq()
667 timer_delete(&net->sctp.addr_wq_timer); in sctp_free_addr_wq()
668 list_for_each_entry_safe(addrw, temp, &net->sctp.addr_waitq, list) { in sctp_free_addr_wq()
672 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_free_addr_wq()
678 static struct sctp_sockaddr_entry *sctp_addr_wq_lookup(struct net *net, in sctp_addr_wq_lookup() argument
683 list_for_each_entry(addrw, &net->sctp.addr_waitq, list) { in sctp_addr_wq_lookup()
699 void sctp_addr_wq_mgmt(struct net *net, struct sctp_sockaddr_entry *addr, int cmd) in sctp_addr_wq_mgmt() argument
710 spin_lock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
719 if (list_empty(&net->sctp.auto_asconf_splist) && in sctp_addr_wq_mgmt()
720 list_empty(&net->sctp.addr_waitq)) { in sctp_addr_wq_mgmt()
721 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
726 addrw = sctp_addr_wq_lookup(net, addr); in sctp_addr_wq_mgmt()
731 &net->sctp.addr_waitq); in sctp_addr_wq_mgmt()
736 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
743 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
747 list_add_tail(&addrw->list, &net->sctp.addr_waitq); in sctp_addr_wq_mgmt()
750 __func__, addrw->state, &addrw->a.sa, &net->sctp.addr_waitq); in sctp_addr_wq_mgmt()
752 if (!timer_pending(&net->sctp.addr_wq_timer)) { in sctp_addr_wq_mgmt()
755 mod_timer(&net->sctp.addr_wq_timer, timeo_val); in sctp_addr_wq_mgmt()
757 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
772 struct net *net = dev_net(ifa->ifa_dev->dev); in sctp_inetaddr_event() local
782 spin_lock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
783 list_add_tail_rcu(&addr->list, &net->sctp.local_addr_list); in sctp_inetaddr_event()
784 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_NEW); in sctp_inetaddr_event()
785 spin_unlock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
789 spin_lock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
791 &net->sctp.local_addr_list, list) { in sctp_inetaddr_event()
798 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_DEL); in sctp_inetaddr_event()
802 spin_unlock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
815 static int sctp_ctl_sock_init(struct net *net) in sctp_ctl_sock_init() argument
823 err = inet_ctl_sock_create(&net->sctp.ctl_sock, family, in sctp_ctl_sock_init()
824 SOCK_SEQPACKET, IPPROTO_SCTP, net); in sctp_ctl_sock_init()
828 err = inet_ctl_sock_create(&net->sctp.ctl_sock, AF_INET, in sctp_ctl_sock_init()
830 net); in sctp_ctl_sock_init()
848 int sctp_udp_sock_start(struct net *net) in sctp_udp_sock_start() argument
857 udp_conf.local_udp_port = htons(net->sctp.udp_port); in sctp_udp_sock_start()
858 err = udp_sock_create(net, &udp_conf, &sock); in sctp_udp_sock_start()
867 setup_udp_tunnel_sock(net, sock, &tuncfg); in sctp_udp_sock_start()
868 net->sctp.udp4_sock = sock->sk; in sctp_udp_sock_start()
875 udp_conf.local_udp_port = htons(net->sctp.udp_port); in sctp_udp_sock_start()
878 err = udp_sock_create(net, &udp_conf, &sock); in sctp_udp_sock_start()
881 udp_tunnel_sock_release(net->sctp.udp4_sock->sk_socket); in sctp_udp_sock_start()
882 net->sctp.udp4_sock = NULL; in sctp_udp_sock_start()
889 setup_udp_tunnel_sock(net, sock, &tuncfg); in sctp_udp_sock_start()
890 net->sctp.udp6_sock = sock->sk; in sctp_udp_sock_start()
896 void sctp_udp_sock_stop(struct net *net) in sctp_udp_sock_stop() argument
898 if (net->sctp.udp4_sock) { in sctp_udp_sock_stop()
899 udp_tunnel_sock_release(net->sctp.udp4_sock->sk_socket); in sctp_udp_sock_stop()
900 net->sctp.udp4_sock = NULL; in sctp_udp_sock_stop()
902 if (net->sctp.udp6_sock) { in sctp_udp_sock_stop()
903 udp_tunnel_sock_release(net->sctp.udp6_sock->sk_socket); in sctp_udp_sock_stop()
904 net->sctp.udp6_sock = NULL; in sctp_udp_sock_stop()
1215 static inline int init_sctp_mibs(struct net *net) in init_sctp_mibs() argument
1217 net->sctp.sctp_statistics = alloc_percpu(struct sctp_mib); in init_sctp_mibs()
1218 if (!net->sctp.sctp_statistics) in init_sctp_mibs()
1223 static inline void cleanup_sctp_mibs(struct net *net) in cleanup_sctp_mibs() argument
1225 free_percpu(net->sctp.sctp_statistics); in cleanup_sctp_mibs()
1280 static int __net_init sctp_defaults_init(struct net *net) in sctp_defaults_init() argument
1289 net->sctp.rto_initial = SCTP_RTO_INITIAL; in sctp_defaults_init()
1291 net->sctp.rto_min = SCTP_RTO_MIN; in sctp_defaults_init()
1293 net->sctp.rto_max = SCTP_RTO_MAX; in sctp_defaults_init()
1295 net->sctp.rto_alpha = SCTP_RTO_ALPHA; in sctp_defaults_init()
1297 net->sctp.rto_beta = SCTP_RTO_BETA; in sctp_defaults_init()
1300 net->sctp.valid_cookie_life = SCTP_DEFAULT_COOKIE_LIFE; in sctp_defaults_init()
1303 net->sctp.cookie_preserve_enable = 1; in sctp_defaults_init()
1306 net->sctp.cookie_auth_enable = in sctp_defaults_init()
1310 net->sctp.max_burst = SCTP_DEFAULT_MAX_BURST; in sctp_defaults_init()
1313 net->sctp.ps_retrans = SCTP_PS_RETRANS_MAX; in sctp_defaults_init()
1316 net->sctp.pf_enable = 1; in sctp_defaults_init()
1319 net->sctp.pf_expose = SCTP_PF_EXPOSE_UNSET; in sctp_defaults_init()
1325 net->sctp.max_retrans_association = 10; in sctp_defaults_init()
1326 net->sctp.max_retrans_path = 5; in sctp_defaults_init()
1327 net->sctp.max_retrans_init = 8; in sctp_defaults_init()
1330 net->sctp.sndbuf_policy = 0; in sctp_defaults_init()
1333 net->sctp.rcvbuf_policy = 0; in sctp_defaults_init()
1336 net->sctp.hb_interval = SCTP_DEFAULT_TIMEOUT_HEARTBEAT; in sctp_defaults_init()
1339 net->sctp.sack_timeout = SCTP_DEFAULT_TIMEOUT_SACK; in sctp_defaults_init()
1342 net->sctp.addip_enable = 0; in sctp_defaults_init()
1343 net->sctp.addip_noauth = 0; in sctp_defaults_init()
1344 net->sctp.default_auto_asconf = 0; in sctp_defaults_init()
1347 net->sctp.prsctp_enable = 1; in sctp_defaults_init()
1350 net->sctp.reconf_enable = 0; in sctp_defaults_init()
1353 net->sctp.auth_enable = 0; in sctp_defaults_init()
1356 net->sctp.ecn_enable = 1; in sctp_defaults_init()
1359 net->sctp.udp_port = 0; in sctp_defaults_init()
1362 net->sctp.encap_port = 0; in sctp_defaults_init()
1365 net->sctp.scope_policy = SCTP_SCOPE_POLICY_ENABLE; in sctp_defaults_init()
1368 net->sctp.rwnd_upd_shift = SCTP_DEFAULT_RWND_SHIFT; in sctp_defaults_init()
1371 net->sctp.max_autoclose = INT_MAX / HZ; in sctp_defaults_init()
1374 net->sctp.l3mdev_accept = 1; in sctp_defaults_init()
1377 status = sctp_sysctl_net_register(net); in sctp_defaults_init()
1382 status = init_sctp_mibs(net); in sctp_defaults_init()
1388 status = sctp_proc_init(net); in sctp_defaults_init()
1393 sctp_dbg_objcnt_init(net); in sctp_defaults_init()
1396 INIT_LIST_HEAD(&net->sctp.local_addr_list); in sctp_defaults_init()
1397 spin_lock_init(&net->sctp.local_addr_lock); in sctp_defaults_init()
1398 sctp_get_local_addr_list(net); in sctp_defaults_init()
1401 INIT_LIST_HEAD(&net->sctp.addr_waitq); in sctp_defaults_init()
1402 INIT_LIST_HEAD(&net->sctp.auto_asconf_splist); in sctp_defaults_init()
1403 spin_lock_init(&net->sctp.addr_wq_lock); in sctp_defaults_init()
1404 net->sctp.addr_wq_timer.expires = 0; in sctp_defaults_init()
1405 timer_setup(&net->sctp.addr_wq_timer, sctp_addr_wq_timeout_handler, 0); in sctp_defaults_init()
1411 cleanup_sctp_mibs(net); in sctp_defaults_init()
1414 sctp_sysctl_net_unregister(net); in sctp_defaults_init()
1419 static void __net_exit sctp_defaults_exit(struct net *net) in sctp_defaults_exit() argument
1422 sctp_free_addr_wq(net); in sctp_defaults_exit()
1423 sctp_free_local_addr_list(net); in sctp_defaults_exit()
1426 remove_proc_subtree("sctp", net->proc_net); in sctp_defaults_exit()
1427 net->sctp.proc_net_sctp = NULL; in sctp_defaults_exit()
1429 cleanup_sctp_mibs(net); in sctp_defaults_exit()
1430 sctp_sysctl_net_unregister(net); in sctp_defaults_exit()
1438 static int __net_init sctp_ctrlsock_init(struct net *net) in sctp_ctrlsock_init() argument
1443 status = sctp_ctl_sock_init(net); in sctp_ctrlsock_init()
1450 static void __net_exit sctp_ctrlsock_exit(struct net *net) in sctp_ctrlsock_exit() argument
1453 inet_ctl_sock_destroy(net->sctp.ctl_sock); in sctp_ctrlsock_exit()