Lines Matching defs:pVNIC

262 LOCAL int vboxNetFltSolarisInitVNIC(PVBOXNETFLTINS pThis, PVBOXNETFLTVNIC pVNIC);
265 LOCAL void vboxNetFltSolarisFreeVNIC(PVBOXNETFLTVNIC pVNIC);
266 LOCAL void vboxNetFltSolarisDestroyVNIC(PVBOXNETFLTVNIC pVNIC);
815 * @param pVNIC Pointer to the VNIC.
821 LOCAL int vboxNetFltSolarisInitVNIC(PVBOXNETFLTINS pThis, PVBOXNETFLTVNIC pVNIC)
827 AssertReturn(pVNIC, VERR_INVALID_PARAMETER);
828 AssertReturn(pVNIC->hInterface, VERR_INVALID_POINTER);
829 AssertReturn(pVNIC->hLinkId != DATALINK_INVALID_LINKID, VERR_INVALID_HANDLE);
830 AssertReturn(!pVNIC->hClient, VERR_INVALID_POINTER);
832 int rc = mac_client_open(pVNIC->hInterface, &pVNIC->hClient,
839 if (pVNIC->pVNICTemplate)
840 rc = mac_client_set_resources(pVNIC->hClient, &pVNIC->pVNICTemplate->Resources);
853 mac_client_close(pVNIC->hClient, 0 /* flags */);
854 pVNIC->hClient = NULL;
991 PVBOXNETFLTVNIC pVNIC = RTMemAllocZ(sizeof(VBOXNETFLTVNIC));
992 if (RT_UNLIKELY(!pVNIC))
995 pVNIC->u32Magic = VBOXNETFLTVNIC_MAGIC;
996 pVNIC->fCreated = false;
997 pVNIC->pVNICTemplate = NULL;
998 pVNIC->pvIf = NULL;
999 pVNIC->hInterface = NULL;
1000 pVNIC->hLinkId = DATALINK_INVALID_LINKID;
1001 pVNIC->hClient = NULL;
1002 pVNIC->hUnicast = NULL;
1003 pVNIC->hPromisc = NULL;
1004 RT_ZERO(pVNIC->szName);
1005 list_link_init(&pVNIC->hNode);
1006 return pVNIC;
1013 * @param pVNIC Pointer to the VNIC.
1015 LOCAL inline void vboxNetFltSolarisFreeVNIC(PVBOXNETFLTVNIC pVNIC)
1017 RTMemFree(pVNIC);
1025 * @param pVNIC Pointer to the VNIC.
1027 LOCAL void vboxNetFltSolarisDestroyVNIC(PVBOXNETFLTVNIC pVNIC)
1029 AssertPtrReturnVoid(pVNIC);
1030 AssertMsgReturnVoid(pVNIC->u32Magic == VBOXNETFLTVNIC_MAGIC, ("pVNIC=%p u32Magic=%#x\n", pVNIC, pVNIC->u32Magic));
1031 if (pVNIC)
1033 if (pVNIC->hClient)
1036 if (pVNIC->hUnicast)
1038 mac_unicast_remove(pVNIC->hClient, pVNIC->hUnicast);
1039 pVNIC->hUnicast = NULL;
1043 if (pVNIC->hPromisc)
1045 mac_promisc_remove(pVNIC->hPromisc);
1046 pVNIC->hPromisc = NULL;
1049 mac_rx_clear(pVNIC->hClient);
1051 mac_client_close(pVNIC->hClient, 0 /* fFlags */);
1052 pVNIC->hClient = NULL;
1055 if (pVNIC->hInterface)
1057 mac_close(pVNIC->hInterface);
1058 pVNIC->hInterface = NULL;
1061 if (pVNIC->fCreated)
1063 vnic_delete(pVNIC->hLinkId, 0 /* Flags */);
1064 pVNIC->hLinkId = DATALINK_INVALID_LINKID;
1065 pVNIC->fCreated = false;
1068 if (pVNIC->pVNICTemplate)
1070 RTMemFree(pVNIC->pVNICTemplate);
1071 pVNIC->pVNICTemplate = NULL;
1093 PVBOXNETFLTVNIC pVNIC = vboxNetFltSolarisAllocVNIC();
1094 if (RT_UNLIKELY(!pVNIC))
1119 pVNIC->pVNICTemplate = RTMemAllocZ(sizeof(VBOXNETFLTVNICTEMPLATE));
1120 if (RT_UNLIKELY(!pVNIC->pVNICTemplate))
1122 vboxNetFltSolarisFreeVNIC(pVNIC);
1129 rc = vboxNetFltSolarisInitVNICTemplate(pThis, pVNIC->pVNICTemplate);
1133 vboxNetFltSolarisFreeVNIC(pVNIC);
1137 pszLinkName = pVNIC->pVNICTemplate->szLinkName;
1138 uVLANId = pVNIC->pVNICTemplate->uVLANId;
1155 AssertCompile(sizeof(pVNIC->szName) > sizeof(VBOXBOW_VNIC_NAME "18446744073709551615" /* UINT64_MAX */));
1156 RTStrPrintf(pVNIC->szName, sizeof(pVNIC->szName), "%s%RU64", VBOXBOW_VNIC_NAME, g_VBoxNetFltSolarisVNICId);
1158 rc = mac_open_by_linkname(pVNIC->szName, &hTmpMacHandle);
1169 rc = vnic_create(pVNIC->szName, pszLinkName, &AddrType, &MacLen, GuestMac.au8, &MacSlot, 0 /* Mac-Prefix Length */, uVLANId,
1170 fFlags, &pVNIC->hLinkId, &Diag, NULL /* Reserved */);
1173 pVNIC->fCreated = true;
1179 rc = mac_open_by_linkid(pVNIC->hLinkId, &pVNIC->hInterface);
1185 rc = vboxNetFltSolarisInitVNIC(pThis, pVNIC);
1189 pVNIC->szName, pszLinkName, &GuestMac));
1190 *ppVNIC = pVNIC;
1195 mac_close(pVNIC->hInterface);
1196 pVNIC->hInterface = NULL;
1200 LogRel((DEVICE_NAME ":vboxNetFltSolarisCreateVNIC logrel failed to open VNIC '%s' over '%s'. rc=%d\n", pVNIC->szName,
1205 vboxNetFltSolarisDestroyVNIC(pVNIC);
1209 LogRel((DEVICE_NAME ":vboxNetFltSolarisCreateVNIC failed to create VNIC '%s' over '%s' rc=%d Diag=%d\n", pVNIC->szName,
1214 vboxNetFltSolarisFreeVNIC(pVNIC);
1250 * @param pVNIC Pointer to the VNIC.
1254 LOCAL inline int vboxNetFltSolarisSetPromisc(PVBOXNETFLTINS pThis, PVBOXNETFLTVNIC pVNIC)
1257 if (!pVNIC->hPromisc)
1259 rc = mac_promisc_add(pVNIC->hClient, MAC_CLIENT_PROMISC_FILTERED, vboxNetFltSolarisRecv, pThis, &pVNIC->hPromisc,
1273 * @param pVNIC Pointer to the VNIC.
1275 LOCAL inline void vboxNetFltSolarisRemovePromisc(PVBOXNETFLTINS pThis, PVBOXNETFLTVNIC pVNIC)
1277 if (pVNIC->hPromisc)
1279 mac_promisc_remove(pVNIC->hPromisc);
1280 pVNIC->hPromisc = NULL;
1295 PVBOXNETFLTVNIC pVNIC = list_head(&pThis->u.s.hVNICs);
1298 for (; pVNIC != NULL; pVNIC = list_next(&pThis->u.s.hVNICs, pVNIC))
1299 if (pVNIC->hClient)
1302 mac_rx_set(pVNIC->hClient, vboxNetFltSolarisRecv, pThis);
1304 vboxNetFltSolarisSetPromisc(pThis, pVNIC);
1309 for (; pVNIC != NULL; pVNIC = list_next(&pThis->u.s.hVNICs, pVNIC))
1310 if (pVNIC->hClient)
1313 mac_rx_clear(pVNIC->hClient);
1315 vboxNetFltSolarisRemovePromisc(pThis, pVNIC);
1348 PVBOXNETFLTVNIC pVNIC = NULL;
1349 while ((pVNIC = list_remove_head(&pThis->u.s.hVNICs)) != NULL)
1351 vboxNetFltSolarisDestroyVNIC(pVNIC);
1352 vboxNetFltSolarisFreeVNIC(pVNIC);
1438 PVBOXNETFLTVNIC pVNIC = pvIfData;
1439 AssertReturn(VALID_PTR(pVNIC), VERR_INVALID_POINTER);
1440 AssertMsgReturn(pVNIC->u32Magic == VBOXNETFLTVNIC_MAGIC,
1441 ("Invalid magic=%#x (expected %#x)\n", pVNIC->u32Magic, VBOXNETFLTVNIC_MAGIC),
1453 mac_tx_cookie_t pXmitCookie = mac_tx(pVNIC->hClient, pMsg, 0 /* Hint */, MAC_DROP_ON_NO_DESC, NULL /* return message */);
1459 LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit Xmit failed pVNIC=%p.\n", pVNIC));
1479 PVBOXNETFLTVNIC pVNIC = pvIfData;
1480 AssertMsgReturnVoid(VALID_PTR(pVNIC) && pVNIC->u32Magic == VBOXNETFLTVNIC_MAGIC,
1481 ("Invalid pVNIC=%p magic=%#x (expected %#x)\n", pvIfData,
1482 VALID_PTR(pVNIC) ? pVNIC->u32Magic : 0, VBOXNETFLTVNIC_MAGIC));
1483 AssertMsgReturnVoid(pVNIC->hLinkId != DATALINK_INVALID_LINKID,
1484 ("Invalid hLinkId pVNIC=%p magic=%#x\n", pVNIC, pVNIC->u32Magic));
1497 int rc = vnic_modify_addr(pVNIC->hLinkId, &AddrType, &MacLen, au8GuestMac, &MacSlot, 0 /* Mac-Prefix Length */, &Diag);
1504 if (pVNIC->hUnicast)
1506 mac_rx_clear(pVNIC->hClient);
1507 mac_unicast_remove(pVNIC->hClient, pVNIC->hUnicast);
1508 pVNIC->hUnicast = NULL;
1512 if (pVNIC->hPromisc)
1514 mac_promisc_remove(pVNIC->hPromisc);
1515 pVNIC->hPromisc = NULL;
1519 /* uint16_t uVLANId = pVNIC->pVNICTemplate ? pVNIC->pVNICTemplate->uVLANId : 0; */
1521 rc = mac_unicast_add(pVNIC->hClient, NULL, MAC_UNICAST_PRIMARY, &pVNIC->hUnicast, 0 /* VLAN Id */, &MacDiag);
1525 rc = vboxNetFltSolarisSetPromisc(pThis, pVNIC);
1535 mac_rx_set(pVNIC->hClient, vboxNetFltSolarisRecv, pThis);
1540 mac_unicast_remove(pVNIC->hClient, pVNIC->hUnicast);
1541 pVNIC->hUnicast = NULL;
1563 pThis->szName, pVNIC->szName));
1584 PVBOXNETFLTVNIC pVNIC = NULL;
1585 rc = vboxNetFltSolarisCreateVNIC(pThis, &pVNIC);
1591 pVNIC->pvIf = pvIf;
1592 *ppvIfData = pVNIC;
1597 list_insert_tail(&pThis->u.s.hVNICs, pVNIC);
1608 PVBOXNETFLTVNIC pVNIC = vboxNetFltSolarisAllocVNIC();
1609 if (RT_LIKELY(pVNIC))
1611 pVNIC->fCreated = false;
1613 rc = mac_open_by_linkname(pThis->szName, &pVNIC->hInterface);
1619 rc = vboxNetFltSolarisGetLinkId(pThis->szName, &pVNIC->hLinkId);
1625 RTStrPrintf(pVNIC->szName, sizeof(pVNIC->szName), "%s", pThis->szName);
1626 rc = vboxNetFltSolarisInitVNIC(pThis, pVNIC);
1629 pVNIC->pvIf = pvIf;
1630 *ppvIfData = pVNIC;
1631 list_insert_head(&pThis->u.s.hVNICs, pVNIC);
1649 vboxNetFltSolarisFreeVNIC(pVNIC);
1671 PVBOXNETFLTVNIC pVNIC = pvIfData;
1672 if (RT_LIKELY(pVNIC))
1674 AssertMsgReturn(pVNIC->u32Magic == VBOXNETFLTVNIC_MAGIC,
1675 ("Invalid magic=%#x (expected %#x)\n", pVNIC->u32Magic, VBOXNETFLTVNIC_MAGIC), VERR_INVALID_POINTER);
1686 list_remove(&pThis->u.s.hVNICs, pVNIC);
1687 Log((DEVICE_NAME ":vboxNetFltPortOsDisconnectInterface destroying pVNIC=%p\n", pVNIC));
1688 vboxNetFltSolarisDestroyVNIC(pVNIC);
1689 vboxNetFltSolarisFreeVNIC(pVNIC);