linux/net/sctp/protocol.c
<<
tion" /spa.14 " /form14 " a tion" href="../linux+v3 op1/net/sctp/protocol.c">tion" img src="../.static/gfx/right.png" alt=">>">ti /spa.14ti spa. class="lxr_search">tiontion" input typ.14hidden" nam.14navtarget" 3.14.14">tion" input typ.14text" nam.14search" id14search">tion" butt vtyp.14submit">Searchtion" Prefs4 " /a>ti /spa.14on" /div14on" form ac"v3.="ajax+*" method="post" onsubmit="return false;">ti input typ.14hidden" nam.14ajax_lookup" id14ajax_lookup" 3.14.14">ton" /form14ton" div class="headingbott m">4 div id14file_contents"1
 
1	/a>	spa. class="comment">/* SCTP kernel implementa"v3.	/spa.14
 
2	/a>	spa. class="comment"> * (C) Copyright IBM Corp. 2001, 2004	/spa.14
 
3	/a>	spa. class="comment"> * Copyright (c) 1999-2000 Cisco, Inc.	/spa.14
 
4	/a>	spa. class="comment"> * Copyright (c) 1999-2001 Motorola, Inc.	/spa.14
 
5	/a>	spa. class="comment"> * Copyright (c) 2001 Intel Corp.	/spa.14
 
6	/a>	spa. class="comment"> * Copyright (c) 2001 Nokia, Inc.	/spa.14
 
7	/a>	spa. class="comment"> * Copyright (c) 2001 La Monte H.P. Yarroll	/spa.14
 
8	/a>	spa. class="comment"> *	/spa.14
 
9	/a>	spa. class="comment"> * This file is part of the SCTP kernel implementa"v3.	/spa.14
 valua>	spa. class="comment"> *	/spa.14
 11	/a>	spa. class="comment"> * Initializa"v3./cleanup for SCTP protocol support.	/spa.14
 12	/a>	spa. class="comment"> *	/spa.14
 13	/a>	spa. class="comment"> * This SCTP implementa"v3. is free software;	/spa.14
 14	/a>	spa. class="comment"> * you ca. redistribute it and/or modify it under the terms of	/spa.14
 15	/a>	spa. class="comment"> * the GNU General Public License as published by	/spa.14
 16	/a>	spa. class="comment"> * the Free Software Founda"v3.; either versv3. 2, or (at your e="v3.)	/spa.14
 17	/a>	spa. class="comment"> * any later versv3..	/spa.14
 18	/a>	spa. class="comment"> *	/spa.14
 19	/a>	spa. class="comment"> * This SCTP implementa"v3. is distributed in the hope that it	/spa.14
 2alua>	spa. class="comment"> * will be useful, but WITHOUT ANY WARRANTY; without even the implied	/spa.14
 21	/a>	spa. class="comment"> *                 ************************	/spa.14
 22	/a>	spa. class="comment"> * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	/spa.14
 23	/a>	spa. class="comment"> * See the GNU General Public License for more details.	/spa.14
 24	/a>	spa. class="comment"> *	/spa.14
 25	/a>	spa. class="comment"> * You should have received a copy of the GNU General Public License	/spa.14
 26	/a>	spa. class="comment"> * along with GNU CC; see the file COPYING.  If not, write to	/spa.14
 27	/a>	spa. class="comment"> * the Free Software Founda"v3., 59 Temple Place - Suite 330,	/spa.14
 28	/a>	spa. class="comment"> * Bost3., MA 02111-1307, USA.	/spa.14
 29	/a>	spa. class="comment"> *	/spa.14
 3alua>	spa. class="comment"> * Please send any bug reports or fixes you make to the	/spa.14
 31	/a>	spa. class="comment"> * email address(es):	/spa.14
 32	/a>	spa. class="comment"> *    lksctp developers <lksctp-developers@lists.sourceforge.net>	/spa.14
 33	/a>	spa. class="comment"> *	/spa.14
 34	/a>	spa. class="comment"> * Or submit a bug report through the following website:	/spa.14
 35	/a>	spa. class="comment"> * "
 http://www.sf.net/projects/lksctp	/spa.14
 36	/a>	spa. class="comment"> *	/spa.14
 37	/a>	spa. class="comment"> * Written or modified by:	/spa.14
 38	/a>	spa. class="comment"> *    La Monte H.P. Yarroll <piggy@acm.org>	/spa.14
 39	/a>	spa. class="comment"> *    Karl Knuts3. <karl@athena.chicago.il.us>	/spa.14
 4alua>	spa. class="comment"> *    J3. Grimm <jgrimm@us.ibm.com>	/spa.14
 41	/a>	spa. class="comment"> *    Sridhar Samudrala <sri@us.ibm.com>	/spa.14
 42	/a>	spa. class="comment"> *    Daisy Chang <daisyc@us.ibm.com>	/spa.14
 43	/a>	spa. class="comment"> *    Ardelle Fa. <ardelle.fan@intel.com>	/spa.14
 44	/a>	spa. class="comment"> *	/spa.14
 45	/a>	spa. class="comment"> * Any bugs reported given to us we will try to fix... any fixes shared will	/spa.14
 46	/a>	spa. class="comment"> * be incorporated into the next SCTP release.	/spa.14
 47	/a>	spa. class="comment"> */	/spa.14
 48	/a>4
 49	/a>#define
	a href="+code=pr_fmt" class="sref">pr_fmt	/a>(	a href="+code=fmt" class="sref">fmt	/a>)
	a href="+code=KBUILD_MODNAME" class="sref">KBUILD_MODNAME	/a> 	spa. class="string">": "	/spa.1
	a href="+code=fmt" class="sref">fmt	/a>4
 50	/a>4
 51	/a>#include <linux/module.h	/a>>4
 52	/a>#include <linux/init.h	/a>>4
 53	/a>#include <linux/netdevice.h	/a>>4
 54	/a>#include <linux/inetdevice.h	/a>>4
 55	/a>#include <linux/seq_file.h	/a>>4
 56	/a>#include <linux/bootmem.h	/a>>4
 57	/a>#include <linux/highmem.h	/a>>4
 58	/a>#include <linux/swap.h	/a>>4
 59	/a>#include <linux/slab.h	/a>>4
 60	/a>#include <net/net_nam.space.h	/a>>4
 61	/a>#include <net/protocol.h	/a>>4
 62	/a>#include <net/ip.h	/a>>4
 63	/a>#include <net/ipv6.h	/a>>4
 64	/a>#include <net/route.h	/a>>4
 65	/a>#include <net/sctp/sctp.h	/a>>4
 66	/a>#include <net/addrconf.h	/a>>4
 67	/a>#include <net/inet_common.h	/a>>4
 68	/a>#include <net/inet_ecn.h	/a>>4
 69	/a>4
 7alua>	spa. class="comment">/* Global data structures. */	/spa.14
 71	/a>struct
	a href="+code=sctp_globals" class="sref">sctp_globals	/a> 	a href="+code=sctp_globals" class="sref">sctp_globals	/a> 	a href="+code=__read_mostly" class="sref">__read_mostly	/a>;4
 72	/a>	a href="+code=DEFINE_SNMP_STAT" class="sref">DEFINE_SNMP_STAT	/a>(struct
	a href="+code=sctp_mib" class="sref">sctp_mib	/a>,
	a href="+code=sctp_statistics" class="sref">sctp_statistics	/a>)
	a href="+code=__read_mostly" class="sref">__read_mostly	/a>;4
 73	/a>4
 74	/a>#ifdef
	a href="+code=CONFIG_PROC_FS" class="sref">CONFIG_PROC_FS	/a>4
 75	/a>struct
	a href="+code=proc_dir_entry" class="sref">proc_dir_entry	/a>   *	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a>;4
 76	/a>#endif4
 77	/a>4
 78	/a>struct
	a href="+code=idr" class="sref">idr	/a> 	a href="+code=sctp_assocs_id" class="sref">sctp_assocs_id	/a>;4
 79	/a>	a href="+code=DEFINE_SPINLOCK" class="sref">DEFINE_SPINLOCK	/a>(	a href="+code=sctp_assocs_id_lock" class="sref">sctp_assocs_id_lock	/a>);4
 80	/a>4
 81	/a>	spa. class="comment">/* This is the global socket data structure used for responding to	/spa.14
 82	/a>	spa. class="comment"> * the Out-of-the-blue (OOTB) packets.  A control sock will be created	/spa.14
 83	/a>	spa. class="comment"> * for this socket at the initializa"v3. time.	/spa.14
 84	/a>	spa. class="comment"> */	/spa.14
 85	/a>static struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sctp_ctl_sock" class="sref">sctp_ctl_sock	/a>;4
 86	/a>4
 87	/a>static struct
	a href="+code=sctp_pf" class="sref">sctp_pf	/a> *	a href="+code=sctp_pf_inet6_specific" class="sref">sctp_pf_inet6_specific	/a>;4
 88	/a>static struct
	a href="+code=sctp_pf" class="sref">sctp_pf	/a> *	a href="+code=sctp_pf_inet_specific" class="sref">sctp_pf_inet_specific	/a>;4
 89	/a>static struct
	a href="+code=sctp_af" class="sref">sctp_af	/a> *	a href="+code=sctp_af_v4_specific" class="sref">sctp_af_v4_specific	/a>;4
 90	/a>static struct
	a href="+code=sctp_af" class="sref">sctp_af	/a> *	a href="+code=sctp_af_v6_specific" class="sref">sctp_af_v6_specific	/a>;4
 91	/a>4
 92	/a>struct
	a href="+code=kmem_cache" class="sref">kmem_cache	/a> *	a href="+code=sctp_chunk_cachep" class="sref">sctp_chunk_cachep	/a> 	a href="+code=__read_mostly" class="sref">__read_mostly	/a>;4
 93	/a>struct
	a href="+code=kmem_cache" class="sref">kmem_cache	/a> *	a href="+code=sctp_bucket_cachep" class="sref">sctp_bucket_cachep	/a> 	a href="+code=__read_mostly" class="sref">__read_mostly	/a>;4
 94	/a>4
 95	/a>long 	a href="+code=sysctl_sctp_mem" class="sref">sysctl_sctp_mem	/a>[3];4
 96	/a>int
	a href="+code=sysctl_sctp_rmem" class="sref">sysctl_sctp_rmem	/a>[3];4
 97	/a>int
	a href="+code=sysctl_sctp_wmem" class="sref">sysctl_sctp_wmem	/a>[3];4
 98	/a>4
 99	/a>	spa. class="comment">/* Return the address of the control sock. */	/spa.14
100	/a>struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sctp_get_ctl_sock" class="sref">sctp_get_ctl_sock	/a>(void)4
101	/a>{4
102	/a>        return 	a href="+code=sctp_ctl_sock" class="sref">sctp_ctl_sock	/a>;4
103	/a>}4
104	/a>4
105	/a>	spa. class="comment">/* Set up the proc fs entry for the SCTP protocol. */	/spa.14
106	/a>static 	a href="+code=__init" class="sref">__init	/a> int
	a href="+code=sctp_proc_init" class="sref">sctp_proc_init	/a>(void)4
107	/a>{4
108	/a>        if (	a href="+code=percpu_counter_init" class="sref">percpu_counter_init	/a>(&	a href="+code=sctp_sockets_allocated" class="sref">sctp_sockets_allocated	/a>,
0))4
109	/a>                goto
	a href="+code=out_nomem" class="sref">out_nomem	/a>;4
110	/a>#ifdef
	a href="+code=CONFIG_PROC_FS" class="sref">CONFIG_PROC_FS	/a>4
111	/a>        if (!	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a>) {4
112	/a>                	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a> = 	a href="+code=proc_mkdir" class="sref">proc_mkdir	/a>(	spa. class="string">"sctp"	/spa.1,
	a href="+code=init_net" class="sref">init_net	/a>.	a href="+code=proc_net" class="sref">proc_net	/a>);4
113	/a>                if (!	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a>)4
114	/a>                        goto
	a href="+code=out_free_percpu" class="sref">out_free_percpu	/a>;4
115	/a>        }4
116	/a>4
117	/a>        if (	a href="+code=sctp_snmp_proc_init" class="sref">sctp_snmp_proc_init	/a>())4
118	/a>                goto
	a href="+code=out_snmp_proc_init" class="sref">out_snmp_proc_init	/a>;4
119	/a>        if (	a href="+code=sctp_eps_proc_init" class="sref">sctp_eps_proc_init	/a>())4
12alua>                goto
	a href="+code=out_eps_proc_init" class="sref">out_eps_proc_init	/a>;4
121	/a>        if (	a href="+code=sctp_assocs_proc_init" class="sref">sctp_assocs_proc_init	/a>())4
122	/a>                goto
	a href="+code=out_assocs_proc_init" class="sref">out_assocs_proc_init	/a>;4
123	/a>        if (	a href="+code=sctp_remaddr_proc_init" class="sref">sctp_remaddr_proc_init	/a>())4
124	/a>                goto
	a href="+code=out_remaddr_proc_init" class="sref">out_remaddr_proc_init	/a>;4
125	/a>4
126	/a>        return 0;4
127	/a>4
128	/a>	a href="+code=out_remaddr_proc_init" class="sref">out_remaddr_proc_init	/a>:4
129	/a>        	a href="+code=sctp_assocs_proc_exit" class="sref">sctp_assocs_proc_exit	/a>();4
13alua>	a href="+code=out_assocs_proc_init" class="sref">out_assocs_proc_init	/a>:4
131	/a>        	a href="+code=sctp_eps_proc_exit" class="sref">sctp_eps_proc_exit	/a>();4
132	/a>	a href="+code=out_eps_proc_init" class="sref">out_eps_proc_init	/a>:4
133	/a>        	a href="+code=sctp_snmp_proc_exit" class="sref">sctp_snmp_proc_exit	/a>();4
134	/a>	a href="+code=out_snmp_proc_init" class="sref">out_snmp_proc_init	/a>:4
135	/a>        if (	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a>) {4
136	/a>                	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a> = 	a href="+code=NULL" class="sref">NULL	/a>;4
137	/a>                	a href="+code=remove_proc_entry" class="sref">remove_proc_entry	/a>(	spa. class="string">"sctp"	/spa.1,
	a href="+code=init_net" class="sref">init_net	/a>.	a href="+code=proc_net" class="sref">proc_net	/a>);4
138	/a>        }4
139	/a>	a href="+code=out_free_percpu" class="sref">out_free_percpu	/a>:4
140	/a>        	a href="+code=percpu_counter_destroy" class="sref">percpu_counter_destroy	/a>(&	a href="+code=sctp_sockets_allocated" class="sref">sctp_sockets_allocated	/a>);4
141	/a>#else4
142	/a>        return 0;4
143	/a>#endif 	spa. class="comment">/* CONFIG_PROC_FS */	/spa.14
144	/a>4
145	/a>	a href="+code=out_nomem" class="sref">out_nomem	/a>:4
146	/a>        return -	a href="+code=ENOMEM" class="sref">ENOMEM	/a>;4
147	/a>}4
148	/a>4
149	/a>	spa. class="comment">/* Clean up the proc fs entry for the SCTP protocol.	/spa.14
15alua>	spa. class="comment"> * Note: Do not make this __exit as it is used in the init error	/spa.14
151	/a>	spa. class="comment"> * path.	/spa.14
152	/a>	spa. class="comment"> */	/spa.14
153	/a>static void
	a href="+code=sctp_proc_exit" class="sref">sctp_proc_exit	/a>(void)4
154	/a>{4
155	/a>#ifdef
	a href="+code=CONFIG_PROC_FS" class="sref">CONFIG_PROC_FS	/a>4
156	/a>        	a href="+code=sctp_snmp_proc_exit" class="sref">sctp_snmp_proc_exit	/a>();4
157	/a>        	a href="+code=sctp_eps_proc_exit" class="sref">sctp_eps_proc_exit	/a>();4
158	/a>        	a href="+code=sctp_assocs_proc_exit" class="sref">sctp_assocs_proc_exit	/a>();4
159	/a>        	a href="+code=sctp_remaddr_proc_exit" class="sref">sctp_remaddr_proc_exit	/a>();4
160	/a>4
161	/a>        if (	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a>) {4
162	/a>                	a href="+code=proc_net_sctp" class="sref">proc_net_sctp	/a> = 	a href="+code=NULL" class="sref">NULL	/a>;4
163	/a>                	a href="+code=remove_proc_entry" class="sref">remove_proc_entry	/a>(	spa. class="string">"sctp"	/spa.1,
	a href="+code=init_net" class="sref">init_net	/a>.	a href="+code=proc_net" class="sref">proc_net	/a>);4
164	/a>        }4
165	/a>#endif4
166	/a>        	a href="+code=percpu_counter_destroy" class="sref">percpu_counter_destroy	/a>(&	a href="+code=sctp_sockets_allocated" class="sref">sctp_sockets_allocated	/a>);4
167	/a>}4
168	/a>4
169	/a>	spa. class="comment">/* Private helper to extract ipv4 address and stash them in	/spa.14
17alua>	spa. class="comment"> * the protocol structure.	/spa.14
171	/a>	spa. class="comment"> */	/spa.14
172	/a>static void
	a href="+code=sctp_v4_copy_addrlist" class="sref">sctp_v4_copy_addrlist	/a>(struct
	a href="+code=list_head" class="sref">list_head	/a> *	a href="+code=addrlist" class="sref">addrlist	/a>,4
173	/a>                                  struct
	a href="+code=net_device" class="sref">net_device	/a> *	a href="+code=dev" class="sref">dev	/a>)4
174	/a>{4
175	/a>        struct
	a href="+code=in_device" class="sref">in_device	/a> *	a href="+code=in_dev" class="sref">in_dev	/a>;4
176	/a>        struct
	a href="+code=in_ifaddr" class="sref">in_ifaddr	/a> *	a href="+code=ifa" class="sref">ifa	/a>;4
177	/a>        struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a> *	a href="+code=addr" class="sref">addr	/a>;4
178	/a>4
179	/a>        	a href="+code=rcu_read_lock" class="sref">rcu_read_lock	/a>();4
180	/a>        if ((	a href="+code=in_dev" class="sref">in_dev	/a> = 	a href="+code=__in_dev_get_rcu" class="sref">__in_dev_get_rcu	/a>(	a href="+code=dev" class="sref">dev	/a>)) == 	a href="+code=NULL" class="sref">NULL	/a>) {4
181	/a>                	a href="+code=rcu_read_unlock" class="sref">rcu_read_unlock	/a>();4
182	/a>                return;4
183	/a>        }4
184	/a>4
185	/a>        for (	a href="+code=ifa" class="sref">ifa	/a> = 	a href="+code=in_dev" class="sref">in_dev	/a>->	a href="+code=ifa_list" class="sref">ifa_list	/a>; 	a href="+code=ifa" class="sref">ifa	/a>; 	a href="+code=ifa" class="sref">ifa	/a> = 	a href="+code=ifa" class="sref">ifa	/a>->	a href="+code=ifa_next" class="sref">ifa_next	/a>) {4
186	/a>                	spa. class="comment">/* Add the address to the local list.  */	/spa.14
187	/a>                	a href="+code=addr" class="sref">addr	/a> = 	a href="+code=t_new" class="sref">t_new	/a>(struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a>,
	a href="+code=GFP_ATOMIC" class="sref">GFP_ATOMIC	/a>);4
188	/a>                if (	a href="+code=addr" class="sref">addr	/a>) {4
189	/a>                        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
19alua>                        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a> = 0;4
191	/a>                        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=ifa" class="sref">ifa	/a>->	a href="+code=ifa_local" class="sref">ifa_local	/a>;4
192	/a>                        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=valid" class="sref">valid	/a> = 1;4
193	/a>                        	a href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEAD	/a>(&	a href="+code=addr" class="sref">addr	/a>->	a href="+code=list" class="sref">list	/a>);4
194	/a>                        	a href="+code=list_add_tail" class="sref">list_add_tail	/a>(&	a href="+code=addr" class="sref">addr	/a>->	a href="+code=list" class="sref">list	/a>,
	a href="+code=addrlist" class="sref">addrlist	/a>);4
195	/a>                }4
196	/a>        }4
197	/a>4
198	/a>        	a href="+code=rcu_read_unlock" class="sref">rcu_read_unlock	/a>();4
199	/a>}4
200	/a>4
201	/a>	spa. class="comment">/* Extract our IP addresses from the system and stash them in the	/spa.14
202	/a>	spa. class="comment"> * protocol structure.	/spa.14
203	/a>	spa. class="comment"> */	/spa.14
204	/a>static void
	a href="+code=sctp_get_local_addr_list" class="sref">sctp_get_local_addr_list	/a>(void)4
205	/a>{4
206	/a>        struct
	a href="+code=net_device" class="sref">net_device	/a> *	a href="+code=dev" class="sref">dev	/a>;4
207	/a>        struct
	a href="+code=list_head" class="sref">list_head	/a> *	a href="+code=pos" class="sref">pos	/a>;4
208	/a>        struct
	a href="+code=sctp_af" class="sref">sctp_af	/a> *	a href="+code=af" class="sref">af	/a>;4
209	/a>4
210	/a>        	a href="+code=rcu_read_lock" class="sref">rcu_read_lock	/a>();4
211	/a>        	a href="+code=for_each_netdev_rcu" class="sref">for_each_netdev_rcu	/a>(&	a href="+code=init_net" class="sref">init_net	/a>,
	a href="+code=dev" class="sref">dev	/a>) {4
212	/a>                	a href="+code=__list_for_each" class="sref">__list_for_each	/a>(	a href="+code=pos" class="sref">pos	/a>, &	a href="+code=sctp_address_families" class="sref">sctp_address_families	/a>) {4
213	/a>                        	a href="+code=af" class="sref">af	/a> = 	a href="+code=list_entry" class="sref">list_entry	/a>(	a href="+code=pos" class="sref">pos	/a>, struct
	a href="+code=sctp_af" class="sref">sctp_af	/a>,
	a href="+code=list" class="sref">list	/a>);4
214	/a>                        	a href="+code=af" class="sref">af	/a>->	a href="+code=copy_addrlist" class="sref">copy_addrlist	/a>(&	a href="+code=sctp_local_addr_list" class="sref">sctp_local_addr_list	/a>,
	a href="+code=dev" class="sref">dev	/a>);4
215	/a>                }4
216	/a>        }4
217	/a>        	a href="+code=rcu_read_unlock" class="sref">rcu_read_unlock	/a>();4
218	/a>}4
219	/a>4
22alua>	spa. class="comment">/* Free the existing local addresses.  */	/spa.14
221	/a>static void
	a href="+code=sctp_free_local_addr_list" class="sref">sctp_free_local_addr_list	/a>(void)4
222	/a>{4
223	/a>        struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a> *	a href="+code=addr" class="sref">addr	/a>;4
224	/a>        struct
	a href="+code=list_head" class="sref">list_head	/a> *	a href="+code=pos" class="sref">pos	/a>, *	a href="+code=temp" class="sref">temp	/a>;4
225	/a>4
226	/a>        	a href="+code=list_for_each_safe" class="sref">list_for_each_safe	/a>(	a href="+code=pos" class="sref">pos	/a>, 	a href="+code=temp" class="sref">temp	/a>, &	a href="+code=sctp_local_addr_list" class="sref">sctp_local_addr_list	/a>) {4
227	/a>                	a href="+code=addr" class="sref">addr	/a> = 	a href="+code=list_entry" class="sref">list_entry	/a>(	a href="+code=pos" class="sref">pos	/a>, struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a>,
	a href="+code=list" class="sref">list	/a>);4
228	/a>                	a href="+code=list_del" class="sref">list_del	/a>(	a href="+code=pos" class="sref">pos	/a>);4
229	/a>                	a href="+code=kfree" class="sref">kfree	/a>(	a href="+code=addr" class="sref">addr	/a>);4
230	/a>        }4
231	/a>}4
232	/a>4
233	/a>	spa. class="comment">/* Copy the local addresses which are valid for 'scope' into 'bp'.  */	/spa.14
234	/a>int
	a href="+code=sctp_copy_local_addr_list" class="sref">sctp_copy_local_addr_list	/a>(struct
	a href="+code=sctp_bind_addr" class="sref">sctp_bind_addr	/a> *	a href="+code=bp" class="sref">bp	/a>,
	a href="+code=sctp_scope_t" class="sref">sctp_scope_t	/a> 	a href="+code=scope" class="sref">scope	/a>,4
235	/a>                              	a href="+code=gfp_t" class="sref">gfp_t	/a> 	a href="+code=gfp" class="sref">gfp	/a>,
int
	a href="+code=copy_flags" class="sref">copy_flags	/a>)4
