Thread (11 messages) 11 messages, 5 authors, 2016-01-05

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help