mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
network/netdev: skip processing netdev if it is already detached
No functional change, as currently networkd detaches NetDev objects only on stop (or invalid .netdev file is loaded). Preparation for later commits.
This commit is contained in:
@@ -163,6 +163,9 @@ static int netdev_batadv_post_create(NetDev *netdev, Link *link) {
|
||||
|
||||
assert(netdev);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = sd_genl_message_new(netdev->manager->genl, BATADV_NL_NAME, BATADV_CMD_SET_MESH, &message);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Could not allocate netlink message: %m");
|
||||
|
||||
@@ -159,6 +159,9 @@ static int netdev_bridge_post_create(NetDev *netdev, Link *link) {
|
||||
|
||||
assert(netdev);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &req, RTM_NEWLINK, netdev->ifindex);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Could not allocate netlink message: %m");
|
||||
|
||||
@@ -89,6 +89,7 @@ static int netdev_create_fou_tunnel_message(NetDev *netdev, sd_netlink_message *
|
||||
int r;
|
||||
|
||||
assert(netdev);
|
||||
assert(netdev->manager);
|
||||
|
||||
r = sd_genl_message_new(netdev->manager->genl, FOU_GENL_NAME, FOU_CMD_ADD, &m);
|
||||
if (r < 0)
|
||||
@@ -128,6 +129,9 @@ static int netdev_fou_tunnel_create(NetDev *netdev) {
|
||||
|
||||
assert(FOU(netdev));
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = netdev_create_fou_tunnel_message(netdev, &m);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -94,6 +94,8 @@ static int l2tp_session_new_static(L2tpTunnel *t, const char *filename, unsigned
|
||||
|
||||
static int netdev_l2tp_create_message_tunnel(NetDev *netdev, union in_addr_union *local_address, sd_netlink_message **ret) {
|
||||
assert(local_address);
|
||||
assert(netdev);
|
||||
assert(netdev->manager);
|
||||
|
||||
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
|
||||
uint16_t encap_type;
|
||||
@@ -188,6 +190,7 @@ static int netdev_l2tp_create_message_session(NetDev *netdev, L2tpSession *sessi
|
||||
int r;
|
||||
|
||||
assert(netdev);
|
||||
assert(netdev->manager);
|
||||
assert(session);
|
||||
assert(session->tunnel);
|
||||
|
||||
@@ -385,6 +388,11 @@ static int l2tp_create_session(NetDev *netdev, L2tpSession *session) {
|
||||
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *n = NULL;
|
||||
int r;
|
||||
|
||||
assert(netdev);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = netdev_l2tp_create_message_session(netdev, session, &n);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Failed to create netlink message: %m");
|
||||
@@ -429,6 +437,9 @@ static int l2tp_create_tunnel(NetDev *netdev) {
|
||||
L2tpTunnel *t = L2TP(netdev);
|
||||
int r;
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = l2tp_get_local_address(netdev, &local_address);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Could not find local address.");
|
||||
|
||||
@@ -224,6 +224,7 @@ static int netdev_macsec_create_message(NetDev *netdev, int command, sd_netlink_
|
||||
|
||||
assert(netdev);
|
||||
assert(netdev->ifindex > 0);
|
||||
assert(netdev->manager);
|
||||
|
||||
r = sd_genl_message_new(netdev->manager->genl, MACSEC_GENL_NAME, command, &m);
|
||||
if (r < 0)
|
||||
@@ -334,6 +335,9 @@ static int netdev_macsec_configure_receive_association(NetDev *netdev, ReceiveAs
|
||||
assert(netdev);
|
||||
assert(a);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = netdev_macsec_create_message(netdev, MACSEC_CMD_ADD_RXSA, &m);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Failed to create netlink message: %m");
|
||||
@@ -406,6 +410,9 @@ static int netdev_macsec_configure_receive_channel(NetDev *netdev, ReceiveChanne
|
||||
assert(netdev);
|
||||
assert(c);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = netdev_macsec_create_message(netdev, MACSEC_CMD_ADD_RXSC, &m);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Failed to create netlink message: %m");
|
||||
@@ -454,6 +461,9 @@ static int netdev_macsec_configure_transmit_association(NetDev *netdev, Transmit
|
||||
assert(netdev);
|
||||
assert(a);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = netdev_macsec_create_message(netdev, MACSEC_CMD_ADD_TXSA, &m);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r, "Failed to create netlink message: %m");
|
||||
|
||||
@@ -676,6 +676,7 @@ static int independent_netdev_create(NetDev *netdev) {
|
||||
int r;
|
||||
|
||||
assert(netdev);
|
||||
assert(netdev->manager);
|
||||
|
||||
/* create netdev */
|
||||
if (NETDEV_VTABLE(netdev)->create) {
|
||||
@@ -780,6 +781,9 @@ static int stacked_netdev_process_request(Request *req, Link *link, void *userda
|
||||
assert(req);
|
||||
assert(link);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 1; /* Already detached, due to e.g. reloading .netdev files, cancelling the request. */
|
||||
|
||||
r = netdev_is_ready_to_create(netdev, link);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
@@ -825,6 +829,9 @@ int link_request_stacked_netdev(Link *link, NetDev *netdev) {
|
||||
if (!IN_SET(netdev->state, NETDEV_STATE_LOADING, NETDEV_STATE_FAILED) || netdev->ifindex > 0)
|
||||
return 0; /* Already created. */
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
link->stacked_netdevs_created = false;
|
||||
r = link_queue_request_full(link, REQUEST_TYPE_NETDEV_STACKED,
|
||||
netdev, (mfree_func_t) netdev_unref,
|
||||
@@ -849,6 +856,9 @@ static int independent_netdev_process_request(Request *req, Link *link, void *us
|
||||
|
||||
assert(!link);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 1; /* Already detached, due to e.g. reloading .netdev files, cancelling the request. */
|
||||
|
||||
r = netdev_is_ready_to_create(netdev, NULL);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
@@ -872,6 +882,9 @@ static int netdev_request_to_create(NetDev *netdev) {
|
||||
if (netdev_is_stacked(netdev))
|
||||
return 0;
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
r = netdev_is_ready_to_create(netdev, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -103,6 +103,7 @@ static int netdev_create_tuntap(NetDev *netdev) {
|
||||
int r;
|
||||
|
||||
assert(netdev);
|
||||
assert(netdev->manager);
|
||||
t = TUNTAP(netdev);
|
||||
assert(t);
|
||||
|
||||
|
||||
@@ -234,6 +234,9 @@ static int wireguard_set_interface(NetDev *netdev) {
|
||||
Wireguard *w = WIREGUARD(netdev);
|
||||
int r;
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
for (WireguardPeer *peer_start = w->peers; peer_start || !sent_once; ) {
|
||||
uint16_t i = 0;
|
||||
|
||||
@@ -399,6 +402,9 @@ static int peer_resolve_endpoint(WireguardPeer *peer) {
|
||||
|
||||
netdev = NETDEV(peer->wireguard);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return 0; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
if (!peer->endpoint_host || !peer->endpoint_port)
|
||||
/* Not necessary to resolve the endpoint. */
|
||||
return 0;
|
||||
|
||||
@@ -27,6 +27,9 @@ static void wlan_init(NetDev *netdev) {
|
||||
static int wlan_get_wiphy(NetDev *netdev, Wiphy **ret) {
|
||||
WLan *w = WLAN(netdev);
|
||||
|
||||
if (!netdev_is_managed(netdev))
|
||||
return -ENOENT; /* Already detached, due to e.g. reloading .netdev files. */
|
||||
|
||||
if (w->wiphy_name)
|
||||
return wiphy_get_by_name(netdev->manager, w->wiphy_name, ret);
|
||||
|
||||
|
||||
@@ -193,6 +193,7 @@ int netdev_queue_request(
|
||||
int r;
|
||||
|
||||
assert(netdev);
|
||||
assert(netdev->manager);
|
||||
|
||||
r = request_new(netdev->manager, NULL, REQUEST_TYPE_NETDEV_INDEPENDENT,
|
||||
netdev, (mfree_func_t) netdev_unref,
|
||||
|
||||
Reference in New Issue
Block a user