]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ipv4/ip_vti.c
Merge tag 'armsoc-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / net / ipv4 / ip_vti.c
index 94efe148181cde3bef3b58ad8d6dd32deee8747f..9f7269f3c54af2ecbc74db4ec2c0f71d5184dc1c 100644 (file)
@@ -60,7 +60,7 @@ static int vti_input(struct sk_buff *skb, int nexthdr, __be32 spi,
 
        tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, TUNNEL_NO_KEY,
                                  iph->saddr, iph->daddr, 0);
-       if (tunnel != NULL) {
+       if (tunnel) {
                if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb))
                        goto drop;
 
@@ -341,6 +341,7 @@ static const struct net_device_ops vti_netdev_ops = {
        .ndo_do_ioctl   = vti_tunnel_ioctl,
        .ndo_change_mtu = ip_tunnel_change_mtu,
        .ndo_get_stats64 = ip_tunnel_get_stats64,
+       .ndo_get_iflink = ip_tunnel_get_iflink,
 };
 
 static void vti_tunnel_setup(struct net_device *dev)
@@ -361,7 +362,6 @@ static int vti_tunnel_init(struct net_device *dev)
        dev->hard_header_len    = LL_MAX_HEADER + sizeof(struct iphdr);
        dev->mtu                = ETH_DATA_LEN;
        dev->flags              = IFF_NOARP;
-       dev->iflink             = 0;
        dev->addr_len           = 4;
        dev->features           |= NETIF_F_LLTX;
        netif_keep_dst(dev);
@@ -456,10 +456,10 @@ static void vti_netlink_parms(struct nlattr *data[],
                parms->o_key = nla_get_be32(data[IFLA_VTI_OKEY]);
 
        if (data[IFLA_VTI_LOCAL])
-               parms->iph.saddr = nla_get_be32(data[IFLA_VTI_LOCAL]);
+               parms->iph.saddr = nla_get_in_addr(data[IFLA_VTI_LOCAL]);
 
        if (data[IFLA_VTI_REMOTE])
-               parms->iph.daddr = nla_get_be32(data[IFLA_VTI_REMOTE]);
+               parms->iph.daddr = nla_get_in_addr(data[IFLA_VTI_REMOTE]);
 
 }
 
@@ -505,8 +505,8 @@ static int vti_fill_info(struct sk_buff *skb, const struct net_device *dev)
        nla_put_u32(skb, IFLA_VTI_LINK, p->link);
        nla_put_be32(skb, IFLA_VTI_IKEY, p->i_key);
        nla_put_be32(skb, IFLA_VTI_OKEY, p->o_key);
-       nla_put_be32(skb, IFLA_VTI_LOCAL, p->iph.saddr);
-       nla_put_be32(skb, IFLA_VTI_REMOTE, p->iph.daddr);
+       nla_put_in_addr(skb, IFLA_VTI_LOCAL, p->iph.saddr);
+       nla_put_in_addr(skb, IFLA_VTI_REMOTE, p->iph.daddr);
 
        return 0;
 }