VirtualBox
Show
Ignore:
Timestamp:
10/13/07 01:21:09 (1 year ago)
Author:
vboxsync
Message:

internal networking fixes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/intnet.h

    r4071 r5283  
    2020#include <VBox/types.h> 
    2121#include <VBox/stam.h> 
     22#include <VBox/sup.h> 
    2223#include <iprt/assert.h> 
    2324#include <iprt/asm.h> 
     
    2526__BEGIN_DECLS 
    2627 
     28 
     29/** Pointer to an internal network ring-0 instance. */ 
     30typedef struct INTNET *PINTNET; 
    2731 
    2832/** 
     
    164168    Assert(pHdr->u16Type == INTNETHDR_TYPE_FRAME); 
    165169    Assert(off < pBuf->cbBuf); 
    166     Assert(off + pHdr->cbFrame < pBuf->cbBuf); 
     170    Assert(off + pHdr->cbFrame <= pBuf->cbBuf); 
    167171#endif 
    168172    NOREF(pBuf); 
     
    198202 
    199203 
    200  
    201 /** 
    202  * The packed down arguments of INTNETR0Open(). 
    203  * @see INTNETR0Open() 
    204  */ 
    205 typedef struct INTNETOPENARGS 
    206 
     204/** 
     205 * Request buffer for INTNETR0OpenReq / VMMR0_DO_INTNET_OPEN. 
     206 * @see INTNETR0Open. 
     207 */ 
     208typedef struct INTNETOPENREQ 
     209
     210    /** The request header. */ 
     211    SUPVMMR0REQHDR  Hdr; 
    207212    /** The network name. (input) */ 
    208213    char            szNetwork[INTNET_MAX_NETWORK_NAME]; 
     
    215220    /** The handle to the network interface. (output) */ 
    216221    INTNETIFHANDLE  hIf; 
    217 } INTNETOPENARGS; 
    218 /** Pointer to an INTNETR0Open() argument package. */ 
    219 typedef INTNETOPENARGS *PINTNETOPENARGS; 
    220  
    221  
    222 /** 
    223  * The packed down arguments of INTNETR0IfClose(). 
    224  * @see INTNETR0IfClose() 
    225  */ 
    226 typedef struct INTNETCLOSEARGS 
    227 
     222} INTNETOPENREQ; 
     223/** Pointer to an INTNETR0OpenReq / VMMR0_DO_INTNET_OPEN request buffer. */ 
     224typedef INTNETOPENREQ *PINTNETOPENREQ; 
     225 
     226INTNETR0DECL(int) INTNETR0OpenReq(PINTNET pIntNet, PSUPDRVSESSION pSession, PINTNETOPENREQ pReq); 
     227 
     228 
     229/** 
     230 * Request buffer for INTNETR0IfCloseReq / VMMR0_DO_INTNET_IF_CLOSE. 
     231 * @see INTNETR0IfClose. 
     232 */ 
     233typedef struct INTNETIFCLOSEREQ 
     234
     235    /** The request header. */ 
     236    SUPVMMR0REQHDR  Hdr; 
    228237    /** The handle to the network interface. */ 
    229238    INTNETIFHANDLE  hIf; 
    230 } INTNETIFCLOSEARGS; 
    231 /** Pointer to an INTNETR0Open() argument package. */ 
    232 typedef INTNETIFCLOSEARGS *PINTNETIFCLOSEARGS; 
    233  
    234  
    235 /** 
    236  * Argument buffer for calling INTNETR0IfGetRing3Buffer(). 
    237  * @see INTNETR0IfGetRing3Buffer() 
    238  */ 
    239 typedef struct INTNETIFGETRING3BUFFERARGS 
    240 
     239} INTNETIFCLOSEREQ; 
     240/** Pointer to an INTNETR0IfCloseReq / VMMR0_DO_INTNET_IF_CLOSE request buffer. */ 
     241typedef INTNETIFCLOSEREQ *PINTNETIFCLOSEREQ; 
     242 
     243INTNETR0DECL(int) INTNETR0IfCloseReq(PINTNET pIntNet, PINTNETIFCLOSEREQ pReq); 
     244 
     245 
     246/** 
     247 * Request buffer for INTNETR0IfGetRing3BufferReq / VMMR0_DO_INTNET_IF_GET_RING3_BUFFER. 
     248 * @see INTNETR0IfGetRing3Buffer. 
     249 */ 
     250typedef struct INTNETIFGETRING3BUFFERREQ 
     251
     252    /** The request header. */ 
     253    SUPVMMR0REQHDR          Hdr; 
    241254    /** Handle to the interface. */ 
    242     INTNETIFHANDLE  hIf; 
     255    INTNETIFHANDLE          hIf; 
    243256    /** The pointer to the ring3 buffer. (output) */ 
    244     PINTNETBUF      pRing3Buf; 
    245 } INTNETIFGETRING3BUFFERARGS; 
    246 /** Pointer to an INTNETR0IfGetRing3Buffer() argument package. */ 
    247 typedef INTNETIFGETRING3BUFFERARGS *PINTNETIFGETRING3BUFFERARGS; 
    248  
    249 /** 
    250  * Argument buffer for calling INTNETR0IfSetPromiscuousMode(). 
    251  * @see INTNETR0IfSetPromiscuousMode() 
    252  */ 
    253 typedef struct INTNETIFSETPROMISCUOUSMODEARGS 
    254 
     257    R3PTRTYPE(PINTNETBUF)   pRing3Buf; 
     258} INTNETIFGETRING3BUFFERREQ; 
     259/** Pointer to an INTNETR0IfGetRing3BufferReq / VMMR0_DO_INTNET_IF_GET_RING3_BUFFER request buffer. */ 
     260typedef INTNETIFGETRING3BUFFERREQ *PINTNETIFGETRING3BUFFERREQ; 
     261 
     262INTNETR0DECL(int) INTNETR0IfGetRing3BufferReq(PINTNET pIntNet, PINTNETIFGETRING3BUFFERREQ pReq); 
     263 
     264 
     265/** 
     266 * Request buffer for INTNETR0IfSetPromiscuousModeReq / VMMR0_DO_INTNET_IF_SET_PROMISCUOUS_MODE. 
     267 * @see INTNETR0IfSetPromiscuousMode. 
     268 */ 
     269typedef struct INTNETIFSETPROMISCUOUSMODEREQ 
     270
     271    /** The request header. */ 
     272    SUPVMMR0REQHDR  Hdr; 
    255273    /** Handle to the interface. */ 
    256274    INTNETIFHANDLE  hIf; 
    257275    /** The new promiscuous mode. */ 
    258276    bool            fPromiscuous; 
    259 } INTNETIFSETPROMISCUOUSMODEARGS; 
    260 /** Pointer to an INTNETR0IfSetPromiscuousMode() argument package. */ 
    261 typedef INTNETIFSETPROMISCUOUSMODEARGS *PINTNETIFSETPROMISCUOUSMODEARGS; 
    262  
    263  
    264 /** 
    265  * Argument buffer for calling INTNETR0IfSend(). 
    266  * @see INTNETR0IfSend() 
    267  */ 
    268 typedef struct INTNETIFSENDARGS 
    269 
     277} INTNETIFSETPROMISCUOUSMODEREQ; 
     278/** Pointer to an INTNETR0IfSetPromiscuousModeReq / VMMR0_DO_INTNET_IF_SET_PROMISCUOUS_MODE request buffer. */ 
     279typedef INTNETIFSETPROMISCUOUSMODEREQ *PINTNETIFSETPROMISCUOUSMODEREQ; 
     280 
     281INTNETR0DECL(int) INTNETR0IfSetPromiscuousModeReq(PINTNET pIntNet, PINTNETIFSETPROMISCUOUSMODEREQ pReq); 
     282 
     283 
     284/** 
     285 * Request buffer for INTNETR0IfSendReq / VMMR0_DO_INTNET_IF_SEND. 
     286 * @see INTNETR0IfSend. 
     287 */ 
     288typedef struct INTNETIFSENDREQ 
     289
     290    /** The request header. */ 
     291    SUPVMMR0REQHDR  Hdr; 
    270292    /** Handle to the interface. */ 
    271293    INTNETIFHANDLE  hIf; 
    272     /** Pointer to the frame. (Optional) */ 
    273     const void     *pvFrame; 
    274     /** The size of the frame. (Optional) */ 
    275     uint32_t        cbFrame; 
    276 } INTNETIFSENDARGS; 
     294} INTNETIFSENDREQ; 
    277295/** Pointer to an INTNETR0IfSend() argument package. */ 
    278 typedef INTNETIFSENDARGS *PINTNETIFSENDARGS; 
    279  
    280  
    281 /** 
    282  * Argument buffer for calling INTNETR0IfWait(). 
    283  * @see INTNETR0IfWait() 
    284  */ 
    285 typedef struct INTNETIFWAITARGS 
    286 
     296typedef INTNETIFSENDREQ *PINTNETIFSENDREQ; 
     297 
     298INTNETR0DECL(int) INTNETR0IfSendReq(PINTNET pIntNet, PINTNETIFSENDREQ pReq); 
     299 
     300 
     301/** 
     302 * Request buffer for INTNETR0IfWaitReq / VMMR0_DO_INTNET_IF_WAIT. 
     303 * @see INTNETR0IfWait. 
     304 */ 
     305typedef struct INTNETIFWAITREQ 
     306
     307    /** The request header. */ 
     308    SUPVMMR0REQHDR  Hdr; 
    287309    /** Handle to the interface. */ 
    288310    INTNETIFHANDLE  hIf; 
    289311    /** The number of milliseconds to wait. */ 
    290     unsigned        cMillies; 
    291 } INTNETSENDARGS; 
    292 /** Pointer to an INTNETR0IfWait() argument package. */ 
    293 typedef INTNETIFWAITARGS *PINTNETIFWAITARGS; 
     312    uint32_t        cMillies; 
     313} INTNETIFWAITREQ; 
     314/** Pointer to an INTNETR0IfWaitReq / VMMR0_DO_INTNET_IF_WAIT request buffer. */ 
     315typedef INTNETIFWAITREQ *PINTNETIFWAITREQ; 
     316 
     317INTNETR0DECL(int) INTNETR0IfWaitReq(PINTNET pIntNet, PINTNETIFWAITREQ pReq); 
    294318 
    295319 
     
    298322 * @{ 
    299323 */ 
    300  
    301 /** Pointer to an internal network ring-0 instance. */ 
    302 typedef struct INTNET *PINTNET; 
    303324 
    304325/** 
     
    358379 * @param   ppRing3Buf  Where to store the address of the ring-3 mapping. 
    359380 */ 
    360 INTNETR0DECL(int) INTNETR0IfGetRing3Buffer(PINTNET pIntNet, INTNETIFHANDLE hIf, PINTNETBUF *ppRing3Buf); 
     381INTNETR0DECL(int) INTNETR0IfGetRing3Buffer(PINTNET pIntNet, INTNETIFHANDLE hIf, R3PTRTYPE(PINTNETBUF) *ppRing3Buf); 
    361382 
    362383/** 
     
    396417 *                      used if indefinite wait is desired. 
    397418 */ 
    398 INTNETR0DECL(int) INTNETR0IfWait(PINTNET pIntNet, INTNETIFHANDLE hIf, unsigned cMillies); 
     419INTNETR0DECL(int) INTNETR0IfWait(PINTNET pIntNet, INTNETIFHANDLE hIf, uint32_t cMillies); 
    399420 
    400421/** @} */ 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy