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