Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 7b799b870f units: use relative path 2024-03-16 05:31:44 +09:00
Yu Watanabe 1716bac658 Merge pull request #31808 from keszybz/sundry-cleanups
Sundry cleanups
2024-03-16 01:40:56 +09:00
Yu Watanabe dbf66cd1ab network/address: acquire address in address_process_request()
Previously, if an [Address] section is configured with a null address,
e.g. Address=0.0.0.0/24, then we acquired a free address in
link_request_address().

With this commit, we queue a request with the null address as is, and
acquire a free address later in address_process_request(). Similary,
now IPv4ACD daemon is configured in address_process_request().

With this change, we can make the address acquisition depend on other
conditions, e.g. if the persistent storage is ready or not.
2024-03-15 14:54:49 +00:00
Yu Watanabe 5ed4c2b944 sd-dhcp-server: also save the server address and netmask to the leases file
And introduce a tiny helper to retrieve these information.
The function is not used at this time, but will be used later.
2024-03-15 04:15:10 +09:00
Yu Watanabe d47f83302e sd-dhcp-server: rearrange the parser of the leases file
No functional changes, just refactoring and preparation for later
commits.
2024-03-15 04:15:10 +09:00
Yu Watanabe 11b88419ae sd-dhcp-server: make sd_dhcp_server_set_lease_file() optionally take directory fd
Currently, though, no valid directory fd is passed to the function call.
Preparation for later commits.
2024-03-15 04:15:10 +09:00
Yu Watanabe 6e0abf5fb3 docs: fix typo
Follow-up for 34c6b7d9de.
2024-03-15 04:04:01 +09:00
Yu Watanabe 134fe8d274 network: introduce link_requeue_request() 2024-03-15 02:28:48 +09:00
Yu Watanabe c91f8f90ba network: use link_start_dhcp4_server() at one more place
Otherwise, even if the persistent storage is not ready, the DHCP server
may be started e.g. by unplugging and plugging cable.

Follow-up for 5582b36c38.
2024-03-15 02:28:38 +09:00
Yu Watanabe 6b67cf808a json: introduce json_dispatch_int8() and json_dispatch_uint8() 2024-03-14 23:56:44 +08:00
Yu Watanabe d30d44883f stat-util: expose fd_is_read_only_fs()
Currently it is not used, but the fucntion is already quite generic and
useful.
2024-03-14 23:45:27 +08:00
Yu Watanabe cdafb51ab4 Merge pull request #31754 from YHNdnzj/journal-fd-namespace
journal/cat: allow connecting output to specific journal namespace
2024-03-14 19:59:19 +09:00
Yu Watanabe af02814a85 ptyfwd: fix typo
Follow-up for d0aa368c85.
2024-03-14 17:40:26 +09:00
Yu Watanabe fcaa510597 TODO: fix typo
Follow-up for 54b0e05ed0.
2024-03-14 17:39:12 +09:00
Yu Watanabe f03caa0d3e stat-util: fix typo
Follow-up for 7cff2b79f0.
2024-03-14 17:37:50 +09:00
Yu Watanabe cac8e820d6 network/varlink: return StorageReadOnly error
Addresses https://github.com/systemd/systemd/pull/30021#discussion_r1521595855.
2024-03-13 21:49:12 +09:00
Yu Watanabe 9ca04752cb sd-ndisc-router: adjust function names and type of returned value
- prefix length and preference should be fit in uint8_t, and actually
  the kernel and networkd uses uint8_t to store them.
- captive portal is now stored as a NUL-terminated string. Hence, it
  is not necessary to also provide its length.
2024-03-13 12:32:52 +09:00
Yu Watanabe b43c2221f6 sd-ndisc-router: introduce sd_ndisc_router_get_sender_mac()
The Router Advertisement option can take the MAC address of the sender.
Let's introduce a function to get it from the parsed options.
2024-03-13 12:32:52 +09:00
Yu Watanabe 0216c67269 ndisc-option: drop unused function 2024-03-13 12:32:52 +09:00
Yu Watanabe c0edd6b3b3 sd-ndisc-router: use ndisc_parse_options() and friends to parse Router Advertisement 2024-03-13 12:32:52 +09:00
Yu Watanabe a163404cc8 ndisc-option: introduce generic NDisc option parser
It is not used in this commit, but will be used for parsing NDisc
options in Router Advertisement message and friends.

