devmap: Rename ifindex member in bpf_redirect_info
authorToke Høiland-Jørgensen <toke@redhat.com>
Fri, 28 Jun 2019 09:12:34 +0000 (11:12 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 28 Jun 2019 23:31:09 +0000 (01:31 +0200)
The bpf_redirect_info struct has an 'ifindex' member which was named back
when the redirects could only target egress interfaces. Now that we can
also redirect to sockets and CPUs, this is a bit misleading, so rename the
member to tgt_index.

Reorder the struct members so we can have 'tgt_index' and 'tgt_value' next
to each other in a subsequent patch.

Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
include/linux/filter.h
net/core/filter.c

index 340f7d6489749925bf7a6f2be31fda7fec76f6eb..92bd192f778689fc72a49b7927da10abd6468f35 100644 (file)
@@ -578,8 +578,8 @@ struct bpf_skb_data_end {
 };
 
 struct bpf_redirect_info {
-       u32 ifindex;
        u32 flags;
+       u32 tgt_index;
        struct bpf_map *map;
        struct bpf_map *map_to_flush;
        u32 kern_flags;
index 1e5fd37e9ab50462e3a28000e1b38378735d714d..b4a062379bb99e058df3555d1170fc49a3f4e51e 100644 (file)
@@ -2158,8 +2158,8 @@ BPF_CALL_2(bpf_redirect, u32, ifindex, u64, flags)
        if (unlikely(flags & ~(BPF_F_INGRESS)))
                return TC_ACT_SHOT;
 
-       ri->ifindex = ifindex;
        ri->flags = flags;
+       ri->tgt_index = ifindex;
 
        return TC_ACT_REDIRECT;
 }
@@ -2169,8 +2169,8 @@ int skb_do_redirect(struct sk_buff *skb)
        struct bpf_redirect_info *ri = this_cpu_ptr(&bpf_redirect_info);
        struct net_device *dev;
 
-       dev = dev_get_by_index_rcu(dev_net(skb->dev), ri->ifindex);
-       ri->ifindex = 0;
+       dev = dev_get_by_index_rcu(dev_net(skb->dev), ri->tgt_index);
+       ri->tgt_index = 0;
        if (unlikely(!dev)) {
                kfree_skb(skb);
                return -EINVAL;
@@ -3488,11 +3488,11 @@ xdp_do_redirect_slow(struct net_device *dev, struct xdp_buff *xdp,
                     struct bpf_prog *xdp_prog, struct bpf_redirect_info *ri)
 {
        struct net_device *fwd;
-       u32 index = ri->ifindex;
+       u32 index = ri->tgt_index;
        int err;
 
        fwd = dev_get_by_index_rcu(dev_net(dev), index);
-       ri->ifindex = 0;
+       ri->tgt_index = 0;
        if (unlikely(!fwd)) {
                err = -EINVAL;
                goto err;
@@ -3604,11 +3604,11 @@ static int xdp_do_redirect_map(struct net_device *dev, struct xdp_buff *xdp,
                               struct bpf_prog *xdp_prog, struct bpf_map *map,
                               struct bpf_redirect_info *ri)
 {
-       u32 index = ri->ifindex;
+       u32 index = ri->tgt_index;
        void *fwd = NULL;
        int err;
 
-       ri->ifindex = 0;
+       ri->tgt_index = 0;
        WRITE_ONCE(ri->map, NULL);
 
        fwd = __xdp_map_lookup_elem(map, index);
@@ -3651,11 +3651,11 @@ static int xdp_do_generic_redirect_map(struct net_device *dev,
                                       struct bpf_map *map)
 {
        struct bpf_redirect_info *ri = this_cpu_ptr(&bpf_redirect_info);
-       u32 index = ri->ifindex;
+       u32 index = ri->tgt_index;
        void *fwd = NULL;
        int err = 0;
 
-       ri->ifindex = 0;
+       ri->tgt_index = 0;
        WRITE_ONCE(ri->map, NULL);
 
        fwd = __xdp_map_lookup_elem(map, index);
@@ -3695,14 +3695,14 @@ int xdp_do_generic_redirect(struct net_device *dev, struct sk_buff *skb,
 {
        struct bpf_redirect_info *ri = this_cpu_ptr(&bpf_redirect_info);
        struct bpf_map *map = READ_ONCE(ri->map);
-       u32 index = ri->ifindex;
+       u32 index = ri->tgt_index;
        struct net_device *fwd;
        int err = 0;
 
        if (map)
                return xdp_do_generic_redirect_map(dev, skb, xdp, xdp_prog,
                                                   map);
-       ri->ifindex = 0;
+       ri->tgt_index = 0;
        fwd = dev_get_by_index_rcu(dev_net(dev), index);
        if (unlikely(!fwd)) {
                err = -EINVAL;
@@ -3730,8 +3730,8 @@ BPF_CALL_2(bpf_xdp_redirect, u32, ifindex, u64, flags)
        if (unlikely(flags))
                return XDP_ABORTED;
 
-       ri->ifindex = ifindex;
        ri->flags = flags;
+       ri->tgt_index = ifindex;
        WRITE_ONCE(ri->map, NULL);
 
        return XDP_REDIRECT;
@@ -3753,8 +3753,8 @@ BPF_CALL_3(bpf_xdp_redirect_map, struct bpf_map *, map, u32, ifindex,
        if (unlikely(flags))
                return XDP_ABORTED;
 
-       ri->ifindex = ifindex;
        ri->flags = flags;
+       ri->tgt_index = ifindex;
        WRITE_ONCE(ri->map, map);
 
        return XDP_REDIRECT;