Commit Graph
4789 Commits
Author SHA1 Message Date
Yu WatanabeandSusant Sahani fc35a9f8d1 network/dhcp4: support IPv6 only mode (RFC 8925)
Co-authored-by: Susant Sahani <ssahani@gmail.com>
2023-10-11 21:42:13 +09:00
Susant SahaniandYu Watanabe 34bea0a1e9 network/dhcp-server: allow to configure IPv6 only preferred option
Co-authored-by: Yu Watanabe <watanabe.yu+github@gmail.com>
2023-10-11 21:42:13 +09:00
Mike Yuan 8fff78a1dd networkctl: use proper vertical table for status
Also modernize macro definition and error handling.
2023-10-10 23:28:28 +01:00
Luca Boccassi 00dd4e78f6 Merge pull request #29495 from yuwata/network-manager-state-file
network: fixlets for manager state file
2023-10-08 22:46:44 +01:00
Yu Watanabe 9709f9edc5 network/dhcp6: keep lease when running in information request mode
Fixes #28566.
2023-10-08 16:22:29 +09:00
Yu Watanabe 814d8f962f network/dhcp6: shorten dhcp6_handler()
Note, currently dhcp6_lease_information_acquired() do nothing, so this
does not change any behavior.
2023-10-08 16:18:49 +09:00
Yu Watanabe 86a66e9b95 network: also save NTP servers and friends obtained by other protocols
Previously, only servers that statically configursd or obtained by
DHCPv4 protocol are saved in the manager state file.

NTP servers obtained by DHCPv6 could not be used by timesyncd.

Fixes #29148.
2023-10-08 13:06:28 +09:00
Yu Watanabe 9e4d87166f network/tc: support Parent=X:0 for qdiscs
When the minor part of the parent handle is zero, let's check if the
corresponding qdisc exists, rather than tc class.
2023-10-07 21:35:16 +09:00
Yu Watanabe 19607e4371 network/tc: allow to configure class or qdisc under foreign one
Some qdiscs (e.g. tbf) implicitly create class(es) on create.
Previously, we could not create any child qdisc under the class, as the
implicit class is tagged as foreign.
2023-10-07 21:35:16 +09:00
Yu Watanabe c9e70be162 network/tc: re-enumerate traffic control classes when a qdisc created
Some kind of qdisc implicitly creates a class for the qdisc, but the
created class is not notified by the kernel. So, we need to explicitly
enumerate classes after a qdisc is created.
2023-10-07 21:35:16 +09:00
Yu Watanabe 4147618612 network/tc: fix enumeration logic of traffic control classes
TC class can be enumerated only per link.
2023-10-07 21:35:16 +09:00
Yu Watanabe be8e933900 network/tc: drop child tree of traffic control nodes on remove
When a node of traffic control tree is removed, all child nodes are also
removed but their removal are not notified by the kernel.
So, previously, removed TC classes or qdiscs under the removed node were
kept in the memory of networkd, and may cause failure on reconfigure.
2023-10-07 21:35:16 +09:00
Yu Watanabe 0708c4fbdb network/tc: align vtables 2023-10-07 21:35:16 +09:00
Yu Watanabe 955fc5d8ab tree-wide: add missing sigbus handling 2023-10-07 11:13:27 +02:00
Yu Watanabe b93bf1bf9f network: introduce [DHCPv4] RequestAddress= setting
This may be useful when requesting a specific address.

Closes #29437.
2023-10-05 06:58:08 +09:00
Yu Watanabe 5d896defeb network: skip to set request address when anonymized
In sd-dhcp-client.c, we do not set the option in the DHCPDISCOVER
message when anonymized, and the specified address is ignored
anyway. So, this does not change the behavior, but suppress
misleading debugging log in dhcp4_set_request_address().
2023-10-05 06:56:51 +09:00
Yu Watanabe 4ed95fafad network: set maximum length to be read by read_full_file_full()
Fixes #29264 and oss-fuzz#62556
(https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62556).
2023-10-02 10:36:43 +09:00
Daan De Meyer eafa923f81 Remove json_variant_merge_pair() in favor of json_variant_set_field_non_null() 2023-09-28 17:13:11 +01:00
Topi Miettinen dc7d69b3c1 core: firewall integration of cgroups with NFTSet=
New directive `NFTSet=` provides a method for integrating dynamic cgroup IDs
into firewall rules with NFT sets. The benefit of using this setting is to be
able to use control group as a selector in firewall rules easily and this in
turn allows more fine grained filtering. Also, NFT rules for cgroup matching
use numeric cgroup IDs, which change every time a service is restarted, making
them hard to use in systemd environment.

