From: Yu Watanabe Date: Wed, 9 Jun 2021 15:37:50 +0000 (+0900) Subject: ether-addr-util, network: introduce ETHER_ADDR_TO_STR() macro and use it X-Git-Tag: v249-rc1~47^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F19867%2Fhead;p=thirdparty%2Fsystemd.git ether-addr-util, network: introduce ETHER_ADDR_TO_STR() macro and use it --- diff --git a/src/basic/ether-addr-util.h b/src/basic/ether-addr-util.h index 46b5c0553ff..cf8afff3561 100644 --- a/src/basic/ether-addr-util.h +++ b/src/basic/ether-addr-util.h @@ -42,6 +42,8 @@ static inline bool hw_addr_is_null(const struct hw_addr_data *addr) { #define ETHER_ADDR_TO_STRING_MAX (3*6) char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]); int ether_addr_to_string_alloc(const struct ether_addr *addr, char **ret); +/* Use only as function argument, never stand-alone! */ +#define ETHER_ADDR_TO_STR(addr) ether_addr_to_string((addr), (char[ETHER_ADDR_TO_STRING_MAX]){}) int ether_addr_compare(const struct ether_addr *a, const struct ether_addr *b); static inline bool ether_addr_equal(const struct ether_addr *a, const struct ether_addr *b) { diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c index ae673ddf5b5..60e074e99bf 100644 --- a/src/network/generator/network-generator.c +++ b/src/network/generator/network-generator.c @@ -1040,7 +1040,6 @@ static int route_dump(Route *route, FILE *f) { } void network_dump(Network *network, FILE *f) { - char mac[ETHER_ADDR_TO_STRING_MAX]; Address *address; Route *route; const char *dhcp; @@ -1057,7 +1056,7 @@ void network_dump(Network *network, FILE *f) { fputs("\n[Link]\n", f); if (!ether_addr_is_null(&network->mac)) - fprintf(f, "MACAddress=%s\n", ether_addr_to_string(&network->mac, mac)); + fprintf(f, "MACAddress=%s\n", ETHER_ADDR_TO_STR(&network->mac)); if (network->mtu > 0) fprintf(f, "MTUBytes=%" PRIu32 "\n", network->mtu); @@ -1111,15 +1110,13 @@ void netdev_dump(NetDev *netdev, FILE *f) { } void link_dump(Link *link, FILE *f) { - char mac[ETHER_ADDR_TO_STRING_MAX]; - assert(link); assert(f); fputs("[Match]\n", f); if (!ether_addr_is_null(&link->mac)) - fprintf(f, "MACAddress=%s\n", ether_addr_to_string(&link->mac, mac)); + fprintf(f, "MACAddress=%s\n", ETHER_ADDR_TO_STR(&link->mac)); fprintf(f, "\n[Link]\n" diff --git a/src/network/networkctl.c b/src/network/networkctl.c index aeb3ee5c091..a3ba15672b4 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -1702,7 +1702,6 @@ static int link_status_one( if (info->has_permanent_mac_address) { _cleanup_free_ char *description = NULL; - char ea[ETHER_ADDR_TO_STRING_MAX]; (void) ieee_oui(hwdb, &info->permanent_mac_address, &description); @@ -1712,7 +1711,7 @@ static int link_status_one( if (r < 0) return table_log_add_error(r); r = table_add_cell_stringf(table, NULL, "%s%s%s%s", - ether_addr_to_string(&info->permanent_mac_address, ea), + ETHER_ADDR_TO_STR(&info->permanent_mac_address), description ? " (" : "", strempty(description), description ? ")" : ""); @@ -2107,7 +2106,6 @@ static int link_status_one( if (info->has_wlan_link_info) { _cleanup_free_ char *esc = NULL; - char buf[ETHER_ADDR_TO_STRING_MAX]; r = table_add_many(table, TABLE_EMPTY, @@ -2120,7 +2118,7 @@ static int link_status_one( r = table_add_cell_stringf(table, NULL, "%s (%s)", strnull(esc), - ether_addr_to_string(&info->bssid, buf)); + ETHER_ADDR_TO_STR(&info->bssid)); if (r < 0) return table_log_add_error(r); } diff --git a/src/network/networkd-network-bus.c b/src/network/networkd-network-bus.c index 8c52faf1856..e265277f603 100644 --- a/src/network/networkd-network-bus.c +++ b/src/network/networkd-network-bus.c @@ -16,7 +16,6 @@ static int property_get_ether_addrs( void *userdata, sd_bus_error *error) { - char buf[ETHER_ADDR_TO_STRING_MAX]; const struct ether_addr *p; Set *s; int r; @@ -32,7 +31,7 @@ static int property_get_ether_addrs( return r; SET_FOREACH(p, s) { - r = sd_bus_message_append(reply, "s", ether_addr_to_string(p, buf)); + r = sd_bus_message_append(reply, "s", ETHER_ADDR_TO_STR(p)); if (r < 0) return r; } diff --git a/src/network/networkd-wifi.c b/src/network/networkd-wifi.c index 57e8a0e9b5d..49f2f011f1c 100644 --- a/src/network/networkd-wifi.c +++ b/src/network/networkd-wifi.c @@ -55,11 +55,9 @@ int wifi_get_info(Link *link) { } if (r > 0 || s > 0) { - char buf[ETHER_ADDR_TO_STRING_MAX]; - if (link->wlan_iftype == NL80211_IFTYPE_STATION && link->ssid) log_link_info(link, "Connected WiFi access point: %s (%s)", - link->ssid, ether_addr_to_string(&link->bssid, buf)); + link->ssid, ETHER_ADDR_TO_STR(&link->bssid)); return 1; /* Some information is updated. */ }