aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-juniper.c34
-rw-r--r--wiretap/libpcap.c4
-rw-r--r--wiretap/wtap.c3
-rw-r--r--wiretap/wtap.h3
4 files changed, 42 insertions, 2 deletions
diff --git a/epan/dissectors/packet-juniper.c b/epan/dissectors/packet-juniper.c
index ed089645b4..50576af102 100644
--- a/epan/dissectors/packet-juniper.c
+++ b/epan/dissectors/packet-juniper.c
@@ -1217,6 +1217,37 @@ static void dissect_juniper_ggsn(tvbuff_t* tvb, packet_info* pinfo, proto_tree*
}
+static void dissect_juniper_vp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree) {
+
+ proto_item *ti;
+ guint offset = 0;
+ int bytes_processed;
+ guint8 flags;
+
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "Juniper Voice PIC");
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_text (tree, tvb, offset, 4, "Juniper Voice PIC");
+
+ /* parse header, match mgc, extract flags and build first tree */
+ bytes_processed = dissect_juniper_header(tvb, pinfo, tree, ti, &flags);
+
+ if(bytes_processed == -1)
+ return;
+ else
+ offset+=bytes_processed;
+
+ /*
+ * Right know IPv4 is the only protocol we may encounter.
+ * For the future there should be sufficient space in the 18-byte
+ * empty header before payload starts.
+ */
+ dissect_juniper_payload_proto(tvb, pinfo, tree, ti, PROTO_IP, offset+18);
+}
+
+
/* list of Juniper supported PPP proto IDs */
static gboolean
ppp_heuristic_guess(guint16 proto) {
@@ -1450,6 +1481,7 @@ proto_reg_handoff_juniper(void)
dissector_handle_t juniper_frelay_handle;
dissector_handle_t juniper_chdlc_handle;
dissector_handle_t juniper_ggsn_handle;
+ dissector_handle_t juniper_vp_handle;
osinl_subdissector_table = find_dissector_table("osinl");
osinl_excl_subdissector_table = find_dissector_table("osinl.excl");
@@ -1474,6 +1506,7 @@ proto_reg_handoff_juniper(void)
juniper_frelay_handle = create_dissector_handle(dissect_juniper_frelay, proto_juniper);
juniper_chdlc_handle = create_dissector_handle(dissect_juniper_chdlc, proto_juniper);
juniper_ggsn_handle = create_dissector_handle(dissect_juniper_ggsn, proto_juniper);
+ juniper_vp_handle = create_dissector_handle(dissect_juniper_vp, proto_juniper);
dissector_add("wtap_encap", WTAP_ENCAP_JUNIPER_ATM2, juniper_atm2_handle);
dissector_add("wtap_encap", WTAP_ENCAP_JUNIPER_ATM1, juniper_atm1_handle);
@@ -1485,6 +1518,7 @@ proto_reg_handoff_juniper(void)
dissector_add("wtap_encap", WTAP_ENCAP_JUNIPER_FRELAY, juniper_frelay_handle);
dissector_add("wtap_encap", WTAP_ENCAP_JUNIPER_CHDLC, juniper_chdlc_handle);
dissector_add("wtap_encap", WTAP_ENCAP_JUNIPER_GGSN, juniper_ggsn_handle);
+ dissector_add("wtap_encap", WTAP_ENCAP_JUNIPER_VP, juniper_vp_handle);
}
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index 0960769588..1878c1ab4c 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -328,7 +328,7 @@ static const struct {
{ 129, WTAP_ENCAP_ARCNET_LINUX },
{ 130, WTAP_ENCAP_JUNIPER_MLPPP }, /* Juniper MLPPP on ML-, LS-, AS- PICs */
{ 131, WTAP_ENCAP_JUNIPER_MLFR }, /* Juniper MLFR (FRF.15) on ML-, LS-, AS- PICs */
- {133, WTAP_ENCAP_JUNIPER_GGSN},
+ { 133, WTAP_ENCAP_JUNIPER_GGSN},
/*
* Values 132-134, 136 not listed here are reserved for use
* in Juniper hardware.
@@ -408,6 +408,8 @@ static const struct {
{ 180, WTAP_ENCAP_JUNIPER_FRELAY },
/* C-HDLC frames prepended with meta-information */
{ 181, WTAP_ENCAP_JUNIPER_CHDLC },
+ /* VOIP Frames prepended with meta-information */
+ { 183, WTAP_ENCAP_JUNIPER_VP },
/*
diff --git a/wiretap/wtap.c b/wiretap/wtap.c
index 9827264768..11c94b6da0 100644
--- a/wiretap/wtap.c
+++ b/wiretap/wtap.c
@@ -360,6 +360,9 @@ static const struct encap_type_info {
/* WTAP_ENCAP_BER */
{ "ASN.1 Basic Encoding Rules", "ber" },
+
+ /* WTAP_ENCAP_JUNIPER_VP */
+ { "Juniper Voice PIC", "juniper-vp" },
};
/* Name that should be somewhat descriptive. */
diff --git a/wiretap/wtap.h b/wiretap/wtap.h
index a46cca7af4..e1aee9ffc3 100644
--- a/wiretap/wtap.h
+++ b/wiretap/wtap.h
@@ -181,9 +181,10 @@
#define WTAP_ENCAP_LINUX_LAPD 88
#define WTAP_ENCAP_CATAPULT_DCT2000 89
#define WTAP_ENCAP_BER 90
+#define WTAP_ENCAP_JUNIPER_VP 91
/* last WTAP_ENCAP_ value + 1 */
-#define WTAP_NUM_ENCAP_TYPES 91
+#define WTAP_NUM_ENCAP_TYPES 92
/* File types that can be read by wiretap.
We support writing some many of these file types, too, so we