This option expects a whitespace separated list of NFT set definitions. Each
definition consists of a colon-separated tuple of source type (only "cgroup"),
NFT address family (one of "arp", "bridge", "inet", "ip", "ip6", or "netdev"),
table name and set name. The names of tables and sets must conform to lexical
restrictions of NFT table names. The type of the element used in the NFT filter
must be "cgroupsv2". When a control group for a unit is realized, the cgroup ID
will be appended to the NFT sets and it will be be removed when the control
group is removed.  systemd only inserts elements to (or removes from) the sets,
so the related NFT rules, tables and sets must be prepared elsewhere in
advance.  Failures to manage the sets will be ignored.

If the firewall rules are reinstalled so that the contents of NFT sets are
destroyed, command systemctl daemon-reload can be used to refill the sets.

Example:

```
table inet filter {
...
        set timesyncd {
                type cgroupsv2
        }

        chain ntp_output {
                socket cgroupv2 != @timesyncd counter drop
                accept
        }
...
}
```

/etc/systemd/system/systemd-timesyncd.service.d/override.conf
```
[Service]
NFTSet=cgroup:inet:filter:timesyncd
```

```
$ sudo nft list set inet filter timesyncd
table inet filter {
        set timesyncd {
                type cgroupsv2
                elements = { "system.slice/systemd-timesyncd.service" }
        }
}
```
2023-09-27 18:10:11 +00:00
Susant Sahani 0ba8374bb8 ndisc: Also set link hoplimit
The per route hop limit does not place the hop limit in the IPv6 header.
https://github.com/systemd/systemd/issues/28437#issuecomment-1711055181
2023-09-27 11:05:15 +02:00
Daan De Meyer 3bd337a084 network: Rename json_append_one() and move to json.h 2023-09-26 19:01:34 +01:00
Luca Boccassi f5f4486c65 Merge pull request #29254 from yuwata/sd-ndisc-use-usec_t
sd-ndisc: make sd_ndisc return time values in usec
2023-09-22 21:46:50 +01:00
Yu Watanabe 6197db53ba sd-ndisc: make sd_ndisc return time values in usec
This also introduces sd_ndisc_router_get_lifetime_timestamp() and
friends that return timestamp rather than timespan.
2023-09-23 01:34:56 +09:00
Zbigniew Jędrzejewski-Szmek a0fe45a93f Merge pull request #29224 from keszybz/netdev-config-parsing
Use a helper to simplify parsing of ranges in netdev config and related changes
2023-09-22 14:29:47 +02:00
Zbigniew Jędrzejewski-Szmek f75921c7fd netdev/wireguard: define iterator variable in the loop 2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek 117843fe95 network: make DEFINE_NETDEV_CAST() assert on input and output
The macro used to return NULL if input was NULL or had the wrong type. Now
it asserts that input is nonnull and it has the expected type.

There are a few places where a missing or mismatched type was OK, but in a
majority of places, we would do both of the asserts. In various places we'd
only do one, but that was by ommission/mistake. So moving the asserts into the
macro allows us to save some lines.
2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek 6c9935ba87 network/netdev: align tables 2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek 6fded8dced network/netdev: fix resetting of 'inherit' field
We have two fields: inherit and ttl, and ttl is ignored if inherit is true.
Setting TTL=inherit and later TTL=n would not work because we didn't unset
inherit.
2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek af14281d2c network: refusing parsing negative flow labels
The docs for FlowLabel= said that the range is 0..1048575, but the code did not
reject negative numbers.
2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek a893c121ed network/fou-tunnel: simplify parsing of protocol number
Previously, we would call parse_ip_protocol(), which internally calls
safe_atoi(), and then call safe_atou(). This isn't terrible, but it's also
slightly confusing. Use parse_ip_protocol_full() to avoid the second call.
2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek 04c2a002e6 network/vxlan: avoid unneccesary temporary variables
parse_ip_port_range() DTRT and only sets the output on success.
2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek 257cebb67a network/netdev: use ASSERT_PTR() more, adjust indentation 2023-09-22 08:17:42 +02:00
Zbigniew Jędrzejewski-Szmek 851cdffd1b network: use a common helper to parse bounded ranges
This compresses repetetive code and makes it easier to add new options
in networkd. The formatting of error messages becomes uniform. The
error message always specifies the rvalue literally, instead of using
a "descriptive name". This makes the message much easier to handle for
the user.

