From David Frascone: duUpdate to Diameter dissector to load the

dictionary as an XML file rather than building it in, and various
Diameter updates.

svn path=/trunk/; revision=4122
This commit is contained in:
Guy Harris 2001-11-01 21:52:44 +00:00
parent f9ff2a9ab3
commit be7e31be0e
11 changed files with 3319 additions and 132 deletions

View File

@ -1,7 +1,7 @@
# Makefile.am
# Automake file for Ethereal
#
# $Id: Makefile.am,v 1.372 2001/10/29 21:13:07 guy Exp $
# $Id: Makefile.am,v 1.373 2001/11/01 21:52:44 guy Exp $
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
@ -68,7 +68,8 @@ man_MANS =
EXTRA_PROGRAMS = ethereal ethereal_static tethereal tethereal_static editcap mergecap dftest text2pcap
EXTRA_SCRIPTS = idl2eth
sysconf_DATA = manuf
sysconf_DATA = manuf dictionary.dtd dictionary.xml mobileipv4.xml \
nasreq.xml sunping.xml
DISSECTOR_SRC = \
packet-aarp.c \
@ -448,7 +449,9 @@ ETHEREAL_COMMON_SRC = \
x11-declarations.h \
x11-register-info.h \
xdlc.c \
xdlc.h
xdlc.h \
xmlstub.c \
xmlstub.h
BUILT_SOURCES = \
x11-declarations.h \
@ -808,6 +811,11 @@ EXTRA_DIST = \
randpkt.c \
rdps.c \
TODO \
dictionary.dtd \
dictionary.xml \
mobileipv4.xml \
nasreq.xml \
sunping.xml \
x11-fields
if SETUID_INSTALL

View File

@ -1,7 +1,7 @@
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
# $Id: Makefile.nmake,v 1.134 2001/10/29 21:13:07 guy Exp $
# $Id: Makefile.nmake,v 1.135 2001/11/01 21:52:44 guy Exp $
include config.nmake
include <win32.mak>
@ -247,6 +247,7 @@ ETHEREAL_COMMON_OBJECTS = \
register.obj \
util.obj \
xdlc.obj \
xmlstub.obj \
ethereal_OBJECTS = \
$(DISSECTOR_OBJECTS) \

