http://downloads.netgear.com/files/GPL/GPL_Source_V361j_DM111PSP_series_consumer_rele...
[bcm963xx.git] / userapps / broadcom / cfm / inc / psixml.h
index 2c73239..956f9aa 100755 (executable)
@@ -1,15 +1,17 @@
 /*****************************************************************************
-//
-//  Copyright (c) 2004  Broadcom Corporation
-//  All Rights Reserved
-//  No portions of this material may be reproduced in any form without the
-//  written permission of:
-//          Broadcom Corporation
-//          16215 Alton Parkway
-//          Irvine, California 92619
-//  All information contained in this document is Broadcom Corporation
-//  company private, proprietary, and trade secret.
-//
+# <:copyright-gpl
+# Copyright 2004 Broadcom Corp. All Rights Reserved.
+# This program is free software; you can distribute it and/or modify it
+# under the terms of the GNU General Public License (Version 2) as
+# published by the Free Software Foundation.
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+# :>
 ******************************************************************************
 //
 //  Filename:       psixml.h
 
 #include "bcmtypes.h"
 #include "psidefs.h"
+#include "objectdefs.h"
 #include "wldefs.h"
 #include "nanoxml.h"
 
-#define PSX_NAME_LEN                   16
+#define PSX_NAME_LEN                   24
 #define PSX_MAGIC_LEN                  16
 #define PSX_MAGIC_VALUE                "-$-PSI-$02.12r01"
 #define PSX_CRC32_INIT_VALUE 0xffffffff /* Initial CRC32 checksum value */
 #define PSX_CRC32_GOOD_VALUE 0xdebb20e3 /* Good final CRC32 checksum value */
-#define PSX_STR_LEN                    50 
+#define PSX_STR_LEN                    50
 #define PSX_VERIFY                     1
 #define PSX_STORE                      0
 #define PSX_TABLE_TYPE                 2
 #define SATURDAY      0x20
 #define SUNDAY        0x40
 
-/* important limitation: when adding the appName or objectName in either direction, it is 
-important not to have appName and objName having the same prefix.   The table entry search
-only compare strings up to the prefix length, case not sensitive, to cover situation
-such as APP_ID wan_vpi_vci, only wan is searched in the table.    Therefore, it is not
-okay to have Lan as the appId, and objectName as lanSomethingSomething.    The search
-entry would think lanSomethingSomething is an appId name. */
-
-#define APPNAME_WAN_PREFIX           "wan"
-#define APPNAME_IPSRV_PREFIX         "ipsrv"
-#define APPNAME_PPPSRV_PREFIX        "pppsrv"
-#define APPNAME_PPP_FORMAT           "pppsrv_%d_%d"
-#define APPNAME_IPSRV_ENTRY_FORMAT   "ipsrv_%d_%d"
-#define OBJNAME_LAN_ENTRY_FORMAT     "entry%d"   /* cannot be lan, need to change */
-#define OBJNAME_PPP_ENTRY_FORMAT     "ppp_conId%d"
-#define OBJNAME_IPSRV_ENTRY_FORMAT   "dhcpc_conId%d"
-#define OBJNAME_WAN_ENTRY_FORMAT     "entry%d"   /* cannot be wan, need to change */
-#define OBJNAME_GEN_ENTRY_FORMAT     "entry" 
-
 #define XML_PSI_START_TAG      "<psitree>"
 #define XML_PSI_END_TAG        "</psitree>"
 
 #define XML_PORT_RANGE_MIN     1
 #define XML_PORT_RANGE_MAX     65535
-#define XML_MAX_SNMP_STR_LEN   15
+//#define XML_MAX_SNMP_STR_LEN   15
+#define XML_MAX_SNMP_STR_LEN   64//Andy exten to 64
 #define XML_MAX_TOD_ENTRY      16
 
 /* string  */
 #define PSX_ATTRNAME_SET       1
 #define PSX_ATTRSTR_SET        2
 
