Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 330c080eeb core/exec-invoke: drop unused pam_pid 2024-01-24 14:43:18 +09:00
Yu Watanabe c917a80701 core/service: declare 'int r' at the beginning 2024-01-24 14:43:18 +09:00
Yu Watanabe ae6a9e650c unit: modernize unit_pid_set() 2024-01-24 14:43:18 +09:00
Yu Watanabe b826e31754 core: use helper functions like unit_main_pid() in unit_kill_context()
No functional changes. Just refactoring.
2024-01-24 14:43:18 +09:00
Yu Watanabe 3e22239da7 core: introduce unit_main_pid_full() which optionally provides if the PID is alien or not 2024-01-24 14:43:18 +09:00
Yu Watanabe d70dfe1b27 core: constify PidRef arguments 2024-01-24 14:43:18 +09:00
Yu Watanabe 232e66217d pidref: split out pidref_copy() from pidref_dup() 2024-01-23 22:21:44 +09:00
Yu Watanabe d203659a13 test: add basic tests for PidRef 2024-01-23 22:09:32 +09:00
Yu Watanabe fc5edc91cb Merge pull request #31015 from yuwata/local-addresses
local-addresses: several cleanups and fixes, add test cases
2024-01-23 10:25:35 +09:00
Yu Watanabe 1c62c4fe0b network/route: update MTU of IPv6 route even if the kernel returns -EEXIST 2024-01-20 22:17:26 +09:00
Yu Watanabe c29138697d test-local-addresses: add more test cases 2024-01-20 16:07:19 +09:00
Yu Watanabe e5ee645344 local-addresses: introduce has_local_address() helper function
It will be used later.
2024-01-20 16:07:19 +09:00
Yu Watanabe d10311f407 sd-netlink: drop unused parser for RTA_MULTIPATH 2024-01-20 16:07:19 +09:00
Yu Watanabe 16d95d6ff8 local-addresses: introduce own parser for RTA_MULTIPATH 2024-01-20 16:07:19 +09:00
Yu Watanabe eb1f9ed6a0 local-addresses: also save weight of multipath routes 2024-01-20 16:07:19 +09:00
Yu Watanabe 0b2c0c3159 local-addresses: introduce generic setter add_local_addresses_full() 2024-01-20 16:07:19 +09:00
Yu Watanabe 1305fe4ecf local-addresses: RTA_OIF and RTA_MULTIPATH are exclusive 2024-01-20 16:07:19 +09:00
Yu Watanabe 4019bec852 local-addresses: fix memleak of 'multipath_routes'
Also reduces scopes of some variables.
2024-01-20 16:07:19 +09:00
Yu Watanabe a64f60416c local-addresses: always sort and dedup even if addresses are not requested
Otherwise, the return value may different when ret is NULL or not.
2024-01-20 16:07:19 +09:00
Yu Watanabe e90863f231 local-addresses: ignore tentative addresses
As tentative addresses may be dropped soon if DAD failed.
2024-01-20 16:07:19 +09:00
Yu Watanabe 5cb56068d0 local-addresses: check family more
Just for safety. No functional change, unless the kernel sends broken
messages.
2024-01-20 16:07:19 +09:00
Yu Watanabe 37359b1c81 local-addresses: rename metric -> priority
To make it consistent with the netlink attribute RTA_PRIORITY.
2024-01-20 16:07:19 +09:00
Yu Watanabe d8a3e44a5c test-local-addresses: several modernization
- use size_t for number of addresses,
- use FOREACH_ARRAY() macro,
- use IN_ADDR_TO_STRING() macro, etc.
2024-01-20 16:07:19 +09:00
Yu Watanabe fe0c684b34 network: fix typo
Follow-up for 406fde1a4d.
2024-01-19 23:28:03 +09:00
Yu Watanabe cfe8975a37 network/route-nexthop: configure as a simple gateway when MultipathRoute= is specified only once
The kernel handles such configuration completely equivalent to the case
that Gateway= is specified.
2024-01-19 19:20:29 +09:00
Yu Watanabe e217da1380 network/route: drop unnecessary ownership transfer
Let's free Route objects on the caller side.
2024-01-19 19:20:29 +09:00
Yu Watanabe 10b08b6790 network/route-nexthop: drop unnecessary link arguments
These arguments are unused now.
2024-01-19 19:20:29 +09:00
Yu Watanabe 5a18697d61 network/route: convert route before requesting
Previously,
1. use the passed Route object as is when a route is requested,
2. when the route becomes ready to configure, convert the Route object
   if necessary, to resolve outgoing interface name, and split multipath
   routes, and save them to the associated interfaces,