74
dictionary.dtd Normal file
View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Log: dictionary.dtd,v $
Revision 1.1 2001/11/01 21:52:44 guy
From David Frascone: duUpdate to Diameter dissector to load the
dictionary as an XML file rather than building it in, and various
Diameter updates.
Revision 1.1 2001/08/24 18:04:44 chaos
Added per Mark's request
Revision 1.3 2001/07/31 17:43:36 chaos
Oops, forgot to turn on validity checking. Fixed some errors found with validity checking turned on
Revision 1.2 2001/07/31 16:56:15 chaos
Lots of changes to support flags like in the draft, and to support commands
-->
<!ELEMENT dictionary (base, application*)>
<!ELEMENT base (command*, vendor*, typedefn+, avp+)>
<!ATTLIST base
uri CDATA #IMPLIED
>
<!ELEMENT application (command*, vendor*, typedefn*, avp*)>
<!ATTLIST application
id CDATA #REQUIRED
name CDATA #IMPLIED
uri CDATA #IMPLIED
>
<!ELEMENT command (#PCDATA)>
<!ATTLIST command
name CDATA #REQUIRED
code CDATA #REQUIRED
vendor-id IDREF #IMPLIED
>
<!ELEMENT vendor EMPTY>
<!ATTLIST vendor
vendor-id ID #REQUIRED
code CDATA #REQUIRED
name CDATA #IMPLIED
>
<!ELEMENT typedefn EMPTY>
<!ATTLIST typedefn
type-name ID #REQUIRED
type-parent IDREF #IMPLIED
description CDATA #IMPLIED
>
<!ELEMENT avp ((type | grouped), (enum*))>
<!ATTLIST avp
name ID #REQUIRED
description CDATA #IMPLIED
code CDATA #REQUIRED
may-encrypt (yes | no) "yes"
mandatory (must | may | mustnot | shouldnot) "may"
protected (must | may | mustnot | shouldnot) "may"
vendor-bit (must | may | mustnot | shouldnot) "mustnot"
vendor-id IDREF #IMPLIED
constrained (true | false) "false"
>
<!ELEMENT type EMPTY>
<!ATTLIST type
type-name IDREF #REQUIRED
>
<!ELEMENT grouped (gavp+)>
<!ELEMENT gavp EMPTY>
<!ATTLIST gavp
name IDREF #REQUIRED
>
<!ELEMENT enum EMPTY>
<!ATTLIST enum
name CDATA #REQUIRED
code CDATA #REQUIRED
>

647
dictionary.xml Normal file
View File

@ -0,0 +1,647 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "dictionary.dtd" [
<!ENTITY nasreq SYSTEM "nasreq.xml">
<!ENTITY mobileipv4 SYSTEM "mobileipv4.xml">
<!ENTITY sunping SYSTEM "sunping.xml">
]>
<dictionary>
<base uri="ftp://ftp.ietf.org/internet-drafts/draft-ietf-aaa-diameter-07.txt">
<!--
$Log: dictionary.xml,v $
Revision 1.1 2001/11/01 21:52:44 guy
From David Frascone: duUpdate to Diameter dissector to load the
dictionary as an XML file rather than building it in, and various
Diameter updates.
Revision 1.7 2001/08/24 18:03:24 chaos
Mark's Changes
Revision 1.6 2001/07/31 19:13:55 chaos
Missed a couple of MIP AVPs
Revision 1.5 2001/07/31 19:09:22 chaos
Added Mobile-Ip and Sun Ping Extension
Revision 1.4 2001/07/31 17:43:25 chaos
Oops, forgot to turn on validity checking. Fixed some errors found with validity checking turned on
Revision 1.3 2001/07/31 16:56:31 chaos
Added commands, and validated with xmllint
Revision 1.2 2001/07/31 16:29:34 chaos
Checking in some changes to verify log and ident strings
-->
<!-- *********************** Commands ***************************** -->
<!-- Diameter Base Protocol Command Codes -->
<command name="Abort-Session" code="274" vendor-id="None">
<!-- Maybe some avp stuff here one day -->
</command>
<command name="Accounting" code="271" vendor-id="None"/>
<command name="Capabilities-Exchange" code="257" vendor-id="None"/>
<command name="Device-Watchdog" code="280" vendor-id="None"/>
<command name="Disconnect-Peer" code="282" vendor-id="None"/>
<command name="Re-Auth" code="258" vendor-id="None"/>
<command name="Session-Termination" code="275" vendor-id="None"/>
<!-- ********************** End Commands ************************** -->
<!-- ************************* Vendors **************************** -->
<vendor vendor-id="None" code="0" name="None"/>
<vendor vendor-id="Merit" code="61" name="Merit Networks"/>
<vendor vendor-id="Sun" code="42" name="Sun Microsystems, Inc."/>
<vendor vendor-id="USR" code="429" name="US Robotics Corp."/>
<!-- *********************** End Vendors ************************** -->
<!-- ************************ typedefn's ************************** -->
<typedefn type-name="OctetString"/>
<!--
The data contains arbitrary data of variable length. Unless
otherwise noted, the AVP Length field MUST be set to at least 9
(13 if the 'V' bit is enabled). Data used to transmit (human
readable) character string data uses the UTF-8 [24] character
set and is NOT NULL-terminated. The minimum Length field MUST
be 9, but can be set to any value up to 65504 bytes. AVP Values
of this type that do not align on a 32-bit boundary MUST have
the necessary padding.
-->
<typedefn type-name="UTF8String" type-parent="OctetString"/>
<!--
The UTF8String format is derived from the OctetString AVP Base
Format. This is a human readable string represented using the
ISO/IEC IS 10646-1 character set, encoded as an OctetString
using the UTF-8 [29] transformation format described in RFC
2279.
Since additional code points are added by amendments to the
10646 standard from time to time, implementations MUST be
prepared to encounter any code point from 0x00000001 to
0x7fffffff. Byte sequences that do not correspond to the valid
UTF-8 encoding of a code point or are outside this range are
prohibited. Note that since a code point of 0x00000000 is
prohibited, no octet will contain a value of 0x00.
The use of control codes SHOULD be avoided. When it is
necessary to represent a newline, the control code sequence CR
LF SHOULD be used.
The use of leading or trailing white space SHOULD be avoided.
For code points not directly supported by user interface
hardware or software, an alternative means of entry and
display, such as hexadecimal, MAY be provided.
For information encoded in 7-bit US-ASCII, the UTF-8 encoding
is identical to the US-ASCII encoding.
UTF-8 may require multiple bytes to represent a single
character / code point; thus the length of a UTF8String in
octets may be different from the number of characters encoded.
Note that the size of an UTF8String is measured in octets, not
characters.
The UTF8String MUST not contain any octets with a value of
zero.
-->
<typedefn type-name="IPAddress" type-parent="OctetString"/>
<!--
The IPAddress format is derived from the OctetString AVP Base
Format. It represents 32 bit (IPv4) [17] or 128 bit (IPv6) [16]
address, most significant octet first. The format of the
address (IPv4 or IPv6) is determined by the length. If the
attribute value is an IPv4 address, the AVP Length field MUST
be 12 (16 if 'V' bit is enabled), otherwise the AVP Length
field MUST be set to 24 (28 if the 'V' bit is enabled) for IPv6
addresses.
-->
<typedefn type-name="DiameterIdentity" type-parent="OctetString"/>
<!--
The DiameterIdentity format is derived from the OctetString AVP
Base Format. It uses the UTF-8 encoding and has the same
requirements as the UTF8String. In addition, it must follow
the Uniform Resource Identifiers (URI) syntax [29] rules
specified below:
Diameter-Identity = fqdn [ port ] [ transport ]
[ protocol ]
aaa-protocol = ( "diameter" | "radius" | "tacacs+" )
protocol = ";protocol=" aaa-protocol
; If absent, the default AAA protocol
; is diameter.
fqdn = Fully Qualified Host Name
port = ":" 1*DIGIT
; One of the ports used to listen for
; incoming connections. ; If absent,
; the default Diameter port (TBD) is
; assumed.
transport-protocol = ( "tcp" | "sctp" | "udp" )
transport = ";transport=" transport-protocol
; One of the transports used to listen
; for incoming connections. If absent,
; the default SCTP [26] protocol is
; assumed. UDP MUST NOT be used when
; the aaa-protocol field is set to
; diameter.
The following are examples of valid Diameter host
identities:
host.abc.com;transport=tcp
host.abc.com:6666;transport=tcp
aaa://host.abc.com;protocol=diameter
aaa://host.abc.com:6666;protocol=diameter
aaa://host.abc.com:6666;transport=tcp;protocol=diameter
aaa://host.abc.com:1813;transport=udp;protocol=radius
Since multiple Diameter processes on a single host cannot
listen for incoming connections on the same port on a given
protocol, the DiameterIdentity is guaranteed to be unique per
host.
A Diameter node MAY advertise different identities on each
connection, via the CER and CEA's Origin-Host AVP, but the same
identity MUST be used throughout the duration of a connection.
When comparing AVPs of this format, it is necessary to add any
absent fields with the default values prior to the comparison.
For example, diameter-host.abc.com would be expanded to
aaa://diameter/diameter-host.abc.com:TBD;protocol=sctp.
-->
<typedefn type-name="IPFilterRule" type-parent="OctetString"/>
<!--
The IPFilterRule format is derived from the OctetString AVP
Base Format. It uses the UTF-8 encoding and has the same
requirements as the UTF8String. Packets may be filtered based
on the following information that is associated with it:
Direction (in or out)
Source and destination IP address (possibly masked)
Protocol
Source and destination port (lists or ranges)
TCP flags
IP fragment flag
IP options
ICMP types
Rules for the appropriate direction are evaluated in order,
with the first matched rule terminating the evaluation. Each
packet is evaluated once. If no rule matches, the packet is
dropped if the last rule evaluated was a permit, and passed if
the last rule was a deny.
IPFilterRule filters MUST follow the format:
action dir proto from src to dst [options]
action permit - Allow packets that match the rule.
deny - Drop packets that match the rule.
dir "in" is from the terminal, "out" is to the
terminal.
proto An IP protocol specified by number. The "ip"
keyword means any protocol will match.
src and dst <address/mask> [ports]
The <address/mask> may be specified as:
ipno An IPv4 or IPv6 number in dotted-
quad or canonical IPv6 form. Only
this exact IP number will match the
rule.
ipno/bits An IP number as above with a mask
width of the form 1.2.3.4/24. In
this case all IP numbers from
1.2.3.0 to 1.2.3.255 will match.
The bit width MUST be valid for the
IP version and the IP number MUST
NOT have bits set beyond the mask.
The sense of the match can be inverted by
preceding an address with the not modifier,
causing all other addresses to be matched
instead. This does not affect the selection of
port numbers.
The keyword "any" is 0.0.0.0/0 or the IPv6
equivalent. The keyword "assigned" is the
address or set of addresses assigned to the
terminal. The first rule SHOULD be "deny in
ip !assigned".
With the TCP, UDP and SCTP protocols, optional
ports may be specified as:
{port|port-port}[,port[,...]]
The `-' notation specifies a range of ports
(including boundaries).
Fragmented packets which have a non-zero offset
(i.e. not the first fragment) will never match
a rule which has one or more port
specifications. See the frag option for
details on matching fragmented packets.
options:
frag Match if the packet is a fragment and this is not
the first fragment of the datagram. frag may not
be used in conjunction with either tcpflags or
TCP/UDP port specifications.
ipoptions spec
Match if the IP header contains the comma
separated list of options specified in spec. The
supported IP options are:
ssrr (strict source route), lsrr (loose source
route), rr (record packet route) and ts
(timestamp). The absence of a particular option
may be denoted with a `!'.
tcpoptions spec
Match if the TCP header contains the comma
separated list of options specified in spec. The
supported TCP options are:
mss (maximum segment size), window (tcp window
advertisement), sack (selective ack), ts (rfc1323
timestamp) and cc (rfc1644 t/tcp connection
count). The absence of a particular option may
be denoted with a `!'.
established
TCP packets only. Match packets that have the RST
or ACK bits set.
setup TCP packets only. Match packets that have the SYN
bit set but no ACK bit.
tcpflags spec
TCP packets only. Match if the TCP header
contains the comma separated list of flags
specified in spec. The supported TCP flags are:
fin, syn, rst, psh, ack and urg. The absence of a
particular flag may be denoted with a `!'. A rule
which contains a tcpflags specification can never
match a fragmented packet which has a non-zero
offset. See the frag option for details on
matching fragmented packets.
icmptypes types
ICMP packets only. Match if the ICMP type is in
the list types. The list may be specified as any
combination of ranges or individual types
separated by commas. The supported ICMP types
are:
echo reply (0), destination unreachable (3),
source quench (4), redirect (5), echo request
(8), router advertisement (9), router
solicitation (10), time-to-live exceeded (11), IP
header bad (12), timestamp request (13),
timestamp reply (14), information request (15),
information reply (16), address mask request (17)
and address mask reply (18).
There is one kind of packet that the access device MUST always
discard, that is an IP fragment with a fragment offset of one.
This is a valid packet, but it only has one use, to try to
circumvent firewalls.
An access device that is unable to interpret or apply a deny
rule MUST terminate the session. An access device that is
unable to interpret or apply a permit rule MAY apply a more
restrictive rule. An access device MAY apply deny rules of
its own before the supplied rules, for example to protect
the access device owner's infrastructure.
The rule syntax is a modified subset of ipfw(8) from FreeBSD,
and the ipfw.c code may provide a useful base for
implementations.
-->
<typedefn type-name="QOSFilterRule" type-parent="OctetString"/>
<!--
The QosFilterRule format is derived from the OctetString AVP
Base Format. It uses the UTF-8 encoding and has the same
requirements as the UTF8String. Packets may be marked or
metered based on the following information that is associated
with it:
Direction (in or out)
Source and destination IP address (possibly masked)
Protocol
Source and destination port (lists or ranges)
DSCP values (no mask or range)
Rules for the appropriate direction are evaluated in order,
with the first matched rule terminating the evaluation. Each
packet is evaluated once. If no rule matches, the packet is
treated as best effort.
QoSFilterRule filters MUST follow the format:
action dir proto from src to dst [options]
tag - Mark packet with a specific DSCP [49].
The DSCP option MUST be included.
meter - Meter traffic. The metering options
MUST be included.
dir "in" is from the terminal, "out" is to the
terminal.
proto An IP protocol specified by number. The "ip"
keyword means any protocol will match.
src and dst <address/mask> [ports]
The <address/mask> may be specified as:
ipno An IPv4 or IPv6 number in dotted-
quad or canonical IPv6 form. Only
this exact IP number will match the
rule.
ipno/bits An IP number as above with a mask
width of the form 1.2.3.4/24. In
this case all IP numbers from
1.2.3.0 to 1.2.3.255 will match.
The bit width MUST be valid for the
IP version and the IP number MUST
NOT have bits set beyond the mask.
The sense of the match can be inverted by
preceding an address with the not modifier,
causing all other addresses to be matched
instead. This does not affect the selection of
port numbers.
The keyword "any" is 0.0.0.0/0 or the IPv6
equivalent. The keyword "assigned" is the
address or set of addresses assigned to the
terminal. The first rule SHOULD be "deny in
ip !assigned".
With the TCP, UDP and SCTP protocols, optional
ports may be specified as:
{port|port-port}[,port[,...]]
The `-' notation specifies a range of ports
(including boundaries).
options:
DSCP <color>
color values as defined in [49]. Exact matching
of DSCP values is required (no masks or ranges).
the "deny" can replace the color_under or
color_over values in the meter action for rate-
dependent packet drop.
metering <rate> <color_under> <color_over>
The metering option provides Assured Forwarding,
as defined in [50], and MUST be present if the
action is set to meter. The rate option is the
throughput, in bits per second, which is used by
the access device to mark packets. Traffic above
the rate is marked with the color_over codepoint,
while traffic under the rate is marked with the
color_under codepoint. The color_under and
color_over options contain the drop preferences,
and MUST conform to the recommended codepoint
keywords described in [50] (e.g. AF13).
The metering option also supports the strict
limit on traffic required by Expedited
Forwarding, as defined in [51]. The color_over
option may contain the keyword "drop" to prevent
forwarding of traffic that exceeds the rate
parameter.
The rule syntax is a modified subset of ipfw(8) from FreeBSD,
and the ipfw.c code may provide a useful base for
implementations.
-->
<typedefn type-name="MIPRegistrationRequest" type-parent="OctetString"/>
<typedefn type-name="Integer32"/>
<!--
32 bit signed value, in network byte order. The AVP Length
field MUST be set to 12 (16 if the 'V' bit is enabled).
-->
<typedefn type-name="VendorId" type-parent="Integer32"/>
<typedefn type-name="AppId" type-parent="Integer32"/>
<typedefn type-name="Integer64"/>
<!--
64 bit signed value, in network byte order. The AVP Length
field MUST be set to 16 (20 if the 'V' bit is enabled).
-->
<typedefn type-name="Unsigned32"/>
<!--
32 bit unsigned value, in network byte order. The AVP Length
field MUST be set to 12 (16 if the 'V' bit is enabled).
Unsigned32 values used to transmit time data contains the four
most significant octets returned from NTP [18], in network byte
order.
-->
<typedefn type-name="Time"/>
<!--
The Time format is derived from the Unsigned32 AVP Base Format.
This is 32 bit unsigned value containing the four most
significant octets returned from NTP [18], in network byte
order.
This represent the number of seconds since 0h on 1 January 1900
with respect to the Coordinated Universal Time (UTC).
On 6h 28m 16s UTC, 7 February 2036 the time value will
overflow. NTP [18] describes a procedure to extend the time to
2104.
-->
<typedefn type-name="Unsigned64"/>
<!--
64 bit unsigned value, in network byte order. The AVP Length
field MUST be set to 16 (20 if the 'V' bit is enabled).
-->
<!-- ************************* End Typedefns ************************ -->
<!-- ******************* DIAMETER BASE PROTOCOL AVPS ************************ -->
<avp name="Accounting-Interim-Interval" code="482" mandatory="must" may-encrypt="yes" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Accounting-Multi-Session-Id" code="50" mandatory="must" protected="may" may-encrypt="yes" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Accounting-Record-Number" code="485" mandatory="must" may-encrypt="yes" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Accounting-Record-Type" code="480" mandatory="must" may-encrypt="yes" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Event Record" code="1"/>
<enum name="Start Record" code="2"/>
<enum name="Interim Record" code="3"/>
<enum name="Stop Record" code="4"/>
</avp>
<avp name="Accounting-Session-Id" code="44" mandatory="must" protected="may" may-encrypt="yes" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Acct-Application-Id" code="259" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="AppId"/>
</avp>
<avp name="Alternate-Peer" code="275" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Auth-Application-Id" code="258" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="AppId"/>
</avp>
<avp name="Auth-Request-Type" code="274" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Authenticate Only" code="1"/>
<enum name="Authorize Only" code="2"/>
<enum name="Authorize Authenticate" code="3"/>
</avp>
<avp name="Authorization-Lifetime" code="291" mandatory="must" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Integer32"/>
</avp>
<avp name="Auth-Grace-Period" code="276" mandatory="must" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Auth-Session-State" code="277" mandatory="must" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="State Maintained" code="0"/>
<enum name="No State Maintained" code="0"/>
</avp>
<avp name="Re-Auth-Request-Type" code="285" mandatory="must" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Authorize Only" code="0"/>
<enum name="Authorize Authenticate" code="1"/>
</avp>
<avp name="Destination-Host" code="293" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Destination-Realm" code="283" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="UTF8String"/>
</avp>
<avp name="Disconnect-Cause" code="273" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Rebooting" code="0"/>
<enum name="Busy" code="2"/>
<enum name="Do not want to talk to you" code="2"/>
</avp>
<avp name="Error-Message" code="281" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="UTF8String"/>
</avp>
<avp name="Error-Reporting-Host" code="294" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Failed-AVP" code="279" mandatory="must" may-encrypt="no" vendor-bit="mustnot">
<type type-name="OctetString"/>
</avp>
<avp name="Firmware-Revision" code="267" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Host-IP-Address" code="257" mandatory="must" protected="mustnot" may-encrypt="no" vendor-bit="mustnot">
<type type-name="IPAddress"/>
</avp>
<avp name="Multi-Round-Time-Out" code="272" mandatory="must" may-encrypt="yes" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Origin-Host" code="264" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Origin-Realm" code="296" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="UTF8String"/>
</avp>
<avp name="Origin-State-Id" code="278" mandatory="must" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Product-Name" code="269" mandatory="mustnot" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="UTF8String"/>
</avp>
<avp name="Proxy-Host" code="280" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Proxy-Info" code="284" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="OctetString"/>
</avp>
<avp name="Redirect-Host" code="292" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Redirect-Host-Usage" code="261" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Don't Care" code="0"/>
<enum name="All Session" code="1"/>
<enum name="All Realm" code="2"/>
<enum name="Realm and Application" code="3"/>
<enum name="All Application" code="4"/>
<enum name="All Host" code="5"/>
</avp>
<avp name="Redirect-Max-Cache-Time" code="262" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Result-Code" code="268" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Route-Record" code="282" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Session-Id" code="263" mandatory="must" protected="mustnot" vendor-bit="mustnot">
<type type-name="UTF8String"/>
</avp>
<avp name="Session-Binding" code="270" mandatory="must" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
</avp>
<avp name="Session-Server-Failover" code="271" mandatory="must" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Refuse Service" code="0"/>
<enum name="Try Again" code="1"/>
<enum name="Allow Service" code="2"/>
<enum name="Try Again / Allow Service" code="3"/>
</avp>
<avp name="Source-Route" code="286" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="Supported-Vendor-Id" code="265" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="VendorId"/>
</avp>
<avp name="Termination-Cause" code="295" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="Unsigned32"/>
<enum name="Logout" code="1"/>
<enum name="Service Not Provided" code="2"/>
<enum name="Bad Answer" code="3"/>
<enum name="Administrative" code="4"/>
<enum name="Link Broken" code="5"/>
</avp>
<avp name="Vendor-Id" code="266" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<type type-name="VendorId"/>
</avp>
<avp name="Vendor-Specific-Application-Id" code="260" mandatory="must" may-encrypt="no" protected="mustnot" vendor-bit="mustnot">
<grouped>
<gavp name="Vendor-Id"/>
<gavp name="Auth-Application-Id"/>
<gavp name="Acct-Application-Id"/>
</grouped>
</avp>
<avp name="Example-AVP" code="999999" mandatory="mustnot" vendor-bit="may">
<grouped>
<gavp name="Origin-Host"/>
<gavp name="Host-IP-Address"/>
</grouped>
</avp>
<!-- ************************ END DIAMETER BASE PROTOCOL AVPS ******************* -->
</base>
&nasreq;
&mobileipv4;
&sunping;
</dictionary>

62
mobileipv4.xml Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<application id="4" name="Mobile IPv4 Application" uri="ftp://ftp.ietf.org/internet-drafts/draft-ietf-aaa-diameter-mobileip-07.txt">
<!-- Mobile-IPv4 Application -->
<command name="AA-Mobile-Node" code="260" vendor-id="None"/>
<command name="Home-Agent-MIP" code="262" vendor-id="None"/>
<!-- ************************** Mobile-IPv4 AVPS ********************* -->
<avp name="MIP-Filter-Rule" code="347" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="IPFilterRule"/>
</avp>
<avp name="MIP-Auth-Input-Data-Length" code="338" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="Unsigned32"/>
</avp>
<avp name="MIP-Authenticator-Length" code="339" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="Unsigned32"/>
</avp>
<avp name="MIP-Authenticator-Offset" code="340" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="Unsigned32"/>
</avp>
<avp name="MIP-FA-Challenge" code="344" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="OctetString"/>
</avp>
<avp name="MIP-Feature-Vector" code="337" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="Unsigned32"/>
</avp>
<avp name="MIP-Foreign-Agent-Host" code="330" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="MIP-Home-Agent-Address" code="334" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="IPAddress"/>
</avp>
<avp name="MIP-MN-AAA-Auth" code="322" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<grouped>
<gavp name="MIP-MN-AAA-SPI"/>
<gavp name="MIP-Auth-Input-Data-Length"/>
<gavp name="MIP-Authenticator-Length"/>
<gavp name="MIP-Authenticator-Offset"/>
</grouped>
</avp>
<avp name="MIP-MN-AAA-SPI" code="341" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="Unsigned32"/>
</avp>
<avp name="MIP-Mobile-Node-Address" code="333" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="IPAddress"/>
</avp>
<avp name="MIP-Previous-FA-Addr" code="336" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="IPAddress"/>
</avp>
<avp name="MIP-Previous-FA-Host" code="335" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="DiameterIdentity"/>
</avp>
<avp name="MIP-Reg-Request" code="320" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="MIPRegistrationRequest"/>
</avp>
<avp name="MIP-Reg-Reply" code="321" mandatory="must" vendor-bit="mustnot" may-encrypt="yes">
<type type-name="OctetString"/>
</avp>
<!-- ************************ END Mobile-IPv4 AVPS ******************* -->
</application>

291
nasreq.xml Normal file
View File

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="UTF-8"?>
<application id="1" name="NASREQ Application" uri="ftp://ftp.ietf.org/internet-drafts/draft-calhoun-diameter-nasreq-06.txt">
<command name="AA-Request" code="260" vendor-id="None"/>
<command name="AA-Answer" code="260" vendor-id="None"/>
<!-- ************************* RADIUS AVPs ************************ -->
<avp name="User-Name" code="1">
<type type-name="UTF8String"/>
</avp>
<avp name="User-Password" code="2">
<type type-name="OctetString"/>
</avp>
<avp name="CHAP-Password" code="3">
<type type-name="OctetString"/>
</avp>
<avp name="NAS-IP-Address" code="4">
<type type-name="IPAddress"/>
</avp>
<avp name="NAS-Port" code="5">
<type type-name="Integer32"/>
</avp>
<avp name="Service-Type" code="6">
<type type-name="Unsigned32"/>
<enum name="Labels" code="3"/>
<enum name="RSVP" code="1"/>
<enum name="TOS" code="2"/>
</avp>
<avp name="Framed-Protocol" code="7">
<type type-name="Unsigned32"/>
<enum name="ARA" code="3"/>
<enum name="Ascend-ARA" code="255"/>
<enum name="COMB" code="260"/>
<enum name="EURAW" code="257"/>
<enum name="EUUI" code="258"/>
<enum name="FR" code="261"/>
<enum name="Gandalf" code="4"/>
<enum name="MPP" code="256"/>
<enum name="PPP" code="1"/>
<enum name="SLIP" code="2"/>
<enum name="X25" code="259"/>
<enum name="Xylogics" code="5"/>
</avp>
<avp name="Framed-IP-Address" code="8">
<type type-name="IPAddress"/>
</avp>
<avp name="Framed-IP-Netmask" code="9">
<type type-name="IPAddress"/>
</avp>
<avp name="Framed-Routing" code="10">
<type type-name="Unsigned32"/>
<enum name="Broadcast" code="1"/>
<enum name="Broadcast-Listen" code="3"/>
<enum name="Listen" code="2"/>
<enum name="None" code="0"/>
</avp>
<avp name="Filter-Id" code="11">
<type type-name="UTF8String"/>
</avp>
<avp name="Framed-MTU" code="12">
<type type-name="Integer32"/>
</avp>
<avp name="Framed-Compression" code="13">
<type type-name="Unsigned32"/>
<enum name="IPX-Header-Compression" code="2"/>
<enum name="None" code="0"/>
<enum name="Van-Jacobson-TCP-IP" code="1"/>
</avp>
<avp name="Login-IP-Host" code="14">
<type type-name="IPAddress"/>
</avp>
<avp name="Login-Service" code="15">
<type type-name="Unsigned32"/>
<enum name="LAT" code="4"/>
<enum name="PortMaster" code="3"/>
<enum name="Rlogin" code="1"/>
<enum name="TCP-Clear" code="2"/>
<enum name="Telnet" code="0"/>
<enum name="X25-PAD" code="5"/>
<enum name="X25-T3POS" code="6"/>
</avp>
<avp name="Login-TCP-Port" code="16">
<type type-name="Integer32"/>
</avp>
<avp name="Old-Password" code="17">
<type type-name="OctetString"/>
</avp>
<avp name="Reply-Message" code="18">
<type type-name="UTF8String"/>
</avp>
<avp name="Callback-Number" code="19">
<type type-name="OctetString"/>
</avp>
<avp name="Callback-Id" code="20">
<type type-name="OctetString"/>
</avp>
<avp name="Framed-Route" code="22">
<type type-name="UTF8String"/>
</avp>
<avp name="Framed-IPX-Network" code="23">
<type type-name="OctetString"/>
</avp>
<avp name="State" code="24">
<type type-name="OctetString"/>
</avp>
<avp name="Class" code="25">
<type type-name="OctetString"/>
</avp>
<avp name="Vendor-Specific" code="26">
<type type-name="Unsigned32"/>
<!-- Should vendors be enum'ed? -->
</avp>
<avp name="Session-Timeout" code="27">
<type type-name="Integer32"/>
</avp>
<avp name="Idle-Timeout" code="28">
<type type-name="Integer32"/>
</avp>
<avp name="Termination-Action" code="29">
<type type-name="Unsigned32"/>
<enum name="Default" code="0"/>
<enum name="RADIUS-Request" code="1"/>
</avp>
<avp name="Called-Station-Id" code="30">
<type type-name="OctetString"/>
</avp>
<avp name="Calling-Station-Id" code="31">
<type type-name="OctetString"/>
</avp>
<avp name="NAS-Identifier" code="32">
<type type-name="OctetString"/>
</avp>
<avp name="Proxy-State" code="33">
<type type-name="OctetString"/>
</avp>
<avp name="Login-LAT-Service" code="34">
<type type-name="OctetString"/>
</avp>
<avp name="Login-LAT-Node" code="35">
<type type-name="OctetString"/>
</avp>
<avp name="Login-LAT-Group" code="36">
<type type-name="OctetString"/>
</avp>
<avp name="Framed-AppleTalk-Link" code="37">
<type type-name="Integer32"/>
</avp>
<avp name="Framed-AppleTalk-Network" code="38">
<type type-name="Integer32"/>
</avp>
<avp name="Framed-AppleTalk-Zone" code="39">
<type type-name="OctetString"/>
</avp>
<avp name="Acct-Status-Type" code="40">
<type type-name="Unsigned32"/>
<enum name="Accounting-Off" code="8"/>
<enum name="Accounting-On" code="7"/>
<enum name="Alive" code="3"/>
<enum name="Cancel" code="6"/>
<enum name="Modem-Start" code="4"/>
<enum name="Modem-Stop" code="5"/>
<enum name="Start" code="1"/>
<enum name="Stop" code="2"/>
</avp>
<avp name="Acct-Delay-Time" code="41">
<type type-name="Integer32"/>
</avp>
<avp name="Acct-Input-Octets" code="42">
<type type-name="Integer32"/>
</avp>
<avp name="Acct-Output-Octets" code="43">
<type type-name="Integer32"/>
</avp>
<avp name="Acct-Session-Id" code="44" mandatory="must">
<type type-name="OctetString"/>
</avp>
<avp name="Acct-Authentic" code="45">
<type type-name="Unsigned32"/>
<enum name="Local" code="2"/>
<enum name="None" code="0"/>
<enum name="RADIUS" code="1"/>
</avp>
<avp name="Acct-Session-Time" code="46">
<type type-name="Integer32"/>
</avp>
<avp name="Acct-Input-Packets" code="47">
<type type-name="Integer32"/>
</avp>
<avp name="Acct-Output-Packets" code="48">
<type type-name="Integer32"/>
</avp>
<avp name="Acct-Terminate-Cause" code="49">
<type type-name="Unsigned32"/>
<enum name="Admin-Reboot" code="7"/>
<enum name="Admin-Reset" code="6"/>
<enum name="Callback" code="16"/>
<enum name="Host-Request" code="18"/>
<enum name="Idle-Timeout" code="4"/>
<enum name="Lost-Carrier" code="2"/>
<enum name="Lost-Service" code="3"/>
<enum name="NAS-Error" code="9"/>
<enum name="NAS-Reboot" code="11"/>
<enum name="NAS-Request" code="10"/>
<enum name="Port-Error" code="8"/>
<enum name="Port-Preempted" code="13"/>
<enum name="Port-Suspended" code="14"/>
<enum name="Port-Unneeded" code="12"/>
<enum name="Service-Unavailable" code="15"/>
<enum name="Session-Timeout" code="5"/>
<enum name="User-Error" code="17"/>
<enum name="User-Request" code="1"/>
</avp>
<avp name="Acct-Multi-Session-Id" code="50">
<type type-name="OctetString"/>
</avp>
<avp name="Acct-Link-Count" code="51">
<type type-name="Integer32"/>
</avp>
<avp name="CHAP-Challenge" code="60">
<type type-name="OctetString"/>
</avp>
<avp name="NAS-Port-Type" code="61">
<type type-name="Unsigned32"/>
<enum name="Async" code="0"/>
<enum name="HDLC-Clear-Channel" code="7"/>
<enum name="ISDN-Async-v110" code="4"/>
<enum name="ISDN-Async-v120" code="3"/>
<enum name="ISDN-Sync" code="2"/>
<enum name="PIAFS" code="6"/>
<enum name="Sync" code="1"/>
<enum name="Virtual" code="5"/>
<enum name="X25" code="8"/>
<enum name="X75" code="9"/>
</avp>
<avp name="Port-Limit" code="62">
<type type-name="Integer32"/>
</avp>
<avp name="Login-LAT-Port" code="63">
<type type-name="OctetString"/>
</avp>
<avp name="Tunnel-Type" code="64">
<type type-name="Unsigned32"/>
<enum name="PPTP" code="1"/>
<enum name="L2F" code="2"/>
<enum name="L2TP" code="3"/>
<enum name="ATMP" code="4"/>
<enum name="VTP" code="5"/>
<enum name="AH" code="6"/>
<enum name="IP-IP-Encap" code="7"/>
<enum name="MIN-IP-IP" code="8"/>
<enum name="ESP" code="9"/>
<enum name="GRE" code="10"/>
<enum name="DVS" code="11"/>
<enum name="IP-IP" code="12"/>
</avp>
<avp name="Tunnel-Medium-Type" code="65">
<type type-name="Unsigned32"/>
<enum name="IPv4" code="1"/>
<enum name="IPv6" code="2"/>
<enum name="NSAP" code="3"/>
<enum name="HDLC" code="4"/>
<enum name="BBN" code="5"/>
<enum name="IEEE-802" code="6"/>
<enum name="E-163" code="7"/>
<enum name="E-164" code="8"/>
<enum name="F-69" code="9"/>
<enum name="X-121" code="10"/>
<enum name="IPX" code="11"/>
<enum name="Appletalk-802" code="12"/>
<enum name="Decnet4" code="13"/>
<enum name="Vines" code="14"/>
<enum name="E-164-NSAP" code="15"/>
</avp>
<avp name="Tunnel-Client-Endpoint" code="66">
<type type-name="OctetString"/>
</avp>
<avp name="Tunnel-Server-Endpoint" code="67">
<type type-name="OctetString"/>
</avp>
<avp name="Tunnel-Connection-ID" code="68">
<type type-name="OctetString"/>
</avp>
<avp name="Tunnel-Password" code="69">
<type type-name="OctetString"/>
</avp>
<avp name="Tunnel-Assignment-Id" code="82">
<type type-name="OctetString"/>
</avp>
</application>

View File

@ -1,8 +1,11 @@
/*
* Filename: packet-diameter-defs.h
* WARNING: This file was automatically generated by dict2h.pl. Modifications
* will be erased by next invocation of dictionary parser.
*
* This file contains the static definitions of the Diameter base protocol
* AVPs. If libxml is in the LD_LIBRARY_PATH, and dictionary.xml exists,
* then it will not be used.
*
* $Id: packet-diameter-defs.h,v 1.6 2001/11/01 21:52:44 guy Exp $
* Generated: Fri Feb 23 13:04:15 2001
*/
@ -12,26 +15,6 @@
/* Type to string table */
static value_string diameter_avp_type_vals[]={
{ 1, "OctetString" },
{ 2, "Integer32" },
{ 3, "Integer64" },
{ 4, "Unsigned32" },
{ 5, "Unsigned64" },
{ 6, "Float32" },
{ 7, "Float64" },
{ 8, "Float128" },
{ 9, "Grouped" },
{ 10, "IpAddress" },
{ 11, "Time" },
{ 12, "UTF8String" },
{ 13, "DiameterIdentity" },
{ 14, "Enumerated" },
{ 15, "IPFilterRule" },
{ 16, "QOSFilterRule" },
{0, (char *)NULL}
};
/* Attribute to String tables */
static value_string diameter_service_type_vals[]={
{5, "Outbound"},
@ -99,6 +82,7 @@ static value_string diameter_vendor_specific_vendors[]= {
{529, "Ascend"},
{1584, "Bay Networks"},
{2636, "Juniper Networks"},
{5925, "ipUnplugged"},
{0,NULL}
};
@ -258,7 +242,23 @@ static value_string diameter_termination_cause_vals[]= {
{0,NULL}
};
static struct avp_info diameter_avps[] = {
static value_string diameter_mip_algorithm_type[] = {
{1, "MD5 Prefix/Suffix"},
{2, "HMAC-MD5"},
{3, "HMAC-SHA1"},
{0, NULL}
};
static value_string diameter_mip_replay_type[] = {
{1, "None"},
{2, "Nonce"},
{3, "Timestamp"},
{0, NULL}
};
static struct old_avp_info old_diameter_avps[] = {
/* Radius Attributes */
{ 1, "User-Name", DIAMETER_UTF8STRING, (value_string *)NULL},
{ 2, "User-Password", DIAMETER_OCTET_STRING, (value_string *)NULL},
@ -349,7 +349,7 @@ static struct avp_info diameter_avps[] = {
{ 278, "Origin-State-Id", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 269, "Product-Name", DIAMETER_UTF8STRING, (value_string *)NULL},
{ 280, "Proxy-Host", DIAMETER_IDENTITY, (value_string *)NULL},
{ 284, "Proxy-Info", DIAMETER_OCTET_STRING,(value_string *)NULL},
{ 284, "Proxy-Info", DIAMETER_GROUPED, (value_string *)NULL},
{ 292, "Redirect-Host", DIAMETER_IDENTITY, (value_string *)NULL},
{ 261, "Redirect-Host-Usage", DIAMETER_ENUMERATED, diameter_redirect_host_usage_vals},
{ 262, "Redirect-Max-Cache-Time", DIAMETER_UNSIGNED32, (value_string *)NULL},
@ -363,7 +363,34 @@ static struct avp_info diameter_avps[] = {
{ 295, "Termination-Cause", DIAMETER_ENUMERATED, diameter_termination_cause_vals},
{ 266, "Vendor-Id", DIAMETER_ENUMERATED, diameter_vendor_specific_vendors},
{ 260, "Vendor-Specific-Application-Id", DIAMETER_GROUPED, (value_string *)NULL},
{0, (char *)NULL, 0, (value_string*)NULL}
/* Diameter Mobile IP AVPs */
{ 318, "MIP-FA-to-HA-SPI", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 319, "MIP-FA-to-MN-SPI", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 320, "MIP-Reg-Request", DIAMETER_MIP_REG_REQ, (value_string *)NULL},
{ 321, "MIP-Reg-Reply", DIAMETER_OCTET_STRING, (value_string *)NULL},
{ 322, "MIP-MN-AAA-Auth", DIAMETER_GROUPED, (value_string *)NULL},
{ 325, "MIP-MN-to-FA-KEY", DIAMETER_GROUPED, (value_string *)NULL},
{ 326, "MIP-FA-to-MN-KEY", DIAMETER_GROUPED, (value_string *)NULL},
{ 328, "MIP-FA-to-HA-KEY", DIAMETER_GROUPED, (value_string *)NULL},
{ 329, "MIP-HA-to-FA-KEY", DIAMETER_GROUPED, (value_string *)NULL},
{ 330, "MIP-Foreign-Agent-Host", DIAMETER_IDENTITY, (value_string *)NULL},
{ 331, "MIP-MN-to-HA-KEY", DIAMETER_GROUPED, (value_string *)NULL},
{ 333, "MIP-Mobile-Node-Address", DIAMETER_IP_ADDRESS, (value_string *)NULL},
{ 334, "MIP-Home-Agent-Address", DIAMETER_IP_ADDRESS, (value_string *)NULL},
{ 335, "MIP-Key-Material", DIAMETER_OCTET_STRING, (value_string *)NULL},
{ 337, "MIP-Feature-Vector", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 338, "MIP-Auth-Input-Data-Length", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 339, "MIP-Authenticator-Length", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 340, "MIP-Authenticator-Offset", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 341, "MIP-MN-AAA-SPI", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 342, "MIP-PEER-SPI", DIAMETER_UNSIGNED32, (value_string *)NULL},
{ 343, "MIP-Session-Key", DIAMETER_OCTET_STRING, (value_string *)NULL},
{ 344, "MIP-FA-Challenge", DIAMETER_OCTET_STRING, (value_string *)NULL},
{ 345, "MIP-Algorithm-Type", DIAMETER_ENUMERATED, diameter_mip_algorithm_type},
{ 346, "MIP-Algorithm-Type", DIAMETER_ENUMERATED, diameter_mip_replay_type},
{ 347, "MIP-Filter-Rule", DIAMETER_IP_FILTER_RULE, (value_string *)NULL},
{ 398, "MIP-Key-Lifetime", DIAMETER_UNSIGNED32, (value_string *)NULL},
{0, (char *)NULL, 0, (value_string*)NULL}
};
@ -378,6 +405,9 @@ static value_string diameter_command_code_vals[] = {
{282, "Disconnect-Peer"},
{258, "Re-Auth"},
{275, "Session-Termination"},
/* Mip Protocol */
{262, "Home-Agent-MIP"},
{260, "AA-Mobile-Node"},
{0, (char *)NULL}
};

File diff suppressed because it is too large Load Diff

22
sunping.xml Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<application id="555" name="Sun Ping Application" uri="ftp://ftp.ietf.org/internet-drafts/draft-calhoun-diameter-sun-ping-02.txt">
<!-- *********************** Commands ***************************** -->
<!-- Sun Ping Extension -->
<command name="Ping" code="511" vendor-id="Sun"/>
<!-- ********************** End Commands ************************** -->
<!-- ************************ Sun Ping Extension AVPS ******************* -->
<avp name="Ping-Timestamp-Secs" code="1" vendor-id="Sun" mandatory="mustnot" vendor-bit="must">
<type type-name="Unsigned32"/>
</avp>
<avp name="Ping-Timestamp-Usecs" code="2" vendor-id="Sun" mandatory="mustnot" vendor-bit="must">
<type type-name="Unsigned32"/>
</avp>
<avp name="Ping-Timestamp" code="3" vendor-id="Sun" mandatory="mustnot" vendor-bit="must">
<grouped>
<gavp name="Ping-Timestamp-Secs"/>
<gavp name="Ping-Timestamp-Usecs"/>
</grouped>
</avp>
<!-- ********************** End Sun Ping Extension AVPS ***************** -->
<!-- ************************ Sun PING Extension AVPs ***************************-->
</application>

167
xmlstub.c Normal file
View File

@ -0,0 +1,167 @@
/* xmlstub.c
* Routines to parse XML files using libxml2. This stub
* exists so that the library can be loaded on systems that
* have it.
*
* $Id: xmlstub.c,v 1.1 2001/11/01 21:52:44 guy Exp $
*
* Copyright (c) 2001 by David Frascone <dave@frascone.com>
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998-2001 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that 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.
*/
#include <glib.h>
#include <gmodule.h>
/* XML Stub routines */
#define IN_XMLSTUB
#include "xmlstub.h"
/*
* This routine will dynamically load libxml2 and will populate the
* XmlStub pointer structure.
*
* On any error, it will return non-zero, and it should be assumed that
* the current platform does not have dynamic library support, or does
* not have libxml2 installed.
*/
int
loadLibXML()
{
GModule *handle;
gpointer symbol;
int error=FALSE;
if (XmlStubInitialized) {
/* Did you ever get the feeling you've been here before? */
/*
* This is not thread safe. With threads, we'd need to
* synchronize all this so two threads can't initialize at once.
*/
return 0;
}
/* Check to see if gmodule is supported */
if (!g_module_supported()) {
g_warning("XMLStub: Modules are not supported. Not initializing XML Stub");
return (-1);
}
/* open the dll. Is this named something different
* under windows? Perhaps we should check . . .
*/
if ((handle = g_module_open(XML_LIBRARY, G_MODULE_BIND_LAZY)) == NULL) {
g_warning("XMLStub: Unable to open module " XML_LIBRARY);
return (-1);
}
/*
* Now that the library is open, copy all our relevant
* function pointers and integer pointers into our structure.
*/
if (!g_module_symbol(handle, "xmlParseFile", &symbol)) {
g_warning("Unable to find \"xmlParseFile\"");
error=TRUE;
}
XmlStub.xmlParseFile= (xmlDocPtr(*)(const char *))symbol;
if (!g_module_symbol(handle, "xmlStrcmp", &symbol)) {
g_warning("Unable to find \"xmlStrcmp\"");
error=TRUE;
}
XmlStub.xmlStrcmp= (int (*)(const xmlChar *, const xmlChar *))symbol;
if (!g_module_symbol(handle, "xmlCreatePushParserCtxt", &symbol)) {
g_warning("Unable to find \"xmlCreatePushParserCtxt\"");
error=TRUE;
}
XmlStub.xmlCreatePushParserCtxt=(xmlParserCtxtPtr (*)
(xmlSAXHandlerPtr, void *, const char *,
int, const char *)) symbol;
if (!g_module_symbol(handle, "xmlParseChunk", &symbol)) {
g_warning("Unable to find \"xmlParseChunk\"");
error=TRUE;
}
XmlStub.xmlParseChunk=(int (*)(xmlParserCtxtPtr, const char *, int, int))symbol;
if (!g_module_symbol(handle, "xmlFreeParserCtxt", &symbol)) {
g_warning("Unable to find \"xmlFreeParserCtxt\"");
error=TRUE;
}
XmlStub.xmlFreeParserCtxt=(void (*)(xmlParserCtxtPtr))symbol;
if (!g_module_symbol(handle, "xmlDocGetRootElement", &symbol)) {
g_warning("Unable to find \"xmlDocGetRootElement\"");
error=TRUE;
}
XmlStub.xmlDocGetRootElement=(xmlNodePtr(*)(xmlDocPtr))symbol;
if (!g_module_symbol(handle, "xmlFreeDoc", &symbol)) {
g_warning("Unable to find \"xmlFreeDoc\"");
error=TRUE;
}
XmlStub.xmlFreeDoc=(void (*)(xmlDocPtr))symbol;
if (!g_module_symbol(handle, "xmlNodeListGetString", &symbol)) {
g_warning("Unable to find \"xmlNodeListGetString\"");
error=TRUE;
}
XmlStub.xmlNodeListGetString=(char * (*)(xmlDocPtr, xmlNodePtr, int))symbol;
if (!g_module_symbol(handle, "xmlGetProp", &symbol)) {
g_warning("Unable to find \"xmlGetProp\"");
error=TRUE;
}
XmlStub.xmlGetProp=(char * (*)(xmlNodePtr, char *))symbol;
if (!g_module_symbol(handle, "xmlKeepBlanksDefault", &symbol)) {
g_warning("Unable to find \"xmlKeepBlanksDefault\"");
error=TRUE;
}
XmlStub.xmlKeepBlanksDefault=(int(*)(int))symbol;
if (!g_module_symbol(handle, "xmlSubstituteEntitiesDefault", &symbol)) {
g_warning("Unable to find \"xmlSubstituteEntitiesDefault\"");
error=TRUE;
}
XmlStub.xmlSubstituteEntitiesDefault=(int(*)(int))symbol;
if (!g_module_symbol(handle, "xmlDoValidityCheckingDefaultValue", &symbol)) {
g_warning("Unable to find \"xmlDoValidityCheckingDefaultValue\"");
error=TRUE;
}
XmlStub.xmlDoValidityCheckingDefaultValue = (int *)symbol;
/*
* Return if any of the above functions set our error flag.
* A flag was used, instead of returning immediately, so
* that *all* unresolved symbols would be printed.
*/
if (error) {
g_module_close(handle);
return (-1);
}
/* Set our global so that we don't try to load twice */
XmlStubInitialized=1;
return 0; /* Success! */
} /* loadLibXML */

1119
xmlstub.h Normal file

File diff suppressed because it is too large Load Diff