mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
ipv6: Convert to use flowi6 where applicable.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9cce96df5b
commit
4c9483b2fb
35 changed files with 622 additions and 620 deletions
|
@ -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 = {
|
||||
.flowi_iif = skb->dev->ifindex,
|
||||
.flowi_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 = {
|
||||
.flowi_oif = dev->ifindex,
|
||||
.flowi_iif = skb->skb_iif,
|
||||
.flowi_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 = {
|
||||
.flowi_iif = skb->skb_iif,
|
||||
.flowi_oif = skb->dev->ifindex,
|
||||
.flowi_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) {
|
||||
.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 = {
|
||||
.flowi_iif = skb->dev->ifindex,
|
||||
.flowi_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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue