Merge branch 'master' into sms

This commit is contained in:
Harald Welte 2009-07-04 09:21:47 +02:00
commit 8a396b73e1
6 changed files with 288 additions and 99 deletions

View File

@ -362,6 +362,7 @@ enum abis_nm_attr {
NM_ATT_IPACC_RSL_BSC_PORT = 0x81,
NM_ATT_IPACC_NV_FLAGS = 0x86,
NM_ATT_IPACC_FREQ_CTRL = 0x87,
NM_ATT_IPACC_SEC_OML_CFG = 0x89,
NM_ATT_IPACC_IP_IF_CFG = 0x8a, /* IP interface */
NM_ATT_IPACC_IP_GW_CFG = 0x8b, /* IP gateway */
NM_ATT_IPACC_IN_SERV_TIME = 0x8c,

View File

@ -357,8 +357,19 @@ static const struct tlv_definition nm_att_tlvdef = {
/* ip.access specifics */
[NM_ATT_IPACC_RSL_BSC_IP] = { TLV_TYPE_FIXED, 4 },
[NM_ATT_IPACC_RSL_BSC_PORT] = { TLV_TYPE_FIXED, 2 },
[NM_ATT_IPACC_PRIM_OML_IP] = { TLV_TYPE_FIXED, 6 },
[0x95] = { TLV_TYPE_FIXED, 2 },
[NM_ATT_IPACC_PRIM_OML_IP] = { TLV_TYPE_TL16V },
[NM_ATT_IPACC_NV_FLAGS] = { TLV_TYPE_TL16V },
[NM_ATT_IPACC_FREQ_CTRL] = { TLV_TYPE_FIXED, 2 },
[NM_ATT_IPACC_SEC_OML_IP] = { TLV_TYPE_TL16V }, // wrong name
[NM_ATT_IPACC_SEC_OML_CFG] = { TLV_TYPE_FIXED, 6 },
[NM_ATT_IPACC_IP_IF_CFG] = { TLV_TYPE_FIXED, 8 },
[NM_ATT_IPACC_IP_GW_CFG] = { TLV_TYPE_FIXED, 12 },
[NM_ATT_IPACC_LOCATION] = { TLV_TYPE_TL16V },
[NM_ATT_IPACC_UNIT_ID] = { TLV_TYPE_TL16V },
[NM_ATT_IPACC_UNIT_NAME] = { TLV_TYPE_TL16V },
[NM_ATT_IPACC_SNMP_CFG] = { TLV_TYPE_TL16V },
[NM_ATT_IPACC_ALM_THRESH_LIST]= { TLV_TYPE_TL16V },
//[0x95] = { TLV_TYPE_FIXED, 2 },
[0x85] = { TLV_TYPE_TV },
},
@ -2282,6 +2293,18 @@ static int abis_nm_rx_ipacc(struct msgb *msg)
else
DEBUGPC(DNM, "\n");
break;
case NM_MT_IPACC_GET_NVATTR_ACK:
DEBUGPC(DNM, "GET NVATTR ACK\n");
/* FIXME: decode and show the actual attributes */
break;
case NM_MT_IPACC_GET_NVATTR_NACK:
DEBUGPC(DNM, "GET NVATTR NACK ");
if (TLVP_PRESENT(&tp, NM_ATT_NACK_CAUSES))
DEBUGPC(DNM, " CAUSE=%s\n",
nack_cause_name(*TLVP_VAL(&tp, NM_ATT_NACK_CAUSES)));
else
DEBUGPC(DNM, "\n");
break;
default:
DEBUGPC(DNM, "unknown\n");
break;

View File

@ -43,6 +43,8 @@ static struct gsm_network *gsmnet;
static int restart;
static char *prim_oml_ip;
static char *unit_id;
static u_int16_t nv_flags;
static u_int16_t nv_mask;
/*
static u_int8_t prim_oml_attr[] = { 0x95, 0x00, 7, 0x88, 192, 168, 100, 11, 0x00, 0x00 };
@ -53,6 +55,7 @@ static void bootstrap_om(struct gsm_bts *bts)
{
int len;
static u_int8_t buf[1024];
u_int8_t *cur = buf;
printf("OML link established\n");
@ -70,7 +73,6 @@ static void bootstrap_om(struct gsm_bts *bts)
}
if (prim_oml_ip) {
struct in_addr ia;
u_int8_t *cur = buf;
if (!inet_aton(prim_oml_ip, &ia)) {
fprintf(stderr, "invalid IP address: %s\n",
@ -92,6 +94,20 @@ static void bootstrap_om(struct gsm_bts *bts)
printf("setting primary OML link IP to '%s'\n", inet_ntoa(ia));
abis_nm_ipaccess_set_nvattr(bts, buf, 3+len);
}
if (nv_mask) {
len = 4;
*cur++ = NM_ATT_IPACC_NV_FLAGS;
*cur++ = (len) >> 8;
*cur++ = (len) & 0xff;
*cur++ = nv_flags & 0xff;
*cur++ = nv_mask & 0xff;
*cur++ = nv_flags >> 8;
*cur++ = nv_mask >> 8;
printf("setting NV Flags/Mask to 0x%04x/0x%04x\n",
nv_flags, nv_mask);
abis_nm_ipaccess_set_nvattr(bts, buf, 3+len);
}
if (restart) {
printf("restarting BTS\n");
@ -140,13 +156,15 @@ int main(int argc, char **argv)
while (1) {
int c;
unsigned long ul;
char *slash;
static struct option long_options[] = {
{ "unit-id", 1, 0, 'u' },
{ "oml-ip", 1, 0, 'o' },
{ "restart", 0, 0, 'r' },
};
c = getopt_long(argc, argv, "u:o:r", long_options,
c = getopt_long(argc, argv, "u:o:rn:", long_options,
&option_index);
if (c == -1)
@ -162,6 +180,15 @@ int main(int argc, char **argv)
case 'r':
restart = 1;
break;
case 'n':
slash = strchr(optarg, '/');
if (!slash)
exit(2);
ul = strtoul(optarg, NULL, 16);
nv_flags = ul & 0xffff;
ul = strtoul(slash+1, NULL, 16);
nv_mask = ul & 0xffff;
break;
}
};

View File

@ -1,20 +1,20 @@
Index: wireshark/epan/dissectors/Makefile.common
===================================================================
--- wireshark.orig/epan/dissectors/Makefile.common 2009-06-25 15:04:16.000000000 +0200
+++ wireshark/epan/dissectors/Makefile.common 2009-06-29 13:30:06.000000000 +0200
@@ -874,6 +874,7 @@
--- wireshark.orig/epan/dissectors/Makefile.common 2009-07-03 22:20:16.000000000 +0200
+++ wireshark/epan/dissectors/Makefile.common 2009-07-04 03:46:47.000000000 +0200
@@ -926,6 +926,7 @@
# Dissectors with warnings.
#
DIRTY_DISSECTOR_SRC = \
packet-abis_ip.c \
+ packet-abis_oml.c \
+ packet-gsm_abis_oml.c \
packet-isakmp.c \
packet-k12.c \
packet-nbd.c \
packet-sccp.c \
Index: wireshark/epan/dissectors/packet-abis_oml.c
Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ wireshark/epan/dissectors/packet-abis_oml.c 2009-07-01 17:39:35.000000000 +0200
@@ -0,0 +1,1115 @@
+++ wireshark/epan/dissectors/packet-gsm_abis_oml.c 2009-07-04 03:47:46.000000000 +0200
@@ -0,0 +1,1241 @@
+/* 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>
@ -50,7 +50,7 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+#include <epan/packet.h>
+#include <epan/emem.h>
+
+#include "packet-abis_oml.h"
+#include "packet-gsm_abis_oml.h"
+#include "packet-gsm_a_common.h"
+
+/* initialize the protocol and registered fields */
@ -91,6 +91,7 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+static int hf_oml_ipa_tres_attr_len = -1;
+static int hf_attr_ipa_test_res = -1;
+static int hf_attr_ipa_tr_rxlev = -1;
+static int hf_attr_ipa_tr_b_rxlev = -1;
+static int hf_attr_ipa_tr_arfcn = -1;
+static int hf_attr_ipa_tr_f_qual = -1;
+static int hf_attr_ipa_tr_f_err = -1;
@ -99,8 +100,19 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+static int hf_attr_ipa_tr_framenr_offs = -1;
+static int hf_attr_ipa_tr_bsic = -1;
+static int hf_attr_ipa_tr_cell_id = -1;
+static int hf_attr_ipa_tr_si2 = -1;
+static int hf_attr_ipa_tr_si2bis = -1;
+static int hf_attr_ipa_tr_si2ter = -1;
+static int hf_attr_ipa_tr_chan_desc = -1;
+static int hf_attr_ipa_rsl_ip = -1;
+static int hf_attr_ipa_rsl_port = -1;
+static int hf_attr_ipa_prim_oml_ip = -1;
+static int hf_attr_ipa_prim_oml_port = -1;
+static int hf_attr_ipa_location_name = -1;
+static int hf_attr_ipa_unit_id = -1;
+static int hf_attr_ipa_unit_name = -1;
+static int hf_attr_ipa_nv_flags = -1;
+static int hf_attr_ipa_nv_mask = -1;
+
+/* initialize the subtree pointers */
+static int ett_oml = -1;
@ -528,36 +540,75 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+static gint
+ipacc_tr_ie_bcch(tvbuff_t *tvb, proto_tree *att_tree, int offset)
+{
+ guint16 binfo_type = tvb_get_ntohs(tvb, offset);
+ guint16 tmp = tvb_get_ntohs(tvb, offset+2);
+ guint16 binfo_type, tmp;
+
+ binfo_type = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+
+ tmp = tvb_get_ntohs(tvb, offset);
+
+ /* FIXME: there are still some bugs remaining here */
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_arfcn,
+ tvb, offset, 2, TRUE);
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_f_qual,
+ tvb, offset, 2, TRUE);
+ offset += 2;
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_rxlev,
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_b_rxlev,
+ tvb, offset++, 1, TRUE);
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_rxqual,
+ tvb, offset++, 1, TRUE);
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_f_err,
+ tvb, offset, 2, TRUE);
+ offset += 2;
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_frame_offs,
+ tvb, offset, 2, TRUE);
+ offset += 2;
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_framenr_offs,
+ tvb, offset, 4, TRUE);
+ offset += 4;
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_bsic,
+ tvb, offset++, 1, TRUE);
+
+ de_lai(tvb, att_tree, offset, 5, NULL, 0);
+ offset += 5;
+
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_cell_id,
+ tvb, offset, 2, TRUE);
+ offset += 2;
+ /* FIXME: parse GSM 04.18 IE's */
+
+ if (binfo_type & 0x8000) {
+ /* System Information 2 */
+ /* FIXME: Parse 04.18 Neighbour Cell Description */
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_si2,
+ tvb, offset, 16, TRUE);
+ offset += 16;
+ }
+ if (binfo_type & 0x0001) {
+ /* System Information 2bis */
+ /* FIXME: Parse 04.18 Neighbour Cell Description */
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_si2bis,
+ tvb, offset, 16, TRUE);
+ offset += 16;
+ }
+ if (binfo_type & 0x0002) {
+ /* System Information 2ter */
+ /* FIXME: Parse 04.18 Neighbour Cell Description */
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_si2ter,
+ tvb, offset, 16, TRUE);
+ offset += 16;
+ }
+ if (binfo_type & 0x0004) {
+ /* FIXME: Parse 04.18 Cell Channel Description */
+ proto_tree_add_item(att_tree, hf_attr_ipa_tr_chan_desc,
+ tvb, offset, 16, TRUE);
+ offset += 16;
+ }
+
+ return offset;
+}
@ -779,14 +830,38 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ offset, len, TRUE);
+ break;
+ case NM_ATT_IPACC_LOCATION:
+ proto_tree_add_item(att_tree, hf_attr_ipa_location_name,
+ tvb, offset, len, TRUE);
+ break;
+ case NM_ATT_IPACC_UNIT_ID:
+ proto_tree_add_item(att_tree, hf_attr_ipa_unit_id,
+ tvb, offset, len, TRUE);
+ break;
+ case NM_ATT_IPACC_UNIT_NAME:
+ proto_tree_add_item(att_tree, hf_attr_ipa_unit_name,
+ tvb, offset, len, TRUE);
+ break;
+ case NM_ATT_IPACC_PRIM_OML_IP:
+ proto_tree_add_item(att_tree, hf_attr_ipa_prim_oml_ip,
+ tvb, offset+1, 4, TRUE);
+ proto_tree_add_item(att_tree, hf_attr_ipa_prim_oml_port,
+ tvb, offset+1+4, 2, TRUE);
+ break;
+ case NM_ATT_IPACC_SEC_OML_IP:
+ /* FIXME */
+ break;
+ case NM_ATT_IPACC_NV_FLAGS:
+ {
+ guint flags, mask;
+ flags = tvb_get_guint8(tvb, offset);
+ mask = tvb_get_guint8(tvb, offset+1);
+ flags |= tvb_get_guint8(tvb, offset+2) << 8;
+ mask |= tvb_get_guint8(tvb, offset+3) << 8;
+ proto_tree_add_uint(att_tree, hf_attr_ipa_nv_flags,
+ tvb, offset, 3, flags);
+ proto_tree_add_uint(att_tree, hf_attr_ipa_nv_mask,
+ tvb, offset+1, 3, mask);
+ }
+ break;
+ default:
+ proto_tree_add_item(att_tree, hf_oml_fom_attr_val, tvb,
@ -897,62 +972,62 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ { &hf_oml_msg_disc,
+ { "Message Discriminator", "oml.msg_dsc",
+ FT_UINT8, BASE_HEX, VALS(oml_msg_disc_vals), 0,
+ "Message Discriminator", HFILL }
+ "GSM 12.21 Message Discriminator", HFILL }
+ },
+ { &hf_oml_placement,
+ { "Placement Indicator", "oml.placement",
+ FT_UINT8, BASE_HEX, VALS(oml_placement_vals), 0,
+ "Placement Indicator", HFILL }
+ "GSM 12.21 Placement Indicator", HFILL }
+ },
+ { &hf_oml_sequence,
+ { "Sequence Number", "oml.sequence",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "Sequence Number", HFILL }
+ "Sequence Number (if multi-part msg)", HFILL }
+ },
+ { &hf_oml_length,
+ { "Length Indicator", "oml.length",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Length Indicator", HFILL }
+ "Total length of payload", HFILL }
+ },
+ { &hf_oml_fom_msgtype,
+ { "FOM Message Type", "oml.fom.msg_type",
+ FT_UINT8, BASE_HEX, VALS(oml_fom_msgtype_vals), 0,
+ "FOM Message Type", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_objclass,
+ { "FOM Object Class", "oml.fom.obj_class",
+ FT_UINT8, BASE_HEX, VALS(oml_fom_objclass_vals), 0,
+ "FOM Object Class", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_inst_bts,
+ { "FOM Object Instance BTS", "oml.fom.obj_inst.bts",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "FOM Object Instance TRX", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_inst_trx,
+ { "FOM Object Instance TRX", "oml.fom.obj_inst.trx",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "FOM Object Instance TRX", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_inst_ts,
+ { "FOM Object Instance TS", "oml.fom.obj_inst.ts",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "FOM Object Instance TS", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_attr_tag,
+ { "FOM Attribute ID", "oml.fom.attr_id",
+ FT_UINT8, BASE_HEX, VALS(oml_fom_attr_vals), 0,
+ "FOM Attribute ID", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_attr_len,
+ { "FOM Attribute Length", "oml.fom.attr_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "FOM Attribute Length", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_oml_fom_attr_val,
+ { "FOM Attribute Value", "oml.fom.attr_val",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "FOM Attribute Value", HFILL }
+ NULL, HFILL }
+ },
+
+
@ -961,27 +1036,27 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ { &hf_attr_adm_state,
+ { "Administrative State", "oml.fom.attr.adm_state",
+ FT_UINT8, BASE_HEX, VALS(oml_adm_state_vals), 0,
+ "Administrative State", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_oper_state,
+ { "Operational State", "oml.fom.attr.oper_state",
+ FT_UINT8, BASE_HEX, VALS(oml_oper_state_vals), 0,
+ "Operational State", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_avail_state,
+ { "Availability Status", "oml.fom.attr.avail_state",
+ FT_UINT8, BASE_HEX, VALS(oml_avail_state_vals), 0,
+ "Availability Status", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_event_type,
+ { "Event Type", "oml.fom.attr.event_type",
+ FT_UINT8, BASE_HEX, VALS(oml_event_type_vals), 0,
+ "Event Type", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_severity,
+ { "Severity", "oml.fom.attr.severity",
+ FT_UINT8, BASE_HEX, VALS(oml_severity_vals), 0,
+ "Severity", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_bcch_arfcn,
+ { "BCCH ARFCN", "oml.fom.attr.bcch_arfcn",
@ -996,7 +1071,7 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ { &hf_attr_test_no,
+ { "Test Number", "oml.fom.attr.test_no",
+ FT_UINT8, BASE_HEX, VALS(oml_test_no_vals), 0,
+ "Test Number", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_tsc,
+ { "TSC", "oml.fom.attr.tsc",
@ -1006,22 +1081,22 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ { &hf_attr_tei,
+ { "TEI", "oml.fom.attr.tei",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "TEI", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_ach_btsp,
+ { "BTS Port", "oml.fom.attr.abis_ch.bts_port",
+ { "BTS E1 Port", "oml.fom.attr.abis_ch.bts_port",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "BTS Port", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_ach_tslot,
+ { "Timeslot", "oml.fom.attr.abis_ch.timeslot",
+ { "E1 Timeslot", "oml.fom.attr.abis_ch.timeslot",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Time Slot", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_ach_sslot,
+ { "Subslot", "oml.fom.attr.abis_ch.subslot",
+ { "E1 Subslot", "oml.fom.attr.abis_ch.subslot",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Subslot", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_gsm_time,
+ { "GSM Time", "oml.fom.attr.gsm_time",
@ -1031,60 +1106,59 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ { &hf_attr_chan_comb,
+ { "Channel Combination", "oml.fom.attr.chan_comb",
+ FT_UINT8, BASE_HEX, VALS(oml_chan_comb_vals), 0,
+ "Channel Combination", HFILL }
+ NULL, HFILL }
+ },
+ /* IP Access */
+ { &hf_oml_ipa_tres_attr_tag,
+ { "IPA Test Result Embedded IE",
+ "oml.fom.testrep.ipa_tag",
+ FT_UINT8, BASE_HEX, VALS(ipacc_testres_ie_vals), 0,
+ "IPA Test Result Embedded IE", HFILL },
+ "Information Element embedded into the Test Result "
+ "of ip.access BTS", HFILL },
+ },
+ { &hf_oml_ipa_tres_attr_len,
+ { "IPA Test Result Embedded IE Length",
+ "oml.fom.testrep.ipa_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "IPA Test Result Embedded IE Length", HFILL }
+ "Length of ip.access Test Result Embedded IE", HFILL }
+ },
+ { &hf_attr_ipa_test_res,
+ { "IPA Test Result", "oml.fom.testrep.result",
+ FT_UINT8, BASE_DEC, VALS(ipacc_test_res_vals), 0,
+ "IPA Test Result", HFILL }
+ NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_rxlev,
+ { "Rx Level", "oml.fom.testrep.ipa_rxlev",
+ FT_UINT16, BASE_DEC, NULL, 0xfc00,
+ "Rx Level", HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0xfc00, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_b_rxlev,
+ { "Rx Level", "oml.fom.testrep.ipa_rxlev_b",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_arfcn,
+ { "ARFCN", "oml.fom.testrep.ipa_arfcn",
+ FT_UINT16, BASE_DEC, NULL, 0x03ff,
+ "ARFCN", HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x03ff, "ARFCN", HFILL }
+ },
+ { &hf_attr_ipa_tr_f_qual,
+ { "Frequency Quality", "oml.fom.testrep.ipa.freq_qual",
+ FT_UINT8, BASE_DEC, NULL, 0xfc,
+ "Frequency Quality", HFILL }
+ FT_UINT8, BASE_DEC, NULL, 0xfc, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_f_err,
+ { "Frequency Error", "oml.fom.testrep.ipa.freq_err",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Frequency Error", HFILL }
+ FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_rxqual,
+ { "Rx Quality", "oml.fom.testrep.ipa.rx_qual",
+ FT_UINT8, BASE_DEC, NULL, 0x7,
+ "Rx Quality", HFILL }
+ FT_UINT8, BASE_DEC, NULL, 0x7, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_frame_offs,
+ { "Frame Offset", "oml.fom.testrep.ipa.frame_offset",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Frame Offset", HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_framenr_offs,
+ { "Frame Number Offset", "oml.fom.testrep.ipa.framenr_offset",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Frame Number Offset", HFILL }
+ { "Frame Number Offset",
+ "oml.fom.testrep.ipa.framenr_offset",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_bsic,
+ { "BSIC", "oml.fom.testrep.ipa.bsic",
@ -1093,18 +1167,70 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+ },
+ { &hf_attr_ipa_tr_cell_id,
+ { "Cell ID", "oml.fom.testrep.ipa.cell_id",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "Cell ID", HFILL }
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_rsl_ip,
+ { "BSC RSL IP Address", "oml.fom.attr.ipa.rsl_ip",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "BSC RSL IP Address", HFILL }
+ "IP Address to which the BTS establishes "
+ "the RSL link", HFILL }
+ },
+ { &hf_attr_ipa_rsl_port,
+ { "BSC RSL TCP Port", "oml.fom.attr.ipa.rsl_port",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "BSC RSL TCP Port", HFILL }
+ "Port number to which the BST establishes "
+ "the RSL link", HFILL }
+ },
+ { &hf_attr_ipa_prim_oml_ip,
+ { "Primary OML IP Address",
+ "oml.fom.attr.ipa.prim_oml_ip",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "IP Address of the BSC for the primary OML link",
+ HFILL }
+ },
+ { &hf_attr_ipa_prim_oml_port,
+ { "Primary OML TCP Port",
+ "oml.fom.attr.ipa.prim_oml_port",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "TCP Port of the BSC for the primarly OML link",
+ HFILL }
+ },
+ { &hf_attr_ipa_location_name,
+ { "Location Name", "oml.fom.attr.ipa.loc_name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_unit_name,
+ { "Unit Name", "oml.fom.attr.ipa.unit_name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_unit_id,
+ { "Unit ID", "oml.fom.attr.ipa.unit_id",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_nv_flags,
+ { "NVRAM Config Flags", "oml.fom.attr.ipa.nv_flags",
+ FT_UINT16, BASE_HEX, NULL, 0xffff, NULL, HFILL }
+ },
+ { &hf_attr_ipa_nv_mask,
+ { "NVRAM Config Mask", "oml.fom.attr.ipa.nv_mask",
+ FT_UINT16, BASE_HEX, NULL, 0xffff, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_si2,
+ { "System Information 2", "oml.fom.attr.ipa.si2",
+ FT_BYTES, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_si2bis,
+ { "System Information 2bis", "oml.fom.attr.ipa.si2bis",
+ FT_BYTES, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_si2ter,
+ { "System Information 2ter", "oml.fom.attr.ipa.si2ter",
+ FT_BYTES, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_attr_ipa_tr_chan_desc,
+ { "Cell Channel Description",
+ "oml.fom.attr.ipa.chan_desc",
+ FT_BYTES, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ };
+ static gint *ett[] = {
@ -1130,11 +1256,11 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c
+
+ abis_oml_handle = find_dissector("abis_oml");
+}
Index: wireshark/epan/dissectors/packet-abis_oml.h
Index: wireshark/epan/dissectors/packet-gsm_abis_oml.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ wireshark/epan/dissectors/packet-abis_oml.h 2009-07-01 11:27:15.000000000 +0200
@@ -0,0 +1,714 @@
+++ wireshark/epan/dissectors/packet-gsm_abis_oml.h 2009-07-04 03:46:47.000000000 +0200
@@ -0,0 +1,726 @@
+/* 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 */
+
@ -1497,6 +1623,7 @@ Index: wireshark/epan/dissectors/packet-abis_oml.h
+ NM_ATT_IPACC_RSL_BSC_PORT = 0x81,
+ NM_ATT_IPACC_NV_FLAGS = 0x86,
+ NM_ATT_IPACC_FREQ_CTRL = 0x87,
+ NM_ATT_IPACC_SEC_OML_CFG = 0x89,
+ NM_ATT_IPACC_IP_IF_CFG = 0x8a, /* IP interface */
+ NM_ATT_IPACC_IP_GW_CFG = 0x8b, /* IP gateway */
+ NM_ATT_IPACC_IN_SERV_TIME = 0x8c,
@ -1840,8 +1967,19 @@ Index: wireshark/epan/dissectors/packet-abis_oml.h
+ /* ip.access specifics */
+ [NM_ATT_IPACC_RSL_BSC_IP] = { TLV_TYPE_FIXED, 4 },
+ [NM_ATT_IPACC_RSL_BSC_PORT] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_PRIM_OML_IP] = { TLV_TYPE_FIXED, 6 },
+ [0x95] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_PRIM_OML_IP] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_NV_FLAGS] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_FREQ_CTRL] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_SEC_OML_IP] = { TLV_TYPE_TL16V }, // wrong name
+ [NM_ATT_IPACC_SEC_OML_CFG] = { TLV_TYPE_FIXED, 6 },
+ [NM_ATT_IPACC_IP_IF_CFG] = { TLV_TYPE_FIXED, 8 },
+ [NM_ATT_IPACC_IP_GW_CFG] = { TLV_TYPE_FIXED, 12 },
+ [NM_ATT_IPACC_LOCATION] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_UNIT_ID] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_UNIT_NAME] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_SNMP_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_ALM_THRESH_LIST]= { TLV_TYPE_TL16V },
+ //[0x95] = { TLV_TYPE_FIXED, 2 },
+ [0x9b] = { TLV_TYPE_TL16V },
+ [0x85] = { TLV_TYPE_TV },
+

View File

@ -1,19 +1,19 @@
Index: epan/dissectors/Makefile.common
===================================================================
--- epan/dissectors/Makefile.common.orig 2009-02-28 15:39:56.000000000 +0100
+++ epan/dissectors/Makefile.common 2009-06-25 15:04:16.000000000 +0200
@@ -873,6 +873,7 @@
# Dissectors with warnings.
#
DIRTY_DISSECTOR_SRC = \
+ packet-abis_ip.c \
packet-k12.c \
packet-nbd.c \
packet-sccp.c \
--- epan/dissectors/Makefile.common.orig 2009-07-03 22:19:54.000000000 +0200
+++ epan/dissectors/Makefile.common 2009-07-03 22:20:16.000000000 +0200
@@ -471,6 +471,7 @@
packet-gsm_a_gm.c \
packet-gsm_a_rp.c \
packet-gsm_a_rr.c \
+ packet-gsm_abis_ip.c \
packet-gsm_bsslap.c \
packet-gsm_bssmap_le.c \
packet-gsm_sms.c \
Index: epan/dissectors/packet-rsl.c
===================================================================
--- epan/dissectors/packet-rsl.c.orig 2009-02-28 15:39:51.000000000 +0100
+++ epan/dissectors/packet-rsl.c 2009-02-28 15:39:56.000000000 +0100
--- epan/dissectors/packet-rsl.c.orig 2009-07-03 22:19:54.000000000 +0200
+++ epan/dissectors/packet-rsl.c 2009-07-03 22:20:16.000000000 +0200
@@ -3950,6 +3950,7 @@
proto_register_field_array(proto_rsl, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
@ -22,12 +22,12 @@ Index: epan/dissectors/packet-rsl.c
}
Index: epan/dissectors/packet-abis_ip.c
Index: epan/dissectors/packet-gsm_abis_ip.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ epan/dissectors/packet-abis_ip.c 2009-06-25 15:04:42.000000000 +0200
+++ epan/dissectors/packet-gsm_abis_ip.c 2009-07-03 22:20:16.000000000 +0200
@@ -0,0 +1,279 @@
+/* packet-abis_ip.c
+/* packet-gsm_abis_ip.c
+ * Routines for packet dissection of ip.access A-bis over IP
+ * Copyright 2009 by Harald Welte <laforge@gnumonks.org>
+ *
@ -122,7 +122,7 @@ Index: epan/dissectors/packet-abis_ip.c
+};
+
+static gint
+dissect_ipa_attr(tvbuff_t *tvb, int base_offs, packet_info *pinfo, proto_tree *tree)
+dissect_ipa_attr(tvbuff_t *tvb, int base_offs, proto_tree *tree)
+{
+ guint8 len, tag, attr_type;
+
@ -173,7 +173,7 @@ Index: epan/dissectors/packet-abis_ip.c
+ switch (msg_type) {
+ case 4:
+ case 5:
+ dissect_ipa_attr(tvb, 1, pinfo, ipaccess_tree);
+ dissect_ipa_attr(tvb, 1, ipaccess_tree);
+ break;
+ }
+ }
@ -242,7 +242,7 @@ Index: epan/dissectors/packet-abis_ip.c
+ }
+}
+
+void proto_register_abisip(void)
+void proto_register_abis_ip(void)
+{
+ static hf_register_info hf[] = {
+ {&hf_abisip_data_len,
@ -260,7 +260,7 @@ Index: epan/dissectors/packet-abis_ip.c
+ {&hf_ipaccess_msgtype,
+ {"MessageType", "ipaccess.msg_type",
+ FT_UINT8, BASE_HEX, VALS(ipaccess_msgtype_vals), 0x0,
+ "type of ip.access messsage", HFILL}
+ "Type of ip.access messsage", HFILL}
+ },
+ {&hf_ipaccess_attr_tag,
+ {"Tag", "ipaccess.attr_tag",
@ -280,10 +280,10 @@ Index: epan/dissectors/packet-abis_ip.c
+ };
+
+ proto_abisip =
+ proto_register_protocol("A-bis/IP protocol as used by ip.access",
+ "A-bis/IP", "abis_ip");
+ proto_register_protocol("GSM A-bis/IP protocol as used by ip.access",
+ "GSM A-bis/IP", "gsm_abis_ip");
+ proto_ipaccess =
+ proto_register_protocol("A-bis/IP ip.access sub-protocol",
+ proto_register_protocol("GSM A-bis/IP ip.access CCM sub-protocol",
+ "IPA", "ipaccess");
+
+ proto_register_field_array(proto_abisip, hf, array_length(hf));
@ -293,7 +293,7 @@ Index: epan/dissectors/packet-abis_ip.c
+ register_dissector("gsm_abis_ip", dissect_abisip, proto_abisip);
+}
+
+void proto_reg_handoff_abisip(void)
+void proto_reg_handoff_gsm_abis_ip(void)
+{
+ dissector_handle_t abisip_handle;
+

View File

@ -1,14 +1,14 @@
Index: wireshark/epan/dissectors/packet-rsl.c
===================================================================
--- wireshark.orig/epan/dissectors/packet-rsl.c 2009-02-28 15:39:56.000000000 +0100
+++ wireshark/epan/dissectors/packet-rsl.c 2009-06-26 15:51:00.000000000 +0200
--- wireshark.orig/epan/dissectors/packet-rsl.c 2009-07-03 22:20:16.000000000 +0200
+++ wireshark/epan/dissectors/packet-rsl.c 2009-07-04 04:06:04.000000000 +0200
@@ -2,6 +2,7 @@
* Routines for Radio Signalling Link (RSL) dissection.
*
* Copyright 2007, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2009, Harald Welte <laforge@gnumonks.org>
*
* $Id: packet-rsl.c 27065 2008-12-20 00:09:02Z wmeier $
* $Id: packet-rsl.c 28770 2009-06-18 21:30:42Z stig $
*
@@ -44,6 +45,8 @@
#include <epan/lapd_sapi.h>
@ -583,7 +583,7 @@ Index: wireshark/epan/dissectors/packet-rsl.c
+ src_addr.len = 4;
+ src_addr.data = (guint8 *)&local_addr;
+ rtp_add_address(pinfo, &src_addr, local_port, 0,
+ "GSM A-bis/IP", pinfo->fd->num, 0);
+ "GSM A-bis/IP", pinfo->fd->num, 0, NULL);
+ rtcp_add_address(pinfo, &src_addr, local_port+1, 0,
+ "GSM A-bis/IP", pinfo->fd->num);
+ break;
@ -618,7 +618,7 @@ Index: wireshark/epan/dissectors/packet-rsl.c
@@ -3883,6 +4399,46 @@
FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
"eMLPP Priority", HFILL }
NULL, HFILL }
},
+ { &hf_rsl_f4,
+ { "unknown F4 IE", "rsl.ipacc.f4",