laforge has submitted this change. (
https://gerrit.osmocom.org/c/pysim/+/35278?usp=email
)
Change subject: isim: Replace legacy imperative address TLV encoder/decoder with
construct
......................................................................
isim: Replace legacy imperative address TLV encoder/decoder with construct
We've recently introduced IPv{4,6}Adapter construct classes and can
switch to this instead of using the old imperative encoder/decoder
functions {enc,dec}_addr_tlv().
Aside from code cleanup, this also means we now support the IPv6 address
type in EF.PCSCF.
Change-Id: I4d01ccfe473a8a80fbee33fdcbd8a19b39da85ac
---
M pySim/ts_31_103.py
M pysim-testdata/pySim-trace_test_gsmtap.pcapng.ok
2 files changed, 33 insertions(+), 18 deletions(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
diff --git a/pySim/ts_31_103.py b/pySim/ts_31_103.py
index 5268c70..a4a7656 100644
--- a/pySim/ts_31_103.py
+++ b/pySim/ts_31_103.py
@@ -135,19 +135,18 @@
class EF_PCSCF(LinFixedEF):
_test_de_encode = [
(
'802c0070637363662e696d732e6d6e633030302e6d63633733382e7075622e336770706e6574776f726b2e6f7267',
- { "addr": "pcscf.ims.mnc000.mcc738.pub.3gppnetwork.org",
"addr_type": "00" } ),
+ {'pcscf_address': { "address":
"pcscf.ims.mnc000.mcc738.pub.3gppnetwork.org", "type_of_address":
"FQDN" } } ),
]
+ class PcscfAddress(BER_TLV_IE, tag=0x80):
+ _construct = Struct('type_of_address'/Enum(Byte, FQDN=0, IPv4=1,
IPv6=2),
+ 'address'/Switch(this.type_of_address,
+ {'FQDN': Utf8Adapter(GreedyBytes),
+ 'IPv4': Ipv4Adapter(GreedyBytes),
+ 'IPv6':
Ipv6Adapter(GreedyBytes)}))
+
def __init__(self, fid='6f09', sfid=None, name='EF.P-CSCF',
desc='P-CSCF Address', **kwargs):
super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-
- def _decode_record_hex(self, raw_hex, **kwargs):
- addr, addr_type = dec_addr_tlv(raw_hex)
- return {"addr": addr, "addr_type": addr_type}
-
- def _encode_record_hex(self, json_in, **kwargs):
- addr = json_in['addr']
- addr_type = json_in['addr_type']
- return enc_addr_tlv(addr, addr_type)
+ self._tlv = EF_PCSCF.PcscfAddress
# TS 31.103 Section 4.2.9
class EF_GBABP(TransparentEF):
diff --git a/pysim-testdata/pySim-trace_test_gsmtap.pcapng.ok
b/pysim-testdata/pySim-trace_test_gsmtap.pcapng.ok
index a8a7676..600c36d 100644
--- a/pysim-testdata/pySim-trace_test_gsmtap.pcapng.ok
+++ b/pysim-testdata/pySim-trace_test_gsmtap.pcapng.ok
@@ -343,7 +343,7 @@
===============================
01 READ BINARY MF/ADF.ISIM/EF.DOMAIN - 9000 {'domain':
''}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 01 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 01 9000
{'pcscf_address': None}
===============================
01 READ BINARY MF/ADF.ISIM/EF.IST - 9000 {1:
{'activated': True, 'description': 'P-CSCF address'}, 2:
{'activated': False, 'description': 'Generic Bootstrapping
Architecture (GBA)'}, 3: {'activated': False, 'description': 'HTTP
Digest'}, 4: {'activated': True, 'description': 'GBA-based Local
Key Establishment Mechanism'}, 5: {'activated': True, 'description':
'Support of P-CSCF discovery for IMS Local Break Out'}, 6: {'activated':
False, 'description': 'Short Message Storage (SMS)'}, 7:
{'activated': False, 'description': 'Short Message Status Reports
(SMSR)'}, 8: {'activated': False, 'description': 'Support for
SM-over-IP including data download via SMS-PP as defined in TS 31.111 [31]'}, 9:
{'activated': False, 'description': 'Communication Control for IMS by
ISIM'}, 10: {'activated': True, 'description': 'Support of UICC
access to IMS'}, 11: {'activated': False, 'description': 'URI
support by UICC'}, 12: {'activated': False, 'description': 'Media
Type support'}, 13: {'activated': False, 'description': 'IMS call
disconnection cause'}, 14: {'activated': False, 'description':
'URI support for MO SHORT MESSAGE CONTROL'}, 15: {'activated': False,
'description': 'MCPTT'}, 16: {'activated': False,
'description': 'URI support for SMS-PP DOWNLOAD as defined in 3GPP TS 31.111
[31]'}, 17: {'activated': False, 'description': 'From
Preferred'}, 18: {'activated': False, 'description': 'IMS
configuration data'}, 19: {'activated': False, 'description':
'XCAP Configuration Data'}, 20: {'activated': False,
'description': 'WebRTC URI'}, 21: {'activated': False,
'description': 'MuD and MiD configuration data'}, 22:
{'activated': False}, 23: {'activated': False}, 24: {'activated':
False}}
===============================
@@ -351,7 +351,7 @@
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 02 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 02 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 02 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
00 MANAGE CHANNEL 02 9000 {'mode':
'open_channel', 'created_channel': 2}
===============================
@@ -359,7 +359,7 @@
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 03 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 03 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 03 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
00 UPDATE BINARY MF/ADF.USIM/EF.CBMI - 9000 [[65535], [65535],
[65535], [65535], [65535], [65535], [65535], [65535], [65535], [65535]]
===============================
@@ -393,25 +393,25 @@
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 04 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 04 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 04 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
00 UPDATE BINARY MF/ADF.USIM/EF.CBMIR - 9000 [[{'lower':
65535, 'upper': 65535}], [{'lower': 65535, 'upper': 65535}],
[{'lower': 65535, 'upper': 65535}], [{'lower': 65535,
'upper': 65535}], [{'lower': 65535, 'upper': 65535}]]
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 05 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 05 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 05 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 06 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 06 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 06 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 07 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 07 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 07 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
01 READ RECORD MF/ADF.ISIM/EF.IMPU 08 9000 {'impu':
None}
===============================
-01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 08 9000 {'addr':
None, 'addr_type': None}
+01 READ RECORD MF/ADF.ISIM/EF.P-CSCF 08 9000
{'pcscf_address': {'type_of_address': 255, 'address': None}}
===============================
00 MANAGE CHANNEL 02 9000 {'mode':
'open_channel', 'created_channel': 2}
===============================
--
To view, visit
https://gerrit.osmocom.org/c/pysim/+/35278?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I4d01ccfe473a8a80fbee33fdcbd8a19b39da85ac
Gerrit-Change-Number: 35278
Gerrit-PatchSet: 5
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged