Re: [PATCH v4 net-next 3/4] soreuseport: setsockopt SO_ATTACH_REUSEPORT_[CE]BPF
From: Craig Gallek <hidden>
Date: 2016-01-05 15:47:08
On Tue, Jan 5, 2016 at 4:38 AM, Daniel Borkmann [off-list ref] wrote:
On 01/04/2016 11:41 PM, Craig Gallek wrote:quoted
From: Craig Gallek <redacted> Expose socket options for setting a classic or extended BPF program for use when selecting sockets in an SO_REUSEPORT group. These options can be used on the first socket to belong to a group before bind or on any socket in the group after bind. This change includes refactoring of the existing sk_filter code to allow reuse of the existing BPF filter validation checks. Signed-off-by: Craig Gallek <redacted>[...]quoted
+static struct sock *run_bpf(struct sock_reuseport *reuse, u16 socks, + struct bpf_prog *prog, struct sk_buff *skb, + int hdr_len) +{ + struct sk_buff *nskb = NULL; + u32 index; + + if (skb_shared(skb)) { + nskb = skb_clone(skb, GFP_ATOMIC); + if (!nskb) + return NULL; + skb = nskb; + } + + /* temporarily advance data past protocol header */ + if (!pskb_pull(skb, hdr_len)) { + consume_skb(nskb);Btw, this one could still be made kfree_skb() to indicate error condition here.
Good point. I'll send a follow-up.