104 Commits

Author SHA1 Message Date
Michael Stapelberg
c7be96ac2e dhcp4d: fix IP address comparison
AFAICT, this wasn’t actually a bug: canLease performs the correct check.
2019-01-01 10:45:03 +01:00
Michael Stapelberg
0d2e89cebf dhcp4d_test: fix message to match comparison 2019-01-01 10:44:03 +01:00
Michael Stapelberg
b923f145a5 dhcp4d: don’t incorrectly _offer_ reused addresses
Turns out a5d9e03dd3212f7f0c11dd856b308a16a58a3cdf was not entirely sufficient:
even though reused addresses would not be handed out anymore, they would still
be offered, which results in the client not being able to obtain an address.
2019-01-01 10:41:29 +01:00
Michael Stapelberg
ddcdd39737 dhcp4: drop last ack to restart with DISCOVER upon receiving NAK
fixes #13
2018-12-25 14:10:21 +01:00
Michael Stapelberg
725262d376 netconfig: use sysctl format for easier copy&paste 2018-12-25 14:08:14 +01:00
Michael Stapelberg
9012520052 diag: more informative error messages 2018-12-15 13:36:21 +01:00
Michael Stapelberg
a5d9e03dd3 dhcp4d: don’t incorrectly hand out reused addresses
fixes #18
2018-12-15 12:44:09 +01:00
Michael Stapelberg
ec4f1f4dc5 netconfig: implement WireGuard support
To set up a tunnel, create a /perm/wireguard.json as illustrated in
netconfig_test.go, and don’t forget to adjust your /perm/interfaces.json with
the address configuration for the WireGuard tunnel.

Note that static routes cannot currently be configured, so the usefulness is
limited. If you have a use-case you’d like to see covered, please explain it in
https://github.com/rtr7/router7/issues/14
2018-11-26 18:29:03 +01:00
Michael Stapelberg
ac883da6a5 dns_test: xps → testtarget
This fixes running the tests on xps, where the entry derived from os.Hostname
would clash with the xps entries the testcase tries to install.
2018-11-22 17:03:51 +01:00
Michael Stapelberg
df9a40557c dhcp4: correctly check errors from c.once 2018-11-21 08:41:24 +01:00
Michael Stapelberg
bef7168112 dhcp4: resolve TODOs in comments 2018-11-21 08:41:07 +01:00
Michael Stapelberg
5b34daeb4e no-op cleanup: switch to dhcp4.LeaseFromACK 2018-11-21 08:23:57 +01:00
Michael Stapelberg
8c55c5ba44 dhcp4: switch to github.com/rtr7/dhcp4
All existing DHCPv4 packages I looked at were unappealing for one reason or
another, so we’re now using a little helper to glue github.com/google/gopacket
and github.com/mdlayher/raw together, which suffices for our use-case and gives
us more control.
2018-11-21 08:18:58 +01:00
Michael Stapelberg
4288adec69 dns: don’t let clients override the hostname
fixes #11
2018-10-22 21:43:41 +02:00
Michael Stapelberg
0bbc1d923d refactor replayer code into pcapreplayer package 2018-10-22 21:04:35 +02:00
Michael Stapelberg
e01a38ff78 commit debug statements 2018-10-22 18:58:40 +02:00
Michael Stapelberg
2e8e0daa0a implement TCP MSS clamping (for non-ethernet uplinks)
We didn’t have a need to clamp the TCP Maximum Segment Size (MSS) up until now,
because fiber7 uses an MTU of 1500.

Because Path MTU discovery is often broken on the internet, it’s best practice
to limit the Maximum Segment Size (MSS) of each TCP connection, achieving the
same effect (but only for TCP connections).

This change is beneficial when running router7 behind a non-ethernet uplink,
such as a Fritz!Box cable modem.

