| 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-2015 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 "miniupnpc_declspec.h" |
| 11 | /* for the definition of UNSIGNED_INTEGER */ |
| 12 | #include "miniupnpctypes.h" |
| 13 | |
| 14 | #ifdef __cplusplus |
| 15 | extern "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 | */ |
| 30 | typedef enum { PortMappingEltNone, |
| 31 | PortMappingEntry, NewRemoteHost, |
| 32 | NewExternalPort, NewProtocol, |
| 33 | NewInternalPort, NewInternalClient, |
| 34 | NewEnabled, NewDescription, |
| 35 | NewLeaseTime } portMappingElt; |
| 36 | |
| 37 | struct 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 | |
| 49 | struct PortMappingParserData { |
| 50 | struct PortMapping * l_head; /* list head */ |
| 51 | portMappingElt curelt; |
| 52 | }; |
| 53 | |
| 54 | MINIUPNP_LIBSPEC void |
| 55 | ParsePortListing(const char * buffer, int bufsize, |
| 56 | struct PortMappingParserData * pdata); |
| 57 | |
| 58 | MINIUPNP_LIBSPEC void |
| 59 | FreePortListing(struct PortMappingParserData * pdata); |
| 60 | |
| 61 | #ifdef __cplusplus |
| 62 | } |
| 63 | #endif |
| 64 | |
| 65 | #endif |
| 66 | |