VirtualBox

Ignore:
Timestamp:
Jul 12, 2018 9:06:33 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123672
Message:

*: Made RT_UOFFSETOF, RT_OFFSETOF, RT_UOFFSETOF_ADD and RT_OFFSETOF_ADD work like builtin_offsetof() and require compile time resolvable requests, adding RT_UOFFSETOF_DYN for the dynamic questions that can only be answered at runtime.

Location:
trunk/src/VBox/HostDrivers/VBoxNetFlt
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFlt.c

    r69500 r73097  
    278278*********************************************************************************************************************************/
    279279#define IFPORT_2_VBOXNETFLTINS(pIfPort) \
    280     ( (PVBOXNETFLTINS)((uint8_t *)pIfPort - RT_OFFSETOF(VBOXNETFLTINS, MyPort)) )
     280    ( (PVBOXNETFLTINS)((uint8_t *)(pIfPort) - RT_UOFFSETOF(VBOXNETFLTINS, MyPort)) )
    281281
    282282
     
    999999    int             rc;
    10001000    size_t const    cchName = strlen(pszName);
    1001     PVBOXNETFLTINS  pNew = (PVBOXNETFLTINS)RTMemAllocZ(RT_OFFSETOF(VBOXNETFLTINS, szName[cchName + 1]));
     1001    PVBOXNETFLTINS  pNew = (PVBOXNETFLTINS)RTMemAllocZ(RT_UOFFSETOF_DYN(VBOXNETFLTINS, szName[cchName + 1]));
    10021002    if (!pNew)
    10031003        return VERR_INTNET_FLT_IF_FAILED;
     
    12391239                                                           PINTNETTRUNKIFPORT *ppIfPort)
    12401240{
    1241     PVBOXNETFLTGLOBALS pGlobals = (PVBOXNETFLTGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETFLTGLOBALS, TrunkFactory));
     1241    PVBOXNETFLTGLOBALS pGlobals = (PVBOXNETFLTGLOBALS)((uint8_t *)pIfFactory - RT_UOFFSETOF(VBOXNETFLTGLOBALS, TrunkFactory));
    12421242    PVBOXNETFLTINS pCur;
    12431243    int rc;
     
    13261326static DECLCALLBACK(void) vboxNetFltFactoryRelease(PINTNETTRUNKFACTORY pIfFactory)
    13271327{
    1328     PVBOXNETFLTGLOBALS pGlobals = (PVBOXNETFLTGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETFLTGLOBALS, TrunkFactory));
     1328    PVBOXNETFLTGLOBALS pGlobals = (PVBOXNETFLTGLOBALS)((uint8_t *)pIfFactory - RT_UOFFSETOF(VBOXNETFLTGLOBALS, TrunkFactory));
    13291329
    13301330    int32_t cRefs = ASMAtomicDecS32(&pGlobals->cFactoryRefs);
     
    13461346                                                            const char *pszInterfaceUuid)
    13471347{
    1348     PVBOXNETFLTGLOBALS pGlobals = (PVBOXNETFLTGLOBALS)((uint8_t *)pSupDrvFactory - RT_OFFSETOF(VBOXNETFLTGLOBALS, SupDrvFactory));
     1348    PVBOXNETFLTGLOBALS pGlobals = (PVBOXNETFLTGLOBALS)((uint8_t *)pSupDrvFactory - RT_UOFFSETOF(VBOXNETFLTGLOBALS, SupDrvFactory));
    13491349
    13501350    /*
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/darwin/VBoxNetFlt-darwin.cpp

    r69500 r73097  
    932932    if (cSegs < VBOXNETFLT_DARWIN_MAX_SEGS)
    933933    {
    934         PINTNETSG pSG = (PINTNETSG)alloca(RT_OFFSETOF(INTNETSG, aSegs[cSegs]));
     934        PINTNETSG pSG = (PINTNETSG)alloca(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]));
    935935        vboxNetFltDarwinMBufToSG(pThis, pMBuf, pvFrame, pSG, cSegs, fSrc);
    936936
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c

    r57358 r73097  
    451451
    452452        /* Create a copy and deliver to the virtual switch */
    453         pSG = RTMemTmpAlloc(RT_OFFSETOF(INTNETSG, aSegs[cSegs]));
     453        pSG = RTMemTmpAlloc(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]));
    454454        vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0);
    455455        fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_WIRE);
     
    495495#endif
    496496        /* Create a copy and deliver to the virtual switch */
    497         pSG = RTMemTmpAlloc(RT_OFFSETOF(INTNETSG, aSegs[cSegs]));
     497        pSG = RTMemTmpAlloc(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]));
    498498        vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0);
    499499        fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_HOST);
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c

    r70708 r73097  
    653653    else if (pSG->cbTotal >= sizeof(RTNETETHERHDR))
    654654    {
    655         uint32_t off = RT_OFFSETOF(RTNETETHERHDR, EtherType);
     655        uint32_t off = RT_UOFFSETOF(RTNETETHERHDR, EtherType);
    656656        uint32_t i;
    657657        for (i = 0; i < pSG->cSegsUsed; ++i)
     
    768768        pPkt->csum_start = skb_headroom(pPkt) + pSG->GsoCtx.offHdr2;
    769769        if (fGsoType & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))
    770             pPkt->csum_offset = RT_OFFSETOF(RTNETTCP, th_sum);
     770            pPkt->csum_offset = RT_UOFFSETOF(RTNETTCP, th_sum);
    771771        else
    772             pPkt->csum_offset = RT_OFFSETOF(RTNETUDP, uh_sum);
     772            pPkt->csum_offset = RT_UOFFSETOF(RTNETUDP, uh_sum);
    773773# else
    774774        pPkt->h.raw = pPkt->data + pSG->GsoCtx.offHdr2;
    775775        if (fGsoType & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))
    776             pPkt->csum = RT_OFFSETOF(RTNETTCP, th_sum);
     776            pPkt->csum = RT_UOFFSETOF(RTNETTCP, th_sum);
    777777        else
    778             pPkt->csum = RT_OFFSETOF(RTNETUDP, uh_sum);
     778            pPkt->csum = RT_UOFFSETOF(RTNETUDP, uh_sum);
    779779# endif
    780780        if (!fDstWire)
     
    14571457    unsigned    cbExtra;
    14581458    unsigned    cSegs = vboxNetFltLinuxCalcSGSegments(pSkb, &cbExtra);
    1459     PINTNETSG pSG = (PINTNETSG)alloca(RT_OFFSETOF(INTNETSG, aSegs[cSegs]) + cbExtra);
     1459    PINTNETSG pSG = (PINTNETSG)alloca(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]) + cbExtra);
    14601460    if (RT_LIKELY(pSG))
    14611461    {
     
    14911491    unsigned    cbExtra;
    14921492    unsigned    cSegs = vboxNetFltLinuxCalcSGSegments(pBuf, &cbExtra);
    1493     PINTNETSG pSG = (PINTNETSG)alloca(RT_OFFSETOF(INTNETSG, aSegs[cSegs]) + cbExtra);
     1493    PINTNETSG pSG = (PINTNETSG)alloca(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]) + cbExtra);
    14941494    if (RT_LIKELY(pSG))
    14951495    {
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c

    r69500 r73097  
    35223522     */
    35233523    unsigned cSegs = vboxNetFltSolarisMBlkCalcSGSegs(pThis, pMsg);
    3524     PINTNETSG pSG = (PINTNETSG)alloca(RT_OFFSETOF(INTNETSG, aSegs[cSegs]));
     3524    PINTNETSG pSG = (PINTNETSG)alloca(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]));
    35253525    int rc = vboxNetFltSolarisMBlkToSG(pThis, pMsg, pSG, cSegs, fSrc);
    35263526    if (RT_SUCCESS(rc))
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c

    r69500 r73097  
    688688    {
    689689        unsigned cSegs = vboxNetFltSolarisMBlkCalcSGSegs(pThis, pCurMsg);
    690         PINTNETSG pSG = (PINTNETSG)alloca(RT_OFFSETOF(INTNETSG, aSegs[cSegs]));
     690        PINTNETSG pSG = (PINTNETSG)alloca(RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]));
    691691        int rc = vboxNetFltSolarisMBlkToSG(pThis, pMsg, pSG, cSegs, fSrc);
    692692        if (RT_SUCCESS(rc))
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp

    r69500 r73097  
    138138*********************************************************************************************************************************/
    139139#define LIST_ENTRY_2_JOB(pListEntry) \
    140     ( (PVBOXNETFLT_JOB)((uint8_t *)(pListEntry) - RT_OFFSETOF(VBOXNETFLT_JOB, ListEntry)) )
     140    ( (PVBOXNETFLT_JOB)((uint8_t *)(pListEntry) - RT_UOFFSETOF(VBOXNETFLT_JOB, ListEntry)) )
    141141
    142142
     
    388388{
    389389    PINTNETSG pSG;
    390     NTSTATUS Status = vboxNetFltWinMemAlloc((PVOID*)&pSG, RT_OFFSETOF(INTNETSG, aSegs[cSegs]));
     390    NTSTATUS Status = vboxNetFltWinMemAlloc((PVOID*)&pSG, RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]));
    391391    if (Status == STATUS_SUCCESS)
    392392    {
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.h

    r69500 r73097  
    4141
    4242#define LIST_ENTRY_2_PACKET_INFO(pListEntry) \
    43     ( (PVBOXNETFLT_PACKET_INFO)((uint8_t *)(pListEntry) - RT_OFFSETOF(VBOXNETFLT_PACKET_INFO, ListEntry)) )
     43    ( (PVBOXNETFLT_PACKET_INFO)((uint8_t *)(pListEntry) - RT_UOFFSETOF(VBOXNETFLT_PACKET_INFO, ListEntry)) )
    4444
    4545#if !defined(VBOX_LOOPBACK_USEFLAGS) || defined(DEBUG_NETFLT_PACKETS)
    4646
    4747#define VBOX_SLE_2_PKTRSVD_PT(_pEntry) \
    48     ( (PVBOXNETFLT_PKTRSVD_PT)((uint8_t *)(_pEntry) - RT_OFFSETOF(VBOXNETFLT_PKTRSVD_PT, ListEntry)) )
     48    ( (PVBOXNETFLT_PKTRSVD_PT)((uint8_t *)(_pEntry) - RT_UOFFSETOF(VBOXNETFLT_PKTRSVD_PT, ListEntry)) )
    4949
    5050#define VBOX_SLE_2_SENDPACKET(_pEntry) \
    51     ( (PNDIS_PACKET)((uint8_t *)(VBOX_SLE_2_PKTRSVD_PT(_pEntry)) - RT_OFFSETOF(NDIS_PACKET, ProtocolReserved)) )
     51    ( (PNDIS_PACKET)((uint8_t *)(VBOX_SLE_2_PKTRSVD_PT(_pEntry)) - RT_UOFFSETOF(NDIS_PACKET, ProtocolReserved)) )
    5252
    5353#endif
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetLwf-win.cpp

    r72275 r73097  
    15971597    /* Allocate and initialize SG */
    15981598    PINTNETSG pSG = (PINTNETSG)NdisAllocateMemoryWithTagPriority(pModule->hFilter,
    1599                                                                  RT_OFFSETOF(INTNETSG, aSegs[cSegs]),
     1599                                                                 RT_UOFFSETOF_DYN(INTNETSG, aSegs[cSegs]),
    16001600                                                                 VBOXNETLWF_MEM_TAG,
    16011601                                                                 NormalPoolPriority);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette