[RFC] ifconfig: match by link-level address

From: Peter Pentchev (roam_at_ringlet.net)
Date: 05/20/04

  • Next message: Eugene Grosbein: "Re: [ANALISYS] Re: multicast arp entry"
    Date: Thu, 20 May 2004 19:29:19 +0300
    To: freebsd-net@FreeBSD.org
    
    
    
    

    Hi,

    I found out recently that the Linux (or at least recent RedHat) startup
    scripts could be configured to not bring up an Ethernet interface unless
    it has a specified MAC address. This, combined with the wonderful
    interface renaming functionality recently committed to -CURRENT, led me
    to the idea of interface renaming on boot-up, by hardware addresses -
    something like 'I don't care how you detected this network card, or how
    many others like it are there, but the card with MAC address
    00:03:0d:08:dc:a7 will be known as sis0int from now on'.

    The main missing piece was the ability to find an interface by MAC
    address; hence the attached patch, also available at
    http://www.ringlet.net/~roam/bsd-patches/src5/sbin-ifconfig-hwmatch.patch
    http://people.FreeBSD.org/~roam/bsd-patches/src5/sbin-ifconfig-hwmatch.patch

    It teaches ifconfig(8) to treat interface "names" beginning with 'hw-'
    as link-level addresses; ifconfig tries to find an interface with this
    address and behaves as if its name was specified on the command line:

    [roam@straylight ~/fbsd/r/src/sbin/ifconfig]> ./ifconfig hw-00:03:0d:08:dc:a7
    sis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            options=8<VLAN_MTU>
            inet 10.0.8.129 netmask 0xffff0000 broadcast 10.0.255.255
            inet 192.168.1.13 netmask 0xffffff00 broadcast 192.168.1.255
            ether 00:03:0d:08:dc:a7
            media: Ethernet autoselect (100baseTX <full-duplex>)
            status: active
    [roam@straylight ~/fbsd/r/src/sbin/ifconfig]>

    This could be the first step towards teaching rc.conf about something like
    network_interfaces_rename="hw-00:03:0d:08:dc:a7 sis0int"

    I had initially written my own function for parsing the user-supplied
    address into a sequence of bytes instead of using ether_aton(); it would
    have the advantage of being able to specify 'hw-' to match lo0's empty
    link-level "address". However, the odds of somebody actually wishing to
    rename lo0 don't seem to be so high :)

    G'luck,
    Peter

    -- 
    Peter Pentchev	roam@ringlet.net    roam@sbnd.net    roam@FreeBSD.org
    PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
    Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
    You have, of course, just begun reading the sentence that you have just finished reading.
    
    

    
    




  • Next message: Eugene Grosbein: "Re: [ANALISYS] Re: multicast arp entry"

    Relevant Pages

    • Re: RFC: Package == class == object type
      ... > I could reverse the parameter sequence so that the block type is ... have 'value 2' you still must specify a place holder, ... Which makes the interface less flexible in the future, ... lists, which need to be passed as references, in which case explicitly ...
      (perl.beginners)
    • Re: Thread safety tips
      ... > I do not understand what you mean by specify? ... > methods specify thread-safety ... I do not understand your reference to "non-abstract methods". ... of an interface are *abstract* by definition. ...
      (comp.lang.java.gui)
    • IPin::QueryAccept fails to renderer
      ... I am trying to get IAMVideoAccelerator interface working... ... I'm creating a video decoder filter and finding it hard to get the VMR ... the documentation doesn't specify. ...
      (microsoft.public.win32.programmer.directx.video)
    • Re: A puzzling question
      ... > satisfy any IUnknown calls locally. ... Well, on a call to CoCreateInstance, you specify the interface you want ... would have to specify IID_IUnknown to the remote server's CoCreateInstance, ...
      (microsoft.public.vc.atl)
    • Re: A puzzling question
      ... >> satisfy any IUnknown calls locally. ... > Well, on a call to CoCreateInstance, you specify the interface you ...
      (microsoft.public.vc.atl)