network: NDA_LLADDR attribute can also take struct in_addr
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 Jul 2019 01:17:30 +0000 (10:17 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 Jul 2019 13:22:29 +0000 (22:22 +0900)
src/libsystemd/sd-netlink/netlink-types.c
src/network/networkctl.c
src/network/networkd-fdb.c
src/network/networkd-neighbor.c

index 450e298..5e4d8a9 100644 (file)
@@ -663,7 +663,7 @@ static const NLTypeSystem rtnl_route_type_system = {
 
 static const NLType rtnl_neigh_types[] = {
         [NDA_DST]               = { .type = NETLINK_TYPE_IN_ADDR },
-        [NDA_LLADDR]            = { .type = NETLINK_TYPE_ETHER_ADDR },
+        [NDA_LLADDR]            = { /* struct ether_addr or struct in_addr */ },
         [NDA_CACHEINFO]         = { .type = NETLINK_TYPE_CACHE_INFO, .size = sizeof(struct nda_cacheinfo) },
         [NDA_PROBES]            = { .type = NETLINK_TYPE_U32 },
         [NDA_VLAN]              = { .type = NETLINK_TYPE_U16 },
index 2a748b8..9d755c9 100644 (file)
@@ -519,7 +519,7 @@ static int get_gateway_description(
                 if (!in_addr_equal(fam, &gw, gateway))
                         continue;
 
-                r = sd_netlink_message_read_ether_addr(m, NDA_LLADDR, &mac);
+                r = sd_netlink_message_read(m, NDA_LLADDR, sizeof(mac), &mac);
                 if (r < 0)
                         continue;
 
index e333369..4152823 100644 (file)
@@ -143,7 +143,7 @@ int fdb_entry_configure(Link *link, FdbEntry *fdb_entry) {
         if (r < 0)
                 return rtnl_log_create_error(r);
 
-        r = sd_netlink_message_append_ether_addr(req, NDA_LLADDR, fdb_entry->mac_addr);
+        r = sd_netlink_message_append_data(req, NDA_LLADDR, fdb_entry->mac_addr, sizeof(struct ether_addr));
         if (r < 0)
                 return rtnl_log_create_error(r);
 
index d0275fd..c3490cb 100644 (file)
@@ -133,7 +133,7 @@ int neighbor_configure(Neighbor *neighbor, Link *link, link_netlink_message_hand
         if (r < 0)
                 return log_error_errno(r, "Could not set flags: %m");
 
-        r = sd_netlink_message_append_ether_addr(req, NDA_LLADDR, &neighbor->mac);
+        r = sd_netlink_message_append_data(req, NDA_LLADDR, &neighbor->mac, sizeof(neighbor->mac));
         if (r < 0)
                 return log_error_errno(r, "Could not append NDA_LLADDR attribute: %m");