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 e446496f564f..1cc339441e7d 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1988,8 +1988,13 @@ static int __mkroute_input(struct sk_buff *skb, | |||
1988 | if (skb->protocol != htons(ETH_P_IP)) { | 1988 | if (skb->protocol != htons(ETH_P_IP)) { |
1989 | /* Not IP (i.e. ARP). Do not create route, if it is | 1989 | /* Not IP (i.e. ARP). Do not create route, if it is |
1990 | * invalid for proxy arp. DNAT routes are always valid. | 1990 | * invalid for proxy arp. DNAT routes are always valid. |
1991 | * | ||
1992 | * Proxy arp feature have been extended to allow, ARP | ||
1993 | * replies back to the same interface, to support | ||
1994 | * Private VLAN switch technologies. See arp.c. | ||
1991 | */ | 1995 | */ |
1992 | if (out_dev == in_dev) { | 1996 | if (out_dev == in_dev && |
1997 | IN_DEV_PROXY_ARP_PVLAN(in_dev) == 0) { | ||
1993 | err = -EINVAL; | 1998 | err = -EINVAL; |
1994 | goto cleanup; | 1999 | goto cleanup; |
1995 | } | 2000 | } |