mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-18 23:46:57 +02:00
util/nvmutil: tidy up mac parsing code
Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+10
-11
@@ -40,9 +40,10 @@ static void read_gbe_file(void);
|
|||||||
static void read_gbe_file_part(size_t part, uint8_t invert);
|
static void read_gbe_file_part(size_t part, uint8_t invert);
|
||||||
static void cmd_setmac(void);
|
static void cmd_setmac(void);
|
||||||
static void parse_mac_string(void);
|
static void parse_mac_string(void);
|
||||||
static void set_mac_byte(size_t mac_str_pos);
|
static void set_mac_byte(size_t mac_byte_pos);
|
||||||
static void check_mac_separator(size_t mac_str_pos);
|
static void check_mac_separator(size_t mac_str_pos);
|
||||||
static void set_mac_nib(size_t mac_str_pos, size_t mac_nib_pos);
|
static void set_mac_nib(size_t mac_str_pos,
|
||||||
|
size_t mac_byte_pos, size_t mac_nib_pos);
|
||||||
static uint8_t hextonum(char ch_s);
|
static uint8_t hextonum(char ch_s);
|
||||||
static uint8_t rhex(void);
|
static uint8_t rhex(void);
|
||||||
static void read_file_exact(int fd, void *buf, size_t len,
|
static void read_file_exact(int fd, void *buf, size_t len,
|
||||||
@@ -480,15 +481,15 @@ parse_mac_string(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_mac_byte(size_t mac_byte)
|
set_mac_byte(size_t mac_byte_pos)
|
||||||
{
|
{
|
||||||
size_t mac_str_pos = mac_byte * 3;
|
size_t mac_str_pos = mac_byte_pos * 3;
|
||||||
size_t mac_nib_pos;
|
size_t mac_nib_pos;
|
||||||
|
|
||||||
check_mac_separator(mac_str_pos);
|
check_mac_separator(mac_str_pos);
|
||||||
|
|
||||||
for (mac_nib_pos = 0; mac_nib_pos < 2; mac_nib_pos++)
|
for (mac_nib_pos = 0; mac_nib_pos < 2; mac_nib_pos++)
|
||||||
set_mac_nib(mac_str_pos, mac_nib_pos);
|
set_mac_nib(mac_str_pos, mac_byte_pos, mac_nib_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -505,11 +506,11 @@ check_mac_separator(size_t mac_str_pos)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_mac_nib(size_t mac_str_pos, size_t mac_nib_pos)
|
set_mac_nib(size_t mac_str_pos,
|
||||||
|
size_t mac_byte_pos, size_t mac_nib_pos)
|
||||||
{
|
{
|
||||||
char mac_ch;
|
char mac_ch;
|
||||||
uint16_t hex_num;
|
uint16_t hex_num;
|
||||||
size_t mac_byte_pos;
|
|
||||||
|
|
||||||
mac_ch = mac_str[mac_str_pos + mac_nib_pos];
|
mac_ch = mac_str[mac_str_pos + mac_nib_pos];
|
||||||
hex_num = hextonum(mac_ch);
|
hex_num = hextonum(mac_ch);
|
||||||
@@ -518,12 +519,10 @@ set_mac_nib(size_t mac_str_pos, size_t mac_nib_pos)
|
|||||||
err(EINVAL, "Invalid character '%c'",
|
err(EINVAL, "Invalid character '%c'",
|
||||||
mac_str[mac_str_pos + mac_nib_pos]);
|
mac_str[mac_str_pos + mac_nib_pos]);
|
||||||
|
|
||||||
mac_byte_pos = mac_str_pos / 3;
|
|
||||||
|
|
||||||
/* If random, ensure that local/unicast bits are set */
|
/* If random, ensure that local/unicast bits are set */
|
||||||
if ((mac_byte_pos == 0) && (mac_nib_pos == 1) &&
|
if ((mac_byte_pos == 0) && (mac_nib_pos == 1) &&
|
||||||
((mac_ch | 0x20) == 'x' ||
|
((mac_ch | 0x20) == 'x' ||
|
||||||
(mac_ch == '?')))
|
(mac_ch == '?')))
|
||||||
hex_num = (hex_num & 0xE) | 2; /* local, unicast */
|
hex_num = (hex_num & 0xE) | 2; /* local, unicast */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user