The parser does mostly equivalent to what currently we do in
sd-ndisc-router.c. Several notable differences are:
- also perse source and target link-layer address,
- refuse multiple captive portals,
- check if the captive portal is in safe characters, as previously we
  checked that in networkd-ndisc.c,
- dedup prefixes, routes, and pref64,
- limit the total number of options, for safety.
2024-03-13 12:32:37 +09:00
Yu Watanabe dd6bbb3027 sd-ndisc: rename ndisc-protocol.[ch] -> ndisc-option.[ch] 2024-03-13 10:55:48 +09:00
Yu Watanabe 6f9148bab9 unit: do not trigger automount for /boot and/or /efi
ProtectSystem=full remounts /boot and/or /efi read-only, but that
may trigger automount for the paths and delay the service being started.
===
systemd[1]: boot.automount: Got automount request for /boot, triggered by 720 ((networkd))
===
The service does not need to access the paths, so let's hide them.

Follow-up for f90eb08627.

Fixes #31742.
2024-03-13 10:23:18 +09:00
Yu Watanabe 7d6efb777e unit: sort option 2024-03-13 10:22:49 +09:00
Yu Watanabe 3fbade30a8 Merge pull request #31716 from evverx/fuzz-lease-save-load
fuzz: save/load DHCP client leases
2024-03-12 19:05:17 +09:00
Yu Watanabe 06baee4ea3 Merge pull request #30021 from yuwata/dhcp-client-id-cleanups
dhcp-server: save bound leases to persistent storage, and load it on start
2024-03-12 13:40:09 +09:00
Yu Watanabe 1c4411b7ff test-network: add test case for DHCP server lease file 2024-03-12 01:57:17 +09:00
Yu Watanabe 5582b36c38 network/dhcp-server: save leases in state directory
Then, we can read the lease file on restart, and the DHCP server will be
able to manage previously assigned addresses.

To save leases in the state directory /var/lib/systemd/network/, this
adds systemd-networkd-dhcp-server.service, and by default
systemd-networkd does not start the DHCP server without the heler
service started.

Closes #29991.
2024-03-12 01:57:17 +09:00
Yu Watanabe 35b2c1b0c8 fuzz-dhcp-server: also test saving and loading lease file 2024-03-12 01:57:17 +09:00
Yu Watanabe 033f119756 sd-dhcp-server: introduce sd_dhcp_server_set_lease_file() and dhcp_server_{save,load}_leases().
The functionality is not used networkd yet in this commit, but will be
used in later commits.
2024-03-12 01:57:17 +09:00
Yu Watanabe aa8200e971 sd-dhcp-server: also expose lease expiration timestamp in realtime
Here, we use map_clock_usec_raw(), instead of map_clock_usec() to reduce
number of calls of now() -> clock_gettime().
2024-03-12 01:57:17 +09:00
Yu Watanabe 3ecd6fa98b time-util: expose map_clock_usec_internal() as map_clock_usec_raw()
This will be used later.
2024-03-12 01:57:17 +09:00
Yu Watanabe b923ada838 sd-dhcp-server-lease: move functions to build json format
No functional change, just preparation for later commits.
2024-03-12 01:57:17 +09:00
Yu Watanabe 5a2f378362 sd-dhcp-server: refuse invalid hostname in request
Currently, the received hostname is not used for assigning an address to
the host, or options in the subsequent reply message. But, the parsed
hostname is exposed through DBus, and possibly Varlink in the future.
Let's ignore spurious hostname.
2024-03-12 01:57:17 +09:00
Yu Watanabe fa3357b9e8 dhcp-option: refuse control and non-UTF8 characters in string option
We oftem save parsed DHCP options into a file, or expose them
through DBus or Varlink. In such case, control characters or non-UTF8
characters may cause many kind of unexpected errors. In general, a DHCP
message that have string options with spurious characters is mostly
malformed or broken. Let's refuse them.

This also makes dhcp_option_parse_string() do not free 'ret' argument,
to follow our usual coding style. So, callers now need to free the
pre-exisitng string if necessary.

Fixes #31708.
2024-03-12 01:57:17 +09:00
Yu Watanabe c84a5f5eaf test-network: add support for systemd-networkd-persistent-storage.service 2024-03-12 01:57:16 +09:00
Yu Watanabe 91676b6458 networkctl: introduce "persistent-storage" command
Then, this introduces systemd-networkd-persistent-storage.service.

systemd-networkd.service is an early starting service. So, at the time
it is started, the persistent storage for the service may not be ready,
and we cannot use StateDirectory=systemd/network in
systemd-networkd.service.

