From: Alexei Starovoitov Date: Thu, 30 Jul 2015 21:14:09 +0000 (-0700) Subject: update tunnel_key prototypes X-Git-Tag: v0.1.2~13^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b37f8a03149c319b03dccac42e570f913cb2543f;p=platform%2Fupstream%2Fbcc.git update tunnel_key prototypes Signed-off-by: Alexei Starovoitov --- diff --git a/examples/distributed_bridge/tunnel.c b/examples/distributed_bridge/tunnel.c index 7ca0701..4fe2967 100644 --- a/examples/distributed_bridge/tunnel.c +++ b/examples/distributed_bridge/tunnel.c @@ -29,7 +29,7 @@ int handle_ingress(struct __sk_buff *skb) { struct ethernet_t *ethernet = cursor_advance(cursor, sizeof(*ethernet)); struct bpf_tunnel_key tkey = {}; - bpf_skb_get_tunnel_key(skb, &tkey, sizeof(tkey)); + bpf_skb_get_tunnel_key(skb, &tkey, sizeof(tkey), 0); int *ifindex = vni2if.lookup(&tkey.tunnel_id); if (ifindex) { @@ -63,7 +63,7 @@ int handle_egress(struct __sk_buff *skb) { u32 zero = 0; tkey.tunnel_id = dst_host->tunnel_id; tkey.remote_ipv4 = dst_host->remote_ipv4; - bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey)); + bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey), 0); lock_xadd(&dst_host->tx_pkts, 1); } else { struct bpf_tunnel_key tkey = {}; @@ -73,7 +73,7 @@ int handle_egress(struct __sk_buff *skb) { return 1; tkey.tunnel_id = dst_host->tunnel_id; tkey.remote_ipv4 = dst_host->remote_ipv4; - bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey)); + bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey), 0); } bpf_clone_redirect(skb, cfg->tunnel_ifindex, 0/*egress*/); return 1; diff --git a/examples/distributed_bridge/tunnel_mesh.c b/examples/distributed_bridge/tunnel_mesh.c index 675ed84..f6b9814 100644 --- a/examples/distributed_bridge/tunnel_mesh.c +++ b/examples/distributed_bridge/tunnel_mesh.c @@ -14,7 +14,7 @@ BPF_TABLE("hash", int, struct bpf_tunnel_key, if2tunkey, 1024); // Handle packets from the encap device, demux into the dest tenant int handle_ingress(struct __sk_buff *skb) { struct bpf_tunnel_key tkey = {}; - bpf_skb_get_tunnel_key(skb, &tkey, sizeof(tkey)); + bpf_skb_get_tunnel_key(skb, &tkey, sizeof(tkey), 0); int *ifindex = tunkey2if.lookup(&tkey); if (ifindex) { @@ -49,7 +49,7 @@ int handle_egress(struct __sk_buff *skb) { if (tkey_p) { tkey.tunnel_id = tkey_p->tunnel_id; tkey.remote_ipv4 = tkey_p->remote_ipv4; - bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey)); + bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey), 0); bpf_clone_redirect(skb, cfg->tunnel_ifindex, 0/*egress*/); } return 1; diff --git a/src/cc/compat/linux/bpf.h b/src/cc/compat/linux/bpf.h index e8236a3..bc0d27d 100644 --- a/src/cc/compat/linux/bpf.h +++ b/src/cc/compat/linux/bpf.h @@ -260,11 +260,12 @@ enum bpf_func_id { BPF_FUNC_skb_vlan_pop, /* bpf_skb_vlan_pop(skb) */ /** - * bpf_skb_[gs]et_tunnel_key(skb, struct bpf_tunnel_key *key, int size) + * bpf_skb_[gs]et_tunnel_key(skb, key, size, flags) * retrieve or populate tunnel metadata * @skb: pointer to skb * @key: pointer to 'struct bpf_tunnel_key' * @size: size of 'struct bpf_tunnel_key' + * @flags: room for future extensions * Retrun: 0 on success */ BPF_FUNC_skb_get_tunnel_key, diff --git a/src/cc/export/helpers.h b/src/cc/export/helpers.h index 09d0e72..4e2c334 100644 --- a/src/cc/export/helpers.h +++ b/src/cc/export/helpers.h @@ -83,9 +83,9 @@ static u64 (*bpf_skb_vlan_pop)(void *ctx) = static void bpf_tail_call_(u64 map_fd, void *ctx, int index) { ((void (*)(void *, u64, int))BPF_FUNC_tail_call)(ctx, map_fd, index); } -static int (*bpf_skb_get_tunnel_key)(void *ctx, void *to, u32 size) = +static int (*bpf_skb_get_tunnel_key)(void *ctx, void *to, u32 size, u64 flags) = (void *) BPF_FUNC_skb_get_tunnel_key; -static int (*bpf_skb_set_tunnel_key)(void *ctx, void *from, u32 size) = +static int (*bpf_skb_set_tunnel_key)(void *ctx, void *from, u32 size, u64 flags) = (void *) BPF_FUNC_skb_set_tunnel_key; #endif