mpls: fix sending of local encapped packets
authorRobert Shearman <rshearma@brocade.com>
Mon, 7 Dec 2015 12:53:15 +0000 (12:53 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 7 Dec 2015 21:32:47 +0000 (16:32 -0500)
commitfe82b3300ec9c0dc4ba871f9a58b265aadf4e186
tree428a9c9f56dd83e13bc4b1570cb7b26d2927ecf4
parentd445ed9bd78d2a626e0f16206c68541888aef28c
mpls: fix sending of local encapped packets

Locally generated IPv4 and (probably) IPv6 packets are dropped because
skb->protocol isn't set. We could write wrappers to lwtunnel_output
for IPv4 and IPv6 that set the protocol accordingly and then call
lwtunnel_output, but mpls_output relies on the AF-specific type of dst
anyway to get the via address.

Therefore, make use of dst->dst_ops->family in mpls_output to
determine the type of nexthop and thus protocol of the packet instead
of checking skb->protocol.

Fixes: 61adedf3e3f1 ("route: move lwtunnel state to dst_entry")
Reported-by: Sam Russell <sam.h.russell@gmail.com>
Signed-off-by: Robert Shearman <rshearma@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mpls/mpls_iptunnel.c