[Toybox] complaining about 'ifconfig' - better use 'ip'
Rob Landley
rob at landley.net
Thu Apr 4 19:06:33 PDT 2013
On 04/04/2013 04:25:03 AM, Bastian Bittorf wrote:
> * Rob Landley <rob at landley.net> [04.04.2013 10:03]:
> > Yup, just pulled up my old Red Hat 9 image under qemu and did
> > ifconfig eth0 10.0.2.15/31 and it worked fine.
>
> you are right, shame on me.
Sorry for complaining about it in the last email then. (Reading 'em as
I see 'em...)
> > Heh, it's still up at http://busybox.net/downloads/qemu/ if you'd
> > like to try that yourself.
> >
> > >- aliases + multiple IP's on one interface
> >
> > I did aliases with ifconfig in 2002, there's a colon number syntax
> or
> > some such...
>
> ip address add 9.8.7.6/32 dev lo label lo:commentXY
> are labels supported via ifconfig?
There's a label tool somewhere. I haven't bothered with it, I assume
people will submit one if they need it. I looked into the low level API
so I could build the functionality into "mdev", actually...
(Looking down in this very email, it's apparently "nameif".)
> > >- correct output of aliases
> >
> > Define "correct".
> >
> > sudo ifconfig lo:0 10.255.255.1/31
> > ifconfig
> >
> > lo Link encap:Local Loopback
> > inet addr:127.0.0.1 Mask:255.0.0.0
> > inet6 addr: ::1/128 Scope:Host
> > UP LOOPBACK RUNNING MTU:16436 Metric:1
> > RX packets:5708561 errors:0 dropped:0 overruns:0 frame:0
> > TX packets:5708561 errors:0 dropped:0 overruns:0 carrier:0
> > collisions:0 txqueuelen:0
> > RX bytes:3736486922 (3.7 GB) TX bytes:3736486922 (3.7 GB)
> >
> > lo:0 Link encap:Local Loopback
> > inet addr:10.255.255.1 Mask:255.255.255.254
> > UP LOOPBACK RUNNING MTU:16436 Metric:1
>
> this is wrong:
> lo:0 is no interface, so why does it show an extra interface?
I note that technically "lo" isn't an ethernet interface in the first
place, so you could make the same argument there...
> > >- more than one routing table ("policy routing")
> >
> > Never tried, but I've done some fun stuff with iptables and some
>
> so, because you never tried - it's not needed? 8-)
No, I'm saying I'm scratching my own itch and you complaining about
ifconfig does not trump other people submitting code to me and
complaining in email that they would be "very confused" if it was
removed because it's part of their patched version of toybox that
they're already using in a product.
> > other fun stuff with containers. http://landley.net/lxc/
>
> > >- preparing traffic control
> >
> > man tc
>
> tc belongs to 'ip'.
> so how to you set up an 'ip rule' with ifconfig. 8-)
I don't care.
This is the difference between you and me here. If I implemented "ip",
it wouldn't use code from iptools. If I implement "rotue" it won't use
code from net-tools. Your complaints about horrible infrastructure are
mind-bogglingly irrelevant, it's gonna be a fresh implementation. (At
least when I get done with it...)
You like the "ip" command being its own swiss-army-knife that sucks in
route and arp and such, but then tc is an external command rather than
a flag to the ip monolith and that also makes it better. Right. Fine.
I'm sure it makes sense to somebody.
> > >- better parseable output (if needed, e.g. ip -oneline link show
> tun0)
> >
> > Look, I'm not saying that providing an alternate interface to the
> > same functionality for people who are used to and expect the other
> > interface is a bad thing, especially if it's easy to do. But that
> > cuts _against_ your complaints about ifconfig. You're claiming
> > ifconfig is an incapable relic, and so far not showing things that
> > actually require ip. The point of this thread is you said that we
> > should NOT implement ifconfig and friends.
>
> the idea behind it is:
> dont encourage people to use such old, incomplete, inconsistent tools.
1) cat's older
2) this should (eventually) be a fresh implementation
3) we can add stuff until it's not incomplete
4) you've never explained inconsistent, just asserted it. (No, I'm not
interested in hearing it at the moment. I'm experiencing topic
exhaustion.)
> especially if you make something new, this is the chance to enforce
> people to use/learn the new interface.
No. No it isn't. There are existing users. I'm trying to serve the
userbase.
> sooner or later they need to learn "ip" anyway,
No, they don't. You keep saying that, and I see no reason it would ever
be true.
> so why not doing it right? is there any distro
> not shipping 'ip' (iproutw2)?
People made this argument for udev. I wrote mdev. This is the same
argument people are making right now for "systemd". I'm not doing that
one.
> > >- you can rename interfaces
> >
> > man nameif
> >
> > >- multicast working
> >
> > I'm fairly certain multicast was around in the 90's. I remember
> > people bemoaning its failure even then. (How is the mbone doing?
> > Netflix streaming making extensive use of that, then? Skype?
> > Youtube?)
>
> multicast makes more sense in the ipv6 world
No it doesn't. I was working for a set top box manufacturer in 2001, we
were doing movies on demand and DVR and all that long before there was
a _market_ for it. (It never shipped because the rights were tied up
and before Tivo and iTunes and Hulu and Netflix it was REALLY HARD to
get any content providers to budge from the closets where they cowered
in terror from the internet. Heck, this predated _youtube_. We had a
project to try to clone the RTSP server because realplayer was still a
thing, that's how long ago this was.)
And we _studied_ multicast. We looked into making it work, and why it
wasn't more widely deployed. And it boils down to "television and radio
exist, the internet isn't that". The user access patterns just _aren't_
bulk access to exactly the same data at exactly the same time. A decade
ago akamai was pioneering geographic distribution, then bittorrent came
along (and got blamed for bufferbloat ala
http://gettys.wordpress.com/2010/12/07/bufferbloat-and-network-neutrality-back-to-the-past/
but that wasn't the problem), and these days if google, youtube, and
netflix can't benefit from multicast there is _no_point_ to it.
Now maybe https://youtu.be/GuqmKg6QQTw returns this to relevance, but I
really think http://nielsenhayden.com/makinglight/archives/010186.html
is going to free up the bandwidth that was misallocated to television
before too much longer. Maybe not to
http://www.newamerica.net/files/nafmigration/archive/Pub_File_1555_1.pdf
levels but things like http://en.wikipedia.org/wiki/Ultra-wideband
might work around that...
But then I'm not a developer in the network world, what do I know? Feel
free to tell me about the future of multicast. Starting with maybe
answering my objection that when multicast was invented, ifconfig was
all we had, so multicast _has_ to work with ifconfig?
> > Look, I asked "What can you do with ip that you can't do with
> > ifconfig/route?" You didn't come up with anything actually
> > _requiring_ ip yet, that I've noticed.
>
> you negated a lot of arguments, but there are some left.
> but the killer-arg is the existing ifconfig in androids toolbox,
> so ifconfig is needed, ip is optional 8-(
>
> hopefully the person which implements 'ifconfig' will also do:
>
> arp
> ipmaddr
> iptunnel
> route
> nameif
> netstat
Or _I_ could do them. Ifconfig was always on my todo list, it was just
down below a lot of other stuff.
I note that things I want to do tend to get bumped behind cleaning up
commands people submit to me. So the fact that I could do sed or mount
fairly easily (they're time consuming, but not _hard_ since I already
did busybox versions of both)... I haven't done them and am not likely
to do them any time soon because of the giant pile of stuff in the
"pending" directory and things like "cut.c" and "login.c" elsewhere in
the tree that need cleanup before I have the luxury of implementing new
features.
(I care more about quality of the code than rapidly increasing the
feature set. All these commands already exist elsewhere, toybox needs
to be _better_ code. I get spontaneous contributions of new commands. I
hardly ever get spontaneous cleanups of existing code.)
Rob
More information about the Toybox
mailing list