diff options
Diffstat (limited to 'net/ipv4/gre_demux.c')
-rw-r--r-- | net/ipv4/gre_demux.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c index 1863422fb7d5..250be7421ab3 100644 --- a/net/ipv4/gre_demux.c +++ b/net/ipv4/gre_demux.c | |||
@@ -182,6 +182,14 @@ static int gre_cisco_rcv(struct sk_buff *skb) | |||
182 | int i; | 182 | int i; |
183 | bool csum_err = false; | 183 | bool csum_err = false; |
184 | 184 | ||
185 | #ifdef CONFIG_NET_IPGRE_BROADCAST | ||
186 | if (ipv4_is_multicast(ip_hdr(skb)->daddr)) { | ||
187 | /* Looped back packet, drop it! */ | ||
188 | if (rt_is_output_route(skb_rtable(skb))) | ||
189 | goto drop; | ||
190 | } | ||
191 | #endif | ||
192 | |||
185 | if (parse_gre_header(skb, &tpi, &csum_err) < 0) | 193 | if (parse_gre_header(skb, &tpi, &csum_err) < 0) |
186 | goto drop; | 194 | goto drop; |
187 | 195 | ||