netdev
[Top] [All Lists]

Re: When are net_device names changed/changeable?

To: Andi Kleen <ak@xxxxxx>
Subject: Re: When are net_device names changed/changeable?
From: Ben Greear <greearb@xxxxxxxxxxxxxxx>
Date: Thu, 12 Oct 2000 21:50:47 -0700
Cc: linux-net <linux-net@xxxxxxxxxxxxxxxx>, "netdev@xxxxxxxxxxx" <netdev@xxxxxxxxxxx>
Organization: Candela Technologies
References: <39E419A1.DAE3F651@candelatech.com> <20001012031620.A13200@fred.muc.de>
Sender: owner-netdev@xxxxxxxxxxx
Andi Kleen wrote:
> 
> On Wed, Oct 11, 2000 at 08:54:21AM +0200, Ben Greear wrote:
> > I'm trying to write a hash structure that will hold the devices,
> > hashed by both name and index.
> >
> > It seems that the devices are first named generically: eth%d,
> > and at some later date, are initialized correctly.  This, of course,
> > completely screws up any name-based hashing I might have had...
> >
> > If names can change at any time, then I'll just quit trying to
> > hash on them.  However, if they only change up to some certain
> > step, then I'll be able to just initialize the hash list after that.
> >
> > Are the device names (for the devices in dev_base) un-changable after
> > some point?  What is this point?  (Would 'at-the-first-dev-add' be ok?)
> 
> Root can change them anytime using SIOCSIFNAME. I wrote a small program
> to rename net devices based on the MAC address, which used it successfully
> (so eth0 was always the same adapter, no matter how the modules were loaded)

What if I remove the device from the hash before the name change, and
add it back again after?  That should preserve the hash, and I assume that
the devices will not be renamed regularly, so the slight performance hit
should not be a problem.  I'll probably have to lock the structures
(read/write dev_base), just as the register_netdevice() does...

Do you know of any other ways that the dev name could be changed
after it's added to the list?

> 
> >
> > If this is un-workable, I can still hash on ifindex I think, it's
> > immutable, right?
> 
> It is inmutable correct, and easier to hash on anyways.

Actually, I am currently hashing on both.  I think that speeding up the
search based on name is important too, because if you are binding to an
interface, for example, then you must first map the name into an ifindex.

In other words, binding to each of 4000 interfaces by name could be
quite painful if you're using a linear search each time...

I mean, doesn't everyone need 4k VLAN interfaces?? :)

Thanks,
Ben

> 
> -Andi

-- 
Ben Greear (greearb@xxxxxxxxxxxxxxx)  http://www.candelatech.com
Author of ScryMUD:  scry.wanfear.com 4444        (Released under GPL)
http://scry.wanfear.com               http://scry.wanfear.com/~greear

<Prev in Thread] Current Thread [Next in Thread>