3. configure the route with the passed Route object.

However, there are several inconsistencies with what kernel does:
- The kernel does not merge nor split IPv4 multipath routes. However, we
  unconditionally split multipath routes to manage.
- The kernel does not set gateway or so to a route if it has nexthop ID.

Fortunately, I do not find any issues caused by the inconsistencies. But
for safety, let's manage routes in a consistent way with the kernel.

This makes,
1. when a route is requested, split IPv6 multipath routes, but keep IPv4
   multipath routes as is, and queue (possibly multiple) requests for
   the route.
2. when the route becomes ready to configure, resolve nexthop and interface
   name, and requeue request if necessary.
3. configure the (possibly split) route.

By using the logic,
- Now we manage routes in a mostly consistent way with the kernel.
- We can drop ConvertedRoutes object.
- Hopefully the code becomes much simpler.
2024-01-19 19:20:29 +09:00
Yu Watanabe ed6a7148f4 network/route-nexthop: fix route_nexthop_copy()
Follow-up for 413ea20ab3.
2024-01-19 19:20:21 +09:00
Yu Watanabe e8736fb6c9 test-13-NSPAWN: add more test case for passing network interfaces
- test interface renaming that conflicts with the current alternative
  network interface name,
- test passing wlan interfaces.
2024-01-19 19:06:19 +09:00
Yu Watanabe 1c3e5b4210 nspawn-network: support passing wireless interface to container
Closes #7873.
2024-01-19 19:06:12 +09:00
Yu Watanabe 326214bfa8 nspawn-network: also check alternative names
If the requested new name for a network interface is already assigned as a
alternative name, then it is not necessary to and cannot rename the
interface.
2024-01-19 19:05:27 +09:00
Yu Watanabe 38475cac6f nspawn-network: split out move_network_interface_one()
This also changes to use sd_device to get some attributes.
So, on moving interfaces back to the parent, we need to populate sysfs
associated to the client netns.
That may look redundant and complicated, but it makes later change
easier, and hopefully faster.
2024-01-19 19:05:26 +09:00
Yu Watanabe cdd9988e43 nspawn-network: split out move_back_network_interfaces()
No functional change, just refactoring and preparation for later
commits.
2024-01-19 19:05:25 +09:00
Yu Watanabe d926864073 sd-netlink: add policy for NL80211_ATTR_NETNS_FD 2024-01-19 15:06:08 +09:00
Yu Watanabe 6e931bc578 sd-netlink: introduce rtnl_rename_link() 2024-01-19 15:06:08 +09:00
Yu Watanabe 3e98379ec0 sd-device: introduce device_get_sysattr_u32() 2024-01-19 15:06:08 +09:00
Yu Watanabe a3df693799 udev-util: introduce reset_cached_udev_availability() 2024-01-19 15:06:08 +09:00
Yu Watanabe 3f53332d4e namespace-util: introduce netns_acquire()
Similar to userns_acquire(), but for network namespace.
2024-01-19 15:06:08 +09:00
Yu Watanabe 387f39ea30 process-util: introduce FORK_NEW_NETNS for safe_fork()
Similar to FORK_NEW_MOUNTNS or FORK_NEW_USERNS.
2024-01-19 15:06:08 +09:00
Yu Watanabe cb566b5d13 namespace-util: downgrade log level in userns_acquire()
On failure, the caller logs the error in LOG_ERR.
2024-01-19 15:06:08 +09:00
Yu Watanabe d2881ef96e tree-wide: add short comments for namespace_open() and namespace_enter()
Also use -EBADF when unspecified.
2024-01-19 15:06:08 +09:00
Yu Watanabe 5178d4a77e namespace-util: rename arguments to prefix 'ret_'
Also reorder opening namespace fd to make it match with the order of the
arguments.
2024-01-19 15:06:08 +09:00
Yu Watanabe 6504d41c63 network: use strdup_or_null() where appropriate 2024-01-19 14:53:51 +09:00
Yu Watanabe 4abb8d7b0b Merge pull request #30975 from yuwata/network-route-several-helper-functions
network/route: introduce several helper functions
2024-01-19 14:42:40 +09:00
Yu Watanabe 3babbdf632 network/route: introduce route_get_request()
No functional change, just refactoring and preparation for later
commits.
2024-01-19 10:23:14 +09:00
Yu Watanabe 2f542fc3d4 network: adjust nexthops of dynamic routes before requesting
No effective functionality is changed. Preparation for later commits.
2024-01-19 10:23:14 +09:00
Yu Watanabe acc3fc9e5f network/route-nexthop: introduce route_adjust_nexthops() and route_nexthops_needs_adjust()
These are not used in this commit, but will be used later.
Preparation for later commits.
2024-01-19 10:23:14 +09:00
Yu Watanabe 413ea20ab3 network/route-nexthop: introduce route_nexthops_copy()
This also introduce an extra argument for route_dup(), but it is
currently unused, will be used later.

