diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 36 |
1 files changed, 5 insertions, 31 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 9bb8f87c4cda..99e1d759f41e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -1617,10 +1617,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) | |||
| 1617 | return NET_RX_DROP; | 1617 | return NET_RX_DROP; |
| 1618 | } | 1618 | } |
| 1619 | skb->skb_iif = 0; | 1619 | skb->skb_iif = 0; |
| 1620 | skb_set_dev(skb, dev); | 1620 | skb->dev = dev; |
| 1621 | skb_dst_drop(skb); | ||
| 1621 | skb->tstamp.tv64 = 0; | 1622 | skb->tstamp.tv64 = 0; |
| 1622 | skb->pkt_type = PACKET_HOST; | 1623 | skb->pkt_type = PACKET_HOST; |
| 1623 | skb->protocol = eth_type_trans(skb, dev); | 1624 | skb->protocol = eth_type_trans(skb, dev); |
| 1625 | skb->mark = 0; | ||
| 1626 | secpath_reset(skb); | ||
| 1627 | nf_reset(skb); | ||
| 1624 | return netif_rx(skb); | 1628 | return netif_rx(skb); |
| 1625 | } | 1629 | } |
| 1626 | EXPORT_SYMBOL_GPL(dev_forward_skb); | 1630 | EXPORT_SYMBOL_GPL(dev_forward_skb); |
| @@ -1869,36 +1873,6 @@ void netif_device_attach(struct net_device *dev) | |||
| 1869 | } | 1873 | } |
| 1870 | EXPORT_SYMBOL(netif_device_attach); | 1874 | EXPORT_SYMBOL(netif_device_attach); |
| 1871 | 1875 | ||
| 1872 | /** | ||
| 1873 | * skb_dev_set -- assign a new device to a buffer | ||
| 1874 | * @skb: buffer for the new device | ||
| 1875 | * @dev: network device | ||
| 1876 | * | ||
| 1877 | * If an skb is owned by a device already, we have to reset | ||
| 1878 | * all data private to the namespace a device belongs to | ||
| 1879 | * before assigning it a new device. | ||
| 1880 | */ | ||
| 1881 | #ifdef CONFIG_NET_NS | ||
| 1882 | void skb_set_dev(struct sk_buff *skb, struct net_device *dev) | ||
| 1883 | { | ||
| 1884 | skb_dst_drop(skb); | ||
| 1885 | if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { | ||
| 1886 | secpath_reset(skb); | ||
| 1887 | nf_reset(skb); | ||
| 1888 | skb_init_secmark(skb); | ||
| 1889 | skb->mark = 0; | ||
| 1890 | skb->priority = 0; | ||
| 1891 | skb->nf_trace = 0; | ||
| 1892 | skb->ipvs_property = 0; | ||
| 1893 | #ifdef CONFIG_NET_SCHED | ||
| 1894 | skb->tc_index = 0; | ||
| 1895 | #endif | ||
| 1896 | } | ||
| 1897 | skb->dev = dev; | ||
| 1898 | } | ||
| 1899 | EXPORT_SYMBOL(skb_set_dev); | ||
| 1900 | #endif /* CONFIG_NET_NS */ | ||
| 1901 | |||
| 1902 | static void skb_warn_bad_offload(const struct sk_buff *skb) | 1876 | static void skb_warn_bad_offload(const struct sk_buff *skb) |
| 1903 | { | 1877 | { |
| 1904 | static const netdev_features_t null_features = 0; | 1878 | static const netdev_features_t null_features = 0; |
