ip_output.c (2e77d89b2fa8e3f8325b8ce7893ec3645f41aff5) | ip_output.c (a21bba945430f3f5e00c349665f88cdacdb32a8d) |
---|---|
1/* 2 * INET An implementation of the TCP/IP protocol suite for the LINUX 3 * operating system. INET is implemented using the BSD Socket 4 * interface as the means of communication with the user level. 5 * 6 * The Internet Protocol (IP) output module. 7 * 8 * Authors: Ross Biro --- 1270 unchanged lines hidden (view full) --- 1279 ip_select_ident(iph, &rt->u.dst, sk); 1280 iph->ttl = ttl; 1281 iph->protocol = sk->sk_protocol; 1282 iph->saddr = rt->rt_src; 1283 iph->daddr = rt->rt_dst; 1284 1285 skb->priority = sk->sk_priority; 1286 skb->mark = sk->sk_mark; | 1/* 2 * INET An implementation of the TCP/IP protocol suite for the LINUX 3 * operating system. INET is implemented using the BSD Socket 4 * interface as the means of communication with the user level. 5 * 6 * The Internet Protocol (IP) output module. 7 * 8 * Authors: Ross Biro --- 1270 unchanged lines hidden (view full) --- 1279 ip_select_ident(iph, &rt->u.dst, sk); 1280 iph->ttl = ttl; 1281 iph->protocol = sk->sk_protocol; 1282 iph->saddr = rt->rt_src; 1283 iph->daddr = rt->rt_dst; 1284 1285 skb->priority = sk->sk_priority; 1286 skb->mark = sk->sk_mark; |
1287 skb->dst = dst_clone(&rt->u.dst); | 1287 /* 1288 * Steal rt from cork.dst to avoid a pair of atomic_inc/atomic_dec 1289 * on dst refcount 1290 */ 1291 inet->cork.dst = NULL; 1292 skb->dst = &rt->u.dst; |
1288 1289 if (iph->protocol == IPPROTO_ICMP) 1290 icmp_out_count(net, ((struct icmphdr *) 1291 skb_transport_header(skb))->type); 1292 1293 /* Netfilter gets whole the not fragmented skb. */ 1294 err = ip_local_out(skb); 1295 if (err) { --- 131 unchanged lines hidden --- | 1293 1294 if (iph->protocol == IPPROTO_ICMP) 1295 icmp_out_count(net, ((struct icmphdr *) 1296 skb_transport_header(skb))->type); 1297 1298 /* Netfilter gets whole the not fragmented skb. */ 1299 err = ip_local_out(skb); 1300 if (err) { --- 131 unchanged lines hidden --- |