static int virtif_create(struct ifnet *ifp) { uint8_t enaddr[ETHER_ADDR_LEN] = { 0xb2, 0x0a, 0x00, 0x0b, 0x0e, 0x01 }; char enaddrstr[3*ETHER_ADDR_LEN]; struct virtif_sc *sc = ifp->if_softc; int error; if (sc->sc_viu) panic("%s: already created", ifp->if_xname); enaddr[2] = cprng_fast32() & 0xff; enaddr[5] = sc->sc_num & 0xff; if ((error = VIFHYPER_CREATE(sc->sc_linkstr, sc, enaddr, &sc->sc_viu)) != 0) { printf("VIFHYPER_CREATE failed: %d\n", error); return error; } ether_ifattach(ifp, enaddr); ether_snprintf(enaddrstr, sizeof(enaddrstr), enaddr); aprint_normal_ifnet(ifp, "Ethernet address %s\n", enaddrstr); IFQ_SET_READY(&ifp->if_snd); return 0; }
static int virtif_create(struct ifnet *ifp) { uint8_t enaddr[ETHER_ADDR_LEN]; char enaddrstr[3*ETHER_ADDR_LEN]; struct virtif_sc *sc = ifp->if_softc; int error; if (sc->sc_viu) panic("%s: already created", ifp->if_xname); /* XXX generalize */ virt_hwaddr(ifp->if_xname, enaddr); if ((error = VIFHYPER_CREATE(sc->sc_linkstr, sc, enaddr, &sc->sc_viu)) != 0) { printf("VIFHYPER_CREATE failed: %d\n", error); return error; } ether_ifattach(ifp, enaddr); ether_snprintf(enaddrstr, sizeof(enaddrstr), enaddr); aprint_normal_ifnet(ifp, "Ethernet address %s\n", enaddrstr); IFQ_SET_READY(&ifp->if_snd); return 0; }