On Monday, October 28, 2013 12:38 AM, Fred Snurd <[email protected]> wrote:
I found the following article on undeadly which uses ifstated(8) to automatically acquire a DHCP lease upon link state changes on an Ethernet interface: http://undeadly.org/cgi?action=article&sid=20071012140725&mode=expanded ...& thought that it would be simple to modify this for wireless links. To prove this to myself, I looked at the output of ifconfig(8) on an Alix system as it was connecting to an access point. Before doing any interface configuration: $ ifconfig ath0 ath0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500 lladdr a8:54:b2:23:da:80 priority: 4 groups: wlan media: IEEE802.11 autoselect status: no network ieee80211: nwid "" $ ...where "status" indicates the link state. Upon connecting to the AP, $ sudo ifconfig ath0 nwid <my-id> wpakey <my-password> $ ifconfig ath0ath0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500 lladdr a8:54:b2:23:da:80 priority: 4 groups: wlan media: IEEE802.11 autoselect status: no network ieee80211: nwid <my-id> wpakey <not displayed> wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip $ ...which still shows that the link has not changed as expected. Upon getting a DHCP lease, $ sudo dhclient ath0 DHCPREQUEST on ath0 to 255.255.255.255 on port 67 DHCPACK from 192.168.0.1 (..:..:..:..:..:..) bound to 192.168.0.4 -- renewal in 43200 seconds. $ ifconfig ath0 ath0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr a8:54:b2:23:da:80 priority: 4 groups: wlan egress media: IEEE802.11 autoselect (DS11 mode 11b) status: active ieee80211: nwid homestead chan 1 bssid 00:26:b8:d4:1c:49 wpakey <not displayed> wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip inet6 fe80::aa54:b2ff:fe23:da80%ath0 prefixlen 64 scopeid 0x4 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 $ ...which now shows that the link is active. After turning off the AP, the link is seen to go down: $ ifconfig ath0 ath0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr a8:54:b2:23:da:80 priority: 4 groups: wlan egress media: IEEE802.11 autoselect (DS11 mode 11b) status: no network ieee80211: nwid homestead wpakey <not displayed> wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip inet6 fe80::aa54:b2ff:fe23:da80%ath0 prefixlen 64 scopeid 0x4 $ Upon turning the AP back on, the link is seen again to become active: $ ifconfig ath0 ath0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr a8:54:b2:23:da:80 priority: 4 groups: wlan egress media: IEEE802.11 autoselect (DS11 mode 11b) status: active ieee80211: nwid homestead wpakey <not displayed> wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip inet6 fe80::aa54:b2ff:fe23:da80%ath0 prefixlen 64 scopeid 0x4 $ ...so I assumed that ifstated.conf file shown in the article doesn't require much modification. Below is the minimal changes made: $ cat /etc/ifstated.conf wireless_up = 'ath0.link.up' wireless_down = '!ath0.link.up' state auto { if $wireless_up set-state main } state main { init { run 'ifconfig ath0 nwid <my-id> wpakey <my-password>' run 'dhclient ath0' } if $wireless_down { # run 'ifconfig ath0 delete' set-state auto } } init-state auto $ ifstated has been enabled in /etc/rc.conf.local, & the system has been rebooted: $ grep ifstated /etc/rc.conf.local ifstated_flags='' $ No /etc/hostname.ath0 file has been created. ath0 comes up as expected at system boot, but cycling the AP doesn't result in the network connection to be re-established. Can someone point out what I am missing for I'm not seeing it. Thanks for any clarification shared.

