summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog7
-rw-r--r--debian/patches/0006-Separate-expected-response-big-endian.patch242
-rw-r--r--debian/patches/series1
-rwxr-xr-xdebian/rules2
-rw-r--r--tests/testsuite.at7
-rw-r--r--tests/xua/xua_test.ok.bigendian208
6 files changed, 465 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog
index 62b0e43..b329c9e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+libosmo-sccp (0.10.0-4) unstable; urgency=medium
+
+ * Patch for fixing test suite on big-endian architectures:
+ - 0006-Separate-expected-response-big-endian.patch
+
+ -- Ruben Undheim <ruben.undheim@gmail.com> Sun, 18 Nov 2018 09:24:20 +0100
+
libosmo-sccp (0.10.0-3) unstable; urgency=low
* debian/rules: Re-enable tests on all architectures
diff --git a/debian/patches/0006-Separate-expected-response-big-endian.patch b/debian/patches/0006-Separate-expected-response-big-endian.patch
new file mode 100644
index 0000000..e19b734
--- /dev/null
+++ b/debian/patches/0006-Separate-expected-response-big-endian.patch
@@ -0,0 +1,242 @@
+From: Ruben Undheim <ruben.undheim@gmail.com>
+Date: Sun, 18 Nov 2018 09:16:41 +0100
+Subject: Separate expected response big endian
+
+---
+ tests/testsuite.at | 7 +-
+ tests/xua/xua_test.ok.bigendian | 208 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 214 insertions(+), 1 deletion(-)
+ create mode 100644 tests/xua/xua_test.ok.bigendian
+
+diff --git a/tests/testsuite.at b/tests/testsuite.at
+index ebc43e7..2220b9b 100644
+--- a/tests/testsuite.at
++++ b/tests/testsuite.at
+@@ -21,7 +21,12 @@ AT_CLEANUP
+
+ AT_SETUP([xua])
+ AT_KEYWORDS([xua])
+-cat $abs_srcdir/xua/xua_test.ok > expout
++perl -MConfig -e 'print "$Config{byteorder}\n";' | grep 12345678
++if [[ "$?" = "0" ]] ; then
++ cat $abs_srcdir/xua/xua_test.ok > expout
++else
++ cat $abs_srcdir/xua/xua_test.ok.bigendian > expout
++fi
+ cat $abs_srcdir/xua/xua_test.err > experr
+ AT_CHECK([$abs_top_builddir/tests/xua/xua_test], [], [expout], [experr])
+ AT_CLEANUP
+diff --git a/tests/xua/xua_test.ok.bigendian b/tests/xua/xua_test.ok.bigendian
+new file mode 100644
+index 0000000..e2dfca5
+--- /dev/null
++++ b/tests/xua/xua_test.ok.bigendian
+@@ -0,0 +1,208 @@
++digits='01234567' (8)
++digits='0123456' (7)
++sccp_addr_parse test case 0
++expected: RI=1,SSN=6,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919969679389)
++parsed: RI=1,SSN=6,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919969679389)
++sccp_addr_parse test case 1
++expected: RI=1,SSN=8,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919869299992)
++parsed: RI=1,SSN=8,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919869299992)
++sccp_addr_parse test case 2
++expected: RI=2,SSN=254
++parsed: RI=2,SSN=254
++Testing Decoded GT -> SUA encoding
++IN: TT=0,NPL=1,NAI=4,DIG=919969679389
++ 0400000000000001000000043931393936393637393338390000000000000000000000000000000000000000
++OUT:TT=0,NPL=1,NAI=4,DIG=919969679389
++ 0400000000000001000000043931393936393637393338390000000000000000000000000000000000000000
++
++=> BSSMAP-RESET
++SCCP Input: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 06 00 04 30 04 01 20
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000000),
++ PART(T=Destination Address,L=12,D=0002000180030008000000fe),
++ PART(T=Source Address,L=12,D=0002000180030008000000fe),
++ PART(T=Data,L=6,D=000430040120)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 06 00 04 30 04 01 20
++
++=> BSSMAP-RESET-ACK
++SCCP Input: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 03 00 01 31
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000000),
++ PART(T=Destination Address,L=20,D=00020003800200080000000180030008000000fe),
++ PART(T=Source Address,L=20,D=00020003800200080000005c80030008000000fe),
++ PART(T=Data,L=3,D=000131)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 03 00 01 31
++
++=> BSSMAP-PAGING
++SCCP Input: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000000),
++ PART(T=Destination Address,L=20,D=00020003800200080000000180030008000000fe),
++ PART(T=Source Address,L=20,D=00020003800200080000005c80030008000000fe),
++ PART(T=Data,L=16,D=000e52080829471002013197611a0106)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
++
++=> BSSMAP-UDT
++SCCP Input: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000000),
++ PART(T=Destination Address,L=12,D=0002000180030008000000fe),
++ PART(T=Source Address,L=12,D=0002000180030008000000fe),
++ PART(T=Data,L=16,D=000e52080829471002013197611a0106)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
++
++=> BSSMAP-CR
++SCCP Input: [L2]> 01 01 02 03 02 02 04 02 42 fe 0f 1f 00 1d 57 05 08 00 72 f4 80 20 12 c3 50 17 10 05 24 11 03 33 19 a2 08 29 47 10 02 01 31 97 61 00
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CO:CORE,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000002),
++ PART(T=Source Reference,L=4,D=00010203),
++ PART(T=Destination Address,L=12,D=0002000180030008000000fe),
++ PART(T=Data,L=31,D=001d5705080072f4802012c3501710052411033319a2082947100201319761)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 01 01 02 03 02 02 04 02 42 fe 0f 1f 00 1d 57 05 08 00 72 f4 80 20 12 c3 50 17 10 05 24 11 03 33 19 a2 08 29 47 10 02 01 31 97 61 00
++
++=> BSSMAP-CC
++SCCP Input: [L2]> 02 01 02 03 00 00 03 02 01 00
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CO:COAK,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000002),
++ PART(T=Destination Reference,L=4,D=00010203),
++ PART(T=Source Reference,L=4,D=00000003)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 02 01 02 03 00 00 03 02 01 00
++
++=> BSSMAP-DTAP
++SCCP Input: [L2]> 06 00 00 03 00 01 0f 01 00 0c 03 05 5c 08 11 81 33 66 02 13 45 f4
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CO:CODT,V=0,LEN=0),
++ PART(T=Destination Reference,L=4,D=00000003),
++ PART(T=Segmentation,L=4,D=00000000),
++ PART(T=Data,L=15,D=01000c03055c0811813366021345f4)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 06 00 00 03 00 01 0f 01 00 0c 03 05 5c 08 11 81 33 66 02 13 45 f4
++
++=> BSSMAP-CLEAR
++SCCP Input: [L2]> 06 00 00 03 00 01 06 00 04 20 04 01 09
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CO:CODT,V=0,LEN=0),
++ PART(T=Destination Reference,L=4,D=00000003),
++ PART(T=Segmentation,L=4,D=00000000),
++ PART(T=Data,L=6,D=000420040109)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 06 00 00 03 00 01 06 00 04 20 04 01 09
++
++=> BSSMAP-RELEASED
++SCCP Input: [L2]> 04 00 00 03 01 02 03 00 01 0f 02 23 42 00
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CO:RELRE,V=0,LEN=0),
++ PART(T=Destination Reference,L=4,D=00000003),
++ PART(T=Source Reference,L=4,D=00010203),
++ PART(T=Cause,L=4,D=00000300),
++ PART(T=Data,L=2,D=2342)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 04 00 00 03 01 02 03 00 01 0f 02 23 42 00
++
++=> BSSMAP-RELEASE_COMPLETE
++SCCP Input: [L2]> 05 01 02 03 00 00 03
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CO:RELCO,V=0,LEN=0),
++ PART(T=Destination Reference,L=4,D=00010203),
++ PART(T=Source Reference,L=4,D=00000003)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 05 01 02 03 00 00 03
++
++=> TCAP
++SCCP Input: [L2]> 09 81 03 0d 18 0a 12 07 00 12 04 53 84 09 00 17 0b 12 06 00 12 04 44 87 20 00 20 65 9a 65 81 97 48 04 26 00 01 98 49 04 51 01 03 df 6c 81 88 a1 81 85 02 01 44 02 01 07 30 80 a7 80 a0 80 04 01 2b 30 80 30 12 83 01 10 84 01 07 85 07 91 44 57 76 67 16 97 86 01 20 30 06 82 01 18 84 01 04 00 00 00 00 a3 06 04 01 42 84 01 05 a3 06 04 01 51 84 01 05 a3 06 04 01 31 84 01 05 a3 09 04 01 12 84 01 05 82 01 02 a3 09 04 01 11 84 01 05 81 01 01 a3 06 04 01 14 84 01 00 a3 0b 04 01 41 84 01 04 30 03 83 01 10 a3 0b 04 01 41 84 01 04 30 03 82 01 18 00 00 00 00
++Transcoding message SCCP -> XUA
++Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
++ PART(T=Protocol Class,L=4,D=00000081),
++ PART(T=Destination Address,L=32,D=0001000580010014000000040a00010453840900170000008003000800000007),
++ PART(T=Source Address,L=32,D=0001000580010014000000040c00010444872000206500008003000800000006),
++ PART(T=Data,L=154,D=6581974804260001984904510103df6c8188a181850201440201073080a780a08004012b30803012830110840107850791445776671697860120300682011884010400000000a306040142840105a306040151840105a306040131840105a309040112840105820102a309040111840105810101a306040114840100a30b0401418401043003830110a30b040141840104300382011800000000)
++Re-Encoding decoded SUA to SCCP
++SCCP Output: [L2]> 09 81 03 0d 18 0a 12 07 00 12 04 53 84 09 00 17 0b 12 06 00 12 04 44 87 20 00 20 65 9a 65 81 97 48 04 26 00 01 98 49 04 51 01 03 df 6c 81 88 a1 81 85 02 01 44 02 01 07 30 80 a7 80 a0 80 04 01 2b 30 80 30 12 83 01 10 84 01 07 85 07 91 44 57 76 67 16 97 86 01 20 30 06 82 01 18 84 01 04 00 00 00 00 a3 06 04 01 42 84 01 05 a3 06 04 01 51 84 01 05 a3 06 04 01 31 84 01 05 a3 09 04 01 12 84 01 05 82 01 02 a3 09 04 01 11 84 01 05 81 01 01 a3 06 04 01 14 84 01 00 a3 0b 04 01 41 84 01 04 30 03 83 01 10 a3 0b 04 01 41 84 01 04 30 03 82 01 18 00 00 00 00
++Parsing M3UA Message
++Parsing Nested M3UA Routing Key IE
++Testing SCCP Address Encode/Decode
++
++=> NOGT-PC1024
++input addr: RI=2,PC=1024
++rc=3, expected rc=3
++encoded addr: 410004
++expected addr: 410004
++decod addr: RI=2,PC=1024
++
++=> NOGT-PC16383
++input addr: RI=2,PC=16383
++rc=3, expected rc=3
++encoded addr: 41ff3f
++expected addr: 41ff3f
++decod addr: RI=2,PC=16383
++
++=> NOGT-PC16383-SSN90
++input addr: RI=2,PC=16383,SSN=90
++rc=4, expected rc=4
++encoded addr: 43ff3f5a
++expected addr: 43ff3f5a
++decod addr: RI=2,PC=16383,SSN=90
++
++=> GT-PC16383-NAIONLY
++input addr: RI=2,PC=16383,GTI=1,GT=()
++rc=4, expected rc=4
++encoded addr: 45ff3f7f
++expected addr: 45ff3f7f
++decod addr: RI=2,PC=16383,GTI=1,GT=()
++
++=> GT-NOPC-NAIONLY
++input addr: RI=1,GTI=1,GT=()
++rc=2, expected rc=2
++encoded addr: 0403
++expected addr: 0403
++decod addr: RI=1,GTI=1,GT=()
++
++=> GT-NOPC-TTONLY
++input addr: RI=1,GTI=2,GT=(TT=3,DIG=)
++rc=-22, expected rc=-22
++
++=> GT-NOPC-TT_NPL_ENC-ODD
++input addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=123)
++rc=5, expected rc=5
++encoded addr: 0c03112103
++expected addr: 0c03112103
++decod addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=123)
++
++=> GT-NOPC-TT_NPL_ENC-EVEN
++input addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=1234)
++rc=5, expected rc=5
++encoded addr: 0c03122143
++expected addr: 0c03122143
++decod addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=1234)
++
++=> GT-NOPC-TT_NPL_ENC_NAI-EVEN
++input addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1234)
++rc=6, expected rc=6
++encoded addr: 100312042143
++expected addr: 100312042143
++decod addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1234)
++
++=> GT-NOPC-GTI_INVALID
++input addr: RI=1,GTI=23,GT=(DIG=1234)
++rc=-22, expected rc=-22
++
++=> GT-NOPC-TT_NPL_ENC_NAI-EVEN-NONNUM
++input addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1ABF)
++rc=6, expected rc=6
++encoded addr: 10031204a1fb
++expected addr: 10031204a1fb
++decod addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1ABF)
++
++All tests passed.
diff --git a/debian/patches/series b/debian/patches/series
index 122977b..9a40360 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@
03_fix_typo.patch
04_change_systemd_service_file.patch
0005-Patch-the-pkconfig-file-for-libosmo-xua.patch
+0006-Separate-expected-response-big-endian.patch
diff --git a/debian/rules b/debian/rules
index 5fbe870..65c1ac7 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,7 +16,7 @@ override_dh_clean:
# Print test results in case of a failure
override_dh_auto_test:
echo ${arch}
- dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) \
+ dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false)
override_dh_installsystemd:
dh_installsystemd --no-enable --no-start
diff --git a/tests/testsuite.at b/tests/testsuite.at
index ebc43e7..4f4fb7d 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -21,7 +21,12 @@ AT_CLEANUP
AT_SETUP([xua])
AT_KEYWORDS([xua])
-cat $abs_srcdir/xua/xua_test.ok > expout
+perl -MConfig -e 'print "$Config{byteorder}\n";' | grep 12345678
+if [[ "$?" = "0" ]] ; then
+ cat $abs_srcdir/xua/xua_test.ok > expout
+else
+ cat $abs_srcdir/xua/xua_test.ok.bigendian > expout
+fi
cat $abs_srcdir/xua/xua_test.err > experr
AT_CHECK([$abs_top_builddir/tests/xua/xua_test], [], [expout], [experr])
AT_CLEANUP
diff --git a/tests/xua/xua_test.ok.bigendian b/tests/xua/xua_test.ok.bigendian
new file mode 100644
index 0000000..e2dfca5
--- /dev/null
+++ b/tests/xua/xua_test.ok.bigendian
@@ -0,0 +1,208 @@
+digits='01234567' (8)
+digits='0123456' (7)
+sccp_addr_parse test case 0
+expected: RI=1,SSN=6,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919969679389)
+parsed: RI=1,SSN=6,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919969679389)
+sccp_addr_parse test case 1
+expected: RI=1,SSN=8,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919869299992)
+parsed: RI=1,SSN=8,GTI=4,GT=(TT=0,NPL=1,NAI=4,DIG=919869299992)
+sccp_addr_parse test case 2
+expected: RI=2,SSN=254
+parsed: RI=2,SSN=254
+Testing Decoded GT -> SUA encoding
+IN: TT=0,NPL=1,NAI=4,DIG=919969679389
+ 0400000000000001000000043931393936393637393338390000000000000000000000000000000000000000
+OUT:TT=0,NPL=1,NAI=4,DIG=919969679389
+ 0400000000000001000000043931393936393637393338390000000000000000000000000000000000000000
+
+=> BSSMAP-RESET
+SCCP Input: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 06 00 04 30 04 01 20
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000000),
+ PART(T=Destination Address,L=12,D=0002000180030008000000fe),
+ PART(T=Source Address,L=12,D=0002000180030008000000fe),
+ PART(T=Data,L=6,D=000430040120)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 06 00 04 30 04 01 20
+
+=> BSSMAP-RESET-ACK
+SCCP Input: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 03 00 01 31
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000000),
+ PART(T=Destination Address,L=20,D=00020003800200080000000180030008000000fe),
+ PART(T=Source Address,L=20,D=00020003800200080000005c80030008000000fe),
+ PART(T=Data,L=3,D=000131)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 03 00 01 31
+
+=> BSSMAP-PAGING
+SCCP Input: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000000),
+ PART(T=Destination Address,L=20,D=00020003800200080000000180030008000000fe),
+ PART(T=Source Address,L=20,D=00020003800200080000005c80030008000000fe),
+ PART(T=Data,L=16,D=000e52080829471002013197611a0106)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 09 00 03 07 0b 04 43 01 00 fe 04 43 5c 00 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
+
+=> BSSMAP-UDT
+SCCP Input: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000000),
+ PART(T=Destination Address,L=12,D=0002000180030008000000fe),
+ PART(T=Source Address,L=12,D=0002000180030008000000fe),
+ PART(T=Data,L=16,D=000e52080829471002013197611a0106)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 09 00 03 05 07 02 42 fe 02 42 fe 10 00 0e 52 08 08 29 47 10 02 01 31 97 61 1a 01 06
+
+=> BSSMAP-CR
+SCCP Input: [L2]> 01 01 02 03 02 02 04 02 42 fe 0f 1f 00 1d 57 05 08 00 72 f4 80 20 12 c3 50 17 10 05 24 11 03 33 19 a2 08 29 47 10 02 01 31 97 61 00
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CO:CORE,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000002),
+ PART(T=Source Reference,L=4,D=00010203),
+ PART(T=Destination Address,L=12,D=0002000180030008000000fe),
+ PART(T=Data,L=31,D=001d5705080072f4802012c3501710052411033319a2082947100201319761)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 01 01 02 03 02 02 04 02 42 fe 0f 1f 00 1d 57 05 08 00 72 f4 80 20 12 c3 50 17 10 05 24 11 03 33 19 a2 08 29 47 10 02 01 31 97 61 00
+
+=> BSSMAP-CC
+SCCP Input: [L2]> 02 01 02 03 00 00 03 02 01 00
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CO:COAK,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000002),
+ PART(T=Destination Reference,L=4,D=00010203),
+ PART(T=Source Reference,L=4,D=00000003)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 02 01 02 03 00 00 03 02 01 00
+
+=> BSSMAP-DTAP
+SCCP Input: [L2]> 06 00 00 03 00 01 0f 01 00 0c 03 05 5c 08 11 81 33 66 02 13 45 f4
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CO:CODT,V=0,LEN=0),
+ PART(T=Destination Reference,L=4,D=00000003),
+ PART(T=Segmentation,L=4,D=00000000),
+ PART(T=Data,L=15,D=01000c03055c0811813366021345f4)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 06 00 00 03 00 01 0f 01 00 0c 03 05 5c 08 11 81 33 66 02 13 45 f4
+
+=> BSSMAP-CLEAR
+SCCP Input: [L2]> 06 00 00 03 00 01 06 00 04 20 04 01 09
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CO:CODT,V=0,LEN=0),
+ PART(T=Destination Reference,L=4,D=00000003),
+ PART(T=Segmentation,L=4,D=00000000),
+ PART(T=Data,L=6,D=000420040109)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 06 00 00 03 00 01 06 00 04 20 04 01 09
+
+=> BSSMAP-RELEASED
+SCCP Input: [L2]> 04 00 00 03 01 02 03 00 01 0f 02 23 42 00
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CO:RELRE,V=0,LEN=0),
+ PART(T=Destination Reference,L=4,D=00000003),
+ PART(T=Source Reference,L=4,D=00010203),
+ PART(T=Cause,L=4,D=00000300),
+ PART(T=Data,L=2,D=2342)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 04 00 00 03 01 02 03 00 01 0f 02 23 42 00
+
+=> BSSMAP-RELEASE_COMPLETE
+SCCP Input: [L2]> 05 01 02 03 00 00 03
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CO:RELCO,V=0,LEN=0),
+ PART(T=Destination Reference,L=4,D=00010203),
+ PART(T=Source Reference,L=4,D=00000003)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 05 01 02 03 00 00 03
+
+=> TCAP
+SCCP Input: [L2]> 09 81 03 0d 18 0a 12 07 00 12 04 53 84 09 00 17 0b 12 06 00 12 04 44 87 20 00 20 65 9a 65 81 97 48 04 26 00 01 98 49 04 51 01 03 df 6c 81 88 a1 81 85 02 01 44 02 01 07 30 80 a7 80 a0 80 04 01 2b 30 80 30 12 83 01 10 84 01 07 85 07 91 44 57 76 67 16 97 86 01 20 30 06 82 01 18 84 01 04 00 00 00 00 a3 06 04 01 42 84 01 05 a3 06 04 01 51 84 01 05 a3 06 04 01 31 84 01 05 a3 09 04 01 12 84 01 05 82 01 02 a3 09 04 01 11 84 01 05 81 01 01 a3 06 04 01 14 84 01 00 a3 0b 04 01 41 84 01 04 30 03 83 01 10 a3 0b 04 01 41 84 01 04 30 03 82 01 18 00 00 00 00
+Transcoding message SCCP -> XUA
+Decoded SUA: HDR=(CL:CLDT,V=0,LEN=0),
+ PART(T=Protocol Class,L=4,D=00000081),
+ PART(T=Destination Address,L=32,D=0001000580010014000000040a00010453840900170000008003000800000007),
+ PART(T=Source Address,L=32,D=0001000580010014000000040c00010444872000206500008003000800000006),
+ PART(T=Data,L=154,D=6581974804260001984904510103df6c8188a181850201440201073080a780a08004012b30803012830110840107850791445776671697860120300682011884010400000000a306040142840105a306040151840105a306040131840105a309040112840105820102a309040111840105810101a306040114840100a30b0401418401043003830110a30b040141840104300382011800000000)
+Re-Encoding decoded SUA to SCCP
+SCCP Output: [L2]> 09 81 03 0d 18 0a 12 07 00 12 04 53 84 09 00 17 0b 12 06 00 12 04 44 87 20 00 20 65 9a 65 81 97 48 04 26 00 01 98 49 04 51 01 03 df 6c 81 88 a1 81 85 02 01 44 02 01 07 30 80 a7 80 a0 80 04 01 2b 30 80 30 12 83 01 10 84 01 07 85 07 91 44 57 76 67 16 97 86 01 20 30 06 82 01 18 84 01 04 00 00 00 00 a3 06 04 01 42 84 01 05 a3 06 04 01 51 84 01 05 a3 06 04 01 31 84 01 05 a3 09 04 01 12 84 01 05 82 01 02 a3 09 04 01 11 84 01 05 81 01 01 a3 06 04 01 14 84 01 00 a3 0b 04 01 41 84 01 04 30 03 83 01 10 a3 0b 04 01 41 84 01 04 30 03 82 01 18 00 00 00 00
+Parsing M3UA Message
+Parsing Nested M3UA Routing Key IE
+Testing SCCP Address Encode/Decode
+
+=> NOGT-PC1024
+input addr: RI=2,PC=1024
+rc=3, expected rc=3
+encoded addr: 410004
+expected addr: 410004
+decod addr: RI=2,PC=1024
+
+=> NOGT-PC16383
+input addr: RI=2,PC=16383
+rc=3, expected rc=3
+encoded addr: 41ff3f
+expected addr: 41ff3f
+decod addr: RI=2,PC=16383
+
+=> NOGT-PC16383-SSN90
+input addr: RI=2,PC=16383,SSN=90
+rc=4, expected rc=4
+encoded addr: 43ff3f5a
+expected addr: 43ff3f5a
+decod addr: RI=2,PC=16383,SSN=90
+
+=> GT-PC16383-NAIONLY
+input addr: RI=2,PC=16383,GTI=1,GT=()
+rc=4, expected rc=4
+encoded addr: 45ff3f7f
+expected addr: 45ff3f7f
+decod addr: RI=2,PC=16383,GTI=1,GT=()
+
+=> GT-NOPC-NAIONLY
+input addr: RI=1,GTI=1,GT=()
+rc=2, expected rc=2
+encoded addr: 0403
+expected addr: 0403
+decod addr: RI=1,GTI=1,GT=()
+
+=> GT-NOPC-TTONLY
+input addr: RI=1,GTI=2,GT=(TT=3,DIG=)
+rc=-22, expected rc=-22
+
+=> GT-NOPC-TT_NPL_ENC-ODD
+input addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=123)
+rc=5, expected rc=5
+encoded addr: 0c03112103
+expected addr: 0c03112103
+decod addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=123)
+
+=> GT-NOPC-TT_NPL_ENC-EVEN
+input addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=1234)
+rc=5, expected rc=5
+encoded addr: 0c03122143
+expected addr: 0c03122143
+decod addr: RI=1,GTI=3,GT=(TT=3,NPL=1,DIG=1234)
+
+=> GT-NOPC-TT_NPL_ENC_NAI-EVEN
+input addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1234)
+rc=6, expected rc=6
+encoded addr: 100312042143
+expected addr: 100312042143
+decod addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1234)
+
+=> GT-NOPC-GTI_INVALID
+input addr: RI=1,GTI=23,GT=(DIG=1234)
+rc=-22, expected rc=-22
+
+=> GT-NOPC-TT_NPL_ENC_NAI-EVEN-NONNUM
+input addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1ABF)
+rc=6, expected rc=6
+encoded addr: 10031204a1fb
+expected addr: 10031204a1fb
+decod addr: RI=1,GTI=4,GT=(TT=3,NPL=1,NAI=4,DIG=1ABF)
+
+All tests passed.