Dear Jai,
thanks for your work.
On Fri, Dec 04, 2009 at 05:10:00PM +0530, Jai Menon wrote:
Attached is a direct port of the IML dissector code
from the ip.access
code to wireshark SVN head with a few changes to make it work with the
current API. This was done as part of Harald's GSM workout during
FOSS.IN and he suggested I post it to this list. I haven't really
tested this code since I dont have access to IML traces, but assuming
the original code worked, this one should too.
Great. Anyone who has two nanoBTS can set up a multi-TRX BTS and
trace the IML protocol between those two BTS. This pcap should be possible
to decode using this dissector.
Before we can submit this mainline, we need to clean up packet-gsm.h though.
ip.access has one header file (packet-gsm.h) where they define many aspects of
various different GSM protocols. This is not really how things are done
in upstream wireshark.
Thus, we need to remove everything that is not IML related, like
+#define GSM0408_HEADER_LEN 2
+#define GSM0808_HEADER_LEN 1
+#define IPA_HEADER_LEN 3
+#define IPA_UDP_HEADER_LEN 4
04.08, 08.08, IPA: All not relevant for IML
+#define MAX_DATA_STR 5
+
+/* defines for the Signalling over IP streams */
+#define OML_STREAM 255
+#define CTRL_STREAM 254
+#define SCCP_STREAM 253
+#define SPIRIT_STREAM 253
+#define BSC_MGMT_STREAM 251
+#define BSC_SUBAGENT_STREAM 250
+#define SIGTRAN_STREAM 249
+#define FRIP_STREAM 248
+#define GNAT_STREAM 247
+#define IML_STREAM 129
+#define RSL_STREAM_MAX 32
+/* defines for the fixed TCP/UDP port numbers */
+#define TCP_PORT_IPA_OML 3002
+#define TCP_PORT_IPA_RSL 3003
+#define TCP_PORT_IPA_2NDOML 3006
+#define TCP_PORT_IPA_HW_MON 3007
+#define TCP_PORT_IPA_FRIP 3008
+#define TCP_PORT_IPA_SPIRIT 3008
+#define TCP_PORT_IPA_GNAT 3009
+#define TCP_PORT_IPA_BSCMGMT 3010
+#define TCP_PORT_IPA_A_IF 3011
+#define TCP_PORT_IPA_SITE_IML 3013
+#define TCP_PORT_IPA_BTS_IML 3014
+#define UDP_PORT_IPA 3006
+
those are all IPA related, I think. so they can be removed.
+/* defines for the GSMSTAT interface */
+#define GSMSTAT_INTERFACE_NULL -1
+#define GSMSTAT_INTERFACE_A 0
+#define GSMSTAT_INTERFACE_A_BIS 1
+#define GSMSTAT_INTERFACE_GB 2
+#define GSMSTAT_INTERFACE_MAX 2 /* until we add GB! */
+
+#define GSMSTAT_PROTO_NULL -1
+#define GSMSTAT_PROTO_GSM0408 1
+#define GSMSTAT_PROTO_GSM0808 2
+#define GSMSTAT_PROTO_GSM0858 3
+#define GSMSTAT_PROTO_GSM0818 4
+#define GSMSTAT_PROTO_GSM1221 5
+
+#define GSMSTAT_PD_NULL -1
gsmstat can also be removed.
+/* 04.08 Protocol Discriminator values */
+#define GSM0408_PD_VGCS 0x0
+#define GSM0408_PD_VBS 0x1
+#define GSM0408_PD_PDSS1 0x2
+#define GSM0408_PD_CC 0x3
+#define GSM0408_PD_PDSS2 0x4
+#define GSM0408_PD_MM 0x5
+#define GSM0408_PD_RR 0x6
+#define GSM0408_PD_GMM 0x8
+#define GSM0408_PD_SMS 0x9
+#define GSM0408_PD_SM 0xa
+#define GSM0408_PD_SS 0xb
+#define GSM0408_PD_LS 0xc
as the comment implies, this is all 04.08 and we don't need it in IML
+/* RTP Paylod types in use for A-bis */
+#define RTP_PAYLOAD_GSM_FR 0
+#define RTP_PAYLOAD_GSM_EFR 1
+#define RTP_PAYLOAD_GSM_AMR 2
+#define RTP_PAYLOAD_GSM_CSD 3
+#define RTP_PAYLOAD_GSM_NANO_GSM_MUX 4
etc. I could now continue for the whole file, but I think you
get what I mean :)
Would you be able to clean this further up and do another round of patch
submission? Thanks again for your help.
--
- Harald Welte <laforge(a)gnumonks.org>
http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)