CSM XML Document Type Definition
The CSM XML Document Type Definition (DTD) is as follows:
<!--
/*
* cisco_csm.dtd - XML DTD for CSM 3.1
*
* January 2002 Paul Mathison
*
* Copyright (c) 2002 by cisco Systems, Inc.
* All rights reserved
*/
-->
<!--
Notes:
Each element refers to a particular IOS CLI command.
Each attribute refers to a command parameter.
Except where noted, all "name" attributes are strings of length
1 to 15, with no whitespace.
IP address and mask attributes use standard "x.x.x.x" format.
-->
<!--
*************************************************************
Elements and attributes required by various other elements
*************************************************************
-->
<!ELEMENT inservice EMPTY>
<!ATTLIST inservice
sense (yes | no) #IMPLIED
>
<!ELEMENT serverfarm_ref EMPTY>
<!ATTLIST serverfarm_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for vlan
*************************************************************
-->
<!ELEMENT vlan_address EMPTY>
<!ATTLIST vlan_address
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
ipmask NMTOKEN #REQUIRED
>
<!ELEMENT gateway EMPTY>
<!ATTLIST gateway
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
>
<!--
gateway uses standard x.x.x.x format
-->
<!ELEMENT route EMPTY>
<!ATTLIST route
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
ipmask NMTOKEN #REQUIRED
gateway NMTOKEN #REQUIRED
>
<!ELEMENT alias EMPTY>
<!ATTLIST alias
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
ipmask NMTOKEN #REQUIRED
>
<!--
id is between 2 and 4095
Maximum of 7 gateways per vlan
Maximum of 4095 routes per vlan
Maximum of 255 aliases per vlan
Global maximum of 255 unique vlan_addresses
Global maximum of 255 vlan gateways (including routed gateways)
-->
<!ELEMENT vlan (vlan_address?, gateway*, route*, alias*)>
<!ATTLIST vlan
sense (yes | no) #IMPLIED
id NMTOKEN #REQUIRED
type (client | server) #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for probe
*************************************************************
-->
<!--
value is between 2 and 65535 (default is 300)
-->
<!ELEMENT probe_failed EMPTY>
<!ATTLIST probe_failed
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 2 and 65535 (default is 120)
-->
<!ELEMENT probe_interval EMPTY>
<!ATTLIST probe_interval
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 0 and 65535 (default is 3)
-->
<!ELEMENT probe_retries EMPTY>
<!ATTLIST probe_retries
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 65535 (default 10)
-->
<!ELEMENT probe_open EMPTY>
<!ATTLIST probe_open
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 65535 (default 10)
-->
<!ELEMENT probe_receive EMPTY>
<!ATTLIST probe_receive
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
string is of length 1 to 64
-->
<!ELEMENT probe_domain EMPTY>
<!ATTLIST probe_domain
sense (yes | no) #IMPLIED
string CDATA #REQUIRED
>
<!ELEMENT probe_address EMPTY>
<!ATTLIST probe_address
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
>
<!ELEMENT probe_expect_address EMPTY>
<!ATTLIST probe_expect_address
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
>
<!--
expression is a string of length 1 to 200
-->
<!ELEMENT probe_header EMPTY>
<!ATTLIST probe_header
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
expression CDATA #REQUIRED
>
<!--
user is a string of length 1 to 15
password is a string of length 1 to 15
-->
<!ELEMENT probe_credentials EMPTY>
<!ATTLIST probe_credentials
sense (yes | no) #IMPLIED
user CDATA #REQUIRED
password CDATA ""
>
<!--
url is a string of length 1 to 200
-->
<!ELEMENT probe_request EMPTY>
<!ATTLIST probe_request
sense (yes | no) #IMPLIED
method (get | head) #REQUIRED
url CDATA "/"
>
<!--
min_code is between 0 and 999
max_code default is match min_code
-->
<!ELEMENT probe_expect_status EMPTY>
<!ATTLIST probe_expect_status
sense (yes | no) #IMPLIED
min_code NMTOKEN #REQUIRED
max_code NMTOKEN #IMPLIED
>
<!--
Maximum of 255 probe_headers per http_probe
-->
<!ELEMENT http_probe (probe_failed?, probe_interval?, probe_retries?,
probe_open?, probe_receive?, probe_request?,
probe_credentials?, probe_header*, probe_expect_status*)
>
<!--
Maximum of 255 probe_expect_addresses per dns_probe
-->
<!ELEMENT dns_probe (probe_failed?, probe_interval?, probe_retries?,
probe_receive?, probe_domain?, probe_expect_address*)
>
<!ELEMENT icmp_probe (probe_failed?, probe_interval?, probe_retries?,
probe_receive?, probe_address?)
>
<!ELEMENT tcp_probe (probe_failed?, probe_interval?, probe_retries?,
probe_open?)
>
<!ELEMENT smtp_probe (probe_failed?, probe_interval?, probe_retries?,
probe_open?, probe_receive?, probe_expect_status*)
>
<!ELEMENT telnet_probe (probe_failed?, probe_interval?, probe_retries?,
probe_open?, probe_receive?, probe_expect_status*)
>
<!ELEMENT ftp_probe (probe_failed?, probe_interval?, probe_retries?,
probe_open?, probe_receive?, probe_expect_status*)
>
<!ELEMENT probe (http_probe | dns_probe | icmp_probe | tcp_probe |
smtp_probe | telnet_probe | ftp_probe)
>
<!ATTLIST probe
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
type (http | dns | icmp | tcp
| smtp | telnet | ftp) #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for natpool
*************************************************************
-->
<!--
Global maximum of 255 natpool addresses
-->
<!ELEMENT natpool EMPTY>
<!ATTLIST natpool
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
first_ip NMTOKEN #REQUIRED
last_ip NMTOKEN #REQUIRED
ipmask NMTOKEN #REQUIRED
>
<!--
*************************************************************
Elements and attributes required by maps
*************************************************************
-->
<!--
url is a string of length 1 to 200
-->
<!ELEMENT url_rule EMPTY>
<!ATTLIST url_rule
sense (yes | no) #IMPLIED
url CDATA #REQUIRED
>
<!--
name is a string of length 1 to 63
expression is a string of length 1 to 127
-->
<!ELEMENT cookie_rule EMPTY>
<!ATTLIST cookie_rule
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
expression CDATA #REQUIRED
>
<!--
name is a string of length 1 to 63
expression is a string of length 1 to 127
-->
<!ELEMENT header_rule EMPTY>
<!ATTLIST header_rule
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
expression CDATA #REQUIRED
>
<!--
min_code and max_code are between 100 and 599
threshold is between 1 and 4294967295, no effect for count action
reset is between 0 and 4294967295 (0 means no reset)
-->
<!ELEMENT retcode_rule EMPTY>
<!ATTLIST retcode_rule
sense (yes | no) #IMPLIED
min_code NMTOKEN #REQUIRED
max_code NMTOKEN #REQUIRED
action (count | log | remove) #REQUIRED
threshold NMTOKEN #REQUIRED
reset NMTOKEN "0"
>
<!--
Maximum of 1023 url_rules per map
-->
<!ELEMENT url_map (url_rule*)>
<!ATTLIST url_map
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
Maximum of 5 cookie_rules per map
-->
<!ELEMENT cookie_map (cookie_rule*)>
<!ATTLIST cookie_map
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
Maximum of 5 header_rules per map
-->
<!ELEMENT header_map (header_rule*)>
<!ATTLIST header_map
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
Maximum of 100 retcodes (not ranges) per map
-->
<!ELEMENT retcode_map (retcode_rule*)>
<!ATTLIST retcode_map
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for redirect_server
*************************************************************
-->
<!--
value is between 1 and 65535
-->
<!ELEMENT ssl_port EMPTY>
<!ATTLIST ssl_port
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
string is of length 1 to 127
-->
<!ELEMENT redirect_relocate EMPTY>
<!ATTLIST redirect_relocate
sense (yes | no) #IMPLIED
string CDATA #REQUIRED
code (301 | 302) "302"
>
<!--
string is of length 1 to 127
-->
<!ELEMENT redirect_backup EMPTY>
<!ATTLIST redirect_backup
sense (yes | no) #IMPLIED
string CDATA #REQUIRED
code (301 | 302) "302"
>
<!ELEMENT redirect_server (ssl_port?, redirect_relocate?, redirect_backup?,
inservice?)
>
<!ATTLIST redirect_server
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for real_server
*************************************************************
-->
<!--
value is between 1 and 100
-->
<!ELEMENT weight EMPTY>
<!ATTLIST weight
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 4294967295
-->
<!ELEMENT minconns EMPTY>
<!ATTLIST minconns
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 4294967295
-->
<!ELEMENT maxconns EMPTY>
<!ATTLIST maxconns
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
port is between 0 and 65535 (0 means no port translation)
Global maximum of 4095 real_servers
-->
<!ELEMENT real_server (weight?, minconns?, maxconns?, inservice?)>
<!ATTLIST real_server
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
port NMTOKEN "0"
>
<!--
*************************************************************
Elements and attributes required for serverfarm
*************************************************************
-->
<!ELEMENT retcode_map_ref EMPTY>
<!ATTLIST retcode_map_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
retries is between 0 and 65534
failed is between 0 and 65535
-->
<!ELEMENT health EMPTY>
<!ATTLIST health
sense (yes | no) #IMPLIED
retries NMTOKEN #REQUIRED
failed NMTOKEN #REQUIRED
>
<!ELEMENT failaction EMPTY>
<!ATTLIST failaction
sense (yes | no) #IMPLIED
value (purge) #REQUIRED
>
<!ELEMENT probe_ref EMPTY>
<!ATTLIST probe_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!ELEMENT natpool_ref EMPTY>
<!ATTLIST natpool_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!ELEMENT server_nat EMPTY>
<!ATTLIST server_nat
sense (yes | no) #IMPLIED
>
<!--
value is between 0 and 65533
-->
<!ELEMENT bind_id EMPTY>
<!ATTLIST bind_id
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
hash_ip_type and ipmask valid only when value = hash_ip
-->
<!ELEMENT predictor EMPTY>
<!ATTLIST predictor
sense (yes | no) #IMPLIED
value (roundrobin | leastconns |
hash_ip | hash_url | forward) #REQUIRED
hash_ip_type (source | destination | both) "both"
ipmask NMTOKEN "255.255.255.255"
>
<!ELEMENT serverfarm (predictor?, natpool_ref?, server_nat?, health?,
bind_id?, retcode_map_ref?, failaction?,
redirect_server*, real_server*, probe_ref*)
>
<!ATTLIST serverfarm
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for sticky_group
*************************************************************
-->
<!--
id is between 1 and 255
timeout is between 1 and 65535
ipmask required for type=ip
cookie is a string of length 1 to 63, required for type=cookie
-->
<!ELEMENT sticky_group EMPTY>
<!ATTLIST sticky_group
sense (yes | no) #IMPLIED
id NMTOKEN #REQUIRED
timeout NMTOKEN "1440"
type (ip | cookie | ssl) #REQUIRED
ipmask NMTOKEN #IMPLIED
cookie CDATA #IMPLIED
>
<!--
*************************************************************
Elements and attributes required for policy
*************************************************************
-->
<!ELEMENT url_map_ref EMPTY>
<!ATTLIST url_map_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!ELEMENT cookie_map_ref EMPTY>
<!ATTLIST cookie_map_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!ELEMENT header_map_ref EMPTY>
<!ATTLIST header_map_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
Reference to an IOS standard IP access list
Specify either the id (range 1 to 99) or name
name is a string of length 1 to 200
-->
<!ELEMENT client_group_ref EMPTY>
<!ATTLIST client_group_ref
sense (yes | no) #IMPLIED
name CDATA #IMPLIED
id NMTOKEN #IMPLIED
>
<!--
id is between 1 and 255
-->
<!ELEMENT sticky_group_ref EMPTY>
<!ATTLIST sticky_group_ref
sense (yes | no) #IMPLIED
id NMTOKEN #REQUIRED
>
<!--
value is between 0 and 63
-->
<!ELEMENT dscp EMPTY>
<!ATTLIST dscp
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!ELEMENT policy (serverfarm_ref?, client_group_ref?, sticky_group_ref?,
dscp?, url_map_ref?, cookie_map_ref?, header_map_ref?)
>
<!ATTLIST policy
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for vserver
*************************************************************
-->
<!--
protocol is between 0 and 255 (0 means any)
port is between 0 and 65535 (0 means any)
-->
<!ELEMENT virtual EMPTY>
<!ATTLIST virtual
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
ipmask NMTOKEN "255.255.255.255"
protocol NMTOKEN #REQUIRED
port NMTOKEN #REQUIRED
service (none | ftp | rtsp) "none"
>
<!ELEMENT client EMPTY>
<!ATTLIST client
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
ipmask NMTOKEN "255.255.255.255"
exclude (yes | no) "no"
>
<!--
timeout is between 1 and 65535
group is between 0 and 255 (if nonzero, refers to an ip sticky_group)
-->
<!ELEMENT sticky EMPTY>
<!ATTLIST sticky
sense (yes | no) #IMPLIED
timeout NMTOKEN #REQUIRED
group NMTOKEN "0"
ipmask NMTOKEN "255.255.255.255"
>
<!ELEMENT policy_ref EMPTY>
<!ATTLIST policy_ref
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
begin and end are strings, 0-length ok
total length of begin and end should not exceed 200
-->
<!ELEMENT url_hash EMPTY>
<!ATTLIST url_hash
sense (yes | no) #IMPLIED
begin CDATA #REQUIRED
end CDATA #REQUIRED
>
<!--
value is between 2 and 4095
-->
<!ELEMENT vlan_id EMPTY>
<!ATTLIST vlan_id
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 2 and 65535
-->
<!ELEMENT idle EMPTY>
<!ATTLIST idle
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 65535
-->
<!ELEMENT pending EMPTY>
<!ATTLIST pending
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!ELEMENT replicate_csrp EMPTY>
<!ATTLIST replicate_csrp
sense (yes | no) #IMPLIED
value (sticky | connection) #REQUIRED
>
<!ELEMENT advertise EMPTY>
<!ATTLIST advertise
sense (yes | no) #IMPLIED
value (always | active) #REQUIRED
>
<!ELEMENT persistent EMPTY>
<!ATTLIST persistent
sense (yes | no) #IMPLIED
>
<!--
value is between 1 and 4000
-->
<!ELEMENT parse_length EMPTY>
<!ATTLIST parse_length
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
string is of length 1 to 127
-->
<!ELEMENT domain EMPTY>
<!ATTLIST domain
sense (yes | no) #IMPLIED
string CDATA #REQUIRED
>
<!--
Maximum of 1023 domains per vserver
Default idle is 3600
Default pending is 30
-->
<!ELEMENT vserver (virtual?, vlan_id?, idle?, pending?, replicate_csrp?,
advertise?, persistent?, parse_length?, inservice?,
url_hash?, policy_ref*, domain*,
serverfarm_ref?, sticky?, client*)
>
<!ATTLIST vserver
sense (yes | no) #IMPLIED
name CDATA #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for dfp
*************************************************************
-->
<!--
port is between 1 and 65535
-->
<!ELEMENT dfp_manager EMPTY>
<!ATTLIST dfp_manager
sense (yes | no) #IMPLIED
port NMTOKEN #REQUIRED
>
<!--
port is between 1 and 65535
timeout is between 0 and 65535
retry is between 0 and 65535 (must specify timeout)
interval is between 1 and 65535 (must specify retry)
-->
<!ELEMENT dfp_agent EMPTY>
<!ATTLIST dfp_agent
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
port NMTOKEN #REQUIRED
timeout NMTOKEN "0"
retry NMTOKEN "0"
interval NMTOKEN "180"
>
<!--
password is a string of length 1 to 64
timeout is between 0 and 65535
-->
<!ELEMENT dfp (dfp_manager?, dfp_agent*)>
<!ATTLIST dfp
sense (yes | no) #IMPLIED
password CDATA #IMPLIED
timeout NMTOKEN "180"
>
<!--
*************************************************************
Elements and attributes required for udp_capp
*************************************************************
-->
<!--
secret is a string of length 1 to 32
-->
<!ELEMENT capp_options EMPTY>
<!ATTLIST capp_options
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
encryption (md5) "md5"
secret CDATA #REQUIRED
>
<!--
value is between 1 and 65535
-->
<!ELEMENT capp_port EMPTY>
<!ATTLIST capp_port
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!ELEMENT capp_secure EMPTY>
<!ATTLIST capp_secure
sense (yes | no) #IMPLIED
>
<!--
Maximum of 16 capp_options
Default capp_port is 5002
-->
<!ELEMENT udp_capp (capp_port?, capp_secure?, capp_options*)>
<!ATTLIST udp_capp
sense (yes | no) #IMPLIED
>
<!--
*************************************************************
Elements and attributes required for ft
*************************************************************
-->
<!ELEMENT ft_preempt EMPTY>
<!ATTLIST ft_preempt
sense (yes | no) #IMPLIED
>
<!--
value is between 1 and 254
-->
<!ELEMENT ft_priority EMPTY>
<!ATTLIST ft_priority
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 65535
-->
<!ELEMENT ft_failover EMPTY>
<!ATTLIST ft_failover
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
value is between 1 and 65535
-->
<!ELEMENT ft_heartbeat EMPTY>
<!ATTLIST ft_heartbeat
sense (yes | no) #IMPLIED
value NMTOKEN #REQUIRED
>
<!--
group is between 1 and 254
vlan_id is between 2 and 4095, and must *not* match id of
existing client or server vlan configured for csm_module
Default ft_preempt is off
Default ft_priority is 10
Default ft_failover is 3
Default ft_heartbeat is 1
-->
<!ELEMENT ft (ft_preempt?, ft_priority?, ft_failover?, ft_heartbeat?)>
<!ATTLIST ft
sense (yes | no) #IMPLIED
group NMTOKEN #REQUIRED
vlan_id NMTOKEN #REQUIRED
>
<!--
*************************************************************
Elements and attributes required for static_nat
*************************************************************
-->
<!ELEMENT static_real EMPTY>
<!ATTLIST static_real
sense (yes | no) #IMPLIED
ipaddress NMTOKEN #REQUIRED
ipmask NMTOKEN "255.255.255.255"
>
<!--
ipaddress is required for type=ip
Global maximum of 16383 static_reals
-->
<!ELEMENT static_nat (static_real*)>
<!ATTLIST static_nat
sense (yes | no) #IMPLIED
type (drop | ip | virtual) #REQUIRED
ipaddress NMTOKEN #IMPLIED
>
<!--
*************************************************************
root definition for csm_module
*************************************************************
-->
<!--
slot is between 1 and MAXSLOT (depends on chassis)
Maximum of 4095 probes
Maximum of 1023 url_maps
Maximum of 1023 cookie_maps
Maximum of 1023 header_maps
Maximum of 1023 retcode_maps
Maximum of 4095 serverfarms
Maximum of 255 sticky_groups (including those id=0 groups created
implicitly for vservers)
Maximum of 4000 vservers
-->
<!ELEMENT csm_module (vlan*, probe*, natpool*, url_map*, cookie_map*,
header_map*, retcode_map*, serverfarm*, sticky_group*,
policy*, vserver*, dfp?, udp_capp?, ft?, static_nat*)
>
<!ATTLIST csm_module
sense (yes | no) #IMPLIED
slot NMTOKEN #REQUIRED
>
<!--
*************************************************************
actions
*************************************************************
-->
<!--
error_tolerance is a 32-bit value, specified
in hex or decimal, which acts as a bitmask
for specifying which error types should be
ignored. TBD: define error types
-->
<!ELEMENT config (csm_module)>
<!ATTLIST config
error_tolerance NMTOKEN #IMPLIED
>
<!--
**************
TBD: error response, error strictness attribute
**************
-->
Feedback