Merge remote-tracking branches 'regmap/topic/debugfs' and 'regmap/topic/force-update...
[firefly-linux-kernel-4.4.55.git] / net / ipv4 / ip_gre.c
index 6207275fc749fc52f00e63d6cae212148a791f1b..5fd706473c733402c9aad9c6c30466549de8c54d 100644 (file)
@@ -182,7 +182,7 @@ static int ipgre_err(struct sk_buff *skb, u32 info,
        t = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags,
                             iph->daddr, iph->saddr, tpi->key);
 
-       if (t == NULL)
+       if (!t)
                return PACKET_REJECT;
 
        if (t->parms.iph.daddr == 0 ||
@@ -423,7 +423,7 @@ static int ipgre_open(struct net_device *dev)
                        return -EADDRNOTAVAIL;
                dev = rt->dst.dev;
                ip_rt_put(rt);
-               if (__in_dev_get_rtnl(dev) == NULL)
+               if (!__in_dev_get_rtnl(dev))
                        return -EADDRNOTAVAIL;
                t->mlink = dev->ifindex;
                ip_mc_inc_group(__in_dev_get_rtnl(dev), t->parms.iph.daddr);
@@ -456,6 +456,7 @@ static const struct net_device_ops ipgre_netdev_ops = {
        .ndo_do_ioctl           = ipgre_tunnel_ioctl,
        .ndo_change_mtu         = ip_tunnel_change_mtu,
        .ndo_get_stats64        = ip_tunnel_get_stats64,
+       .ndo_get_iflink         = ip_tunnel_get_iflink,
 };
 
 #define GRE_FEATURES (NETIF_F_SG |             \
@@ -621,10 +622,10 @@ static void ipgre_netlink_parms(struct nlattr *data[], struct nlattr *tb[],
                parms->o_key = nla_get_be32(data[IFLA_GRE_OKEY]);
 
        if (data[IFLA_GRE_LOCAL])
-               parms->iph.saddr = nla_get_be32(data[IFLA_GRE_LOCAL]);
+               parms->iph.saddr = nla_get_in_addr(data[IFLA_GRE_LOCAL]);
 
        if (data[IFLA_GRE_REMOTE])
-               parms->iph.daddr = nla_get_be32(data[IFLA_GRE_REMOTE]);
+               parms->iph.daddr = nla_get_in_addr(data[IFLA_GRE_REMOTE]);
 
        if (data[IFLA_GRE_TTL])
                parms->iph.ttl = nla_get_u8(data[IFLA_GRE_TTL]);
@@ -686,6 +687,7 @@ static const struct net_device_ops gre_tap_netdev_ops = {
        .ndo_validate_addr      = eth_validate_addr,
        .ndo_change_mtu         = ip_tunnel_change_mtu,
        .ndo_get_stats64        = ip_tunnel_get_stats64,
+       .ndo_get_iflink         = ip_tunnel_get_iflink,
 };
 
 static void ipgre_tap_setup(struct net_device *dev)
@@ -776,8 +778,8 @@ static int ipgre_fill_info(struct sk_buff *skb, const struct net_device *dev)
            nla_put_be16(skb, IFLA_GRE_OFLAGS, tnl_flags_to_gre_flags(p->o_flags)) ||
            nla_put_be32(skb, IFLA_GRE_IKEY, p->i_key) ||
            nla_put_be32(skb, IFLA_GRE_OKEY, p->o_key) ||
-           nla_put_be32(skb, IFLA_GRE_LOCAL, p->iph.saddr) ||
-           nla_put_be32(skb, IFLA_GRE_REMOTE, p->iph.daddr) ||
+           nla_put_in_addr(skb, IFLA_GRE_LOCAL, p->iph.saddr) ||
+           nla_put_in_addr(skb, IFLA_GRE_REMOTE, p->iph.daddr) ||
            nla_put_u8(skb, IFLA_GRE_TTL, p->iph.ttl) ||
            nla_put_u8(skb, IFLA_GRE_TOS, p->iph.tos) ||
            nla_put_u8(skb, IFLA_GRE_PMTUDISC,