diff options
author | Anders Broman <anders.broman@ericsson.com> | 2009-06-26 05:48:03 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2009-06-26 05:48:03 +0000 |
commit | 6a5ea97ff63a2cdf87e6cc1afb452152d7c72d56 (patch) | |
tree | c3a4199aecef06e1b5ef5f9483c2155ad076aafb | |
parent | 9733aadcfe443d4f682dc4e922499fb123fd5a64 (diff) | |
download | wireshark-6a5ea97ff63a2cdf87e6cc1afb452152d7c72d56.tar.gz |
From Sebastien Decugis:
Add Missing Diameter EAP support.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3600
svn path=/trunk/; revision=28849
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | diameter/dictionary.xml | 7 | ||||
-rw-r--r-- | diameter/eap.xml | 22 | ||||
-rw-r--r-- | diameter/nasreq.xml | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-diameter.c | 22 | ||||
-rw-r--r-- | packaging/nsis/wireshark.nsi | 1 |
6 files changed, 53 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index 87dfa6fae9..f00404defb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -72,6 +72,7 @@ diameter_DATA = \ diameter/chargecontrol.xml \ diameter/dictionary.dtd \ diameter/dictionary.xml \ + diameter/eap.xml \ diameter/Ericsson.xml \ diameter/etsie2e4.xml \ diameter/gqpolicy.xml \ diff --git a/diameter/dictionary.xml b/diameter/dictionary.xml index e61e058c1d..5db9f15a3d 100644 --- a/diameter/dictionary.xml +++ b/diameter/dictionary.xml @@ -6,6 +6,7 @@ <!DOCTYPE dictionary SYSTEM "dictionary.dtd" [ <!ENTITY nasreq SYSTEM "nasreq.xml"> + <!ENTITY eap SYSTEM "eap.xml"> <!ENTITY mobileipv4 SYSTEM "mobileipv4.xml"> <!ENTITY chargecontrol SYSTEM "chargecontrol.xml"> <!ENTITY sunping SYSTEM "sunping.xml"> @@ -1338,6 +1339,11 @@ http://www.iana.org/assignments/radius-types <!-- AVP:s 349-362 Unassigned --> <!-- AVP:s 363 - 408 Belongs to Diameter Network Access Server Application and is defined in nasreq.xml --> <!-- AVP:s 411 - 461 Belongs to Carge Control and is defined in chargecontrol.xml --> +<!-- 462 EAP-Payload [RFC4072] + 463 EAP-Reissued-Payload [RFC4072] + 464 EAP-Master-Session-Key [RFC4072] + 465 Accounting-EAP-Auth-Method [RFC4072] +--> <!-- 466-479 Unallocated --> <avp name="Accounting-Record-Type" code="480" mandatory="must" may-encrypt="yes" vendor-bit="mustnot"> <type type-name="Enumerated"/> @@ -3639,6 +3645,7 @@ http://www.3gcn.org/3gpp2/TSGX/Projects/X.P0013-B%20IP%20Network%20-%20MMD/X.S00 <command name="3GPP-ME-Identity-Check" code="324" vendor-id="None"/> <!--[3GPP TS 29.272][RFC5516] --> </application> &nasreq; + &eap; &mobileipv4; &chargecontrol; &sunping; diff --git a/diameter/eap.xml b/diameter/eap.xml new file mode 100644 index 0000000000..8cc074fcc1 --- /dev/null +++ b/diameter/eap.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- $Id$ --> +<application id="5" name="EAP Application" uri="http://www.ietf.org/rfc/rfc4072.txt"> + + <command name="Diameter-EAP" code="268" vendor-id="None"/> + + <avp name="EAP-Payload" code="462"> + <type type-name="OctetString"/> + </avp> + <avp name="EAP-Reissued-Payload" code="463"> + <type type-name="OctetString"/> + </avp> + <avp name="EAP-Master-Session-Key" code="464"> + <type type-name="OctetString"/> + </avp> + <avp name="EAP-Key-Name" code="102"> + <type type-name="OctetString"/> + </avp> + <avp name="Accounting-EAP-Auth-Method" code="465"> + <type type-name="Unsigned64"/> + </avp> + </application> diff --git a/diameter/nasreq.xml b/diameter/nasreq.xml index 8c5f48dbef..a196a04f60 100644 --- a/diameter/nasreq.xml +++ b/diameter/nasreq.xml @@ -3,7 +3,6 @@ <application id="1" name="NASREQ Application" uri="http://www.ietf.org/rfc/rfc4005.txt"> <command name="AA" code="265" vendor-id="None"/> - <command name="Diameter-EAP" code="268" vendor-id="None"/> <avp name="Accounting-Input-Octets" code="363"> <type type-name="Unsigned64"/> diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c index 892cd3481f..6d5e46d914 100644 --- a/epan/dissectors/packet-diameter.c +++ b/epan/dissectors/packet-diameter.c @@ -190,6 +190,7 @@ static diam_dictionary_t dictionary = { NULL, NULL, NULL, NULL }; static struct _build_dict build_dict; static const value_string* vnd_short_vs; static dissector_handle_t data_handle; +static dissector_handle_t eap_handle; static const value_string diameter_avp_data_addrfamily_vals[]= { {1,"IPv4"}, @@ -309,6 +310,19 @@ dissect_diameter_vedor_id(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree } +static int +dissect_diameter_eap_payload(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + gboolean save_writable; + + /* Ensure the packet is displayed as Diameter, not EAP */ + save_writable = col_get_writable(pinfo->cinfo); + col_set_writable(pinfo->cinfo, FALSE); + + call_dissector(eap_handle, tvb, pinfo, tree); + + col_set_writable(pinfo->cinfo, save_writable); + return tvb_length(tvb); +} /* Dissect an AVP at offset */ static int @@ -1357,10 +1371,18 @@ proto_reg_handoff_diameter(void) diameter_tcp_handle = create_dissector_handle(dissect_diameter_tcp, proto_diameter); data_handle = find_dissector("data"); + eap_handle = find_dissector("eap"); /* Register special decoding for some AVP:s */ /* AVP Code: 266 Vendor-Id */ dissector_add("diameter.base", 266, new_create_dissector_handle(dissect_diameter_vedor_id, proto_diameter)); + /* AVP Code: 462 EAP-Payload */ + dissector_add("diameter.base", 462, + new_create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); + /* AVP Code: 463 EAP-Reissued-Payload */ + dissector_add("diameter.base", 463, + new_create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); + Initialized=TRUE; } else { range_foreach(diameter_tcp_port_range, range_delete_callback); diff --git a/packaging/nsis/wireshark.nsi b/packaging/nsis/wireshark.nsi index 796fe40aa7..ba3a6c8516 100644 --- a/packaging/nsis/wireshark.nsi +++ b/packaging/nsis/wireshark.nsi @@ -463,6 +463,7 @@ SetOutPath $INSTDIR\diameter File "..\..\diameter\chargecontrol.xml" File "..\..\diameter\dictionary.dtd" File "..\..\diameter\dictionary.xml" +File "..\..\diameter\eap.xml" File "..\..\diameter\Ericsson.xml" File "..\..\diameter\etsie2e4.xml" File "..\..\diameter\gqpolicy.xml" |