I opted to add just one parser, and wrap it with inline functions to proxy
the type. This is less verbose than copying functions for each type
separately, and the compiler should be able to get rid of the inline wrapper
almost entirely.

asserts are reordered to use the same order as the parameter list.
This makes the code easier to read.

No functional change intended, apart from the difference in error message
formatting.
2023-09-22 08:16:47 +02:00
Franck Bui c60801738c config files: update their header to reflect that they can be installed in /usr
Follow-up for c76f2fb0e5.
2023-09-21 18:54:39 +02:00
Luca Boccassi 45ad128d36 Merge pull request #29253 from yuwata/sd-radv-use-usec_t
sd-radv: use usec_t
2023-09-21 14:06:28 +01:00
Yu Watanabe 60415c1360 network: split out link_get_address_states()
No functional change, just refactoring and preparation for later
commits.
2023-09-21 11:31:43 +01:00
Yu Watanabe eca280c8c0 sd-radv: make sd_radv always take timespan in usec 2023-09-21 04:01:14 +09:00
Yu Watanabe 394fac52d0 sd-dhcp6-client: introduce sd_dhcp6_lease_get_t1() and friends 2023-09-21 03:59:00 +09:00
Yu Watanabe d8ec95c7ff sd-dhcp6-client: rework IA_NA or IA_PD getters
This splits sd_dhcp6_lease_get_address() into small pieces,
and introduce FOREACH_DHCP6_ADDRESS() macro.
Also, the lifetimes provided by _get_address_lifetime() are now in usec,
and _get_address_lifetime_timestamp() provides timestamp.

The same change is also applied for IA_PD.
2023-09-21 03:59:00 +09:00
Yu Watanabe fb70992d39 sd-dhcp6-client: introduce sd_dhcp6_lease_has_pd_prefix() and friend
No functional change, just refactoring.
2023-09-21 03:59:00 +09:00
Zbigniew Jędrzejewski-Szmek 0d05d1623e Merge pull request #29092 from yuwata/sd-dhcp-server-use-usec
sd-dhcp-server: store lifetime and friends in usec_t
2023-09-20 11:43:26 +02:00
Zbigniew Jędrzejewski-Szmek 6d2d38e76f Merge pull request #28919 from fbuihuu/custom-config-file-install-path
Custom config file install path
2023-09-20 10:43:16 +02:00
Yu Watanabe a00076113b sd-dhcp-server: store lifetime and friends in usec_t 2023-09-20 05:04:03 +09:00
Franck Bui 58849483a4 config files: more recommendations of systemd-analyze cat-config
Follow-up for 3b0754b16c.
2023-09-19 17:47:57 +02:00
Zbigniew Jędrzejewski-Szmek f31fa08057 sd-network: modernize log error messages
SYNTHETIC_ERRNO() is used where appropriate.

Splits in message format strings are removed, so that it's easier to
read/grep/copy them.
2023-09-19 09:35:52 +02:00
Yu Watanabe 6174dc7d96 network: allow to configure multiple IPv6 null addresses with different prefix length
Previously, even if a .network file contains multiple IPv6 null
addresses with different prefix length, only the first setting is applied,
as the remainings are deduped in network_drop_invalid_addresses().

Even though the kernel allows us to change the prefix length of an existing
IPv6 address, we cannot safely change the prefix length of an address
that is originally requested as a null address, as the prefix of the
address may conflict with other addresses if we change it.

We already prohibit to change the prefix length of an existing IPv6
address that is originally requested as a null address. So, we can
safely allow to configure multiple IPv6 addresses from null addresses by
relaxing the dedup logic. The dedup is govern by the hash_ops. This adds
a special handling for IPv6 null addresses.
2023-09-18 10:22:08 +09:00
Yu Watanabe 381e3cc68b network: rename address_prefix() -> address_ipv4_prefix()
This also makes the function use in4_addr_is_set() and in4_addr_mask()
for readability.
2023-09-18 10:19:51 +09:00
Yu Watanabe 52af8e5ef9 network: drop _fallthrough_ in address_{hash,compare}_func()
No functional change, just refactoring and preparation for later commit.
2023-09-18 10:16:53 +09:00
Luca Boccassi 23bef849d9 Merge pull request #29119 from yuwata/network-dhcp-server-allow-null-server-address
network/dhcp-server: allow null server address
2023-09-17 12:36:33 +01:00
Luca Boccassi 2d17808200 Merge pull request #29116 from yuwata/network-sriov-debug
network/sr-iov: ignore EINVAL in reading dev_port sysfs attribute
2023-09-09 01:28:35 +01:00