Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Resolved kernel/bpf/btf.c using instructions from merge commit
69138b34a7
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -406,19 +406,34 @@ free_dst:
|
||||
return err;
|
||||
}
|
||||
|
||||
static bool bareudp_proto_valid(struct bareudp_dev *bareudp, __be16 proto)
|
||||
{
|
||||
if (bareudp->ethertype == proto)
|
||||
return true;
|
||||
|
||||
if (!bareudp->multi_proto_mode)
|
||||
return false;
|
||||
|
||||
if (bareudp->ethertype == htons(ETH_P_MPLS_UC) &&
|
||||
proto == htons(ETH_P_MPLS_MC))
|
||||
return true;
|
||||
|
||||
if (bareudp->ethertype == htons(ETH_P_IP) &&
|
||||
proto == htons(ETH_P_IPV6))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static netdev_tx_t bareudp_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct bareudp_dev *bareudp = netdev_priv(dev);
|
||||
struct ip_tunnel_info *info = NULL;
|
||||
int err;
|
||||
|
||||
if (skb->protocol != bareudp->ethertype) {
|
||||
if (!bareudp->multi_proto_mode ||
|
||||
(skb->protocol != htons(ETH_P_MPLS_MC) &&
|
||||
skb->protocol != htons(ETH_P_IPV6))) {
|
||||
err = -EINVAL;
|
||||
goto tx_error;
|
||||
}
|
||||
if (!bareudp_proto_valid(bareudp, skb->protocol)) {
|
||||
err = -EINVAL;
|
||||
goto tx_error;
|
||||
}
|
||||
|
||||
info = skb_tunnel_info(skb);
|
||||
|
||||
Reference in New Issue
Block a user