+/* object and attribute names definitions */
+#define PSX_ATTR_STATE             "state"
+
 typedef enum {
    PSX_STS_OK = 0,
    PSX_STS_ERR_GENERAL,
@@ -89,12 +78,15 @@ typedef enum {
    PSX_STS_ERR_FIND_HDL_FNC,
    PSX_STS_ERR_FATAL,
    PSX_STS_ERR_MILD
+#if defined(SUPPORT_PARTCONF)
+   ,PSX_STS_RESTORE_SAME
+#endif
 } PSX_STATUS;
 
 /* internal callback statemachine */
 typedef enum {
    state_start,
-   state_psi_begin,  
+   state_psi_begin,
    state_psi_end
 } xml_state;
 
@@ -110,6 +102,9 @@ typedef struct xmlParseState {
    int tableIndex;
    PSX_STATUS errorFlag;
    int verify;                    /* verify=1 verifcation only, verfify=0 conversion only */
+#if defined(SUPPORT_PARTCONF)
+   int restore;                      /*restore=1 do restore configure*/
+#endif
 } XML_PARSE_STATE, *pXML_PARSE_STATE;
 
 typedef PSX_STATUS (*PSX_SET_OBJ_FNC) (FILE *file, const char *appName, const UINT16 id,
@@ -140,66 +135,6 @@ typedef struct {
    PSX_OBJ_FNC endObjFnc;       /* end of object, do verification/storeToPSI, oresource deallocated */
 } PSX_OBJ_ITEM, *PPSX_OBJ_ITEM;
 
-/* object and attribute names definitions */
-#define PSX_ATTR_STATE             "state"
-/* system info */
-#define PSX_OBJ_SYS_USER_NAME      "sysUserName"
-#define PSX_OBJ_SYS_PASSWORD       "sysPassword"
-#define PSX_OBJ_SPT_USER_NAME      "sptUserName"
-#define PSX_OBJ_SPT_PASSWORD       "sptPassword"
-#define PSX_OBJ_USR_USER_NAME      "usrUserName"
-#define PSX_OBJ_USR_PASSWORD       "usrPassword"
-#define PSX_OBJ_DEF_GATEWAY        "defaultGateway"
-#define PSX_OBJ_DNS                "dns"
-#define PSX_OBJ_SYSLOG             "sysLog"
-#define PSX_OBJ_SNMP               "snmp"
-#define PSX_OBJ_PROTOCOL           "protocol"
-#define PSX_OBJ_ETHCFG             "ethCfg"
-#define PSX_OBJ_MGCP_CFG           "mgcpCfg"
-#define PSX_OBJ_SIP_CFG            "sipCfg"
-
-
-#define PSX_ATTR_DNS_PRIMARY       "primary"
-#define PSX_ATTR_DNS_SECONDARY     "secondary"
-#define PSX_ATTR_DNS_DYNAMIC       "dynamic"
-
-#define PSX_ATTR_SYSLOG_DISPLAY_LEVEL "displayLevel"
-#define PSX_ATTR_SYSLOG_LOG_LEVEL     "logLevel"
-#define PSX_ATTR_SYSLOG_OPTION        "option"
-#define PSX_ATTR_SYSLOG_SERVER_IP     "serverIP"
-#define PSX_ATTR_SYSLOG_SERVER_PORT   "serverPort"
-
-#define PSX_ATTR_PMAP_IFC_NAME        "pmapIfName"
-#define PSX_ATTR_PMAP_IFC_STATUS      "pmapIfcStatus"
-
-#define PSX_ATTR_VOICE_MGCP_TAG            "mgcpCfg"
-#define PSX_ATTR_VOICE_MGCP_CA_ADDR        "caAddr"
-#define PSX_ATTR_VOICE_MGCP_GW_NAME        "gwName"
-#define PSX_ATTR_VOICE_MGCP_IF_NAME        "ifName"
-#define PSX_ATTR_VOICE_MGCP_PREF_CODEC     "prefCodec"
-#define PSX_ATTR_VOICE_SIP_TAG             "sipCfg"
-#define PSX_ATTR_VOICE_SIP_PROXY_ADDR      "proxyAddr"
-#define PSX_ATTR_VOICE_SIP_PROXY_PORT      "proxyPort"
-#define PSX_ATTR_VOICE_SIP_REGISTRAR_ADDR  "registrarAddr"
-#define PSX_ATTR_VOICE_SIP_REGISTRAR_PORT  "registrarPort"
-#define PSX_ATTR_VOICE_SIP_LOG_ADDR        "logAddr"
-#define PSX_ATTR_VOICE_SIP_LOG_PORT        "logPort"
-#define PSX_ATTR_VOICE_SIP_EXT1            "ext1"
-#define PSX_ATTR_VOICE_SIP_PASSWORD1       "password1"
-#define PSX_ATTR_VOICE_SIP_EXT2            "ext2"
-#define PSX_ATTR_VOICE_SIP_PASSWORD2       "password2"
-#define PSX_ATTR_VOICE_SIP_EXT3            "ext3"
-#define PSX_ATTR_VOICE_SIP_PASSWORD3       "password3"
-#define PSX_ATTR_VOICE_SIP_EXT4            "ext4"
-#define PSX_ATTR_VOICE_SIP_PASSWORD4       "password4"
-#define PSX_ATTR_VOICE_SIP_IF_NAME         "ifName"
-
-#define PSX_ATTR_ETH_CFG_SPEED        "speed"
-#define PSX_ATTR_ETH_CFG_TYPE         "type"
-#define PSX_ATTR_ETH_CFG_MTU          "MTU"
-#define PSX_ATTR_IPP_MAKE             "make"
-#define PSX_ATTR_IPP_DEV              "dev"
-#define PSX_ATTR_IPP_NAME             "name"
 #if defined(__cplusplus)
 extern "C" {
 #endif
@@ -238,6 +173,10 @@ extern PSX_STATUS xmlSetPppNode(FILE* file, const char *appName, const UINT16 id
 extern PSX_STATUS xmlSetDdnsNode(FILE* file, const char *appName, const UINT16 id,
                          const PSI_VALUE value, const UINT16 length);
 
+extern void xmlSetTr69cAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                const UINT16 length);
+extern void xmlSetMgmtLockAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                const UINT16 length);
 extern void xmlSetStrObjAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
                       const UINT16 length);
 extern void xmlSetSysLogAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
@@ -306,7 +245,11 @@ extern void xmlSetDdnsAttr(FILE *file, const char *name, const UINT16 id, const
                    const UINT16 length);
 extern void xmlSetEthAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
                   const UINT16 length);
