aboutsummaryrefslogtreecommitdiffstats
path: root/wireshark
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-05-23 06:20:14 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-05-23 06:20:14 +0800
commit0342540813bd338f737f4369ddc0e98de1f90d8b (patch)
treeed78a4f7f5033bb8093092a51d2ac0c966de77fe /wireshark
parent5af5e320d611aecfaf49712e3ac029bc46ebd3cc (diff)
abis_oml.patch: Really allow to switch from IPA to BS11
Add a method to get the tlv_def. Assume when the TLV_FIXED is used that we look at the base to find the real type. This appears to work so far.
Diffstat (limited to 'wireshark')
-rw-r--r--wireshark/abis_oml.patch56
1 files changed, 41 insertions, 15 deletions
diff --git a/wireshark/abis_oml.patch b/wireshark/abis_oml.patch
index 00fb531d..c5457535 100644
--- a/wireshark/abis_oml.patch
+++ b/wireshark/abis_oml.patch
@@ -5,9 +5,9 @@ Subject: [PATCH 1/2] Add the Abis OML patch.
---
epan/dissectors/Makefile.common | 1 +
- epan/dissectors/packet-gsm_abis_oml.c | 1386 +++++++++++++++++++++++++++++++++
- epan/dissectors/packet-gsm_abis_oml.h | 788 +++++++++++++++++++
- 3 files changed, 2175 insertions(+), 0 deletions(-)
+ epan/dissectors/packet-gsm_abis_oml.c | 1402 +++++++++++++++++++++++++++++++++
+ epan/dissectors/packet-gsm_abis_oml.h | 798 +++++++++++++++++++
+ 3 files changed, 2201 insertions(+), 0 deletions(-)
create mode 100644 epan/dissectors/packet-gsm_abis_oml.c
create mode 100644 epan/dissectors/packet-gsm_abis_oml.h
@@ -25,10 +25,10 @@ index 4973c3b..65e6d01 100644
packet-gsm_bssmap_le.c \
diff --git a/epan/dissectors/packet-gsm_abis_oml.c b/epan/dissectors/packet-gsm_abis_oml.c
new file mode 100644
-index 0000000..526a1e5
+index 0000000..dc53496
--- /dev/null
+++ b/epan/dissectors/packet-gsm_abis_oml.c
-@@ -0,0 +1,1386 @@
+@@ -0,0 +1,1402 @@
+/* packet-abis_oml.c
+ * Routines for packet dissection of GSM A-bis over IP (3GPP TS 12.21)
+ * Copyright 2009 by Harald Welte <laforge@gnumonks.org>
@@ -145,7 +145,7 @@ index 0000000..526a1e5
+static int ett_oml_fom_att = -1;
+
+/* Decode things as nanoBTS traces */
-+static gboolean global_oml_use_nano_bts = FALSE;
++static gboolean global_oml_use_nano_bts = TRUE;
+
+static proto_tree *top_tree;
+
@@ -611,6 +611,22 @@ index 0000000..526a1e5
+ { NM_IPACC_TR_IE_FREQ_ERR, "Frequency Error" },
+};
+
++static const struct tlv_def *
++find_tlv_tag(guint8 tag)
++{
++ const struct tlv_def *specific;
++
++ if (global_oml_use_nano_bts)
++ specific = &nm_att_tlvdef_ipa.def[tag];
++ else
++ specific = &nm_att_tlvdev_bs11.def[tag];
++
++ if (specific->type != TLV_TYPE_FIXED)
++ return specific;
++
++ return &nm_att_tlvdef_base.def[tag];
++}
++
+/* Parse the ip.access specific BCCH Information IE embedded into the Test
+ * Report IE */
+static gint
@@ -766,7 +782,7 @@ index 0000000..526a1e5
+ tvbuff_t *sub_tvb;
+
+ tag = tvb_get_guint8(tvb, offset);
-+ tdef = &nm_att_tlvdef.def[tag];
++ tdef = find_tlv_tag(tag);
+
+ switch (tdef->type) {
+ case TLV_TYPE_FIXED:
@@ -1417,10 +1433,10 @@ index 0000000..526a1e5
+}
diff --git a/epan/dissectors/packet-gsm_abis_oml.h b/epan/dissectors/packet-gsm_abis_oml.h
new file mode 100644
-index 0000000..a176a98
+index 0000000..98aeb24
--- /dev/null
+++ b/epan/dissectors/packet-gsm_abis_oml.h
-@@ -0,0 +1,788 @@
+@@ -0,0 +1,798 @@
+/* GSM Network Management messages on the A-bis interface
+ * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */
+
@@ -2079,7 +2095,7 @@ index 0000000..a176a98
+};
+
+/* From openbsc/src/abis_nm.c */
-+static const struct tlv_definition nm_att_tlvdef = {
++static const struct tlv_definition nm_att_tlvdef_base = {
+ .def = {
+ [NM_ATT_ABIS_CHANNEL] = { TLV_TYPE_FIXED, 3 },
+ [NM_ATT_ADD_INFO] = { TLV_TYPE_TL16V, 0 },
@@ -2102,7 +2118,6 @@ index 0000000..a176a98
+ [NM_ATT_GSM_TIME] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_HSN] = { TLV_TYPE_TV, 0 },
+ [NM_ATT_HW_CONFIG] = { TLV_TYPE_TL16V, 0 },
-+ //BS11 [NM_ATT_HW_DESC] = { TLV_TYPE_TL16V, 0 },
+ [NM_ATT_HW_DESC] = { TLV_TYPE_TLV, 0 },
+ [NM_ATT_INTAVE_PARAM] = { TLV_TYPE_TV, 0 },
+ [NM_ATT_INTERF_BOUND] = { TLV_TYPE_FIXED, 6 },
@@ -2146,8 +2161,15 @@ index 0000000..a176a98
+ [NM_ATT_OUTST_ALARM] = { TLV_TYPE_TV, 0 },
+ [NM_ATT_FILE_DATA] = { TLV_TYPE_TL16V, 0 },
+ [NM_ATT_MEAS_RES] = { TLV_TYPE_TL16V, 0 },
-+#if 0
-+ /* BS11 specifics */
++
++ },
++};
++
++/* BS11 specifics */
++static const struct tlv_definition nm_att_tlvdev_bs11 = {
++ .def = {
++ /* a difference.. */
++ [NM_ATT_HW_DESC] = { TLV_TYPE_TL16V, 0 },
+ [NM_ATT_BS11_ESN_FW_CODE_NO] = { TLV_TYPE_TLV, 0 },
+ [NM_ATT_BS11_ESN_HW_CODE_NO] = { TLV_TYPE_TLV, 0 },
+ [NM_ATT_BS11_ESN_PCB_SERIAL] = { TLV_TYPE_TLV, 0 },
@@ -2172,8 +2194,12 @@ index 0000000..a176a98
+ [NM_ATT_BS11_CCLK_ACCURACY] = { TLV_TYPE_TV, 0 },
+ [NM_ATT_BS11_CCLK_TYPE] = { TLV_TYPE_TV, 0 },
+ [0x95] = { TLV_TYPE_FIXED, 2 },
-+#endif
-+ /* ip.access specifics */
++ },
++};
++
++/* ip.access specifics */
++static const struct tlv_definition nm_att_tlvdef_ipa = {
++ .def = {
+ [NM_ATT_IPACC_DST_IP] = { TLV_TYPE_FIXED, 4 },
+ [NM_ATT_IPACC_DST_IP_PORT] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_PRIM_OML_CFG] = { TLV_TYPE_TL16V, 0 },