The newly added systemd-networkd-persistent-storage.service creates the
state directory for networkd, and notify systemd-networkd that the
directory is usable.
2024-03-12 01:57:16 +09:00
Yu Watanabe f90eb08627 network/varlink: introduce io.systemd.Network.SetPersistentStorage method
And make the networkd use state directory.

Currently, the state directory and the method are not used, but will be used later.
2024-03-12 01:57:11 +09:00
Yu Watanabe 83cc18257e test-network: copy system unit files from build or source directory
Addresses https://github.com/systemd/systemd/pull/30021#issuecomment-1971090682.
2024-03-12 01:17:40 +09:00
Yu Watanabe f66045c7d4 test-network: drop unused options and variables
This also renames several variables, and replace RuntimeError with
assert.
2024-03-12 01:14:40 +09:00
Yu Watanabe 1d87a00a95 mkosi: fix typo
Follow-up for 4d0f1451b5.
2024-03-10 14:09:41 +09:00
Yu Watanabe 17be4d7b98 mkosi: fix typo
Follow-up for 4d0f1451b5.
2024-03-08 18:17:37 +01:00
Yu Watanabe 77630ec909 resolve: fix typo
Follow-up for d08566fad7.
2024-03-09 01:43:48 +09:00
Yu Watanabe 3d1279af79 meson: add missing dependency to libdl
Follow-up for 1c20c9f4fc.

Fixes https://github.com/systemd/systemd/pull/31550#issuecomment-1980458377.
2024-03-06 17:24:03 +00:00
Yu Watanabe 21fdecdc13 sd-netlink: allow to call rtnl_get_link_info() without iftype and flags 2024-03-05 12:19:47 +00:00
Yu Watanabe 1f901c2453 Merge pull request #31586 from YHNdnzj/progress-bar-minor-followup
shared/pretty-print: minor follow-up for progress bar
2024-03-02 15:31:29 +09:00
Yu Watanabe aa384c6430 Merge pull request #31583 from yuwata/sd-lldp-json-follow-up
sd-lldp: fix assignment of capabilities in JSON output
2024-03-02 15:31:00 +09:00
Yu Watanabe 4b35dab86a test-network: wait for the interface being processed by udevd
Otherwise, even if the interface is available, the requested config may
not be applied to the interface yet.

This also merges multiple tests for RPS setting. Hopefully the
performance of the test is improved.
2024-03-02 14:50:40 +09:00
Yu Watanabe a39a2a8121 test-network: introduce udevadm() and friends 2024-03-02 14:50:40 +09:00
Yu Watanabe 7e66e053d4 udev/net: fix ReceivePacketSteeringCPUMask=disable assignment
Follow-up for 0f30bf5886.

If 'mask' is newly allocated, previously the value was ignored.
2024-03-02 14:50:39 +09:00
Yu Watanabe eca7a4886d fuzz-lldp-rx: fuzz lldp_rx_build_neighbors_json()
Addresses https://github.com/systemd/systemd/pull/31583#discussion_r1509882453.
2024-03-02 13:52:28 +09:00
Yu Watanabe 0f805b4661 test-network: check enabled capabilities in LLDP neighbors
Addresses https://github.com/systemd/systemd/pull/31583#discussion_r1509880349.
2024-03-02 13:52:28 +09:00
Yu Watanabe e2290a7775 sd-lldp: fix assignment of capabilities in JSON output
Follow-up for 329146a9ac.
2024-03-02 13:52:28 +09:00
Yu Watanabe 5bafe8d1e7 man: fix typo
Follow-up for 419b25ddca.
2024-03-02 11:57:39 +09:00
Yu Watanabe d5e6df24bd Merge pull request #31498 from ssahani/bond
netdev: bond - add support for peer_notif_delay
2024-03-01 12:45:52 +09:00
Yu Watanabe 3807936cc5 Merge pull request #31502 from yuwata/network-lldp-json
network: support to dump LLDP neighbors in JSON format
2024-03-01 12:18:53 +09:00
Yu Watanabe 6a5134e83a Merge pull request #31555 from yuwata/sd-ndisc-trivial-cleanups
sd-ndisc: trivial cleanups
2024-03-01 12:18:19 +09:00
Yu Watanabe ccb1ace77f sd-ndisc: drop unused sd_ndisc_router_get_raw() 2024-03-01 09:44:58 +09:00
Yu Watanabe f169c56447 sd-ndisc: use _packed_ attribute 2024-03-01 09:44:58 +09:00
Yu Watanabe bbb2a0fb41 icmp6-packet: check the alignment of struct nd_opt_hdr for safety
Addresses https://github.com/systemd/systemd/pull/31492#discussion_r1507481748.
2024-03-01 09:44:45 +09:00
Yu Watanabe d6360819a7 test-network: add more test cases for LLDP 2024-03-01 09:40:26 +09:00
Yu Watanabe ac23c5596e sd-lldp-rx: drop unused functions
These are not used anymore.
2024-03-01 09:40:26 +09:00
Yu Watanabe 5a0f6adbb2 network/lldp: do not save LLDP neighbors under /run/systemd
Now LLDP neighbors are exposed through varlink. Hence, it is not
necessary to save to a file.
2024-03-01 09:40:26 +09:00
Yu WatanabeandTomáš Pecka 14a5c07afa networkctl: use varlink method to dump LLDP neighbors
`networkctl lldp` and `networkctl status INTERFACE` now use varlink
call to the networkd to query LLDP neighbors.

