network/netdev: reconfigure netdev if possible

Some netdev configs can be modified after the interface is created.
Let's allow to reconfigure existing interfaces.
This commit is contained in:
Yu Watanabe
2024-10-31 05:30:40 +09:00
parent 933d88f756
commit 890bd7225a
+5 -8
View File
@@ -724,7 +724,7 @@ static int independent_netdev_create(NetDev *netdev) {
return 0;
}
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &m, RTM_NEWLINK, 0);
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &m, RTM_NEWLINK, netdev->ifindex);
if (r < 0)
return r;
@@ -753,7 +753,7 @@ static int stacked_netdev_create(NetDev *netdev, Link *link, Request *req) {
assert(link);
assert(req);
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &m, RTM_NEWLINK, 0);
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &m, RTM_NEWLINK, netdev->ifindex);
if (r < 0)
return r;
@@ -798,9 +798,6 @@ static bool link_is_ready_to_create_stacked_netdev(Link *link) {
static int netdev_is_ready_to_create(NetDev *netdev, Link *link) {
assert(netdev);
if (netdev->state != NETDEV_STATE_LOADING)
return false;
if (link && !link_is_ready_to_create_stacked_netdev(link))
return false;
@@ -862,9 +859,6 @@ int link_request_stacked_netdev(Link *link, NetDev *netdev) {
if (!netdev_is_stacked(netdev))
return -EINVAL;
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. */
@@ -921,6 +915,9 @@ static int netdev_request_to_create(NetDev *netdev) {
if (!netdev_is_managed(netdev))
return 0; /* Already detached, due to e.g. reloading .netdev files. */
if (netdev->state != NETDEV_STATE_LOADING)
return 0; /* Already configured (at least tried previously). Not necessary to reconfigure. */
r = netdev_is_ready_to_create(netdev, NULL);
if (r < 0)
return r;