diff options
author | Michal Kubecek <mkubecek@suse.cz> | 2019-12-15 22:06:10 +0100 |
---|---|---|
committer | David Ahern <dsahern@gmail.com> | 2019-12-17 16:28:02 +0000 |
commit | 2b8e6995fe36b5863c394ddf6444eb4163c8c83c (patch) | |
tree | bcc0bc1ebb6e53ea31a65efec2cfffb4f3cd150b | |
parent | 974f889c2d0f72adfbe3428afd58884e376d3750 (diff) | |
download | iproute2-2b8e6995fe36b5863c394ddf6444eb4163c8c83c.tar.gz |
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 <mkubecek@suse.cz>
Signed-off-by: David Ahern <dsahern@gmail.com>
-rw-r--r-- | ip/ipaddress.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 964f14df9..9415d7682 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]) { |