diff options
Diffstat (limited to 'drivers/net/geneve.c')
| -rw-r--r-- | drivers/net/geneve.c | 11 | 
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index 89ff7f8e8c7e..78f9d588f712 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -365,13 +365,6 @@ static int geneve_udp_encap_recv(struct sock *sk, struct sk_buff *skb)  	if (unlikely(geneveh->ver != GENEVE_VER))  		goto drop; -	inner_proto = geneveh->proto_type; - -	if (unlikely((inner_proto != htons(ETH_P_TEB) && -		      inner_proto != htons(ETH_P_IP) && -		      inner_proto != htons(ETH_P_IPV6)))) -		goto drop; -  	gs = rcu_dereference_sk_user_data(sk);  	if (!gs)  		goto drop; @@ -380,6 +373,8 @@ static int geneve_udp_encap_recv(struct sock *sk, struct sk_buff *skb)  	if (!geneve)  		goto drop; +	inner_proto = geneveh->proto_type; +  	if (unlikely((!geneve->cfg.inner_proto_inherit &&  		      inner_proto != htons(ETH_P_TEB)))) {  		geneve->dev->stats.rx_dropped++; @@ -1426,7 +1421,7 @@ static int geneve_configure(struct net *net, struct net_device *dev,  		dev->type = ARPHRD_NONE;  		dev->hard_header_len = 0;  		dev->addr_len = 0; -		dev->flags = IFF_NOARP; +		dev->flags = IFF_POINTOPOINT | IFF_NOARP;  	}  	err = register_netdevice(dev);  |