ipv6: Convert to use flowi6 where applicable.
[pandora-kernel.git] / net / ipv6 / ip6mr.c
index 618f67c..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;
 
@@ -1547,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;
@@ -1897,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;
@@ -1915,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;
 
@@ -2043,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;