diff options
author | Chad Kimes <chkimes@github.com> | 2022-03-21 17:29:15 -0400 |
---|---|---|
committer | Daniel Kiper <daniel.kiper@oracle.com> | 2022-04-20 13:42:30 +0200 |
commit | 98c299e540ec2942c2734c3e56cf586302d3eef0 (patch) | |
tree | 144469e1b26fa8bdee58f4e7c3f541bc5cbe3030 | |
parent | 37ddd9457f13f92fd176bbb2951cfc1fbc93e6f7 (diff) | |
download | grub-98c299e540ec2942c2734c3e56cf586302d3eef0.tar.gz |
net/net: Add vlan information to net_ls_addr output
Example output:
grub> net_ls_addr
efinet1 00:11:22:33:44:55 192.0.2.100 vlan100
Signed-off-by: Chad Kimes <chkimes@github.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-rw-r--r-- | grub-core/net/net.c | 19 | ||||
-rw-r--r-- | include/grub/net.h | 6 |
2 files changed, 24 insertions, 1 deletions
diff --git a/grub-core/net/net.c b/grub-core/net/net.c index 681f91486..0315a568e 100644 --- a/grub-core/net/net.c +++ b/grub-core/net/net.c @@ -782,6 +782,20 @@ grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str) grub_printf (_("Unsupported hw address type %d\n"), addr->type); } +void +grub_net_vlan_to_str (grub_uint16_t vlantag, char *str) +{ + str[0] = 0; + + /* 12 bits are used to identify the vlan in 802.1Q. */ + vlantag = vlantag & 0x0fff; + + if (vlantag == 0) + return; + + grub_snprintf (str, GRUB_NET_MAX_STR_VLAN_LEN, "vlan%u", vlantag); +} + int grub_net_hwaddr_cmp (const grub_net_link_level_address_t *a, const grub_net_link_level_address_t *b) @@ -1251,9 +1265,12 @@ grub_cmd_listaddrs (struct grub_command *cmd __attribute__ ((unused)), { char bufh[GRUB_NET_MAX_STR_HWADDR_LEN]; char bufn[GRUB_NET_MAX_STR_ADDR_LEN]; + char bufv[GRUB_NET_MAX_STR_VLAN_LEN]; + grub_net_hwaddr_to_str (&inf->hwaddress, bufh); grub_net_addr_to_str (&inf->address, bufn); - grub_printf ("%s %s %s\n", inf->name, bufh, bufn); + grub_net_vlan_to_str (inf->vlantag, bufv); + grub_printf ("%s %s %s %s\n", inf->name, bufh, bufn, bufv); } return GRUB_ERR_NONE; } diff --git a/include/grub/net.h b/include/grub/net.h index 099a7ce30..db21e792f 100644 --- a/include/grub/net.h +++ b/include/grub/net.h @@ -512,12 +512,18 @@ grub_net_addr_cmp (const grub_net_network_level_address_t *a, #define GRUB_NET_MAX_STR_HWADDR_LEN (sizeof ("XX:XX:XX:XX:XX:XX")) +/* Max VLAN id = 4094 */ +#define GRUB_NET_MAX_STR_VLAN_LEN (sizeof ("vlanXXXX")) + void grub_net_addr_to_str (const grub_net_network_level_address_t *target, char *buf); void grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str); +void +grub_net_vlan_to_str (grub_uint16_t vlantag, char *str); + grub_err_t grub_env_set_net_property (const char *intername, const char *suffix, const char *value, grub_size_t len); |