⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upnpdescgen.c

📁 miniupnpd可以在嵌入式linux中实现upnp功能
💻 C
📖 第 1 页 / 共 2 页
字号:
/* $Id: upnpdescgen.c,v 1.49 2008/07/10 09:18:35 nanard Exp $ *//* MiniUPnP project * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ * (c) 2006-2008 Thomas Bernard  * This software is subject to the conditions detailed * in the LICENCE file provided within the distribution */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "config.h"#ifdef ENABLE_EVENTS#include "getifaddr.h"#include "upnpredirect.h"#endif#include "upnpdescgen.h"#include "miniupnpdpath.h"#include "upnpglobalvars.h"#include "upnpdescstrings.h"static const char * const upnptypes[] ={	"string",	"boolean",	"ui2",	"ui4"};static const char * const upnpdefaultvalues[] ={	0,	"Unconfigured"};static const char * const upnpallowedvalues[] ={	0,		/* 0 */	"DSL",	/* 1 */	"POTS",	"Cable",	"Ethernet",	0,	"Up",	/* 6 */	"Down",	"Initializing",	"Unavailable",	0,	"TCP",	/* 11 */	"UDP",	0,	"Unconfigured",	/* 14 */	"IP_Routed",	"IP_Bridged",	0,	"Unconfigured",	/* 18 */	"Connecting",	"Connected",	"PendingDisconnect",	"Disconnecting",	"Disconnected",	0,	"ERROR_NONE",	/* 25 */	0,	"",		/* 27 */	0};static const char xmlver[] = 	"<?xml version=\"1.0\"?>\r\n";static const char root_service[] =	"scpd xmlns=\"urn:schemas-upnp-org:service-1-0\"";static const char root_device[] = 	"root xmlns=\"urn:schemas-upnp-org:device-1-0\"";/* root Description of the UPnP Device  * fixed to match UPnP_IGD_InternetGatewayDevice 1.0.pdf  * presentationURL is only "recommended" but the router doesn't appears * in "Network connections" in Windows XP if it is not present. */static const struct XMLElt rootDesc[] ={/* 0 */	{root_device, INITHELPER(1,2)},	{"specVersion", INITHELPER(3,2)},#if defined(ENABLE_L3F_SERVICE) || defined(HAS_DUMMY_SERVICE)	{"device", INITHELPER(5,13)},#else	{"device", INITHELPER(5,12)},#endif	{"/major", "1"},	{"/minor", "0"},/* 5 */	{"/deviceType", "urn:schemas-upnp-org:device:InternetGatewayDevice:1"},	{"/friendlyName", ROOTDEV_FRIENDLYNAME},	/* required */	{"/manufacturer", ROOTDEV_MANUFACTURER},		/* required *//* 8 */	{"/manufacturerURL", ROOTDEV_MANUFACTURERURL},	/* optional */	{"/modelDescription", ROOTDEV_MODELDESCRIPTION}, /* recommended */	{"/modelName", ROOTDEV_MODELNAME},	/* required */	{"/modelNumber", modelnumber},	{"/modelURL", ROOTDEV_MODELURL},	{"/serialNumber", serialnumber},	{"/UDN", uuidvalue},	/* required */#if defined(ENABLE_L3F_SERVICE) || defined(HAS_DUMMY_SERVICE)	{"serviceList", INITHELPER(57,1)},	{"deviceList", INITHELPER(18,1)},	{"/presentationURL", presentationurl},	/* recommended */#else	{"deviceList", INITHELPER(18,1)},	{"/presentationURL", presentationurl},	/* recommended */	{0,0},#endif/* 18 */	{"device", INITHELPER(19,13)},/* 19 */	{"/deviceType", "urn:schemas-upnp-org:device:WANDevice:1"}, /* required */	{"/friendlyName", WANDEV_FRIENDLYNAME},	{"/manufacturer", WANDEV_MANUFACTURER},	{"/manufacturerURL", WANDEV_MANUFACTURERURL},	{"/modelDescription" , WANDEV_MODELDESCRIPTION},	{"/modelName", WANDEV_MODELNAME},	{"/modelNumber", WANDEV_MODELNUMBER},	{"/modelURL", WANDEV_MODELURL},	{"/serialNumber", serialnumber},	{"/UDN", uuidvalue},	{"/UPC", WANDEV_UPC},/* 30 */	{"serviceList", INITHELPER(32,1)},	{"deviceList", INITHELPER(38,1)},/* 32 */	{"service", INITHELPER(33,5)},/* 33 */	{"/serviceType",			"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"},	/*{"/serviceId", "urn:upnp-org:serviceId:WANCommonInterfaceConfig"}, */	{"/serviceId", "urn:upnp-org:serviceId:WANCommonIFC1"}, /* required */	{"/controlURL", WANCFG_CONTROLURL},	{"/eventSubURL", WANCFG_EVENTURL},	{"/SCPDURL", WANCFG_PATH},/* 38 */	{"device", INITHELPER(39,12)},/* 39 */	{"/deviceType", "urn:schemas-upnp-org:device:WANConnectionDevice:1"},	{"/friendlyName", WANCDEV_FRIENDLYNAME},	{"/manufacturer", WANCDEV_MANUFACTURER},	{"/manufacturerURL", WANCDEV_MANUFACTURERURL},	{"/modelDescription", WANCDEV_MODELDESCRIPTION},	{"/modelName", WANCDEV_MODELNAME},	{"/modelNumber", WANCDEV_MODELNUMBER},	{"/modelURL", WANCDEV_MODELURL},	{"/serialNumber", serialnumber},	{"/UDN", uuidvalue},	{"/UPC", WANCDEV_UPC},	{"serviceList", INITHELPER(51,1)},/* 51 */	{"service", INITHELPER(52,5)},/* 52 */	{"/serviceType", "urn:schemas-upnp-org:service:WANIPConnection:1"},	/* {"/serviceId", "urn:upnp-org:serviceId:WANIPConnection"}, */	{"/serviceId", "urn:upnp-org:serviceId:WANIPConn1"},	{"/controlURL", WANIPC_CONTROLURL},	{"/eventSubURL", WANIPC_EVENTURL},	{"/SCPDURL", WANIPC_PATH},/* 57 */#ifdef HAS_DUMMY_SERVICE	{"service", INITHELPER(58,5)},/* 58 */	{"/serviceType", "urn:schemas-dummy-com:service:Dummy:1"},	{"/serviceId", "urn:dummy-com:serviceId:dummy1"},	{"/controlURL", "/dummy"},	{"/eventSubURL", "/dummy"},	{"/SCPDURL", DUMMY_PATH},#endif#ifdef ENABLE_L3F_SERVICE	{"service", INITHELPER(58,5)},/* 58 */	{"/serviceType", "urn:schemas-upnp-org:service:Layer3Forwarding:1"},	{"/serviceId", "urn:upnp-org:serviceId:Layer3Forwarding1"},	{"/controlURL", L3F_CONTROLURL}, /* The Layer3Forwarding service is only */	{"/eventSubURL", L3F_EVENTURL}, /* recommended, not mandatory */	{"/SCPDURL", L3F_PATH},#endif	{0, 0}};/* WANIPCn.xml *//* see UPnP_IGD_WANIPConnection 1.0.pdfstatic struct XMLElt scpdWANIPCn[] ={	{root_service, {INITHELPER(1,2)}},	{0, {0}}};*/static const struct argument AddPortMappingArgs[] ={	{1, 11},	{1, 12},	{1, 14},	{1, 13},	{1, 15},	{1, 9},	{1, 16},	{1, 10},	{0, 0}};static const struct argument GetExternalIPAddressArgs[] ={	{2, 7},	{0, 0}};static const struct argument DeletePortMappingArgs[] = {	{1, 11},	{1, 12},	{1, 14},	{0, 0}};static const struct argument SetConnectionTypeArgs[] ={	{1, 0},	{0, 0}};static const struct argument GetConnectionTypeInfoArgs[] ={	{2, 0},	{2, 1},	{0, 0}};static const struct argument GetStatusInfoArgs[] ={	{2, 2},	{2, 4},	{2, 3},	{0, 0}};static const struct argument GetNATRSIPStatusArgs[] ={	{2, 5},	{2, 6},	{0, 0}};static const struct argument GetGenericPortMappingEntryArgs[] ={	{1, 8},	{2, 11},	{2, 12},	{2, 14},	{2, 13},	{2, 15},	{2, 9},	{2, 16},	{2, 10},	{0, 0}};static const struct argument GetSpecificPortMappingEntryArgs[] ={	{1, 11},	{1, 12},	{1, 14},	{2, 13},	{2, 15},	{2, 9},	{2, 16},	{2, 10},	{0, 0}};static const struct action WANIPCnActions[] ={	{"AddPortMapping", AddPortMappingArgs}, /* R */	{"GetExternalIPAddress", GetExternalIPAddressArgs}, /* R */	{"DeletePortMapping", DeletePortMappingArgs}, /* R */	{"SetConnectionType", SetConnectionTypeArgs}, /* R */	{"GetConnectionTypeInfo", GetConnectionTypeInfoArgs}, /* R */	{"RequestConnection", 0}, /* R */	{"ForceTermination", 0}, /* R */	{"GetStatusInfo", GetStatusInfoArgs}, /* R */	{"GetNATRSIPStatus", GetNATRSIPStatusArgs}, /* R */	{"GetGenericPortMappingEntry", GetGenericPortMappingEntryArgs}, /* R */	{"GetSpecificPortMappingEntry", GetSpecificPortMappingEntryArgs}, /* R */	{0, 0}};/* R=Required, O=Optional */static const struct stateVar WANIPCnVars[] ={/* 0 */	{"ConnectionType", 0, 0/*1*/}, /* required */	{"PossibleConnectionTypes", 0|0x80, 0, 14, 15},	 /* Required	  * Allowed values : Unconfigured / IP_Routed / IP_Bridged */	{"ConnectionStatus", 0|0x80, 0/*1*/, 18, 20}, /* required */	 /* Allowed Values : Unconfigured / Connecting(opt) / Connected	  *                  PendingDisconnect(opt) / Disconnecting (opt)	  *                  Disconnected */	{"Uptime", 3, 0},	/* Required */	{"LastConnectionError", 0, 0, 25},	/* required : */	 /* Allowed Values : ERROR_NONE(req) / ERROR_COMMAND_ABORTED(opt)	  *                  ERROR_NOT_ENABLED_FOR_INTERNET(opt)	  *                  ERROR_USER_DISCONNECT(opt)	  *                  ERROR_ISP_DISCONNECT(opt)	  *                  ERROR_IDLE_DISCONNECT(opt)	  *                  ERROR_FORCED_DISCONNECT(opt)	  *                  ERROR_NO_CARRIER(opt)	  *                  ERROR_IP_CONFIGURATION(opt)	  *                  ERROR_UNKNOWN(opt) */	{"RSIPAvailable", 1, 0}, /* required */	{"NATEnabled", 1, 0},    /* required */	{"ExternalIPAddress", 0|0x80, 0, 0, 254}, /* required. Default : empty string */	{"PortMappingNumberOfEntries", 2|0x80, 0, 0, 253}, /* required >= 0 */	{"PortMappingEnabled", 1, 0}, /* Required */	{"PortMappingLeaseDuration", 3, 0}, /* required */	{"RemoteHost", 0, 0},   /* required. Default : empty string */	{"ExternalPort", 2, 0}, /* required */	{"InternalPort", 2, 0}, /* required */	{"PortMappingProtocol", 0, 0, 11}, /* required allowedValues: TCP/UDP */	{"InternalClient", 0, 0}, /* required */	{"PortMappingDescription", 0, 0}, /* required default: empty string */	{0, 0}};static const struct serviceDesc scpdWANIPCn ={ WANIPCnActions, WANIPCnVars };/* WANCfg.xml *//* See UPnP_IGD_WANCommonInterfaceConfig 1.0.pdf */static const struct argument GetCommonLinkPropertiesArgs[] ={	{2, 0},	{2, 1},	{2, 2},	{2, 3},	{0, 0}};static const struct argument GetTotalBytesSentArgs[] ={	{2, 4},	{0, 0}};static const struct argument GetTotalBytesReceivedArgs[] ={	{2, 5},	{0, 0}};static const struct argument GetTotalPacketsSentArgs[] ={	{2, 6},	{0, 0}};static const struct argument GetTotalPacketsReceivedArgs[] ={	{2, 7},	{0, 0}};static const struct action WANCfgActions[] ={	{"GetCommonLinkProperties", GetCommonLinkPropertiesArgs}, /* Required */	{"GetTotalBytesSent", GetTotalBytesSentArgs},             /* optional */	{"GetTotalBytesReceived", GetTotalBytesReceivedArgs},     /* optional */	{"GetTotalPacketsSent", GetTotalPacketsSentArgs},         /* optional */	{"GetTotalPacketsReceived", GetTotalPacketsReceivedArgs}, /* optional */	{0, 0}};/* See UPnP_IGD_WANCommonInterfaceConfig 1.0.pdf */static const struct stateVar WANCfgVars[] ={	{"WANAccessType", 0, 0, 1},	/* Allowed Values : DSL / POTS / Cable / Ethernet 	 * Default value : empty string */	{"Layer1UpstreamMaxBitRate", 3, 0},	{"Layer1DownstreamMaxBitRate", 3, 0},	{"PhysicalLinkStatus", 0|0x80, 0, 6, 6},	/*  allowed values : 	 *      Up / Down / Initializing (optional) / Unavailable (optionnal)	 *  no Default value 	 *  Evented */	{"TotalBytesSent", 3, 0},	   /* Optional */	{"TotalBytesReceived", 3, 0},  /* Optional */	{"TotalPacketsSent", 3, 0},    /* Optional */	{"TotalPacketsReceived", 3, 0},/* Optional */	/*{"MaximumActiveConnections", 2, 0},	// allowed Range value // OPTIONAL */	{0, 0}};static const struct serviceDesc scpdWANCfg ={ WANCfgActions, WANCfgVars };

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -