forked from osmocom/wireshark
From Aditya Ambadkar and Diana Chris:
Enhancement to LDP dissector to support changes proposed in RFC6391 - flow aware transport of PW over an MPLS PSN. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7046 svn path=/trunk/; revision=42894
This commit is contained in:
parent
859f794544
commit
7aa5527274
8
AUTHORS
8
AUTHORS
|
@ -3407,6 +3407,14 @@ Bill Schiller <bill.schiller [AT] emerson.com> {
|
|||
HART/IP dissector
|
||||
}
|
||||
|
||||
Aditya Ambadkar <arambadk [AT] ncsu.edu> {
|
||||
Support for flow label sub-tlv according to RFC 6391
|
||||
}
|
||||
|
||||
Diana Chris <dvchris [AT] ncsu.edu> {
|
||||
Support for flow label sub-tlv according to RFC 6391
|
||||
}
|
||||
|
||||
Guy Martin <gmsoft [AT] tuxicoman.be> {
|
||||
DVB-DATA MultiProtocol Encapsulation dissector
|
||||
DVB Event Information Table (EIT) dissector
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
* (c) Copyright 2011, Shobhank Sharma <ssharma5@ncsu.edu>
|
||||
* - update the VCCV bitmaps as per RFC 5885
|
||||
*
|
||||
* (c) Copyright 2012, Aditya Ambadkar and Diana Chris <arambadk,dvchris@ncsu.edu>
|
||||
* - support for the flowlabel sub-tlv as per RFC 6391
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
|
@ -184,6 +186,9 @@ static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd1 = -1;
|
|||
static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd2 = -1;
|
||||
static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd3 = -1;
|
||||
static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4 = -1;
|
||||
static int hf_ldp_tlv_fec_vc_intparam_flowlabel_t = -1; /* Flow label interface parameter RFC6391 */
|
||||
static int hf_ldp_tlv_fec_vc_intparam_flowlabel_r = -1; /* Flow label interface parameter RFC6391 */
|
||||
static int hf_ldp_tlv_fec_vc_intparam_flowlabel_res = -1; /* Flow label interface parameter RFC6391 */
|
||||
static int hf_ldp_tlv_lspid_act_flg = -1;
|
||||
static int hf_ldp_tlv_lspid_cr_lsp = -1;
|
||||
static int hf_ldp_tlv_lspid_ldpid = -1;
|
||||
|
@ -275,7 +280,6 @@ static int hf_ldp_tlv_intparam_vccv_cvtype_icmpping = -1;
|
|||
static int hf_ldp_tlv_intparam_vccv_cvtype_lspping = -1;
|
||||
static int hf_ldp_tlv_intparam_vccv_cvtype_bfd = -1;
|
||||
|
||||
|
||||
static int ett_ldp = -1;
|
||||
static int ett_ldp_header = -1;
|
||||
static int ett_ldp_ldpid = -1;
|
||||
|
@ -587,8 +591,7 @@ static const true_false_string fec_vc_tdmopt_f = {
|
|||
#define FEC_VC_INTERFACEPARAM_FCSRETENT 0x0A
|
||||
#define FEC_VC_INTERFACEPARAM_TDMOPTION 0x0B
|
||||
#define FEC_VC_INTERFACEPARAM_VCCV 0x0C
|
||||
|
||||
|
||||
#define FEC_VC_INTERFACEPARAM_FLOWLABEL 0x17
|
||||
|
||||
static const value_string fec_vc_interfaceparm[] = {
|
||||
{FEC_VC_INTERFACEPARAM_MTU, "MTU"},
|
||||
|
@ -603,6 +606,7 @@ static const value_string fec_vc_interfaceparm[] = {
|
|||
{FEC_VC_INTERFACEPARAM_FCSRETENT, "FCS retention indicator"},
|
||||
{FEC_VC_INTERFACEPARAM_TDMOPTION, "TDM options"},
|
||||
{FEC_VC_INTERFACEPARAM_VCCV, "VCCV"},
|
||||
{FEC_VC_INTERFACEPARAM_FLOWLABEL, "Flow Label"},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
|
@ -611,7 +615,10 @@ static const true_false_string fec_vc_cbit = {
|
|||
"Control Word NOT Present"
|
||||
};
|
||||
|
||||
|
||||
static const true_false_string fec_vc_ = {
|
||||
"Control Word Present",
|
||||
"Control Word NOT Present"
|
||||
};
|
||||
|
||||
static const value_string tlv_atm_merge_vals[] = {
|
||||
{0, "Merge not supported"},
|
||||
|
@ -877,7 +884,10 @@ dissect_tlv_fec(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem)
|
|||
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd1,
|
||||
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd2,
|
||||
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd3,
|
||||
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4
|
||||
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4,
|
||||
&hf_ldp_tlv_fec_vc_intparam_flowlabel_t,
|
||||
&hf_ldp_tlv_fec_vc_intparam_flowlabel_r,
|
||||
&hf_ldp_tlv_fec_vc_intparam_flowlabel_res,
|
||||
};
|
||||
|
||||
proto_tree *ti, *val_tree, *fec_tree=NULL;
|
||||
|
@ -2760,7 +2770,10 @@ dissect_subtlv_interface_parameters(tvbuff_t *tvb, guint offset, proto_tree *tre
|
|||
32 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd1,
|
||||
33 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd2,
|
||||
34 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd3,
|
||||
35 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4
|
||||
35 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4,
|
||||
36 - hf_ldp_tlv_fec_vc_intparam_flowlabel_t,
|
||||
37 - hf_ldp_tlv_fec_vc_intparam_flowlabel_r,
|
||||
38 - hf_ldp_tlv_fec_vc_intparam_flowlabel_res
|
||||
};
|
||||
#endif
|
||||
proto_tree *ti = proto_tree_add_text(tree, tvb, offset, rem, "Interface Parameter");
|
||||
|
@ -2855,6 +2868,12 @@ dissect_subtlv_interface_parameters(tvbuff_t *tvb, guint offset, proto_tree *tre
|
|||
proto_tree_add_item(vccvtype_tree, *interface_parameters_hf[31], tvb, offset+3, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(vccvtype_tree, *interface_parameters_hf[32], tvb, offset+3, 1, ENC_BIG_ENDIAN);
|
||||
break;
|
||||
case FEC_VC_INTERFACEPARAM_FLOWLABEL:
|
||||
proto_item_append_text(ti,": Flow Label for Pseudowire");
|
||||
proto_tree_add_item(vcintparam_tree, *interface_parameters_hf[36], tvb, offset+2, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(vcintparam_tree, *interface_parameters_hf[37], tvb, offset+2, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(vcintparam_tree, *interface_parameters_hf[38], tvb, offset+2, 2, ENC_BIG_ENDIAN);
|
||||
break;
|
||||
default: /* unknown */
|
||||
proto_item_append_text(ti," unknown");
|
||||
proto_tree_add_text(vcintparam_tree,tvb, offset+2, (intparam_len -2), "Unknown data");
|
||||
|
@ -3561,6 +3580,15 @@ proto_register_ldp(void)
|
|||
{ "BFD BFD PW-ACH-encapsulated, for PW Fault Detection and AC/PW Fault Status Signaling", "ldp.msg.tlv.fec.vc.intparam.vccv.cvtype_bfd4", FT_BOOLEAN, 8,
|
||||
NULL, 0x20, "VC FEC Interface Param VCCV CV Type BFD PW-ACH-encapsulated, for PW Fault Detection and AC/PW Fault Status Signaling", HFILL }},
|
||||
|
||||
{ &hf_ldp_tlv_fec_vc_intparam_flowlabel_t,
|
||||
{ "Flow Label Transmit bit", "ldp.msg.tlv.fec.vc.intparam.flowlabel.t", FT_UINT8, BASE_DEC, NULL, 0x80, NULL, HFILL}},
|
||||
|
||||
{ &hf_ldp_tlv_fec_vc_intparam_flowlabel_r,
|
||||
{ "Flow Label Receive bit", "ldp.msg.tlv.fec.vc.intparam.flowlabel.r", FT_UINT8, BASE_DEC, NULL, 0x40, NULL, HFILL}},
|
||||
|
||||
{ &hf_ldp_tlv_fec_vc_intparam_flowlabel_res,
|
||||
{ "Flow Label Reserved", "ldp.msg.tlv.fec.vc.intparam.flowlabel.res", FT_UINT16, BASE_HEX, NULL, 0x3FFF, NULL, HFILL}},
|
||||
|
||||
{ &hf_ldp_tlv_lspid_act_flg,
|
||||
{ "Action Indicator Flag", "ldp.msg.tlv.lspid.actflg", FT_UINT16, BASE_HEX,
|
||||
VALS(ldp_act_flg_vals), 0x000F, NULL, HFILL}},
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
* - Identification of BFD CC, BFD CV and ON-Demand CV ACH types as per RFC 6428, RFC 6426
|
||||
* respectively and the corresponding decoding of messages
|
||||
*
|
||||
* (c) Copyright 2012, Aditya Ambadkar and Diana Chris <arambadk,dvchris@ncsu.edu>
|
||||
* - Added preference to select BOS label as flowlabel as per RFC 6391
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
|
@ -211,6 +214,9 @@ static enum_val_t mpls_default_payload_defs[] = {
|
|||
}
|
||||
};
|
||||
|
||||
/* For RFC6391 - Flow aware transport of pseudowire over a mpls PSN*/
|
||||
static gboolean mpls_bos_flowlabel = FALSE;
|
||||
|
||||
static int hf_mpls_label;
|
||||
static int hf_mpls_label_special;
|
||||
static int hf_mpls_exp;
|
||||
|
@ -565,7 +571,11 @@ dissect_mpls(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
ti = proto_tree_add_item(tree, proto_mpls, tvb, offset, 4, ENC_NA);
|
||||
mpls_tree = proto_item_add_subtree(ti, ett_mpls);
|
||||
|
||||
proto_item_append_text(ti, ", Label: %u", label);
|
||||
if (mpls_bos_flowlabel) {
|
||||
proto_item_append_text(ti, ", Label: %u (Flow Label)", label);
|
||||
} else {
|
||||
proto_item_append_text(ti, ", Label: %u", label);
|
||||
}
|
||||
if (label <= LABEL_MAX_RESERVED){
|
||||
proto_tree_add_item(mpls_tree, hf_mpls_label_special, tvb,
|
||||
offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -773,6 +783,13 @@ proto_register_mpls(void)
|
|||
&mpls_default_payload,
|
||||
mpls_default_payload_defs,
|
||||
FALSE );
|
||||
|
||||
/* RFC6391: Flow aware transport of pseudowire*/
|
||||
prefs_register_bool_preference(module_mpls,
|
||||
"flowlabel_in_mpls_header",
|
||||
"Assume bottom of stack label as Flow label",
|
||||
"Lowest label is used to segregate flows inside a pseudowire",
|
||||
&mpls_bos_flowlabel);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue