All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maciej Fijalkowski <maciejromanfijalkowski@gmail.com>
To: John Fastabend <john.fastabend@gmail.com>
Cc: daniel@iogearbox.net, ast@kernel.org, netdev@vger.kernel.org,
	jakub.kicinski@netronome.com, brouer@redhat.com
Subject: Re: [PATCH bpf-next v4 6/7] libbpf: Add a support for getting xdp prog id on ifindex
Date: Wed, 30 Jan 2019 18:53:18 +0100	[thread overview]
Message-ID: <20190130185318.000012f0@gmail.com> (raw)
In-Reply-To: <a9a2cef6-9628-39de-2b05-eb3f88d8ed85@gmail.com>

On Mon, 28 Jan 2019 13:07:49 -0800
John Fastabend <john.fastabend@gmail.com> wrote:

> On 1/28/19 11:16 AM, Maciej Fijalkowski wrote:
> > From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> > 
> > Since we have a dedicated netlink attributes for xdp setup on a
> > particular interface, it is now possible to retrieve the program id that
> > is currently attached to the interface. The use case is targeted for
> > sample xdp programs, which will store the program id just after loading
> > bpf program onto iface. On shutdown, the sample will make sure that it
> > can unload the program by querying again the iface and verifying that
> > both program id's matches.
> > 
> > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> > Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
> > ---  
> 
> small nit.
> 
> > +
> > +int bpf_get_link_xdp_id(int ifindex, __u32 *prog_id, __u32 flags)
> > +{
> > +	struct xdp_id_md xdp_id = {};
> > +	int sock, ret;
> > +	__u32 nl_pid;
> > +	__u32 mask;
> > +
> > +	if (flags & ~XDP_FLAGS_MASK)
> > +		return -EINVAL;
> > +
> > +	/* Check whether the single {HW,DRV,SKB} mode is set */
> > +	flags &= XDP_FLAGS_MODES;
> > +	mask = flags - 1;
> > +	if (flags && flags & mask)
> > +		return -EINVAL;
> > +
> > +	sock = libbpf_netlink_open(&nl_pid);
> > +	if (sock < 0)
> > +		return sock;
> > +
> > +	xdp_id.ifindex = ifindex;
> > +	xdp_id.flags = flags;
> > +
> > +	ret = libbpf_nl_get_link(sock, nl_pid, get_xdp_id, &xdp_id);
> > +	*prog_id = xdp_id.id;  
> 
> just a nit but should we really set prog_id from user if there is
> an error. Probably friendlier not to set caller data in error
> case.
>
Agree, besides checking the return value from libbpf_nl_get_link() we should
also check that we have assigned a value to xdp_id.id so that would mean we
have gone through whole get_xdp_id(). I'll post a v5 within several hours with
following check:

if (!ret && xdp_id.id)
	*prog_id = xdp_id;

Hope that makes sense.
> > +
> > +	close(sock);
> > +	return ret;
> > +}
> > +
> >  int libbpf_nl_get_link(int sock, unsigned int nl_pid,
> >  		       libbpf_dump_nlmsg_t dump_link_nlmsg, void *cookie)
> >  {
> >   
> 


  reply	other threads:[~2019-01-30 17:53 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-28 19:16 [PATCH bpf-next v4 0/7] xdp: Avoid unloading xdp prog not attached by sample Maciej Fijalkowski
2019-01-28 19:16 ` [PATCH bpf-next v4 1/7] libbpf: Add a helper for retrieving a map fd for a given name Maciej Fijalkowski
2019-01-28 20:49   ` John Fastabend
2019-01-28 19:16 ` [PATCH bpf-next v4 2/7] samples/bpf: xdp_redirect_cpu have not need for read_trace_pipe Maciej Fijalkowski
2019-01-28 20:50   ` John Fastabend
2019-01-28 19:16 ` [PATCH bpf-next v4 3/7] samples/bpf: Convert XDP samples to libbpf usage Maciej Fijalkowski
2019-01-28 19:16 ` [PATCH bpf-next v4 4/7] samples/bpf: Extend RLIMIT_MEMLOCK for xdp_{sample_pkts, router_ipv4} Maciej Fijalkowski
2019-01-28 20:54   ` John Fastabend
2019-01-28 19:16 ` [PATCH bpf-next v4 5/7] samples/bpf: Add a "force" flag to XDP samples Maciej Fijalkowski
2019-01-28 20:57   ` John Fastabend
2019-01-29  8:00   ` Jesper Dangaard Brouer
2019-01-29 11:34     ` Jesper Dangaard Brouer
2019-01-30 18:12       ` Maciej Fijalkowski
2019-01-30 19:08         ` Jesper Dangaard Brouer
2019-01-31  2:26           ` Jakub Kicinski
2019-01-31 20:19             ` Jesper Dangaard Brouer
2019-01-28 19:16 ` [PATCH bpf-next v4 6/7] libbpf: Add a support for getting xdp prog id on ifindex Maciej Fijalkowski
2019-01-28 21:07   ` John Fastabend
2019-01-30 17:53     ` Maciej Fijalkowski [this message]
2019-01-28 19:16 ` [PATCH bpf-next v4 7/7] samples/bpf: Check the prog id before exiting Maciej Fijalkowski
2019-01-28 21:10   ` John Fastabend

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=20190130185318.000012f0@gmail.com \
    --to=maciejromanfijalkowski@gmail.com \
    --cc=ast@kernel.org \
    --cc=brouer@redhat.com \
    --cc=daniel@iogearbox.net \
    --cc=jakub.kicinski@netronome.com \
    --cc=john.fastabend@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.