Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jul 2007 23:52:35 +0000
From:      Maxim Vetrov <muxas@mail.ru>
To:        =?UTF-8?B?QmFydMWCb21pZWogUnV0a293c2tp?= <brutkowski@lerkins.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Possible devd bug
Message-ID:  <46A14AC3.4080509@mail.ru>
In-Reply-To: <20070720111951.522738441C@stasis01.lerkins.com>
References:  <20070720093449.630B98441D@stasis01.lerkins.com>	<46A127FF.7040507@mail.ru> <20070720111951.522738441C@stasis01.lerkins.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Bartłomiej Rutkowski wrote:
> On Fri, 20 Jul 2007 21:24:15 +0000
> Maxim Vetrov <muxas@mail.ru> wrote:
>
>   
>> Bart?omiej Rutkowski wrote:
>>     
>>> Hi all,
>>>
>>> I have been playing with OpenOspf lately, and I came to a place, when I needed to ensure that an ethernet interface should always go into DOWN state when it loses its link (physically, for example the switch becames turned off). I have tried to hire the devd daemon to do the job with such small definitions:
>>>
>>> notify 100 {
>>>         match "system"          "IFNET";
>>>         match "type"            "LINK_DOWN";
>>>         media-type              "ethernet";
>>>         action "/sbin/ifconfig $subsystem down";
>>> };
>>>  
>>> notify 200 {
>>>         match "system"          "IFNET";
>>>         match "type"            "LINK_UP";
>>>         media-type              "ethernet";
>>>         action "/sbin/ifconfig $subsystem up";
>>> };
>>>
>>> And what is happening? Well, basically, when the interface detects that eth cable has been detached, devd triggers and makes it DOWN, which is ok. But, when the card got the cable attached once again (and interface detects the media type and gets ACTIVE state) devd never triggers the second rule, which should get the interface UP again. 
>>> I have tried that with replacing action statements with ones with proper logging actions, and when interface is UP devd gets the proper state changes information. 
>>>
>>> Now the question is: why devd doesent receive any information from interfaces in DOWN state? Is that proper behaviour, or a bug? Thanks for any reply, and for your attention.
>>>
>>> P.S. I am resending this message to freebsd-stable list, as I am not sure if freebsd-questions was a proper choice.
>>>
>>>   
>>>       
>> Probably, there is another notify which action is executed before yours 
>> :-) Devd stops scanning sections on the _first_ matched one. Run devd in 
>> debug mode and watch
>>
>> Regards,
>> Muxas
>>     
>
> I did my tests with debugging and logger in action directives and now I can confirm that
> devd does not trigger, when you put eth interface into DOWN state by "#ifconfig ifnameX down".
> Now, is that intentional behaviour or a bug? This makes those LINK_UP devd triggers 
> totally unusable. 
> You can test this behaviour with such example ruleset: http://rafb.net/p/gTm9CW93.html
>
>
>   
First of all, I can confirm that plugging and unplugging lan cable fires 
corresponding devd trigger actions. I checked this by plugging and 
unplugging cable :-) Look at /etc/devd.conf; this section is responsible 
for bringing link up:

 >># Try to start dhclient on Ethernet like interfaces when the link comes
 >># up.  Only devices that are configured to support DHCP will actually
 >># run it.  No link down rule exists because dhclient automaticly exits
 >># when the link goes down.
 >>#
 >>notify 0 {
 >>        match "system"          "IFNET";
 >>        match "type"            "LINK_UP";
 >>        media-type              "ethernet";
 >>        action "/etc/rc.d/dhclient start $subsystem";
 >>};


And, IMHO, second,  because "...devctl hooks in at such a low level of 
FreeBSD's NEWBUS system..." [exerpt from "devd - A device confguration 
daemon" by W. Losh] it does not react to "soft"  actions. In other 
words, I think, ifconfig commands do not generate hardware events. The 
article is acessible via
http://www.usenix.org/publications/library/proceedings/bsdcon03/tech/losh.html. 


And about http://rafb.net/p/gTm9CW93.html.
1. There is no system mentioned
2. Read the above article about section weights

Regards,
Muxas



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46A14AC3.4080509>