------------ Forwarded Message ------------ Date: Monday, August 04, 2003 20:18:28 -0500 From: Larry Rosenman <[EMAIL PROTECTED]> To: Martin Blapp <[EMAIL PROTECTED]> Cc: Subject: Re: dhclient/dhclient.conf change in -CURRENT?
It did ****NOT**** do the right thing at boot. I did run it with -d -v and got the following....
Script started on Mon Aug 4 20:13:21 2003 lerlaptop# dhclient -d -v wi0
Internet Software Consortium DHCP Client V3.0.1rc11 Copyright 1995-2002 Internet Software Consortium. All rights reserved. For info, please visit http://www.isc.org/products/DHCP
Listening on BPF/wi0/00:06:25:18:1a:37 Sending on BPF/wi0/00:06:25:18:1a:37 Sending on Socket/fallback DHCPREQUEST on wi0 to 255.255.255.255 port 67 DHCPREQUEST on wi0 to 255.255.255.255 port 67 Trying medium "wepmode off ssid 'rednet' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:- " 1 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 6 Trying medium "wepmode off ssid 'IA-01' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-" 0 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 6 Trying medium "wepmode off ssid 'LERCTR NETWORK' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-" 0 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 6 DHCPREQUEST on wi0 to 255.255.255.255 port 67 Trying medium "wepmode off ssid 'rednet' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:- " 1 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 8 Trying medium "wepmode off ssid 'IA-01' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-" 0 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 3 Trying medium "wepmode off ssid 'LERCTR NETWORK' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-" 0 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 3 DHCPREQUEST on wi0 to 255.255.255.255 port 67 Trying medium "wepmode off ssid 'rednet' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:- " 1 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 9 DHCPREQUEST on wi0 to 255.255.255.255 port 67 Trying medium "wepmode off ssid 'IA-01' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-" 0 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 9 Trying medium "wepmode off ssid 'LERCTR NETWORK' wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-" 0 DHCPDISCOVER on wi0 to 255.255.255.255 port 67 interval 3 DHCPOFFER from 207.158.72.11 DHCPREQUEST on wi0 to 255.255.255.255 port 67 DHCPACK from 207.158.72.11 bound to 207.158.72.14 -- renewal in 1087437530 seconds. DHCPREQUEST on wi0 to 255.255.255.255 port 67 DHCPACK from 207.158.72.11 ^Z Suspended lerlaptop# bg
[1] dhclient -d -v wi0 & lerlaptop# ^D??exit
Script done on Mon Aug 4 20:15:28 2003
--On Tuesday, August 05, 2003 00:52:25 +0200 Martin Blapp <[EMAIL PROTECTED]> wrote:
Hi Larry,
And here is a more correct version. It still has some issues.
The sleep interval for dhclient after we lost a successful link is too big.
Can you live with this solution ?
Martin
--- src/contrib/isc-dhcp/includes/dhcpd.h.orig Mon Aug 4 23:57:06 2003 +++ src/contrib/isc-dhcp/includes/dhcpd.h Mon Aug 4 23:57:37 2003 @@ -782,6 +782,7 @@ char name [IFNAMSIZ]; /* Its name... */ int linkstatus; /* Link status */ int ieee802; /* True if media is ieee802 */ + int mediaflag; /* True if dhclient.conf has media settings */ int index; /* Its index. */ int rfdesc; /* Its read file descriptor. */ int wfdesc; /* Its write file descriptor, if --- src/contrib/isc-dhcp/client/dhclient.c.orig Tue Aug 5 00:42:37 2003 +++ src/contrib/isc-dhcp/client/dhclient.c Tue Aug 5 00:45:05 2003 @@ -257,7 +257,9 @@ log_fatal ("%s: interface name too long (max %ld)", argv [i], (long)strlen (argv [i])); strlcpy (tmp -> name, argv [i], IFNAMSIZ); - set_ieee802(tmp); +#ifdef __FreeBSD__ + set_ieee80211(tmp); +#endif tmp->linkstatus = interface_active(tmp); if (interfaces) { interface_reference (&tmp -> next, @@ -412,7 +414,14 @@ INTERFACE_AUTOMATIC)) != INTERFACE_REQUESTED)) continue; - set_ieee802(ip); +#ifdef __FreeBSD__ + set_ieee80211(ip); +#endif + if (ip -> client -> config -> media != NULL) + ip->mediaflag = 1; + else + ip->mediaflag = 0; + script_init (ip -> client, "PREINIT", (struct string_list *)0); if (ip -> client -> alias) @@ -1385,9 +1394,6 @@ int interval; int increase = 1;
- if (interface_active(client -> interface) == 0) - return; - /* Figure out how long it's been since we started transmitting. */ interval = cur_time - client -> first_sending;
@@ -1427,6 +1433,9 @@ } }
+ if (interface_active(client -> interface) == 0) + return; + /* If we're supposed to increase the interval, do so. If it's currently zero (i.e., we haven't sent any packets yet), set it to one; otherwise, add to it a random number between @@ -3215,14 +3224,29 @@ if (ifmr.ifm_status & IFM_AVALID) { if (ip->ieee802) { if ((IFM_TYPE(ifmr.ifm_active) == IFM_IEEE80211) && - (ifmr.ifm_status & IFM_ACTIVE)) + (ifmr.ifm_status & IFM_ACTIVE)) { + if (ip->mediaflag && + ip -> client -> state != S_BOUND) + return (2); return (1); + } } else { - if (ifmr.ifm_status & IFM_ACTIVE) + if (ifmr.ifm_status & IFM_ACTIVE) { + if (ip->mediaflag && + ip -> client -> state != S_BOUND) + return (2); return (1); + } } }
+ /* + * If dhclient.conf contains media settings, we cannot + * abort if the interface is not set to active mode. + */ + if (ip->mediaflag && ip -> client -> state != S_BOUND) + return (1); + return (0); # else /* ifdef __FreeBSD__ */
@@ -3231,7 +3255,7 @@ }
# ifdef __FreeBSD__ -set_ieee802 (struct interface_info *ip) { +set_ieee80211 (struct interface_info *ip) {
struct ieee80211req ireq; u_int8_t data[32]; @@ -3273,6 +3297,7 @@ { struct interface_info *ip; struct client_state *client; + int result;
# ifdef DEBUG printf("Polling interface status\n"); @@ -3312,11 +3337,19 @@ ip->linkstatus = 0; } } else { - if (interface_active(ip) == 0) { + if ((result = interface_active(ip)) == 0) { # ifdef DEBUG printf("%s: Lost Link on interface\n", ip->name); # endif ip->linkstatus = 0; + } + if (result == 2) { + for (client = ip -> client; + client; client = client -> next) { + add_timeout(cur_time + random () % 5, + state_reboot, client, 0, 0); + } + ip->linkstatus = 1; } } }
Martin Blapp, <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> ------------------------------------------------------------------ ImproWare AG, UNIXSP & ISP, Zurlindenstrasse 29, 4133 Pratteln, CH Phone: +41 61 826 93 00 Fax: +41 61 826 93 01 PGP: <finger -l [EMAIL PROTECTED]> PGP Fingerprint: B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E ------------------------------------------------------------------
-- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
---------- End Forwarded Message ----------
-- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[EMAIL PROTECTED]"