summaryrefslogtreecommitdiff
path: root/util/nvmutil/nvmutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/nvmutil/nvmutil.c')
-rw-r--r--util/nvmutil/nvmutil.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index 5d2dd3ee..6a6fa936 100644
--- a/util/nvmutil/nvmutil.c
+++ b/util/nvmutil/nvmutil.c
@@ -40,9 +40,10 @@ static void read_gbe_file(void);
static void read_gbe_file_part(size_t part, uint8_t invert);
static void cmd_setmac(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 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 rhex(void);
static void read_file_exact(int fd, void *buf, size_t len,
@@ -480,15 +481,15 @@ parse_mac_string(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;
check_mac_separator(mac_str_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
@@ -505,11 +506,11 @@ check_mac_separator(size_t mac_str_pos)
}
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;
uint16_t hex_num;
- size_t mac_byte_pos;
mac_ch = mac_str[mac_str_pos + mac_nib_pos];
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'",
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 ((mac_byte_pos == 0) && (mac_nib_pos == 1) &&
- ((mac_ch | 0x20) == 'x' ||
- (mac_ch == '?')))
+ ((mac_ch | 0x20) == 'x' ||
+ (mac_ch == '?')))
hex_num = (hex_num & 0xE) | 2; /* local, unicast */
/*