Bug 105091
Summary: | ICMP unreachable is not sent when receiving GRE packets on device that has no tunnel interface | ||
---|---|---|---|
Product: | Networking | Reporter: | Isaac Lee (isaac.lee) |
Component: | IPV4 | Assignee: | Stephen Hemminger (stephen) |
Status: | NEW --- | ||
Severity: | low | CC: | isaac.lee, szg00000 |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 4.2 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Attachments: | fix patch |
Created attachment 188691 [details] fix patch This used to work in version 3.9. In file ip_gre.c, when a GRE packet is received and tunnel lookup returned NULL (ie, no such interface), ipgre_rcv() calls icmp_send() to respond with port unreachable message. In the latest version, gre_demux.c tries to do the same thing in gre_cisco_rcv(), but icmp_send fails because skb dst entry has been dropped (during parse_gre_header() -> iptunnel_pull_header() -> skb_dst_drop(skb);) prior to calling icmp_send, causing icmp_send to return early due to rt is NULL. A fix patch is attached.