📄 upnpdescgen.c
字号:
/* $Id: upnpdescgen.c,v 1.41 2007/03/06 00:58:51 nanard Exp $ *//* MiniUPnP project * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ * (c) 2006 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 "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\"?>\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 */static const struct XMLElt rootDesc[] ={/* 0 */ {root_device, INITHELPER(1,2)}, {"specVersion", INITHELPER(3,2)}, {"device", INITHELPER(5,13)}, {"/major", "1"}, {"/minor", "0"}, {"/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 */ {"serviceList", INITHELPER(57,1)}, {"deviceList", INITHELPER(18,1)}, {"/presentationURL", presentationurl}, /* recommended */ {"device", INITHELPER(19,13)}, {"/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}, {"serviceList", INITHELPER(32,1)}, {"deviceList", INITHELPER(38,1)}, {"service", INITHELPER(33,5)}, {"/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}, {"device", INITHELPER(39,12)}, {"/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)}, {"service", INITHELPER(52,5)}, {"/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}, {"service", INITHELPER(58,5)}, {"/serviceType", "urn:schemas-dummy-com:service:Dummy:1"}, {"/serviceId", "urn:dummy-com:serviceId:dummy1"}, {"/controlURL", "/dummy"}, {"/eventSubURL", "/dummy"}, {"/SCPDURL", DUMMY_PATH}, {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[] ={ {"NewRemoteHost", 1, 11}, {"NewExternalPort", 1, 12}, {"NewProtocol", 1, 14}, {"NewInternalPort", 1, 13}, {"NewInternalClient", 1, 15}, {"NewEnabled", 1, 9}, {"NewPortMappingDescription", 1, 16}, {"NewLeaseDuration", 1, 10}, {0, 0, 0}};static const struct argument GetExternalIPAddressArgs[] ={ {"NewExternalIPAddress", 2, 7}, {0, 0, 0}};static const struct argument DeletePortMappingArgs[] = { {"NewRemoteHost", 1, 11}, {"NewExternalPort", 1, 13}, {"NewProtocol", 1, 14}, {0, 0, 0}};static const struct argument SetConnectionTypeArgs[] ={ {"NewConnectionType", 1, 0}, {0, 0, 0}};static const struct argument GetConnectionTypeInfoArgs[] ={ {"NewConnectionType", 2, 0}, {"NewPossibleConnectionTypes", 2, 1}, {0, 0, 0}};static const struct argument GetStatusInfoArgs[] ={ {"NewConnectionStatus", 2, 2}, {"NewLastConnectionError", 2, 4}, {"NewUptime", 2, 3}, {0, 0, 0}};static const struct argument GetNATRSIPStatusArgs[] ={ {"NewRSIPAvailable", 2, 5}, {"NewNATEnabled", 2, 6}, {0, 0, 0}};static const struct argument GetGenericPortMappingEntryArgs[] ={ {"NewPortMappingIndex", 1, 8}, {"NewRemoteHost", 2, 11}, {"NewExternalPort", 2, 12}, {"NewProtocol", 2, 14}, {"NewInternalPort", 2, 13}, {"NewInternalClient", 2, 15}, {"NewEnabled", 2, 9}, {"NewPortMappingDescription", 2, 16}, {"NewLeaseDuration", 2, 10}, {0, 0, 0}};static const struct argument GetSpecificPortMappingEntryArgs[] ={ {"NewRemoteHost", 1, 11}, {"NewExternalPort", 1, 12}, {"NewProtocol", 1, 14}, {"NewInternalPort", 2, 13}, {"NewInternalClient", 2, 15}, {"NewEnabled", 2, 9}, {"NewPortMappingDescription", 2, 16}, {"NewLeaseDuration", 2, 10}, {0, 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[] ={ {"ConnectionType", 0, 0/*1*/}, /* required */ {"PossibleConnectionTypes", 0|0x80, 0, 14}, /* Required * Allowed values : Unconfigured / IP_Routed / IP_Bridged */ {"ConnectionStatus", 0|0x80, 0/*1*/, 18}, /* 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}, /* required. Default : empty string */ {"PortMappingNumberOfEntries", 2|0x80, 0}, /* 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, 0}};static const struct serviceDesc scpdWANIPCn ={ WANIPCnActions, WANIPCnVars };/* WANCfg.xml *//* See UPnP_IGD_WANCommonInterfaceConfig 1.0.pdf */static const struct argument GetCommonLinkPropertiesArgs[] ={ {"NewWANAccessType", 2, 0}, {"NewLayer1UpstreamMaxBitRate", 2, 1}, {"NewLayer1DownstreamMaxBitRate", 2, 2}, {"NewPhysicalLinkStatus", 2, 3}, {0, 0, 0}};static const struct argument GetTotalBytesSentArgs[] ={ {"NewTotalBytesSent", 2, 4}, {0, 0, 0}};static const struct argument GetTotalBytesReceivedArgs[] =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -