From: Matt Domsch <Matt_Domsch@Dell.com>
To: Stephen Hemminger <shemminger@vyatta.com>
Cc: Narendra_K@Dell.com, netdev@vger.kernel.org,
Charles_Rose@Dell.com, Jordan_Hargrave@Dell.com
Subject: Re: [PATCH] Add firmware label support to iproute2
Date: Thu, 19 Aug 2010 17:18:50 -0500 [thread overview]
Message-ID: <20100819221850.GA20741@auslistsprd01.us.dell.com> (raw)
In-Reply-To: <20100819145308.0fa08522@nehalam>
On Thu, Aug 19, 2010 at 02:53:08PM -0700, Stephen Hemminger wrote:
> On Thu, 19 Aug 2010 16:33:14 -0500
> Matt Domsch <Matt_Domsch@Dell.com> wrote:
>
> > On Wed, Aug 18, 2010 at 02:41:24PM -0700, Stephen Hemminger wrote:
> > > The netdev_alias_to_kernelname should only happen after normal lookup failed.
> >
> > Stephen, can you enlighten me as to the "right" way to do interface
> > name lookups? While I can still find examples of parsing
> > /proc/net/dev, or globbing /sys/class/net/*, I expect these aren't the
> > preferred method anymore. Your own iproute2 suite uses RTM_GETLINK
> > netlink calls, though for the seeming simple case of "give me a list of all
> > interfaces", your path through there is far more capable (and
> > complex) than I would hope to need.
>
> There is no magic right way. We have to support multiple interfaces.
> I am really concerned that all this alias stuff will turn into a
> disaster when there are 10,000 interfaces (Vlans). The kernel has
> lots of tables and hashes to handle this but if the utilities
> are doing a dumb scan of all names it will not work.
I believe you proposed a lookup algorithm in each app, something like:
if exists(passed device name)
use it
else if (kernelname=netdev_alias_to_kernelname(passed device name))
use kernelname
so I'm looking for the "right" way to do these existance tests. I
agree iterating through all the interfaces should be avoided.
> Also burying logic in an external library seems problematic as
> well. The original sysfs library was a disaster for this.
> I want this to work but it has to have a simple interface that
> is not trying to hide things.
the library right now is all of:
422 netdevname.c
38 netdevname.h
with another 100 line app to print the mappings in both directions.
The interface is pretty simple too:
extern int netdev_alias_to_kernelname (const char *alias, char *kernelname);
struct netdev_alias {
char *name;
const char *namespace_name;
int is_descriptive; /* this may disappear yet */
struct netdev_alias *next;
};
extern int netdev_kernelname_to_aliases (const char *, struct netdev_alias **);
extern void free_netdev_aliases (struct netdev_alias *);
The common app usage will be to call netdev_alias_to_kernelname().
Only those apps that want to display the alternate names would use the
struct or other 2 functions.
Even though it's a small library, I do think it makes sense to make it
a library. I expect to add additional "namespaces" (e.g. "fw:Embedded
NIC 1" is the name of a device provided by the firmware. As I
mentioned in my talk at LinuxCon last week (slides at
http://domsch.com/linux/linuxcon10/) there could be other valid name
providers, and we'd like them to be usable without re-patching all the
applications again.
As always, I'm open to ideas.
Thanks,
Matt
--
Matt Domsch
Technology Strategist
Dell | Office of the CTO
next prev parent reply other threads:[~2010-08-19 22:18 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-12 17:35 [PATCH] Add firmware label support to iproute2 Narendra K
2010-08-12 18:10 ` Stephen Hemminger
2010-08-12 18:12 ` Stephen Hemminger
2010-08-13 12:36 ` Narendra_K
2010-08-18 21:41 ` Stephen Hemminger
2010-08-19 21:33 ` Matt Domsch
2010-08-19 21:53 ` Stephen Hemminger
2010-08-19 22:18 ` Matt Domsch [this message]
2010-08-25 22:03 ` Matt Domsch
2010-08-25 22:16 ` Greg KH
2010-08-26 14:10 ` Matt Domsch
2010-08-26 0:16 ` Stephen Hemminger
2010-08-26 15:01 ` Matt Domsch
2010-08-26 15:01 ` Matt Domsch
2010-08-26 15:17 ` Loke, Chetan
2010-08-26 15:17 ` Loke, Chetan
2010-08-26 15:21 ` Stephen Hemminger
2010-08-26 15:21 ` Stephen Hemminger
2010-08-26 15:38 ` Loke, Chetan
2010-08-26 15:38 ` Loke, Chetan
2010-08-27 7:54 ` Kay Sievers
2010-08-27 7:54 ` Kay Sievers
2010-08-26 16:38 ` Matt Domsch
2010-08-26 16:38 ` Matt Domsch
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=20100819221850.GA20741@auslistsprd01.us.dell.com \
--to=matt_domsch@dell.com \
--cc=Charles_Rose@Dell.com \
--cc=Jordan_Hargrave@Dell.com \
--cc=Narendra_K@Dell.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.com \
/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.