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 ---