This has no adverse effect on fiber7: after clamping, the MSS is still 1440, as
without clamping.
2018-10-22 18:54:25 +02:00
Michael Stapelberg
c037bf9c5f dhcp4d: fix panic when receiving unsupported requests 2018-10-22 18:39:25 +02:00
insomniac
cfbf52db6e dhcp6: update after changes in insomniacslk/dhcp (#10) 2018-10-16 08:03:45 +02:00
Pablo Mazzini
81894ba0b3 dhcp6: simplify PD obtention (#9) 2018-10-11 14:29:22 +02:00
Michael Stapelberg
f606e70250 dhcp4d: respect broadcast bit
Mac’s Internet Recovery DHCP client requires broadcast responses and will ignore
unicast responses outright.
2018-10-07 17:36:00 +02:00
Philipp Hug
aa404c3c54 Request nameserver, router and netmask as it might not be automatically returned by dhcp server. (#7) 2018-09-05 10:06:31 -06:00
Michael Stapelberg
447f1779e2 dhcp6: update for breaking upstream changes
see https://github.com/insomniacslk/dhcp/pull/81
2018-09-05 08:39:35 +02:00
Michael Stapelberg
b03596f1c5 nftables: use stateful object counters
This way, we can atomically get and reset them.

fixes https://github.com/rtr7/router7/issues/3
2018-08-08 23:15:21 +02:00
Michael Stapelberg
ad779c3665 dhcp6: update for breaking upstream changes 2018-08-05 11:45:03 +02:00
Michael Stapelberg
5a5a748b9f dnsd: don’t serve expired leases
fixes #6
2018-08-05 11:30:58 +02:00
Michael Stapelberg
daa14845ab netconfig: plug fd leak by closing the netlink handle
fixes #4
2018-07-22 23:07:23 +02:00
Michael Stapelberg
c5e5a0eee0 radvd: gather details about the interface on SIGUSR1
The interface might have a new MAC address (if radvd was started before netconfigd).
2018-07-16 22:46:49 +02:00
Michael Stapelberg
49a59779f5 dhcp4d: don’t offer expired leases 2018-07-15 18:33:11 +02:00
Michael Stapelberg
3282dc5675 netconfig: GetRule filtering is not supported by Linux 4.4.0 (trusty) 2018-07-14 20:53:15 +02:00
Michael Stapelberg
bfa16c559f dnsmasq: gracefully handle temporarily not existing ready files 2018-07-14 16:42:50 +02:00
Michael Stapelberg
3afe757a34 notify: gracefully handle vanishing processes 2018-07-14 16:36:51 +02:00
Michael Stapelberg
b347ed74c5 update import paths 2018-07-09 08:54:04 +02:00
Michael Stapelberg
984e8802f7 dhcp6: log XIDs when they differ
Encountering this message can be perfectly normal, e.g. in a high-availability
setup, where two DHCP servers answer to your requests.
2018-07-03 17:37:25 +02:00
Michael Stapelberg
b05fd74006 dhcp4: increase timeout to 10s 2018-07-03 17:37:17 +02:00
Michael Stapelberg
86f5433cbb dhcp6: correctly clear previous error 2018-06-29 12:02:16 +02:00
Michael Stapelberg
ff7aa8f2cb add copyright notices 2018-06-28 20:08:23 +02:00
Michael Stapelberg
2b3cf0bf61 captured: use multilisten 2018-06-28 20:08:23 +02:00
Michael Stapelberg
4c7741a337 add backupd 2018-06-26 18:01:50 +02:00
Michael Stapelberg
89e1276ad4 dns: simplify resolving code 2018-06-26 09:33:23 +02:00
Michael Stapelberg
8e95e25442 radvd: announce link-local ipv6 address for DNS 2018-06-26 09:04:05 +02:00
Michael Stapelberg
10df129c1f dns: listen on all private IP addresses 2018-06-26 08:53:20 +02:00
Michael Stapelberg
08249aec6a dns: resolve localhost locally 2018-06-25 20:24:02 +02:00
Michael Stapelberg
60de127991 Describe all packages and binaries. 2018-06-25 20:12:51 +02:00
Michael Stapelberg
a881f6b61e cut down on test noise 2018-06-24 12:06:40 +02:00
Michael Stapelberg
ae15230da3 dhcp4d: log in leases callback 2018-06-24 11:56:39 +02:00
Michael Stapelberg
5a07d6696d split integration tests into multiple packages
This makes them complete more quickly (because they are run in parallel) and
invalidates only the cache for the integration test I’m working on, not for all
of them.
2018-06-24 11:46:49 +02:00
Michael Stapelberg
2ff269bf67 unflake integration: use different interface name in DHCPv6 test 2018-06-24 08:33:39 +02:00
Michael Stapelberg
c96c683e43 dns: send NXDOMAIN for non-existant local names 2018-06-23 22:15:35 +02:00
Michael Stapelberg
3886367a32 remove TODOs: the sysctls have reasonable defaults 2018-06-23 20:34:42 +02:00