236	/a>{4
237	/a>        struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a> *	a href="+code=addr" class="sref">addr	/a>;4
238	/a>        int
	a href="+code=error" class="sref">error	/a> = 0;4
239	/a>4
240	/a>        	a href="+code=rcu_read_lock" class="sref">rcu_read_lock	/a>();4
241	/a>        	a href="+code=list_for_each_entry_rcu" class="sref">list_for_each_entry_rcu	/a>(	a href="+code=addr" class="sref">addr	/a>, &	a href="+code=sctp_local_addr_list" class="sref">sctp_local_addr_list	/a>,
	a href="+code=list" class="sref">list	/a>) {4
242	/a>                if (!	a href="+code=addr" class="sref">addr	/a>->	a href="+code=valid" class="sref">valid	/a>)4
243	/a>                        continue;4
244	/a>                if (	a href="+code=sctp_in_scope" class="sref">sctp_in_scope	/a>(&	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>,
	a href="+code=scope" class="sref">scope	/a>)) {4
245	/a>                        	spa. class="comment">/* Now that the address is in scope, check to see if	/spa.14
246	/a>	spa. class="comment">                         * the address type is really supported by the local	/spa.14
247	/a>	spa. class="comment">                         * sock as well as the remote peer.	/spa.14
248	/a>	spa. class="comment">                         */	/spa.14
249	/a>                        if ((((	a href="+code=AF_INET" class="sref">AF_INET	/a> == 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a>) &&4
25alua>                              (	a href="+code=copy_flags" class="sref">copy_flags	/a> & 	a href="+code=SCTP_ADDR4_PEERSUPP" class="sref">SCTP_ADDR4_PEERSUPP	/a>))) ||4
251	/a>                            (((	a href="+code=AF_INET6" class="sref">AF_INET6	/a> == 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a>) &&4
252	/a>                              (	a href="+code=copy_flags" class="sref">copy_flags	/a> & 	a href="+code=SCTP_ADDR6_ALLOWED" class="sref">SCTP_ADDR6_ALLOWED	/a>) &&4
253	/a>                              (	a href="+code=copy_flags" class="sref">copy_flags	/a> & 	a href="+code=SCTP_ADDR6_PEERSUPP" class="sref">SCTP_ADDR6_PEERSUPP	/a>)))) {4
254	/a>                                	a href="+code=error" class="sref">error	/a> = 	a href="+code=sctp_add_bind_addr" class="sref">sctp_add_bind_addr	/a>(	a href="+code=bp" class="sref">bp	/a>,
&	a href="+code=addr" class="sref">addr	/a>->	a href="+code=a" class="sref">a	/a>,4
255	/a>                                                    	a href="+code=SCTP_ADDR_SRC" class="sref">SCTP_ADDR_SRC	/a>,
	a href="+code=GFP_ATOMIC" class="sref">GFP_ATOMIC	/a>);4
256	/a>                                if (	a href="+code=error" class="sref">error	/a>)4
257	/a>                                        goto
	a href="+code=end_copy" class="sref">end_copy	/a>;4
258	/a>                        }4
259	/a>                }4
260	/a>        }4
261	/a>4
262	/a>	a href="+code=end_copy" class="sref">end_copy	/a>:4
263	/a>        	a href="+code=rcu_read_unlock" class="sref">rcu_read_unlock	/a>();4
264	/a>        return 	a href="+code=error" class="sref">error	/a>;4
265	/a>}4
266	/a>4
267	/a>	spa. class="comment">/* Initialize a sctp_addr from in incoming skb.  */	/spa.14
268	/a>static void
	a href="+code=sctp_v4_from_skb" class="sref">sctp_v4_from_skb	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>, struct
	a href="+code=sk_buff" class="sref">sk_buff	/a> *	a href="+code=skb" class="sref">skb	/a>,4
269	/a>                             int
	a href="+code=is_saddr" class="sref">is_saddr	/a>)4
27alua>{4
271	/a>        void
*	a href="+code=from" class="sref">from	/a>;4
272	/a>        	a href="+code=__be16" class="sref">__be16	/a> *	a href="+code=port" class="sref">port	/a>;4
273	/a>        struct
	a href="+code=sctphdr" class="sref">sctphdr	/a> *	a href="+code=sh" class="sref">sh	/a>;4
274	/a>4
275	/a>        	a href="+code=port" class="sref">port	/a> = &	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a>;4
276	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
277	/a>4
278	/a>        	a href="+code=sh" class="sref">sh	/a> = 	a href="+code=sctp_hdr" class="sref">sctp_hdr	/a>(	a href="+code=skb" class="sref">skb	/a>);4
279	/a>        if (	a href="+code=is_saddr" class="sref">is_saddr	/a>) {4
28alua>                *	a href="+code=port" class="sref">port	/a>  = 	a href="+code=sh" class="sref">sh	/a>->	a href="+code=source" class="sref">source	/a>;4
281	/a>                	a href="+code=from" class="sref">from	/a> = &	a href="+code=ip_hdr" class="sref">ip_hdr	/a>(	a href="+code=skb" class="sref">skb	/a>)->	a href="+code=saddr" class="sref">saddr	/a>;4
282	/a>        } else {4
283	/a>                *	a href="+code=port" class="sref">port	/a> = 	a href="+code=sh" class="sref">sh	/a>->	a href="+code=dest" class="sref">dest	/a>;4
284	/a>                	a href="+code=from" class="sref">from	/a> = &	a href="+code=ip_hdr" class="sref">ip_hdr	/a>(	a href="+code=skb" class="sref">skb	/a>)->	a href="+code=daddr" class="sref">daddr	/a>;4
285	/a>        }4
286	/a>        	a href="+code=memcpy" class="sref">memcpy	/a>(&	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>,
	a href="+code=from" class="sref">from	/a>, sizeof(struct
	a href="+code=in_addr" class="sref">in_addr	/a>));4
287	/a>}4
288	/a>4
289	/a>	spa. class="comment">/* Initialize an sctp_addr from a socket. */	/spa.14
290	/a>static void
	a href="+code=sctp_v4_from_sk" class="sref">sctp_v4_from_sk	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>, struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>)4
291	/a>{4
292	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
293	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a> = 0;4
294	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=inet_sk" class="sref">inet_sk	/a>(	a href="+code=sk" class="sref">sk	/a>)->	a href="+code=inet_rcv_saddr" class="sref">inet_rcv_saddr	/a>;4
295	/a>}4
296	/a>4
297	/a>	spa. class="comment">/* Initialize sk->sk_rcv_saddr from sctp_addr. */	/spa.14
298	/a>static void
	a href="+code=sctp_v4_to_sk_saddr" class="sref">sctp_v4_to_sk_saddr	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>, struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>)4
299	/a>{4
300	/a>        	a href="+code=inet_sk" class="sref">inet_sk	/a>(	a href="+code=sk" class="sref">sk	/a>)->	a href="+code=inet_rcv_saddr" class="sref">inet_rcv_saddr	/a> = 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
301	/a>}4
302	/a>4
303	/a>	spa. class="comment">/* Initialize sk->sk_daddr from sctp_addr. */	/spa.14
304	/a>static void
	a href="+code=sctp_v4_to_sk_daddr" class="sref">sctp_v4_to_sk_daddr	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>, struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>)4
305	/a>{4
306	/a>        	a href="+code=inet_sk" class="sref">inet_sk	/a>(	a href="+code=sk" class="sref">sk	/a>)->	a href="+code=inet_daddr" class="sref">inet_daddr	/a> = 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
307	/a>}4
308	/a>4
309	/a>	spa. class="comment">/* Initialize a sctp_addr from an address param.ter. */	/spa.14
310	/a>static void
	a href="+code=sctp_v4_from_addr_param" class="sref">sctp_v4_from_addr_param	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>,4
311	/a>                                    unv3. 	a href="+code=sctp_addr_param" class="sref">sctp_addr_param	/a> *	a href="+code=param" class="sref">param	/a>,4
312	/a>                                    	a href="+code=__be16" class="sref">__be16	/a> 	a href="+code=port" class="sref">port	/a>,
int
	a href="+code=iif" class="sref">iif	/a>)4
313	/a>{4
314	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
315	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a> = 	a href="+code=port" class="sref">port	/a>;4
316	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=param" class="sref">param	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=addr" class="sref">addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
317	/a>}4
318	/a>4
319	/a>	spa. class="comment">/* Initialize an address param.ter from a sctp_addr and return the length	/spa.14
32alua>	spa. class="comment"> * of the address param.ter.	/spa.14
321	/a>	spa. class="comment"> */	/spa.14
322	/a>static int
	a href="+code=sctp_v4_to_addr_param" class="sref">sctp_v4_to_addr_param	/a>(const unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>,4
323	/a>                                 unv3. 	a href="+code=sctp_addr_param" class="sref">sctp_addr_param	/a> *	a href="+code=param" class="sref">param	/a>)4
324	/a>{4
325	/a>        int
	a href="+code=length" class="sref">length	/a> = sizeof(	a href="+code=sctp_ipv4addr_param_t" class="sref">sctp_ipv4addr_param_t	/a>);4
326	/a>4
327	/a>        	a href="+code=param" class="sref">param	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=param_hdr" class="sref">param_hdr	/a>.	a href="+code=type" class="sref">type	/a> = 	a href="+code=SCTP_PARAM_IPV4_ADDRESS" class="sref">SCTP_PARAM_IPV4_ADDRESS	/a>;4
328	/a>        	a href="+code=param" class="sref">param	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=param_hdr" class="sref">param_hdr	/a>.	a href="+code=length" class="sref">length	/a> = 	a href="+code=htons" class="sref">htons	/a>(	a href="+code=length" class="sref">length	/a>);4
329	/a>        	a href="+code=param" class="sref">param	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=addr" class="sref">addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
330	/a>4
331	/a>        return 	a href="+code=length" class="sref">length	/a>;4
332	/a>}4
333	/a>4
334	/a>	spa. class="comment">/* Initialize a sctp_addr from a dst_entry. */	/spa.14
335	/a>static void
	a href="+code=sctp_v4_dst_saddr" class="sref">sctp_v4_dst_saddr	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=saddr" class="sref">saddr	/a>, struct
	a href="+code=flowi4" class="sref">flowi4	/a> *	a href="+code=fl4" class="sref">fl4	/a>,4
336	/a>                              	a href="+code=__be16" class="sref">__be16	/a> 	a href="+code=port" class="sref">port	/a>)4
337	/a>{4
338	/a>        	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
339	/a>        	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a> = 	a href="+code=port" class="sref">port	/a>;4
340	/a>        	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=saddr" class="sref">saddr	/a>;4
341	/a>}4
342	/a>4
343	/a>	spa. class="comment">/* Compare two addresses exactly. */	/spa.14
344	/a>static int
	a href="+code=sctp_v4_cmp_addr" class="sref">sctp_v4_cmp_addr	/a>(const unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr1" class="sref">addr1	/a>,4
345	/a>                            const unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr2" class="sref">addr2	/a>)4
346	/a>{4
347	/a>        if (	a href="+code=addr1" class="sref">addr1	/a>->	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a> != 	a href="+code=addr2" class="sref">addr2	/a>->	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a>)4
348	/a>                return 0;4
349	/a>        if (	a href="+code=addr1" class="sref">addr1	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a> != 	a href="+code=addr2" class="sref">addr2	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a>)4
35alua>                return 0;4
351	/a>        if (	a href="+code=addr1" class="sref">addr1	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> != 	a href="+code=addr2" class="sref">addr2	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>)4
352	/a>                return 0;4
353	/a>4
354	/a>        return 1;4
355	/a>}4
356	/a>4
357	/a>	spa. class="comment">/* Initialize addr struct
to INADDR_ANY. */	/spa.14
358	/a>static void
	a href="+code=sctp_v4_inaddr_any" class="sref">sctp_v4_inaddr_any	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>, 	a href="+code=__be16" class="sref">__be16	/a> 	a href="+code=port" class="sref">port	/a>)4
359	/a>{4
360	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
361	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=htonl" class="sref">htonl	/a>(	a href="+code=INADDR_ANY" class="sref">INADDR_ANY	/a>);4
362	/a>        	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a> = 	a href="+code=port" class="sref">port	/a>;4
363	/a>}4
364	/a>4
365	/a>	spa. class="comment">/* Is this a wildcard address? */	/spa.14
366	/a>static int
	a href="+code=sctp_v4_is_any" class="sref">sctp_v4_is_any	/a>(const unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>)4
367	/a>{4
368	/a>        return 	a href="+code=htonl" class="sref">htonl	/a>(	a href="+code=INADDR_ANY" class="sref">INADDR_ANY	/a>) == 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
369	/a>}4
370	/a>4
371	/a>	spa. class="comment">/* This functv3. checks if the address is a valid address to be used for	/spa.14
372	/a>	spa. class="comment"> * SCTP binding.	/spa.14
373	/a>	spa. class="comment"> *	/spa.14
374	/a>	spa. class="comment"> * Output:	/spa.14
375	/a>	spa. class="comment"> * Return 0 - If the address is a non-unvcast or an illegal address.	/spa.14
376	/a>	spa. class="comment"> * Return 1 - If the address is a unvcast.	/spa.14
377	/a>	spa. class="comment"> */	/spa.14
378	/a>static int
	a href="+code=sctp_v4_addr_valid" class="sref">sctp_v4_addr_valid	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>,4
379	/a>                              struct
	a href="+code=sctp_sock" class="sref">sctp_sock	/a> *	a href="+code=sp" class="sref">sp	/a>,4
38alua>                              const struct
	a href="+code=sk_buff" class="sref">sk_buff	/a> *	a href="+code=skb" class="sref">skb	/a>)4
381	/a>{4
382	/a>        	spa. class="comment">/* IPv4 addresses not allowed */	/spa.14
383	/a>        if (	a href="+code=sp" class="sref">sp	/a> &&
	a href="+code=ipv6_only_sock" class="sref">ipv6_only_sock	/a>(	a href="+code=sctp_opt2sk" class="sref">sctp_opt2sk	/a>(	a href="+code=sp" class="sref">sp	/a>)))4
384	/a>                return 0;4
385	/a>4
386	/a>        	spa. class="comment">/* Is this a non-unvcast address or a unusable SCTP address? */	/spa.14
387	/a>        if (	a href="+code=IS_IPV4_UNUSABLE_ADDRESS" class="sref">IS_IPV4_UNUSABLE_ADDRESS	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>))4
388	/a>                return 0;4
389	/a>4
390	/a>        	spa. class="comment">/* Is this a broadcast address? */	/spa.14
391	/a>        if (	a href="+code=skb" class="sref">skb	/a> &&
	a href="+code=skb_rtable" class="sref">skb_rtable	/a>(	a href="+code=skb" class="sref">skb	/a>)->	a href="+code=rt_flags" class="sref">rt_flags	/a> &
	a href="+code=RTCF_BROADCAST" class="sref">RTCF_BROADCAST	/a>)4
392	/a>                return 0;4
393	/a>4
394	/a>        return 1;4
395	/a>}4
396	/a>4
397	/a>	spa. class="comment">/* Should this be available for binding?   */	/spa.14
398	/a>static int
	a href="+code=sctp_v4_available" class="sref">sctp_v4_available	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>, struct
	a href="+code=sctp_sock" class="sref">sctp_sock	/a> *	a href="+code=sp" class="sref">sp	/a>)4
399	/a>{4
400	/a>        int
	a href="+code=ret" class="sref">ret	/a> = 	a href="+code=inet_addr_type" class="sref">inet_addr_type	/a>(&	a href="+code=init_net" class="sref">init_net	/a>, 	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>);4
401	/a>4
402	/a>4
403	/a>        if (	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> != 	a href="+code=htonl" class="sref">htonl	/a>(	a href="+code=INADDR_ANY" class="sref">INADDR_ANY	/a>) &&4
404	/a>           	a href="+code=ret" class="sref">ret	/a> != 	a href="+code=RTN_LOCAL" class="sref">RTN_LOCAL	/a> &&4
405	/a>           !	a href="+code=sp" class="sref">sp	/a>->	a href="+code=inet" class="sref">inet	/a>.	a href="+code=freebind" class="sref">freebind	/a> &&4
406	/a>           !	a href="+code=sysctl_ip_nonlocal_bind" class="sref">sysctl_ip_nonlocal_bind	/a>)4
407	/a>                return 0;4
408	/a>4
409	/a>        if (	a href="+code=ipv6_only_sock" class="sref">ipv6_only_sock	/a>(	a href="+code=sctp_opt2sk" class="sref">sctp_opt2sk	/a>(	a href="+code=sp" class="sref">sp	/a>)))4
41alua>                return 0;4
411	/a>4
412	/a>        return 1;4
413	/a>}4
414	/a>4
415	/a>	spa. class="comment">/* Checking the loopback, private and other address scopes as defined in	/spa.14
416	/a>	spa. class="comment"> * RFC 1918.   The IPv4 scoping is based on the draft for SCTP IPv4	/spa.14
417	/a>	spa. class="comment"> * scoping <draft-stewart-tsvwg-sctp-ipv4-00.txt>.	/spa.14
418	/a>	spa. class="comment"> *	/spa.14
419	/a>	spa. class="comment"> * Level 0 - unusable SCTP addresses	/spa.14
42alua>	spa. class="comment"> * Level 1 - loopback address	/spa.14
421	/a>	spa. class="comment"> * Level 2 - link-local addresses	/spa.14
422	/a>	spa. class="comment"> * Level 3 - private addresses.	/spa.14
423	/a>	spa. class="comment"> * Level 4 - global addresses	/spa.14
424	/a>	spa. class="comment"> * For INIT and INIT-ACK address list, let L be the level of	/spa.14
425	/a>	spa. class="comment"> * of requested destinatv3. address, sender and receiver	/spa.14
426	/a>	spa. class="comment"> * SHOULD include all of its addresses with level greater	/spa.14
427	/a>	spa. class="comment"> * tha. or equal to L.	/spa.14
428	/a>	spa. class="comment"> *	/spa.14
429	/a>	spa. class="comment"> * IPv4 scoping ca. be controlled through sysctl optv3.	/spa.14
43alua>	spa. class="comment"> * net.sctp.addr_scope_policy	/spa.14
431	/a>	spa. class="comment"> */	/spa.14
432	/a>static 	a href="+code=sctp_scope_t" class="sref">sctp_scope_t	/a> 	a href="+code=sctp_v4_scope" class="sref">sctp_v4_scope	/a>(unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>)4
433	/a>{4
434	/a>        	a href="+code=sctp_scope_t" class="sref">sctp_scope_t	/a> 	a href="+code=retval" class="sref">retval	/a>;4
435	/a>4
436	/a>        	spa. class="comment">/* Check for unusable SCTP addresses. */	/spa.14
437	/a>        if (	a href="+code=IS_IPV4_UNUSABLE_ADDRESS" class="sref">IS_IPV4_UNUSABLE_ADDRESS	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>)) {4
438	/a>                	a href="+code=retval" class="sref">retval	/a> =  	a href="+code=SCTP_SCOPE_UNUSABLE" class="sref">SCTP_SCOPE_UNUSABLE	/a>;4
439	/a>        } else if (	a href="+code=ipv4_is_loopback" class="sref">ipv4_is_loopback	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>)) {4
44alua>                	a href="+code=retval" class="sref">retval	/a> = 	a href="+code=SCTP_SCOPE_LOOPBACK" class="sref">SCTP_SCOPE_LOOPBACK	/a>;4
441	/a>        } else if (	a href="+code=ipv4_is_linklocal_169" class="sref">ipv4_is_linklocal_169	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>)) {4
442	/a>                	a href="+code=retval" class="sref">retval	/a> = 	a href="+code=SCTP_SCOPE_LINK" class="sref">SCTP_SCOPE_LINK	/a>;4
443	/a>        } else if (	a href="+code=ipv4_is_private_10" class="sref">ipv4_is_private_10	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>) ||4
444	/a>                   	a href="+code=ipv4_is_private_172" class="sref">ipv4_is_private_172	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>) ||4
445	/a>                   	a href="+code=ipv4_is_private_192" class="sref">ipv4_is_private_192	/a>(	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>)) {4
446	/a>                	a href="+code=retval" class="sref">retval	/a> = 	a href="+code=SCTP_SCOPE_PRIVATE" class="sref">SCTP_SCOPE_PRIVATE	/a>;4
447	/a>        } else {4
448	/a>                	a href="+code=retval" class="sref">retval	/a> = 	a href="+code=SCTP_SCOPE_GLOBAL" class="sref">SCTP_SCOPE_GLOBAL	/a>;4
449	/a>        }4
450	/a>4
451	/a>        return 	a href="+code=retval" class="sref">retval	/a>;4
452	/a>}4
453	/a>4
454	/a>	spa. class="comment">/* Returns a valid dst cache entry for the given source and destinatv3. ip	/spa.14
455	/a>	spa. class="comment"> * addresses. If an associatv3. is passed, trys to get a dst entry with a	/spa.14
456	/a>	spa. class="comment"> * source address that matches an address in the bind address list.	/spa.14
457	/a>	spa. class="comment"> */	/spa.14
458	/a>static void
	a href="+code=sctp_v4_get_dst" class="sref">sctp_v4_get_dst	/a>(struct
	a href="+code=sctp_transport" class="sref">sctp_transport	/a> *	a href="+code=t" class="sref">t	/a>, unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=saddr" class="sref">saddr	/a>,4
459	/a>                                struct
	a href="+code=flowi" class="sref">flowi	/a> *	a href="+code=fl" class="sref">fl	/a>, struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>)4
