Re: [PATCH v8 5/6] net: ipv4, ipv6: run cgroup eBPF egress programs

2016-11-19 Thread Alexei Starovoitov
On Fri, Nov 18, 2016 at 06:44:05PM +0100, Pablo Neira Ayuso wrote: > On Fri, Nov 18, 2016 at 09:17:18AM -0800, Alexei Starovoitov wrote: > > On Fri, Nov 18, 2016 at 01:37:32PM +0100, Pablo Neira Ayuso wrote: > > > On Thu, Nov 17, 2016 at 07:27:08PM +0100, Daniel Mack wrote: > > > [...] > > > > @@ -

Re: [PATCH v8 5/6] net: ipv4, ipv6: run cgroup eBPF egress programs

2016-11-18 Thread Pablo Neira Ayuso
On Fri, Nov 18, 2016 at 09:17:18AM -0800, Alexei Starovoitov wrote: > On Fri, Nov 18, 2016 at 01:37:32PM +0100, Pablo Neira Ayuso wrote: > > On Thu, Nov 17, 2016 at 07:27:08PM +0100, Daniel Mack wrote: > > [...] > > > @@ -312,6 +314,12 @@ int ip_mc_output(struct net *net, struct sock *sk, > > > st

Re: [PATCH v8 5/6] net: ipv4, ipv6: run cgroup eBPF egress programs

2016-11-18 Thread Alexei Starovoitov
On Fri, Nov 18, 2016 at 01:37:32PM +0100, Pablo Neira Ayuso wrote: > On Thu, Nov 17, 2016 at 07:27:08PM +0100, Daniel Mack wrote: > [...] > > @@ -312,6 +314,12 @@ int ip_mc_output(struct net *net, struct sock *sk, > > struct sk_buff *skb) > > skb->dev = dev; > > skb->protocol = htons(ETH_P

Re: [PATCH v8 5/6] net: ipv4, ipv6: run cgroup eBPF egress programs

2016-11-18 Thread Pablo Neira Ayuso
On Thu, Nov 17, 2016 at 07:27:08PM +0100, Daniel Mack wrote: [...] > @@ -312,6 +314,12 @@ int ip_mc_output(struct net *net, struct sock *sk, > struct sk_buff *skb) > skb->dev = dev; > skb->protocol = htons(ETH_P_IP); > > + ret = BPF_CGROUP_RUN_PROG_INET_EGRESS(sk, skb); > + i

[PATCH v8 5/6] net: ipv4, ipv6: run cgroup eBPF egress programs

2016-11-17 Thread Daniel Mack
If the cgroup associated with the receiving socket has an eBPF programs installed, run them from ip_output(), ip6_output() and ip_mc_output(). From mentioned functions we have two socket contexts as per 7026b1ddb6b8 ("netfilter: Pass socket pointer down through okfn()."). We explicitly need to use