Date: Fri, 5 Aug 2016 14:00:27 GMT From: vincenzo@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r307225 - soc2016/vincenzo/head/usr.sbin/bhyve Message-ID: <201608051400.u75E0RDw051989@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: vincenzo Date: Fri Aug 5 14:00:27 2016 New Revision: 307225 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=307225 Log: bhyve: ptnet: export net_genmac() function Modified: soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.c soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c soc2016/vincenzo/head/usr.sbin/bhyve/pci_virtio_net.c Modified: soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.c ============================================================================== --- soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.c Fri Aug 5 13:53:28 2016 (r307224) +++ soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.c Fri Aug 5 14:00:27 2016 (r307225) @@ -1078,6 +1078,13 @@ return ret; } +/* + * Some utils functions, which should go in a separate module. + */ +#include <md5.h> +#include "pci_emul.h" +#include "bhyverun.h" + int net_parsemac(char *mac_str, uint8_t *mac_addr) { @@ -1100,3 +1107,29 @@ return (0); } + +void +net_genmac(struct pci_devinst *pi, uint8_t *macaddr) +{ + /* + * The default MAC address is the standard NetApp OUI of 00-a0-98, + * followed by an MD5 of the PCI slot/func number and dev name + */ + MD5_CTX mdctx; + unsigned char digest[16]; + char nstr[80]; + + snprintf(nstr, sizeof(nstr), "%d-%d-%s", pi->pi_slot, + pi->pi_func, vmname); + + MD5Init(&mdctx); + MD5Update(&mdctx, nstr, strlen(nstr)); + MD5Final(digest, &mdctx); + + macaddr[0] = 0x00; + macaddr[1] = 0xa0; + macaddr[2] = 0x98; + macaddr[3] = digest[0]; + macaddr[4] = digest[1]; + macaddr[5] = digest[2]; +} Modified: soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h ============================================================================== --- soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h Fri Aug 5 13:53:28 2016 (r307224) +++ soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h Fri Aug 5 14:00:27 2016 (r307225) @@ -117,6 +117,9 @@ struct ptnetmap_state * get_ptnetmap(struct net_backend *be); int ptn_memdev_attach(void *mem_ptr, uint32_t mem_size, uint16_t mem_id); + +#include "pci_emul.h" int net_parsemac(char *mac_str, uint8_t *mac_addr); +void net_genmac(struct pci_devinst *pi, uint8_t *macaddr); #endif /* __NET_BACKENDS_H__ */ Modified: soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c ============================================================================== --- soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c Fri Aug 5 13:53:28 2016 (r307224) +++ soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c Fri Aug 5 14:00:27 2016 (r307225) @@ -164,6 +164,10 @@ free(devname); } + if (!mac_provided) { + net_genmac(pi, macaddr); + } + sc->ptbe = get_ptnetmap(sc->be); /* Initialize PCI configuration space. */ Modified: soc2016/vincenzo/head/usr.sbin/bhyve/pci_virtio_net.c ============================================================================== --- soc2016/vincenzo/head/usr.sbin/bhyve/pci_virtio_net.c Fri Aug 5 13:53:28 2016 (r307224) +++ soc2016/vincenzo/head/usr.sbin/bhyve/pci_virtio_net.c Fri Aug 5 14:00:27 2016 (r307225) @@ -50,7 +50,6 @@ #include <strings.h> #include <unistd.h> #include <assert.h> -#include <md5.h> #include <pthread.h> #include <pthread_np.h> @@ -415,9 +414,6 @@ static int pci_vtnet_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts) { - MD5_CTX mdctx; - unsigned char digest[16]; - char nstr[80]; char tname[MAXCOMLEN + 1]; struct pci_vtnet_softc *sc; char *devname; @@ -478,24 +474,8 @@ free(devname); } - /* - * The default MAC address is the standard NetApp OUI of 00-a0-98, - * followed by an MD5 of the PCI slot/func number and dev name - */ if (!mac_provided) { - snprintf(nstr, sizeof(nstr), "%d-%d-%s", pi->pi_slot, - pi->pi_func, vmname); - - MD5Init(&mdctx); - MD5Update(&mdctx, nstr, strlen(nstr)); - MD5Final(digest, &mdctx); - - sc->vsc_config.mac[0] = 0x00; - sc->vsc_config.mac[1] = 0xa0; - sc->vsc_config.mac[2] = 0x98; - sc->vsc_config.mac[3] = digest[0]; - sc->vsc_config.mac[4] = digest[1]; - sc->vsc_config.mac[5] = digest[2]; + net_genmac(pi, sc->vsc_config.mac); } /* initialize config space */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608051400.u75E0RDw051989>