On Fri, Apr 22, 2016 at 10:44 AM, Jiri Benc <jb...@redhat.com> wrote: > In ipgre mode (i.e. not gretap) with collect metadata flag set, the tunnel > is incorrectly assumed to be mGRE in NBMA mode (see commit 6a5f44d7a048c). > This is not the case, we're controlling the encapsulation addresses by > lwtunnel metadata. And anyway, assigning dev->header_ops in collect metadata > mode does not make sense. > > Fixes: 2e15ea390e6f4 ("ip_gre: Add support to collect tunnel metadata.") > Signed-off-by: Jiri Benc <jb...@redhat.com> > --- > net/ipv4/ip_gre.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c > index af5d1f38217f..d0abde4236af 100644 > --- a/net/ipv4/ip_gre.c > +++ b/net/ipv4/ip_gre.c > @@ -893,7 +893,7 @@ static int ipgre_tunnel_init(struct net_device *dev) > netif_keep_dst(dev); > dev->addr_len = 4; > > - if (iph->daddr) { > + if (iph->daddr && !tunnel->collect_md) { > #ifdef CONFIG_NET_IPGRE_BROADCAST > if (ipv4_is_multicast(iph->daddr)) { > if (!iph->saddr) > @@ -902,8 +902,9 @@ static int ipgre_tunnel_init(struct net_device *dev) > dev->header_ops = &ipgre_header_ops; > } > #endif
I think we should we return error in case of such configuration rather than silently ignoring it.