Skip site navigation (1)Skip section navigation (2)
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>