From: Daniel Borkmann <dborkman@redhat.com>
To: Michal Sekletar <msekleta@redhat.com>
Cc: netdev@vger.kernel.org, Michael Kerrisk <mtk.manpages@gmail.com>,
David Miller <davem@davemloft.net>
Subject: Re: [PATCH] net: introduce SO_BPF_EXTENSIONS
Date: Thu, 16 Jan 2014 17:41:46 +0100 [thread overview]
Message-ID: <52D80BCA.7030400@redhat.com> (raw)
In-Reply-To: <1389888898-31744-1-git-send-email-msekleta@redhat.com>
On 01/16/2014 05:14 PM, Michal Sekletar wrote:
> userspace packet capturing libraries (e.g. libpcap) don't have a way how to find
> out which BPF extensions are supported by the kernel, except compiling a filter
> which uses extensions and trying to apply filter to the socket. This is very
> inconvenient.
>
> Therefore this commit introduces new option which can be used as an argument for
> getsockopt() and allows one to obtain information about which BPF extensions are
> supported by the kernel.
>
> On Tue, Dec 10, 2013 at 1:25 AM, David Miller <davem@davemloft.net> wrote:
>
>> And therefore, you do not need to define any actual bits yet. The
>> socket option will for now just return "0", and that will mean that
>> all the extensions Linux implements currently are presnet.
>
> Signed-off-by: Michal Sekletar <msekleta@redhat.com>
> Cc: Michael Kerrisk <mtk.manpages@gmail.com>
> Cc: Daniel Borkmann <dborkman@redhat.com>
> Cc: David Miller <davem@davemloft.net>
> ---
> arch/alpha/include/uapi/asm/socket.h | 2 ++
> arch/avr32/include/uapi/asm/socket.h | 2 ++
> arch/cris/include/uapi/asm/socket.h | 2 ++
> arch/frv/include/uapi/asm/socket.h | 2 ++
> arch/ia64/include/uapi/asm/socket.h | 2 ++
> arch/m32r/include/uapi/asm/socket.h | 2 ++
> arch/mips/include/uapi/asm/socket.h | 2 ++
> arch/mn10300/include/uapi/asm/socket.h | 2 ++
> arch/parisc/include/uapi/asm/socket.h | 2 ++
> arch/powerpc/include/uapi/asm/socket.h | 2 ++
> arch/s390/include/uapi/asm/socket.h | 2 ++
> arch/sparc/include/uapi/asm/socket.h | 2 ++
> arch/xtensa/include/uapi/asm/socket.h | 2 ++
> include/net/sock.h | 5 +++++
> include/uapi/asm-generic/socket.h | 2 ++
> net/core/sock.c | 4 ++++
> 16 files changed, 37 insertions(+)
>
...
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -2292,4 +2292,9 @@ extern int sysctl_optmem_max;
> extern __u32 sysctl_wmem_default;
> extern __u32 sysctl_rmem_default;
>
> +static inline int bpf_get_extensions(void)
> +{
> + return 0;
> +}
> +
This should rather be in: include/linux/filter.h
And then, maybe be renamed into something like bpf_tell_extensions()
for example, but that's just nit.
Also, please add a comment, saying if people add new extensions, they
need to enumerate them within this function from now on so that user
space who enquires for that can be made aware of.
Still, grepping through latest libpcap sources, tells me, so far over
the years they have included SKF_AD_PROTOCOL and SKF_AD_PKTTYPE, wow!
That's very disappointing, so I have high hopes with this getsockopt().
;)
Thanks,
Daniel
> #endif /* _SOCK_H */
> diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h
> index 38f14d0..ea0796b 100644
> --- a/include/uapi/asm-generic/socket.h
> +++ b/include/uapi/asm-generic/socket.h
> @@ -80,4 +80,6 @@
>
> #define SO_MAX_PACING_RATE 47
>
> +#define SO_BPF_EXTENSIONS 48
> +
> #endif /* __ASM_GENERIC_SOCKET_H */
> diff --git a/net/core/sock.c b/net/core/sock.c
> index 85ad6f0..70e5a6e 100644
> --- a/net/core/sock.c
> +++ b/net/core/sock.c
> @@ -1167,6 +1167,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
> v.val = sock_flag(sk, SOCK_FILTER_LOCKED);
> break;
>
> + case SO_BPF_EXTENSIONS:
> + v.val = bpf_get_extensions();
> + break;
> +
> case SO_SELECT_ERR_QUEUE:
> v.val = sock_flag(sk, SOCK_SELECT_ERR_QUEUE);
> break;
>
next prev parent reply other threads:[~2014-01-16 16:41 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-16 16:14 [PATCH] net: introduce SO_BPF_EXTENSIONS Michal Sekletar
2014-01-16 16:41 ` Daniel Borkmann [this message]
2014-01-16 17:13 ` Michal Sekletar
2014-01-16 17:26 ` Michal Sekletar
2014-01-16 18:34 ` Daniel Borkmann
2014-01-16 18:49 ` Eric Dumazet
2014-01-16 18:52 ` Daniel Borkmann
2014-01-16 19:09 ` Eric Dumazet
2014-01-16 19:15 ` [PATCH] parisc: fix SO_MAX_PACING_RATE typo Eric Dumazet
2014-01-18 2:11 ` David Miller
2014-01-16 19:24 ` [PATCH] net: introduce SO_BPF_EXTENSIONS Daniel Borkmann
-- strict thread matches above, loose matches on Subject: below --
2013-11-28 11:57 Michal Sekletar
2013-11-28 17:31 ` Eric Dumazet
2013-11-29 14:13 ` Daniel Borkmann
2013-12-05 17:28 ` Michal Sekletár
2013-12-05 17:32 ` Eric Dumazet
2013-12-06 9:50 ` David Laight
2013-12-06 10:02 ` Daniel Borkmann
2013-12-06 11:15 ` David Laight
2013-12-06 12:04 ` Daniel Borkmann
2013-12-06 17:15 ` David Miller
2013-12-09 14:09 ` Michal Sekletár
2013-12-10 0:25 ` David Miller
2013-12-06 17:10 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52D80BCA.7030400@redhat.com \
--to=dborkman@redhat.com \
--cc=davem@davemloft.net \
--cc=msekleta@redhat.com \
--cc=mtk.manpages@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).