Commit 8c659d8c authored by Brenden Blanco's avatar Brenden Blanco

Merge pull request #97 from iovisor/ast_dev

update tunnel_key prototypes
parents b13771a0 b37f8a03
...@@ -29,7 +29,7 @@ int handle_ingress(struct __sk_buff *skb) { ...@@ -29,7 +29,7 @@ int handle_ingress(struct __sk_buff *skb) {
struct ethernet_t *ethernet = cursor_advance(cursor, sizeof(*ethernet)); struct ethernet_t *ethernet = cursor_advance(cursor, sizeof(*ethernet));
struct bpf_tunnel_key tkey = {}; 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); int *ifindex = vni2if.lookup(&tkey.tunnel_id);
if (ifindex) { if (ifindex) {
...@@ -63,7 +63,7 @@ int handle_egress(struct __sk_buff *skb) { ...@@ -63,7 +63,7 @@ int handle_egress(struct __sk_buff *skb) {
u32 zero = 0; u32 zero = 0;
tkey.tunnel_id = dst_host->tunnel_id; tkey.tunnel_id = dst_host->tunnel_id;
tkey.remote_ipv4 = dst_host->remote_ipv4; 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); lock_xadd(&dst_host->tx_pkts, 1);
} else { } else {
struct bpf_tunnel_key tkey = {}; struct bpf_tunnel_key tkey = {};
...@@ -73,7 +73,7 @@ int handle_egress(struct __sk_buff *skb) { ...@@ -73,7 +73,7 @@ int handle_egress(struct __sk_buff *skb) {
return 1; return 1;
tkey.tunnel_id = dst_host->tunnel_id; tkey.tunnel_id = dst_host->tunnel_id;
tkey.remote_ipv4 = dst_host->remote_ipv4; 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*/); bpf_clone_redirect(skb, cfg->tunnel_ifindex, 0/*egress*/);
return 1; return 1;
......
...@@ -14,7 +14,7 @@ BPF_TABLE("hash", int, struct bpf_tunnel_key, if2tunkey, 1024); ...@@ -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 // Handle packets from the encap device, demux into the dest tenant
int handle_ingress(struct __sk_buff *skb) { int handle_ingress(struct __sk_buff *skb) {
struct bpf_tunnel_key tkey = {}; 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); int *ifindex = tunkey2if.lookup(&tkey);
if (ifindex) { if (ifindex) {
...@@ -49,7 +49,7 @@ int handle_egress(struct __sk_buff *skb) { ...@@ -49,7 +49,7 @@ int handle_egress(struct __sk_buff *skb) {
if (tkey_p) { if (tkey_p) {
tkey.tunnel_id = tkey_p->tunnel_id; tkey.tunnel_id = tkey_p->tunnel_id;
tkey.remote_ipv4 = tkey_p->remote_ipv4; 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*/); bpf_clone_redirect(skb, cfg->tunnel_ifindex, 0/*egress*/);
} }
return 1; return 1;
......
...@@ -260,11 +260,12 @@ enum bpf_func_id { ...@@ -260,11 +260,12 @@ enum bpf_func_id {
BPF_FUNC_skb_vlan_pop, /* bpf_skb_vlan_pop(skb) */ 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 * retrieve or populate tunnel metadata
* @skb: pointer to skb * @skb: pointer to skb
* @key: pointer to 'struct bpf_tunnel_key' * @key: pointer to 'struct bpf_tunnel_key'
* @size: size of 'struct bpf_tunnel_key' * @size: size of 'struct bpf_tunnel_key'
* @flags: room for future extensions
* Retrun: 0 on success * Retrun: 0 on success
*/ */
BPF_FUNC_skb_get_tunnel_key, BPF_FUNC_skb_get_tunnel_key,
......
...@@ -83,9 +83,9 @@ static u64 (*bpf_skb_vlan_pop)(void *ctx) = ...@@ -83,9 +83,9 @@ static u64 (*bpf_skb_vlan_pop)(void *ctx) =
static void bpf_tail_call_(u64 map_fd, void *ctx, int index) { static void bpf_tail_call_(u64 map_fd, void *ctx, int index) {
((void (*)(void *, u64, int))BPF_FUNC_tail_call)(ctx, map_fd, 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; (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; (void *) BPF_FUNC_skb_set_tunnel_key;
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment