aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mpls.c
diff options
context:
space:
mode:
authorrbalint <rbalint@f5534014-38df-0310-8fa8-9805f1628bb7>2009-04-27 16:57:02 +0000
committerrbalint <rbalint@f5534014-38df-0310-8fa8-9805f1628bb7>2009-04-27 16:57:02 +0000
commite87fbf6fffe8238f834eecf7c79911573fb4255a (patch)
treef0eeac9b92aa5b2df91cc446d193e2ce976ba9d1 /epan/dissectors/packet-mpls.c
parentebbffb2cbb8c084d296525b5ccef92f2757a243c (diff)
From Artem Tamazov: SAToP and CESoPSN MPLS PW support.
Introduction of decoding of MPLS payloads as CESoPSN PW (RFC5086) and SAToP PW (RFC4553). Not supported yet: - CESoPSN Basic NxDS0 mode. - Decoding of <Optional> RTP Headers (RFC3550) - Decoding of PW payload git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@28181 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-mpls.c')
-rw-r--r--epan/dissectors/packet-mpls.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/epan/dissectors/packet-mpls.c b/epan/dissectors/packet-mpls.c
index 91c17b2368..64f0d6a082 100644
--- a/epan/dissectors/packet-mpls.c
+++ b/epan/dissectors/packet-mpls.c
@@ -98,12 +98,14 @@ static dissector_handle_t dissector_pw_hdlc_nocw_fr;
static dissector_handle_t dissector_pw_hdlc_nocw_hdlc_ppp;
static dissector_handle_t dissector_pw_eth_cw;
static dissector_handle_t dissector_pw_eth_nocw;
+static dissector_handle_t dissector_pw_satop;
static dissector_handle_t dissector_itdm;
+static dissector_handle_t dissector_pw_cesopsn;
enum mpls_default_dissector_t {
MDD_PW_ETH_HEUR = 0
- ,MDD_FAKE_1
- ,MDD_FAKE_2
+ ,MDD_PW_SATOP
+ ,MDD_PW_CESOPSN
,MDD_MPLS_PW_FR_DLCI
,MDD_MPLS_PW_HDLC_NOCW_FRPORT
,MDD_MPLS_PW_HDLC_NOCW_HDLC_PPP
@@ -120,6 +122,16 @@ enum mpls_default_dissector_t {
*/
static enum_val_t mpls_default_payload_defs[] = {
{
+ "pw satop"
+ ,"SAToP (no RTP support)"
+ ,MDD_PW_SATOP
+ },
+ {
+ "pw cesopsn"
+ ,"CESoPSN basic NxDS0 mode (no RTP support)"
+ ,MDD_PW_CESOPSN
+ },
+ {
"mpls pw ethernet heuristic"
,"Ethernet MPLS PW (CW is heuristically detected)"
,MDD_PW_ETH_HEUR
@@ -128,7 +140,7 @@ static enum_val_t mpls_default_payload_defs[] = {
"mpls pw fr dlci"
,"Frame relay DLCI MPLS PW"
,MDD_MPLS_PW_FR_DLCI
- }, /*FIXME*/
+ },
{
"mpls pw hdlc no_cw fr_port"
,"HDLC MPLS PW (no CW), FR Port mode"
@@ -723,6 +735,12 @@ dissect_mpls(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
switch ( mpls_default_payload )
{
+ case MDD_PW_SATOP:
+ call_dissector(dissector_pw_satop, next_tvb, pinfo, tree);
+ break;
+ case MDD_PW_CESOPSN:
+ call_dissector(dissector_pw_cesopsn, next_tvb, pinfo, tree);
+ break;
case MDD_PW_ETH_HEUR:
call_dissector(dissector_pw_eth_heuristic, next_tvb, pinfo, tree);
break;
@@ -824,7 +842,9 @@ proto_reg_handoff_mpls(void)
dissector_pw_hdlc_nocw_hdlc_ppp = find_dissector("pw_hdlc_nocw_hdlc_ppp");
dissector_pw_eth_cw = find_dissector("pw_eth_cw");
dissector_pw_eth_nocw = find_dissector("pw_eth_nocw");
+ dissector_pw_satop = find_dissector("pw_satop");
dissector_itdm = find_dissector("itdm");
+ dissector_pw_cesopsn = find_dissector("pw_cesopsn");
initialized = TRUE;
}