+#if defined(SUPPORT_PARTCONF)
+extern PSX_STATUS xmlParse(char *xmlBuffer, int xmlSize, int verify, int restore);
+#else
 extern PSX_STATUS xmlParse(char *xmlBuffer, int xmlSize, int verify);
+#endif
 extern void xmlTagBegin(nxml_t handle, const char *tag_name, unsigned len);
 extern void xmlTagEnd(nxml_t handle, const char *tag_name, unsigned len);
 extern void xmlAttrBegin(nxml_t handle, const char *tag_name, unsigned len);
@@ -326,6 +269,12 @@ extern PSX_STATUS xmlGetSysUserNameAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlGetSysPasswordAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlStartSysUserNamePasswordObj(char *appName, char *objName);
 extern PSX_STATUS xmlEndSysUserNamePasswordObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetTr69cAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartTr69cObj(char *appName, char *objName);
+extern PSX_STATUS xmlEndTr69cObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetMgmtLockAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartMgmtLockObj(char *appName, char *objName);
+extern PSX_STATUS xmlEndMgmtLockObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetDftGwAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlStartDftGwObj(char *appName, char *objName);
 extern PSX_STATUS xmlEndDftGwObj(char *appName, char *objName);
@@ -376,6 +325,7 @@ extern PSX_STATUS xmlEndMacFilterObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetMacFilterEntryAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlEndMacFilterEntryObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetQosClsAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartQosClsEntryObj(char *appName, char *objName);
 extern PSX_STATUS xmlEndQosClsObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetQosClsEntryAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlEndQosClsEntryObj(char *appName, char *objName);
@@ -418,6 +368,11 @@ extern PSX_STATUS xmlGetWirelessMacFilterEntryAttr(char *attrName, char* attrVal
 extern PSX_STATUS xmlEndWirelessMacFilterEntryObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetWirelessMacFilterAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlEndWirelessMacFilterObj(char *appName, char *objName);
+extern void xmlSetWirelessMssidVarsAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value, const UINT16 length);
+extern PSX_STATUS xmlGetWirelessMssidVarsAttr(char * attrName, char * attrValue);
+extern PSX_STATUS xmlEndWirelessMssidVarsObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetWirelessMssidVarsEntryAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndWirelessMssidVarsEntryObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetRouteObjNode(char *appName, char *objName, char *attrName, char* attrValue);
 extern PSX_STATUS xmlStartRouteObjNode(char *appName, char *objName);
 extern PSX_STATUS xmlEndRouteObjNode(char *appName, char *objName);
