Kawe Mazidjatari b3a68ed095 Add EABase, EAThread and DirtySDK to R5sdk
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
2024-04-05 18:29:03 +02:00

91 lines
2.6 KiB
C

/*H********************************************************************************/
/*!
\File protoupnp.h
\Description
Implements a simple UPnP client, designed specifically to talk to a UPnP
router and open up a firewall port for peer-peer communication with a
remote client.
\Copyright
Copyright (c) 2005 Electronic Arts Inc.
\Version 03/23/2005 (jbrookes) First Version
*/
/********************************************************************************H*/
#ifndef _protoupnp_h
#define _protoupnp_h
/*!
\Moduledef ProtoUpnp ProtoUpnp
\Modulemember Proto
*/
//@{
/*** Include files ****************************************************************/
#include "DirtySDK/platform.h"
/*** Defines **********************************************************************/
// status bits for ProtoUpnpStatus('stat')
#define PROTOUPNP_STATUS_DISCOVERED (1) //!< discovered a upnp device
#define PROTOUPNP_STATUS_DESCRIBED (2) //!< described a upnp device
#define PROTOUPNP_STATUS_GOTEXTADDR (4) //!< got external address for device
#define PROTOUPNP_STATUS_ADDPORTMAP (8) //!< successfully added port mapping
#define PROTOUPNP_STATUS_DELPORTMAP (16) //!< successfully deleted port mapping
#define PROTOUPNP_STATUS_FNDPORTMAP (32) //!< found existing port mapping
/*** Macros ***********************************************************************/
/*** Type Definitions *************************************************************/
//! protoupnp macro element definition
typedef struct ProtoUpnpMacroT
{
int32_t iControl;
int32_t iValue;
int32_t iValue2;
void *pValue;
} ProtoUpnpMacroT;
//! opaque module ref
typedef struct ProtoUpnpRefT ProtoUpnpRefT;
/*** Variables ********************************************************************/
/*** Functions ********************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
// create the module
DIRTYCODE_API ProtoUpnpRefT *ProtoUpnpCreate(void);
// get module ref
DIRTYCODE_API ProtoUpnpRefT *ProtoUpnpGetRef(void);
// destroy the module
DIRTYCODE_API void ProtoUpnpDestroy(ProtoUpnpRefT *pProtoUpnp);
// get module status
DIRTYCODE_API int32_t ProtoUpnpStatus(ProtoUpnpRefT *pProtoUpnp, int32_t iSelect, void *pBuf, int32_t iBufSize);
// protoupnp control
DIRTYCODE_API int32_t ProtoUpnpControl(ProtoUpnpRefT *pProtoUpnp, int32_t iControl, int32_t iValue, int32_t iValue2, const void *pValue);
// update the module
DIRTYCODE_API void ProtoUpnpUpdate(ProtoUpnpRefT *pProtoUpnp);
#ifdef __cplusplus
};
#endif
//@}
#endif // _protoupnp_h