/* $Id: portlistingparse.h,v 1.4 2011/02/15 23:03:56 nanard Exp $ */ /* MiniUPnP project * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ * (c) 2011 Thomas Bernard * This software is subject to the conditions detailed * in the LICENCE file provided within the distribution */ #ifndef __PORTLISTINGPARSE_H__ #define __PORTLISTINGPARSE_H__ #include "declspec.h" /* for the definition of UNSIGNED_INTEGER */ #include "miniupnpctypes.h" #if defined(NO_SYS_QUEUE_H) || defined(WIN32) || defined(__HAIKU__) #include "bsdqueue.h" #else #include #endif #ifdef __cplusplus extern "C" { #endif /* sample of PortMappingEntry : 202.233.2.1 2345 TCP 2345 192.168.1.137 1 dooom 345 */ typedef enum { PortMappingEltNone, PortMappingEntry, NewRemoteHost, NewExternalPort, NewProtocol, NewInternalPort, NewInternalClient, NewEnabled, NewDescription, NewLeaseTime } portMappingElt; struct PortMapping { LIST_ENTRY(PortMapping) entries; UNSIGNED_INTEGER leaseTime; unsigned short externalPort; unsigned short internalPort; char remoteHost[64]; char internalClient[64]; char description[64]; char protocol[4]; unsigned char enabled; }; struct PortMappingParserData { LIST_HEAD(portmappinglisthead, PortMapping) head; portMappingElt curelt; }; LIBSPEC void ParsePortListing(const char * buffer, int bufsize, struct PortMappingParserData * pdata); LIBSPEC void FreePortListing(struct PortMappingParserData * pdata); #ifdef __cplusplus } #endif #endif