]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/netdev: append IFLA_INFO_DATA attribute only when it is necessary
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 25 Aug 2021 16:05:11 +0000 (01:05 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 31 Aug 2021 12:12:20 +0000 (21:12 +0900)
src/network/netdev/netdev.c

index 426be8c7fc7aae67da374666752a2cbad01f327f..ce14d521862395724a60bcc69204c2026e96a758 100644 (file)
@@ -515,19 +515,23 @@ static int netdev_create(NetDev *netdev, Link *link, link_netlink_message_handle
                 if (r < 0)
                         return log_netdev_error_errno(netdev, r, "Could not append IFLA_LINKINFO attribute: %m");
 
-                r = sd_netlink_message_open_container_union(m, IFLA_INFO_DATA, netdev_kind_to_string(netdev->kind));
-                if (r < 0)
-                        return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_DATA attribute: %m");
-
                 if (NETDEV_VTABLE(netdev)->fill_message_create) {
+                        r = sd_netlink_message_open_container_union(m, IFLA_INFO_DATA, netdev_kind_to_string(netdev->kind));
+                        if (r < 0)
+                                return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_DATA attribute: %m");
+
                         r = NETDEV_VTABLE(netdev)->fill_message_create(netdev, link, m);
                         if (r < 0)
                                 return r;
-                }
 
-                r = sd_netlink_message_close_container(m);
-                if (r < 0)
-                        return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_DATA attribute: %m");
+                        r = sd_netlink_message_close_container(m);
+                        if (r < 0)
+                                return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_DATA attribute: %m");
+                } else {
+                        r = sd_netlink_message_append_string(m, IFLA_INFO_KIND, netdev_kind_to_string(netdev->kind));
+                        if (r < 0)
+                                return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_KIND attribute: %m");
+                }
 
                 r = sd_netlink_message_close_container(m);
                 if (r < 0)