No functional change, just preparation for later commits.
2024-01-19 10:21:55 +09:00
Yu Watanabe 406fde1a4d network/route-nexthop: use RTA_MULTIPATH when weight is not zero
As we have no way to specify the weight of gateway without using
RTA_MULTIPATH.
2024-01-19 10:13:44 +09:00
Yu Watanabe 1cdd8b1b66 sd-netlink: fix rtnl_resolve_link_alternative_name()
Fixes a bug introduced by afdf6c3b60.
2024-01-17 18:53:45 +08:00
Yu Watanabe 443afd6c19 Merge pull request #30967 from yuwata/network-can-required-operstate-for-online
network: several cleanups for required operstate for online, and change the default for CAN devices
2024-01-17 07:01:24 +09:00
Yu Watanabe 7155ad9532 test-network: test the default required operational state for CAN devices 2024-01-17 04:05:43 +09:00
Yu Watanabe 3255bda698 network: make 'carrier' as the default required operational state for CAN device
As CAN devices do not support IP address, hence the state never goes to
higher than 'carrier'.

Prompted by https://github.com/linux-can/can-utils/issues/68#issuecomment-1327987724.
2024-01-17 04:05:43 +09:00
Yu Watanabe 2e59ba4e24 wait-online: several cleanups for LinkOperationalState
- fix memleak in parser,
- fix missing return in parser on failure,
- drop unnecessary temporary argument in command line argument parser,
- use recently introduced macros and helper functions.
2024-01-17 04:05:43 +09:00
Yu Watanabe 2278d9f66e network: several cleanups for LinkOperationalState
- introduce link_required_operstate_for_online() helper function,
- use recently introduced macros and helper functions,
- unconditionally serialize the minimum and maximum of required
  operational state.
2024-01-17 04:05:43 +09:00
Yu Watanabe ba04f957fe network: drop unnecessary temporary variables 2024-01-17 04:05:43 +09:00
Yu Watanabe 2db2979505 sd-network: modernize parse_operational_state_range()
- rename 'out' -> 'ret',
- introduce LINK_OPERSTATE_RANGE_INVALID,
- constify LINK_OPERSTATE_RANGE_DEFAULT,
- drop spurious const specifier for allocated string,
- etc,.
2024-01-17 04:05:43 +09:00
Yu Watanabe 15f624f80f sd-network: introduce three helper functions for LinkOperationalState 2024-01-17 04:05:43 +09:00
Yu Watanabe 47420573a7 network/route: find/distinguish routes in the same way that the kernel uses
The kernel uses different logics to find or distinguish IPv4 and IPv6 routes.
Let's follow the same way that the kernel uses.
See comments in the code for more details.
2024-01-16 16:13:53 +00:00
Yu Watanabe b9b5096edb network/queue: detach request from the queue only when the request is actually queued
No effective functionality is changed in this commit.
Refactoring and preparation for later commits.
2024-01-16 23:25:32 +09:00
Yu Watanabe e30dc59c2e network/queue: increase the reference counter of the request before processing it
To prevent the request freed in req->process().

