sd-netlink,network: do not set NLM_F_CREATE and NLM_F_EXCL flags if an interface index is specified

If an ifindex is specified, we are modifying the existing interface.
Hence, these flags should not be set. Otherwise, the request will be
refused with -EEXIST.
This commit is contained in:
Yu Watanabe
2024-10-30 10:28:18 +01:00
committed by Daan De Meyer
parent 0a1b553e2a
commit 7e322c3dd0
5 changed files with 1 additions and 17 deletions
@@ -342,7 +342,7 @@ int sd_rtnl_message_new_link(sd_netlink *rtnl, sd_netlink_message **ret, uint16_
if (r < 0)
return r;
if (nlmsg_type == RTM_NEWLINK)
if (nlmsg_type == RTM_NEWLINK && ifindex == 0)
(*ret)->hdr->nlmsg_flags |= NLM_F_CREATE | NLM_F_EXCL;
else if (nlmsg_type == RTM_NEWLINKPROP)
(*ret)->hdr->nlmsg_flags |= NLM_F_CREATE | NLM_F_EXCL | NLM_F_APPEND;
-4
View File
@@ -166,10 +166,6 @@ static int netdev_bridge_post_create(NetDev *netdev, Link *link) {
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not allocate netlink message: %m");
r = sd_netlink_message_set_flags(req, NLM_F_REQUEST | NLM_F_ACK);
if (r < 0)
return log_link_error_errno(link, r, "Could not set netlink message flags: %m");
r = netdev_bridge_post_create_message(netdev, req);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not create netlink message: %m");
-4
View File
@@ -53,10 +53,6 @@ int ipoib_set_netlink_message(Link *link, sd_netlink_message *m) {
assert(link->network);
assert(m);
r = sd_netlink_message_set_flags(m, NLM_F_REQUEST | NLM_F_ACK);
if (r < 0)
return r;
r = sd_netlink_message_open_container(m, IFLA_LINKINFO);
if (r < 0)
return r;
-4
View File
@@ -20,10 +20,6 @@ int can_set_netlink_message(Link *link, sd_netlink_message *m) {
assert(link->network);
assert(m);
r = sd_netlink_message_set_flags(m, NLM_F_REQUEST | NLM_F_ACK);
if (r < 0)
return r;
r = sd_netlink_message_open_container(m, IFLA_LINKINFO);
if (r < 0)
return r;
-4
View File
@@ -191,10 +191,6 @@ static int link_configure_fill_message(
return r;
break;
case REQUEST_TYPE_SET_LINK_BOND:
r = sd_netlink_message_set_flags(req, NLM_F_REQUEST | NLM_F_ACK);
if (r < 0)
return r;
r = sd_netlink_message_open_container(req, IFLA_LINKINFO);
if (r < 0)
return r;