Roy's Blog

A Hacker's musings on Code | Tech | Life

  • OpenBSD: Fix adding INET6 on-link routes without an address
  • Linux: Improve interface renaming
  • Linux: If listening to dev manager, let it remove interfaces
  • Routing: Fix case when cloning route changes but needs to be replaced
  • DHCP6: Transpose DHCP userclass option into DHCP6
  • DHCP6: Fix sending custom vendor class option
  • Auth: Allow zero value replay detection data
  • Auth: Allow different tokens for send and receive
  • ND6: Warn if router lifetime is set to zero
  • DHCP6: Softwire Address and Port-Mapped Clients, RFC7598

The Authentication changes allow DHCP6 Prefix Delegation from the French ISP Orange

Continue reading...

A very important update:

  • udev: uses the logerr framework so that udev debug goes into the debug file
  • BSD: fix a segfault when IPv6 addresses are present and carrier changes (not NetBSD)
  • dhcp6: fix a null termination overflow on status messages (dhcpcd-7 branch only)
  • options: static routes can be setup in global context again
  • routes: dhcpcd added host routes are now reported correctly

dhcpcd-7.0.0, 7.0.1 and 7.0.2 are vulnerable to the DHCP6 issue where the message is copied from the DHCP6 option into a buffer, but is NULL terminated beyond the size of the buffer. dhcpcd-6 is not vulnerable.

Continue reading...

A long overdue release, and apologies for the wait Fixed stuff:

  • Added support for setproctitle(3)
  • Kernel RA is no longer disabled when IPv6 is disabled in dhcpcd
  • DHCPv6 PD is no longer stopped if no Routers are found
  • If the DHCP leased address is deleted, enter the reboot state
  • DHCPv6 unicast is no longer performed when not in master mode
  • dhcpcd will now detect netlink/route socket overflows ad re-sync

The last point is the one that took sometime, mainly because I had to patch the NetBSD kernel on my router where this happens a lot when booting. Technically this was achieved just as in Linux - recv(2) now returns ENOBUFS when the internal receive buffer as overflowed. OpenBSD has a different approach where they flush the internal buffer and send a custom route(4) RTM_DESYNC message. This is supported as well.

Once overflowed, dhcpcd will close the socket to throw away now garbage messages and open a new one. Then it will re-learn interfaces (+ their carrier state and flags) and addresses (+ their flags and lifetimes). dhcpcd will then run the hooks for any departed/arrvied/carrier/nocarrier events resulting from this, in other words it should function as if nothing happened.

Continue reading...

Happy Birthday to me! 45 yours young today! To celebrate, I released a minor update to dhcpcd-7 with the following changes:

  • hooks: remove use of local builtin for better portability
  • Fix build issue when __GNUC__ <= 2 (thanks to Chris Hathhorn)
  • dhcpcd: don't log errors working out carrier for departed interfaces
  • ipv4: allow configuration of static broadcast address
  • if: don't set MTU during interface discovery
  • if: don't activate non matching interfaces to commandline ones
  • configure: make --includedir=/usr/src/foo work
  • eloop-bench: fix hangs when using a large number of cycles
  • dhcp: don't bind when we've just probed an address to inform

Continue reading...

Welcome to 2018 :)
dhcpcd-7.0.0 has been released!

Here's the list of changes from rc4:

  • dhcp: when unicasting on L3, unicast on L2 as well
  • dhcp: when rebooting, don't set cidaddr
  • dhcp6: don't listen on IPv6 addresses when not using DHCPv6
  • dhcp: only set probe state when probing (fixes REBOOT reason)
  • linux: use IFA_F_NOPREFIXROUTE for IPv4 addresses
  • ipv6: disable kernel RA if interface is active
  • hooks: set protocol to link for link layer events

Continue reading...