VirtualBox

Changeset 13746 in vbox


Ignore:
Timestamp:
Nov 3, 2008 1:15:07 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
38719
Message:

Solaris/VBoxNetFlt: netinfo.

File:
1 edited

Legend:

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

    r13730 r13746  
    31583158    {
    31593159#ifdef VBOXNETFLT_SOLARIS_USE_NETINFO
    3160         netstack_t *pNetStack = netstack_get_current();
    3161         if (pNetStack)
    3162         {
    3163             net_data_t pNetData = net_lookup_impl(NHF_INET, pNetStack);
    3164             if (pNetData)
     3160        mblk_t *pMsg = vboxNetFltSolarisMBlkFromSG(pThis, pSG, fDst);
     3161        if (RT_LIKELY(pMsg))
     3162        {
     3163            netstack_t *pNetStack = netstack_get_current();
     3164            if (pNetStack)
    31653165            {
    3166                 phy_if_t pInterface = net_phylookup(pNetData, pThis->szName);
    3167                 if (pInterface)
     3166                net_data_t pNetData = net_lookup_impl(NHF_INET, pNetStack);
     3167                if (pNetData)
    31683168                {
    3169                     net_inject_t InjectData;
    3170                     InjectData.ni_packet = pMsg;
    3171                     InjectData.ni_physical = pInterface;
    3172                     bzero(&InjectData.ni_addr, sizeof(InjectData.ni_addr));
    3173                     InjectData.ni_addr.ss_family = AF_INET;
    3174 
    3175                     /*
    3176                      * Queue out rather than direct out transmission.
    3177                      */
    3178                     int rc = net_inject(pNetData, NI_QUEUE_OUT, &InjectData);
    3179                     if (!rc)
    3180                         rc = VINF_SUCCESS;
     3169                    phy_if_t pInterface = net_phylookup(pNetData, pThis->szName);
     3170                    if (pInterface)
     3171                    {
     3172                        net_inject_t InjectData;
     3173                        InjectData.ni_packet = pMsg;
     3174                        InjectData.ni_physical = pInterface;
     3175                        bzero(&InjectData.ni_addr, sizeof(InjectData.ni_addr));
     3176                        InjectData.ni_addr.ss_family = AF_INET;
     3177
     3178                        /*
     3179                         * Queue out rather than direct out transmission.
     3180                         */
     3181                        int rc = net_inject(pNetData, NI_QUEUE_OUT, &InjectData);
     3182                        if (!rc)
     3183                            rc = VINF_SUCCESS;
     3184                        else
     3185                        {
     3186                            LogRel((DEVICE_NAME ":queuing IP packet for transmission failed. rc=%d\n", rc));
     3187                            rc = VERR_NET_IO_ERROR;
     3188                        }
     3189                    }
    31813190                    else
    31823191                    {
    3183                         LogRel((DEVICE_NAME ":queuing IP packet for transmission failed. rc=%d\n", rc));
     3192                        LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit failed to lookup physical interface.\n"));
    31843193                        rc = VERR_NET_IO_ERROR;
    31853194                    }
    31863195                }
    31873196                else
    3188                     LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit failed to lookup physical interface.\n"));
     3197                {
     3198                    LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit failed to get IP hooks.\n"));
     3199                    rc = VERR_NET_IO_ERROR;
     3200                }
     3201                netstack_rele(pNetStack);
    31893202            }
    31903203            else
    3191                 LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit failed to get IP hooks.\n"));
    3192             netstack_rele(pNetStack);
     3204            {
     3205                LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit failed to get current net stack.\n"));
     3206                rc = VERR_NET_IO_ERROR;
     3207            }
    31933208        }
    31943209        else
    3195             LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit failed to get current net stack.\n"));
     3210        {
     3211            LogRel((DEVICE_NAME ":vboxNetFltPortOsXmit vboxNetFltSolarisMBlkFromSG failed.\n"));
     3212            rc = VERR_NO_MEMORY;
     3213        }
    31963214#else
    31973215        vboxnetflt_promisc_stream_t *pPromiscStream = ASMAtomicUoReadPtr((void * volatile *)&pThis->u.s.pvPromiscStream);
Note: See TracChangeset for help on using the changeset viewer.

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