Then, this allows to dump LLDP neighbors in JSON format.

Co-authored-by: Tomáš Pecka <tomas.pecka@cesnet.cz>
2024-03-01 09:40:26 +09:00
Yu Watanabe 1dbd2cc72a networkctl: rename check_netns_match() -> varlink_connect_networkd()
Then optionally return the varlink connection to the caller.
2024-03-01 09:40:26 +09:00
Yu WatanabeandTomáš Pecka c48ca17aa8 network/varlink: add varlink method to get LLDP neighbors
The method provides the list of LLDP neighbors.

Co-authored-by: Tomáš Pecka <tomas.pecka@cesnet.cz>
2024-03-01 09:40:26 +09:00
Yu Watanabe 1e18e1aa11 Merge pull request #31492 from yuwata/icmp6-packet
sd-ndisc: introduce ICMP6Packet and relevant functions, and use them
2024-03-01 09:18:52 +09:00
Yu Watanabe 39af486a7f network/ndisc: drop redundant sd_ndisc_router_get_icmp6_ratelimit()
This effectively reverts 9175002864.

The retrans time field in RA message is for neighbor solicitation,
and the commit d4c8de21a0 makes the value
assigned to the correct sysctl property.

Let's deprecate the option, and drop the redundant functions.
2024-02-28 11:05:00 +00:00
Yu Watanabe 9398ef0786 cgroup-setup: clarify '<=' is evaluated earlier
Follow-up for 31323f21bb.

The code is correct, but let's silence Coverity.

Closes CID#1534787.
2024-02-28 14:11:43 +08:00
Yu Watanabe 630023e2e4 TODO: fix typo
Follow-up for 666a348d1c.
2024-02-28 11:46:21 +09:00
Yu Watanabe c4047829bb test-network: fix typo
Follow-up for a663ddc04e.
2024-02-28 11:44:20 +09:00
Yu Watanabe 25413fbfc7 sd-ndisc: ignore Router Advertisement messages sent by the same interface 2024-02-28 11:40:50 +09:00
Yu Watanabe c34cb1d645 sd-ndisc: use ICMP6Packet and ndisc_option_parse() 2024-02-28 11:37:36 +09:00
Yu Watanabe 45edf75c61 sd-ndisc: introduce ndisc_option_parse() helper function 2024-02-28 11:26:52 +09:00
Yu Watanabe 07db3ac66c icmp6-packet: introduce ICMP6Packet and several relevant functions 2024-02-28 11:26:39 +09:00
Yu Watanabe 2706065514 sysext: fix typo 2024-02-27 13:28:02 +09:00
Yu Watanabe 7036d472d0 network: fix use-after-free in {address,route}_remove_and_cancel()
Fixes #31485.
2024-02-26 11:02:13 +00:00
Yu Watanabe 52672db3f8 network/ndisc: rename Network.ipv6_accept_ra -> Network.ndisc
These settings are leated to sd-ndisc and Neighbor Discovery protocol.
Let's use more suitable name.
2024-02-26 11:38:57 +01:00
Yu Watanabe 815fce2c35 Merge pull request #31490 from yuwata/network-varlink-cleanups
network/varlink: several trivial cleanups
2024-02-26 15:12:12 +09:00
Yu Watanabe eaa260cd74 varlink/network: reindent methods 2024-02-26 13:42:37 +09:00
Yu Watanabe a569c2c5fd network/varlink: downgrade log level about failure in getting netns ID 2024-02-26 13:42:37 +09:00
Yu Watanabe 46877eb149 format-table: replace "(size_t) -1" with SIZE_MAX 2024-02-26 12:39:23 +08:00
Yu Watanabe c7f46150bb in-addr-util: introduce in{4,6}_addr_is_multicast() 2024-02-25 11:43:37 +00:00
Yu Watanabe 9f0430b74b icmp6-util: make icmp6_receive() refuse packets without IPv6 sender address
Previously, the function supports packets without IPv6 sender address
for unit tests. However, now unit tests use their own version of
icmp6_receive(). Hence, let's make the check more strict.
2024-02-25 11:41:39 +00:00
Yu Watanabe 28eef15898 sd-ndisc: make callback takes arbitrary type of message
No functional change. Preparation for supporting Neighbor Advertisement
message.
2024-02-25 11:38:58 +00:00
Yu Watanabe c75d119658 network/ndisc: drop all configurations without lifetime on stop
As we call ndisc_drop_outdated() with USEC_INFINITY on stop.
2024-02-25 11:38:08 +00:00
Yu Watanabe f2e5a28bdd network: use FOREACH_STRING() 2024-02-24 21:04:14 +09:00
Yu Watanabe a860df82b4 test: split out {dump,verify}_ra_message()
Then, let's not modify the global object.
2024-02-24 12:37:50 +09:00
Yu Watanabe 36653443f7 sd-radv: several cleanups
- split out radv_setup_recv_event(),
- slightly update log messages,
- use DIV_ROUND_UP(),
- use structured initializer more.

