]>
git.ipfire.org Git - thirdparty/dhcpcd.git/log
Roy Marples [Sun, 3 Nov 2019 23:24:09 +0000 (23:24 +0000)]
build: Enforce address sanitisaton when debugging.
Roy Marples [Sun, 3 Nov 2019 10:13:54 +0000 (10:13 +0000)]
dhcpcd: Set ctx.ifaces to NULL after freeing
Because they it might be used trying to find an interface to assign
our option routes to when freed if never used.
Roy Marples [Fri, 1 Nov 2019 23:34:37 +0000 (23:34 +0000)]
eloop: Fix a segfault if we free a NULL eloop
Roy Marples [Fri, 1 Nov 2019 23:29:06 +0000 (23:29 +0000)]
control: when closing, remove from eloop.
Roy Marples [Fri, 1 Nov 2019 22:30:33 +0000 (22:30 +0000)]
script: Improve API
Roy Marples [Fri, 25 Oct 2019 14:15:22 +0000 (15:15 +0100)]
DHCP6: Simplify opening the UDP port for all interfaces.
Roy Marples [Fri, 25 Oct 2019 14:04:12 +0000 (15:04 +0100)]
DHCP: Rework closing BPF and seeing if we need to open UDP
Just easier to read.
Roy Marples [Fri, 25 Oct 2019 13:44:23 +0000 (14:44 +0100)]
DHCP: Simplify opening the UDP port for all interfaces.
Roy Marples [Fri, 25 Oct 2019 12:32:38 +0000 (13:32 +0100)]
ARP: Add interface to arp_state
Simplifies the codes slightly and allows a backreference if
we need to pass the ARP state as a context.
Roy Marples [Fri, 25 Oct 2019 12:20:20 +0000 (13:20 +0100)]
Fix prior on other os
Roy Marples [Fri, 25 Oct 2019 12:18:39 +0000 (15:18 +0300)]
Solaris: Fix prior by receving IP6_PKTINFO
Roy Marples [Fri, 25 Oct 2019 11:49:01 +0000 (12:49 +0100)]
Split *_recv() into *_recv() and *_recvmsg() functions
The *_recvmsg() function has the whole packet in the first and
only iov.
Serves little purpose now, but will be used in the future.
Roy Marples [Fri, 25 Oct 2019 11:36:22 +0000 (12:36 +0100)]
Fix prior
Roy Marples [Fri, 25 Oct 2019 10:55:52 +0000 (11:55 +0100)]
Whitespace.
Roy Marples [Fri, 25 Oct 2019 10:52:26 +0000 (11:52 +0100)]
BSD: Use IP_RECVIF
IP_RECVIF is supported on all BSD platforms as well as Solaris,
so it's more widely available than IP_PKTINFO.
This allows us to ensure that all platforms can retrieve the
receving interface from UDP network packets and thus make the code
paths a lot easier.
Roy Marples [Fri, 25 Oct 2019 10:34:06 +0000 (11:34 +0100)]
eloop: Add eloop_clear function
This will allow forking processes for future privsep work.
Roy Marples [Wed, 23 Oct 2019 10:21:38 +0000 (11:21 +0100)]
INET: Fix a potential memory leak
When someone deletes the address from under us.
Roy Marples [Wed, 23 Oct 2019 10:12:13 +0000 (11:12 +0100)]
Linux: validate RTM_NEWADDR/RTM_DELADDR for AF_INET as well.
Roy Marples [Tue, 22 Oct 2019 21:50:17 +0000 (22:50 +0100)]
INET: If we fail to add an address that already exists, don't free it
Should not happen in production.....
Roy Marples [Tue, 22 Oct 2019 11:39:56 +0000 (12:39 +0100)]
Linux: Validate RTM_DELADDR/RTM_NEWADDR messages for IPv6
To ensure that if messages lag, they can be ignored.
How to do similar without a heavy getifaddrs call for IPv4?
Peter Bui [Sun, 20 Oct 2019 21:15:08 +0000 (17:15 -0400)]
Fix building on systems with musl (#10)
musl has its own definition of struct ethhdr, so only include
netinet/if_ether.h on systems with GLIBC. For the ARPHDR constants, we
must include linux/if_arp.h instead.
Roy Marples [Sun, 20 Oct 2019 10:14:11 +0000 (11:14 +0100)]
dhcpcd: Run the STOPPED hook reason for the interface on timeout
If not in master mode.
Roy Marples [Sat, 19 Oct 2019 20:45:26 +0000 (21:45 +0100)]
Merge pull request #9 from vegerot/patch-1
Added documentation for undocumented option
Sergei Trofimovich [Wed, 16 Oct 2019 21:52:26 +0000 (22:52 +0100)]
DHCP: Fix prior to not waste space
Max Coplan [Wed, 16 Oct 2019 21:31:20 +0000 (17:31 -0400)]
Added documentation for undocumented option
The dbdir option is used to specify the location of the DHCPd database. The default /var/db is not FHS compliant so some may wish to change this to
Roy Marples [Wed, 16 Oct 2019 18:41:43 +0000 (19:41 +0100)]
Typo, thanks to Arfrever.
Roy Marples [Wed, 16 Oct 2019 14:21:58 +0000 (15:21 +0100)]
Relese dhcpcd-8.1.1
Roy Marples [Wed, 16 Oct 2019 14:19:58 +0000 (15:19 +0100)]
FreeBSD: Fix test for setproctitle
Roy Marples [Wed, 16 Oct 2019 13:56:21 +0000 (14:56 +0100)]
DHCP: Fix strict aliasing of checksumming the pseudo header
in_cksum relies on accessing the data by uint16_t blocks.
Because the underlying object we send to in_cksum is struct ip,
we need to use union to allow access by uint16_t so strict aliasing
rules are not broken.
Roy Marples [Wed, 16 Oct 2019 13:48:01 +0000 (14:48 +0100)]
compat: Fix UB in arc4random.
Roy Marples [Tue, 15 Oct 2019 13:06:51 +0000 (14:06 +0100)]
DHCP: Fix aliasing issues accessing the UDP header
Not been a problem before, but it seems to be now.
Copy out the UDP header rather than accessing it directly.
Adjust the code to zero out the UDP checksum in the packet
to compensate ..... and put the checksum back afterwards.
Roy Marples [Tue, 15 Oct 2019 13:03:27 +0000 (14:03 +0100)]
compat: Go back to linux specific setproctitle
Solaris does not work with argv stamping and this is much cleaner
anyway.
Roy Marples [Tue, 15 Oct 2019 12:40:32 +0000 (13:40 +0100)]
Revert "compat: Use more portable setproctitle from nginx"
This reverts commit
cbcb352f10de5ba5185860f20e148509081f9d2f .
Roy Marples [Tue, 15 Oct 2019 12:40:13 +0000 (13:40 +0100)]
Revert "compat: Fix setproctitle on Solaris"
This reverts commit
c085a2836f8439bc3e9d01a85d399afb8ad1dc12 .
Roy Marples [Tue, 15 Oct 2019 11:39:44 +0000 (14:39 +0300)]
compat: Fix setproctitle on Solaris
Roy Marples [Tue, 15 Oct 2019 10:59:58 +0000 (11:59 +0100)]
compat: Use more portable setproctitle from nginx
Hopefully works on older Linux and Solaris.
Roy Marples [Tue, 15 Oct 2019 10:57:17 +0000 (11:57 +0100)]
dhcp: Allow for trailing FCS in the packet.
Maxime Villard [Tue, 15 Oct 2019 08:57:26 +0000 (09:57 +0100)]
dhcp: Fix incoming verification and checksum routines
While here remove unused get_option_raw define.
Roy Marples [Mon, 14 Oct 2019 20:49:31 +0000 (21:49 +0100)]
compat: Add setproctitle from LXC
Roy Marples [Mon, 14 Oct 2019 15:01:00 +0000 (16:01 +0100)]
inet6: Fix a potential crash learning addresses
Interface maybe active but without options.
In this case, check the global state of IPv6.
Roy Marples [Fri, 11 Oct 2019 10:37:10 +0000 (11:37 +0100)]
Release dhcpcd-8.1.0
Roy Marples [Fri, 11 Oct 2019 10:24:38 +0000 (11:24 +0100)]
BPF: Move validation logic from BPF to consumers
Even though we program the BPF filter should we trust it?
On Linux at least there is a window between opening the socket,
binding the interface and setting the filter where we receive data.
This data is NOT checked OR flushed and IS returned when reading.
We have no way of flushing it other than reading these packets!
But we don't know if they passed the filter or not ..... so we need
to validate each and every packet that comes through ourselves as well.
Even if Linux does fix this sorry state, who is to say other kernels
don't have bugs causing a similar effect?
As such, let's strive to keep the filters just for pattern matching
to avoid waking dhcpcd up.
Roy Marples [Thu, 10 Oct 2019 11:00:46 +0000 (12:00 +0100)]
Minor optimisation and fix to prior.
Roy Marples [Thu, 10 Oct 2019 10:54:47 +0000 (10:54 +0000)]
BSD: Add IFT_TUNNEL
Requires explicit support but shouldn't log a code.
Roy Marples [Thu, 10 Oct 2019 10:20:09 +0000 (11:20 +0100)]
DHCP6: Remove 0 sla and 0 prefix means whole prefix.
If we get a /48 we can still use /64 with a sla of 0.
It's all valid, my bad.
Roy Marples [Wed, 9 Oct 2019 16:39:48 +0000 (17:39 +0100)]
man: some virtual interfaces ....
For example dummy on Linux still works by default.
There could be others....
Roy Marples [Wed, 9 Oct 2019 13:58:09 +0000 (14:58 +0100)]
man: Note the default ignoring of virtual interfaces.
Roy Marples [Wed, 9 Oct 2019 13:20:23 +0000 (14:20 +0100)]
BSD: Ignore bridge interfaces
Roy Marples [Wed, 9 Oct 2019 13:09:20 +0000 (14:09 +0100)]
Linux: Ignore TAP and Bridge interfaces by default
We can check these places:
/sys/class/net/tap0/tun_flags
/sys/class/net/br0/bridge
Roy Marples [Wed, 9 Oct 2019 12:37:12 +0000 (13:37 +0100)]
BSD: Ignore the firewire interface as well.
Roy Marples [Wed, 9 Oct 2019 12:34:34 +0000 (13:34 +0100)]
BSD: Ignore interface groups as we would the interface name
Incase someone renames tap0 to foo4.
Roy Marples [Wed, 9 Oct 2019 11:47:06 +0000 (12:47 +0100)]
if: Ignore TAP interfaces by default
TAP interfaces are virtual ethernet and not really distinguishable
from real interfaces other than the interface name.
On BSD the interfaces are always called tapN.
Roy Marples [Wed, 9 Oct 2019 10:28:03 +0000 (11:28 +0100)]
DHCP6: Work better with infinite addresses
And as such just log infinite lease rather than an arbitary
number.
Roy Marples [Tue, 8 Oct 2019 20:05:56 +0000 (21:05 +0100)]
ARP: remove surperfluous diagnostic.
Roy Marples [Tue, 8 Oct 2019 12:58:30 +0000 (13:58 +0100)]
ARP: Linux doesn't send a Gratuitous ARP for new addresses
Roy Marples [Tue, 8 Oct 2019 12:35:50 +0000 (13:35 +0100)]
ARP: Don't send an initial ARP announcement for newly added addresses
The kernel will do this for us.
Roy Marples [Tue, 8 Oct 2019 11:42:52 +0000 (12:42 +0100)]
arp: Fix an obvious typo and remove pragma
Obvious typo is obvious and I feel pretty dumb right now....
Roy Marples [Tue, 8 Oct 2019 11:17:22 +0000 (12:17 +0100)]
route: Don't log error when adding a route which already exists
Add a comment to explain why.
Roy Marples [Tue, 8 Oct 2019 10:56:11 +0000 (11:56 +0100)]
gcc: Only disable pragma for gcc>5 to avoid can't disable warnings
Roy Marples [Tue, 8 Oct 2019 10:29:15 +0000 (11:29 +0100)]
IPv4LL: Pick a different address at conflict
The start function will be called at carrier up and may rightly
pick the last assigned address. So, we need to ensure we pick the
next address we want to try at any conflict.
If any conflict, cancel any ARP state.
Roy Marples [Wed, 2 Oct 2019 16:06:18 +0000 (17:06 +0100)]
DHCP: Don't exit on static DaD failure if master or using IPv6.
As RA and DHCPv6 work fine too.
Roy Marples [Wed, 2 Oct 2019 16:01:02 +0000 (17:01 +0100)]
inet: Rework prior incase DHCP uses an IPv4LL address
Highly unlikely, but still technically possible.
Roy Marples [Tue, 1 Oct 2019 18:33:22 +0000 (19:33 +0100)]
DHCP: Don't log diagnostics when state is not running
Roy Marples [Tue, 1 Oct 2019 18:09:34 +0000 (19:09 +0100)]
IPv4LL: Fix DAD failure on NetBSD
Roy Marples [Tue, 1 Oct 2019 18:08:36 +0000 (19:08 +0100)]
inet: use ntohl with IN_LINKLOCAL
Roy Marples [Tue, 1 Oct 2019 17:41:15 +0000 (18:41 +0100)]
IPv4LL: Ensure we pick another address on DAD conflict via ARP
While here correct an error diagnostic logging an system error too.
Roy Marples [Tue, 1 Oct 2019 16:21:00 +0000 (17:21 +0100)]
gcc: Compile with older GCC again.
Roy Marples [Tue, 1 Oct 2019 16:09:10 +0000 (17:09 +0100)]
DHCP: Don't start DHCP if we fail DAD for static or informed addrs
Roy Marples [Tue, 1 Oct 2019 16:06:43 +0000 (17:06 +0100)]
inet: clarify prior with comment
Roy Marples [Tue, 1 Oct 2019 16:01:49 +0000 (17:01 +0100)]
inet: Either call the IPv4LL handler or the DHCP handler - not both
Roy Marples [Tue, 1 Oct 2019 15:01:37 +0000 (16:01 +0100)]
control.h needs stdbool.h to compile
Roy Marples [Tue, 1 Oct 2019 15:00:30 +0000 (16:00 +0100)]
BPF: Ensure packet is big enough for a UDP structure and payload
Roy Marples [Thu, 19 Sep 2019 19:48:12 +0000 (20:48 +0100)]
DHCP: Don't send force renew none or reconf accept if not asked for
Roy Marples [Thu, 19 Sep 2019 19:44:44 +0000 (20:44 +0100)]
options: Allow domain spaced options
Such as:
nooption dhcp6_sol_max_rt, dhcp6_reconfigure_accept
Roy Marples [Thu, 19 Sep 2019 18:20:16 +0000 (19:20 +0100)]
DHCP: Don't request an automatically requested option if not wanted
This handy macro also simplifies the logic a little.
Roy Marples [Thu, 19 Sep 2019 07:54:08 +0000 (08:54 +0100)]
DragonFlyBSD: rc.d scripts need onestatus also ....
Roy Marples [Wed, 18 Sep 2019 12:59:03 +0000 (13:59 +0100)]
dhcpcd: Check carrier directly after a route socket overflow
Check carrier directly rather than using LINK_UNKNOWN as that
will be forced down for wireless cards.
Roy Marples [Tue, 17 Sep 2019 11:24:22 +0000 (12:24 +0100)]
Linux: Remove unused BPF defines
These have lived in bpf.c for a while now.
Roy Marples [Tue, 17 Sep 2019 10:45:45 +0000 (11:45 +0100)]
DHCP: Rename dhcp_handlepacket to dhcp_handlebpf
This makes it a lot more clear as to the intent of the code
and it's not to handle from UDP.
Roy Marples [Tue, 17 Sep 2019 08:20:23 +0000 (09:20 +0100)]
DHCP: Improve from/to address selection
While here add a comment about broadcasting over UDP,
why we don't do it and why we need BPF.
Roy Marples [Tue, 17 Sep 2019 08:19:02 +0000 (09:19 +0100)]
DHCP: Re-enable the debug log of already bound messages
It's handy for debugging from whence the packet came even if
already bound.
Roy Marples [Tue, 17 Sep 2019 08:17:53 +0000 (09:17 +0100)]
DHCP: Rename dhcp_readpacket to dhcp_readbpf
So it's clear as to it's purpose, like dhcp_readudp.
Roy Marples [Fri, 13 Sep 2019 17:33:25 +0000 (20:33 +0300)]
Dilos: work with Debian style configure calling
Roy Marples [Fri, 13 Sep 2019 13:09:20 +0000 (14:09 +0100)]
DHCP: pretify error of invalid packet.
Roy Marples [Fri, 13 Sep 2019 11:45:52 +0000 (12:45 +0100)]
Release dhcpcd-8.0.6
Maciej S. Szmigiero [Fri, 13 Sep 2019 11:42:17 +0000 (12:42 +0100)]
DHCP: Check we have enough for data for IP header as well.
This is totally my bad - Maciej's patch had this length check in
but somehow my patch import lost it.
Roy Marples [Fri, 13 Sep 2019 11:37:59 +0000 (12:37 +0100)]
build: Put small and non small definitions in dhcpcd-embedded
This allows for easy source importing and the build can decide
which variant they want.
Roy Marples [Fri, 13 Sep 2019 10:54:03 +0000 (11:54 +0100)]
build: distclean now recursively removes patch files and related
Roy Marples [Fri, 13 Sep 2019 10:24:06 +0000 (11:24 +0100)]
Release dhcpcd-8.0.5
Roy Marples [Fri, 13 Sep 2019 10:23:48 +0000 (11:23 +0100)]
git: ignore patch files
Maciej S. Szmigiero [Fri, 13 Sep 2019 09:53:25 +0000 (10:53 +0100)]
DHCP: Ensure we have enough data to checksum IP and UDP
While here, only skip UDP checksum after we have verified we
have enough data to be doubly sure.
Fixes a regression introduced in dhcpcd-7.2.0 when we started
to read from the UDP socket rather than just the BPF socket
where these checks are already made.
Roy Marples [Fri, 13 Sep 2019 09:43:51 +0000 (10:43 +0100)]
DHCP: Give a better message when packet validation failes
We return ERANGE for underflow and ENOBUFS for overflow,
but these error strings could be misleading.
For EINVAL report invalid checksum, otherwise invalid UDP packet.
Roy Marples [Mon, 9 Sep 2019 20:18:36 +0000 (21:18 +0100)]
BSD: avoid RTF_WASCLONED routes
Roy Marples [Sun, 8 Sep 2019 21:46:55 +0000 (22:46 +0100)]
man: Fix lint errors.
Roy Marples [Fri, 6 Sep 2019 11:52:22 +0000 (12:52 +0100)]
DHCP: If root fs is network mounted, enable last lease extend
We don't want expiry to unmount the root FS.
Also, we don't want a reboot with an expired lease to kill
our current assignment either.
Only works on NetBSD right now.
Roy Marples [Fri, 6 Sep 2019 10:37:20 +0000 (11:37 +0100)]
Remove unused headers.
Roy Marples [Thu, 5 Sep 2019 09:03:13 +0000 (10:03 +0100)]
inet6: Fix default route not being installed
We need to check for global addresses on any forwarding interface,
not just the interface we received the RA on.
Otherwise this breaks routers who get a default route only
from the RA and IPv6 addresses only by prefix delegation to
other interfaces.
Roy Marples [Thu, 5 Sep 2019 08:35:23 +0000 (09:35 +0100)]
build: Fix DragonFlyBSD config for import.
Roy Marples [Wed, 4 Sep 2019 18:36:34 +0000 (19:36 +0100)]
build: Add dhcpcd.conf to import-src
Roy Marples [Wed, 4 Sep 2019 13:12:33 +0000 (14:12 +0100)]
Release dhcpcd-8.0.4