1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
07/23/96 1. moved ARP check from just after dhcpcd received a
0.2a DHCPOFFER message to just after dhcpcd received a
DHCPACK message.
2. added 'Parameter Request List' in the DHCPDISCOVER message.
3. added code to output the content of DHCP message option from
the server
07/27/96 added '-i' option specifying the class identifier because
0.2a RFC1541 says "The client implementation of DHCP should
provide a mechanism for the user to select directly the
'class-identifier' value.".
08/09/96 added the code to make a copy of the DHCP options in the
0.2 DHCPOFFER message because Windows NT server does not put
DHCP options in the DHCPACK message except for netmask, T1
time, and T2time. Other DHCP options are only in the
DHCPOFFER message.
09/09/96 added support to the "router" option.
0.25a changed files: options.c, dhcp-options.h, dhcp.h, hostinfo.c,
if.c, client.c
09/11/96 1. fixed a bug in setDefRoute (if.c). rt_flags was RT_UP.
0.3a It should be RT_GATEWAY.
2. fixed typos in openRecvSocket (socket-if.c)
3. changed the way to invoke a command file from using
signal to forking twice
4. removed unnecessary socket close/re-open
09/12/96 added the following sample shell scripts:
0.3b 1. "network" for pcmcia-cs
2. "rc" scripts (rc.inet1, rc.inet2, rc.M)
3. "rc.dhcp", a command file which can be executed from dhcpcd
09/13/96 1. enhanced NTP support. Now dhcpcd creates the file, ntp.conf
0.3 in the directory, /etc/dhcpc.
2. added the code verifying if router addresses are correct
09/16/96 fixed a typo in selecting (client.c)
0.31
09/17/96 added the code checking option field to parseDhcpMsg (options.c)
0.32
09/19/96 quick fix to make it work with ISC's dhcpd. I made BROACAST
0.33 flag available and added the NEED_BCAST_RESPONSE macro.
ISC's DHCP server is the Internet Draft compliant, but
dhcpcd is RFC1541 compliant. So this is a "workaround" version.
09/22/96 made dhcpcd compliant to the Internet Draft in order to
0.4 work with ISC version of DHCP server.
Changed client.c, options.c, socket-if.c
01/13/97 1. added IFF_MULTICAST in initHost (client.c) (Note 1).
0.5a 2. fixed the bug that dhcpcd core-dumped when it received a
datagram containig the DHCP message option (parseDhcpMsg
in options.c) (Note 2).
3. added -r option which makes dhcpcd RFC1541 compliant
(Note 3).
4. changed mkDhcpRequestMsg (client.c) to put the
parameter request list option into the DHCPREQUEST
message in order to support the CMU version of DHCP
server (Note 4). But I do not check whether it works
with the CMU version of DHCP server.
5. changed the argument to logOpen from LOG_CONS to LOG_PID
(Note 5).
6. add nextState initialization in rebinding (client.c).
7. changed the host information file name from "hostinfo"
to "hostinfo-ifname" (saveHostInfo in hostinfo.c)
(Note 5). Ifname is actually replaced with the network
interface name like "eth0". This is good when multiple
dhcpcd's attach to different network interfaces.
01/20/97 changed init, renewing, rebinding (client.c), and
0.5a2 rcvAndCheckDhcpMsg (socket-if.c) to fix the bug that dhcpcd
exited with holding the assigned IP address when it failed in
invoking sendto system call in the RENEWING state. This happened
when the server is down in the RENEWING state. It causes
hosts to use expired IP addresses (how dangerous!). Now
dhcpcd does not exit even when it gets an error from sendto
in the RENEWING state. It continues to use the assigned IP
address until the lease time is expired, then it
initializes the network interface and goes into the INIT
state (Note 6).
01/30/97 made version 0.5a2 into 0.5, and released it.
0.5
03/07/97 1. fixed the bug that the renewal time and the rebind time
are messed up (becomes minus number :p) when dhcpcd gets
the lease time whose least significant byte is greater
than or equal to 0x80 (setDhcpInfo in client.c) (Note 7).
For example, if the lease time is 24 hours, dhcpcd does
not work.
2. added the hostname option to the parameter request list
(mkDhcpDiscoverMsg and mkDhcpRequestMsg in client.c)
3. fixed the bug that dhcpcd sends a DHCPREQUEST message
which does not have the server identifier option in the
SELECTING state (mkDhcpRequestMsg in client.c)
4. fixed the bug that dhcpcd uses the information from the
DHCPOFFER message for configuring the host (it must use
the information from the DHCPREQUEST message) (initHost
in client.c) (Note 8).
03/16/97 1. fixed the bug that DHCPDECLINE message was RFC1541
0.6 compliant. Now dhcpcd can send both Interned Draft
compliant DHCPDECLINE message and RFC1541 compliant
one (mkDhcpDeclineMsg).
2. fixed the bug that the broadcast address and the
subnetmask were set to the wrong value under the
following condition:
1. dhcpcd is in the REBOOTING state
2. received DHCP ACK msg does not include the
broadcast or subnetmask option.
(rebooting in client.c)
3. fixed the bug that dhcpcd does not send a DHCPDECLINE
msg when it detects the duplicate IP adddress
(arpCheck in arp.c)..
4. changed the way to make a DHCPREQUEST msg in the
SELECTING state (selecting, mkDhcpRequestMsg)
5. changed the pcmcia/network script to unmount the NFS
filesystems before invoking "dhcpcd -k" command when
the card service goes down.
6. added a new environment variable DHCP_DEVICE, which
contains the name of network interface to which
dhcpcd is attached.
04/24/97 changed the source UDP port from a random number to 68
0.65 because some servers respond to NOT port 68 but the source
UDP port in the received datagram (Note 9).
08/28/97 1. added '-I' (client identifier) option.
0.70 2. added '-h' (hostname) option (Note 10).
02/04/98 Decreased ARP timeout to 2 seconds (fast enough for any Ethernet).
0.70-karn Route only the global broadcast address (255.255.255.255) to
the interface being configured, rather than all addresses.
Fixed retransmit backoff code to correctly scale output of rand().
Allow infinite retransmissions in the init state;
i.e., if the DHCP server is down, DHCPCD will wait forever
for it to come back up.
Close DHCP UDP sockets in child process invoked with -c option to
prevent bind failures if dhcpcd is restarted while the child
is still running.
Unlink pid file when exiting after getting an infinite lease.
Set and export LEASETIME, RENEWALTIME, REBINDTIME, IPADDR, NETMASK
and BROADCAST as environment variables to the command invoked
with the -c option. (Note 11)
Note 1: Koji Okamura suggested this.
Note 2: This fix was made by Dan Halbert.
Note 3: Dan Halbert found that dhcpcd-0.4 does not work with some
RFC1541 compliant DHCP servers, and made a patch for it.
Brandon Mitchell suggested -r option.
Note 4: N. Komazaki found that CMU's DHCP server (dhcpd-3.3.7
+patch) requires the parameter request option in the
DHCPREQUEST message.
Note 5: Ulrich Windl suggested this.
Note 6: Koji Okamura found this bug.
Note 7: Andrew Kieschnick found this bug.
Note 8: Tim Riker found this bug.
Note 9: I found this problem by using the tcpdump log which
Larry Hawkins sent me.
Note 10: I found some DHCP servers require this option by using the
tcpdump log which David Filiatrault sent me.
Note 11: From Phil Karn (karn@qualcomm.com), motivated by frequent
outages in the Time Warner Road Runner cable modem system.
|