1/* $Id: portlistingparse.h,v 1.10 2014/11/01 10:37:32 nanard Exp $ */ 2/* MiniUPnP project 3 * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ 4 * (c) 2011-2012 Thomas Bernard 5 * This software is subject to the conditions detailed 6 * in the LICENCE file provided within the distribution */ 7#ifndef PORTLISTINGPARSE_H_INCLUDED 8#define PORTLISTINGPARSE_H_INCLUDED 9 10#include "declspec.h" 11/* for the definition of UNSIGNED_INTEGER */ 12#include "miniupnpctypes.h" 13 14#ifdef __cplusplus 15extern "C" { 16#endif 17 18/* sample of PortMappingEntry : 19 <p:PortMappingEntry> 20 <p:NewRemoteHost>202.233.2.1</p:NewRemoteHost> 21 <p:NewExternalPort>2345</p:NewExternalPort> 22 <p:NewProtocol>TCP</p:NewProtocol> 23 <p:NewInternalPort>2345</p:NewInternalPort> 24 <p:NewInternalClient>192.168.1.137</p:NewInternalClient> 25 <p:NewEnabled>1</p:NewEnabled> 26 <p:NewDescription>dooom</p:NewDescription> 27 <p:NewLeaseTime>345</p:NewLeaseTime> 28 </p:PortMappingEntry> 29 */ 30typedef enum { PortMappingEltNone, 31 PortMappingEntry, NewRemoteHost, 32 NewExternalPort, NewProtocol, 33 NewInternalPort, NewInternalClient, 34 NewEnabled, NewDescription, 35 NewLeaseTime } portMappingElt; 36 37struct PortMapping { 38 struct PortMapping * l_next; /* list next element */ 39 UNSIGNED_INTEGER leaseTime; 40 unsigned short externalPort; 41 unsigned short internalPort; 42 char remoteHost[64]; 43 char internalClient[64]; 44 char description[64]; 45 char protocol[4]; 46 unsigned char enabled; 47}; 48 49struct PortMappingParserData { 50 struct PortMapping * l_head; /* list head */ 51 portMappingElt curelt; 52}; 53 54MINIUPNP_LIBSPEC void 55ParsePortListing(const char * buffer, int bufsize, 56 struct PortMappingParserData * pdata); 57 58MINIUPNP_LIBSPEC void 59FreePortListing(struct PortMappingParserData * pdata); 60 61#ifdef __cplusplus 62} 63#endif 64 65#endif 66