No functional change, just preparation for later commits.
2024-02-24 12:37:50 +09:00
Yu Watanabe 6a27ca08c6 sd-ndisc: several trivial cleanups
- update several log messages,
- use event_reset_time_relative(),
- split out ndisc_setup_recv_event() and ndisc_setup_timer().

No functional change, just refactoring and preparation for later commits.
2024-02-24 12:37:50 +09:00
Yu Watanabe 37c011e74c icmp6-util: merge icmp6_bind_router_{solicitation,advertisement}() into icmp6_bind()
No functional change, just refactoring.
2024-02-24 12:37:50 +09:00
Yu Watanabe 16a52db488 docs: fix typo 2024-02-24 11:30:39 +09:00
Yu Watanabe d0a337bb72 sd-dhcp,sd-ndisc: drop mistakenly set copyright
Follow-ups for
  6efa51f862 (sd-dhcp-client-id.h),
  97c3506dcd (sd-dhcp-duid.h),
  461dbb2fa9 (sd-dhcp-option.h),
  dd8ab4a206 (sd-dhcp-server-lease.h),
  ca34b43481 (sd-ndisc-protocol.h and sd-ndisc-router.h).
2024-02-23 10:09:26 +01:00
Yu Watanabe 3976c43092 network: introduce per-interface IP forwarding settings
This deprecates IPForward= setting, which unconditionally controled
the global setting, even though it is a setting in .network file.

Instead, this introduces new IPv4Forwarding= and IPv6Forwarding=
settings both in .network and networkd.conf.
If these settings are specified in a .network file, then the
per-interface forwarding setting will be configured.
If specified in networkd.conf, then the global IP forwarding setting will
be configured.

Closes #30648.
2024-02-22 19:24:12 +00:00
Yu Watanabe 189eeddaec sd-ndisc: actually refuse RA message from null address 2024-02-22 14:35:24 +09:00
Yu Watanabe e7cb80474d sd-ndisc: disable timer event source only when a valid RA received
Fixes #31439.
2024-02-22 14:35:24 +09:00
Yu Watanabe be66a80bc2 Merge pull request #31409 from ssahani/macvlan
netdev: macvlan - Allow to set the broadcast queueing threshold
2024-02-22 12:40:54 +09:00
Yu Watanabe 0183d48ddb test-network: use assertIn() 2024-02-22 09:46:45 +09:00
Yu Watanabe 9a7c555c68 Merge pull request #31429 from poettering/pcrlock-hash-order-fix
pcrlock: handle cases where order of hash algs in firmware binary logs differs in header and records
2024-02-22 08:29:56 +09:00
Yu Watanabe 0584e2aa7c Merge pull request #31425 from YHNdnzj/fd-util-followup
fd-util: introduce fd_verify_safe_flags
2024-02-22 08:29:11 +09:00