chiark / gitweb /
networkd: netdev - verify name of newlink messages
authorTom Gundersen <teg@jklm.no>
Fri, 18 Apr 2014 08:28:42 +0000 (10:28 +0200)
committerTom Gundersen <teg@jklm.no>
Sat, 19 Apr 2014 16:41:58 +0000 (18:41 +0200)
src/network/networkd-netdev.c

index 075a8790a091f442f6ad6a65ec946d3f3a5beaca..30cb74b8b75fe5e1dc8fef6523950900c4bc9a17 100644 (file)
@@ -375,6 +375,7 @@ int netdev_set_ifindex(NetDev *netdev, sd_rtnl_message *message) {
         uint16_t type;
         const char *kind;
         char *received_kind;
+        char *received_name;
         int r, ifindex;
 
         assert(netdev);
@@ -391,6 +392,19 @@ int netdev_set_ifindex(NetDev *netdev, sd_rtnl_message *message) {
                 return -EINVAL;
         }
 
+        r = sd_rtnl_message_read_string(message, IFLA_IFNAME, &received_name);
+        if (r < 0) {
+                log_error_netdev(netdev, "Could not get IFNAME");
+                return r;
+        }
+
+        if (!streq(netdev->name, received_name)) {
+                log_error_netdev(netdev, "Received newlink with wrong IFNAME %s",
+                                 received_name);
+                netdev_enter_failed(netdev);
+                return r;
+        }
+
         r = sd_rtnl_message_enter_container(message, IFLA_LINKINFO);
         if (r < 0) {
                 log_error_netdev(netdev, "Could not get LINKINFO");
@@ -417,7 +431,8 @@ int netdev_set_ifindex(NetDev *netdev, sd_rtnl_message *message) {
         }
 
         if (!streq(kind, received_kind)) {
-                log_error_netdev(netdev, "Received newlink with wrong KIND");
+                log_error_netdev(netdev, "Received newlink with wrong KIND %s, "
+                                 "expected %s", received_kind, kind);
                 netdev_enter_failed(netdev);
                 return r;
         }