chiark / gitweb /
networkd: use new rtnl_message_read() API
authorTom Gundersen <teg@jklm.no>
Fri, 7 Mar 2014 16:34:38 +0000 (17:34 +0100)
committerTom Gundersen <teg@jklm.no>
Fri, 7 Mar 2014 16:39:04 +0000 (17:39 +0100)
src/network/networkd-link.c

index 416eb5648335225622c44c02ee5a957f3bee4b49..785e8d5c9b00533a8ab362eb4a41b6e5d557350c 100644 (file)
@@ -1328,8 +1328,6 @@ int link_configure(Link *link) {
 
 int link_update(Link *link, sd_rtnl_message *m) {
         unsigned flags;
-        void *data;
-        uint16_t type;
         int r;
 
         assert(link);
@@ -1344,34 +1342,24 @@ int link_update(Link *link, sd_rtnl_message *m) {
                 return r;
         }
 
-        while (sd_rtnl_message_read(m, &type, &data) > 0) {
-                switch(type) {
-                case IFLA_MTU:
-                        if (link->network->dhcp && link->network->dhcp_mtu &&
-                            !link->original_mtu) {
-                                link->original_mtu = *(uint16_t *) data;
-                                log_debug_link(link, "saved original MTU: %"
-                                               PRIu16, link->original_mtu);
-                        }
-
-                        break;
-                case IFLA_ADDRESS:
-                        if (memcmp(&link->mac.ether_addr_octet, &data,
-                                   ETH_ALEN)) {
-                                memcpy(&link->mac, data, ETH_ALEN);
-
-                                log_debug_link(link, "updated MAC address: "
-                                               "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
-                                               link->mac.ether_addr_octet[0],
-                                               link->mac.ether_addr_octet[1],
-                                               link->mac.ether_addr_octet[2],
-                                               link->mac.ether_addr_octet[3],
-                                               link->mac.ether_addr_octet[4],
-                                               link->mac.ether_addr_octet[5]);
-                        }
+        if (link->network->dhcp && link->network->dhcp_mtu &&
+            !link->original_mtu) {
+                r = sd_rtnl_message_read_u16(m, IFLA_MTU, &link->original_mtu);
+                if (r >= 0)
+                        log_debug_link(link, "saved original MTU: %"
+                                       PRIu16, link->original_mtu);
+        }
 
-                        break;
-                }
+        r = sd_rtnl_message_read_ether_addr(m, IFLA_ADDRESS, &link->mac);
+        if (r >= 0) {
+                log_debug_link(link, "MAC address: "
+                               "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
+                                link->mac.ether_addr_octet[0],
+                                link->mac.ether_addr_octet[1],
+                                link->mac.ether_addr_octet[2],
+                                link->mac.ether_addr_octet[3],
+                                link->mac.ether_addr_octet[4],
+                                link->mac.ether_addr_octet[5]);
         }
 
         return link_update_flags(link, flags);