This also makes a request that is not requested by a link detached on failure.
Otherwise, the request may periodically processed and failed forever.
2024-01-16 23:25:32 +09:00
Yu Watanabe 3518ff4a42 network/route: introduce route_get_link() and use it in log_route_debug()
No functional change, just refactoring and preparation for later
commits.
2024-01-16 12:35:58 +00:00
Yu Watanabe f8a6fc51a6 Merge pull request #30851 from lnussel/kernel-install
kernel-install fixes
2024-01-16 14:55:35 +09:00
Yu Watanabe f9b5c27645 test-network: add test case for removal of nexthop that is a member of a group nexthop 2024-01-16 12:48:50 +09:00
Yu Watanabe 3cbbe8635a network/nexthop: drop dependent nexthops on removal
If a nexthop is removed, dependent nexthops are silently removed by the
kernel. Hence, networkd may be confused that nexthops that depends on the
nexthop still exist, and may fail to configure other routes or so.
2024-01-16 12:48:50 +09:00
Yu Watanabe 531c724682 network/nexthop: introduce a reverse map of nexthop group members
It is not used in this commit, but will be used later.
Preparation for later commits.
2024-01-16 12:48:50 +09:00
Yu Watanabe 4e9795ebfa network/nexthop: read netlink message in nexthop_update_group()
No functional change, preparation for later commits.
2024-01-16 12:48:50 +09:00
Yu Watanabe 04a25cc425 network/nexthop: reorder elements in NextHop 2024-01-16 12:48:50 +09:00
Yu Watanabe 0a94e19c72 network/route: trivial cosmetic changes
- downgrade log level,
- add short comment for boolean argument.
2024-01-16 11:45:14 +09:00
Yu Watanabe 0013863972 network/route: reorder getters in manager_rtnl_process_route()
No functional change, just refactoring and preparation for later
commits.
2024-01-16 11:02:55 +09:00
Yu Watanabe 31b26dee4f network/route: reorder setter called in route_set_netlink_message()
Also, this renames 'req' -> 'm', and makes the function unconditionally
set route type and route metric, and override type later if necessary.

