@@ -163,6 +163,7 @@ static inline int icmpv6_xrlim_allow(struct sock *sk, int type,
163163 struct flowi * fl )
164164{
165165 struct dst_entry * dst ;
166+ struct net * net = sk -> sk_net ;
166167 int res = 0 ;
167168
168169 /* Informational messages are not limited. */
@@ -178,15 +179,15 @@ static inline int icmpv6_xrlim_allow(struct sock *sk, int type,
178179 * XXX: perhaps the expire for routing entries cloned by
179180 * this lookup should be more aggressive (not longer than timeout).
180181 */
181- dst = ip6_route_output (& init_net , sk , fl );
182+ dst = ip6_route_output (net , sk , fl );
182183 if (dst -> error ) {
183184 IP6_INC_STATS (ip6_dst_idev (dst ),
184185 IPSTATS_MIB_OUTNOROUTES );
185186 } else if (dst -> dev && (dst -> dev -> flags & IFF_LOOPBACK )) {
186187 res = 1 ;
187188 } else {
188189 struct rt6_info * rt = (struct rt6_info * )dst ;
189- int tmo = init_net . ipv6 .sysctl .icmpv6_time ;
190+ int tmo = net -> ipv6 .sysctl .icmpv6_time ;
190191
191192 /* Give more bandwidth to wider prefixes. */
192193 if (rt -> rt6i_dst .plen < 128 )
@@ -305,6 +306,7 @@ static inline void mip6_addr_swap(struct sk_buff *skb) {}
305306void icmpv6_send (struct sk_buff * skb , int type , int code , __u32 info ,
306307 struct net_device * dev )
307308{
309+ struct net * net = skb -> dev -> nd_net ;
308310 struct inet6_dev * idev = NULL ;
309311 struct ipv6hdr * hdr = ipv6_hdr (skb );
310312 struct sock * sk ;
@@ -334,7 +336,7 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
334336 */
335337 addr_type = ipv6_addr_type (& hdr -> daddr );
336338
337- if (ipv6_chk_addr (& init_net , & hdr -> daddr , skb -> dev , 0 ))
339+ if (ipv6_chk_addr (net , & hdr -> daddr , skb -> dev , 0 ))
338340 saddr = & hdr -> daddr ;
339341
340342 /*
@@ -391,7 +393,7 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
391393 fl .fl_icmp_code = code ;
392394 security_skb_classify_flow (skb , & fl );
393395
394- sk = icmpv6_sk (& init_net );
396+ sk = icmpv6_sk (net );
395397 np = inet6_sk (sk );
396398
397399 if (icmpv6_xmit_lock (sk ))
@@ -507,6 +509,7 @@ EXPORT_SYMBOL(icmpv6_send);
507509
508510static void icmpv6_echo_reply (struct sk_buff * skb )
509511{
512+ struct net * net = skb -> dev -> nd_net ;
510513 struct sock * sk ;
511514 struct inet6_dev * idev ;
512515 struct ipv6_pinfo * np ;
@@ -537,7 +540,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
537540 fl .fl_icmp_type = ICMPV6_ECHO_REPLY ;
538541 security_skb_classify_flow (skb , & fl );
539542
540- sk = icmpv6_sk (& init_net );
543+ sk = icmpv6_sk (net );
541544 np = inet6_sk (sk );
542545
543546 if (icmpv6_xmit_lock (sk ))
0 commit comments