aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Kimes <chkimes@github.com>2022-03-21 17:29:15 -0400
committerDaniel Kiper <daniel.kiper@oracle.com>2022-04-20 13:42:30 +0200
commit98c299e540ec2942c2734c3e56cf586302d3eef0 (patch)
tree144469e1b26fa8bdee58f4e7c3f541bc5cbe3030
parent37ddd9457f13f92fd176bbb2951cfc1fbc93e6f7 (diff)
downloadgrub-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.c19
-rw-r--r--include/grub/net.h6
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);