460	/a>{4
461	/a>        struct
	a href="+code=sctp_associatv3." class="sref">sctp_associatv3.	/a> *	a href="+code=asoc" class="sref">asoc	/a> = 	a href="+code=t" class="sref">t	/a>->	a href="+code=asoc" class="sref">asoc	/a>;4
462	/a>        struct
	a href="+code=rtable" class="sref">rtable	/a> *	a href="+code=rt" class="sref">rt	/a>;4
463	/a>        struct
	a href="+code=flowi4" class="sref">flowi4	/a> *	a href="+code=fl4" class="sref">fl4	/a> = &	a href="+code=fl" class="sref">fl	/a>->	a href="+code=u" class="sref">u	/a>.	a href="+code=ip4" class="sref">ip4	/a>;4
464	/a>        struct
	a href="+code=sctp_bind_addr" class="sref">sctp_bind_addr	/a> *	a href="+code=bp" class="sref">bp	/a>;4
465	/a>        struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a> *	a href="+code=laddr" class="sref">laddr	/a>;4
466	/a>        struct
	a href="+code=dst_entry" class="sref">dst_entry	/a> *	a href="+code=dst" class="sref">dst	/a> = 	a href="+code=NULL" class="sref">NULL	/a>;4
467	/a>        unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=daddr" class="sref">daddr	/a> = &	a href="+code=t" class="sref">t	/a>->	a href="+code=ipaddr" class="sref">ipaddr	/a>;4
468	/a>        unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> 	a href="+code=dst_saddr" class="sref">dst_saddr	/a>;4
469	/a>4
470	/a>        	a href="+code=memset" class="sref">memset	/a>(	a href="+code=fl4" class="sref">fl4	/a>, 0x0, sizeof(struct
	a href="+code=flowi4" class="sref">flowi4	/a>));4
471	/a>        	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=daddr" class="sref">daddr	/a>  = 	a href="+code=daddr" class="sref">daddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
472	/a>        	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=fl4_dport" class="sref">fl4_dport	/a> = 	a href="+code=daddr" class="sref">daddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a>;4
473	/a>        	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=flowi4_proto" class="sref">flowi4_proto	/a> = 	a href="+code=IPPROTO_SCTP" class="sref">IPPROTO_SCTP	/a>;4
474	/a>        if (	a href="+code=asoc" class="sref">asoc	/a>) {4
475	/a>                	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=flowi4_tos" class="sref">flowi4_tos	/a> = 	a href="+code=RT_CONN_FLAGS" class="sref">RT_CONN_FLAGS	/a>(	a href="+code=asoc" class="sref">asoc	/a>->	a href="+code=base" class="sref">base	/a>.	a href="+code=sk" class="sref">sk	/a>);4
476	/a>                	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=flowi4_oif" class="sref">flowi4_oif	/a> = 	a href="+code=asoc" class="sref">asoc	/a>->	a href="+code=base" class="sref">base	/a>.	a href="+code=sk" class="sref">sk	/a>->	a href="+code=sk_bound_dev_if" class="sref">sk_bound_dev_if	/a>;4
477	/a>                	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=fl4_sport" class="sref">fl4_sport	/a> = 	a href="+code=htons" class="sref">htons	/a>(	a href="+code=asoc" class="sref">asoc	/a>->	a href="+code=base" class="sref">base	/a>.	a href="+code=bind_addr" class="sref">bind_addr	/a>.	a href="+code=port" class="sref">port	/a>);4
478	/a>        }4
479	/a>        if (	a href="+code=saddr" class="sref">saddr	/a>) {4
48alua>                	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=saddr" class="sref">saddr	/a> = 	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
481	/a>                	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=fl4_sport" class="sref">fl4_sport	/a> = 	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a>;4
482	/a>        }4
483	/a>4
484	/a>        	a href="+code=SCTP_DEBUG_PRINTK" class="sref">SCTP_DEBUG_PRINTK	/a>(	spa. class="string">"%s: DST:%pI4, SRC:%pI4 - "	/spa.1,4
485	/a>                          	a href="+code=__func__" class="sref">__func__	/a>, &	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=daddr" class="sref">daddr	/a>, &	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=saddr" class="sref">saddr	/a>);4
486	/a>4
487	/a>        	a href="+code=rt" class="sref">rt	/a> = 	a href="+code=ip_route_output_key" class="sref">ip_route_output_key	/a>(&	a href="+code=init_net" class="sref">init_net	/a>, 	a href="+code=fl4" class="sref">fl4	/a>);4
488	/a>        if (!	a href="+code=IS_ERR" class="sref">IS_ERR	/a>(	a href="+code=rt" class="sref">rt	/a>))4
489	/a>                	a href="+code=dst" class="sref">dst	/a> = &	a href="+code=rt" class="sref">rt	/a>->	a href="+code=dst" class="sref">dst	/a>;4
490	/a>4
491	/a>        	spa. class="comment">/* If there is no associatv3. or if a source address is passed, no	/spa.14
492	/a>	spa. class="comment">         * more validatv3. is required.	/spa.14
493	/a>	spa. class="comment">         */	/spa.14
494	/a>        if (!	a href="+code=asoc" class="sref">asoc	/a> || 	a href="+code=saddr" class="sref">saddr	/a>)4
495	/a>                goto 	a href="+code=out" class="sref">out	/a>;4
496	/a>4
497	/a>        	a href="+code=bp" class="sref">bp	/a> = &	a href="+code=asoc" class="sref">asoc	/a>->	a href="+code=base" class="sref">base	/a>.	a href="+code=bind_addr" class="sref">bind_addr	/a>;4
498	/a>4
499	/a>        if (	a href="+code=dst" class="sref">dst	/a>) {4
50alua>                	spa. class="comment">/* Walk through the bind address list and look for a bind	/spa.14
501	/a>	spa. class="comment">                 * address that matches the source address of the returned dst.	/spa.14
502	/a>	spa. class="comment">                 */	/spa.14
503	/a>                	a href="+code=sctp_v4_dst_saddr" class="sref">sctp_v4_dst_saddr	/a>(&	a href="+code=dst_saddr" class="sref">dst_saddr	/a>, 	a href="+code=fl4" class="sref">fl4	/a>, 	a href="+code=htons" class="sref">htons	/a>(	a href="+code=bp" class="sref">bp	/a>->	a href="+code=port" class="sref">port	/a>));4
504	/a>                	a href="+code=rcu_read_lock" class="sref">rcu_read_lock	/a>();4
505	/a>                	a href="+code=list_for_each_entry_rcu" class="sref">list_for_each_entry_rcu	/a>(	a href="+code=laddr" class="sref">laddr	/a>, &	a href="+code=bp" class="sref">bp	/a>->	a href="+code=address_list" class="sref">address_list	/a>, 	a href="+code=list" class="sref">list	/a>) {4
506	/a>                        if (!	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=valid" class="sref">valid	/a> || (	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=state" class="sref">state	/a> == 	a href="+code=SCTP_ADDR_DEL" class="sref">SCTP_ADDR_DEL	/a>) ||4
507	/a>                            (	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=state" class="sref">state	/a> != 	a href="+code=SCTP_ADDR_SRC" class="sref">SCTP_ADDR_SRC	/a> &&4
508	/a>                            !	a href="+code=asoc" class="sref">asoc	/a>->	a href="+code=src_out_of_asoc_ok" class="sref">src_out_of_asoc_ok	/a>))4
509	/a>                                continue;4
51alua>                        if (	a href="+code=sctp_v4_cmp_addr" class="sref">sctp_v4_cmp_addr	/a>(&	a href="+code=dst_saddr" class="sref">dst_saddr	/a>, &	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=a" class="sref">a	/a>))4
511	/a>                                goto 	a href="+code=out_unlock" class="sref">out_unlock	/a>;4
512	/a>                }4
513	/a>                	a href="+code=rcu_read_unlock" class="sref">rcu_read_unlock	/a>();4
514	/a>4
515	/a>                	spa. class="comment">/* None of the bound addresses match the source address of the	/spa.14
516	/a>	spa. class="comment">                 * dst. So release it.	/spa.14
517	/a>	spa. class="comment">                 */	/spa.14
518	/a>                	a href="+code=dst_release" class="sref">dst_release	/a>(	a href="+code=dst" class="sref">dst	/a>);4
519	/a>                	a href="+code=dst" class="sref">dst	/a> = 	a href="+code=NULL" class="sref">NULL	/a>;4
52alua>        }4
521	/a>4
522	/a>        	spa. class="comment">/* Walk through the bind address list and try to get a dst that	/spa.14
523	/a>	spa. class="comment">         * matches a bind address as the source address.	/spa.14
524	/a>	spa. class="comment">         */	/spa.14
525	/a>        	a href="+code=rcu_read_lock" class="sref">rcu_read_lock	/a>();4
526	/a>        	a href="+code=list_for_each_entry_rcu" class="sref">list_for_each_entry_rcu	/a>(	a href="+code=laddr" class="sref">laddr	/a>, &	a href="+code=bp" class="sref">bp	/a>->	a href="+code=address_list" class="sref">address_list	/a>, 	a href="+code=list" class="sref">list	/a>) {4
527	/a>                if (!	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=valid" class="sref">valid	/a>)4
528	/a>                        continue;4
529	/a>                if ((	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=state" class="sref">state	/a> == 	a href="+code=SCTP_ADDR_SRC" class="sref">SCTP_ADDR_SRC	/a>) &&4
53alua>                    (	a href="+code=AF_INET" class="sref">AF_INET	/a> == 	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a>)) {4
531	/a>                        	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=saddr" class="sref">saddr	/a> = 	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
532	/a>                        	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=fl4_sport" class="sref">fl4_sport	/a> = 	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_port" class="sref">sin_port	/a>;4
533	/a>                        	a href="+code=rt" class="sref">rt	/a> = 	a href="+code=ip_route_output_key" class="sref">ip_route_output_key	/a>(&	a href="+code=init_net" class="sref">init_net	/a>, 	a href="+code=fl4" class="sref">fl4	/a>);4
534	/a>                        if (!	a href="+code=IS_ERR" class="sref">IS_ERR	/a>(	a href="+code=rt" class="sref">rt	/a>)) {4
535	/a>                                	a href="+code=dst" class="sref">dst	/a> = &	a href="+code=rt" class="sref">rt	/a>->	a href="+code=dst" class="sref">dst	/a>;4
536	/a>                                goto 	a href="+code=out_unlock" class="sref">out_unlock	/a>;4
537	/a>                        }4
538	/a>                }4
539	/a>        }4
540	/a>4
541	/a>	a href="+code=out_unlock" class="sref">out_unlock	/a>:4
542	/a>        	a href="+code=rcu_read_unlock" class="sref">rcu_read_unlock	/a>();4
543	/a>	a href="+code=out" class="sref">out	/a>:4
544	/a>        	a href="+code=t" class="sref">t	/a>->	a href="+code=dst" class="sref">dst	/a> = 	a href="+code=dst" class="sref">dst	/a>;4
545	/a>        if (	a href="+code=dst" class="sref">dst	/a>)4
546	/a>                	a href="+code=SCTP_DEBUG_PRINTK" class="sref">SCTP_DEBUG_PRINTK	/a>(	spa. class="string">"rt_dst:%pI4, rt_src:%pI4\n"	/spa.1,4
547	/a>                                  &	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=daddr" class="sref">daddr	/a>, &	a href="+code=fl4" class="sref">fl4	/a>->	a href="+code=saddr" class="sref">saddr	/a>);4
548	/a>        else4
549	/a>                	a href="+code=SCTP_DEBUG_PRINTK" class="sref">SCTP_DEBUG_PRINTK	/a>(	spa. class="string">"NO ROUTE\n"	/spa.1);4
550	/a>}4
551	/a>4
552	/a>	spa. class="comment">/* For v4, the source address is cached in the route entry(dst). So no need	/spa.14
553	/a>	spa. class="comment"> * to cache it separately and hence this is an empty routine.	/spa.14
554	/a>	spa. class="comment"> */	/spa.14
555	/a>static void
	a href="+code=sctp_v4_get_saddr" class="sref">sctp_v4_get_saddr	/a>(struct
	a href="+code=sctp_sock" class="sref">sctp_sock	/a> *	a href="+code=sk" class="sref">sk	/a>,4
556	/a>                              struct
	a href="+code=sctp_transport" class="sref">sctp_transport	/a> *	a href="+code=t" class="sref">t	/a>,4
557	/a>                              struct
	a href="+code=flowi" class="sref">flowi	/a> *	a href="+code=fl" class="sref">fl	/a>)4
558	/a>{4
559	/a>        unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=saddr" class="sref">saddr	/a> = &	a href="+code=t" class="sref">t	/a>->	a href="+code=saddr" class="sref">saddr	/a>;4
56alua>        struct
	a href="+code=rtable" class="sref">rtable	/a> *	a href="+code=rt" class="sref">rt	/a> = (struct
	a href="+code=rtable" class="sref">rtable	/a> *)	a href="+code=t" class="sref">t	/a>->	a href="+code=dst" class="sref">dst	/a>;4
561	/a>4
562	/a>        if (	a href="+code=rt" class="sref">rt	/a>) {4
563	/a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_family" class="sref">sin_family	/a> = 	a href="+code=AF_INET" class="sref">AF_INET	/a>;4
564	/a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a> = 	a href="+code=fl" class="sref">fl	/a>->	a href="+code=u" class="sref">u	/a>.	a href="+code=ip4" class="sref">ip4	/a>.	a href="+code=saddr" class="sref">saddr	/a>;4
565	/a>        }4
566	/a>}4
567	/a>4
568	/a>	spa. class="comment">/* What interface did this skb arrive on? */	/spa.14
569	/a>static int 	a href="+code=sctp_v4_skb_iif" class="sref">sctp_v4_skb_iif	/a>(const struct
	a href="+code=sk_buff" class="sref">sk_buff	/a> *	a href="+code=skb" class="sref">skb	/a>)4
570	/a>{4
571	/a>        return 	a href="+code=inet_iif" class="sref">inet_iif	/a>(	a href="+code=skb" class="sref">skb	/a>);4
572	/a>}4
573	/a>4
574	/a>	spa. class="comment">/* Was this packet marked by Explicit Congesti3. Notificatv3.? */	/spa.14
575	/a>static int 	a href="+code=sctp_v4_is_ce" class="sref">sctp_v4_is_ce	/a>(const struct
	a href="+code=sk_buff" class="sref">sk_buff	/a> *	a href="+code=skb" class="sref">skb	/a>)4
576	/a>{4
577	/a>        return 	a href="+code=INET_ECN_is_ce" class="sref">INET_ECN_is_ce	/a>(	a href="+code=ip_hdr" class="sref">ip_hdr	/a>(	a href="+code=skb" class="sref">skb	/a>)->	a href="+code=tos" class="sref">tos	/a>);4
578	/a>}4
579	/a>4
58alua>	spa. class="comment">/* Create and initialize a new sk for the socket returned by accept(). */	/spa.14
581	/a>static struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sctp_v4_create_accept_sk" class="sref">sctp_v4_create_accept_sk	/a>(struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>,4
582	/a>                                             struct
	a href="+code=sctp_associatv3." class="sref">sctp_associatv3.	/a> *	a href="+code=asoc" class="sref">asoc	/a>)4
583	/a>{4
584	/a>        struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=newsk" class="sref">newsk	/a> = 	a href="+code=sk_alloc" class="sref">sk_alloc	/a>(	a href="+code=sock_net" class="sref">sock_net	/a>(	a href="+code=sk" class="sref">sk	/a>), 	a href="+code=PF_INET" class="sref">PF_INET	/a>, 	a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL	/a>,4
585	/a>                        	a href="+code=sk" class="sref">sk	/a>->	a href="+code=sk_prot" class="sref">sk_prot	/a>);4
586	/a>        struct
	a href="+code=inet_sock" class="sref">inet_sock	/a> *	a href="+code=newinet" class="sref">newinet	/a>;4
587	/a>4
588	/a>        if (!	a href="+code=newsk" class="sref">newsk	/a>)4
589	/a>                goto 	a href="+code=out" class="sref">out	/a>;4
590	/a>4
591	/a>        	a href="+code=sock_init_data" class="sref">sock_init_data	/a>(	a href="+code=NULL" class="sref">NULL	/a>, 	a href="+code=newsk" class="sref">newsk	/a>);4
592	/a>4
593	/a>        	a href="+code=sctp_copy_sock" class="sref">sctp_copy_sock	/a>(	a href="+code=newsk" class="sref">newsk	/a>, 	a href="+code=sk" class="sref">sk	/a>, 	a href="+code=asoc" class="sref">asoc	/a>);4
594	/a>        	a href="+code=sock_reset_flag" class="sref">sock_reset_flag	/a>(	a href="+code=newsk" class="sref">newsk	/a>, 	a href="+code=SOCK_ZAPPED" class="sref">SOCK_ZAPPED	/a>);4
595	/a>4
596	/a>        	a href="+code=newinet" class="sref">newinet	/a> = 	a href="+code=inet_sk" class="sref">inet_sk	/a>(	a href="+code=newsk" class="sref">newsk	/a>);4
597	/a>4
598	/a>        	a href="+code=newinet" class="sref">newinet	/a>->	a href="+code=inet_daddr" class="sref">inet_daddr	/a> = 	a href="+code=asoc" class="sref">asoc	/a>->	a href="+code=peer" class="sref">peer	/a>.	a href="+code=primary_addr" class="sref">primary_addr	/a>.	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>.	a href="+code=s_addr" class="sref">s_addr	/a>;4
599	/a>4
600	/a>        	a href="+code=sk_refcnt_debug_inc" class="sref">sk_refcnt_debug_inc	/a>(	a href="+code=newsk" class="sref">newsk	/a>);4
601	/a>4
602	/a>        if (	a href="+code=newsk" class="sref">newsk	/a>->	a href="+code=sk_prot" class="sref">sk_prot	/a>->	a href="+code=init" class="sref">init	/a>(	a href="+code=newsk" class="sref">newsk	/a>)) {4
603	/a>                	a href="+code=sk_common_release" class="sref">sk_common_release	/a>(	a href="+code=newsk" class="sref">newsk	/a>);4
604	/a>                	a href="+code=newsk" class="sref">newsk	/a> = 	a href="+code=NULL" class="sref">NULL	/a>;4
605	/a>        }4
606	/a>4
607	/a>	a href="+code=out" class="sref">out	/a>:4
608	/a>        return 	a href="+code=newsk" class="sref">newsk	/a>;4
609	/a>}4
610	/a>4
611	/a>	spa. class="comment">/* Map address, empty for v4 family */	/spa.14
612	/a>static void
	a href="+code=sctp_v4_addr_v4map" class="sref">sctp_v4_addr_v4map	/a>(struct
	a href="+code=sctp_sock" class="sref">sctp_sock	/a> *	a href="+code=sp" class="sref">sp	/a>, unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>)4
613	/a>{4
614	/a>        	spa. class="comment">/* Empty */	/spa.14
615	/a>}4
616	/a>4
617	/a>	spa. class="comment">/* Dump the v4 addr to the seq file. */	/spa.14
618	/a>static void
	a href="+code=sctp_v4_seq_dump_addr" class="sref">sctp_v4_seq_dump_addr	/a>(struct
	a href="+code=seq_file" class="sref">seq_file	/a> *	a href="+code=seq" class="sref">seq	/a>, unv3. 	a href="+code=sctp_addr" class="sref">sctp_addr	/a> *	a href="+code=addr" class="sref">addr	/a>)4
619	/a>{4
620	/a>        	a href="+code=seq_printf" class="sref">seq_printf	/a>(	a href="+code=seq" class="sref">seq	/a>, 	spa. class="string">"%pI4 "	/spa.1, &	a href="+code=addr" class="sref">addr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=sin_addr" class="sref">sin_addr	/a>);4
621	/a>}4
622	/a>4
623	/a>static void
	a href="+code=sctp_v4_ecn_capable" class="sref">sctp_v4_ecn_capable	/a>(struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>)4
624	/a>{4
625	/a>        	a href="+code=INET_ECN_xmit" class="sref">INET_ECN_xmit	/a>(	a href="+code=sk" class="sref">sk	/a>);4
626	/a>}4
627	/a>4
628	/a>void
	a href="+code=sctp_addr_wq_timeout_handler" class="sref">sctp_addr_wq_timeout_handler	/a>(unsigned long 	a href="+code=arg" class="sref">arg	/a>)4
629	/a>{4
63alua>        struct
	a href="+code=sctp_sockaddr_entry" class="sref">sctp_sockaddr_entry	/a> *	a href="+code=addrw" class="sref">addrw	/a>, *	a href="+code=temp" class="sref">temp	/a>;4
631	/a>        struct
	a href="+code=sctp_sock" class="sref">sctp_sock	/a> *	a href="+code=sp" class="sref">sp	/a>;4
632	/a>4
633	/a>        	a href="+code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sctp_addr_wq_lock" class="sref">sctp_addr_wq_lock	/a>);4
634	/a>4
635	/a>        	a href="+code=list_for_each_entry_safe" class="sref">list_for_each_entry_safe	/a>(	a href="+code=addrw" class="sref">addrw	/a>, 	a href="+code=temp" class="sref">temp	/a>, &	a href="+code=sctp_addr_waitq" class="sref">sctp_addr_waitq	/a>, 	a href="+code=list" class="sref">list	/a>) {4
636	/a>                	a href="+code=SCTP_DEBUG_PRINTK_IPADDR" class="sref">SCTP_DEBUG_PRINTK_IPADDR	/a>(	spa. class="string">"sctp_addrwq_timo_handler: the first ent in wq %p is "	/spa.1,4
637	/a>                    	spa. class="string">" for cmd %d at entry %p\n"	/spa.1, &	a href="+code=sctp_addr_waitq" class="sref">sctp_addr_waitq	/a>, &	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>, 	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=state" class="sref">state	/a>,4
638	/a>                    	a href="+code=addrw" class="sref">addrw	/a>);4
639	/a>4
640	/a>#if 	a href="+code=IS_ENABLED" class="sref">IS_ENABLED	/a>(	a href="+code=CONFIG_IPV6" class="sref">CONFIG_IPV6	/a>)4
641	/a>                	spa. class="comment">/* Now we send an ASCONF for each associatv3. */	/spa.14
642	/a>                	spa. class="comment">/* Note. we currently don't handle link local IPv6 addressees */	/spa.14
643	/a>                if (	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a> == 	a href="+code=AF_INET6" class="sref">AF_INET6	/a>) {4
644	/a>                        struct
	a href="+code=in6_addr" class="sref">in6_addr	/a> *	a href="+code=in6" class="sref">in6	/a>;4
645	/a>4
646	/a>                        if (	a href="+code=ipv6_addr_type" class="sref">ipv6_addr_type	/a>(&	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v6" class="sref">v6	/a>.	a href="+code=sin6_addr" class="sref">sin6_addr	/a>) &4
647	/a>                            	a href="+code=IPV6_ADDR_LINKLOCAL" class="sref">IPV6_ADDR_LINKLOCAL	/a>)4
648	/a>                                goto 	a href="+code=free_next" class="sref">free_next	/a>;4
649	/a>4
65alua>                        	a href="+code=in6" class="sref">in6	/a> = (struct
	a href="+code=in6_addr" class="sref">in6_addr	/a> *)&	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=v6" class="sref">v6	/a>.	a href="+code=sin6_addr" class="sref">sin6_addr	/a>;4
651	/a>                        if (	a href="+code=ipv6_chk_addr" class="sref">ipv6_chk_addr	/a>(&	a href="+code=init_net" class="sref">init_net	/a>, 	a href="+code=in6" class="sref">in6	/a>, 	a href="+code=NULL" class="sref">NULL	/a>, 0) == 0 &&4
652	/a>                            	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=state" class="sref">state	/a> == 	a href="+code=SCTP_ADDR_NEW" class="sref">SCTP_ADDR_NEW	/a>) {4
653	/a>                                unsigned long 	a href="+code=timeo_val" class="sref">timeo_val	/a>;4
654	/a>4
655	/a>                                	a href="+code=SCTP_DEBUG_PRINTK" class="sref">SCTP_DEBUG_PRINTK	/a>(	spa. class="string">"sctp_timo_handler: this is 3. DAD, trying %d sec later\n"	/spa.1,4
656	/a>                                    	a href="+code=SCTP_ADDRESS_TICK_DELAY" class="sref">SCTP_ADDRESS_TICK_DELAY	/a>);4
657	/a>                                	a href="+code=timeo_val" class="sref">timeo_val	/a> = 	a href="+code=jiffies" class="sref">jiffies	/a>;4
658	/a>                                	a href="+code=timeo_val" class="sref">timeo_val	/a> += 	a href="+code=msecs_to_jiffies" class="sref">msecs_to_jiffies	/a>(	a href="+code=SCTP_ADDRESS_TICK_DELAY" class="sref">SCTP_ADDRESS_TICK_DELAY	/a>);4
659	/a>                                	a href="+code=mod_timer" class="sref">mod_timer	/a>(&	a href="+code=sctp_addr_wq_timer" class="sref">sctp_addr_wq_timer	/a>, 	a href="+code=timeo_val" class="sref">timeo_val	/a>);4
66alua>                                break;4
661	/a>                        }4
662	/a>                }4
663	/a>#endif4
664	/a>                	a href="+code=list_for_each_entry" class="sref">list_for_each_entry	/a>(	a href="+code=sp" class="sref">sp	/a>, &	a href="+code=sctp_auto_asconf_splist" class="sref">sctp_auto_asconf_splist	/a>, 	a href="+code=auto_asconf_list" class="sref">auto_asconf_list	/a>) {4
665	/a>                        struct
	a href="+code=sock" class="sref">sock	/a> *	a href="+code=sk" class="sref">sk	/a>;4
666	/a>4
667	/a>                        	a href="+code=sk" class="sref">sk	/a> = 	a href="+code=sctp_opt2sk" class="sref">sctp_opt2sk	/a>(	a href="+code=sp" class="sref">sp	/a>);4
668	/a>                        	spa. class="comment">/* ignore bound-specific endpoints */	/spa.14
669	/a>                        if (!	a href="+code=sctp_is_ep_boundall" class="sref">sctp_is_ep_boundall	/a>(	a href="+code=sk" class="sref">sk	/a>))4
67alua>                                continue;4
671	/a>                        	a href="+code=sctp_bh_lock_sock" class="sref">sctp_bh_lock_sock	/a>(	a href="+code=sk" class="sref">sk	/a>);4
672	/a>                        if (	a href="+code=sctp_asconf_mgmt" class="sref">sctp_asconf_mgmt	/a>(	a href="+code=sp" class="sref">sp	/a>, .      if (	a 1&("sreit_da4e2 1ntinu24L57267EW	/a>) {4
655	/a>                                	a href="+code=SCT_IPADDR" class="sref">
672	/a>        failedEBUG_PRINTK" class="sref">SCTP_DEBUG_PRINTK	/a>(6c#L573" i614L573" class="line" nam614L5767T6	/a>) {4
671 nam.1lass=                   	a href="+code=sctp_bh_lock_sock" class="sref">sctp_bh_lock_asconf_lplicit Congesti3. Notifi6atv3.67st	/a>) {4 6	a href="+code=skb" clas6="sre6">skb		/a>4
640	/a>#if 	a href="+code=IS_ENABLED" class="sref">IS_ENABLED	/a>(	a hre#L576" id64L576" class="line" nam.64L57667>
606	/a>4
648	/a>      id14L607" class="line" nam.14L607/a>)->6a href="+code=tos" class6"sref6>tos	/   }4
66m.14Lde                      if (	a href="+code=ipv6_addr_type" class="sref">ipv6_p;	a href="+code=sctp_addr_wck_sock" class="sref">sctp_bh_locc#L579" i614L579" class="line" nam614L5768>sk	/a>))4ipv6_k648	 href="+code=sck648	     	a href="+code=list_for_each_entry_safe" clawck_sock" class="sref">sctp_bh_locc>
67alua>he socket returned by ac6ept()68continue;4sock	/a6 *	a href="+code=sk" cla6s="sr6f">sk	/a>,4                                	a +code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sctp3.	/a> *	6 href="+code=asoc" class6"sref6>asoc	t/sctp/protocol.c#L662" id14L662""#L573" i64L583" class="line" nam.64L58368_val	/a>;4IS_ENABLED	/a>(	a hre;	a href=6+code=sk_prot" class="sr6f">sk68>skb	/a>)4n68>
666	/a>4
63alua>        struct
	a href="+code=sctp_sockaddr_entry"k_bh	/a>(&	a href="+code=sctp3a>)->614L587" class="line" nam614L586">
587	/a>4
63alua>        struct
	a hre_sockaddr_entry	/a> *	a href="+code=addrw" class="sref">addr if (!	a 6ref="+code=newsk" class=6sref"68next	/a>;4
633	/a>        	a href="+code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sctpc#L590" i614L590" class="line" nam614L596">
590	/a>4                                	a href="+code=mod_timer" class="sref">mod_tick_bh	/a>(&	a href="+code=sctpc>sock	/a6ef="+code=newsk" class="6ref">69">sk	/a>,4
635	/a>        	a href="+code=list_for_each_entry_safe" class="sref">list_for_each_entry_safe	/a>(	a href="+code=addrw" class="sref">addrw	/a>, 	a href="+code=temp" class="sref">temp	/a>, &	a href="+code=sctp_addr_wonf_splist	/a>, 	a href="+code=autc#L592" i614L592" class="line" nam614L5969k	/a>)) {4
66m.14Lde                      if (	a href="+code=ipv6_addr_type" class="sref">ipv6_p;	a href="+code=sctp_addr_wck_sock" class="sref">sctp_bh_lock	/a>, 	a6href="+code=asoc" class=6sref"69/a>#endif4sctp_bh_loc="+code=S6CK_ZAPPED" class="sref">6OCK_Z69NULL	/a>;4
595	/a>4                                	a +code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sctp	/a>(	a h6ef="+code=newsk" class="6ref">6ewsk	/href="net/sctp/protocol.c#L605" ica>)->614L597" class="line" nam614L596">
597ref="net/sctp/protocol.c#L605" icif (!	a 6f="+code=s_addr" class="6ref">6_addr	rotocol.c#L668" id14L668"lookucol.c#.14L63"line" nalas4L552" clanam.14emp" class="                      	spa. class="c7c#L599" i714L599" class="line" nam714L5970>
579	/a>4  k"comment">/* For v4, the source address 7	/a>(	a h7ef="+code=newsk" class="7ref">70>
610	/a>4
63alua>        struct
	a hre class="sref">sokuce=spin_lock_bh" class="sref">sokuc/a>  href="net/sctp/protocol.c#L630" id14L630" class="line" nam.14L630">
63alua>        struct
	a href="+for_each_entry_safeD" class="sref">IS_ENABLED	/a>(	a hr7a>(	a hre7="+code=newsk" class="sr7f">ne70addr	/a>)47ewsk	/a>);4
63alua>        struct
	a href="+code=sctp_sockaddr_entry"k_bh	/a>(&	a href="+code=sct7k	/a> = 	7 href="+code=NULL" class7"sref70>in6	/a>;47605	/70>
595	/a>4
664	/a>                	a hrlist_for_each_entry_safe" class="+code=addrw" class="sref">addrw	/a>, 	a href="+code=temp" class="sref">temp	/a>, &	a href="+code=sctp_addr_wonf_splist	/a>, 	a href="+code=au7c#L606" i714L606" class="line" nam714L6070>
666	/a>4
643	/a>                if (	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="!lass="sref">newine">seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=laddr" class="sref">laddr	/a>->	a href="+code=a" class="sref">a	/a>.	a href="f_splist	/a>, 	a href="+code=au7c8L606" i714L597" class="line" nam7="sre70>sp	/a>);4
643	/a>                if (	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa class="sref">aode=sin_famwonf_splist	/a>, 	a href="+code=au7#L609" id74L609" class="line" nam.74L60971>sk	/a>))4
643	/a>                if (	a href="+code=add/a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code=s=f_splist	/a>, 	a href="+code=au7#/a>(	a h714L610" class="line" nam714L6171continue;4seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=lad/a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+code"f_splist	/a>, 	a href="+code=au7ment">/* 7ap address, empty for v47famil71">sk	/a>,4(&	a href="+code=sct7dr	/a> *	7 href="+code=addr" class7"sref71k	/a>)) {4
643	/a>                if (	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa	/a>.	a href="+code=sa_family" class="sref">sa_family	/a> == 	7#L613" id74L613" class="line" nam.74L61371T6	/a>) {4ipv6_n6_addr	/a> *)&	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href=ng">"sctp_timo_handler: thi7/a>      7 	spa. class="comment">/7 Empt71>
654	/a>4seq	/a>, 	spa. class="string">"%pI4addr_type	/a>(&	a href="+code=addrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href=""f_splist	/a>, 	a href="+code=au7m14L605" 74L615" class="line" nam.74L61571;	/spa.1,4(&	a href="+code=sct7d#L606" i714L616" class="line" nam714L6171>
666	/a>4/* D7mp the v4 addr to the se7 file71>sp	/a>);4new7#L619" id74L619" class="line" nam.74L61972	/spa.1);4sin72wsk	/a>);4
621		/a>4
672	tocol.c="li/a>  href="net/sctp/protocol.c#L630" id14L630" class="line" nam.14L630">
63alua>        struct
	a href="+for_each_entry_safeD" c,a href="net/sctp/procmdfor_each_entry_cmdcode"f_splist	/a>, 	a href="+code=au7c#L622" i714L622" class="line" nam714L6272addr	/a>)4sock	/a7 *	a href="+code=sk" cla7s="sr72wsk	/a>);4
63alua>        struct
	a href="+code=sctp_sockaddr_entry"k_bh	/a>(&	a href="+code=sct7#L624" id74L624" class="line" nam.74L6247>
624	/a>{4
653	/a>                                unsigned long 	7N_xmit	/a7(	a href="+code=sk" clas7="sre72">sk	/a>;4
666	/a>4	spa. class="comment"> * to cache it s7c#L627" i714L627" class="line" nam714L6272>
567	/a>4	spa. class="comment"> * to cache it s7cturn 	a 7	a href="+code=arg" clas7="sre72addr	rotocol.c#L668" id14L6 href="ne* T claoper1	/a> nam. bL553tupid, butam.14DHCPol.iG_PRattol.cocole	spa. class="comment"> * to cache it s7#L629" id74L629" class="line" nam.74L62973>
579	/a>4 c#L5dele	/a> ofattocoL552" c	spa. class="comment"> * to cache it s7# href="+7 href="+code=temp" class7"sref73>
610	/a>4                        	spa. class="c7p_sock	/a7 *	a href="+code=sp" cla7s="sr7f">sp	/a>;4
632	/a>4
633	/a>        	a href="+code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sct7_addr_wq_7ock" class="sref">sctp_a7dr_wq73
613	/a>{4                        	spa. class="c7pL624" id714L634" class="line" nam714L637">
634	/a>4
667	/a>  s="sref">sokuce=spin_lock_bh" class="sref">sokuc/a>    struct
	a href="+for_each_entry_safeD" clk_bh	/a>(&	a href="+code=sct7__xmit	/a7ref="+code=list" class="7ref">7ist	/a>) {4sa_family	/a> == 	7ndler: th7 first ent in wq %p 7s &qu7t;	/spa.1,4
643	/a>                    	a href="+c!lass="sref">newincmdfor_each_entry_cmdcode"" class="sref">sa_family	/a> == 	7n#L627" i7ref="+code=state" class=7sref"7state	/a>,4
636	/a>                	a href="+code=SCTP_DEBUG_PRINTK_IPAol.c="li offsets exist_DEBe14L63"linUG_PRIN. class="string">"sctp_timo_handler: thi7     	a h7ef="+code=addrw" class="7ref">73LAY	/a>);4            tp/protocol.c#L643" id14L643" class="line" nam.14L643">
643	/a>                    	a href="+quot;	/spa.1, &	a href="+code=sctp_addr_waitq" class="sref">sctp_addr_waitq	/a>, &	a g">"sctp_timo_handler: thi7c#L639" i714L639" class="line" nam714L6374>sk	/a>))4addrw	/a>, 	a href="+code=temp" class="srlk_bh	/a>(&	a href="+code=sct7f="+code=7ONFIG_IPV6" class="sref"7CONFI7_IPV6	/a>)4
66m.14Lde                      if (	a href="+code=ipv6_addr_type" class="sref">ipv6_p;	a href="+code=sctp_addr_wck_sock" class="sref">sctp_bh_lo7ow we sen7 an ASCONF for each asso7iatv37 */	/spa.14sctp_bh_lo7n't h7ndle link local IPv6 add7essee7 */	/spa.14                                	a +code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sct7addr	/a> 7	a href="+code=in6" clas7="sre74>
654	/a>4(&	a href="+code=sct7a_xmit	/a714L645" class="line" nam714L647">
645	/a>4sin7_addr74
626	/a>}4IPV6_AD7R_LIN7LOCAL	/a>)4                        	spa. class="c7 href="+c7de=free_next" class="sre7">fre74LAY	/a>);4
667	kmemduce=spin_lock_bh"kmemduc/a>    struct
	a href="+for_each_entry_safeD" c, sizeof href="net/sctp/protocol.c#L630" id14L630" class="line" nam.14L630">
63alua>    f="+code=sock_net"="+cATOMIC class="line" n="+cATOMICn_lock_bh	/a>(&	a href="+code=sct7c#L649" i714L649" class="line" nam714L647">
649	/a>4sa_family	/a> == 	7 href="+c7de=sin6_addr" class="sre7">sin7_addr	/a>;4                                	a +code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sct7ode=NULL"7class="sref">NULL	/a>, 07 == 07&&4(&	a href="+code=sct7de=SCTP_A7DR_NEW" class="sref">SCT7_ADDR7NEW	/a>) {4tim75soc	/a>);4
643	/a>                    	a href="+class="sref">newincmdfor_each_entry_cmdcodek_bh	/a>(&	a href="+code=sct7dddr	/a> 714L654" class="line" nam714L6575>
634	/a>4
66m.14L="l_tai                      if (	a href="+code=ipv6_addr_type" class="sref">ipv6_p;	a href="+code=sctp_addr_ss="+code=addrw" class="sref">addrw	/a>, 	a href="+code=temp" class="srck_bh	/a>(&	a href="+code=sct7o_xmit	/a7, trying %d sec late7\n&qu75>
595	/a>4
636	/a>                	a href="+code=SCTP_DEBUG_PRINTK_IPAol.c="li s="a clae14L63"lincmd:UG_PRIN. class="string">"sctp_timo_handler: thi7K_DELAY" 7lass="sref">SCTP_ADDRESS7TICK_7ELAY	/a>);4            tp/protocol.c#L643" id14L643" class="line" nam.14L643">
643	/a>                    	a href="+quot;	/spa.1, &	a href="+code=sctp_addr_waitq" class="sref">sctp_addr_waitq	/a>, &	a s="+code=addrw" class="sref">addrw	/a>, 	a href="+code=temp" class="srck_bh	/a>(&	a href="+code=sct7oR_LINKLO7"+code=jiffies" class="s7ef">j75>
597ref="net/sctp/protocol.c#L605" 7K_DELAY" 7lass="sref">SCTP_ADDRESS7TICK_7ELAY	/a>);4mo_p  }4ndler" class="sref">mo_p  }4nd/a>                                	a href="+code=mod_timer" class="sref">mod_tic"" class="sref">sa_family	/a> == 	7href="+co7e=timeo_val" class="sref7>time7_val	/a>);4
653	/a>                                              	a href="+code=timeo_val" class="sref">timeo_val	/a>7660">
66a7ua>                     7     7    break;4
653	/a>                                              	a href="+code=timeo_val" class="sref">timeo_val	/a> += 	a href="+code=msecs_to_jiffies" class="sref">msecs_to_jiffies	/a>(	a href="+code=SCTP_ADDRESS_TI7line" nam714L661">
661	/a>        7     7         }4
659	/a>                                	a href="+code=mod_timer" class="sref">mod_timer	/a>(&	a href="+code=sctp_addr_wq_timer" class="sref">sctp_addr_wq_timer	/a>, 	a7 class="l7ne" nam.14L662">
662	/a>7     76EW	/a>) {4
6676soc	/a>);4                                	a +code=spin_lock_bh" class="sref">spin_lock_bh	/a>(&	a href="+code=sct7o_asconf_7ist" class="sref">auto_a7conf_76*/	/spa.14sock	/a7 *	a href="+code=sk" cla7s="sr7f">sk	/a>;4
616	/a>4
r3"lins="taL552" cla55i	/a>/dele	/a> eve68	>	spa. class="comment"> * to cache it s7opt2sk	/a7(	a href="+code=sp" clas7="sre76>
567	/a>4  k since	spa. class="comment"> * to cache it s7mment">/*7ignore bound-specific en7point76addr	rotocol.c#L668" id14L6 * multiple noti="srs (say    4 c#L5    ) may be runn_DEBatne" nalas	spa. class="comment"> * to cache it s7undall	/a7(	a href="+code=sk" clas7="sre77>
579	/a>4	spa. class="comment"> * to cache it s7">
67alua7                        7     77>
610	/a>4 * to cache it s7"ine" nam7(	a href="+code=sk" clas7="sre7">sk	/	/a>4
622	/a>4
63ave68e=spin_lock_bh" class="t">
63ave68/a>  href="net/sctp/protoconoti="sr_b+code=spin_lock_bh"noti="sr_b+cod        struct
	a hre" cle=sctp_addr_wq_t cld_timec#L653" id14L653" class="lineeve=sctp_addr_wq_evp;	a g">"sctp_timo_handler: thi7c#L573" i714L573" class="line" nam714L5777T6	/a>) {4, 	a href="+code=au7k_asconf_7plicit Congesti3. Notifi7atv3.77st	/a class="sref">sa_family	/a> == 	7buff	/a> 7	a href="+code=skb" clas7="sre77>
595	/a>4
65alua>         _iff="+for_each_entry_  _iff="+        struct
	a hreifffor_each_entry_ fa       14L650">
65alua>         _iff="+for_each_entry_  _iff="+      )  struct
	a hrept="+code=mod_timept=codek_bh	/a>(&	a href="+code=sct7#L576" id74L576" class="line" nam.74L57677>
666	/a>4
63alua>        struct
	a href="+for_each_entry_safeD" ce" nam.14L604">
604	/a>                	a href="+code=newsk" class="sref">new7/a>)->7a href="+code=tos" class7"sref77>
587	/a>4
63alua>        struct
	a hre_sockaddr_entry	/a> *	a href="+code=addrw" class="sref">add7#L578" id74L578" class="line" nam.74L57877     else4add7c#L579" i714L579" class="line" nam714L5778
609	/a>}4        	a href=_	/ef">timeo_val	/a> +=dev href="+code=ipv6_cdev hreef">timeo_val	/a> +=ifffor_each_entry_ fa    class="sref">sctp_ad fa_deve=sctp_addr_wq_ fa_dev    class="sref">sctp_addeve=sctp_addr_wq_dev    ) s="+code=addrw" class (	a href="+code=ipv6_chk_addr" cla""f_splist	/a>, 	a href="+code=au7">sock	/a7 *	a href="+code=sk" cla7s="sr78amp;&4
604OTIFY_DONE>               OTIFY_DONE href="+code=addrw" class="sref">add73.	/a> *	7 href="+code=asoc" class7"sref7>asoc	="+code=addrw" class="sref">add73#L573" i74L583" class="line" nam.74L58378wsk	/a>);4sa_family	/a> == 	7ref="+cod7=GFP_KERNEL" class="sref7>GFP_78>
634	/a>4
604ETDEV_UP>               ETDEV_UP
634id14L607" class="line" nam.14L607;	a href=7+code=sk_prot" class="sr7f">sk78st	/a>) {4
60kmal+coe=spin_lock_bh"kmal+co/a>  hizeof href="net/sctp/protocol.c#L630" id14L630" class="line" nam.14L630">
63alua>    f="+code=sock_net"="+cATOMIC class="line" n="+cATOMICn_lock_bh	/a>(&	a href="+code=sct7 *	a href7"+code=newinet" class="s7ef">n78;	/spa.1,4sa_family	/a> == 	7ra>)->714L587" class="line" nam714L5878tate	/a>,4seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=lad/a>                	a href="+code=saddr" clode=a" class="sref">a	 clode=a"D" ce" nam.14L604">
60ref">sa class="sref">aode=sin_famk_bh	/a>(&	a href="+code=sct7 L578" id7ref="+code=newsk" class=7sref"78LAY	/a>);4seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=lad/a>                	a href="+code=saddr" clpor8e=spin_lock_bh"  clpor8D" ce" 0f="+code=addrw" class="sref">add7     goto7	a href="+code=out" clas7="sre79>
649	/a>4seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=lad/a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codee" nam.14L604">
60ifffor_each_entry_ fa    class="sref">sctp_ad fa_>    e=sctp_addr_wq_ fa_>    _famk_bh	/a>(&	a href="+code=sct7c#L590" i714L590" class="line" nam714L5979IPV6	/a>)4seq	/a>, 	spa. class="string">"%pI4vali kaddr_entry	/a>vali codee" 1k_bh	/a>(&	a href="+code=sct7c>sock	/a7ef="+code=newsk" class="7ref">79*/	/spa.14
633	/a>        	>    ss="srtcode=spin_lock_bh" clas>    ss="srtcodn_lock_bh	/a>(&	a href="+code=sct7c#L592" i714L592" class="line" nam714L5979k	/a>)) {4
66m.14L="l_tai _rcu                     if (	a heq	/a>, 	spa. class="string">"%pI4p;	a href="+code=sctp_addr_ss="+code=addrw" class="sre>    ss="srtp_ae=spin_lock_bh" clas>    ss="srtp_addr_wck_sock" class="sref">sctp_bh_lo7k	/a>, 	a7href="+code=asoc" class=7sref"79/a>#endif4
672	tocol.c="li/a>             if (	a heq	/a>, 	spa. class="st="+code=sock_net"sref">addrw	/a>->	a href="+code=state" clasck_sock" class="sref">sctp_bh_lo7kef="+cod7CK_ZAPPED" class="sref">7OCK_Z79>
654	/a>4                           >    ss="srtcode=spin_lock_bh" clas>    ss="srtcodn_lock_bh	/a>(&	a href="+code=sct7c	a href=714L595" class="line" nam714L5979st	/a>) {4(	a h7ef="+code=newsk" class="7ref">79;	/spa.1,4)->714L597" class="line" nam714L5979tate	/a>,4
604ETDEV_DOWN>               ETDEV_DOWN
634id14L607" class="line" nam.14L607cif (!	a 7f="+code=s_addr" class="7ref">79     else4
633	/a>        	>    ss="srtcode=spin_lock_bh" clas>    ss="srtcodn_lock_bh	/a>(&	a href="+code=sct8c#L599" i814L599" class="line" nam814L5980val	/a>);4
635	/a>        	a href="+code=listeq	/a>, 	spa. class="st="+code=sock_net"r_each_entry_safe	/a>(	a hre_bh	/a>(&	a href="+code=sct8c1L599" i814L590" class="line" nam8ref">80continue;4    ss="srtp_addr_ef">temp	/a>, &	a href="+code=sctp_addr_wonf_splist	/a>, 	a href="+code=au8c#L601" i814L601" class="line" nam814L6080>sk	/a>);4seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=ladrw" class="sref">addrw	/a>->	a href="+code=a" class="sref">a	/a>.	a href="+code=sa" class="sref">sa class="sref">aode=sin_famcode=in6" class="sref">in6	/a>, 	a href="+8a>(	a hre8="+code=newsk" class="sr8f">ne80EW	/a>) {4seq	/a>, 	spa. class="string">"%pI4ef">AF_INET	/a> == 	a href="+code=lad/a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codee"=f_splist	/a>, 	a href="+code=au8	/a>(	a h8ef="+code=newsk" class="8ref">80T6	/a>) {4sctp_ad fa_>    e=sctp_addr_wq_ fa_>    _famwonf_splist	/a>, 	a href="+code=au8c5a>(	a h8eK_ZAPPED" class="sref">8"sref80>
654	/a>4
672	tocol.c="li/a>             if (	a heq	/a>, 	spa. class="st="+code=sock_net"sref">addrDEa>              sref">addrDEan_lock_bh	/a>(&	a href="+code=sct8c6a>(	a h8e4L595" class="line" nam8605	/80;	/spa.1,4f    D" ce" 1k_bh	/a>(&	a href="+code=sct8c#L606" i814L606" class="line" nam814L6080>
666	/a>4seq	/a>, 	spa. class="string">"%pI4vali kaddr_entry	/a>vali codee" 0f="+code=addrw" class="sref">add8c8L606" i814L597" class="line" nam8="sre80>sp	/a>);4
66m.14Lde _rcu                     if (	a heq	/a>, 	spa. class="string">"%pI4p;	a href="+code=sctp_addr_ck_bh	/a>(&	a href="+code=sct8c9L606" i81="+code=s_addr" class="8sref"80     else4sk	/a>))4(	a h814L610" class="line" nam814L6181continue;4sk	/a>,4                           >    ss="srtcode=spin_lock_bh" clas>    ss="srtcodn_lock_bh	/a>(&	a href="+code=sct8dr	/a> *	8 href="+code=addr" class8"sref81k	/a>)) {4f    D" c"f_splist	/a>, 	a href="+code=au8#L613" id84L613" class="line" nam.84L61381T6	/a>) {4
60k648	/rcunam.14L669">
66k648	/rcu/a>             if (	a heq	/a>, 	spa. class="st="+code=sock_net"rcunam.14L669">
66rcu/a> ck_bh	/a>(&	a href="+code=sct8d5a>(	a h8 	spa. class="comment">/8 Empt81>
654	/a>4(	a h84L615" class="line" nam.84L61581>
645	/a>4}4/* D8mp the v4 addr to the se8 file81>sp	/a>);4
604OTIFY_DONE>               OTIFY_DONE href="+code=addrw" class="sref">add8eturn 	a 8 href="+code=addr" class8"sref81     .1);4}4sin82>
610	/a>4sk	/	/a>4
6/L630et with anc#L6rol 68">
668 data                        	spa. class="c8#r	/a> *	814L622" class="line" nam814L6282addr		/a>4
668 is hrserved exclusivel63"line" nOOTBmo cces>-&g>	spa. class="comment"> * to cache it s8">sock	/a8 *	a href="+code=sk" cla8s="sr82wsk	/	/a>4   hrelass="sref">IS_ENABLED	/a>(	a hr8N_xmit	/a8(	a href="+code=sk" clas8="sre82>skb	/a>)4
666	/a>4add8c#L627" i814L627" class="line" nam814L6282OCAL	/a>)4->	a href="+code=a"_ae=spin_lock_bh" +code=a"_aCAL	/col.c#L672" id1fde=a" class="sref">aode=a"D" ce" nam.14L604">
60Pef">sa class="sref">aPde=sin_famk_bh	/a>(&	a href="+code=sct8cturn 	a 8	a href="+code=arg" clas8="sre82next	/a>;4
649	/a>4spam.14Le=spin_lock_bh" clasget_p">spam.14L/a>             if (Pef">sa	/a>.	a href="+cPde=sa_familylass="sref">IS_ENABLED	/a>(	a hr8# href="+8 href="+code=temp" class8"sref83   break;4aode=a"D" ce" nam.14L604">
60Pef">sa	/a>.	a href="+cPde=sa_familk_bh	/a>(&	a href="+code=sct8p_sock	/a8 *	a href="+code=sp" cla8s="sr8f">sp	/a>;4
632	/a>4
60ief=_ctl4L630_c#L6                	ief=_ctl4L630_c#L6  /a>                           ctl4L630e=spin_lock_bh" clasctl4L630="st="+code=sock_net"fde=a" class="sref">aode=a"D" ce_bh	/a>(&	a href="+code=sct8_addr_wq_8ock" class="sref">sctp_a8dr_wq83T6	/a>) {4asOCK_SEQPACKsa="st="+code=sock_net"IPPROTO_sref class="sref">aIPPROTO_srefddr_ss="+code=addrw" class (	a href="+code=ipv6_chk_addr" cla"k_bh	/a>(&	a href="+code=sct8pL624" id814L634" class="line" nam814L6383>in6	/a>;48ist	/a>) {44                        	spa. class="c8ndler: th8 first ent in wq %p 8s &qu8t;	/spa.1,4, 	spa. cerh hreehref="code=in6" ce53" class="linefde=a" class="sref">aode=a"D" ce"" nam.14L604">
60Pef">sa	/a>.	a href="+cPde=sa_famillass="sref">IS_ENABLED	/a>(	a hr8##L627" i8ref="+code=state" class=8sref"8state	/a>,4, 	spa. cerh hree" nam.14L604">
60ief=_ctl4L630_c#L6                	ief=_ctl4L630_c#L6  /a>                           ctl4L630e=spin_lock_bh" clasctl4L630="st="+code=sock_net"ref">sa class="sref">aode=sin_fame_bh	/a>(&	a href="+code=sct8_turn 	a 8ef="+code=addrw" class="8ref">83LAY	/a>);4asOCK_SEQPACKsa="st="+code=sock_net"IPPROTO_sref class="sref">aIPPROTO_srefddr_s_bh	/a>(&	a href="+code=sct8c#L639" i814L639" class="line" nam814L6384>sk	/a>))4(&	a href="+code=sct8f="+code=8ONFIG_IPV6" class="sref"8CONFI84wsk	/a>);4, 	a href="+code=au8n't h8ndle link local IPv6 add8essee8 */	/spa.14SCTP_DEBUG_PRINTK	/a>(8 href="+c8de=AF_INET6" class="sref8>AF_I8ET6	/a>) {4
60erheq	/a>, 	spa. cerh href="+code=addrw" class="sref">add8addr	/a> 8	a href="+code=in6" clas8="sre84NULL	/a>;4
645	/a>4add8 dler: th86_addr" class="sref">sin8_addr84wsk	/href="net/sctp/protocol.c#L605" 8DR_LINKLO8AL" class="sref">IPV6_AD8R_LIN84>
597ref="net/sctp/protocol.c#L605" 8 href="+c8de=free_next" class="sre8">fre84addr	rotocol.c#L668" id14L668"Registerm.552" clode=a" spam.14L func	/a>s. a>                        	spa. class="c8c#L649" i814L649" class="line" nam814L648">
649 href="net/sctp/pro clasregister_afe=spin_lock_bh" clasregister_af/a>  href="net/sctp/protocol.c#Lafe=spin_lock_bh" clasaf/a>     struct
	a hreffe=spin_lock_bh"af/a> lass="sref">IS_ENABLED	/a>(	a hr8 href="+c8de=sin6_addr" class="sre8">sin8_addr	nf_splist	/a>, 	a href="+code=au8ode=NULL"8class="sref">NULL	/a>, 08 == 08&&4 am.14L643">
643	/a>  +code=a" class="sref">a	/a>.	a href="onf_splist	/a>, 	a href="+code=au8de=SCTP_A8DR_NEW" class="sref">SCT8_ADDR8NEW	/a>) {4
60ref">sa class="sref">aode=sin_famid14L607" class="line" nam.14L608 href="+c8de=timeo_val" class="sre8">tim85T6	/a>) {4spam.14L/a> lass="sref">IS_ENABLED	/a>(	a hr8 ddr	/a> 814L654" class="line" nam814L6585>
654	/a>4add8o_xmit	/a8, trying %d sec late8\n&qu85st	/a>) {4spam.14L/a> e" nam.14L604">
60ffe=spin_lock_bh"af/a> f="+code=addrw" class="sref">add8odler: th8lass="sref">SCTP_ADDRESS8TICK_8ELAY	/a>);4j85tate	/a>,4
60ref">sa	/a>.	a href="+code=sa_familid14L607" class="line" nam.14L608 href="+c8lass="sref">SCTP_ADDRESS8TICK_85     else4spam.14L/a> lass="sref">IS_ENABLED	/a>(	a hr8href="+co8e=timeo_val" class="sref8>time8_val	/a>);4add8660">
66a8ua>                     8     8    break;4spam.14L/a> e" nam.14L604">
60ffe=spin_lock_bh"af/a> f="+code=addrw" class="sref">add8line" nam814L661">
661	/a>        8     8         }4
662	/a>8     86EW	/a>) {4
6686T6	/a>) {4add86ddr	/a> 8ist" class="sref">auto_a8conf_86NULL	/a>;4sock	/a8 *	a href="+code=sk" cla8s="sr8f">sk	/a>;4
666	/a>4aINIT_LIST_HEAD                     if (	fe=spin_lock_bh"af/a> am.14L643">
643	/a> p;	a href="+code=sctp_addr_ck_bh	/a>(&	a href="+code=sct8opt2sk	/a8(	a href="+code=sp" clas8="sre86OCAL	/a>)4->	a href=proto="l_tai nam.14L669">
66m.14L="l_tai                      if (	fe=spin_lock_bh"af/a> am.14L643">
643	/a> p;	a href="+code=sctp_addr_ s="+code=addrw" class="sref">a" ca>.	a a href="+code=time="sref">a" ca>.	a a hddr_ck_bh	/a>(&	a href="+code=sct8ohref="+c8ignore bound-specific en8point86     else4
67alua8                        8     87wsk	/a>);4sk	/	/a>4s3"linmanipulat_DEBa particularoL552" c	spa. class="comment"> * to cache it s8     if (8a 1&("sreit_da4e2 1ntinu84L57287addr		/a>4 * to cache it s8c#L573" i814L573" class="line" nam814L5787wsk	/	/a>4     struct
	a hre clasget_a">spam.14Le=spin_lock_bh" clasget_a">spam.14L/a>             if ("+code=a"_ae=spin_lock_bh" +code=a"_aCAL	/col.c#L672" id1fde=a" class="sref">aode=a"D" class="sref">IS_ENABLED	/a>(	a hr8buff	/a> 8	a href="+code=skb" clas8="sre87>skb	/a>)4
666	/a>4aode=a"D" clonf_splist	/a>, 	a href="+code=au8/a>)->8a href="+code=tos" class8"sref87tate	/a>,4
60ref">sa class="sref">aode=sin_famid14L607" class="line" nam.14L608#L578" id84L578" class="line" nam.84L57887     else4
60 clasaf_v4>spam.14Le=spin_lock_bh" clasaf_v4>spam.14L/a> k_bh	/a>(&	a href="+code=sct8c#L579" i814L579" class="line" nam814L57880ate	/a>,4
60ref">sa	/a>.	a href="+code=sa_familid14L607" class="line" nam.14L608c>
67alua8he socket returned by ac8ept()88   break;4
60 clasaf_v6>spam.14Le=spin_lock_bh" clasaf_v6>spam.14L/a> k_bh	/a>(&	a href="+code=sct8cine" nam8 *	a href="+code=sk" cla8s="sr88amp;&4 *	8 href="+code=asoc" class8"sref88*/	/spa.14                	a href="+code=newsk" class="sref">new83#L573" i84L583" class="line" nam.84L58388wsk	/a>);4sk88">sk	/a>;4n88>
616	/a>4)->814L587" class="line" nam814L5888tate	pa.144  charo   struct
	a hremsgne" e=spin_lock_bh"msgne" /a> ,a hre   struct
	a href="+_lene=spin_lock_bh"a="+_lenD" class="sref">IS_ENABLED	/a>(	a hr8 L578" id8ref="+code=newsk" class=8sref"88LAY	/nf_splist	/a>, 	a href="+code=au8     goto8	a href="+code=out" clas8="sre89>
649	/a>4
63ine=spin_lock_bh"l630">
63in/a>     struct
	a hre ine=spin_lock_bh"lin/a> f="+code=newsk" class="sref">new8c#L590" i814L590" class="line" nam814L5989wsk	/a>);489*/	/spa.14    14L650">
65alua>       l630">
63ine=spin_lock_bh"l630">
63in/a>   )  struct
	a hremsgne" e=spin_lock_bh"msgne" /a> f="+code=newsk" class="sref">new8c.	/a> *	814L592" class="line" nam814L5989k	/a>)) {4
63ine=spin_lock_bh"l630">
63in/a> ck_bh	/a>(&	a href="+code=sct8k	/a>, 	a8href="+code=asoc" class=8sref"89/a>#endif4 am.14L643">
643	/a>   clode=a" class="sref">a	 clode=a"D" ce" nam.14L604">
60ref">sa class="sref">aode=sin_famk_bh	/a>(&	a href="+code=sct8kef="+cod8CK_ZAPPED" class="sref">8OCK_Z89>
634	/a>4             if ("ine=spin_lock_bh"lin/a> am.14L643">
643	/a>   clzero class="sref">a	 clzero/a> ,a0, sizeof            if ("ine=spin_lock_bh"lin/a> am.14L643">
643	/a>   clzero class="sref">a	 clzero/a> )ck_bh	/a>(&	a href="+code=sct8k	a href=814L595" class="line" nam814L5989st	/apa.1489
626	/a>}4
567	/a>4                        	spa. class="c8cif (!	a 8f="+code=s_addr" class="8ref">89     pa.144  href="net/sctp/protocol.c#Lulpave68e=spin_lock_bh" clasulpave68/a>     struct
	a hreave68e=spin_lock_bh"ave68/a> , charo   struct
	a hremsgne" e=spin_lock_bh"msgne" /a> ,                 	spa. class="c9c#L599" i914L599" class="line" nam914L5990val	/a>);4IS_ENABLED	/a>(	a hr9c1L599" i914L590" class="line" nam9ref">90addr	nf_splist	/a>, 	a href="+code=au9c#L601" i914L601" class="line" nam914L6090>sk	/a>);4
63ine=spin_lock_bh"l630">
63in/a>     struct
	a hre ine=spin_lock_bh"lin/a> ,    struct
	a hre infrome=spin_lock_bh"linfrom_famk_bh	/a>(&	a href="+code=sct9a>(	a hre9="+code=newsk" class="sr9f">ne90asoc	="+code=addrw" class="sref">add9	/a>(	a h9ef="+code=newsk" class="9ref">90T6	/a>) {4 lonf_splist	/a>, 	a href="+code=au9c5a>(	a h9eK_ZAPPED" class="sref">9"sref90>
654	/a>4e=spin_lock_bh" clasasl63i1	/a>/a>     struct
	a hrefscoe=spin_lock_bh"fsco_famk_bh	/a>(&	a href="+code=sct9a6a>(	a h9e4L595" class="line" nam9605	/90">sk	/a>;4
666	/a>4
60ave68e=spin_lock_bh"ave68/a> ring">"%pI4escoe=spin_lock_bh"fsco_famk_bh	/a>(&	a href="+code=sct9a8L606" i914L597" class="line" nam9="sre90>sp	/a>);4    struct
	a hremsgne" e=spin_lock_bh"msgne" /a> ,a  struct
	a href="+_lene=spin_lock_bh"a="+_lenD" clk_bh	/a>(&	a href="+code=sct9a9L606" i91="+code=s_addr" class="9sref"90     else4    14L650">
65alua>       l630">
63ine=spin_lock_bh"l630">
63in/a>   )  struct
	a hremsgne" e=spin_lock_bh"msgne" /a> f="+code=newsk" class="sref">new9#L609" id94L609" class="line" nam.94L60991>sk	/a>))4"%pI4peere=spin_lock_bh"peer_famf="+code=v4" claprimarys="sref">v4	/a>.	a hprimarys="sr_famf="+code=v4" cla/a>                	a hf="+code=newsk" class="sref">new9#1L599" i914L610" class="line" nam914L6191continue;4 am.14L643">
643	/a>   clpor8e=spin_lock_bh"  clpor8D" ce" L643">
643	/a> htonhref="+code=timehtonh/a>    struct
	a hre	scoe=spin_lock_bh"fsco_famring">"%pI4peere=spin_lock_bh"peer_famf="+code=v4" clapor8e=spin_lock_bh"por8D" clk_bh	/a>(&	a href="+code=sct9##L601" i9ap address, empty for v49famil91">sk	/a>,4 am.14L643">
643	/a>   class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codee" nam.14L604">
60 infrome=spin_lock_bh"linfrom_famam.14L643">
643	/a>   class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codek_bh	/a>(&	a href="+code=sct9#>(	a hre9 href="+code=addr" class9"sref91k	/a>)) {4/9 Empt91>in6	/a>;4
645	/a>4                        	spa. class="c9d#L606" i914L616" class="line" nam914L6191
626	pa.144  href="net/sctp/protocolk_buffe=spin_lock_bh" k_buff/a>     struct
	a hre kbe=spin_lock_bh" kb/a> , charo   struct
	a hremsgne" e=spin_lock_bh"msgne" /a> ,e hre   struct
	a hrelene=spin_lock_bh"lenD" class="sref">IS_ENABLED	/a>(	a hr9ent">/* D9mp the v4 addr to the se9 file91>sp	/nf_splist	/a>, 	a href="+code=au9eturn 	a 9 href="+code=addr" class9"sref91LAY	/a>);4 lonf_splist	/a>, 	a href="+code=au9#L619" id94L619" class="line" nam.94L61992>sk	/a>))4v4	/a>.	a hr.c#hsr/a>     struct
	a hre L633" id14L633" chcodee" nam.14L604">
60 clashsref">v4	/a>.	a hr.c#_hsr/a>             if ("kbe=spin_lock_bh" kb/a> lk_bh	/a>(&	a href="+code=sct9a href="+9ode=sin_addr" class="sre9">sin92continue;4
63ine=spin_lock_bh"l630">
63in/a>     struct
	a hre ine=spin_lock_bh"lin/a>    14L650">
65alua>       l630">
63ine=spin_lock_bh"l630">
63in/a>   )  struct
	a hremsgne" e=spin_lock_bh"msgne" /a> f="+code=newsk" class="sref">new9#L621" id94L621" class="line" nam.94L62192">sp	/a>;4    struct
	a hremsgne" e=spin_lock_bh"msgne" /a> ,a  struct
	a hrelene=spin_lock_bh"lenD" clf="+code=newsk" class="sref">new9#L613" id9 *	a href="+code=sk" cla9s="sr92T6	/a>) {4 am.14L643">
643	/a>   clpor8e=spin_lock_bh"  clpor8D" ce" L643">
643	/a>  L633" id14L633" chcodeam.14L643">
643	/a>  ourc e=spin_lock_bh" ourc /a> f="+code=newsk" class="sref">new9#5a>(	a h94L624" class="line" nam.94L62492>
654	/a>4 am.14L643">
643	/a>   class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codee" nam.14L604">
60iashsref">v4	/a>.	a hi#_hsr/a>             if ("kbe=spin_lock_bh" kb/a> lam.14L643">
643	/a>  +"sref">v4	/a>.	a hrf="+codek_bh	/a>(&	a href="+code=sct9N_xmit	/a9(	a href="+code=sk" clas9="sre92>
645	/a>4
597ref="net/sctp/protocol.c#L605" 9cturn 	a 9	a href="+code=arg" clas9="sre92addr	rotocol.c#L668" id14L668"Do we suppor8 t cl AF? a>                        	spa. class="c9#L629" id94L629" class="line" nam.94L62993>
649	/a>4suppor8e kaddr_entry	/a> class="t_a">suppor8e /a>             if ("+code=a"_ae=spin_lock_bh" +code=a"_aCAL	/col.c#L672" id1fde=a" class="sref">aode=a"D" c, href="net/sctp/protocol.c#L630"kaddr_entry	/a> clasL630="st    struct
	a hre ach_entry_safe	/spD" class="sref">IS_ENABLED	/a>(	a hr9# href="+9 href="+code=temp" class9"sref93addr	nf_splist	/a>, 	a href="+code=au9p_sock	/a9 *	a href="+code=sp" cla9s="sr93*/	/spa.14                        	spa. class="c9c#L632" i914L632" class="line" nam914L639">
632	/a>4sa class="sref">aode=sin_famc"" nam.14L604">
60fde=a" class="sref">aode=a"D" ck_bh	/a>(&	a href="+code=sct9_addr_wq_9ock" class="sref">sctp_a9dr_wq93T6	/apa.14in6	/a>;493>
645	/a>4                        	spa. class="c9cL626" id9 first ent in wq %p 9s &qu937
649	/a>4v4	/a>.	a hrclass="t_cmps="sr/a>  const un/a> et/sctp/protocol.c#La"sref">v4	/a>.	a hrclasf="+        struct
	a href="+1ef">v4	/a>.	a hf="+1/a> ,                 	spa. class="c9##L627" i9ref="+code=state" class=9sref"9state	/a>,4v4	/a>.	a hrclasf="+        struct
	a href="+2ef">v4	/a>.	a hf="+2/a> ,                 	spa. class="c9#turn 	a 9ef="+code=addrw" class="9ref">93LAY	/a>);4 clasL630="st    struct
	a hreopae=spin_lock_bh"opaD" class="sref">IS_ENABLED	/a>(	a hr9c#L639" i914L639" class="line" nam914L6394>sk	/nf_splist	/a>, 	a href="+code=au9f="+code=9ONFIG_IPV6" class="sref"9CONFI941/	/spa.14                        	spa. class="c9ow we sen9 an ASCONF for each asso9iatv39 */	/spa.14v4	/a>.	a hf="+1/a> am.14L643">
643	/a>  +e=spin_lock_bh" + href="+code=v4" clas+code=a" class="sref">a	/a>.	a href="!" nam.14L604">
60f="+2ef">v4	/a>.	a hf="+2/a> am.14L643">
643	/a>  +e=spin_lock_bh" + href="+code=v4" clas+code=a" class="sref">a	/a>.	a href=lass="sref">IS_ENABLED	/a>(	a hr9c#L632" i9ndle link local IPv6 add9essee9 */	/spa.14add9 href="+c9de=AF_INET6" class="sref9>AF_I94T6	/a>) {4
66hton /a>             if (IN>addrANto_jiffies" clasIN>addrANt/a> lo"" nam.14L604">
60f="+1ef">v4	/a>.	a hf="+1/a> am.14L643">
643	/a> /a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codee||="+code=addrw" class="sref">add9 L624" id9	a href="+code=in6" clas9="sre94>
654	/a>4
66hton /a>             if (IN>addrANto_jiffies" clasIN>addrANt/a> lo"" nam.14L604">
60f="+2ef">v4	/a>.	a hf="+2/a> am.14L643">
643	/a> /a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codelass="sref">IS_ENABLED	/a>(	a hr9c_xmit	/a914L645" class="line" nam914L6494st	/a>) {4(&	a href="+code=sct9 dler: th96_addr" class="sref">sin9_addr94;	/spa.1,4v4	/a>.	a hf="+1/a> am.14L643">
643	/a> /a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codee"" nam.14L604">
60f="+2ef">v4	/a>.	a hf="+2/a> am.14L643">
643	/a> /a>                	a href="+code=saddr" class="sref">saddr	/a>->	a href="+code=v4" class="sref">v4	/a>.	a href="+codelass="sref">IS_ENABLED	/a>(	a hr9c#L627" i9AL" class="sref">IPV6_AD9R_LIN94tate	/a>,4(&	a href="+code=sct9 turn 	a 9de=free_next" class="sre9">fre94next	/a>;4sk	/a>))4add9 href="+c9de=sin6_addr" class="sre9">sin9_addr	pa.14NULL	/a>, 09 == 095">sp	/a>;4SCT9_ADDR95addr		/a>4
6 looks bindable. rCneto4 hac	spa. class="comment"> * to cache it s9 href="+c9de=timeo_val" class="sre9">tim95wsk	/	/a>4 * to cache it s9 ddr	/a> 914L654" class="line" nam914L6595>
654	/a>44  href="net/sctp/protocol.c#L630"kaddr_entry	/a> clasL630="st    struct
	a hreopae=spin_lock_bh"opaD" c, un/a> et/sctp/protocol.c#La"sref">v4	/a>.	a hrclasf="+        struct
	a href="+ef">v4	/a>.	a hf="+codelass="sref">IS_ENABLED	/a>(	a hr9odler: th9lass="sref">SCTP_ADDRESS9TICK_9ELAY	/nf_splist	/a>, 	a href="+code=au9oR_LINKLO9"+code=jiffies" class="s9ef">j95>sp	/a>);4
60rclasv4_availableef">v4	/a>.	a hrclasv4_available/a>             if (	a heq	/a>, 	spa. class="st="+code=sock_net"opae=spin_lock_bh"opaD" clf="+code=addrw" class="sref">add9 turn 	a 9lass="sref">SCTP_ADDRESS9TICK_95     .1);4
66a9ua>                     9     96>
610	/a>4
6 looks sendable. rCneto4 hac already                        	spa. class="c9line" nam914L661">
661	/a>        9     96>sk	/	/a>4 * to cache it s9 class="l9ne" nam.14L662">
662	/a>9     96addr		/a>4
6696T6	/a	/a>4  href="net/sctp/protocol.c#L630"kaddr_entry	/a> clasL630="st    struct
	a hreopae=spin_lock_bh"opaD" c, un/a> et/sctp/protocol.c#La"sref">v4	/a>.	a hrclasf="+        struct
	a href="+ef">v4	/a>.	a hf="+codelass="sref">IS_ENABLED	/a>(	a hr96ddr	/a> 9ist" class="sref">auto_a9conf_96NULL	nf_splist	/a>, 	a href="+code=au9">sock	/a9 *	a href="+code=sk" cla9s="sr96>
645	/a>4 "linINITnand INIT-ACK                        	spa. class="c9undall	/a9(	a href="+code=sk" clas9="sre97	/spa	/a>4	spa. class="comment"> * to cache it s9">
67alua9                        9     97>
610	/a>4sk	/	/a>4 clasL630="st    struct
	a hreopae=spin_lock_bh"opaD" c,                 	spa. class="c9"class="l9a 1&("sreit_da4e2 1ntinu94L57297EW	/a>) {4IS_ENABLED	/a>(	a hr9c#L573" i914L573" class="line" nam914L5797wsk	/nf_splist	/a>, 	a href="+code=au9k_asconf_9plicit Congesti3. Notifi9atv3.97>
634	/a>4
60sref"PARAM_IPV4">addESSref="+code=timesref"PARAM_IPV4">addESSD" ck_bh	/a>(&	a href="+code=sct9buff	/a> 9	a href="+code=skb" clas9="sre97>
645	/a>4)->9a href="+code=tos" class9"sref97>
597ref="net/sctp/protocol.c#L605" 9#L578" id94L578" class="line" nam.94L57897addr	rotocol.c#L668" id14L668"Wrapperlrout="l3e"atmcallocole ip transmitlrout="l. a>                        	spa. class="c9c#L579" i914L579" class="line" nam914L5798>
649	/a>4
60inss="lif="+code=timeinss="
645	 href="net/sctp/pro clasv4_xm_ae=spin_lock_bh" clasv4_xm_a/a>  href="net/sctp/protocolk_buffe=spin_lock_bh" k_buff/a>     struct
	a hre kbe=spin_lock_bh" kb/a> ,                 	spa. class="c9c>
67alua9he socket returned by ac9ept()98   break;4IS_ENABLED	/a>(	a hr9cine" nam9 *	a href="+code=sk" cla9s="sr98amp;&nf_splist	/a>, 	a href="+code=au93.	/a> *	9 href="+code=asoc" class9"sref98*/	/spa.14s="t_s30"="st    struct
	a hres="tkaddr_entry	/a>s="tcodee"net/sctp/protocos="t_s"kaddr_entry	/a>s="t_sk/a>             if ("kbe=spin_lock_bh" kb/a> am.14L643">
643	/a>  "kaddr_entry	/a> dn_lock_bh	/a>(&	a href="+code=sct93#L573" i94L583" class="line" nam.94L58398wsk	/_bh	/a>(&	a href="+code=sct93_asconf_9=GFP_KERNEL" class="sref9>GFP_98>
634	/a>4   p/protocol.c#L637" id14L63%s: skb:%p, len:%d, src:%pI4, dst:%pI4EBUG_PRINTK" cl,                 	spa. class="c9cuff	/a> 9+code=sk_prot" class="sr9f">sk98;	/spa.1,4 ,            if ("kbe=spin_lock_bh" kb/a> am.14L643">
643	/a> lene=spin_lock_bh"lenD" c,                 	spa. class="c9cL576" id9"+code=newinet" class="s9ef">n98>
666	/a>4
643	/a> f nam.14L669">
66fl href="+code=v4" claunam.14L669">
66u href="+code=v4" claipa>              ipa href="+code=v4" clas+"sref">v4	/a>.	a hrf="+code,                 	spa. class="c9ca>)->914L587" class="line" nam914L5898tate	/a>,4
643	/a> f nam.14L669">
66fl href="+code=v4" claunam.14L669">
66u href="+code=v4" claipa>              ipa href="+code=v4" clad+"sref">v4	/a>.	a hdf="+codelk_bh	/a>(&	a href="+code=sct93L578" id9ref="+code=newsk" class=9sref"98next	/a>;4s="tcodering">"%pI4pmtudisoe=spin_lock_bh"pmtudisocodee"net/sctp/protocotranspor8e=spin_lock_bh"transpor8="stam.14L643">
643	/a> param_flaghref="+code=timeparam_flaghcodeen6" ce53" class="lineSPf"PMTUD_ENABLEref="+code=timesPf"PMTUD_ENABLEcodee?/a>;4aIf"PMTUDISC_DONaD" ck_bh	/a>(&	a href="+code=sct9c>sock	/a9ef="+code=newsk" class="9ref">99">sp	/a>;4)) {4             if (sref"MIB_OUTsrefPACKSref="+code=timesref"MIB_OUTsrefPACKScodelk_bh	/a>(&	a href="+code=sct9k	/a>, 	a9href="+code=asoc" class=9sref"99/a>#endif4
60ip_queue_xm_ae=spin_lock_bh"ip_queue_xm_a/a>             if ("kbe=spin_lock_bh" kb/a>  s="+code=addrw" classtranspor8e=spin_lock_bh"transpor8="stam.14L643">
643	/a> f nam.14L669">
66fl hrelk_bh	/a>(&	a href="+code=sct9k_asconf_9CK_ZAPPED" class="sref">9OCK_Z99*/	/spa.14sk	/a>;4997
649	/a>4  et/sctp/protocol.c#Laf_s="tkaddr_entry	/a>l.c#Laf_s="tD" ck_bh	/a>(&	a href="+code=sct9ca>)->914L597" class="line" nam914L5999>
597ref="net/sctp/protocol.c#L605" 9cif (!	a 9f="+code=s_addr" class="9ref">99     pa.14  et/sctp/protocol.c#Lpf_s="tkaddr_entry	/a>l.c#Lpf_s="tD" ce"nnf_splist	/a>, 	a href="+code=au10c#L599" i10c#L5code=s_addr" class="10c#L>10c#a>#endif4 e" nam.14L604">
60 class="t_ave68_msgne" e=spin_lock_bh" clasief=_ave68_msgne" /a> ,  refe>_splist	/a>, 	a href="+code=au10c1L599" i10c4L590" class="line" nam10c4L>10c1a>#endif4 
60 class="t_skb_msgne" e=spin_lock_bh" clasief=_skb_msgne" /a> ,                 	spa. class="c10c2L599" i10cf="+code=newsk" class="10cf=>10c2a>#endif4suppor8e kaddr_entry	/a>a">suppor8e /a> a " nam.14L604">
60 class="t_a">suppor8e kaddr_entry	/a> class="t_a">suppor8e /a> ,                 	spa. class="c10c3L599" i10c4L592" class="line" nam10c4L>10c3a>#endif4v4	/a>.	a hcmps="sr/a> if4
60 class="t_cmps="sref">v4	/a>.	a hrclass="t_cmps="sr/a> ,                 	spa. class="c10c4L599" i10cref="+code=asoc" class=10cre>10c4a>#endif4 
60 class="t_bind_verif" class="line" nam.14s="t_bind_verif"/a> ,                 	spa. class="c10c5L599" i10cK_ZAPPED" class="sref">10cK_>10c5a>#endif4 
60 class="t_send_verif" class="line" nam.14s="t_send_verif"/a> ,                 	spa. class="c10c6L599" i10c4L595" class="line" nam10c4L>10c6a>#endif4
60 class="t_suppor8e sf="+href="+code=time="sres="t_suppor8e sf="+h/a> ,                 	spa. class="c10c7L599" i10cf="+code=newsk" class="10cf=>10c7a>#endif4c#L6  _accept_s"/a>  " nam.14L604">
60 clasv4_c#L6  _accept_s"kaddr_entry	/a> clasv4_c#L6  _accept_s"/a> ,                 	spa. class="c10c8L599" i10c4L597" class="line" nam10c4L>10c8a>#endif4
63v4maach_entry_safe	/a>
63v4maaa>#endif4" nam.14L604">
60 clasv4_a>
63v4maach_entry_safe	/ clasv4_a>
63v4maa/a> ,                 	spa. class="c10c9L599" i10c="+code=s_addr" class="10c=">10c9a>#endif4a"  break;4104L/	/spk_bh	/a>(&	a href="+code=sct1041L599" i1014L610" class="line" nam1014L>104wsk	/a>);4104>sk	/	/a>4
6 ">
i	/a>/dele	/a> ave68s. ra>                        	spa. class="c1043L599" i10 href="+code=addr" class10 hr>1043    pa.14notifier_bl30"/a>  et/sctp/protocol.c#Ls="t">
6_notifierref="+code=time="sres="t">
6_notifierD" ce"nnf_splist	/a>, 	a href="+code=au1014L599" i104L613" class="line" nam.104L6>1044a>#endif4notifier_call/a>  " nam.14L604">
60 class="t">
6_ave68e=spin_lock_bh" class="t">
6_ave68/a> ,                 	spa. class="c1015L599" i10 	spa. class="comment">/10 	s>1045/	/spk_bh	/a>(&	a href="+code=sct1046L599" i104L615" class="line" nam.104L6>104">sk	/a>;4104>
616	/a>4104tate	pa.14  et/sctp/protocos="t_seqpa30et_ophref="+code=times="t_seqpa30et_ophD" ce"nnf_splist	/a>, 	a href="+code=au1019L599" i10 href="+code=addr" class10 hr>1049a>#endif4aode=a"D" ceak;4sa class="sref">aPde=sin_fame_bh	/a>(&	a href="+code=sct102#L599" i104L619" class="line" nam.104L6>104La>#endif4                        	spa. class="c1042L599" i104L621" class="line" nam.104L6>1042a>#endif41043a>#endif41044a>#endif4
60 630_no_L630etpairref="+code=time=630_no_L630etpair_fame_bh	/a>(&	a href="+code=sct1025L599" i104L624" class="line" nam.104L6>1045a>#endif4acceptD" ceak;4(&	a href="+code=sct1026L599" i10(	a href="+code=sk" clas10(	a>1046a>#endif4  ssssss	/a>4                        	spa. class="c1027L599" i104L626" class="line" nam.104L6>1047a>#endif4poll  break;4l.c#Lpoll_fame_bh	/a>(&	a href="+code=sct1028L599" i1014L627" class="line" nam1014L>1048a>#endif4ioctl  break;4(&	a href="+code=sct1029L599" i10	a href="+code=arg" clas10	a >1049a>#endif4(&	a href="+code=sct103#L599" i104L629" class="line" nam.104L6>104La>#endif4                        	spa. class="c1031L599" i10 href="+code=temp" class10 hr>1041a>#endif4#endif4
60 630_cneto4_setL630opae=spin_lock_bh"s630_cneto4_setL630opa/a> ,  /a>41042a>#endif4#endif4
60 630_cneto4_getL630opae=spin_lock_bh" 630_cneto4_getL630opa_fame_bh	/a>(&	a href="+code=sct1033L599" i1014L632" class="line" nam1014L>1043a>#endif4sctp_a10ock>1044a>#endif4(&	a href="+code=sct1035L599" i1014L634" class="line" nam1014L>1045a>#endif4#endif4k;4(&	a href="+code=sct1036L599" i10ref="+code=list" class="10ref>104otoco 630_no_mmaach_entry_safeT3dpf="+code=v4" clapoD0,pdr" class="sre9">sin9_addr	pa.14sin9href="net/sctp63dhref="+cos="sref">v4	/a>.	a href="+codee||="+code=addrw" class="sref">add9 L624" id9	a href="+code=in6" clas9="sre94>
654	/a>4 ,  refe>1netpathref="+code	/a>(&	a href="+conetpathr" i10 *	a href="+code=sp" cla10 *	>1netpathr" i10 *	a href="+code>))4IS_ENABLED	_aclafe>/aor9c#L5)-&ifs="t_sendmsg class="line" ns="t_s4ck_bh"s630SCONF for each asso9iatv30SCO>/ao1616	/a>4a	/a>.	a href="!30="s>/aof (sref"MIB_OUTsrefPACKSref="+code=t/aondmsg_fameLhton nam.14L669">
66htomeLht>/aos="sre9">tim95wsk	/	/a>4 .	a hr4L643">
plicit am.14L604">
60 630_cneto4_setL630opae=spin_l4 630_cneto0f="+1ef">v4	/a>.	a hf="to0f=>/aoreopae=spin_f ("kbe=spin_lock_bh" kb/a>630opsw  break;4sa class="sref">aPde=sin_fame4aa_fame_bh0f="+2ef">v4	/a>.	a hf="bh0f=>/ao599" i10ref="+code=list" clase97>et/sctp/protocol97>99" i10ref=v4	/a>.	a hf=""sLf=>/aoode=addrw" class="sref">add9 "line" nlass10 hr>1049a>#end" nendif4   lass10 hr>1049aIPPROTO_>   otocos="t_sendmsg class="line" ns="t_s41049a>#endsaddr	/a>->	a href="+ndsad>/ao1014L627" class="line" nam1014linlass10 hr>1049a>#en99" i10ref=1049a i1014linotocos="t_sendmsg class="line" ns="t_s4fame_bh	/atocol9c#L649" i914L649" /atoc>/ao" i10	a href="+code=arg" clasf">aode=a"D" ceak;de=v4" ci10ref=aode=a"D" ceak;4/aoe=sct103#L599" i104L629" clas9cache" class="line" nam.ache" endif4NU/ade=>/adeL619" class="line" nam.104L6>ine" nam914L5999   4SCT9_ADDR9530cla>/ad1616	/a>4
6 looks bindable. rCne30>
6>/ad2eopae=spin_f ("kbe=spin_lock_bh" kb/a>630opsw  break;4sa class="sref">aPde=sin_fame5ndmsg_famet s9 href="+c9de=timeo_vmet s>/ad34L599" i10ock" class="sref">e97>et/sctp/protocol97>99" i10ref=/adf="+code=sct1035L599" i1014L6"line" nlass10 hr>1049a>#end" nendif4   lass10 hr>1049aIPPROTO_>   otocos="t_sendmsg class="line" ns="t_s5aa_fame_bhctp/pro class="t_bind_vebhctp>/ad599" i10ref="+code=list" clas4linlass10 hr>1049a>#en99" i10ref=1049a i1014linotocos="t_sendmsg class="line" ns="t_s5f="+cos="s	/a> clasL630="st    str"s	/a>/adode=addrw" class="sref">add9 f">aode=a"D" ceak;de=v4" ci10ref=aode=a"D" ceak;4/ad" i10	a href="+code=arg" clas>ine" nam914L5999   4/ad9616	/a>4
6630"c9>/a      9     96>sk	/	/a>4
60 630_cneto4_setL630opae=spin_l6ck_bh" 630	/a>41049anet/630op" n#endif41049a4" cl630op" nv4" claPef">sa class="sref">aPde=sin_fame6ndmsg_famectp/pro class="t_send_vemectp>/a 34L599" i10ock" class="sref">handl0ode>1041a>#endifhandl0o4L599" i1=v4" claLhutdowne=spinrcvlass10 hr>1049a4" clrcvv4" os="t_sendmsg class="line" ns="t_s6 630_cneto	/a> clasL630="st    strto	/a>/a f="+code=sct1035L599" i1014L6err_handl0ode>1041a>#endiferr_handl0o	/a>(&	a href="+code=scv4_errlass10 hr>1049a4" clv4_errv4" os="t_sendmsg class="line" ns="t_s6aa_fame_bh#L666" i914L666" class="bh#L6>/a 599" i10ref="+code=list" clasm.apolica>#endif4/a 6616	/a>4/a  class="8ref">89     pa.1499     pa.14sa class="sref">aPde=sin_fame7shutdown/a               9     97>/a   >/a  de=addrw" class="sref">add9 L	/a>.	a href=lass="sref">IS_ENABLED	/ci10ref=add9 4
67alua9he socket retura href="/ci10ref=add9 4" clv4_>
67alua9he socket returned by ac9eos="t_sendmsg class="line" ns="t_s7ck_bh" 63030"kaddr_entry	/a> clasL3030">/a mp;	a href="+code=sct1033L599ION isBa problemra>                        	spa. class="c1032L59iphref="+code=sp" cla10 *	>1iphref="+codeac9eos="t_sendmsg class="line" ns="t_s7ndmsg_fameass="sref">IS_ENABLED	/ameass>/a 34L599" i10ock" class="sref">" i1014L632" class="line" nam1014L>1043a>#endif4
60stode[>/a f="+code=sct1035L599" i1014L6gdif4s32" class="line" naf4s35a>#endif4(&	abhdES>/a 599" i10ref="+code=list" clasgdifpin_lock_bh"transporgdifpin_lef="/ci10ref=add9 4" clv4_gdifpin_lock_bh"transpor4" clv4_gdifpin_lac9eos="t_sendmsg class="line" ns="t_s7f="+cos="sa>)->9a href="+code=t"sa>)>/a ode=addrw" class="sref">add9 b_ms     sctp" naendmsg  brenems     sctp4L599" i1=v4" claLhutdowne=spin#end_ms     sctp" naendmsg  bre=spin#end_ms     sctpac9eos="t_sendmsg class="line" ns="t_s71049a>#endlass="line" nam.94L57897ndlas>/a 1014L627" class="line" nam101k_bh_nf_9CK_ZAPPED" clak_bh_nf_as9="sre94>
654	/a>4/a " i10	a href="+code=arg" clas>_bh_nf9CK_ZAPPED" clak_bh_nf5a>#endif4_bh_nf9CK_ZAPPED" claaeturned>_bh_nfac9eos="t_sendmsg class="line" ns="t_s7es="t_tp_aL579" class="line" nam91_aL57>/a e=sct103#L599" i104L629" clasto_nffpin_lock_bh"transporto_nffpin_l99" i10ref=_bh_104L6break9CK_ZAPPED" clak_bh_104L6breakendif4_bh_104L6break9CK_ZAPPED" claaeturned>_bh_104L6breakac9eos="t_sendmsg class="line" ns="t_s8ck_bh" 630	/a>s="t_s30"="st    str30	/a>/apmp;	a href="+code=sct1033L599to_104L6break9CK_ZAPPED" clato_104L6break4L599" i1=v4" claLhutdowne=spin#ento_104L6break9CK_ZAPPED" cla=spin#ento_104L6breakac9eos="t_sendmsg class="line" ns="t_s8ndmsg_fame="t_s"kaddr_entry	/a>s="me="t>/aplass="c10c4L599" i10cref="+code=asoc" class=10cre>10c4a>#endif4 totim>/apf="+code=sct1035L599" i1014L6      aliclass="line" nam1     alic1043a>#endif4  #endif4  /apode=addrw" class="sref">add9 is an href=lass="srefis an 1043a>#endifndif4  /ap1014L627" class="line" nam101rn 	a 9lass="sref">SCTP_TICK_95     .endifndif4 SCTP_ADDRESS9TICK_95     .os="t_sendmsg class="line" ns="t_s8fame_bh	/acode=v4" claunam.14L669"/acod>/ap" i10	a href="+code=arg" classd_mass="sref">SCTP_ADoplass="c1027L599"if4 SCTP_AD "%pI4pmtud_aing>/ape=sct103#L599" i104L629" clas" naiieeeeeeeeeeeeehref=naiie5a>#endif4/ar8de=addrw" class="sref">add9 is 4L643">
643	/a>  is 4Lass="c1027L599"if4 
643	/a>  a> aIf"PMTUDISC_DONaD"30ref>/arref="net/sctp/prIP_SOLrIP_OPTIOq_dus="line" nbind_verif"/aOq_dus="line4L599" i1=v4" claLhutdowne=spin#enIOq_dus="line" nbind_verif"/aspin#enIOq_dus="line   .os="t_sendmsg class="line" ns="t_s9ck_bh" 630esref"INC_STATS/a>      30esr>/armp;	a href="+code=sct1033L599ecn_cap 9lass="sref">SCTP_ecn_cap 9la99" i10ref=SCTP_aeturnedecn_cap 9la   .os="t_sendmsg class="line" ns="t_s9ndmsg_fame_OUTsrefPACKScodelk_bh	/me_OU>/arlass="c10c4L599" i10cref="+conet/header_lock_bh"transpor8=net/header_locass="c10= sizeofpt()98   break;4)os="t_sendmsg class="line" ns="t_s9 630_cnetow" classtranspor8e=spin_tow" >/aref="+code=sct1025L599" i104L624"      lock_bh"transpor8=24"      locref="0ref=           4"      _he92>)os="t_sendmsg class="line" ns="t_s9aa_fame_bhe=newsk" class="9ref">99bhe=n>/ar599" 579" i914L5Iref="e	/ 6=sk" clanMPA4  et/sctp/prot"s cl>/arode=addrw" class="sref">add9 b_tpathref="+code=sp" cla10 *	>1netpathref="+code	/a>(&	a href="+conetpathiphref="+code=sp" cla10 *	>1netpathiphref="+code   .os="t_sendmsg class="line" ns="t_s91049a>#end&	a href="+code=sct9nd&am>/ar                	spa. class="cetpathlass="line" naendmsg  brenetpathlass="line	/a>(&	a href="+conetpathiph" i1014L632" class="line"netpathiph" i1014L63   .os="t_sendmsg class="line" ns="t_s9fame_bh	/a claspf/a>  et/sctp/prot/a cl>/ar" i105)-&ifs="t_sendmsg class="line" ns="t_s9es="t_tp_aist	/a>, 	a href="+code=_aist>/ar9616	/a>4 , 1refe>10s (sref"MIB_OUTsrefPACKSref="+code=t/1bh" clasie1=_skb_msgne" /a> ,       1     1   	spode=s_addr" class="10c#L>10c#a>#endif4#endif4IS_ENABLED	/a>(	a hr9# href="+9 href="+code=temp" clas)aPef">sa class="sref">aPde=sin_fam1y	/a> clas1="t_a">suppor8e /a> ,    1     10f (sref"MIB_OUTsrefPACKSref="+code=t/1ass="t_cmp1="sr/a> ,                1	spa.1class="c10c4L5switch4	/a>.	a href="+chref="+9 href="+code=temp" clas)aPef">sa class="sref">aPde=sin_fam1y4s="t_cmp1=" classtranspor8e=spin_t1     1   	spa. classcasecode=timeowner  break;4sa class="sref">aPde=sin_fam1y5s="t_cmp1==newsk" class="9ref">99b1     1   	spa. classssssssssde=addrw" class="sref">add9" nam.1_specmenta>#endif44  et/sctp/prot"1h/a> 1              casecode=timeowner  break;4	a href="+code=abreak;4	claT:ef">sa class="sref">aPde=sin_fam1y7s="t_cmp1=amp;	a href="+code=sct9n1"/a> 10ef="+code=v4" claipa>de=addrw" class="sref">add9" nam.16_specmenta>#endif44  et/sctp/prot/1   	s1a. class="c10c" iault:ef">sa class="sref">aPde=sin_fam1y9s="t_cmp1=st	/a>, 	a href="+code=_1101#L199" i104L609"  claipa>de=addrw" class="sref"NULLa>#endif410118de=addrw" claef="net/sctp/protocol.c#Lafe=sp011h" clasie1">
i	/a>/dele	/a> ave68s.1ra>  11>4	/a> clas1ref="+code=addr" class10 1r>10411f (sref"MIB_OUTsrefPACKSref="+code=t/1"+code=tim1="sres="t">
6_notifierD" 1e"nnf11s="sre9">tim95wsk	/	/a>4
6_ave68/a> ,         1     1 	spa.           	spa. class="regctper0c#a>#endif4#endif44IS_ENABLED	/a>(	a hr9# href="+9 href="+code=temp" clas)ocos="t_seqpa30et_ophref="+code=1b5s="t_cmp14L616" class="line" nam1014L>1011m914L6696wsk	/href="net/sctp/protocol0116s="t_cmp1                        	1pa. c116ass="c10c4L5switch4	/a>.	a href="+chref="+9 href="+code=temp" clas)aPef">sa class="sref">aPde=sin_fam1e se10mp >104tate	pa.14sa class="sref">aPde=sin_fam1imes="t_se1pa30et_ophD" ce"nnf_splis1	/a>,11ef="+code=v4" claipa>>v4	/a>.	a href="+c>add9" nam.1_specmenta>#endif4 claipa>de=addra href="net/sctp/protocol9de=SCTP11fL599" i101/a>(&	a href="+code=s1t10211599" i10ode=siiiiiiiii/a>.	a href="+c>add9" nam.1_specmenta>#endif44(&	a href="+codbreak href="net/sctp/protocol9de=SCTP11f	/a> clas1amp;	a href="+code=sct1021L599"1i1014L622" clacasecode=timeowner  break;4	a href="+code=abreak;4	claT:ef">sa class="sref">aPde=sin_fam1s="t_dgram1connec8_fame_bh	/a>(&1a hre1="+code=sct102 claipa>>v4	/a>.	a href="+c>add9" nam.16_specmenta>#endif4(&a1p;	a 1ref="+code=sct claipa> claipa>de=addra href="net/sctp/protocol9de=SCTP11f5s="t_cmp1	/a>(&	a href="+code=1ct10212  	spa. classssssssss/a>.	a href="+c>add9" nam.16_specmenta>#endif44
643	/a> lenbreak href="net/sctp/protocol9de=SCTP11f se10mp >1amp;	a href="+code=sct1021L599"1i1014L627" cla" iault:ef">sa class="sref">aPde=sin_fam1_fame_bh	/1>(&	a href="+code=sct1029L512ef="+code=v4" claipa>de=addra href="net/sctp/protocol9de=SCTP11f9s="t_cmp1en_fame_bh	/a>(&	a hr1f="+c1de=sct103#L599href="net/sctp68"Verif63e"atmo c11_shutdown/1>  sssss	/a>4 ,  1a>44(13f (sref"MIB_OUTsrefPACKSref="+code=t/1endmsg_fam1_bh	/a>(&	a href="+co1e=sct13plist	/a>, 	code=list" clasinp;	a hef=lass="srefinp;	aooks            	spa. clini1_scodemib>aode=a"D" ceak;44" c void)ocos="t_seqpa30et_ophref="+code=1n 630_cnet14_recvmsg_fame_bh	/a>(&am1;	a h13M_IPV4">addESSref="+code=timesref"PARh135s="t_cmp1	/a>(&	a href="+code=1ct1031L599" i10ref="de=addrw" class="sref">nmdemib_4#endif4#endif4.	a href="+c>add9	/a>,s4#endif4v4	/a>.	a href="+cod1e||="13.14L643">
643	/a> lene=spin_loccccsizeofpt()98   break;4#endif4 ,1 refe13ef="+code=v4" claipa>          sss/a>.	a href="+c__alignof         	spa. clasalignof  4" c ode=s_addr" class="10c#L>10miba>#endif4(	ae13fame_bh	/1hf="+2/a> ,             /1hf=fe1<" i10href="net/sctp68"Verif63e"atmo c11o9s="t_cmp1class="sref">IS_ENABLED	_1clafe13n_lock_bh"pmtudisocodee"net/sctp/pro1 	shutdown/1or8s ode=sa_ .552" ces. /1or8>/14k_buff/a>     struct
	a hre kbe=spin_lock_bh" kb/a> ,      voidck_bh"lenD" c,  cleanup_scodemib>aode=a"D" ceak;cleanup_scodemib>4" c void)ocos="t_seqpa30et_ophref="+code=14ck_bh"s631SCONF for each asso9iatv31SCO>/1o1616	4">addESSref="+code=timesref"PARh14ck_bh" 631="sref">a	/a>.	a href="!31="s>/141014L622" claw" class="sref">nmdemib_freass="sref">SCTP_anmdemib_frea4" c  voidck_bh"lenD" c,    percpua>#endif4.	a href="+c>add9	/a>,s4#endif4(	ae1ondmsg_fam1Lhton nam.14L669">
66htom1Lht>/1os="srhref="net/sctp68"Verif63e"atmo c114 630_cnet10f="+1ef">v4	/a>.	a hf="t10f=>/14tocol.c#L637" id14L63%s: skb:/145s="t_cmp10f="+2ef">v4	/a>.	a hf="b10f=>/1o599" f/a>   voidck_bh"lenD" c,  aeturned" nam67alua9he socket returned" nam674" c void)ocos="t_seqpa30et_ophref="+code=14f="+cos="1Lf="+1ef">v4	/a>.	a hf=""1Lf=>/1oode=a4">addESSref="+code=timesref"PARh141049a>#en1saddr	/a>->	a href="+n1sad>/1o1014L627" clas="8ref">89     pa.14/1o" i10	a href=       	spa. class="regctper0c#a>#endif4 e" nam.14L60	/a>4/1oe=sct103#L599       	spa. class="regctper0ref="net/sctp/protocolregctper0re4" c ="+code=sct1041L599" i101e=s_addr" class="9ref">99     pa.14NU/1de=>/1deL619href="net/sctp68"Verif63e"atmo c115ck_bh"s631class="sref">SCT9_ADDR9531cla>/15                    	spa. class="c10415ck_bh" 631>
6 looks bindable. rCne31>
6>/1d2eopae=spin_voidck_bh"lenD" c,  aeturned" nex67alua9he socket returned" nex674" c void)ocos="t_seqpa30et_ophref="+code=15ndmsg_fam1t s9 href="+c9de=timeo_vm1t s>/1d34L594">addESSref="+code=timesref"PARh15 630_cnet1595>
654	/a>41049asctp_den4" c ="+code=sct1041L599" i101e=s_addr" class="9ref">99     pa.14(	ae155s="t_cmp1ctp/pro class="t_bind_veb1ctp>/15>4 clasL630="st    str"1	/a>/15ss="c1048L599" i10mp the v4 addr to t151049a>#en1>v4	/a>.	a hrclasv4_avain1>v4>/15;914L597" cl           	spa. class="c9c630opswnam67alua9he socket returned"30opswnam674" c void)ocos="t_seqpa30et_ophref="+code=15fame_bh	/1ode=sock_net"opae=spin_l/1ode>/1d" i104">addESSref="+code=timesref"PARh159s="t_cmp1                9     96_1   >/15e=sct103#L599           	spa. clrta>#endif4/1 s (sref"MIB_OUTsrefPACKSref="+code=t/16ck_bh"s631"c9line" nam914L661">
6631"c9>/161="+code=sct1k_bh"lenD" c,  rta>#endif41049a i1014linotoco 1a href="net/sctp/protocol9	/a>(	ae16ck_bh" 631	/a>4v4	/a>.	a href="+crta>#endif4/16"+code=sct102 claipa>de=addrw" class="sref"rta>#endif4 clasL630="st    strt1	/a>/16tocol.c#L637" id14L63%s: skb:/16aa_fame_b1#L666" i914L666" class="b1#L6>/1 599" i10ref="e9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_16f="+cos="1pt2sk	/a9(	a href="+code"1pt2>/166="+code=sct1k_bh"lenD" c,  am.1_regctper0c30opswpin_lock_bh" kb/a.1_regctper0c30opsw4" c ="+code=sct1041L599" i101ref  ="+co630opsw  break;4/16pf_s="tkaddr_entry	/a>l.c#Lpf_s="tD"/169s="t_cmp1dall	/a9(	a href="+code=_1dal>/16e=sct103#L599de=addra href="net/sctp/protocol9de=SCTP117shutdown/1               9     97>/1   >/17eL619href="net/sctp68"Verif63e"atmo c117ck_bh"s631ctp/pro class="t_suppor831ctp>/17                    	spa. class="c10417ck_bh" 63130"kaddr_entry	/a> clasL3130">/172eopae=spin_voidck_bh"lenD" c,  aeturned"30opswnex67alua9he socket returned"30opswnex674" c void)ocos="t_seqpa30et_ophref="+code=17ndmsg_fam1ass="sref">IS_ENABLED	/am1ass>/1734L594">addESSref="+code=timesref"PARh17 630_cnet1de[0]e" nam.14L604">
60st1de[>/17f="+code=sct1k_bh"lenD" c,  /a.1_unregctper0c30opswpin_lock_bh" kb/a.1_unregctper0c30opsw4" c ="+code=sct1041L599" i101rtreamo630opsw  break;4(&	ab1dES>/1 599" i10ref="k_bh"lenD" c,  /a.1_unregctper0c30opswpin_lock_bh" kb/a.1_unregctper0c30opsw4" c ="+code=sct1041L599" i101ref  ="+co630opsw  break;4)>/176="+code=sct1k_bh"lenD" c,  =ef="lunregctpera>#endif41049a i1014linotoca href="net/sctp/protocol9	/a>(	ae171049a>#en1lass="line" nam.94L57897n1las>/1 1014Lhref="net/sctp68"Verif63e"atmo c117fame_bh	/1cole ip transmitlrout="l/1col>/17pf_s="tkaddr_entry	/a>l.c#Lpf_s="tD"/17es="t_tp_1L579" class="line" nam91_1L57>/1799" i10c#L5c           	spa. class="c9cadd_c#Lpf_s=alua9he socket returnedadd_c#Lpf_s=4" c void)ocos="t_seqpa30et_ophref="+code=18shutdown/1p/protocolk_buffe=spin_l/1p/p>/1p/=sct4">addESSref="+code=timesref"PARh18ck_bh"s631in_lock_bh"transpor8="st31in_>/1pref="net/sctpe9">tim95wsk	/	/a>4s="t_s30"="st    str31	/a>/181014L622" claw" class="sref"regctper030"kifier_callkaddr_entry	/a>notregctper030"kifier_callkad4" c ="+code=sct1041L599" i10130"kifier_callkaddr_entry	/a>not i10130"kifier_callkadotoca href="net/sctp/protocol9	/a>(	ae18ndmsg_fam1="t_s"kaddr_entry	/a>s="m1="t>/1plass=href="net/sctp/protocol9	/a>(	ae18 630_cnet1timesref"DEBUG_PRINTK/a>t1tim>/1pf="+code=sct1e9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_18aa_fame_b137;d, src:%pI4, dst:b137;>/1p599" i10ref=">v4	/a>.	a href="+c/a.1_add_c#Lpf_s=alua9he socket /a.1_add_c#Lpf_s=4" c ="+code=sct1041L599" i1014linf_s=alua9he socket returc#Lpf_s=4" c	/a>4/18.14L643">
643	/a> lende=addr-a>4#en1code=v4" claunam.14L669"n1cod>/18e msg_lass. a>                      /18fame_bh	/1code=v4" claunam.14L669"/1cod>/1p" i10	a href=de=addra href="net/sctp/protocol9de=SCTP118es="t_tp_1ing">"%pI4pmtud_1ing>/1pe=scthref="net/sctp68"Verif63e"atmo c119shutdown/1r8e=spin_lock_bh"transpo/1r8e>/19s (sref"MIB_OUTsrefPACKSref="+code=t/19ck_bh"s631ref">aIf"PMTUDISC_DONaD"31ref>/191eopae=spin_voidck_bh"lenD" c,  aeturnednot_c#Lpf_s=alua9he socket returnednot_c#Lpf_s=4" c void)ocos="t_seqpa30et_ophref="+code=19ck_bh" 631esref"INC_STATS/a>      31esr>/1rmp;	a4">addESSref="+code=timesref"PARh19ndmsg_fam1_OUTsrefPACKScodelk_bh	/m1_OU>/1rlass="c10c4L5/a>.	a href="+c/a.1_not_c#Lpf_s=alua9he socket /a.1_not_c#Lpf_s=4" c ="+code=sct1041L599" i1014linf_s=alua9he socket returc#Lpf_s=4" c	/a>4/19f="+code=sct1k_bh"lenD" c,  unregctper030"kifier_callkaddr_entry	/a>notunregctper030"kifier_callkad4" c ="+code=sct1041L599" i10130"kifier_callkaddr_entry	/a>not i10130"kifier_callkadotoca href="net/sctp/protocol9	/a>(	ae19aa_fame_b1e=newsk" class="9ref">99b1e=n>/19>4  et/sctp/prot"1 cl>/19ss="c1048L599" i10mp the v4 addr to t191049a>#en1&	a href="+code=sct9n1&am>/19p/protocopa. c_ophref="+code=tIm67ialize	 hreuniversec   o something sensi	spa. sctp/protocos="t_seqpa30et_ophref="+code=19fame_bh	/1 claspf/a>  et/sctp/prot/1 cl>/1r" i10de=sct1041L599"a576"STATICdr_entry	/a>nota576"STATIC="+cok_bh"lenD" c,    am67alua9he socket _nam674" cc           	spa. class="am67alua9he socket returam674" c void)ocos="t_seqpa30et_ophref="+code=19es="t_tp_1ist	/a>, 	a href="+code=_1ist>/1r9616	4">addESSref="+code=timesref"PARh2ock_bh" cl2sief=_ave68_msgne" /a> , 2refe>20Looks harmles           	spa. clialua9he socket / 	spa>4 ,       2     201ooks harmles           	spa. cle=spu a>#endif4#endif4      32     201014L622" claunsigned long a>44SCTP_max_shara 	spa>499b2     2   	spa. class           	spa. clord0ode>1041a>#endif4rd0o 	spa>4  et/sctp/prot"2h/a> 20ss="c1048L599" i10mp the v4 addr to t2y7s="t_cmp2=amp;	a href="+code=sct9n2"/a> 201014L627" clas="8ref">89     pa.14  et/sctp/prot/2   	s2a. class="c10c>v4	!de=sct1041L599" i101ram67yache" class="line" na i101ram67yache" 4" c ))ocos="t_seqpa30et_ophref="+code=2y9s="t_cmp2=st	/a>, 	a href="+code=_2101#L299" i104L609"  claipa>gref        	spa. clou7alua9he socket ou7 	spa>41021s (sref"MIB_OUTsrefPACKSref="+code=t/21h" clasie2">
i	/a>/dele	/a> ave68s.2ra>  21ref="net/sctpe9">tim95wsk	/	/a>4	/a> clas2ref="+code=addr" class10 2r>104211014L622" claw" class="sref">=spu a>#endif4#endif4
6_notifierD" 2e"nnf21lass="c10c4L5/a>.	a href="+c i101bucode_cacher" class="sre9">si101bucode_cacher 	sp(&	a href="+cokmem_cache_create" class="sre9">kmem_cache_create4" c e9">tim95wsk	string">"si101b/pr_bucode"tp/protos="t_sendmsg class="line" ns="t_2bh" class=2t">
6_ave68/a> ,         2     21ef="+code=sct claipa> claipa>>>>>>>>>>>>>>>>>>>>>>>>sizeofpt()98   break;4si101b/pr_bucodeotocaos="t_sendmsg class="line" ns="t_2b5" clasie24L616" class="line" nam1024L>1021  	spa. classsssssssssssssssssssssssssssssssssssssss0	/a>4
643	/a> lene=spin_locccccccccccccccccccccca>4si101bucode_cacher 	sp)ocos="t_seqpa30et_ophref="+code=2imes="t_se2pa30et_ophD" ce"nnf_splis2	/a>,21ef="+code=v4" claipa>gref        	spa. clou7alua9he socket ou7 	spa>4(&	a href="+code=s2t10212599" i10ode=side=sct1041L599" i101chunk_cacher" class="sre9">si101chunk_cacher 	sp(&	a href="+cokmem_cache_create" class="sre9">kmem_cache_create4" c e9">tim95wsk	string">"si101chunk"tp/protos="t_sendmsg class="line" ns="t_2fh" clasie2ssssss	/a>4(&	a href="+coddddddddddddddddddddddddddddddddsizeofpt()98   break;4si101chunkotocaos="t_sendmsg class="line" ns="t_2f	/a> clas2amp;	a href="+code=sct1022L599"2i1014L622" claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0	/a>4(&2a hre2="+code=sct102 claipa>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>a>4v4	!de=sct1041L599" i101chunk_cacher" class="sre9">si101chunk_cacher 	sp)ocos="t_seqpa30et_ophref="+code=2f5s="t_cmp2	/a>(&	a href="+code=2ct10222  	spa. classssssssssgref        	spa. clerr_chunk_cacher" class="sre9">err_chunk_cacher 	spa>442amp;	a href="+code=sct1022L599"221014L627" clas="8ref">89     pa.14a. sctp/protocos="t_seqpa30et_ophref="+code=2_fame_bh	/2>(&	a href="+code=sct2029L522" i10	a href=       	spa. cla=spu a>#endif4aode=a"D" ceak;44" c a href="net/sctp/protocol9	/a>(	ae2i9s="t_cmp2en_fame_bh	/a>(&	a hr2f="+c2de=sct103#L599>v4	/a>.	a href="+c>=spu a>#endif4aode=a"D" ceak;err_4 	spa>4 ,  2a>4(232014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_2endmsg_fam2_bh	/a>(&	a href="+co2e=sct23lass="c10c4L5/a>.	a href="+c =spu a>#endif4v4	/a>.	a href="+c>=spu a>#endif4(&	a href="+code=2ct10323  	spa. classssssssssgref        	spa. clerr_44v4	/a>.	a href="+cod2e||="23ss="c1048L599" i10mp the v4 addr to t2>1049a>#en2if4 ,2 refe231014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_2efame_bh	/2hf="+2/a> ,             /2hf=fe23" i10	a href=       	spa. class="dbg_objcnt"am67alua9he socket returdbg_objcnt"am674" c a href="net/sctp/protocol9	/a>(	ae2n9s="t_cmp2class="sref">IS_ENABLED	_2clafe23n_lock_bh"pmtudisocodee"net/sctp/pro12	shutdown/2or8s ode=sa_ .552" ces. /2or8>/240014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_24ck_bh"s632SCONF for each asso9iatv32SCO>/24     9     96>sk	/	/a>4
60 630_cneto4_setL630opae=spin_24ck_bh" 632="sref">a	/a>.	a href="!32="s>/241014L9     96>sk	/	/a>4
60 630_cneto4_setL630opae=spin_2ondmsg_fam2Lhton nam.14L669">
66htom2Lht>/243014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_2o 630_cnet20f="+1ef">v4	/a>.	a hf="t20f=>/24f="+code=sct1e9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_2o5s="t_cmp20f="+2ef">v4	/a>.	a hf="b20f=>/24599" i10ref="k_bh"lenD" c,  returrto_im67ialalua9he socket returrto_im67ial 	spa. classssssssss#endif44v4	/a>.	a hf=""2Lf=>/2oode=addrw" cle9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_2o1049a>#en2saddr	/a>->	a href="+n2sad>/247="+code=sct1k_bh"lenD" c,  returrto_m_hsr/a>           eturrto_m_h+code=sct102 claipa>>>>>1049aa576"RTO_MIN 	spa>4/2o" i10	a href= 9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_2o9s="t_cmp2ref="+c9de=sin6_addr" cl_2ref>/2oe=sct103#L599       	spa. class="rto_maxsr/a>           eturrto_max+code=sct102 claipa>>>>>1049aa576"RTO_MAX 	spa>4NU/2de=>/250014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_25ck_bh"s632class="sref">SCT9_ADDR9532cla>/251="+code=sct1k_bh"lenD" c,   eturrto_alphasr/a>           eturrto_alpha+code=sct102 claipa>>>1049aa576"RTO_ALPHA 	spa>4
6 looks bindable. rCne32>
6>/252014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_25ndmsg_fam2t s9 href="+c9de=timeo_vm2t s>/25lass="c10c4L5/a>.	a href="+c i101rto_betasr/a>           eturrto_beta+code=sct102 claipa>>>>1049aa576"RTO_BETA 	spa>4/25tocol.c#L637" id14L63%s: skb:/255s="t_cmp2ctp/pro class="t_bind_veb2ctp>/25599" i10ref="e9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_25f="+cos="2	/a> clasL630="st    str"2	/a>/256="+code=sct1k_bh"lenD" c,  returnalic_cookie_lifealua9he socket returnalic_cookie_life+code=sct102 c1049aa576"DEFAULT_COOKIE_LIFE 	spa>4/25" i10	a href= 9">tim95wsk	/	/a>4	spd(1) or	non(0)s*14L604">
60 630_cneto4_setL630opae=spin_259s="t_cmp2                9     96_2   >/25e=sct103#L599       	spa. class="cookie_p3eserve_en>	sp" class="sre9">si101cookie_p3eserve_en>	sp=sct103#L=net/sctp/protocol.c#L605" 9#L578" 626shutdown/2 sendable. rCneto4/2 s (sref"MIB_OUTsrefPACKSref="+code=t/26ck_bh"s632"c9line" nam914L661">
6632"c9>/26ref="net/sctpe9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_26ck_bh" 632	/a>4codemax_burst" class="sre9">si101max_burst+code=sct102 claipa>>>4/26lass=href="net/sctp/protocol9	/a>(	ae26 630_cnet2	/a> clasL630="st    strt2	/a>/26f="+code=sct1e9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_26aa_fame_b2#L666" i914L666" class="b2#L6>/2 599" 9     96>sk	/	/a>4
60 630_cneto4_setL630opae=spin_26f="+cos="2pt2sk	/a9(	a href="+code"2pt2>/266="+c9     96>sk	/	/a>4
60 630_cneto4_setL630opae=spin_261049a>#en2ound-specific en9point96n2oun>/26p/protocopa. c_ophref="+codsssssssss*14L604">
60 630_cneto4_setL630opae=spin_26fame_bh	/2Type inform1	/a> "linINI/2Typ>/26" i10	a href=       	spa. class="max_retrans_associafier" class="sre9">si101max_retrans_associafier i10	a h=nea href="net/sctp/protocol9de=SCTP1269s="t_cmp2dall	/a9(	a href="+code=_2dal>/26e=sct103#L599       	spa. class="max_retrans_path" class="sre9">si101max_retrans_path+code=sct102 cl= 5 href="net/sctp/protocol9de=SCTP127shutdown/2               9     97>/2   >/2799" i10ode=side=sct1041L599" i101max_retrans_am67alua9he socket returmax_retrans_am67+code=sct102 cl= 8 href="net/sctp/protocol9de=SCTP127ck_bh"s632ctp/pro class="t_suppor832ctp>/27                    	spa. class="c10427ck_bh" 63230"kaddr_entry	/a> clasL3230">/272014L627" clas="8ref">89     pa.14
60 630_cneto4_setL630opae=spin_27ndmsg_fam2ass="sref">IS_ENABLED	/am2ass>/27lass="c10c4L5/a>.	a href="+c i101sndbuf_polic href=lass="srefa> 
60st2de[>/27tocol.c#L637" id14L63%s: skb:/27aa_fame_b2dESSD" ck_bh	/a>(&	ab2dES>/27599" i10ref="e9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_27f="+cos="2a>)->9a href="+code=t"2a>)>/276="+code=sct1k_bh"lenD" c,   eturrcvbuf_polic href=lass="srefa> /27e msg_lass. a>                      /27fame_bh	/2cole ip transmitlrout="l/2col>/27" i10	a href= 9">tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_27es="t_tp_2L579" class="line" nam91_2L57>/27e=sct103#L599       	spa. class="hb_4 4tim95wsk	/	/a>4
60 630_cneto4_setL630opae=spin_28ck_bh" 632	/a>s="t_s30"="st    str32	/a>/281014L622" claw" class="sref" i101rack_timeoutclass="line" na i101rack_timeout 	spa. classsssssss4s="m2="t>/2plass=href="net/sctp/protocol9	/a>(	ae28 630_cnet2timesref"DEBUG_PRINTK/a>t2tim>/2pf="+code=sct1e9">tim95wsk	/	/a>44	sp etsctp/protocos="t_seqpa30et_ophref="+code=28aa_fame_b237;d, src:%pI4, dst:b237;>/2p599" ocos="t_seqpa30et_ophref="+code=28f="+cos="2 if ("kbe=spin_lock_bh" "2 if>/28ode=addrw" cle9">tim95wsk	/	/a>4#en2code=v4" claunam.14L669"n2cod>/287="+code=sct1k_bh"lenD" c,  returmax_inrtream a>#endif4#endif44/28" i10	a href=       	spa. class="max_outrtream a>#endif4#endif44"%pI4pmtud_2ing>/28n_lock_bh"pmtudisocodee"net/sctp/pro129shutdown/2r8e=spin_lock_bh"transpo/2r8e>/290014L627" clas="8ref">89     pa.14aIf"PMTUDISC_DONaD"32ref>/291="+code=sct1k_bh"lenD" c,   eturmax_au/sclosea>#endif41049aINT_MAX+code/r href=" 1k_bh	/HZlass10 hr>1049aHZ 	spa>4      32esr>/29f (sref"MIB_OUTsrefPACKSref="+code=t/29ndmsg_fam2_OUTsrefPACKScodelk_bh	/m2_OU>/293014L627" clas="8ref">89     pa.14/29f="+code=sct1k_bh"lenD" c,  idr_am67alua9he socket idr_am674" c ="+code=sct1041L599" i101essocs_ada>#endif4(	ae29aa_fame_b2e=newsk" class="9ref">99b2e=n>/29599" ocos="t_seqpa30et_ophref="+code=29f="+cos="2 clasaf/a>  et/sctp/prot"2 cl>/296="+code=sct1k_bh"lenD" c,  li
67alua9he socket li
67 	spp=r href=" 1k_bh	/nr_frea_buffer_page a>#endif4/297="+code=sct1k_bh"lenD" c,  li
67alua9he socket li
67 	spp=r href=" 1k_bh	/maxsr/a>          max+cod	/a>.	a href="+cli
67alua9he socket li
67 	sp, /28ULa href="net/sctp/protocol9	/a>(	ae29fame_bh	/2 claspf/a>  et/sctp/prot/2 cl>/29" i10	a href=       	spa. clay/prl_scodemema>#endif4, 	a href="+code=_2ist>/29e=sct103#L599       	spa. clay/prl_scodemema>#endif4 , 3refe>3099" i10ode=side=sct1041L599" y/prl_scodemema>#endif4#endif4(	ae3o1k_bh" cl3sef">aIf"PMTUDISC_DONaD"33     30                    	spa. class="c1043b2" clasie3=sref"INC_STATS/a>      33     302014L627" clas="8ref">89     pa.14.	a href="+c>y/prl_scodemema>#endif4SCTP_max_shara 	spp=r href=" 1k_bh	/m_hsr/a>          m_h+cod(4UL*1024*1024	/a>4(	ae3b5" clasie3==newsk" class="9ref">99b3     30599" ocos="t_seqpa30et_ophref="+code=3b6" clasie3=clasaf/a>  et/sctp/prot"3h/a> 306="+code=sct1k_bh"lenD" c,   y/prl_scodermema>#endif4#endif489     pa.14 307="+code=sct1k_bh"lenD" c,  ry/prl_scodermema>#endif41049aaKB_TRUESIZE+cod(1a href="net/sctp/protocol9	/a>(	ae3o8s="t_cmp3=claspf/a>  et/sctp/prot/3   	s30" i10	a href=       	spa. clay/prl_scodermema>#endif4          max+cod	/a>.	a href="+cry/prl_scodermema>#endif4SCTP_max_shara 	spa href="net/sctp/protocol9	/a>(	ae3o9s="t_cmp3=st	/a>, 	a href="+code=_3101#L30n_lock_bh"pmtudisocodee"net/sctp/pro132L599" i103p address, empty for v4103p >103199" i10ode=side=sct1041L599" y/prl_scodewmema>#endif4#endif4
i	/a>/dele	/a> ave68s.3ra>  311="+code=sct1k_bh"lenD" c,   y/prl_scodewmema>#endif4104311014L622" claw" class="sref">y/prl_scodewmema>#endif4          max+cod	64*1024	/a>4SCTP_max_shara 	spa href="net/sctp/protocol9	/a>(	ae323" clasie3="sres="t">
6_notifierD" 3e"nnf31lass=href="net/sctp/protocol9	/a>(	ae3bh" class=3t">
6_ave68/a> ,         3     31f="+code=sct1e9">tim95wsk	/	/a>4	spatp/protocos="t_seqpa30et_ophref="+code=3b5" clasie34L616" class="line" nam1034L>1031599" 9     96>sk	/	/a>4	spsatp/protocos="t_seqpa30et_ophref="+code=3b6" clasie3                        	3pa. c316="+c9     96>sk	/	/a>4304tate	pa.14v4	a>4,31ef="+code=v4" claipa>a>4#endif4(&	a href="+code=s3t10213599" i10ode=siiiiiiiii/a>.	a href="+cgoa=alua9he socket goa= 	spp=r href=" 1k_bh	/totalramo6age a>#endif4441041a>#endif4rd0o 	sp) < /a>.	a href="+cgoa=alua9he socket goa= 	sp; a>4(&3a hre3="+code=sct102 claipa> href="net/sctp/protocol9	/a>(	ae3fh" class=3L630etpair_fame_bh	/a>(&a3p;	a 32tocol.c#L637" id14L63%s: skb:/3f5s="t_cmp3	/a>(&	a href="+code=3ct10232  	spa. classdo 4">addESSref="+code=timesref"PARh3f6s="t_cmp3ssssss	/a>4
643	/a> lende=sct1041L599" i101essoc_hashsizea>#endif41041a>#endif4rd0o 	sp) *  href=" 1k_bh	/dAGE_SIZElass10 hr>1049adAGE_SIZE 	spp/">addESSref="+code=timesref"PARh3f se10mp >3amp;	a href="+code=sct1023L599"32ef="+code=v4" claipa>          sssssssssssssssizeofpt()98   break;4si101hashbucode 	spa href="net/sctp/protocol9	/a>(	ae3fmes="t_se3>(&	a href="+code=sct3029L532ef="+code=v4" claipa>>v4		/a>.	a href="+cri101essoc_hashsizea>#endif41041a>#endif4rd0o 	spp> 0)ocos="t_seqpa30et_ophref="+code=3i9s="t_cmp3en_fame_bh	/a>(&	a hr3f="+c329" i104L609"  claipa>>>>>>>>>continue href="net/sctp/protocol9	/a>(	ae3_shutdown/3>  sssss	/a>4.	a href="+cri101essoc_hasht>	sp" class="sre9">si101essoc_hasht>	sp 	spp=r	t()98   break;4si101hashbucode 	sp *)ocos="t_seqpa30et_ophref="+code=3"h" clasie3_cneto4_setL630opa/a> ,  3a>4(&	a href="+coddddddddd break;4#endif4notGFP_ATOMIC+cod| break;41049a__GFP_NOWARN 	sp, a>4(	ae3_	/a> clas3_cneto4_getL630opa_fame_b3	/a>(332014L627" cla} while4	!de=sct1041L599" i101essoc_hasht>	sp" class="sre9">si101essoc_hasht>	sp 	spp="+co="+co --a>4(	ae3_="t_dgram3_bh	/a>(&	a href="+co3e=sct33lass="c10c4L5>v4	!de=sct1041L599" i101essoc_hasht>	sp" class="sre9">si101essoc_hasht>	sp 	sp) 4">addESSref="+code=timesref"PARh3n 630_cnet34_recvmsg_fame_bh	/a>(&am3;	a h33ef="+code=sctdddddddd break;4#endif4tim95wsk	string">"Failedeassociafiermhash alloc\n"tp/prot) href="net/sctp/protocol9	/a>(	ae3_5s="t_cmp3	/a>(&	a href="+code=3ct10333  	spa. classssssssssde=sct1041L599" =spu a>#endif4#endif4v4	/a>.	a href="+cod3e||="33.14L643">
643	/a> lengref        	spa. clerr_ahash_alloca>#endif43if4 ,3 refe331014L627" claaef="net/sctp/protocol.c#Lafe=sp/3efame_bh	/3hf="+2/a> ,             /3hf=fe33" i10	a href=r_bl	a>444addESSref="+code=timesref"PARh3n9s="t_cmp3class="sref">IS_ENABLED	_3clafe339" i104L609"  claipa>a>4	sp" class="sre9">si101essoc_hasht>	sp 	sp[a>4/3499" i10ode=siiiiiiiii/a>.	a href="+cINIT_HLIST_HEADlass10 hr>1049aINIT_HLIST_HEAD4" c ="+code=sct1041L599" i101essoc_hasht>	sp" class="sre9">si101essoc_hasht>	sp 	sp[a>4          cha_h 	sp) href="net/sctp/protocol9	/a>(	ae3	h" clasie3SCONF for each asso9iatv33SCO>/341014L627" claaef="net/sctp/protocol.c#Lafe=sp/34ck_bh" 633="sref">a	/a>.	a href="!33="s>/34f (sref"MIB_OUTsrefPACKSref="+code=t/3ondmsg_fam3Lhton nam.14L669">
66htom3Lht>/343014L627" clas="8ref">89     pa.14	spass*ctp/protocos="t_seqpa30et_ophref="+code=3o 630_cnet30f="+1ef">v4	/a>.	a hf="t30f=>/34f="+code=sct1k_bh"lenD" c,  si101ep_hashsizea>#endif4v4	/a>.	a hf="b30f=>/34599" i10ref="k_bh"lenD" c,  returep_hasht>	sp" class="sre9">si101ep_hasht>	sp 	spp=r	t()98   break;4si101hashbucode 	sp *)ocos="t_seqpa30et_ophref="+code=34f="+cos="3Lf="+1ef">v4	/a>.	a hf=""3Lf=>/34.14L643">
643	/a> lende=sct1041L599"kmalloca>#endif4si101hashbucode 	spa, a>4/347 	spa. class>v4	!de=sct1041L599" i101ep_hasht>	sp" class="sre9">si101ep_hasht>	sp 	sp) 4">addESSref="+code=timesref"PARh34fame_bh	/3tocol9c#L649" i914L649" /3toc>/34ef="+code=v4" claipa>a>4tim95wsk	string">"Failedeendpo   _hash alloc\n"tp/prot) href="net/sctp/protocol9	/a>(	ae3o9s="t_cmp3ref="+c9de=sin6_addr" cl_3ref>/349" i104L609"  claipa>a>44NU/3de=>/3599" i10ode=siiiiiiiiigref        	spa. clerr_ehash_alloca>#endif4SCT9_ADDR9533cla>/351014L627" claaef="net/sctp/protocol.c#Lafe=sp/35ck_bh" 633>
6 looks bindable. rCne33>
6>/351014L622" clar_bl	a>444addESSref="+code=timesref"PARh35ndmsg_fam3t s9 href="+c9de=timeo_vm3t s>/35"+code=sct102 claipa>a>4	sp" class="sre9">si101ep_hasht>	sp 	sp[a>4/35ef="+code=sctdddddddd break;41049aINIT_HLIST_HEAD4" c ="+code=sct1041L599" i101ep_hasht>	sp" class="sre9">si101ep_hasht>	sp 	sp[a>4          cha_h 	sp) href="net/sctp/protocol9	/a>(	ae355s="t_cmp3ctp/pro class="t_bind_veb3ctp>/35599" i10ref="aef="net/sctp/protocol.c#Lafe=sp/35f="+cos="3	/a> clasL630="st    str"3	/a>/35ss="c1048L599" i10mp the v4 addr to t351049a>#en3>v4	/a>.	a hrclasv4_avain3>v4>/351014L627" clas="8ref">89     pa.14	spass*ctp/protocos="t_seqpa30et_ophref="+code=35fame_bh	/3ode=sock_net"opae=spin_l/3ode>/35" i10	a href=do 4">addESSref="+code=timesref"PARh359s="t_cmp3                9     96_3   >/359" i104L609"  claipa>a>441049adAGE_SIZE 	spp/">addESSref="+code=timesref"PARh36shutdown/3 sendable. rCneto4/3699" i10ode=siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisizeofpt()98   break;4si101b/pr_hashbucode 	sp) href="net/sctp/protocol9	/a>(	ae36ck_bh"s633"c9line" nam914L661">
6633"c9>/36a>(&	a href="+cod>v4		/a>.	a href="+cri101por _hashsizea>#endif41041a>#endif4rd0o 	spp> 0)ocos="t_seqpa30et_ophref="+code=36ck_bh" 633	/a>4/36"+code=sct102 claipa>a>4si101por _hasht>	sp 	spp=r	t()98   break;4si101b/pr_hashbucode 	sp *)ocos="t_seqpa30et_ophref="+code=36 630_cnet3	/a> clasL630="st    strt3	/a>/36ef="+code=sctdddddddd claipa>a>4.	a href="+cGFP_ATOMICdr_entry	/a>notGFP_ATOMIC+cod| break;41049a__GFP_NOWARN 	sp, a>4(	ae36aa_fame_b3#L666" i914L666" class="b3#L6>/36599" i10ref="a while4	!de=sct1041L599" i101por _hasht>	sp" class="sre9">si101por _hasht>	sp 	spp="+co="+co --a>4(	ae36f="+cos="3pt2sk	/a9(	a href="+code"3pt2>/36.14L643">
643>v4	!de=sct1041L599" i101por _hasht>	sp" class="sre9">si101por _hasht>	sp 	sp) 4">addESSref="+code=timesref"PARh361049a>#en3ound-specific en9point96n3oun>/36ef="+code=v4" claipa>a>4tim95wsk	string">"Failedeb/prmhash alloc\n"tp/prot) href="net/sctp/protocol9	/a>(	ae36fame_bh	/3Type inform1	/a> "linINI/3Typ>/36ef="+code=v4" claipa>a>44/369" i104L609"  claipa>gref        	spa. clerr_bhash_alloca>#endif4/3   >/3799" i10ode=siaef="net/sctp/protocol.c#Lafe=sp/37ck_bh"s633ctp/pro class="t_suppor833ctp>/37a>(&	a hrr_bl	a>444addESSref="+code=timesref"PARh37ck_bh" 63330"kaddr_entry	/a> clasL3330">/371014L622" claaaaaaaaaa>4	sp" class="sre9">si101por _hasht>	sp 	sp[a>4IS_ENABLED	/am3ass>/37"+code=sct102 claipa>a>4	sp" class="sre9">si101por _hasht>	sp 	sp[a>4          cha_h 	sp) href="net/sctp/protocol9	/a>(	ae37 630_cnet3de[0]e" nam.14L604">
60st3de[>/3749" i10ode=siaef="net/sctp/protocol.c#Lafe=sp/37aa_fame_b3dESSD" ck_bh	/a>(&	ab3dES>/37599" ocos="t_seqpa30et_ophref="+code=37f="+cos="3a>)->9a href="+code=t"3a>)>/376="+code=sct1k_bh"lenD" c,  pr_amfoa>#endif4tim95wsk	string">"Hash t>	spsaconfigurede(est>	sishede%deb/prm%d)\n"tp/prot	s="t_sendmsg class="line" ns="t_371049a>#en3lass="line" nam.94L57897n3las>/37ef="+code=v4" claipa>a>44/37" i10href="net/sctp/protocol9	/a>(	ae379s="t_cmp3L579" class="line" nam91_3L57>/37e=sct103#L599 ="8ref">89     pa.14	sp ADDIP by	" iaultetsctp/protocos="t_seqpa30et_ophref="+code=38shutdown/3p/protocolk_buffe=spin_l/3p/p>/3899" i10ode=side=sct1041L599" i101addip_en>	sp" class="sre9">si101addip_en>	sp 	spp=ra ocos="t_seqpa30et_ophref="+code=38ck_bh"s633in_lock_bh"transpor8="st33in_>/381="+code=sct1k_bh"lenD" c,   eturaddip_noauth" class="sre9">si101addip_noauth 	spp=ra ocos="t_seqpa30et_ophref="+code=38ck_bh" 633	/a>s="t_s30"="st    str33	/a>/381014L622" claw" class="sref" i101" iault_au/seesconf" class="sre9">si101" iault_au/seesconf 	spp=ra ocos="t_seqpa30et_ophref="+code=38ndmsg_fam3="t_s"kaddr_entry	/a>s="m3="t>/3plass=href="net/sctp/protocol9	/a>(	ae38 630_cnet3timesref"DEBUG_PRINTK/a>t3tim>/3pf="+code=sct1e9">tim95wsk	/	/a>4	sp PR-a576.by	" iaultetsctp/protocos="t_seqpa30et_ophref="+code=38aa_fame_b337;d, src:%pI4, dst:b337;>/38599" i10ref="k_bh"lenD" c,  returprsi101en>	sp" class="sre9">si101prsi101en>	sp 	spp=ret/sctp/protocol.c#L605" 9#L578" 638f="+cos="3 if ("kbe=spin_lock_bh" "3 if>/38ss="c1048L599" i10mp the v4 addr to t381049a>#en3code=v4" claunam.14L669"n3cod>/381014L627" clas="8ref">89     pa.14	sp AUTH.by	" iaultetsctp/protocos="t_seqpa30et_ophref="+code=38fame_bh	/3code=v4" claunam.14L669"/3cod>/38" i10	a href=       	spa. class="auth_en>	sp" class="sre9">si101auth_en>	sp 	spp=ra ocos="t_seqpa30et_ophref="+code=389s="t_cmp3ing">"%pI4pmtud_3ing>/38n_lock_bh"pmtudisocodee"net/sctp/pro139shutdown/3r8e=spin_lock_bh"transpo/3r8e>/390014L627" clas="8ref">89     pa.14	spdtsctp/protocos="t_seqpa30et_ophref="+code=39ck_bh"s633ref">aIf"PMTUDISC_DONaD"33ref>/391="+code=sct1k_bh"lenD" c,   eturscope_polic href=lass="srefa> 1049aa576"SCOPE_POLICY_ENABLE 	sp k_bh"pmtudisocodee"net/sctp/pro139ck_bh" 633esref"INC_STATS/a>      33esr>/39f (sref"MIB_OUTsrefPACKSref="+code=t/39ndmsg_fam3_OUTsrefPACKScodelk_bh	/m3_OU>/393014L627" clas="8ref">89     pa.14/39f="+code=sct1k_bh"lenD" c,  a> si101rwpr_upd_shifef="+code=v4" clai=r href=" 1k_bh	/a576"DEFAULT_RWND_SHIF499b3e=n>/39599" ocos="t_seqpa30et_ophref="+code=39f="+cos="3 clasaf/a>  et/sctp/prot"3 cl>/396="+code=sct1k_bh"lenD" c,  a> 1041a>#endifa> /39e msg_lass. a>                      /39fame_bh	/3 claspf/a>  et/sctp/prot/3 cl>/39" i10	a href=       	spa. clINIT_LIST_HEADlass10 hr>1049aINIT_LIST_HEAD4" c ="+code=sct1041L599" i101en_lock_familie a>#endif4(	ae39es="t_tp_3ist	/a>, 	a href="+code=_3ist>/39e=sct103#L599       	spa. clai101v4_pf_am67alua9he socket returv4_pf_am67+cod	) href="net/sctp/protocol9	/a>(	ae4ock_bh" cl4sief=_ave68_msgne" /a> , 4refe>4099" i10ode=side=sct1041L599" eturv6_pf_am67alua9he socket returv6_pf_am67+cod	) href="net/sctp/protocol9	/a>(	ae4o1k_bh" cl4sef">aIf"PMTUDISC_DONaD"34     40                    	spa. class="c1044b2" clasie4=sref"INC_STATS/a>      34     402014L627" clas="8ref">89     pa.141049aINIT_LIST_HEAD4" c ="+code=sct1041L599" i101local1en_l_sistalua9he socket returlocal1en_l_sist 	sp) href="net/sctp/protocol9	/a>(	ae4b4" clasie4=" classtranspor8e=spin_t4     40f="+code=sct1k_bh"lenD" c,  rpin_lock_am67alua9he socket rpin_lock_am674" c ="+code=sct1041L599" i101local1en_l_so" class="line" na i101local1en_l_so"  	sp) href="net/sctp/protocol9	/a>(	ae4b5" clasie4==newsk" class="9ref">99b4     40599" i10ref="k_bh"lenD" c,  returget_local1en_l_sistalua9he socket returget_local1en_l_sist+cod	) href="net/sctp/protocol9	/a>(	ae4o6" clasie4=clasaf/a>  et/sctp/prot"4h/a> 40ss="c1048L599" i10mp the v4 addr to t4y7s="t_cmp4=amp;	a href="+code=sct9n4"/a> 401014L627" clas="8ref">89     pa.14  et/sctp/prot/4   	s40" i10	a href=       	spa. clINIT_LIST_HEADlass10 hr>1049aINIT_LIST_HEAD4" c ="+code=sct1041L599" i101en_l_waitqa>#endif4(	ae4b9s="t_cmp4=st	/a>, 	a href="+code=_4101#L40e=sct103#L599       	spa. clINIT_LIST_HEADlass10 hr>1049aINIT_LIST_HEAD4" c ="+code=sct1041L599" i101eu/seesconf_spsistalua9he socket retureu/seesconf_spsist 	sp) href="net/sctp/protocol9	/a>(	ae42L599" i104p address, empty for v4104p >104199" i10ode=side=sct1041L599" pin_lock_am67alua9he socket rpin_lock_am674" c ="+code=sct1041L599" i101en_l_wq_so" class="line" na i101en_l_wq_so"  	sp) href="net/sctp/protocol9	/a>(	ae421k_bh" cl4">
i	/a>/dele	/a> ave68s.4ra>  411="+code=sct1k_bh"lenD" c,   i101en_l_wq_timeode>1041a>#endifa> #endif4104411014L622" claw" class="sref">etup_timeode>1041a>#endifaetup_timeo4" c ="+code=sct1041L599" i101en_l_wq_timeode>1041a>#endifa> 4
6_notifierD" 4e"nnf41lass=href="net/sctp/protocol9	/a>(	ae4bh" class=4t">
6_ave68/a> ,         4     41f="+code=sct1k_bh"lenD" c,  r=spu a>#endif41041599" ocos="t_seqpa30et_ophref="+code=4b6" clasie4                        	4pa. c41.14L643">
643>v4	k_bh"lenD" c,  r=spu a>#endif4gref        	spa. clerr_pcol9sw_am67alua9he socket err_pcol9sw_am67 	sp k_bh"pmtudisocodee"net/sctp/pro14imes="t_se4pa30et_ophD" ce"nnf_splis4	/a>,41" i10href="net/sctp/protocol9	/a>(	ae429s="t_cmp4p;	a href="+code=sct102#L499" i41e=sct103#L599       	spa. cla=spu a>#endif4(&	a href="+code=s4t10214599" i10ode=si>v4	k_bh"lenD" c,  r=spu a>#endif44(&	a href="+codgref        	spa. clerr_v6_pcol9sw_am67alua9he socket err_v6_pcol9sw_am67 	sp k_bh"pmtudisocodee"net/sctp/pro14f	/a> clas4amp;	a href="+code=sct1024L599"42f (sref"MIB_OUTsrefPACKSref="+code=t/4s="t_dgram4connec8_fame_bh	/a>(&4a hre423014L627" clas="8ref">89     pa.14(&a4p;	a 4249" i10ode=si>v4		k_bh"lenD" c,  r=spu a>#endif4addESSref="+code=timesref"PARh4f5s="t_cmp4	/a>(&	a href="+code=4ct10242  	spa. class103#L599       	spa. clpr_erra>#endif4tim95wsk	string">"Failedeef im67ialize	 hrea576.control sock\n"tp/prot) href="net/sctp/protocol9	/a>(	ae4f6s="t_cmp4ssssss	/a>4
643	/a> lengref        	spa. clerr_prl_sock_am67alua9he socket err_prl_sock_am67 	sp k_bh"pmtudisocodee"net/sctp/pro14f se10mp >4amp;	a href="+code=sct1024L599"421014L627" claaef="net/sctp/protocol.c#Lafe=sp/4fmes="t_se4>(&	a href="+code=sct4029L542" i10href="net/sctp/protocol9	/a>(	ae4i9s="t_cmp4en_fame_bh	/a>(&	a hr4f="+c42e=sct103#L599       	spa. cla=spu a>#endif4v4	k_bh"lenD" c,  r=spu a>#endif4 ,  4a>4(&	a href="+codgref        	spa. clerr_an__ocol9	/aalua9he socket err_an__ocol9	/a 	sp k_bh"pmtudisocodee"net/sctp/pro14_	/a> clas4_cneto4_getL630opa_fame_b4	/a>(43f (sref"MIB_OUTsrefPACKSref="+code=t/4_="t_dgram4_bh	/a>(&	a href="+co4e=sct433014L627" clas="8ref">89     pa.14(&am4;	a h43f="+code=sct1k_bh"lenD" c,  r=spu a>#endif4(&	a href="+code=4ct10343  	spa. class>v4	k_bh"lenD" c,  r=spu a>#endif4v4	/a>.	a href="+cod4e||="43.14L643">
643	/a> lengref        	spa. clerr_v6aen__ocol9	/aalua9he socket err_v6aen__ocol9	/a 	sp k_bh"pmtudisocodee"net/sctp/pro14_ se10mp >4if4 ,4 refe43e msg_lass. a>                      /4efame_bh	/4hf="+2/a> ,             /4hf=fe43" i10	a href=       	spa. cla=spu a>#endif4IS_ENABLED	_4clafe439" i1       	spa. cloutclass="line" naout 	sp:ocos="t_seqpa30et_ophref="+code=4	shutdown/4or8s ode=sa_ .552" ces. /4or8>/4499" i10ode=sireturn=       	spa. cla=spu a>#endif4/441014L       	spa. clerr_v6aen__ocol9	/aalua9he socket err_v6aen__ocol9	/a 	sp:ocos="t_seqpa30et_ophref="+code=4		/a> clas4="sref">a	/a>.	a href="!34="s>/441014L622" claw" class="sref" i101v4_del_ocol9	/aalua9he socket returv4_del_ocol9	/a+cod	) href="net/sctp/protocol9	/a>(	ae4ondmsg_fam4Lhton nam.14L669">
66htom4Lht>/443014L       	spa. clerr_an__ocol9	/aalua9he socket err_an__ocol9	/a 	sp:ocos="t_seqpa30et_ophref="+code=4	 630_cnet40f="+1ef">v4	/a>.	a hf="t40f=>/44f="+code=sct1k_bh"lenD" c,  imet_prl_sock_destro href=lass="srefimet_prl_sock_destro +cod	/a>.	a href="+creturprl_sockalua9he socket returprl_sock 	sp) href="net/sctp/protocol9	/a>(	ae4o5s="t_cmp40f="+2ef">v4	/a>.	a hf="b40f=>/44599"        	spa. clerr_prl_sock_am67alua9he socket err_prl_sock_am67 	sp:ocos="t_seqpa30et_ophref="+code=4	6s="t_cmp4Lf="+1ef">v4	/a>.	a hf=""4Lf=>/446="+code=sct1k_bh"lenD" c,  a> /447 	sp       	spa. clerr_v6_pcol9sw_am67alua9he socket err_v6_pcol9sw_am67 	sp:ocos="t_seqpa30et_ophref="+code=4	fame_bh	/4tocol9c#L649" i914L649" /4toc>/44" i10	a href=       	spa. class="v4_pcol9sw_ex67alua9he socket returv4_pcol9sw_ex67+cod	) href="net/sctp/protocol9	/a>(	ae4o9s="t_cmp4ref="+c9de=sin6_addr" cl_4ref>/449" i1       	spa. clerr_pcol9sw_am67alua9he socket err_pcol9sw_am67 	sp:ocos="t_seqpa30et_ophref="+code=45shutdown/4de=NULL"9class="sref">NU/4de=>/4599" i10ode=side=sct1041L599" eturfrea_local1en_l_sistalua9he socket returfrea_local1en_l_sist+cod	) href="net/sctp/protocol9	/a>(	ae45ck_bh"s634class="sref">SCT9_ADDR9534cla>/451="+code=sct1k_bh"lenD" c,   i101v4_pf_ex67alua9he socket returv4_pf_ex67+cod	) href="net/sctp/protocol9	/a>(	ae45ck_bh" 634>
6 looks bindable. rCne34>
6>/451014L622" claw" class="sref" i101v6_pf_ex67alua9he socket returv6_pf_ex67+cod	) href="net/sctp/protocol9	/a>(	ae45ndmsg_fam4t s9 href="+c9de=timeo_vm4t s>/45lass="c10c4L5/a>.	a href="+ca> 1041a>#endifa> /45f="+code=sct1k_bh"lenD" c,  frea_6age a>#endif4 	sp" class="sre9">si101por _hasht>	sp 	sp	s="t_sendmsg class="line" ns="t_455s="t_cmp4ctp/pro class="t_bind_veb4ctp>/45  	spa. class103#L599ct1k_bh"lenD" c,  get_ord0ode>1041a>#endifget_ord0o+cod	/a>.	a href="+creturpor _hashsizea>#endif4 clasL630="st    str"4	/a>/45.14L643">
643	/a> lennnnnnnnnnnnnnsizeofpt()98   break;4si101b/pr_hashbucode 	sp))) href="net/sctp/protocol9	/a>(	ae45 se10mp >4>v4	/a>.	a hrclasv4_avain4>v4>/457 	sp       	spa. clerr_bhash_alloca>#endif4/45" i10	a href=       	spa. clkfreaa>#endif4	sp" class="sre9">si101ep_hasht>	sp 	sp) href="net/sctp/protocol9	/a>(	ae459s="t_cmp4                9     96_4   >/459" i1       	spa. clerr_ehash_alloca>#endif4#endif4 	sp" class="sre9">si101essoc_hasht>	sp 	sp	s="t_sendmsg class="line" ns="t_46ck_bh"s634"c9line" nam914L661">
6634"c9>/46a>(&	a href="+codct1k_bh"lenD" c,  get_ord0ode>1041a>#endifget_ord0o+cod	/a>.	a href="+creturassoc_hashsizea>#endif44si101hashbucode 	spa)) href="net/sctp/protocol9	/a>(	ae46ndmsg_fam4ctp/pro class="t_send_vem4ctp>/463014L       	spa. clerr_ahash_alloca>#endif4/46f="+code=sct1k_bh"lenD" c,  ri101dbg_objcnt_ex67alua9he socket returdbg_objcnt_ex67+cod	) href="net/sctp/protocol9	/a>(	ae46aa_fame_b4#L666" i914L666" class="b4#L6>/46599" i10ref="k_bh"lenD" c,  returproc_ex67alua9he socket returproc_ex67+cod	) href="net/sctp/protocol9	/a>(	ae466s="t_cmp4pt2sk	/a9(	a href="+code"4pt2>/46.14L6       	spa. clerr_am67rproca>#endif4#endif4(	ae46fame_bh	/4Type inform1	/a> "linINI/4Typ>/46ef="+       	spa. clerr_am67rmib a>#endif4.	a href="+creturphunk_cachepalua9he socket returphunk_cachep 	sp) href="net/sctp/protocol9	/a>(	ae47shutdown/4               9     97>/4   >/4799" i       	spa. clerr_phunk_cachepalua9he socket err_phunk_cachep 	sp:ocos="t_seqpa30et_ophref="+code=47ck_bh"s634ctp/pro class="t_suppor834ctp>/471="+code=sct1k_bh"lenD" c,  kmem_cache_destro href=lass="srefkmem_cache_destro +cod	/a>.	a href="+creturbucode_cachepalua9he socket returbucode_cachep 	sp) href="net/sctp/protocol9	/a>(	ae47ck_bh" 63430"kaddr_entry	/a> clasL3430">/471014L622" clagref        	spa. cloutclass="line" naout 	sp href="net/sctp/protocol9	/a>(	ae47ndmsg_fam4ass="sref">IS_ENABLED	/am4ass>/47"+codaef="net/sctp/protocol.c#Lafe=sp/47 630_cnet4de[0]e" nam.14L604">
60st4de[>/47tocol.c#L637" id14L63%s: skb:/47aa_fame_b4dESSD" ck_bh	/a>(&	ab4dES>/47599" 9     96>sk	/	/a>4)->9a href="+code=t"4a>)>/47.14L6       	spa. cla576"STATICdr_entry	/a>nota576"STATIC014L6       	spa. cl__ex67alua9he socket __ex67+cod void a>4/47ef="+4">addESSref="+code=timesref"PARh47fame_bh	/4cole ip transmitlrout="l/4col>/47" i10	a href=      96>sk	/	/a>4	sy=do something useful like cleantp/protocos="t_seqpa30et_ophref="+code=479s="t_cmp4L579" class="line" nam91_4L57>/47e=sct9     96>sk	/	/a>4/4899" i9     96>sk	/	/a>4/48                    	spa. class="c10448ck_bh" 634	/a>s="t_s30"="st    str34	/a>/482014L627" clas="8ref">89     pa.14s="m4="t>/48lass="c10c4L5/a>.	a href="+ca> t4tim>/48f="+code=sct1k_bh"lenD" c,  ri101v4_del_ocol9	/aalua9he socket returv4_del_ocol9	/a+cod	) href="net/sctp/protocol9	/a>(	ae48aa_fame_b437;d, src:%pI4, dst:b437;>/48599" i10ref="k_bh"lenD" c,  returfrea_en_l_wqalua9he socket returfrea_en_l_wq+cod	) href="net/sctp/protocol9	/a>(	ae48f="+cos="4 if ("kbe=spin_lock_bh" "4 if>/48ss="c1048L599" i10mp the v4 addr to t481049a>#en4code=v4" claunam.14L669"n4cod>/481014L627" clas="8ref">89     pa.14/48" i10	a href=       	spa. climet_prl_sock_destro href=lass="srefimet_prl_sock_destro +cod	/a>.	a href="+creturprl_sockalua9he socket returprl_sock 	sp) href="net/sctp/protocol9	/a>(	ae489s="t_cmp4ing">"%pI4pmtud_4ing>/48n_lock_bh"pmtudisocodee"net/sctp/pro149shutdown/4r8e=spin_lock_bh"transpo/4r8e>/490014L627" clas="8ref">89     pa.14aIf"PMTUDISC_DONaD"34ref>/491="+code=sct1k_bh"lenD" c,   eturv6_pcol9sw_ex67alua9he socket returv6_pcol9sw_ex67+cod	) href="net/sctp/protocol9	/a>(	ae49ck_bh" 634esref"INC_STATS/a>      34esr>/491014L622" claw" class="sref" i101v4_pcol9sw_ex67alua9he socket returv4_pcol9sw_ex67+cod	) href="net/sctp/protocol9	/a>(	ae49ndmsg_fam4_OUTsrefPACKScodelk_bh	/m4_OU>/49lass=href="net/sctp/protocol9	/a>(	ae49 630_cnet4w" classtranspor8e=spin_t4w" >/49f="+code=sct1k="8ref">89     pa.1499b4e=n>/49599" i10ref="k_bh"lenD" c,  returfrea_local1en_l_sistalua9he socket returfrea_local1en_l_sist+cod	) href="net/sctp/protocol9	/a>(	ae49f="+cos="4 clasaf/a>  et/sctp/prot"4 cl>/49ss="c1048L599" i10mp the v4 addr to t491049a>#en4&	a href="+code=sct9n4&am>/491014L627" clas="8ref">89     pa.14  et/sctp/prot/4 cl>/49" i10	a href=       	spa. cl i101v6_pf_ex67alua9he socket returv6_pf_ex67+cod	) href="net/sctp/protocol9	/a>(	ae49es="t_tp_4ist	/a>, 	a href="+code=_4ist>/49e=sct103#L599       	spa. clai101v4_pf_ex67alua9he socket returv4_pf_ex67+cod	) href="net/sctp/protocol9	/a>(	ae5ock_bh" cl5sief=_ave68_msgne" /a> , 5refe>5099" ihref="net/sctp/protocol9	/a>(	ae5o1k_bh" cl5sef">aIf"PMTUDISC_DONaD"35     501="+code=sct1k_bh"lenD" c,   etursy/prl_unregist0ode>1041a>#endifa>       35     50f (sref"MIB_OUTsrefPACKSref="+code=t/5b3" clasie5=OUTsrefPACKScodelk_bh	/m5	spa.50lass="c10c4L5/a>.	a href="+cfrea_6age a>#endif4 	sp" class="sre9">si101essoc_hasht>	sp 	sp	s="t_sendmsg class="line" ns="t_5b4" clasie5=" classtranspor8e=spin_t5     50f="+code=sct111111111111k_bh"lenD" c,  get_ord0ode>1041a>#endifget_ord0o+cod	/a>.	a href="+creturassoc_hashsizea>#endif499b5     50  	spa. class103#L599ct11111111111sizeofpt()98   break;4si101hashbucode 	spa)) href="net/sctp/protocol9	/a>(	ae5o6" clasie5=clasaf/a>  et/sctp/prot"5h/a> 506="+code=sct1k_bh"lenD" c,  kfreaa>#endif4	sp" class="sre9">si101ep_hasht>	sp 	sp) href="net/sctp/protocol9	/a>(	ae5y7s="t_cmp5=amp;	a href="+code=sct9n5"/a> 507="+code=sct1k_bh"lenD" c,  frea_6age a>#endif4 	sp" class="sre9">si101por _hasht>	sp 	sp	s="t_sendmsg class="line" ns="t_5b8s="t_cmp5=claspf/a>  et/sctp/prot/5   	s50ef="+code=v4" claipa>111k_bh"lenD" c,  get_ord0ode>1041a>#endifget_ord0o+cod	/a>.	a href="+creturpor _hashsizea>#endif4, 	a href="+code=_5101#L509" i104L609"  claipa>ct11111111111sizeofpt()98   break;4si101b/pr_hashbucode 	sp))) href="net/sctp/protocol9	/a>(	ae52L599" i105p address, empty for v4105p >105199" ihref="net/sctp/protocol9	/a>(	ae521k_bh" cl5">
i	/a>/dele	/a> ave68s.5ra>  511="+code=sct1k_bh"lenD" c,   i101dbg_objcnt_ex67alua9he socket returdbg_objcnt_ex67+cod	) href="net/sctp/protocol9	/a>(	ae522" clasie5ref="+code=addr" class10 5r>104511014L622" claw" class="sref">eturproc_ex67alua9he socket returproc_ex67+cod	) href="net/sctp/protocol9	/a>(	ae523" clasie5="sres="t">
6_notifierD" 5e"nnf51lass="c10c4L5/a>.	a href="+ccleanu#endif4(	ae5bh" class=5t">
6_ave68/a> ,         5     51tocol.c#L637" id14L63%s: skb:/5b5" clasie54L616" class="line" nam1054L>1051599" i10ref="k_bh"lenD" c,  rcu_barri0ode>1041a>#endifrcu_barri0o+cod	) as="8ref">89     pa.14504tate	pa.14.	a href="+creturphunk_cachepalua9he socket returphunk_cachep 	sp) href="net/sctp/protocol9	/a>(	ae5imes="t_se5pa30et_ophD" ce"nnf_splis5	/a>,51" i10	a href=       	spa. clkmem_cache_destro href=lass="srefkmem_cache_destro +cod	/a>.	a href="+creturbucode_cachepalua9he socket returbucode_cachep 	sp) href="net/sctp/protocol9	/a>(	ae529s="t_cmp5p;	a href="+code=sct102#L599" i51e=sctaef="net/sctp/protocol.c#Lafe=sp/5fL599" i105/a>(&	a href="+code=s5t10215299" ihref="net/sctp/protocol9	/a>(	ae5fh" clasie5ssssss	/a>4.	a href="+creturam67alua9he socket returam67+cod) href="net/sctp/protocol9	/a>(	ae5f	/a> clas5amp;	a href="+code=sct1025L599"52f (sr       	spa. clmodule_ex67alua9he socket module_ex67+cod	/a>.	a href="+creturex67alua9he socket returex67+cod) href="net/sctp/protocol9	/a>(	ae5f3" clasie5connec8_fame_bh	/a>(&5a hre52lass=href="net/sctp/protocol9	/a>(	ae5fh" class=5L630etpair_fame_bh	/a>(&a5p;	a 5249" is="8ref">89     pa.14(&	a href="+code=5ct10252599" 9     96>sk	/	/a>44sk	/	/a>45amp;	a href="+code=sct1025L599"527 	sp       	spa. clMODULE_ALIASalua9he socket MODULE_ALIAS+cod	/9">tim95wsk	string">"qpa-pf-"tp/prot6       	spa. cl__stringifyalua9he socket __stringify+cod	/a>.	a href="+cPF_INE4tim95wsk	string">"-phref-132"tp/prot) href="net/sctp/protocol9	/a>(	ae5fmes="t_se5>(&	a href="+code=sct5029L552ef="+       	spa. clMODULE_ALIASalua9he socket MODULE_ALIAS+cod	/9">tim95wsk	string">"qpa-pf-"tp/prot6       	spa. cl__stringifyalua9he socket __stringify+cod	/a>.	a href="+cPF_INE46tim95wsk	string">"-phref-132"tp/prot) href="net/sctp/protocol9	/a>(	ae5f9s="t_cmp5en_fame_bh	/a>(&	a hr5f="+c529" i1       	spa. clMODULE_AUTHORalua9he socket MODULE_AUTHOR+cod	/9">tim95wsk	string">"Linux Kernelea576.developersp<lk/pro-developers@sists.sourcer_bge.sct>"tp/prot) href="net/sctp/protocol9	/a>(	ae5_shutdown/5>  sssss	/a>41049aMODULE_DESCRIPTION+cod	/9">tim95wsk	string">"Suppor  r_bl hrea576.p;s: skb (RFC2960)"tp/prot) href="net/sctp/protocol9	/a>(	ae5_h" clasie5_cneto4_setL630opa/a> ,  5a>4dalua9he socket module_param_a/a>d+cod	/a>.	a href="+cnorphecksumsalua9he socket norphecksums 	sp	a/a>.	a href="+creturphecksum_dis>	spalua9he socket returphecksum_dis>	sp 	sp	a/a>.	a href="+cbo/aalua9he socket bo/a 	sp	a0644) href="net/sctp/protocol9	/a>(	ae5_	/a> clas5_cneto4_getL630opa_fame_b5	/a>(53f (sr       	spa. clMODULE_PARM_DESClass10 hr>1049aMODULE_PARM_DESC+cod	/a>.	a href="+cnorphecksumsalua9he socket norphecksums 	sp	a/9">tim95wsk	string">"Dis>	sp phecksumsl   put6ng and verificafier"tp/prot) href="net/sctp/protocol9	/a>(	ae5_3" clasie5_bh	/a>(&	a href="+co5e=sct533014L       	spa. clMODULE_LICENSElass10 hr>1049aMODULE_LICENSE+cod	/9">tim95wsk	string">"GPL"tp/prot) href="net/sctp/protocol9	/a>(	ae5_h" class=54_recvmsg_fame_bh	/a>(&am5;	a h53f="+c





Threoriginal LXR software.by	 hreref="net/http://sourcer_bge.scttocojeprs/lxod>LXR 	/a>um67y 	sp	athis experi>4lxo@sinux.no 	sp.


lxo.sinux.no kindly hostedebyeref="net/http://www.redpill-sinoco.no">Redpill Linoco AS+cod,.p;svidermof Linux consult6ng and operafiers	services since 1995.