@@ -479,22 +434,46 @@ extern PSX_STATUS xmlGetToDAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlEndToDObj(char *appName, char *objName);
 extern PSX_STATUS xmlGetToDEntryAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlEndToDEntryObj(char *appName, char *objName);
+
 extern PSX_STATUS xmlSetVoiceNode(FILE* file, const char *appName, const UINT16 id,
                                   const PSI_VALUE value, const UINT16 length);
 
 extern PSX_STATUS xmlGetVoiceNode(char *appName, char *objName, char *attrName, char* attrValue);
 extern PSX_STATUS xmlStartVoiceNode(char *appName, char *objName);
 extern PSX_STATUS xmlEndVoiceNode(char *appName, char *objName);
-extern void  xmlSetMgcpAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
-                            const UINT16 length);
-extern void  xmlSetSipAttr(FILE* file, const char *appName, const UINT16 id,
+#if defined(IP_RV_SIP)
+  extern void  xmlSetRvSipAttr(FILE* file, const char *appName, const UINT16 id,
+                           const PSI_VALUE value, const UINT16 length);
+  extern PSX_STATUS xmlStartRvSipObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlEndRvSipObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlGetRvSipAttr(char *attrName, char* attrValue);
+  extern void  xmlSetRvSipExtAttr(FILE* file, const char *appName, const UINT16 id,
                            const PSI_VALUE value, const UINT16 length);
-extern PSX_STATUS xmlStartMgcpObjNode(char *appName, char *objName);
-extern PSX_STATUS xmlEndMgcpObjNode(char *appName, char *objName);
-extern PSX_STATUS xmlGetMgcpAttr(char *attrName, char* attrValue);
-extern PSX_STATUS xmlStartSipObjNode(char *appName, char *objName);
-extern PSX_STATUS xmlEndSipObjNode(char *appName, char *objName);
-extern PSX_STATUS xmlGetSipAttr(char *attrName, char* attrValue);
+  extern PSX_STATUS xmlStartRvSipExtObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlEndRvSipExtObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlGetRvSipExtAttr(char *attrName, char* attrValue);
+  extern void  xmlSetRvSipDpAttr(FILE* file, const char *appName, const UINT16 id,
+                           const PSI_VALUE value, const UINT16 length);
+  extern PSX_STATUS xmlStartRvSipDpObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlEndRvSipDpObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlGetRvSipDpAttr(char *attrName, char* attrValue);
+  extern void  xmlSetRvSip4PAttr(FILE* file, const char *appName, const UINT16 id,
+                           const PSI_VALUE value, const UINT16 length);
+  extern PSX_STATUS xmlStartRvSip4PObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlEndRvSip4PObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlGetRvSip4PAttr(char *attrName, char* attrValue);
+#else
+  extern void  xmlSetMgcpAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                              const UINT16 length);
+  extern void  xmlSetSipAttr(FILE* file, const char *appName, const UINT16 id,
+                             const PSI_VALUE value, const UINT16 length);
+  extern PSX_STATUS xmlStartMgcpObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlEndMgcpObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlGetMgcpAttr(char *attrName, char* attrValue);
+  extern PSX_STATUS xmlStartSipObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlEndSipObjNode(char *appName, char *objName);
+  extern PSX_STATUS xmlGetSipAttr(char *attrName, char* attrValue);
+#endif
 
 extern PSX_STATUS xmlGetEthAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlSetIppNode(FILE* file, const char *appName, const UINT16 id,
@@ -503,6 +482,155 @@ extern PSX_STATUS xmlGetIppNode(char *appName, char *objName, char *attrName, ch
 extern PSX_STATUS xmlGetIppAttr(char *attrName, char* attrValue);
 extern PSX_STATUS xmlStartIppObj(char *appName, char *objName);
 extern PSX_STATUS xmlEndIppObj(char *appName, char *objName);
+#ifdef SUPPORT_DDNSD
+extern void xmlSetDdnsStatusObjAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS xmlGetDdnsStatusAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartDdnsStatusObj(char *appName, char *objName);
+extern PSX_STATUS xmlEndDdnsStatusObj(char *appName, char *objName);
+#endif
+extern PSX_STATUS xmlSetIPSecNode(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value, const UINT16 length);
+extern PSX_STATUS xmlGetIPSecNode(char *appName, char *objName, char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartIPSecNode(char *appName, char *objName);
+extern PSX_STATUS xmlEndIPSecNode(char *appName, char *objName);
+extern PSX_STATUS xmlSetCertNode(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value, const UINT16 length);
+extern PSX_STATUS xmlGetCertNode(char *appName, char *objName, char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartCertNode(char *appName, char *objName);
+extern PSX_STATUS xmlEndCertNode(char *appName, char *objName);
+
+
+extern char *xmlWirelessGetPhyType(void);
+extern int xmlWirelessGetCoreRev(void);
+extern int xmlWirelessGetBands(void);
+extern int xmlWirelessGetValidBand(int band);
+
+#ifdef BUILD_STATIC_DNS
+extern void wsnXmlSetStaticDns(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS wsnXmlStartStaticDns(char *appName, char *objName);
+
+extern PSX_STATUS wsnXmlGetStaticDns(char *attrName, char* attrValue);
+extern PSX_STATUS wsnXmlEndStaticDns(char *appName, char *objName);
+#endif
+
+extern PSX_STATUS xmlGetPortMirrorCfgAttr(char *attrName, char* attrValue) ;
+extern PSX_STATUS xmlEndPortMirrorCfgObj(char *appName, char *objName) ;
+extern void xmlSetPortMirrorStatusAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value, const UINT16 length) ;
+extern PSX_STATUS xmlGetPortMirrorStatusAttr(char *attrName, char* attrValue) ;
+extern PSX_STATUS xmlStartPortMirrorStatusAttr(char *appName, char *objName) ;
+extern PSX_STATUS xmlEndPortMirrorStatusAttr(char *appName, char *objName) ;
+extern void xmlSetPortMirrorCfgEntryAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value, const UINT16 length) ;
+extern PSX_STATUS xmlGetPortMirrorCfgEntryAttr(char *attrName, char* attrValue) ;
+extern PSX_STATUS xmlEndPortMirrorCfgEntryAttrObj(char *appName, char *objName) ;
+extern PSX_STATUS xmlSetPortMirrorObjNode (FILE* file, const char *appName, const UINT16 id, const PSI_VALUE value, const UINT16 length) ;
+extern PSX_STATUS xmlGetPortMirrorObjNode(char *appName, char *objName, char *attrName, char* attrValue) ;
+extern PSX_STATUS xmlStartPortMirrorObjNode(char *appName, char *objName) ;
+extern PSX_STATUS xmlEndPortMirrorObjNode(char *appName, char *objName) ;
+/*Wilson porting from 3.02, (05/25/2006)*/
+extern void xmlSetHostNameObjAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS xmlStartHostNameObj(char *appName, char *objName);
+
+extern PSX_STATUS xmlGetHostNameAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndHostNameObj(char *appName, char *objName);
+#ifdef ODM_MULTI_LANG
+extern void wsnXmlSetWebLang(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS wsnXmlStartWebLang(char *appName, char *objName);
+
+extern PSX_STATUS wsnXmlGetWebLang(char *attrName, char* attrValue);
+extern PSX_STATUS wsnXmlEndWebLang(char *appName, char *objName);
+#endif
+extern void encryptData(char *dest, char *src, int length);
+extern void decryptData(char *dest, char *src, int length);
+/*End Wilson porting from 3.02, (05/25/2006)*/
+extern int base64Encode(const void *inp, int insize, char **outptr);
+extern void base64Decode(unsigned char *dest, char *src, int *rawLength);
+extern void xmlSetFWObjAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);//add by wilson
+extern PSX_STATUS xmlGetSysFWAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartSysFWObj(char *appName, char *objName);
+extern PSX_STATUS xmlEndSysFWObj(char *appName, char *objName);
+
+extern PSX_STATUS xmlSetDhcpMapObjNode(FILE* file, const char *appName, const UINT16 id,
+                           const PSI_VALUE value, const UINT16 length);
+extern void xmlSetDhcpMapAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                     const UINT16 length);
+extern PSX_STATUS xmlStartDhcpMapObjNode(char *appName, char *objName);
+extern PSX_STATUS xmlEndDhcpMapObjNode(char *appName, char *objName);
+extern PSX_STATUS xmlEndDhcpMapObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetDhcpMapObjNode(char *appName, char *objName, char *attrName, char* attrValue);
+extern PSX_STATUS xmlGetDhcpMapAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndDhcpMapEntryObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetDhcpMapEntryAttr(char *attrName, char* attrValue);
+//Remote Access IP List
+extern PSX_STATUS xmlSetRemoteIpObjNode(FILE* file, const char *appName, const UINT16 id,
+                           const PSI_VALUE value, const UINT16 length);
+extern PSX_STATUS xmlStartRemoteIpObjNode(char *appName, char *objName);
+extern PSX_STATUS xmlGetRemoteIpObjNode(char *appName, char *objName, char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndRemoteIpObjNode(char *appName, char *objName);
+extern void xmlSetRemoteIpAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                     const UINT16 length);
+extern PSX_STATUS xmlGetRemoteIpAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndRemoteIpObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetRemoteIpEntryAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndRemoteIpEntryObj(char *appName, char *objName);
+//end Remote Access IP List
+
+//Paul porting from 2.21.5, 7/24/2006
+#ifdef INCLUDE_PRINT_SERVER
+extern void xmlSetPrinterServerObjAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS xmlStartPrinterServerObj(char *appName, char *objName);
+
+extern PSX_STATUS xmlGetPrinterServerAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndPrinterServerObj(char *appName, char *objName);
+#endif
+//Paul porting end
+
+#ifdef SUPPORT_ODM_VOICE_QOS
+extern void xmlSetVoiceQoSAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                   const UINT16 length);
+extern PSX_STATUS xmlStartVoiceQoSObj(char *appName, char *objName);
+extern PSX_STATUS xmlGetVoiceQoSAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndVoiceQoSObj(char *appName, char *objName);
+#endif
+#ifdef BUILD_PPP_DOMAIN_SUFFIX
+extern void xmlSetPppSuffix(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS xmlStartPppSuffix(char *appName, char *objName);
+
+extern PSX_STATUS xmlGetPppSuffix(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndPppSuffix(char *appName, char *objName);
+#endif
+#if defined(SUPPORT_SYS_ALG)
+#if defined(SUPPORT_SYS_VPN_ALG) || defined(SUPPORT_SYS_SIP_ALG)
+extern void xmlSetSysAlg(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                       const UINT16 length);
+extern PSX_STATUS xmlGetSysAlg(char *attrName, char* attrValue);
+extern PSX_STATUS xmlStartSysAlg(char *appName, char *objName);
+extern PSX_STATUS xmlEndSysAlg(char *appName, char *objName);
+#endif
+#endif
+
+#if defined(SUPPORT_MULTIPLE_VOIP_PROVIDERS) //Paul add, 6/13/2006
+extern void xmlSetSipProviderAttr(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                     const UINT16 length);
+extern PSX_STATUS xmlGetSipProviderAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlGetSipProviderEntryAttr(char *attrName, char* attrValue);
+extern PSX_STATUS xmlEndSipProviderObj(char *appName, char *objName);
+extern PSX_STATUS xmlEndSipProviderEntryObj(char *appName, char *objName);
+#endif //Paul add end
+
+#if defined(ODM_LANG_NETGEAR)
+extern void wsnXmlSetBlankState(FILE *file, const char *name, const UINT16 id, const PSI_VALUE value,
+                      const UINT16 length);
+extern PSX_STATUS wsnXmlStartBlankState(char *appName, char *objName);
+
+extern PSX_STATUS wsnXmlGetBlankState(char *attrName, char* attrValue);
+extern PSX_STATUS wsnXmlEndBlankState(char *appName, char *objName);
+#endif
+
 #if defined(__cplusplus)
 }
 #endif