From 2b8e6995fe36b5863c394ddf6444eb4163c8c83c Mon Sep 17 00:00:00 2001 From: Michal Kubecek Date: Sun, 15 Dec 2019 22:06:10 +0100 Subject: [PATCH] ip link: show permanent hardware address Display permanent hardware address of an interface in output of "ip link show" and "ip addr show". To reduce noise, permanent address is only shown if it is different from current one. Signed-off-by: Michal Kubecek Signed-off-by: David Ahern --- ip/ipaddress.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 964f14df..9415d768 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -1011,6 +1011,24 @@ int print_linkinfo(struct nlmsghdr *n, void *arg) ifi->ifi_type, b1, sizeof(b1))); } + if (tb[IFLA_PERM_ADDRESS]) { + unsigned int len = RTA_PAYLOAD(tb[IFLA_PERM_ADDRESS]); + + if (!tb[IFLA_ADDRESS] || + RTA_PAYLOAD(tb[IFLA_ADDRESS]) != len || + memcmp(RTA_DATA(tb[IFLA_PERM_ADDRESS]), + RTA_DATA(tb[IFLA_ADDRESS]), len)) { + print_string(PRINT_FP, NULL, " permaddr ", NULL); + print_color_string(PRINT_ANY, + COLOR_MAC, + "permaddr", + "%s", + ll_addr_n2a(RTA_DATA(tb[IFLA_PERM_ADDRESS]), + RTA_PAYLOAD(tb[IFLA_PERM_ADDRESS]), + ifi->ifi_type, + b1, sizeof(b1))); + } + } } if (tb[IFLA_LINK_NETNSID]) {