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");
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");
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)
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;
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;
int r;
assert(netdev);
+ assert(netdev->manager);
assert(session);
assert(session->tunnel);
_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");
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.");
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)
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");
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");
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");
int r;
assert(netdev);
+ assert(netdev->manager);
/* create netdev */
if (NETDEV_VTABLE(netdev)->create) {
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;
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,
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;
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;
int r;
assert(netdev);
+ assert(netdev->manager);
t = TUNTAP(netdev);
assert(t);
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;
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;
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);
int r;
assert(netdev);
+ assert(netdev->manager);
r = request_new(netdev->manager, NULL, REQUEST_TYPE_NETDEV_INDEPENDENT,
netdev, (mfree_func_t) netdev_unref,