summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/sd-dhcp-client.c
AgeCommit message (Collapse)Author
2014-03-24sd-event: rework API to support CLOCK_REALTIME_ALARM and ↵Lennart Poettering
CLOCK_BOOTTIME_ALARM, too
2014-03-21sd-dhcp-client/sd-ipv4ll: allow mac address to be updated at any timeTom Gundersen
If necessary, restart the clients to deal with a changing mac address at runtime. This will solve the problem of starting clients on bridges before they have received their final MAC address.
2014-03-21sd-dhcp-client: add fallback subnet masksTom Gundersen
The DHCP RFC does not require the DHCP server to send a subnet mask, so if it is missing, let's try to use the default subnet masks based on address class. In case the class the address belongs to does not have a default subnet mask, we fail as before. Also improve logging when handling invalid dhcp messages, and simply ignore them rather than stop the whole dhcp client.
2014-03-21sd-dhcp-client: make timeout handling a bit more robustTom Gundersen
Accept any lease lifetime greater than one second. Server should not hand out extremely short leases, but let's not be the ones to fail. Do not fail when arming a timer in the past, but also only arm one such timer. Avoid rounding errors when computing the default timeouts, this may be an issue if we are handed a very short lease. Also, don't pass 'time_now' around, as that can be found in the event object when needed.
2014-03-20sd-dhcp-client: do not reset 'secs' when entering INIT-REBOOTTom Gundersen
Also keep start_time in sync, but that shouldn't matter.
2014-03-20sd-dhcp-client: don't pass around 'secs'Tom Gundersen
The value is stored in the client object, so get it there when needed.
2014-03-20libsystemd-network: Don't unnecessarily send too long packetsPatrik Flykt
Since the length used by options is known, send packets with no extra padding.
2014-03-20libsystemd-network: Prepend hardware type byte to client identifierPatrik Flykt
Even though client identifiers SHOULD be treated as opaque objects by DHCP servers, follow the recommendation of a hardware type field with value 0x01 (ethernet) followed by the hardware address as described in RFC 2132.
2014-03-19sd-dhcp-client: accept infinite lease lifetimeTom Gundersen
Otherwise we would fail with -EINVAL. Thanks to Brandon Philips <brandon.philips@coreos.com>, for reporting the bug.
2014-03-19libsystemd-network: Add Init-Reboot supportPatrik Flykt
Init-Reboot is tried if a client IP address has been given when the DHCP client is started. In Init-Reboot, start by sending a broadcast DHCP Request including the supplied client IP address but without the server identifier. After sending the request, enter Reboot state. If a DHCP Ack is received, proceed to Bound state as usual. If a DHCP Nak is received or the first timeout triggers, start the address acquisition over from DHCP Init state. See RFC 2131, sections 4.3.2, 4.4, 4.4.1 and 4.4.2 for details.
2014-03-19libsystemd-network: Restart DHCP acquisition if the lease expiresPatrik Flykt
This causes the DHCP client struct initialization and DHCP client starting to be factored out into functions of their own.
2014-03-18util: replace close_nointr_nofail() by a more useful safe_close()Lennart Poettering
safe_close() automatically becomes a NOP when a negative fd is passed, and returns -1 unconditionally. This makes it easy to write lines like this: fd = safe_close(fd); Which will close an fd if it is open, and reset the fd variable correctly. By making use of this new scheme we can drop a > 200 lines of code that was required to test for non-negative fds or to reset the closed fd variable afterwards.
2014-03-18sd-dhcp-client: make sure timers fire immediatelyTom Gundersen
The default slack caused there to be a delay before timers fired. Solve it by setting timers that should trigger immediately to trigger far in the past. This brings down the ideal-case dhcp lease acquisition time from about 500ms to about 50ms (over a veth pair, so no network latency involved). All the rest of the time (except for ~0.5ms) is spent in the bind() call in, dhcp_network_bind_raw_socket(). I don't know if there is anything to be done about that though...
2014-03-11sd-dhcp-client: use close_nointr_nofail()Tom Gundersen
We are already assuming the close() will not fail, so make it explicit.
2014-03-11sd-dhcp: generalise ip header generationTom Gundersen
This will be needed for sd-dhcp-server.
2014-03-05sd-dhcp-client: log the MAC address we are usingTom Gundersen
2014-03-03sd-dhcp-lease: add sd_dhcp_lease_get_next_server()Tom Gundersen
2014-02-28sd-network: add new libraryTom Gundersen
This is similar to sd-login, but exposes the state of networkd rather than logind. Include it in libsystemd-dhcp and rename it to libsystemd-network.