mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@aerifal.cx>
To: musl@lists.openwall.com
Cc: justin@specialbusservice.com
Subject: Re: if_nameindex/getifaddrs and dhcpcd issue
Date: Tue, 8 Apr 2014 11:45:37 -0400	[thread overview]
Message-ID: <20140408154537.GG26358@brightrain.aerifal.cx> (raw)
In-Reply-To: <20140408152559.124030b1@vostro>

On Tue, Apr 08, 2014 at 03:25:59PM +0300, Timo Teras wrote:
> > a lot smaller, but you could make a full netlink library in not much
> > more as it is complicated but uniform (I wrote a partly complete one
> > in 1000 lines of Lua).
> > 
> > However I can see no reason why dhcp on a specified interface needs to
> > enumerate interfaces at all, and it only needs to read ipv4 addresses,
> > unless it is implementing dhcp6 too, maybe it does now. Again dhcp6
> > needs netlink, the Musl ipv6 parts for getifaddrs already use /proc
> > which is definitely unreliable for early boot config in a distro in my
> > view.
> 
> We should not be looking at dhcpd. It's the APIs musl implements:
> getifaddrs() and if_nameindex() - they are not currently exposing all
> the information they should.

One can argue about what if_nameindex should expose; for instance,
should it expose all possible interface names the kernel could
support, even with modules that haven't been loaded yet? The only
thing a strictly conforming application can _DO_ with interface
names/numbers is use them for link-local ipv6 scope ids (this is
presumably why these functions were added to POSIX in the first
place). So, from a conformance standpoint, only exposing ids that
could actually appear on a link-local address (i.e. configured
interfaces that have ipv6 link-local addresses) would be sufficient.

None of this is an argument that it wouldn't be nice to list more
interfaces, but it's not a requirement. It's more a matter of
providing an additional feature that might be useful to applications.

> I'd prefer using netlink, instead of trying to parse and connect data
> from various /proc files.
> 
> IMHO, if someone wants to be linux compatible today, it's easier to
> implement the netlink stuff; than the /proc stuff. /proc has equally
> linux specific things in it and is mainly intended to be human
> readable with few exceptions. /sys would be better option as it's
> inteded to be machine readable, but it's still text too. 

/sys is explicitly not usable by libc/apps since policy is that it's
not a stable interface.

> netlink is here to stay, there's no alternate way to do certain things.
> So I'd rather use it. It's the interface kernel people intended to be
> used for the thing in question.

As I mentioned on IRC, the current netlink protocol is deficient; my
understanding is that it's incapable of representing hardware
addresses longer than a certain fixed length, leading to truncation of
infiniband addresses. I'm not an expert on this but I seem to remember
someone (IIRC Rob Landley) knows the details. I'm not sure how fixable
this is, but it's not a problem at all with a clean text-based
interface like /proc provides.

> I'm willing to write an alternative getifaddrs() and if_nameindex()
> implementations using netlink. Perhaps let's see how they end up?

It wouldn't hurt; if they're not upstreamed they could still be used
as a separate library for the one application which needs this
functionality (dhcpcd).

Rich


  parent reply	other threads:[~2014-04-08 15:45 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-08  9:11 Natanael Copa
2014-04-08 10:07 ` Justin Cormack
2014-04-08 12:25   ` Timo Teras
2014-04-08 14:23     ` Natanael Copa
2014-04-08 15:45     ` Rich Felker [this message]
2014-04-08 16:08       ` Timo Teras
2014-04-08 16:19         ` Justin Cormack
2014-04-08 22:41           ` Rich Felker
2014-04-09  7:17             ` u-igbb
2014-04-09 22:20               ` Rich Felker
2014-04-09 22:32                 ` Justin Cormack
2014-04-10  7:40                 ` u-igbb
2014-04-10  7:52                   ` Rich Felker
2014-04-09 14:02         ` Timo Teras
2014-04-10  0:55           ` Rich Felker
2014-04-09  7:55       ` Natanael Copa
2014-04-08 12:54   ` Szabolcs Nagy
2014-04-08 13:42   ` Rich Felker
2014-04-08 14:16     ` Justin Cormack
2014-04-08 15:38       ` Rich Felker
2014-04-09  7:13         ` Natanael Copa
2014-04-09 22:18           ` Rich Felker
2014-04-08 21:16     ` Natanael Copa
2014-04-08 21:30       ` Justin Cormack
2014-04-08 22:59         ` Rich Felker
2014-04-08 14:27   ` Natanael Copa

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=20140408154537.GG26358@brightrain.aerifal.cx \
    --to=dalias@aerifal.cx \
    --cc=justin@specialbusservice.com \
    --cc=musl@lists.openwall.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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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).