Attention is currently required from: pespin.
fixeria has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37920?usp=email )
Change subject: s1gw: Add initial PFCP support emulating UPF
......................................................................
Patch Set 2:
(3 comments)
File s1gw/ConnHdlr.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37920/comment/998c4ebc_c0b6… :
PS2, Line 185: float Tval := 5.0
This looks unrelated. Can you explain why doing this change?
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37920/comment/827366be_dbe0… :
PS2, Line 269: do_repeat := true
Do we normally expect receiving the Assoc Setup Req more than once?
This would likely mean that the `pfcp_peer` module has crashed...
File s1gw/S1GW_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37920/comment/11c9b39c_7d4f… :
PS2, Line 81: id) alive
These changes looks unrelated to me:
* adding `alive` -- sounds like a separate patch?
* making `id` configurable (but still passing `testcasename()`)
* why doing this? what for?
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37920?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: If2b135e113d2568092e90ac9b6c5f651ab30f5d0
Gerrit-Change-Number: 37920
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Sun, 25 Aug 2024 18:07:27 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Attention is currently required from: pespin.
fixeria has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37915?usp=email )
Change subject: s1gw: Validate S1SetupResp is forwarded fine MME->ENB
......................................................................
Patch Set 1: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37915?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I6d9b060eb81269c7cb76e007f669c5b9ead97158
Gerrit-Change-Number: 37915
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Sun, 25 Aug 2024 17:55:14 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Attention is currently required from: jolly, pespin.
laforge has posted comments on this change by jolly. ( https://gerrit.osmocom.org/c/libosmocore/+/37798?usp=email )
Change subject: After writing VTY config, run sync() in a different thread
......................................................................
Patch Set 5:
(1 comment)
Patchset:
PS5:
I just saw this paper of using sync() as a covert channel between two programs on the same host. Not really relevant to us, but maybe somebody else finds it interesting: https://www.usenix.org/system/files/sec23winter-prepub-554-jiang.pdf
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/37798?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I3cb2ee68b2e4c730f96522208c4abf00d0f49a44
Gerrit-Change-Number: 37798
Gerrit-PatchSet: 5
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: Hoernchen <ewild(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Sun, 25 Aug 2024 16:49:25 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/37925?usp=email )
Change subject: pySim.apdu_source.stdin_hex
......................................................................
pySim.apdu_source.stdin_hex
Change-Id: I5aacf13b7c27cea9efd42f01dacca61068c3aa33
---
M pySim-trace.py
A pySim/apdu_source/stdin_hex.py
2 files changed, 48 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/25/37925/1
diff --git a/pySim-trace.py b/pySim-trace.py
index 74dc8b9..a43d05c 100755
--- a/pySim-trace.py
+++ b/pySim-trace.py
@@ -22,6 +22,7 @@
from pySim.apdu_source.pyshark_rspro import PysharkRsproPcap, PysharkRsproLive
from pySim.apdu_source.pyshark_gsmtap import PysharkGsmtapPcap
from pySim.apdu_source.tca_loader_log import TcaLoaderLogApduSource
+from pySim.apdu_source.stdin_hex import StdinHexApduSource
from pySim.apdu.ts_102_221 import UiccSelect, UiccStatus
@@ -189,6 +190,10 @@
parser_tcaloader_log.add_argument('-f', '--log-file', required=True,
help='Name of te log file to be read')
+parser_stdin_hex = subparsers.add_parser('stdin-hex', help="""
+ Read APDUs as hex-string from stdin.""")
+
+
if __name__ == '__main__':
opts = option_parser.parse_args()
@@ -204,6 +209,8 @@
s = PysharkGsmtapPcap(opts.pcap_file)
elif opts.source == 'tca-loader-log':
s = TcaLoaderLogApduSource(opts.log_file)
+ elif opts.source == 'stdin-hex':
+ s = StdinHexApduSource()
else:
raise ValueError("unsupported source %s", opts.source)
diff --git a/pySim/apdu_source/stdin_hex.py b/pySim/apdu_source/stdin_hex.py
new file mode 100644
index 0000000..53d3106
--- /dev/null
+++ b/pySim/apdu_source/stdin_hex.py
@@ -0,0 +1,41 @@
+# coding=utf-8
+
+# (C) 2024 by Harald Welte <laforge(a)osmocom.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+from pySim.utils import h2b
+from pySim.gsmtap import GsmtapSource
+
+from pySim.apdu.ts_102_221 import ApduCommands as UiccApduCommands
+from pySim.apdu.ts_102_222 import ApduCommands as UiccAdmApduCommands
+from pySim.apdu.ts_31_102 import ApduCommands as UsimApduCommands
+from pySim.apdu.global_platform import ApduCommands as GpApduCommands
+
+from . import ApduSource, PacketType, CardReset
+
+ApduCommands = UiccApduCommands + UiccAdmApduCommands + UsimApduCommands + GpApduCommands
+
+class StdinHexApduSource(ApduSource):
+ """ApduSource for reading apdu hex-strings from stdin."""
+
+ def read_packet(self) -> PacketType:
+ command = None
+ response = None
+ while True:
+ command = input("C-APDU >")
+ response = '9000'
+ return ApduCommands.parse_cmd_bytes(h2b(command) + h2b(response))
+ raise StopIteration
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37925?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I5aacf13b7c27cea9efd42f01dacca61068c3aa33
Gerrit-Change-Number: 37925
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/37926?usp=email )
Change subject: contrib: script to generate "update" commands from diff of fsdumps
......................................................................
contrib: script to generate "update" commands from diff of fsdumps
Change-Id: I08897cd353093575f98c68580afbc68b6f2f878f
---
A contrib/fsdump-diff-apply.py
1 file changed, 169 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/26/37926/1
diff --git a/contrib/fsdump-diff-apply.py b/contrib/fsdump-diff-apply.py
new file mode 100755
index 0000000..c4f907e
--- /dev/null
+++ b/contrib/fsdump-diff-apply.py
@@ -0,0 +1,169 @@
+#!/usr/bin/env python3
+
+# The purpose of this script is to
+# * load two SIM card 'fsdump' files
+# * determine which file contents in "B" differs from that of "A"
+# * create a pySim-shell script to update the contents of "A" to match that of "B"
+
+# (C) 2024 by Harald Welte <laforge(a)osmocom.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import json
+import argparse
+
+# Files that we should not update
+FILES_TO_SKIP = [
+ "MF/EF.ICCID",
+ #"MF/DF.GSM/EF.IMSI",
+ #"MF/ADF.USIM/EF.IMSI",
+ ]
+
+# Files that need zero-padding at the end, not ff-padding
+FILES_PAD_ZERO = [
+ "DF.GSM/EF.SST",
+ "MF/ADF.USIM/EF.UST",
+ "MF/ADF.USIM/EF.EST",
+ "MF/ADF.ISIM/EF.IST",
+ ]
+
+def pad_file(path, instr, byte_len):
+ if path in FILES_PAD_ZERO:
+ pad = '0'
+ else:
+ pad = 'f'
+ return pad_hexstr(instr, byte_len, pad)
+
+def pad_hexstr(instr, byte_len:int, pad='f'):
+ """Pad given hex-string to the number of bytes given in byte_len, using ff as padding."""
+ if len(instr) == byte_len*2:
+ return instr
+ elif len(instr) > byte_len*2:
+ raise ValueError('Cannot pad string of length %u to smaller length %u' % (len(instr)/2, byte_len))
+ else:
+ return instr + pad * (byte_len*2 - len(instr))
+
+def is_all_ff(instr):
+ """Determine if the entire input hex-string consists of f-digits."""
+ if all([x == 'f' for x in instr.lower()]):
+ return True
+ else:
+ return False
+
+parser = argparse.ArgumentParser()
+parser.add_argument('file_a')
+parser.add_argument('file_b')
+
+
+if __name__ == '__main__':
+ opts = parser.parse_args()
+
+ with open(opts.file_a, 'r') as file_a:
+ json_a = json.loads(file_a.read())
+ with open(opts.file_b, 'r') as file_b:
+ json_b = json.loads(file_b.read())
+
+ for path in json_b.keys():
+ print()
+ print("# %s" % path)
+
+ if not path in json_a:
+ raise ValueError("%s doesn't exist in file_a!" % path)
+
+ if path in FILES_TO_SKIP:
+ print("# skipped explicitly as it is in FILES_TO_SKIP")
+ continue
+
+ if not 'body' in json_b[path]:
+ print("# file doesn't exist in B so we cannot possibly need to modify A")
+ continue
+
+ if not 'body' in json_a[path]:
+ # file was not readable in original (permissions? deactivated?)
+ print("# ERROR: %s not readable in A; please fix that" % path)
+ continue
+
+ body_a = json_a[path]['body']
+ body_b = json_b[path]['body']
+ if body_a == body_b:
+ print("# file body is identical")
+ continue
+
+ file_size_a = json_a[path]['fcp']['file_size']
+ file_size_b = json_b[path]['fcp']['file_size']
+
+ cmds = []
+ structure = json_b[path]['fcp']['file_descriptor']['file_descriptor_byte']['structure']
+ if structure == 'transparent':
+ val_a = body_a
+ val_b = body_b
+ if file_size_a < file_size_b:
+ if not is_all_ff(val_b[2*file_size_a:]):
+ print("# ERROR: file_size_a (%u) < file_size_b (%u); pleaes fix!" % (file_size_a, file_size_b))
+ continue
+ else:
+ print("# WARN: file_size_a (%u) < file_size_b (%u); pleaes fix!" % (file_size_a, file_size_b))
+ # truncate val_b to fit in A
+ val_b = val_b[:file_size_a*2]
+
+ elif file_size_a != file_size_b:
+ print("# NOTE: file_size_a (%u) != file_size_b (%u)" % (file_size_a, file_size_b))
+
+ # Pad to file_size_a
+ val_b = pad_file(path, val_b, file_size_a)
+ if val_b != val_a:
+ cmds.append("update_binary %s" % val_b)
+ else:
+ print("# padded file body is identical")
+ elif structure in ['linear_fixed', 'cyclic']:
+ record_len_a = json_a[path]['fcp']['file_descriptor']['record_len']
+ record_len_b = json_b[path]['fcp']['file_descriptor']['record_len']
+ if record_len_a < record_len_b:
+ print("# ERROR: record_len_a (%u) < record_len_b (%u); pleaes fix!" % (file_size_a, file_size_b))
+ continue
+ elif record_len_a != record_len_b:
+ print("# NOTE: record_len_a (%u) != record_len_b (%u)" % (record_len_a, record_len_b))
+
+ num_rec_a = file_size_a // record_len_a
+ num_rec_b = file_size_b // record_len_b
+ if num_rec_a < num_rec_b:
+ if not all([is_all_ff(x) for x in body_b[num_rec_a:]]):
+ print("# ERROR: num_rec_a (%u) < num_rec_b (%u); please fix!" % (num_rec_a, num_rec_b))
+ continue
+ else:
+ print("# WARN: num_rec_a (%u) < num_rec_b (%u); but they're empty" % (num_rec_a, num_rec_b))
+ elif num_rec_a != num_rec_b:
+ print("# NOTE: num_rec_a (%u) != num_rec_b (%u)" % (num_rec_a, num_rec_b))
+
+ i = 0
+ for r in body_b:
+ if i < len(body_a):
+ break
+ val_a = body_a[i]
+ # Pad to record_len_a
+ val_b = pad_file(path, body_b[i], record_len_a)
+ if val_a != val_b:
+ cmds.append("update_record %u %s" % (i+1, val_b))
+ i = i + 1
+ if len(cmds) == 0:
+ print("# padded file body is identical")
+ elif structure == 'ber_tlv':
+ print("# FIXME: Implement BER-TLV")
+ else:
+ raise ValueError('Unsupported structure %s' % structure)
+
+ if len(cmds):
+ print("select %s" % path)
+ for cmd in cmds:
+ print(cmd)
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37926?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I08897cd353093575f98c68580afbc68b6f2f878f
Gerrit-Change-Number: 37926
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37921?usp=email )
Change subject: sctp_proxy: Allow handling EXIT signal
......................................................................
sctp_proxy: Allow handling EXIT signal
The gen_statem in sctp_proxy.erl has code to handle EXIT signal of
children in connected() state, but it lacks enabling receival of the
EXIT signal. gen_statem don't have the trap enabled by default.
Change-Id: I3dcad7450be8883736eb6f2ea1460add3b83e01b
---
M src/sctp_proxy.erl
1 file changed, 1 insertion(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/21/37921/1
diff --git a/src/sctp_proxy.erl b/src/sctp_proxy.erl
index 1d8d305..3ebabbd 100644
--- a/src/sctp_proxy.erl
+++ b/src/sctp_proxy.erl
@@ -75,6 +75,7 @@
%% ------------------------------------------------------------------
init([Aid, MmeAddr, MmePort]) ->
+ process_flag(trap_exit, true),
{ok, connecting,
#{enb_aid => Aid,
mme_addr => MmeAddr,
--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37921?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I3dcad7450be8883736eb6f2ea1460add3b83e01b
Gerrit-Change-Number: 37921
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>