sync to udhcp 0.9.8
This commit is contained in:
parent
1b6eb9b6eb
commit
f5ecd43473
@ -1,4 +1,7 @@
|
|||||||
0.9.8 (pending)
|
0.9.8 (021031)
|
||||||
|
+ split up README files (me)
|
||||||
|
+ use /dev/urandom to seed xid's (instead of time(0)) (me)
|
||||||
|
+ fixed renew behavior (me)
|
||||||
+ udhcp now fits nicely into busybox
|
+ udhcp now fits nicely into busybox
|
||||||
(Glenn McGrath <bug1@optushome.com.au> as well as myself)
|
(Glenn McGrath <bug1@optushome.com.au> as well as myself)
|
||||||
+ updated client manpage (me)
|
+ updated client manpage (me)
|
||||||
|
@ -5,155 +5,6 @@ The udhcp server/client package is primarily geared towards embedded
|
|||||||
systems. It does however, strive to be fully functional, and RFC
|
systems. It does however, strive to be fully functional, and RFC
|
||||||
compliant.
|
compliant.
|
||||||
|
|
||||||
udhcp server (udhcpd)
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
The only command line argument to udhcpd is an optional specifed
|
|
||||||
config file. If no config file is specified, udhcpd uses the default
|
|
||||||
config file, /etc/udhcpd.conf. Ex:
|
|
||||||
|
|
||||||
udhcpd /etc/udhcpd.eth1.conf
|
|
||||||
|
|
||||||
The udhcp server employs a number of simple config files:
|
|
||||||
|
|
||||||
udhcpd.leases
|
|
||||||
------------
|
|
||||||
|
|
||||||
The udhcpd.leases behavior is designed for an embedded system. The
|
|
||||||
file is written either every auto_time seconds, or when a SIGUSR1
|
|
||||||
is received (the auto_time timer restarts if a SIGUSR1 is received).
|
|
||||||
If you send a SIGTERM to udhcpd directly after a SIGUSR1, udhcpd will
|
|
||||||
finish writing the leases file and wait for the aftermentioned script
|
|
||||||
to be executed and finish before quiting, so you do not need to sleep
|
|
||||||
between sending signals. When the file is written, a script can be
|
|
||||||
optionally called to commit the file to flash. Lease times are stored
|
|
||||||
in the file by time remaining in lease (for systems without clock
|
|
||||||
that works when there is no power), or by the absolute time that it
|
|
||||||
expires in seconds from epoch. In the remainig format, expired leases
|
|
||||||
are stored as zero. The file is of the format:
|
|
||||||
|
|
||||||
16 byte MAC
|
|
||||||
4 byte ip address
|
|
||||||
u32 expire time
|
|
||||||
16 byte MAC
|
|
||||||
4 byte ip address
|
|
||||||
u32 expire time
|
|
||||||
.
|
|
||||||
etc.
|
|
||||||
|
|
||||||
example: hexdump udhcpd.leases
|
|
||||||
|
|
||||||
0000000 1000 c95a 27d9 0000 0000 0000 0000 0000
|
|
||||||
0000010 a8c0 150a 0d00 2d29 5000 23fc 8566 0000
|
|
||||||
0000020 0000 0000 0000 0000 a8c0 140a 0d00 4e29
|
|
||||||
0000030
|
|
||||||
|
|
||||||
|
|
||||||
udhcpd.conf
|
|
||||||
----------
|
|
||||||
|
|
||||||
The format is fairly simple, there is a sample file with all the
|
|
||||||
available options and comments describing them in samples/udhcpd.conf
|
|
||||||
|
|
||||||
|
|
||||||
udhcp client (udhcpc)
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
The udhcp client negotiates a lease with the DHCP server and notifies
|
|
||||||
a set of scripts when a leases is obtained or lost. The command line
|
|
||||||
options for the udhcp client are:
|
|
||||||
|
|
||||||
-c, --clientid=CLIENTID Client identifier
|
|
||||||
-H, --hostname=HOSTNAME Client hostname
|
|
||||||
-h, Alias for -H
|
|
||||||
-f, --foreground Do not fork after getting lease
|
|
||||||
-b, --background Fork to background if lease cannot be
|
|
||||||
immediately negotiated.
|
|
||||||
-i, --interface=INTERFACE Interface to use (default: eth0)
|
|
||||||
-n, --now Exit with failure if lease cannot be
|
|
||||||
immediately negotiated.
|
|
||||||
-p, --pidfile=file Store process ID of daemon in file
|
|
||||||
-q, --quit Quit after obtaining lease
|
|
||||||
-r, --request=IP IP address to request (default: none)
|
|
||||||
-s, --script=file Run file at dhcp events (default:
|
|
||||||
/usr/share/udhcpc/default.script)
|
|
||||||
-v, --version Display version
|
|
||||||
|
|
||||||
If the requested IP address cannot be obtained, the client accepts the
|
|
||||||
address that the server offers.
|
|
||||||
|
|
||||||
When an event occurs, udhcpc calls the action script. The script by
|
|
||||||
default is /usr/share/udhcpc/default.script but this can be changed via
|
|
||||||
the command line arguments. The three possible arguments to the script
|
|
||||||
are:
|
|
||||||
|
|
||||||
deconfig: This argument is used when udhcpc starts, and
|
|
||||||
when a leases is lost. The script should put the interface in an
|
|
||||||
up, but deconfigured state, ie: ifconfig $interface 0.0.0.0.
|
|
||||||
|
|
||||||
bound: This argument is used when udhcpc moves from an
|
|
||||||
unbound, to a bound state. All of the paramaters are set in
|
|
||||||
enviromental variables, The script should configure the interface,
|
|
||||||
and set any other relavent parameters (default gateway, dns server,
|
|
||||||
etc).
|
|
||||||
|
|
||||||
renew: This argument is used when a DHCP lease is renewed. All of
|
|
||||||
the paramaters are set in enviromental variables. This argument is
|
|
||||||
used when the interface is already configured, so the IP address,
|
|
||||||
will not change, however, the other DHCP paramaters, such as the
|
|
||||||
default gateway, subnet mask, and dns server may change.
|
|
||||||
|
|
||||||
nak: This argument is used with udhcpc receives a NAK message.
|
|
||||||
The script with the deconfig argument will be called directly
|
|
||||||
afterwards, so no changes to the network interface are neccessary.
|
|
||||||
This hook is provided for purely informational purposes (the
|
|
||||||
message option may contain a reason for the NAK).
|
|
||||||
|
|
||||||
The paramaters for enviromental variables are as follows:
|
|
||||||
|
|
||||||
$HOME - The set $HOME env or "/"
|
|
||||||
$PATH - the set $PATH env or "/bin:/usr/bin:/sbin:/usr/sbin"
|
|
||||||
$1 - What action the script should perform
|
|
||||||
interface - The interface this was obtained on
|
|
||||||
ip - The obtained IP
|
|
||||||
siaddr - The bootp next server option
|
|
||||||
sname - The bootp server name option
|
|
||||||
boot_file - The bootp boot file option
|
|
||||||
subnet - The assigend subnet mask
|
|
||||||
timezone - Offset in seconds from UTC
|
|
||||||
router - A list of routers
|
|
||||||
timesvr - A list of time servers
|
|
||||||
namesvr - A list of IEN 116 name servers
|
|
||||||
dns - A list of DNS server
|
|
||||||
logsvr - A list of MIT-LCS UDP log servers
|
|
||||||
cookiesvr - A list of RFC 865 cookie servers
|
|
||||||
lprsvr - A list of LPR servers
|
|
||||||
hostname - The assigned hostname
|
|
||||||
bootsize - The length in 512 octect blocks of the bootfile
|
|
||||||
domain - The domain name of the network
|
|
||||||
swapsvr - The IP address of the client's swap server
|
|
||||||
rootpath - The path name of the client's root disk
|
|
||||||
ipttl - The TTL to use for this network
|
|
||||||
mtu - The MTU to use for this network
|
|
||||||
broadcast - The broadcast address for this network
|
|
||||||
ntpsrv - A list of NTP servers
|
|
||||||
wins - A list of WINS servers
|
|
||||||
lease - The lease time, in seconds
|
|
||||||
dhcptype - DHCP message type (safely ignored)
|
|
||||||
serverid - The IP of the server
|
|
||||||
message - Reason for a DHCPNAK
|
|
||||||
tftp - The TFTP server name
|
|
||||||
bootfile - The bootfile name
|
|
||||||
|
|
||||||
additional options are easily added in options.c.
|
|
||||||
|
|
||||||
udhcpc also responds to SIGUSR1 and SIGUSR2. SIGUSR1 will force a renew state,
|
|
||||||
and SIGUSR2 will force a release of the current lease, and cause udhcpc to
|
|
||||||
go into an inactive state (until it is killed, or receives a SIGUSR1). You do
|
|
||||||
not need to sleep between sending signals, as signals received are processed
|
|
||||||
sequencially in the order they are received.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
compile time options
|
compile time options
|
||||||
-------------------
|
-------------------
|
||||||
@ -185,6 +36,7 @@ options.c contains a set of dhcp options for the client:
|
|||||||
|
|
||||||
code: The DHCP code for this option
|
code: The DHCP code for this option
|
||||||
|
|
||||||
|
|
||||||
busybox drop-in
|
busybox drop-in
|
||||||
--------------
|
--------------
|
||||||
udhcp is now a drop-in component for busybox (http://busybox.net).
|
udhcp is now a drop-in component for busybox (http://busybox.net).
|
||||||
@ -195,3 +47,4 @@ cp *.[ch] README AUTHORS COPYING ChangeLog TODO \
|
|||||||
|
|
||||||
The only two files udhcp does not provide are config.in and
|
The only two files udhcp does not provide are config.in and
|
||||||
Makefile.in, so these may need to be updated from time to time.
|
Makefile.in, so these may need to be updated from time to time.
|
||||||
|
|
||||||
|
17
networking/udhcp/README.dumpleases
Normal file
17
networking/udhcp/README.dumpleases
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
udhcp lease dump (dumpleases)
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
dumpleases displays the leases written out by the udhcpd server. Lease
|
||||||
|
times are stored in the file by time remaining in lease (for systems
|
||||||
|
without clock that works when there is no power), or by the absolute
|
||||||
|
time that it expires in seconds from epoch. dumpleases accepts the
|
||||||
|
following command line options:
|
||||||
|
|
||||||
|
-a, --absolute Interpret lease times as expiration time.
|
||||||
|
-r, --remaining Interpret lease times as remaining time.
|
||||||
|
-f, --file=FILE Read lease information from FILE.
|
||||||
|
-h, --help Display help.
|
||||||
|
|
||||||
|
Note that if udhcpd has not written a leases file recently, the output
|
||||||
|
of may not be up to date.
|
||||||
|
|
139
networking/udhcp/README.udhcpc
Normal file
139
networking/udhcp/README.udhcpc
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
udhcp client (udhcpc)
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The udhcp client negotiates a lease with the DHCP server and notifies
|
||||||
|
a set of scripts when a leases is obtained or lost.
|
||||||
|
|
||||||
|
|
||||||
|
command line options
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The command line options for the udhcp client are:
|
||||||
|
|
||||||
|
-c, --clientid=CLIENTID Client identifier
|
||||||
|
-H, --hostname=HOSTNAME Client hostname
|
||||||
|
-h, Alias for -H
|
||||||
|
-f, --foreground Do not fork after getting lease
|
||||||
|
-b, --background Fork to background if lease cannot be
|
||||||
|
immediately negotiated.
|
||||||
|
-i, --interface=INTERFACE Interface to use (default: eth0)
|
||||||
|
-n, --now Exit with failure if lease cannot be
|
||||||
|
immediately negotiated.
|
||||||
|
-p, --pidfile=file Store process ID of daemon in file
|
||||||
|
-q, --quit Quit after obtaining lease
|
||||||
|
-r, --request=IP IP address to request (default: none)
|
||||||
|
-s, --script=file Run file at dhcp events (default:
|
||||||
|
/usr/share/udhcpc/default.script)
|
||||||
|
-v, --version Display version
|
||||||
|
|
||||||
|
|
||||||
|
If the requested IP address cannot be obtained, the client accepts the
|
||||||
|
address that the server offers.
|
||||||
|
|
||||||
|
|
||||||
|
udhcp client scripts
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
When an event occurs, udhcpc calls the action script. The script by
|
||||||
|
default is /usr/share/udhcpc/default.script but this can be changed via
|
||||||
|
the command line arguments. The three possible arguments to the script
|
||||||
|
are:
|
||||||
|
|
||||||
|
deconfig: This argument is used when udhcpc starts, and
|
||||||
|
when a leases is lost. The script should put the interface in an
|
||||||
|
up, but deconfigured state, ie: ifconfig $interface 0.0.0.0.
|
||||||
|
|
||||||
|
bound: This argument is used when udhcpc moves from an
|
||||||
|
unbound, to a bound state. All of the paramaters are set in
|
||||||
|
enviromental variables, The script should configure the interface,
|
||||||
|
and set any other relavent parameters (default gateway, dns server,
|
||||||
|
etc).
|
||||||
|
|
||||||
|
renew: This argument is used when a DHCP lease is renewed. All of
|
||||||
|
the paramaters are set in enviromental variables. This argument is
|
||||||
|
used when the interface is already configured, so the IP address,
|
||||||
|
will not change, however, the other DHCP paramaters, such as the
|
||||||
|
default gateway, subnet mask, and dns server may change.
|
||||||
|
|
||||||
|
nak: This argument is used with udhcpc receives a NAK message.
|
||||||
|
The script with the deconfig argument will be called directly
|
||||||
|
afterwards, so no changes to the network interface are neccessary.
|
||||||
|
This hook is provided for purely informational purposes (the
|
||||||
|
message option may contain a reason for the NAK).
|
||||||
|
|
||||||
|
The paramaters for enviromental variables are as follows:
|
||||||
|
|
||||||
|
$HOME - The set $HOME env or "/"
|
||||||
|
$PATH - the set $PATH env or "/bin:/usr/bin:/sbin:/usr/sbin"
|
||||||
|
$1 - What action the script should perform
|
||||||
|
interface - The interface this was obtained on
|
||||||
|
ip - The obtained IP
|
||||||
|
siaddr - The bootp next server option
|
||||||
|
sname - The bootp server name option
|
||||||
|
boot_file - The bootp boot file option
|
||||||
|
subnet - The assigend subnet mask
|
||||||
|
timezone - Offset in seconds from UTC
|
||||||
|
router - A list of routers
|
||||||
|
timesvr - A list of time servers
|
||||||
|
namesvr - A list of IEN 116 name servers
|
||||||
|
dns - A list of DNS server
|
||||||
|
logsvr - A list of MIT-LCS UDP log servers
|
||||||
|
cookiesvr - A list of RFC 865 cookie servers
|
||||||
|
lprsvr - A list of LPR servers
|
||||||
|
hostname - The assigned hostname
|
||||||
|
bootsize - The length in 512 octect blocks of the bootfile
|
||||||
|
domain - The domain name of the network
|
||||||
|
swapsvr - The IP address of the client's swap server
|
||||||
|
rootpath - The path name of the client's root disk
|
||||||
|
ipttl - The TTL to use for this network
|
||||||
|
mtu - The MTU to use for this network
|
||||||
|
broadcast - The broadcast address for this network
|
||||||
|
ntpsrv - A list of NTP servers
|
||||||
|
wins - A list of WINS servers
|
||||||
|
lease - The lease time, in seconds
|
||||||
|
dhcptype - DHCP message type (safely ignored)
|
||||||
|
serverid - The IP of the server
|
||||||
|
message - Reason for a DHCPNAK
|
||||||
|
tftp - The TFTP server name
|
||||||
|
bootfile - The bootfile name
|
||||||
|
|
||||||
|
additional options are easily added in options.c.
|
||||||
|
|
||||||
|
|
||||||
|
note on udhcpc's random seed
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
udhcpc will seed its random number generator (used for generating xid's)
|
||||||
|
by reading /dev/urandom. If you have a lot of embedded systems on the same
|
||||||
|
network, with no entropy, you can either seed /dev/urandom by a method of
|
||||||
|
your own, or doing the following on startup:
|
||||||
|
|
||||||
|
ifconfig eth0 > /dev/urandom
|
||||||
|
|
||||||
|
in order to seed /dev/urandom with some data (mac address) unique to your
|
||||||
|
system. If reading /dev/urandom fails, udhcpc will fall back to its old
|
||||||
|
behavior of seeding with time(0).
|
||||||
|
|
||||||
|
|
||||||
|
signals accepted by udhcpc
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
udhcpc also responds to SIGUSR1 and SIGUSR2. SIGUSR1 will force a renew state,
|
||||||
|
and SIGUSR2 will force a release of the current lease, and cause udhcpc to
|
||||||
|
go into an inactive state (until it is killed, or receives a SIGUSR1). You do
|
||||||
|
not need to sleep between sending signals, as signals received are processed
|
||||||
|
sequencially in the order they are received.
|
||||||
|
|
||||||
|
|
||||||
|
compile time options
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
options.c contains a set of dhcp options for the client:
|
||||||
|
|
||||||
|
name[10]: The name of the option as it will appear in scripts
|
||||||
|
|
||||||
|
flags: The type of option, as well as if it will be requested
|
||||||
|
by the client (OPTION_REQ)
|
||||||
|
|
||||||
|
code: The DHCP code for this option
|
||||||
|
|
59
networking/udhcp/README.udhcpd
Normal file
59
networking/udhcp/README.udhcpd
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
udhcp server (udhcpd)
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The only command line argument to udhcpd is an optional specifed
|
||||||
|
config file. If no config file is specified, udhcpd uses the default
|
||||||
|
config file, /etc/udhcpd.conf. Ex:
|
||||||
|
|
||||||
|
udhcpd /etc/udhcpd.eth1.conf
|
||||||
|
|
||||||
|
The udhcp server employs a number of simple config files:
|
||||||
|
|
||||||
|
udhcpd.leases
|
||||||
|
------------
|
||||||
|
|
||||||
|
The udhcpd.leases behavior is designed for an embedded system. The
|
||||||
|
file is written either every auto_time seconds, or when a SIGUSR1
|
||||||
|
is received (the auto_time timer restarts if a SIGUSR1 is received).
|
||||||
|
If you send a SIGTERM to udhcpd directly after a SIGUSR1, udhcpd will
|
||||||
|
finish writing the leases file and wait for the aftermentioned script
|
||||||
|
to be executed and finish before quiting, so you do not need to sleep
|
||||||
|
between sending signals. When the file is written, a script can be
|
||||||
|
optionally called to commit the file to flash. Lease times are stored
|
||||||
|
in the file by time remaining in lease (for systems without clock
|
||||||
|
that works when there is no power), or by the absolute time that it
|
||||||
|
expires in seconds from epoch. In the remaining format, expired leases
|
||||||
|
are stored as zero. The file is of the format:
|
||||||
|
|
||||||
|
16 byte MAC
|
||||||
|
4 byte ip address
|
||||||
|
u32 expire time
|
||||||
|
16 byte MAC
|
||||||
|
4 byte ip address
|
||||||
|
u32 expire time
|
||||||
|
.
|
||||||
|
etc.
|
||||||
|
|
||||||
|
example: hexdump udhcpd.leases
|
||||||
|
|
||||||
|
0000000 1000 c95a 27d9 0000 0000 0000 0000 0000
|
||||||
|
0000010 a8c0 150a 0d00 2d29 5000 23fc 8566 0000
|
||||||
|
0000020 0000 0000 0000 0000 a8c0 140a 0d00 4e29
|
||||||
|
0000030
|
||||||
|
|
||||||
|
|
||||||
|
udhcpd.conf
|
||||||
|
----------
|
||||||
|
|
||||||
|
The format is fairly simple, there is a sample file with all the
|
||||||
|
available options and comments describing them in samples/udhcpd.conf
|
||||||
|
|
||||||
|
compile time options
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
dhcpd.h contains the other two compile time options:
|
||||||
|
|
||||||
|
LEASE_TIME: The default lease time if not specified in the config
|
||||||
|
file.
|
||||||
|
|
||||||
|
DHCPD_CONFIG_FILE: The defualt config file to use.
|
@ -1,17 +1,14 @@
|
|||||||
TODO
|
TODO
|
||||||
----
|
----
|
||||||
|
+ Integrade README.*'s with manpages
|
||||||
|
+ using time(0) breaks if the system clock changes, find a portable solution
|
||||||
+ make failure of reading functions revert to previous value, not the default
|
+ make failure of reading functions revert to previous value, not the default
|
||||||
+ sanity code for option[OPT_LEN]
|
+ sanity code for option[OPT_LEN]
|
||||||
+ fix aliasing (ie: eth0:0)
|
+ fix aliasing (ie: eth0:0)
|
||||||
+ DONE: Make sure get_raw_packet only accepts packets on the specified interface
|
|
||||||
+ better standard linux distro support
|
+ better standard linux distro support
|
||||||
+ DONE: make config file a command line option for server
|
|
||||||
+ IMPLEMENTED: make forking a command line option
|
|
||||||
+ make sure packet generation works on a wide varitey of arches
|
+ make sure packet generation works on a wide varitey of arches
|
||||||
+ Interoperability testing
|
+ Interoperability testing
|
||||||
+ Hooks within the DHCP server
|
+ Hooks within the DHCP server
|
||||||
+ Additional bootp support in client/server
|
+ Additional bootp support in client/server
|
||||||
+ Make serverid option in server configurable
|
+ Make serverid option in server configurable
|
||||||
+ DONE: cause client to generate DHCP_VENDOR option
|
|
||||||
+ Possibly add failure message to DHCP NAK
|
+ Possibly add failure message to DHCP NAK
|
||||||
+ Possibly log DHCP NAK failure message in client
|
|
@ -35,6 +35,10 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@ -49,7 +53,17 @@ unsigned long random_xid(void)
|
|||||||
{
|
{
|
||||||
static int initialized;
|
static int initialized;
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
srand(time(0));
|
int fd;
|
||||||
|
unsigned long seed;
|
||||||
|
|
||||||
|
fd = open("/dev/urandom", 0);
|
||||||
|
if (fd < 0 || read(fd, &seed, sizeof(seed)) < 0) {
|
||||||
|
LOG(LOG_WARNING, "Could not load seed from /dev/urandom: %s",
|
||||||
|
strerror(errno));
|
||||||
|
seed = time(0);
|
||||||
|
}
|
||||||
|
if (fd >= 0) close(fd);
|
||||||
|
srand(seed);
|
||||||
initialized++;
|
initialized++;
|
||||||
}
|
}
|
||||||
return rand();
|
return rand();
|
||||||
|
@ -118,14 +118,14 @@ static void perform_renew(void)
|
|||||||
{
|
{
|
||||||
LOG(LOG_INFO, "Performing a DHCP renew");
|
LOG(LOG_INFO, "Performing a DHCP renew");
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case RENEWING:
|
|
||||||
run_script(NULL, "deconfig");
|
|
||||||
case BOUND:
|
case BOUND:
|
||||||
case REBINDING:
|
|
||||||
change_mode(LISTEN_KERNEL);
|
change_mode(LISTEN_KERNEL);
|
||||||
|
case RENEWING:
|
||||||
|
case REBINDING:
|
||||||
state = RENEW_REQUESTED;
|
state = RENEW_REQUESTED;
|
||||||
break;
|
break;
|
||||||
case RENEW_REQUESTED:
|
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
|
||||||
|
run_script(NULL, "deconfig");
|
||||||
case REQUESTING:
|
case REQUESTING:
|
||||||
case RELEASED:
|
case RELEASED:
|
||||||
change_mode(LISTEN_RAW);
|
change_mode(LISTEN_RAW);
|
||||||
@ -387,6 +387,7 @@ int main(int argc, char *argv[])
|
|||||||
packet_num++;
|
packet_num++;
|
||||||
} else {
|
} else {
|
||||||
/* timed out, go back to init state */
|
/* timed out, go back to init state */
|
||||||
|
if (state == RENEW_REQUESTED) run_script(NULL, "deconfig");
|
||||||
state = INIT_SELECTING;
|
state = INIT_SELECTING;
|
||||||
timeout = now;
|
timeout = now;
|
||||||
packet_num = 0;
|
packet_num = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user