Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/bhyve/net_utils.c
Show All 38 Lines | |||||
#include "bhyverun.h" | #include "bhyverun.h" | ||||
#include "debug.h" | #include "debug.h" | ||||
#include "net_utils.h" | #include "net_utils.h" | ||||
int | int | ||||
net_parsemac(char *mac_str, uint8_t *mac_addr) | net_parsemac(char *mac_str, uint8_t *mac_addr) | ||||
{ | { | ||||
struct ether_addr *ea; | struct ether_addr *ea; | ||||
char *tmpstr; | |||||
char zero_addr[ETHER_ADDR_LEN] = { 0, 0, 0, 0, 0, 0 }; | char zero_addr[ETHER_ADDR_LEN] = { 0, 0, 0, 0, 0, 0 }; | ||||
tmpstr = strsep(&mac_str,"="); | if (mac_str == NULL) | ||||
return (EINVAL); | |||||
if ((mac_str != NULL) && (!strcmp(tmpstr,"mac"))) { | |||||
ea = ether_aton(mac_str); | ea = ether_aton(mac_str); | ||||
if (ea == NULL || ETHER_IS_MULTICAST(ea->octet) || | if (ea == NULL || ETHER_IS_MULTICAST(ea->octet) || | ||||
memcmp(ea->octet, zero_addr, ETHER_ADDR_LEN) == 0) { | memcmp(ea->octet, zero_addr, ETHER_ADDR_LEN) == 0) { | ||||
EPRINTLN("Invalid MAC %s", mac_str); | EPRINTLN("Invalid MAC %s", mac_str); | ||||
return (EINVAL); | return (EINVAL); | ||||
} else | } else | ||||
memcpy(mac_addr, ea->octet, ETHER_ADDR_LEN); | memcpy(mac_addr, ea->octet, ETHER_ADDR_LEN); | ||||
} | |||||
return (0); | return (0); | ||||
} | } | ||||
void | void | ||||
net_genmac(struct pci_devinst *pi, uint8_t *macaddr) | net_genmac(struct pci_devinst *pi, uint8_t *macaddr) | ||||
{ | { | ||||
/* | /* | ||||
Show All 21 Lines |