Should not change any effective behavior. Just refactoring.
2024-01-16 11:02:55 +09:00
Yu Watanabe e717b825d4 network/route: reorder elements in Route object and add comments 2024-01-16 11:02:55 +09:00
Yu Watanabe 1bcd7cd0e7 network/route: relocate route_new() and friends
No functional change, preparation for later commits.
2024-01-16 11:02:55 +09:00
Yu Watanabe a663ddc04e test-network: add simple test case for DHCP relay on bridge interface
For issue #30763.
2024-01-15 10:53:07 +00:00
Yu Watanabe 3db1e6a874 resolve: on_transaction_stream_error() may free multiple transactions
Fixes #30928.
2024-01-15 10:36:14 +00:00
Yu Watanabe 6d1cea7bc6 test-network: try to flip interface state frequently 2024-01-15 15:46:33 +09:00
Yu Watanabe c2eb7753dd network/link: automatically reconfigure interface on failure
Closes #29246.
2024-01-15 15:46:33 +09:00
Yu Watanabe 24b9c341ce network/link: shorten code a bit 2024-01-15 15:46:33 +09:00
Yu Watanabe 13efe0ab11 network/route: do not read RTA_OIF twice
It is also read in route_nexthops_read_netlink_message(), and already
stored in the Route object. Let's use it.
2024-01-15 10:28:25 +09:00
Yu Watanabe b9e1caf64a network/route-nexthop: store ifindex of the assigned interface in Route.nexthop.ifindex
And use it if set on building netlink message.
2024-01-15 10:28:25 +09:00
Yu Watanabe 054b8c2817 network/route: also use RouteNextHop for managing gateway
No functional change, just refactoring.
2024-01-15 10:28:25 +09:00
Yu Watanabe fea879cd04 network/route-nexthop: introduce struct RouteNextHop and replace MultipathRoute with it
It is mostly equivalent to MultipathRoute. So, no functional change,
just refactoring and preparation for later commits.
2024-01-15 10:28:25 +09:00
Yu Watanabe a0ab69d062 network/route-nexthop: make multipath_route_get_link() take fallback link
No functional change, just refactoring.
2024-01-14 06:04:46 +09:00
Yu Watanabe fad2f72351 network/route-nexthop: do not update MultipathRoute object
A MultipathRoute object is always owned by a Network object, and the
interface matching with its name specified in a MultipathRoute= setting
may be removed, and re-added later with a different ifindex.
2024-01-14 06:04:46 +09:00
Yu Watanabe c23f957eb1 network/route-nexthop: split out route_nexthops_is_ready_to_configure()
No effective functionality changed, just refactoring and preparation for
later commits.
2024-01-14 06:04:46 +09:00
Yu Watanabe f47d38c6fc network/route-nexthop: split out route_nexthops_to_string()
And reorder elements shown in the debugging log.
No effective functionality changed, just refactoring.
2024-01-14 06:04:46 +09:00
Yu Watanabe 54f9fba5e6 network/route-nexthop: split out netlink message handling for route nexthops
No functional change, just refactoring and preparation for later
commits.
2024-01-14 06:04:23 +09:00
Yu Watanabe b24db7052e varlink/network: OnlineState may not be set
Follow-up for c5c74d85d3.

Fixes #30918.
2024-01-14 04:57:41 +09:00
Yu Watanabe 9957189a43 Merge pull request #30916 from yuwata/network-route-section-verify
network: several cleanups for verifying [Route] section
2024-01-14 04:57:05 +09:00
Yu Watanabe 4db8ccbb59 wireguard: verify routes configured in .netdev file
Then, scope and friends are correctly adjusted, and the behavior should
be matched when the same route is configured in .network file.
2024-01-13 10:10:32 +09:00
Yu Watanabe 0db96961b4 network/route: split out route_section_verify_nexthops()
No effective functional change, just refactoring and preparation for
later commits.
2024-01-13 10:10:32 +09:00
Yu Watanabe b9f29e9f52 network/route: relocate route_type_is_reject() and friends
No functional change, preparation for later commits.
2024-01-13 10:10:32 +09:00
Yu Watanabe b82697eb20 Merge pull request #30895 from yuwata/network-drop-object-even-on-fail
network: remove Address object even when we failed to remove relevant address
2024-01-13 09:03:07 +09:00
Yu Watanabe 7a10e25a41 Merge pull request #30908 from poettering/nsid
networkd: expose netns "nsid" together with inode id
2024-01-13 06:54:32 +09:00
Yu Watanabe be89a76a46 network/ndisc: do not try to set too large value for ICMP ratelimting
Follow-up for 6197db53ba.

When we set too large value, the kernel just refuse it. So, this does
not change the net behavior.

Prompted by https://github.com/systemd/systemd/pull/30490#discussion_r1449477125.
2024-01-12 14:38:30 +00:00
Yu Watanabe ffad01c81e network/route-nexthop: always reset gateway address when _dhcp or friends is specified to Gateway=
Just for safety.
2024-01-12 16:03:37 +09:00
Yu Watanabe dd0385c1f2 network/dhcp4: use route_configure_handler_internal() at one more place 2024-01-12 09:46:09 +09:00
Yu Watanabe 2c0b49baab network/route: update expiration timer only when we know the route exists 2024-01-12 09:46:09 +09:00
Yu Watanabe 14436bf523 network/route: save if the route expiration is managed by the kernel
Otherwise, our own expiration timer will be setup on updating a route.
See comment in link_request_route().
2024-01-12 09:46:09 +09:00