]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-netlink,network: do not set NLM_F_CREATE and NLM_F_EXCL flags if an interface...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 28 Oct 2024 14:32:50 +0000 (23:32 +0900)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 30 Oct 2024 09:28:18 +0000 (10:28 +0100)
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.

src/libsystemd/sd-netlink/netlink-message-rtnl.c
src/network/netdev/bridge.c
src/network/netdev/ipoib.c
src/network/networkd-can.c
src/network/networkd-setlink.c

index 29c3af1fec6d8c8142f89ffae73202f6e6b62577..986e10c6231c2dd404e51b265389030dca897b4e 100644 (file)
@@ -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;
index 4dfc393830667f2ba984c99627adbb0025ef628c..da5b33227700688a983605848ebb939342ed0493 100644 (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");
index 0065a5452e87ff32312b284ce2b6779806eea5a2..6932c62e2adde283ec51d5e126998588ca4e0d68 100644 (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;
index a5b003ad228d842fa3712db324dd15b40c036324..9457104a0ea1931a3079ec4c72c78b3558635e3e 100644 (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;
index b1a2623dcd11a1e6c0877a583ddab3af8b9d360d..8519e6e7a09a856e89dd19ef35d2b6be027cf6dd 100644 (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;