Changeset 38370 in vbox for trunk/src/VBox/HostDrivers/VBoxNetAdp/darwin
- Timestamp:
- Aug 9, 2011 8:37:03 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 73396
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetAdp/darwin/VBoxNetAdp-darwin.cpp
r37423 r38370 55 55 #include <sys/conf.h> 56 56 #include <miscfs/devfs/devfs.h> 57 extern "C" { 58 #include <net/bpf.h> 59 } 57 60 58 61 #define VBOXNETADP_OS_SPECFIC 1 … … 142 145 static errno_t vboxNetAdpDarwinOutput(ifnet_t pIface, mbuf_t pMBuf) 143 146 { 147 PVBOXNETADP pThis = VBOXNETADP_FROM_IFACE(pIface); 148 Assert(pThis); 149 if (pThis->u.s.nTapMode & BPF_MODE_OUTPUT) 150 { 151 Log2(("vboxnetadp: out len=%d\n%.*Rhxd\n", mbuf_len(pMBuf), 14, mbuf_data(pMBuf))); 152 bpf_tap_out(pIface, DLT_EN10MB, pMBuf, NULL, 0); 153 } 144 154 mbuf_freem_list(pMBuf); 145 155 return 0; … … 192 202 } 193 203 194 204 static errno_t vboxNetAdpDarwinDemux(ifnet_t pIface, mbuf_t pMBuf, 205 char *pFrameHeader, 206 protocol_family_t *pProtocolFamily) 207 { 208 PVBOXNETADP pThis = VBOXNETADP_FROM_IFACE(pIface); 209 Assert(pThis); 210 Log2(("vboxNetAdpDarwinDemux: mode=%d\n", nMode)); 211 if (pThis->u.s.nTapMode & BPF_MODE_INPUT) 212 { 213 Log2(("vboxnetadp: in len=%d\n%.*Rhxd\n", mbuf_len(pMBuf), 14, pFrameHeader)); 214 bpf_tap_in(pIface, DLT_EN10MB, pMBuf, pFrameHeader, ETHER_HDR_LEN); 215 } 216 return ether_demux(pIface, pMBuf, pFrameHeader, pProtocolFamily); 217 } 218 219 static errno_t vboxNetAdpDarwinBpfTap(ifnet_t pIface, u_int32_t uLinkType, bpf_tap_mode nMode) 220 { 221 PVBOXNETADP pThis = VBOXNETADP_FROM_IFACE(pIface); 222 Assert(pThis); 223 Log2(("vboxNetAdpDarwinBpfTap: mode=%d\n", nMode)); 224 pThis->u.s.nTapMode = nMode; 225 return 0; 226 } 227 228 static errno_t vboxNetAdpDarwinBpfSend(ifnet_t pIface, u_int32_t uLinkType, mbuf_t pMBuf) 229 { 230 LogRel(("vboxnetadp: BPF send function is not implemented (dlt=%d)\n", uLinkType)); 231 mbuf_freem_list(pMBuf); 232 return 0; 233 } 195 234 196 235 int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMACAddress) … … 208 247 return rc; 209 248 } 249 250 pThis->u.s.nTapMode = BPF_MODE_DISABLED; 210 251 211 252 mac.sdl_len = sizeof(mac); … … 225 266 Params.type = IFT_ETHER; 226 267 Params.output = vboxNetAdpDarwinOutput; 227 Params.demux = ether_demux;268 Params.demux = vboxNetAdpDarwinDemux; 228 269 Params.add_proto = vboxNetAdpDarwinAddProto; 229 270 Params.del_proto = vboxNetAdpDarwinDelProto; … … 244 285 if (!err) 245 286 { 287 err = bpf_attach(pThis->u.s.pIface, DLT_EN10MB, ETHER_HDR_LEN, 288 vboxNetAdpDarwinBpfSend, vboxNetAdpDarwinBpfTap); 289 if (err) 290 { 291 LogRel(("vboxnetadp: bpf_attach failed with %d\n", err)); 292 } 246 293 err = ifnet_set_flags(pThis->u.s.pIface, IFF_RUNNING | IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST, 0xFFFF); 247 294 if (!err) 248 295 { 249 296 ifnet_set_mtu(pThis->u.s.pIface, VBOXNETADP_MTU); 297 Log2(("vboxnetadp: created interface %s (%p), pThis=%p, pMagic=%p, *pMagic=%x(%x)\n", 298 pThis->szName, pThis->u.s.pIface, pThis, ifnet_softc(pThis->u.s.pIface), *(uint32_t*)ifnet_softc(pThis->u.s.pIface), pThis->uMagic)); 250 299 return VINF_SUCCESS; 251 300 }
Note:
See TracChangeset
for help on using the changeset viewer.