aboutsummaryrefslogtreecommitdiff
path: root/sys/net/if_ethersubr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net/if_ethersubr.c')
-rw-r--r--sys/net/if_ethersubr.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index 66a4724a786c..7be4dfac23e7 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -1486,7 +1486,7 @@ ether_gen_addr_byname(const char *nameunit, struct ether_addr *hwaddr)
char uuid[HOSTUUIDLEN + 1];
uint64_t addr;
int i, sz;
- char digest[SHA1_RESULTLEN];
+ unsigned char digest[SHA1_RESULTLEN];
char jailname[MAXHOSTNAMELEN];
getcredhostuuid(curthread->td_ucred, uuid, sizeof(uuid));
@@ -1510,9 +1510,7 @@ ether_gen_addr_byname(const char *nameunit, struct ether_addr *hwaddr)
SHA1Final(digest, &ctx);
free(buf, M_TEMP);
- addr = ((digest[0] << 16) | (digest[1] << 8) | digest[2]) &
- OUI_FREEBSD_GENERATED_MASK;
- addr = OUI_FREEBSD(addr);
+ addr = (digest[0] << 8) | digest[1] | OUI_FREEBSD_GENERATED_LOW;
for (i = 0; i < ETHER_ADDR_LEN; ++i) {
hwaddr->octet[i] = addr >> ((ETHER_ADDR_LEN - i - 1) * 8) &
0xFF;