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
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