module miniupnpc.igd_desc_parse;

/* Structure to store the result of the parsing of UPnP
 * descriptions of Internet Gateway Devices */
enum MINIUPNPC_URL_MAXSIZE = 128;

struct IGDdatas_service {
	char[MINIUPNPC_URL_MAXSIZE] controlurl;
	char[MINIUPNPC_URL_MAXSIZE] eventsuburl;
	char[MINIUPNPC_URL_MAXSIZE] scpdurl;
	char[MINIUPNPC_URL_MAXSIZE] servicetype;
	/*char devicetype[MINIUPNPC_URL_MAXSIZE];*/
}

struct IGDdatas {
	char[MINIUPNPC_URL_MAXSIZE] cureltname;
	char[MINIUPNPC_URL_MAXSIZE] urlbase;
	char[MINIUPNPC_URL_MAXSIZE] presentationurl;
	int level;
	/*int state;*/
	/* "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" */
	IGDdatas_service CIF;
	/* "urn:schemas-upnp-org:service:WANIPConnection:1"
	 * "urn:schemas-upnp-org:service:WANPPPConnection:1" */
	IGDdatas_service first;
	/* if both WANIPConnection and WANPPPConnection are present */
	IGDdatas_service second;
	/* "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" */
	IGDdatas_service IPv6FC;
	/* tmp */
	IGDdatas_service tmp;
}

extern(C) nothrow @nogc:

void IGDstartelt(void*, const char*, int);
void IGDendelt(void*, const char*, int);
void IGDdata(void*, const char*, int);
void printIGD(IGDdatas*);