On 07/30/15 at 03:36pm, Alexei Starovoitov wrote: > Introduce helpers to let eBPF programs attached to TC manipulate tunnel > metadata: > bpf_skb_[gs]et_tunnel_key(skb, key, size, flags) > skb: pointer to skb > key: pointer to 'struct bpf_tunnel_key' > size: size of 'struct bpf_tunnel_key' > flags: room for future extensions > > First eBPF program that uses these helpers will allocate per_cpu > metadata_dst structures that will be used on TX. > On RX metadata_dst is allocated by tunnel driver. > > Typical usage for TX: > struct bpf_tunnel_key tkey; > ... populate tkey ... > bpf_skb_set_tunnel_key(skb, &tkey, sizeof(tkey), 0); > bpf_clone_redirect(skb, vxlan_dev_ifindex, 0); > > RX: > struct bpf_tunnel_key tkey = {}; > bpf_skb_get_tunnel_key(skb, &tkey, sizeof(tkey), 0); > ... lookup or redirect based on tkey ... > > 'struct bpf_tunnel_key' will be extended in the future by adding > elements to the end and the 'size' argument will indicate which fields > are populated, thereby keeping backwards compatibility. > The 'flags' argument may be used as well when the 'size' is not enough or > to indicate completely different layout of bpf_tunnel_key. > > Signed-off-by: Alexei Starovoitov <a...@plumgrid.com>
Very nice! For the dst metadata bits: Acked-by: Thomas Graf <tg...@suug.ch> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html