ipv6: Convert to use flowi6 where applicable.
[pandora-kernel.git] / net / ipv6 / ip6mr.c
index 0e1d53b..7ff0343 100644 (file)
@@ -135,14 +135,15 @@ static struct mr6_table *ip6mr_get_table(struct net *net, u32 id)
        return NULL;
 }
 
-static int ip6mr_fib_lookup(struct net *net, struct flowi *flp,
+static int ip6mr_fib_lookup(struct net *net, struct flowi6 *flp6,
                            struct mr6_table **mrt)
 {
        struct ip6mr_result res;
        struct fib_lookup_arg arg = { .result = &res, };
        int err;
 
-       err = fib_rules_lookup(net->ipv6.mr6_rules_ops, flp, 0, &arg);
+       err = fib_rules_lookup(net->ipv6.mr6_rules_ops,
+                              flowi6_to_flowi(flp6), 0, &arg);
        if (err < 0)
                return err;
        *mrt = res.mrt;
@@ -270,7 +271,7 @@ static struct mr6_table *ip6mr_get_table(struct net *net, u32 id)
        return net->ipv6.mrt6;
 }
 
-static int ip6mr_fib_lookup(struct net *net, struct flowi *flp,
+static int ip6mr_fib_lookup(struct net *net, struct flowi6 *flp6,
                            struct mr6_table **mrt)
 {
        *mrt = net->ipv6.mrt6;
@@ -617,9 +618,9 @@ static int pim6_rcv(struct sk_buff *skb)
        struct net_device  *reg_dev = NULL;
        struct net *net = dev_net(skb->dev);
        struct mr6_table *mrt;
-       struct flowi fl = {
-               .iif    = skb->dev->ifindex,
-               .mark   = skb->mark,
+       struct flowi6 fl6 = {
+               .flowi6_iif     = skb->dev->ifindex,
+               .flowi6_mark    = skb->mark,
        };
        int reg_vif_num;
 
@@ -644,7 +645,7 @@ static int pim6_rcv(struct sk_buff *skb)
            ntohs(encap->payload_len) + sizeof(*pim) > skb->len)
                goto drop;
 
-       if (ip6mr_fib_lookup(net, &fl, &mrt) < 0)
+       if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0)
                goto drop;
        reg_vif_num = mrt->mroute_reg_vif_num;
 
@@ -687,14 +688,14 @@ static netdev_tx_t reg_vif_xmit(struct sk_buff *skb,
 {
        struct net *net = dev_net(dev);
        struct mr6_table *mrt;
-       struct flowi fl = {
-               .oif            = dev->ifindex,
-               .iif            = skb->skb_iif,
-               .mark           = skb->mark,
+       struct flowi6 fl6 = {
+               .flowi6_oif     = dev->ifindex,
+               .flowi6_iif     = skb->skb_iif,
+               .flowi6_mark    = skb->mark,
        };
        int err;
 
-       err = ip6mr_fib_lookup(net, &fl, &mrt);
+       err = ip6mr_fib_lookup(net, &fl6, &mrt);
        if (err < 0)
                return err;
 
@@ -1039,7 +1040,6 @@ static void ip6mr_cache_resolve(struct net *net, struct mr6_table *mrt,
 
        while((skb = __skb_dequeue(&uc->mfc_un.unres.unresolved))) {
                if (ipv6_hdr(skb)->version == 0) {
-                       int err;
                        struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct ipv6hdr));
 
                        if (__ip6mr_fill_mroute(mrt, skb, c, NLMSG_DATA(nlh)) > 0) {
@@ -1050,7 +1050,7 @@ static void ip6mr_cache_resolve(struct net *net, struct mr6_table *mrt,
                                skb_trim(skb, nlh->nlmsg_len);
                                ((struct nlmsgerr *)NLMSG_DATA(nlh))->error = -EMSGSIZE;
                        }
-                       err = rtnl_unicast(skb, net, NETLINK_CB(skb).pid);
+                       rtnl_unicast(skb, net, NETLINK_CB(skb).pid);
                } else
                        ip6_mr_forward(net, mrt, skb, c);
        }
@@ -1548,13 +1548,13 @@ int ip6mr_sk_done(struct sock *sk)
 struct sock *mroute6_socket(struct net *net, struct sk_buff *skb)
 {
        struct mr6_table *mrt;
-       struct flowi fl = {
-               .iif    = skb->skb_iif,
-               .oif    = skb->dev->ifindex,
-               .mark   = skb->mark,
+       struct flowi6 fl6 = {
+               .flowi6_iif     = skb->skb_iif,
+               .flowi6_oif     = skb->dev->ifindex,
+               .flowi6_mark    = skb->mark,
        };
 
-       if (ip6mr_fib_lookup(net, &fl, &mrt) < 0)
+       if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0)
                return NULL;
 
        return mrt->mroute6_sk;
@@ -1898,7 +1898,7 @@ static int ip6mr_forward2(struct net *net, struct mr6_table *mrt,
        struct mif_device *vif = &mrt->vif6_table[vifi];
        struct net_device *dev;
        struct dst_entry *dst;
-       struct flowi fl;
+       struct flowi6 fl6;
 
        if (vif->dev == NULL)
                goto out_free;
@@ -1916,12 +1916,12 @@ static int ip6mr_forward2(struct net *net, struct mr6_table *mrt,
 
        ipv6h = ipv6_hdr(skb);
 
-       fl = (struct flowi) {
-               .oif = vif->link,
-               .fl6_dst = ipv6h->daddr,
+       fl6 = (struct flowi6) {
+               .flowi6_oif = vif->link,
+               .daddr = ipv6h->daddr,
        };
 
-       dst = ip6_route_output(net, NULL, &fl);
+       dst = ip6_route_output(net, NULL, &fl6);
        if (!dst)
                goto out_free;
 
@@ -2044,13 +2044,13 @@ int ip6_mr_input(struct sk_buff *skb)
        struct mfc6_cache *cache;
        struct net *net = dev_net(skb->dev);
        struct mr6_table *mrt;
-       struct flowi fl = {
-               .iif    = skb->dev->ifindex,
-               .mark   = skb->mark,
+       struct flowi6 fl6 = {
+               .flowi6_iif     = skb->dev->ifindex,
+               .flowi6_mark    = skb->mark,
        };
        int err;
 
-       err = ip6mr_fib_lookup(net, &fl, &mrt);
+       err = ip6mr_fib_lookup(net, &fl6, &mrt);
        if (err < 0)
                return err;