ip_output.c (f76bd108e5031202bb40849306f98c4afebe4ef6) | ip_output.c (6ce9e7b5fe3195d1ae6e3a0753d4ddcac5cd699e) |
---|---|
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 --- 799 unchanged lines hidden (view full) --- 808 if (unlikely(inet->cork.opt == NULL)) 809 return -ENOBUFS; 810 } 811 memcpy(inet->cork.opt, opt, sizeof(struct ip_options)+opt->optlen); 812 inet->cork.flags |= IPCORK_OPT; 813 inet->cork.addr = ipc->addr; 814 } 815 rt = *rtp; | 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 --- 799 unchanged lines hidden (view full) --- 808 if (unlikely(inet->cork.opt == NULL)) 809 return -ENOBUFS; 810 } 811 memcpy(inet->cork.opt, opt, sizeof(struct ip_options)+opt->optlen); 812 inet->cork.flags |= IPCORK_OPT; 813 inet->cork.addr = ipc->addr; 814 } 815 rt = *rtp; |
816 if (unlikely(!rt)) 817 return -EFAULT; | |
818 /* 819 * We steal reference to this route, caller should not release it 820 */ 821 *rtp = NULL; 822 inet->cork.fragsize = mtu = inet->pmtudisc == IP_PMTUDISC_PROBE ? 823 rt->u.dst.dev->mtu : 824 dst_mtu(rt->u.dst.path); 825 inet->cork.dst = &rt->u.dst; --- 473 unchanged lines hidden (view full) --- 1299 if (iph->protocol == IPPROTO_ICMP) 1300 icmp_out_count(net, ((struct icmphdr *) 1301 skb_transport_header(skb))->type); 1302 1303 /* Netfilter gets whole the not fragmented skb. */ 1304 err = ip_local_out(skb); 1305 if (err) { 1306 if (err > 0) | 816 /* 817 * We steal reference to this route, caller should not release it 818 */ 819 *rtp = NULL; 820 inet->cork.fragsize = mtu = inet->pmtudisc == IP_PMTUDISC_PROBE ? 821 rt->u.dst.dev->mtu : 822 dst_mtu(rt->u.dst.path); 823 inet->cork.dst = &rt->u.dst; --- 473 unchanged lines hidden (view full) --- 1297 if (iph->protocol == IPPROTO_ICMP) 1298 icmp_out_count(net, ((struct icmphdr *) 1299 skb_transport_header(skb))->type); 1300 1301 /* Netfilter gets whole the not fragmented skb. */ 1302 err = ip_local_out(skb); 1303 if (err) { 1304 if (err > 0) |
1307 err = inet->recverr ? net_xmit_errno(err) : 0; | 1305 err = net_xmit_errno(err); |
1308 if (err) 1309 goto error; 1310 } 1311 1312out: 1313 ip_cork_release(inet); 1314 return err; 1315 --- 122 unchanged lines hidden --- | 1306 if (err) 1307 goto error; 1308 } 1309 1310out: 1311 ip_cork_release(inet); 1312 return err; 1313 --- 122 unchanged lines hidden --- |