diff options
Diffstat (limited to 'net/ipv4/route.c')
-rw-r--r-- | net/ipv4/route.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index d62b05d33384..b16dfadbe6d6 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1990,8 +1990,13 @@ static int __mkroute_input(struct sk_buff *skb, | |||
1990 | if (skb->protocol != htons(ETH_P_IP)) { | 1990 | if (skb->protocol != htons(ETH_P_IP)) { |
1991 | /* Not IP (i.e. ARP). Do not create route, if it is | 1991 | /* Not IP (i.e. ARP). Do not create route, if it is |
1992 | * invalid for proxy arp. DNAT routes are always valid. | 1992 | * invalid for proxy arp. DNAT routes are always valid. |
1993 | * | ||
1994 | * Proxy arp feature have been extended to allow, ARP | ||
1995 | * replies back to the same interface, to support | ||
1996 | * Private VLAN switch technologies. See arp.c. | ||
1993 | */ | 1997 | */ |
1994 | if (out_dev == in_dev) { | 1998 | if (out_dev == in_dev && |
1999 | IN_DEV_PROXY_ARP_PVLAN(in_dev) == 0) { | ||
1995 | err = -EINVAL; | 2000 | err = -EINVAL; |
1996 | goto cleanup; | 2001 | goto cleanup; |
1997 | } | 2002 | } |