Nicholas J. Kain
f864a0317c
Cosmetic cleanups of comments.
2011-07-27 07:49:30 -04:00
Nicholas J. Kain
916ddf10e5
Update documentation: options concatenation is now supported.
2011-07-27 07:43:09 -04:00
Nicholas J. Kain
13f5ab56e2
Rewrite DHCP options parsing to conform to RFC 3396: options concatenation is
...
now fully supported.
2011-07-27 07:39:45 -04:00
Nicholas J. Kain
d7103c887d
Move the length check in ifchd_cmd_str() before the snprintf() call, so that
...
failure cannot leave the ifchd_cmd in a state with unbalanced ':'.
2011-07-27 00:42:16 -04:00
Nicholas J. Kain
7ef7fa8a8d
Fix the return value of ifchd_cmd_str() and correct its length check.
2011-07-27 00:37:11 -04:00
Nicholas J. Kain
17a2403635
Cosmetic fixes.
2011-07-26 06:43:12 -04:00
Nicholas J. Kain
f2618ef79d
Delete a lot of code that is now unused thanks to the previous commit.
2011-07-26 06:24:30 -04:00
Nicholas J. Kain
0431b7d439
Replace the options -> ifchd command code with a much simpler translator.
2011-07-26 06:15:21 -04:00
Nicholas J. Kain
b935180a2f
Just keep a statically constructed options request payload. It's simpler
...
and more compact.
2011-07-26 01:58:05 -04:00
Nicholas J. Kain
d00922df51
Abstract uses of get_option_data() outside of ifchange.c and options.c.
...
The eventual goal is to eliminate uses of get_option_data() in ifchange.c and
will make it a static function in options.c.
2011-07-26 01:04:59 -04:00
Nicholas J. Kain
ea5d472424
Encapsulate all string option additions into options.c. Note that these
...
functions already existed, but were in dhcp.c -- this is just code motion
between compilation units.
2011-07-25 23:48:35 -04:00
Nicholas J. Kain
286548b754
Encapsulate all numeric option additions into options.c.
2011-07-25 23:34:32 -04:00
Nicholas J. Kain
0229373378
Remove the overkill type checking for sent options.
2011-07-25 04:34:14 -04:00
Nicholas J. Kain
31d6d4cd92
Some options are never sent to ifchd, but we unfortunately would need to
...
sacrifice type checking to remove them from the options table. It may
be worth doing that, but I want to audit each call point before.
2011-07-25 04:26:34 -04:00
Nicholas J. Kain
e4a4c58856
BADOPTION -> BAD
2011-07-25 03:45:05 -04:00
Nicholas J. Kain
8caf9e7d7a
Remove support for RFC868 Time Server options. Totally obsolete, and
...
ifchd just had empty hooks that never received work messages anyway.
Shorten the names of ifchd commands. This breaks wire protocol, but
thankfully I haven't released yet!
2011-07-25 03:39:17 -04:00
Nicholas J. Kain
544a837944
Shrink and reorder the options table.
2011-07-25 03:28:04 -04:00
Nicholas J. Kain
2cb0b9227d
Consolidate DHCP option code numbers.
2011-07-25 03:11:47 -04:00
Nicholas J. Kain
77af1d81fe
Relicense under New BSD (2-clause) license. I don't see any advantage to
...
restricting use unnecessarily, and simple attribution is fine.
2011-07-25 02:30:57 -04:00
Nicholas J. Kain
7e1e902b34
Share ifchd command defines between ifchd and ndhc.
2011-07-25 02:01:38 -04:00
Nicholas J. Kain
fe85e52a4b
Be less harsh to udhcp in HISTORY... there was no better choice among the
...
considered options at the time.
2011-07-24 18:02:25 -04:00
Nicholas J. Kain
7f6721bb82
Pass around the DHCP message type as the literal data, not as a character
...
pointer to the matching data in the options field of the DHCP packet.
2011-07-18 10:47:35 -04:00
Nicholas J. Kain
27081be84f
Make netlink action logging messages more consistent: prefix with 'nl: ' and
...
always print the actual interface identifier.
2011-07-18 10:29:36 -04:00
Nicholas J. Kain
19ad80bb57
Minor doc fix. I'm going to keep using libcap.
2011-07-13 04:54:15 -04:00
Nicholas J. Kain
24db573005
Write man pages and do some misc cleanup on old files.
...
Add more documentation to the README.
2011-07-13 02:30:10 -04:00
Nicholas J. Kain
2a1885bab4
Move the objs directory underneath the build directory when building with
...
the Makefile.
2011-07-12 18:45:29 -04:00
Nicholas J. Kain
2aff36a274
Provide a gmake Makefile for distro builds and packagers.
...
Define _GNU_SOURCE in the CFLAGS.
Update the README.
Remove the duplicate Gentoo init script ndhc.sh that is in the root.
Remove DESIGN -- it's outdated.
2011-07-12 04:09:05 -04:00
Nicholas J. Kain
efe50a30a6
Even more cosmetic log message changes.
2011-07-11 23:51:55 -04:00
Nicholas J. Kain
0a0c74efcc
Yet more log message tweaking.
2011-07-11 23:45:37 -04:00
Nicholas J. Kain
8f80a10905
Remove some redundant log messages, and make the forced-release print a bit
...
more user-friendly.
2011-07-11 23:41:38 -04:00
Nicholas J. Kain
af365be9b7
Convert all inet_aton() to inet_pton() since inet_pton() is POSIX.
2011-07-11 17:11:19 -04:00
Nicholas J. Kain
b89c694bc9
Convert all uses of inet_ntoa() to inet_ntop(). inet_ntop() is POSIX,
...
supports ipv6 (doesn't matter to ndhc), and does not use a stupid internal
static buffer. This fixes some cosmetic print bugs.
2011-07-11 17:02:32 -04:00
Nicholas J. Kain
cfa22626e4
Check the server identifier option when receiving a DHCP ACK or NAK to make
...
sure that it matches that of our associated DHCP server.
Normalize, prune, and beautify the appearance of log messages.
Minor cosmetic cleanups/refactoring.
2011-07-11 16:33:57 -04:00
Nicholas J. Kain
e0ef11848b
Record the MAC address of the DHCP server and use it to identify the network
...
when the hardware link carrier is dropped and comes back. Also, don't assume
that all networks have a default gateway.
Guard against spurious arp defense attempts that might be triggered by packets
that are still in the socket buffer from before the BPF was changed.
Split apart the AS_GW_CHECK and AS_GW_QUERY timeout handlers.
Cosmetic cleanups in state.c.
2011-07-11 13:24:59 -04:00
Nicholas J. Kain
83594bce4a
Track pending events in time by using absolute times rather than relative
...
timeouts.
2011-07-11 11:31:27 -04:00
Nicholas J. Kain
9b3e1872cb
Rather than use a single cs.timeout value, track individual timeouts for every
...
ARP state and for the current DHCP state.
2011-07-11 10:39:36 -04:00
Nicholas J. Kain
8c30c82240
Optimize timeout calculations so that curms() is called fewer times and
...
the timeout intervals are a bit more exact.
2011-07-11 08:59:50 -04:00
Nicholas J. Kain
2e328b6913
Don't strip high bit from lease time.
...
Change order of operations to prevent overflow with very long leases when
calculating rebind time duration.
2011-07-11 08:01:56 -04:00
Nicholas J. Kain
9762fa5315
Constify some more static structs.
2011-07-11 05:35:40 -04:00
Nicholas J. Kain
1e71f82f3a
Refactor the ARP code to be similar to the dhcp code -- timeout functions and
...
packet response functions are handled by an array of function pointers indexed
by ARP state.
Split arp_retransmit() apart into simpler functions.
Fix a typo in renewing_timeout() that would result in too-short timeouts that
would soak cpu.
Call handle_arp_timeout() from the timeout_action() function rather than
having
explicit hooks in various <dhcpstate>_timeout() functions.
Make the function pointer arrays static const.
2011-07-11 05:09:38 -04:00
Nicholas J. Kain
8beb1d12d1
Fix a regression: if renewing or rebinding a dhcp lease that matches our
...
previous client ip, make sure to stop listening for dhcp packets, set the
proper timeout interval, and make sure we're in AS_DEFENSE state.
2011-07-06 11:41:49 -04:00
Nicholas J. Kain
080fefaea0
Handle hardware link state loss and restoration on networks that lack a
...
default gw properly.
2011-07-06 11:32:22 -04:00
Nicholas J. Kain
ad5c5d6803
Only perform arpreply_clear() after consuming an arp packet in
...
handle_arp_response() and when opening a new arp fd. Do not clear the
arpreply buffer and offset on ARP state transitions.
Only perform ARP collision probing when binding a new lease from the
DS_REQUESTING state, or if we have renewed or rebound a lease with a different
IP than we had before.
Resequence the arp_dhcp_packet memcpy() in arp_check() so that the current
IP address is ARP checked rather than the previous one.
2011-07-06 09:26:07 -04:00
Nicholas J. Kain
a92cb1c4c6
Randomize the DHCP timeout by +[0,1000]ms to comply with RFC.
2011-07-06 08:46:05 -04:00
Nicholas J. Kain
daf42ccb29
Change ifchange_*() so that the interface and ip keywords are only sent to
...
ifchd if it is necessary to do so, just as is the case for other keywords.
Make data sending in ifchange_*() collect all keywords into a buffer that
is sent in a single sockwrite() rather than performing a sockwrite() for
every keyword.
Minor documentation updates.
2011-07-05 19:25:19 -04:00
Nicholas J. Kain
3316505f3c
Define set_released() and use it for entering the DS_RELEASED state.
2011-07-05 18:29:06 -04:00
Nicholas J. Kain
3f496f7997
Clean up frenew(). It should only perform work in DS_RELEASED and DS_BOUND.
2011-07-05 18:18:57 -04:00
Nicholas J. Kain
04c380cd3b
Call arp_close_fd() from reinit_selecting().
2011-07-05 16:02:11 -04:00
Nicholas J. Kain
3205f823d9
Handle DS_REBINDING and DS_RENEWING states just like DS_BOUND when the
...
hardware link returns after having been lost.
Make the timeout action for DS_BOUND_GW_CHECK perform ARP retransmissions
rather than just sending a single query.
2011-07-05 15:57:11 -04:00
Nicholas J. Kain
3196ad750e
cs->packetNum is not descriptive and is not used outside of state.c.
...
Rename it to num_dhcp_requests that is a static global to state.c.
2011-07-05 15:44:11 -04:00