Lines Matching refs:net
104 static void sctp_get_local_addr_list(struct net *net) in sctp_get_local_addr_list() argument
111 for_each_netdev_rcu(net, dev) { in sctp_get_local_addr_list()
114 af->copy_addrlist(&net->sctp.local_addr_list, dev); in sctp_get_local_addr_list()
121 static void sctp_free_local_addr_list(struct net *net) in sctp_free_local_addr_list() argument
126 list_for_each_safe(pos, temp, &net->sctp.local_addr_list) { in sctp_free_local_addr_list()
134 int sctp_copy_local_addr_list(struct net *net, struct sctp_bind_addr *bp, in sctp_copy_local_addr_list() argument
142 list_for_each_entry_rcu(addr, &net->sctp.local_addr_list, list) { in sctp_copy_local_addr_list()
145 if (!sctp_in_scope(net, &addr->a, scope)) in sctp_copy_local_addr_list()
354 struct net *net = sock_net(sk); in sctp_v4_available() local
358 tb_id = l3mdev_fib_table_by_index(net, sk->sk_bound_dev_if) ?: tb_id; in sctp_v4_available()
359 ret = inet_addr_type_table(net, addr->v4.sin_addr.s_addr, tb_id); in sctp_v4_available()
363 !READ_ONCE(net->ipv4.sysctl_ip_nonlocal_bind)) in sctp_v4_available()
634 struct net *net = timer_container_of(net, t, sctp.addr_wq_timer); in sctp_addr_wq_timeout_handler() local
638 spin_lock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_timeout_handler()
640 list_for_each_entry_safe(addrw, temp, &net->sctp.addr_waitq, list) { in sctp_addr_wq_timeout_handler()
642 "entry:%p\n", __func__, &net->sctp.addr_waitq, &addrw->a.sa, in sctp_addr_wq_timeout_handler()
656 if (ipv6_chk_addr(net, in6, NULL, 0) == 0 && in sctp_addr_wq_timeout_handler()
666 mod_timer(&net->sctp.addr_wq_timer, timeo_val); in sctp_addr_wq_timeout_handler()
671 list_for_each_entry(sp, &net->sctp.auto_asconf_splist, auto_asconf_list) { in sctp_addr_wq_timeout_handler()
689 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_timeout_handler()
692 static void sctp_free_addr_wq(struct net *net) in sctp_free_addr_wq() argument
697 spin_lock_bh(&net->sctp.addr_wq_lock); in sctp_free_addr_wq()
698 timer_delete(&net->sctp.addr_wq_timer); in sctp_free_addr_wq()
699 list_for_each_entry_safe(addrw, temp, &net->sctp.addr_waitq, list) { in sctp_free_addr_wq()
703 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_free_addr_wq()
709 static struct sctp_sockaddr_entry *sctp_addr_wq_lookup(struct net *net, in sctp_addr_wq_lookup() argument
714 list_for_each_entry(addrw, &net->sctp.addr_waitq, list) { 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
741 spin_lock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
750 if (list_empty(&net->sctp.auto_asconf_splist) && in sctp_addr_wq_mgmt()
751 list_empty(&net->sctp.addr_waitq)) { in sctp_addr_wq_mgmt()
752 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
757 addrw = sctp_addr_wq_lookup(net, addr); in sctp_addr_wq_mgmt()
762 &net->sctp.addr_waitq); in sctp_addr_wq_mgmt()
767 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
774 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
778 list_add_tail(&addrw->list, &net->sctp.addr_waitq); in sctp_addr_wq_mgmt()
781 __func__, addrw->state, &addrw->a.sa, &net->sctp.addr_waitq); in sctp_addr_wq_mgmt()
783 if (!timer_pending(&net->sctp.addr_wq_timer)) { in sctp_addr_wq_mgmt()
786 mod_timer(&net->sctp.addr_wq_timer, timeo_val); in sctp_addr_wq_mgmt()
788 spin_unlock_bh(&net->sctp.addr_wq_lock); in sctp_addr_wq_mgmt()
803 struct net *net = dev_net(ifa->ifa_dev->dev); in sctp_inetaddr_event() local
813 spin_lock_bh(&net->sctp.local_addr_lock); 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()
816 spin_unlock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
820 spin_lock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
822 &net->sctp.local_addr_list, list) { in sctp_inetaddr_event()
829 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_DEL); in sctp_inetaddr_event()
833 spin_unlock_bh(&net->sctp.local_addr_lock); in sctp_inetaddr_event()
846 static int sctp_ctl_sock_init(struct net *net) in sctp_ctl_sock_init() argument
854 err = inet_ctl_sock_create(&net->sctp.ctl_sock, family, in sctp_ctl_sock_init()
855 SOCK_SEQPACKET, IPPROTO_SCTP, net); in sctp_ctl_sock_init()
859 err = inet_ctl_sock_create(&net->sctp.ctl_sock, AF_INET, in sctp_ctl_sock_init()
861 net); in sctp_ctl_sock_init()
879 int sctp_udp_sock_start(struct net *net) in sctp_udp_sock_start() argument
888 udp_conf.local_udp_port = htons(net->sctp.udp_port); in sctp_udp_sock_start()
889 err = udp_sock_create(net, &udp_conf, &sock); in sctp_udp_sock_start()
898 setup_udp_tunnel_sock(net, sock, &tuncfg); in sctp_udp_sock_start()
899 net->sctp.udp4_sock = sock->sk; in sctp_udp_sock_start()
906 udp_conf.local_udp_port = htons(net->sctp.udp_port); in sctp_udp_sock_start()
909 err = udp_sock_create(net, &udp_conf, &sock); in sctp_udp_sock_start()
912 udp_tunnel_sock_release(net->sctp.udp4_sock->sk_socket); in sctp_udp_sock_start()
913 net->sctp.udp4_sock = NULL; in sctp_udp_sock_start()
920 setup_udp_tunnel_sock(net, sock, &tuncfg); in sctp_udp_sock_start()
921 net->sctp.udp6_sock = sock->sk; in sctp_udp_sock_start()
927 void sctp_udp_sock_stop(struct net *net) in sctp_udp_sock_stop() argument
929 if (net->sctp.udp4_sock) { in sctp_udp_sock_stop()
930 udp_tunnel_sock_release(net->sctp.udp4_sock->sk_socket); in sctp_udp_sock_stop()
931 net->sctp.udp4_sock = NULL; in sctp_udp_sock_stop()
933 if (net->sctp.udp6_sock) { in sctp_udp_sock_stop()
934 udp_tunnel_sock_release(net->sctp.udp6_sock->sk_socket); in sctp_udp_sock_stop()
935 net->sctp.udp6_sock = NULL; in sctp_udp_sock_stop()
1247 static inline int init_sctp_mibs(struct net *net) in init_sctp_mibs() argument
1249 net->sctp.sctp_statistics = alloc_percpu(struct sctp_mib); in init_sctp_mibs()
1250 if (!net->sctp.sctp_statistics) in init_sctp_mibs()
1255 static inline void cleanup_sctp_mibs(struct net *net) in cleanup_sctp_mibs() argument
1257 free_percpu(net->sctp.sctp_statistics); in cleanup_sctp_mibs()
1312 static int __net_init sctp_defaults_init(struct net *net) in sctp_defaults_init() argument
1321 net->sctp.rto_initial = SCTP_RTO_INITIAL; in sctp_defaults_init()
1323 net->sctp.rto_min = SCTP_RTO_MIN; in sctp_defaults_init()
1325 net->sctp.rto_max = SCTP_RTO_MAX; in sctp_defaults_init()
1327 net->sctp.rto_alpha = SCTP_RTO_ALPHA; in sctp_defaults_init()
1329 net->sctp.rto_beta = SCTP_RTO_BETA; in sctp_defaults_init()
1332 net->sctp.valid_cookie_life = SCTP_DEFAULT_COOKIE_LIFE; in sctp_defaults_init()
1335 net->sctp.cookie_preserve_enable = 1; in sctp_defaults_init()
1339 net->sctp.sctp_hmac_alg = "md5"; in sctp_defaults_init()
1341 net->sctp.sctp_hmac_alg = "sha1"; in sctp_defaults_init()
1343 net->sctp.sctp_hmac_alg = NULL; in sctp_defaults_init()
1347 net->sctp.max_burst = SCTP_DEFAULT_MAX_BURST; in sctp_defaults_init()
1350 net->sctp.ps_retrans = SCTP_PS_RETRANS_MAX; in sctp_defaults_init()
1353 net->sctp.pf_enable = 1; in sctp_defaults_init()
1356 net->sctp.pf_expose = SCTP_PF_EXPOSE_UNSET; in sctp_defaults_init()
1362 net->sctp.max_retrans_association = 10; in sctp_defaults_init()
1363 net->sctp.max_retrans_path = 5; in sctp_defaults_init()
1364 net->sctp.max_retrans_init = 8; in sctp_defaults_init()
1367 net->sctp.sndbuf_policy = 0; in sctp_defaults_init()
1370 net->sctp.rcvbuf_policy = 0; in sctp_defaults_init()
1373 net->sctp.hb_interval = SCTP_DEFAULT_TIMEOUT_HEARTBEAT; in sctp_defaults_init()
1376 net->sctp.sack_timeout = SCTP_DEFAULT_TIMEOUT_SACK; in sctp_defaults_init()
1379 net->sctp.addip_enable = 0; in sctp_defaults_init()
1380 net->sctp.addip_noauth = 0; in sctp_defaults_init()
1381 net->sctp.default_auto_asconf = 0; in sctp_defaults_init()
1384 net->sctp.prsctp_enable = 1; in sctp_defaults_init()
1387 net->sctp.reconf_enable = 0; in sctp_defaults_init()
1390 net->sctp.auth_enable = 0; in sctp_defaults_init()
1393 net->sctp.ecn_enable = 1; in sctp_defaults_init()
1396 net->sctp.udp_port = 0; in sctp_defaults_init()
1399 net->sctp.encap_port = 0; in sctp_defaults_init()
1402 net->sctp.scope_policy = SCTP_SCOPE_POLICY_ENABLE; in sctp_defaults_init()
1405 net->sctp.rwnd_upd_shift = SCTP_DEFAULT_RWND_SHIFT; in sctp_defaults_init()
1408 net->sctp.max_autoclose = INT_MAX / HZ; in sctp_defaults_init()
1411 net->sctp.l3mdev_accept = 1; in sctp_defaults_init()
1414 status = sctp_sysctl_net_register(net); in sctp_defaults_init()
1419 status = init_sctp_mibs(net); in sctp_defaults_init()
1425 status = sctp_proc_init(net); in sctp_defaults_init()
1430 sctp_dbg_objcnt_init(net); in sctp_defaults_init()
1433 INIT_LIST_HEAD(&net->sctp.local_addr_list); in sctp_defaults_init()
1434 spin_lock_init(&net->sctp.local_addr_lock); in sctp_defaults_init()
1435 sctp_get_local_addr_list(net); in sctp_defaults_init()
1438 INIT_LIST_HEAD(&net->sctp.addr_waitq); in sctp_defaults_init()
1439 INIT_LIST_HEAD(&net->sctp.auto_asconf_splist); in sctp_defaults_init()
1440 spin_lock_init(&net->sctp.addr_wq_lock); in sctp_defaults_init()
1441 net->sctp.addr_wq_timer.expires = 0; in sctp_defaults_init()
1442 timer_setup(&net->sctp.addr_wq_timer, sctp_addr_wq_timeout_handler, 0); in sctp_defaults_init()
1448 cleanup_sctp_mibs(net); in sctp_defaults_init()
1451 sctp_sysctl_net_unregister(net); in sctp_defaults_init()
1456 static void __net_exit sctp_defaults_exit(struct net *net) in sctp_defaults_exit() argument
1459 sctp_free_addr_wq(net); in sctp_defaults_exit()
1460 sctp_free_local_addr_list(net); in sctp_defaults_exit()
1463 remove_proc_subtree("sctp", net->proc_net); in sctp_defaults_exit()
1464 net->sctp.proc_net_sctp = NULL; in sctp_defaults_exit()
1466 cleanup_sctp_mibs(net); in sctp_defaults_exit()
1467 sctp_sysctl_net_unregister(net); in sctp_defaults_exit()
1475 static int __net_init sctp_ctrlsock_init(struct net *net) in sctp_ctrlsock_init() argument
1480 status = sctp_ctl_sock_init(net); in sctp_ctrlsock_init()
1487 static void __net_exit sctp_ctrlsock_exit(struct net *net) in sctp_ctrlsock_exit() argument
1490 inet_ctl_sock_destroy(net->sctp.ctl_sock); in sctp_ctrlsock_exit()