lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

October 2026

  • 1 participants
  • 1202 discussions
[S] Change in osmo-ttcn3-hacks[master]: HTTP2_Adapter: Add func helper f_http2_adapter_next_stream_id()
by pespin 16 Oct '26

16 Oct '26
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43893?usp=email ) Change subject: HTTP2_Adapter: Add func helper f_http2_adapter_next_stream_id() ...................................................................... HTTP2_Adapter: Add func helper f_http2_adapter_next_stream_id() Change-Id: I6a881a1d5bbce832cb8da5a6371fb1e46b920b56 --- M library/HTTP2_Adapter.ttcn M smf/SMF_Session_CT_5G.ttcn 2 files changed, 25 insertions(+), 4 deletions(-) Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved diff --git a/library/HTTP2_Adapter.ttcn b/library/HTTP2_Adapter.ttcn index 7ce7eef..5d40319 100644 --- a/library/HTTP2_Adapter.ttcn +++ b/library/HTTP2_Adapter.ttcn @@ -1,6 +1,6 @@ module HTTP2_Adapter { -/* HTTP2 Adapter component +/* HTTP2 Adapter component (RFC9113) * (C) 2019 by Harald Welte <laforge(a)gnumonks.org> * (C) 2026 by sysmocom s.f.m.c. GmbH <info(a)sysmocom.de> * All rights reserved. @@ -28,6 +28,7 @@ import from Misc_Helpers all; const integer HTTP2_MAX_NUM_CLIENTS := 4; +const integer HTTP2_ADAPTER_INITIAL_STREAM_ID := 1; type component HTTP2_CT { port HTTP2_CODEC_PT HTTP2[HTTP2_MAX_NUM_CLIENTS]; @@ -37,6 +38,9 @@ /* Connection identifier of the client / server itself */ var IPL4asp_Types.ConnectionId g_self_conn_id[HTTP2_MAX_NUM_CLIENTS]; + /* stream_id to use for next stream opened. */ + var IPL4asp_Types.ConnectionId g_http2_next_stream_id[HTTP2_MAX_NUM_CLIENTS]; + /* Header block compress enc/dec: */ var HTTP2_comp_context g_http2_ctx_dec[HTTP2_MAX_NUM_CLIENTS]; var HTTP2_comp_context g_http2_ctx_enc[HTTP2_MAX_NUM_CLIENTS]; @@ -69,6 +73,7 @@ function f_http2_adapter_init() runs on HTTP2_CT { for(var integer i := 0; i < HTTP2_MAX_NUM_CLIENTS; i := i + 1) { map(self:HTTP2[i], system:HTTP2_CODEC_PT); + g_http2_next_stream_id[i] := HTTP2_ADAPTER_INITIAL_STREAM_ID; g_self_conn_id[i] := -1; } } @@ -99,6 +104,18 @@ return -1; } +/* RFC 9913 5.1.1. Stream Identifiers: + * "Streams initiated by a client MUST use odd-numbered stream identifiers". + * "The identifier of a newly established stream MUST be numerically greater + * than all streams that the initiating endpoint has opened or reserved." + */ +function f_http2_adapter_next_stream_id(integer idx := 0) +runs on HTTP2_CT return integer { + var integer stream_id := g_http2_next_stream_id[idx]; + g_http2_next_stream_id[idx] := g_http2_next_stream_id[idx] + 2; + return stream_id; +} + private function f_http2_adapter_header_block_encode(HTTP2_header_block hb, integer idx := 0) runs on HTTP2_CT return octetstring { @@ -169,6 +186,7 @@ var IPL4asp_Types.Result res; res := HTTP2_CodecPort_CtrlFunct.f_IPL4_close(HTTP2[idx], g_self_conn_id[idx], {tcp := {}}); g_self_conn_id[idx] := -1; + g_http2_next_stream_id[idx] := HTTP2_ADAPTER_INITIAL_STREAM_ID; HTTP2_comp_context_free(g_http2_ctx_dec[idx]); HTTP2_comp_context_free(g_http2_ctx_enc[idx]); } diff --git a/smf/SMF_Session_CT_5G.ttcn b/smf/SMF_Session_CT_5G.ttcn index 493b031..ab35f03 100644 --- a/smf/SMF_Session_CT_5G.ttcn +++ b/smf/SMF_Session_CT_5G.ttcn @@ -135,7 +135,7 @@ var template (value) octetstring body_enc; var charstring http2_boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" var integer http2_idx; - var integer http2_stream_id := 3; + var integer http2_stream_id; var HTTP2_multipart_part_list parts; var template (value) HTTP2_Msg http2_tx; var HTTP2_Msg http2_rx; @@ -156,6 +156,7 @@ body_enc := f_HTTP2_multipart_msg_encode(parts, http2_boundary); http2_idx := f_http2_adapter_find_free_idx(); + http2_stream_id := f_http2_adapter_next_stream_id(http2_idx); http2_tx := ts_HTTP2_Msg(http2_idx, http2_stream_id, hb := { @@ -282,7 +283,7 @@ var template (value) octetstring body_enc; var charstring http2_boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" var integer http2_idx; - var integer http2_stream_id := 3; + var integer http2_stream_id; var HTTP2_multipart_part_list parts; var template (value) HTTP2_Msg http2_tx; var HTTP2_Msg http2_rx; @@ -303,6 +304,7 @@ body_enc := f_HTTP2_multipart_msg_encode(parts, http2_boundary); http2_idx := f_http2_adapter_find_free_idx(); + http2_stream_id := f_http2_adapter_next_stream_id(http2_idx); http2_tx := ts_HTTP2_Msg(http2_idx, http2_stream_id, hb := { @@ -360,7 +362,7 @@ var template (value) octetstring body_enc; var charstring http2_boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" var integer http2_idx; - var integer http2_stream_id := 3; + var integer http2_stream_id; var HTTP2_multipart_part_list parts; var template (value) HTTP2_Msg http2_tx; var HTTP2_Msg http2_rx; @@ -376,6 +378,7 @@ body_enc := f_HTTP2_multipart_msg_encode(parts, http2_boundary); http2_idx := f_http2_adapter_find_free_idx(); + http2_stream_id := f_http2_adapter_next_stream_id(http2_idx); http2_tx := ts_HTTP2_Msg(http2_idx, http2_stream_id, hb := { -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43893?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I6a881a1d5bbce832cb8da5a6371fb1e46b920b56 Gerrit-Change-Number: 43893 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: smf: Split enc/dec of multipart http2 messages into more generic helpers
by pespin 16 Oct '26

16 Oct '26
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43892?usp=email ) Change subject: smf: Split enc/dec of multipart http2 messages into more generic helpers ...................................................................... smf: Split enc/dec of multipart http2 messages into more generic helpers Add function helpers for: * Tx Create/Update/Release SM Context(SmContextUpdateData, ngap_enc, ngnas_enc). * Rx N1N2MessageTransfer(N1N2MessageTransferReqData, ngap_enc, ngnas_enc). These helpers will be reused in follow-up commits for other procedures, like PDU Session release. Change-Id: I5684cf0a5e955d9415e07e27b2a8d3478202e5fd --- M smf/SMF_Session_CT_5G.ttcn 1 file changed, 141 insertions(+), 99 deletions(-) Approvals: pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/smf/SMF_Session_CT_5G.ttcn b/smf/SMF_Session_CT_5G.ttcn index 61dfc0a..493b031 100644 --- a/smf/SMF_Session_CT_5G.ttcn +++ b/smf/SMF_Session_CT_5G.ttcn @@ -33,6 +33,7 @@ import from NAS_CommonTypeDefs all; import from NG_NAS_TypeDefs all; import from NG_NAS_MsgContainers all; +import from NG_NAS_Templates all; import from NG_NAS_Osmo_Types all; import from NG_NAS_Osmo_Templates all; import from NG_NAS_Functions all; @@ -125,34 +126,54 @@ amfId := "020040")); } -function f_http2_encode_body_multipart_json_5gnas(octetstring json_encoded, - octetstring nas_ecnoded, - charstring boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==") return octetstring -{ - var template (value) HTTP2_multipart_part_list parts; - parts := { - ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_type("application/json") }, - json_encoded), - ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id("5gnas-sm"), - ts_HTTP2_Hdr_content_type("application/vnd.3gpp.5gnas") }, - nas_ecnoded) - }; - return f_HTTP2_multipart_msg_encode(parts, boundary); -} +/* 3GPP TS 29.502 5.2.2.2 Create SM Context service operation */ +private function f_n11_prepare_create_sm_context(SmContextCreateData sm_ctx_create, + template (omit) octetstring ngap_enc := omit, + template (omit) octetstring ngnas_enc := omit) +runs on SMF_Session_CT return HTTP2_Msg { + var octetstring sm_ctx_create_enc; + var template (value) octetstring body_enc; + var charstring http2_boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" + var integer http2_idx; + var integer http2_stream_id := 3; + var HTTP2_multipart_part_list parts; + var template (value) HTTP2_Msg http2_tx; + var HTTP2_Msg http2_rx; -function f_http2_encode_body_multipart_json_ngap(octetstring json_encoded, - octetstring ngap_ecnoded, - charstring boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==") return octetstring -{ - var template (value) HTTP2_multipart_part_list parts; - parts := { - ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_type("application/json") }, - json_encoded), - ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id("N2SmInfo"), - ts_HTTP2_Hdr_content_type("application/vnd.3gpp.ngap") }, - ngap_ecnoded) - }; - return f_HTTP2_multipart_msg_encode(parts, boundary); + sm_ctx_create_enc := f_enc_SmContextCreateData(sm_ctx_create); + + parts := { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_type("application/json") }, sm_ctx_create_enc)) }; + if (ispresent(sm_ctx_create.n1SmMsg)) { + parts := parts & { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id(sm_ctx_create.n1SmMsg.contentId), + ts_HTTP2_Hdr_content_type("application/vnd.3gpp.5gnas") }, + valueof(ngnas_enc))) }; + } + if (ispresent(sm_ctx_create.n2SmInfo)) { + parts := parts & { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id(sm_ctx_create.n2SmInfo.contentId), + ts_HTTP2_Hdr_content_type("application/vnd.3gpp.ngap") }, + valueof(ngap_enc))) }; + } + + body_enc := f_HTTP2_multipart_msg_encode(parts, http2_boundary); + http2_idx := f_http2_adapter_find_free_idx(); + http2_tx := ts_HTTP2_Msg(http2_idx, + http2_stream_id, + hb := { + pseudo_headers := ts_HTTP2_pseudo_headers_Req(method := "POST", + scheme := "http", + authority := Nsmf_uri_hostport, + path := Nsmf_PDUSession_path_sm_contexts), + headers := { + ts_HTTP2_Hdr_content_type_multipart(http2_boundary), + ts_HTTP2_Hdr_accept("application/json,application/vnd.3gpp.ngap,application/problem+json"), + ts_HTTP2_Hdr_user_agent("ttcn3-amf"), + ts_HTTP2_Hdr_accept_encoding("gzip") + } + }, + body := ts_HTTP2_Data_frame(http2_stream_id, + end_stream_flag := true, + data := body_enc)); + return valueof(http2_tx); } /* Nsmf_PDUSession_CreateSMContext Request/response @@ -160,15 +181,11 @@ * 3GPP TS 29.502 6.1.3.2 */ function f_n11_create_session() runs on SMF_Session_CT { - var template (value) octetstring body; - var integer http2_idx; - var integer http2_stream_id := 3; - var template (value) HTTP2_Msg http2_tx; + var HTTP2_Msg http2_tx; var HTTP2_Msg http2_rx; var template (present) HTTP2_Msg http2_exp_rx; - var template (value) SmContextCreateData sm_contexts; - var octetstring sm_contexts_enc; + sm_contexts := ts_SmContextCreateData(supi := "imsi-" & g_pars.imsi_str, pei := "imeisv-0790219824011594", pduSessionId := g_pars.namf.pdu_sess_id, @@ -182,33 +199,11 @@ ratType := ts_RatType(NR), ueLocation := f_ts_UserLocation(), smContextStatusUri := ts_Namf_Callback_uri_imsi_sm_context_status_id(g_pars.imsi_str, int2str(g_pars.namf.pdu_sess_id))); - sm_contexts_enc := f_enc_SmContextCreateData(valueof(sm_contexts)); - - var charstring boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" var octetstring nas_enc := f_ng_nas_gen_session_establishment_request(); + http2_tx := f_n11_prepare_create_sm_context(valueof(sm_contexts), omit, nas_enc); - body := f_http2_encode_body_multipart_json_5gnas(sm_contexts_enc, nas_enc, boundary); - http2_idx := f_http2_adapter_find_free_idx(); - http2_tx := ts_HTTP2_Msg(http2_idx, - http2_stream_id, - hb := { - pseudo_headers := ts_HTTP2_pseudo_headers_Req(method := "POST", - scheme := "http", - authority := Nsmf_uri_hostport, - path := Nsmf_PDUSession_path_sm_contexts), - headers := { - ts_HTTP2_Hdr_content_type_multipart(boundary), - ts_HTTP2_Hdr_accept("application/json,application/vnd.3gpp.ngap,application/problem+json"), - ts_HTTP2_Hdr_user_agent("ttcn3-amf"), - ts_HTTP2_Hdr_accept_encoding("gzip") - } - }, - body := ts_HTTP2_Data_frame(http2_stream_id, - end_stream_flag := true, - data := body)); - - f_http2_adapter_connect(mp_smf_hostname, mp_smf_sbi_port, mp_amf_local_ip, idx := http2_idx); + f_http2_adapter_connect(mp_smf_hostname, mp_smf_sbi_port, mp_amf_local_ip, idx := http2_tx.conn_id); /////////// START MUTUAL EXCLUSION ZONE //////////// /* This code block cannot be executed by more than one component at a time because @@ -235,14 +230,14 @@ as_nudm_sdm_post_sdm_subscriptions(); /* Expect to receive "201 Created body={}" answer to our Nsmf sm-contexts request: */ - http2_exp_rx := tr_HTTP2_Msg(http2_idx, - http2_stream_id, + http2_exp_rx := tr_HTTP2_Msg(http2_tx.conn_id, + http2_tx.stream_id, tr_HTTP2_header_block(pseudo_headers := tr_HTTP2_pseudo_headers_Resp(201), headers := {*, tr_HTTP2_Hdr_location(tr_Nsmf_PDUSession_uri_sm_contexts), *}), - tr_HTTP2_Data_frame(stream_id := http2_stream_id, + tr_HTTP2_Data_frame(stream_id := http2_tx.stream_id, end_stream_flag := true, data := char2oct("{}"))); - as_http2_adapter_receive(http2_rx, http2_exp_rx, idx := http2_idx); + as_http2_adapter_receive(http2_rx, http2_exp_rx, idx := http2_tx.conn_id); /* Store obtained smContextRef:*/ var charstring created_location := valueof(f_HTTP2_header_list_find_header(http2_rx.hb.headers, c_HTTP2_HDR_location)); g_pars.nsmf.smContextRef := regexp(created_location, Nsmf_uri_prefix & Nsmf_PDUSession_path_sm_contexts & "/(?+)", 0); @@ -250,7 +245,7 @@ f_http2_server_emu_register(valueof(ts_Nsmf_PDUSession_path_sm_contexts(g_pars.nsmf.smContextRef)), idx := HTTP2_CONN_SCP); /* Close HTTP2 conn: */ - f_http2_adapter_close(idx := http2_idx); + f_http2_adapter_close(idx := http2_tx.conn_id); /* Expect PCF to receive POST sm-policies: */ as_npcf_smpolicycontrol_post_sm_policies(); @@ -267,9 +262,8 @@ f_Mutex_unlock(__BFILE__, __LINE__); /////////// END MUTUAL EXCLUSION ZONE //////////// - as_namf_comm_post_n1n2_messages(); - - f_n11_update_sm_context(); + as_namf_comm_post_n1n2_messages_pdu_sess_establishment(); + f_n11_update_sm_context_pdu_sess_establishment(); if (g_pars.pdn_type == c_PFCP_PDN_Type_IPv6 or g_pars.pdn_type == c_PFCP_PDN_Type_IPv4v6) { @@ -280,26 +274,34 @@ /* 3GPP TS 29.502 5.2.2.3 Update SM Context service operation */ -function f_n11_update_sm_context() -runs on SMF_Session_CT { - var template (value) SmContextUpdateData sm_ctx_update; +private function f_n11_prepare_update_sm_context(SmContextUpdateData sm_ctx_update, + template (omit) octetstring ngap_enc := omit, + template (omit) octetstring ngnas_enc := omit) +runs on SMF_Session_CT return HTTP2_Msg { var octetstring sm_ctx_update_enc; var template (value) octetstring body_enc; var charstring http2_boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" var integer http2_idx; var integer http2_stream_id := 3; + var HTTP2_multipart_part_list parts; var template (value) HTTP2_Msg http2_tx; var HTTP2_Msg http2_rx; - sm_ctx_update := ts_SmContextUpdateData(ueLocation := f_ts_UserLocation(), - n2SmInfo := TS29502_Nsmf_PDUSession_Templates.ts_RefToBinaryData("N2SmInfo"), - n2SmInfoType := ts_N2SmInfoType(PDU_RES_SETUP_RSP)); - sm_ctx_update_enc := f_enc_SmContextUpdateData(valueof(sm_ctx_update)); + sm_ctx_update_enc := f_enc_SmContextUpdateData(sm_ctx_update); - /* TODO: generate and encode ngap: */ - var octetstring ngap_enc := f_ngap_pdu_gen_PDUSessionResourceSetupResponseTransfer(); + parts := { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_type("application/json") }, sm_ctx_update_enc)) }; + if (ispresent(sm_ctx_update.n1SmMsg)) { + parts := parts & { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id(sm_ctx_update.n1SmMsg.contentId), + ts_HTTP2_Hdr_content_type("application/vnd.3gpp.5gnas") }, + valueof(ngnas_enc))) }; + } + if (ispresent(sm_ctx_update.n2SmInfo)) { + parts := parts & { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id(sm_ctx_update.n2SmInfo.contentId), + ts_HTTP2_Hdr_content_type("application/vnd.3gpp.ngap") }, + valueof(ngap_enc))) }; + } - body_enc := f_http2_encode_body_multipart_json_ngap(sm_ctx_update_enc, ngap_enc, http2_boundary); + body_enc := f_HTTP2_multipart_msg_encode(parts, http2_boundary); http2_idx := f_http2_adapter_find_free_idx(); http2_tx := ts_HTTP2_Msg(http2_idx, http2_stream_id, @@ -318,8 +320,24 @@ body := ts_HTTP2_Data_frame(http2_stream_id, end_stream_flag := true, data := body_enc)); + return valueof(http2_tx); +} - f_http2_adapter_connect(mp_smf_hostname, mp_smf_sbi_port, mp_amf_local_ip, idx := http2_idx); +function f_n11_update_sm_context_pdu_sess_establishment() +runs on SMF_Session_CT { + var template (value) SmContextUpdateData sm_ctx_update; + var template (value) octetstring body_enc; + var HTTP2_Msg http2_tx; + var HTTP2_Msg http2_rx; + + sm_ctx_update := ts_SmContextUpdateData(ueLocation := f_ts_UserLocation(), + n2SmInfo := TS29502_Nsmf_PDUSession_Templates.ts_RefToBinaryData("ngap-sm"), + n2SmInfoType := ts_N2SmInfoType(PDU_RES_SETUP_RSP)); + var octetstring ngap_enc := f_ngap_pdu_gen_PDUSessionResourceSetupResponseTransfer(); + + http2_tx := f_n11_prepare_update_sm_context(valueof(sm_ctx_update), ngap_enc); + + f_http2_adapter_connect(mp_smf_hostname, mp_smf_sbi_port, mp_amf_local_ip, idx := http2_tx.conn_id); f_http2_adapter_send(http2_tx); /* SMF updates RAN GTPU IP addr+TEID info on UPF: */ @@ -329,32 +347,34 @@ as_nudm_uecm_put_IndividualSmfRegistration(); /* Successful answer with no content: */ - as_http2_adapter_receive(http2_rx, tr_HTTP2_Msg_204_No_Content(), idx := http2_idx); - f_http2_adapter_close(idx := http2_idx); + as_http2_adapter_receive(http2_rx, tr_HTTP2_Msg_204_No_Content(), idx := http2_tx.conn_id); + f_http2_adapter_close(idx := http2_tx.conn_id); setverdict(pass); } -/* 5.2.2.4 Release SM Context service operation */ -function f_n11_delete_session() -runs on SMF_Session_CT { - var template (value) SmContextReleaseData sm_ctx_rel; +/* 3GPP TS 29.502 5.2.2.4 Release SM Context service operation */ +private function f_n11_prepare_release_sm_context(SmContextReleaseData sm_ctx_rel, + template (omit) octetstring ngap_enc := omit) +runs on SMF_Session_CT return HTTP2_Msg { var octetstring sm_ctx_rel_enc; var template (value) octetstring body_enc; var charstring http2_boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==" var integer http2_idx; var integer http2_stream_id := 3; + var HTTP2_multipart_part_list parts; var template (value) HTTP2_Msg http2_tx; var HTTP2_Msg http2_rx; - sm_ctx_rel := ts_SmContextReleaseData(ueLocation := f_ts_UserLocation(), - n2SmInfo := TS29502_Nsmf_PDUSession_Templates.ts_RefToBinaryData("N2SmInfo"), - n2SmInfoType := ts_N2SmInfoType(PDU_RES_SETUP_RSP)); - sm_ctx_rel_enc := f_enc_SmContextReleaseData(valueof(sm_ctx_rel)); + sm_ctx_rel_enc := f_enc_SmContextReleaseData(sm_ctx_rel); - /* TODO: generate and encode ngap: */ - var octetstring ngap_enc := f_ngap_pdu_gen_PDUSessionResourceSetupResponseTransfer(); + parts := { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_type("application/json") }, sm_ctx_rel_enc)) }; + if (ispresent(sm_ctx_rel.n2SmInfo)) { + parts := parts & { valueof(ts_HTTP2_multipart_part({ ts_HTTP2_Hdr_content_id(sm_ctx_rel.n2SmInfo.contentId), + ts_HTTP2_Hdr_content_type("application/vnd.3gpp.ngap") }, + valueof(ngap_enc))) }; + } - body_enc := f_http2_encode_body_multipart_json_ngap(sm_ctx_rel_enc, ngap_enc, http2_boundary); + body_enc := f_HTTP2_multipart_msg_encode(parts, http2_boundary); http2_idx := f_http2_adapter_find_free_idx(); http2_tx := ts_HTTP2_Msg(http2_idx, http2_stream_id, @@ -373,8 +393,23 @@ body := ts_HTTP2_Data_frame(http2_stream_id, end_stream_flag := true, data := body_enc)); + return valueof(http2_tx); +} - f_http2_adapter_connect(mp_smf_hostname, mp_smf_sbi_port, mp_amf_local_ip, idx := http2_idx); +/* 5.2.2.4 Release SM Context service operation */ +function f_n11_delete_session() +runs on SMF_Session_CT { + var template (value) SmContextReleaseData sm_ctx_rel; + var HTTP2_Msg http2_tx; + var HTTP2_Msg http2_rx; + + sm_ctx_rel := ts_SmContextReleaseData(ueLocation := f_ts_UserLocation(), + n2SmInfo := TS29502_Nsmf_PDUSession_Templates.ts_RefToBinaryData("N2SmInfo"), + n2SmInfoType := ts_N2SmInfoType(PDU_RES_SETUP_RSP)); + var octetstring ngap_enc := f_ngap_pdu_gen_PDUSessionResourceSetupResponseTransfer(); + + http2_tx := f_n11_prepare_release_sm_context(valueof(sm_ctx_rel), ngap_enc); + f_http2_adapter_connect(mp_smf_hostname, mp_smf_sbi_port, mp_amf_local_ip, idx := http2_tx.conn_id); f_http2_adapter_send(http2_tx); /* SMF deletes PDU Session on UPF: */ @@ -388,10 +423,10 @@ as_nudm_uecm_delete_IndividualSmfRegistration(); /* Successful answer with no content: */ - as_http2_adapter_receive(http2_rx, tr_HTTP2_Msg_204_No_Content(), idx := http2_idx); + as_http2_adapter_receive(http2_rx, tr_HTTP2_Msg_204_No_Content(), idx := http2_tx.conn_id); f_http2_server_emu_unregister(valueof(ts_Nsmf_PDUSession_path_sm_contexts(g_pars.nsmf.smContextRef)), idx := HTTP2_CONN_SCP); - f_http2_adapter_close(idx := http2_idx); + f_http2_adapter_close(idx := http2_tx.conn_id); setverdict(pass); } @@ -435,10 +470,22 @@ } /* 5.2.2.3.1 N1N2MessageTransfer */ -private altstep as_namf_comm_post_n1n2_messages() +private altstep as_namf_comm_post_n1n2_messages(out HTTP2_Msg http2_rx, out HTTP2_multipart_part_list parts) +runs on SMF_Session_CT { + [] HTTP2_CONN[HTTP2_CONN_SCP].receive(f_tr_Namf_Communication_post_n1n2_messages()) -> value http2_rx { + /* Split http2_rx.body.data into chunks since it is a multipart message: */ + var charstring content_type_val := valueof(f_HTTP2_header_list_find_header(http2_rx.hb.headers, c_HTTP2_HDR_content_type)); + var charstring boundary := f_HTTP2_header_content_type_multipart_val_get_boundary(content_type_val) + parts := f_HTTP2_multipart_msg_parse(http2_rx.body.data, boundary); + } +} + +/* 5.2.2.3.1 N1N2MessageTransfer, PDU Session establishment (see clause 4.3.2 of 3GPP TS 23.502) */ +private altstep as_namf_comm_post_n1n2_messages_pdu_sess_establishment() runs on SMF_Session_CT { var HTTP2_Msg http2_rx; - [] HTTP2_CONN[HTTP2_CONN_SCP].receive(f_tr_Namf_Communication_post_n1n2_messages()) -> value http2_rx { + var HTTP2_multipart_part_list parts; + [] as_namf_comm_post_n1n2_messages(http2_rx, parts) { var N1N2MessageTransferReqData n1n2msg_req; var NGAP_IEs.PDUSessionResourceSetupRequestTransfer setup_req_transf; var template (value) N1N2MessageTransferRspData n1n2msg_rsp; @@ -446,11 +493,6 @@ var template (value) HTTP2_Msg http2_tx; var octetstring body_enc; - /* Split http2_rx.body.data into chunks since it is a multipart message: */ - var charstring content_type_val := valueof(f_HTTP2_header_list_find_header(http2_rx.hb.headers, c_HTTP2_HDR_content_type)); - var charstring boundary := f_HTTP2_header_content_type_multipart_val_get_boundary(content_type_val) - var HTTP2_multipart_part_list parts := f_HTTP2_multipart_msg_parse(http2_rx.body.data, boundary); - /* Decode 1st part: SBI json: */ f_dec_N1N2MessageTransferReqData(parts[0].data, n1n2msg_req); // TODO: check returned integer. -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43892?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I5684cf0a5e955d9415e07e27b2a8d3478202e5fd Gerrit-Change-Number: 43892 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: smf,pgw: Split GTPv2C S2b/S5/S8c create session into multiple func he...
by pespin 16 Oct '26

16 Oct '26
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43895?usp=email ) Change subject: smf,pgw: Split GTPv2C S2b/S5/S8c create session into multiple func helpers ...................................................................... smf,pgw: Split GTPv2C S2b/S5/S8c create session into multiple func helpers This will be used by follow-up tests which want to trigger parts of the Create Session procedure. Modify PGW_Tests the same way to have similar code base (and because I wrongly started modifying it instead of SMF_Tests, so the work is done anyway ;) Change-Id: I07896c37d06014873b120f87457f99f529f4601a --- M pgw/PGW_Session_CT.ttcn M smf/SMF_Session_CT_4G.ttcn 2 files changed, 175 insertions(+), 104 deletions(-) Approvals: osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/pgw/PGW_Session_CT.ttcn b/pgw/PGW_Session_CT.ttcn index 146c3f2..f94192f 100644 --- a/pgw/PGW_Session_CT.ttcn +++ b/pgw/PGW_Session_CT.ttcn @@ -247,6 +247,21 @@ } } +function f_DIA_handle_create_sesion() runs on PGW_Session_CT +{ + var boolean do_s6b := is_s2b_iface(); + if (do_s6b and DIAMETER[DIA_S6b].checkstate("Connected")) { + as_DIA_S6b_AAR(); + } + if (DIAMETER[DIA_Gx].checkstate("Connected")) { + as_DIA_Gx_CCR(INITIAL_REQUEST); + } + /* FIXME: When on S2b interface, SMF is not using the Gy interface, unknown reason. */ + if (DIAMETER[DIA_Gy].checkstate("Connected")) { + as_DIA_Gy_CCR(INITIAL_REQUEST); + } +} + /* GTPv2C */ private function is_s2b_iface() runs on PGW_Session_CT return boolean { return (g_pars.rat_type == GTP2C_RAT_WLAN or g_pars.rat_type == GTP2C_RAT_Virtual); @@ -339,23 +354,11 @@ } } -/* create a session on the PGW */ -private function f_create_session(template (value) FullyQualifiedTEID fteid_c_ie, - template (value) FullyQualifiedTEID fteid_u_ie, - template (omit) UserLocationInfo uli_ie := omit, - template (omit) APCO apco := omit, - template APCO exp_apco := *) runs on PGW_Session_CT { - var PDU_GTPCv2 rx; - - /* Defaults used for s5/s8: */ - var boolean do_s6b := false; - var template APN_Restriction apn_restriction := ?; - /* Change behavior when on S2b: */ - if (is_s2b_iface()) { - do_s6b := true; - apn_restriction := omit; - } - +function f_s5s8_tx_create_session_req(template (value) FullyQualifiedTEID fteid_c_ie, + template (value) FullyQualifiedTEID fteid_u_ie, + template (omit) UserLocationInfo uli_ie := omit, + template (omit) APCO apco := omit) +runs on PGW_Session_CT { var template (value) PDU_GTPCv2 g2c := ts_GTP2C_CreateSessionReq(imsi := g_pars.imsi, msisdn := g_pars.msisdn, @@ -371,16 +374,27 @@ apco := apco); GTP2.send(g2c); - if (do_s6b and DIAMETER[DIA_S6b].checkstate("Connected")) { - as_DIA_S6b_AAR(); +} + +/* create a session on the PGW */ +private function f_create_session(template (value) FullyQualifiedTEID fteid_c_ie, + template (value) FullyQualifiedTEID fteid_u_ie, + template (omit) UserLocationInfo uli_ie := omit, + template (omit) APCO apco := omit, + template APCO exp_apco := *) runs on PGW_Session_CT { + var PDU_GTPCv2 rx; + + /* Defaults used for s5/s8: */ + var template APN_Restriction apn_restriction := ?; + /* Change behavior when on S2b: */ + if (is_s2b_iface()) { + apn_restriction := omit; } - if (DIAMETER[DIA_Gx].checkstate("Connected")) { - as_DIA_Gx_CCR(INITIAL_REQUEST); - } - /* FIXME: When on S2b interface, SMF is not using the Gy interface, unknown reason. */ - if (DIAMETER[DIA_Gy].checkstate("Connected")) { - as_DIA_Gy_CCR(INITIAL_REQUEST); - } + + f_s5s8_tx_create_session_req(fteid_c_ie, fteid_u_ie, uli_ie, apco); + + f_DIA_handle_create_sesion(); + alt { [] GTP2.receive(tr_GTP2C_CreateSessionResp(d_teid := g_pars.teic_local, cause := Request_accepted, @@ -445,42 +459,64 @@ } -/* create a session on the PGW on a S5/S8 interface (from SGW )*/ -function f_s5s8_create_session() runs on PGW_Session_CT { - var template (value) FullyQualifiedTEID fteid_c_ie, fteid_u_ie; +function f_s5s8_UserLocationInfo() runs on PGW_Session_CT return UserLocationInfo +{ var template (value) UserLocationInfo uli_ie; - - fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPC, g_pars.teic_local, 0, - f_inet_addr(mp_local_hostname_c), omit); - fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPU, g_pars.bearer.teid_local, 2, - f_inet_addr(mp_local_hostname_u), omit); - - - /* open5gs up to 1.2.3 won't accept it without ULI, despite not mandatory */ var template (value) TAI tai := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0001'O }; var template (value) ECGI ecgi := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0'H, 23 }; uli_ie := ts_GTP2C_UserLocInfo(tai := tai, ecgi := ecgi); + return valueof(uli_ie); +} - f_create_session(fteid_c_ie, fteid_u_ie, uli_ie); +function f_s5s8_fteid_c_ie() runs on PGW_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_c_ie; + fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPC, g_pars.teic_local, 0, + f_inet_addr(mp_local_hostname_c), omit); + return valueof(fteid_c_ie); +} +function f_s5s8_fteid_u_ie() runs on PGW_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_u_ie; + fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPU, g_pars.bearer.teid_local, 2, + f_inet_addr(mp_local_hostname_u), omit); + return valueof(fteid_u_ie); +} + +/* create a session on the PGW on a S5/S8 interface (from SGW )*/ +function f_s5s8_create_session() runs on PGW_Session_CT { + /* open5gs up to 1.2.3 won't accept it without ULI, despite not mandatory */ + f_create_session(f_s5s8_fteid_c_ie(), + f_s5s8_fteid_u_ie(), + f_s5s8_UserLocationInfo()); + +} + +function f_s2b_fteid_c_ie() runs on PGW_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_c_ie; + fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S2b_ePDG_GTPC, g_pars.teic_local, 0, + f_inet_addr(mp_local_hostname_c), omit); + return valueof(fteid_c_ie); +} + +function f_s2b_fteid_u_ie() runs on PGW_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_u_ie; + fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S2bU_ePDG_GTPU, g_pars.bearer.teid_local, 5, + f_inet_addr(mp_local_hostname_u), omit); + return valueof(fteid_u_ie); } /* create a session on the PGW on a S2b interface (from ePDG)*/ function f_s2b_create_session(template (omit) APCO apco := omit, template APCO exp_apco := *) runs on PGW_Session_CT { - var template (value) FullyQualifiedTEID fteid_c_ie, fteid_u_ie; - var template (value) UserLocationInfo uli_ie; - - fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S2b_ePDG_GTPC, g_pars.teic_local, 0, - f_inet_addr(mp_local_hostname_c), omit); - fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S2bU_ePDG_GTPU, g_pars.bearer.teid_local, 5, - f_inet_addr(mp_local_hostname_u), omit); - - var template (value) TAI tai := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0001'O }; - var template (value) ECGI ecgi := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0'H, 23 }; - uli_ie := ts_GTP2C_UserLocInfo(tai := tai, ecgi := ecgi); - - f_create_session(fteid_c_ie, fteid_u_ie, uli_ie := uli_ie, apco := apco, exp_apco := exp_apco); + f_create_session(f_s2b_fteid_c_ie(), + f_s2b_fteid_u_ie(), + uli_ie := f_s5s8_UserLocationInfo(), + apco := apco, + exp_apco := exp_apco); } diff --git a/smf/SMF_Session_CT_4G.ttcn b/smf/SMF_Session_CT_4G.ttcn index dbde8f4..35a2b5f 100644 --- a/smf/SMF_Session_CT_4G.ttcn +++ b/smf/SMF_Session_CT_4G.ttcn @@ -150,6 +150,21 @@ } } +function f_DIA_handle_create_sesion() runs on SMF_Session_CT +{ + var boolean do_s6b := is_s2b_iface(); + if (do_s6b and DIAMETER[DIA_S6b].checkstate("Connected")) { + as_DIA_S6b_AAR(); + } + if (DIAMETER[DIA_Gx].checkstate("Connected")) { + as_DIA_Gx_CCR(INITIAL_REQUEST); + } + /* FIXME: When on S2b interface, SMF is not using the Gy interface, unknown reason. */ + if (DIAMETER[DIA_Gy].checkstate("Connected")) { + as_DIA_Gy_CCR(INITIAL_REQUEST); + } +} + /* GTPv2C */ private function is_s2b_iface() runs on SMF_Session_CT return boolean { return (g_pars.rat_type == GTP2C_RAT_WLAN or g_pars.rat_type == GTP2C_RAT_Virtual); @@ -209,23 +224,11 @@ return int2bit(pfcp_pdn_type, 3); } -/* create a session on the SMF */ -private function f_create_session(template (value) FullyQualifiedTEID fteid_c_ie, - template (value) FullyQualifiedTEID fteid_u_ie, - template (omit) UserLocationInfo uli_ie := omit, - template (omit) APCO apco := omit, - template APCO exp_apco := *) runs on SMF_Session_CT { - var PDU_GTPCv2 rx; - - /* Defaults used for s5/s8: */ - var boolean do_s6b := false; - var template APN_Restriction apn_restriction := ?; - /* Change behavior when on S2b: */ - if (is_s2b_iface()) { - do_s6b := true; - apn_restriction := omit; - } - +function f_s5s8_tx_create_session_req(template (value) FullyQualifiedTEID fteid_c_ie, + template (value) FullyQualifiedTEID fteid_u_ie, + template (omit) UserLocationInfo uli_ie := omit, + template (omit) APCO apco := omit) +runs on SMF_Session_CT { var template (value) PDU_GTPCv2 g2c := ts_GTP2C_CreateSessionReq(imsi := g_pars.imsi, msisdn := g_pars.msisdn, @@ -240,6 +243,24 @@ servingNetwork := ts_GTP2C_ServingNetwork('001'H, '01F'H), apco := apco); + GTP2.send(g2c); +} + +/* create a session on the SMF */ +private function f_create_session(template (value) FullyQualifiedTEID fteid_c_ie, + template (value) FullyQualifiedTEID fteid_u_ie, + template (omit) UserLocationInfo uli_ie := omit, + template (omit) APCO apco := omit, + template APCO exp_apco := *) runs on SMF_Session_CT { + var PDU_GTPCv2 rx; + + /* Defaults used for s5/s8: */ + var template APN_Restriction apn_restriction := ?; + /* Change behavior when on S2b: */ + if (is_s2b_iface()) { + apn_restriction := omit; + } + /////////// START MUTUAL EXCLUSION ZONE //////////// /* This code block cannot be executed by more than one component at a time because * the RANAP RAB Ass Request triggers the IUT to send PFCP Session Establishment @@ -253,17 +274,9 @@ * expected to have SEID set to 0, as per 3GPP TS 29.244, section 7.2.2.4.2. */ f_PFCPEM_subscribe_seid(c_SEID0); - GTP2.send(g2c); - if (do_s6b and DIAMETER[DIA_S6b].checkstate("Connected")) { - as_DIA_S6b_AAR(); - } - if (DIAMETER[DIA_Gx].checkstate("Connected")) { - as_DIA_Gx_CCR(INITIAL_REQUEST); - } - /* FIXME: When on S2b interface, SMF is not using the Gy interface, unknown reason. */ - if (DIAMETER[DIA_Gy].checkstate("Connected")) { - as_DIA_Gy_CCR(INITIAL_REQUEST); - } + f_s5s8_tx_create_session_req(fteid_c_ie, fteid_u_ie, uli_ie, apco); + + f_DIA_handle_create_sesion(); /* Expect PFCP Session Establishment Request. */ as_pfcp_sess_est_req(); @@ -340,42 +353,64 @@ } -/* create a session on the SMF on a S5/S8 interface (from SGW )*/ -function f_s5s8_create_session() runs on SMF_Session_CT { - var template (value) FullyQualifiedTEID fteid_c_ie, fteid_u_ie; +function f_s5s8_UserLocationInfo() runs on SMF_Session_CT return UserLocationInfo +{ var template (value) UserLocationInfo uli_ie; - - fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPC, g_pars.teic_local, 0, - f_inet_addr(mp_local_hostname_c), omit); - fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPU, g_pars.bearer.teid_local, 2, - f_inet_addr(mp_local_hostname_u), omit); - - - /* open5gs up to 1.2.3 won't accept it without ULI, despite not mandatory */ var template (value) TAI tai := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0001'O }; var template (value) ECGI ecgi := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0'H, 23 }; uli_ie := ts_GTP2C_UserLocInfo(tai := tai, ecgi := ecgi); + return valueof(uli_ie); +} - f_create_session(fteid_c_ie, fteid_u_ie, uli_ie); +function f_s5s8_fteid_c_ie() runs on SMF_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_c_ie; + fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPC, g_pars.teic_local, 0, + f_inet_addr(mp_local_hostname_c), omit); + return valueof(fteid_c_ie); +} +function f_s5s8_fteid_u_ie() runs on SMF_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_u_ie; + fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S5S8_SGW_GTPU, g_pars.bearer.teid_local, 2, + f_inet_addr(mp_local_hostname_u), omit); + return valueof(fteid_u_ie); +} + +/* create a session on the SMF on a S5/S8 interface (from SGW )*/ +function f_s5s8_create_session() runs on SMF_Session_CT { + /* open5gs up to 1.2.3 won't accept it without ULI, despite not mandatory */ + f_create_session(f_s5s8_fteid_c_ie(), + f_s5s8_fteid_u_ie(), + f_s5s8_UserLocationInfo()); + +} + +function f_s2b_fteid_c_ie() runs on SMF_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_c_ie; + fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S2b_ePDG_GTPC, g_pars.teic_local, 0, + f_inet_addr(mp_local_hostname_c), omit); + return valueof(fteid_c_ie); +} + +function f_s2b_fteid_u_ie() runs on SMF_Session_CT return FullyQualifiedTEID +{ + var template (value) FullyQualifiedTEID fteid_u_ie; + fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S2bU_ePDG_GTPU, g_pars.bearer.teid_local, 5, + f_inet_addr(mp_local_hostname_u), omit); + return valueof(fteid_u_ie); } /* create a session on the SMF on a S2b interface (from ePDG)*/ function f_s2b_create_session(template (omit) APCO apco := omit, template APCO exp_apco := *) runs on SMF_Session_CT { - var template (value) FullyQualifiedTEID fteid_c_ie, fteid_u_ie; - var template (value) UserLocationInfo uli_ie; - - fteid_c_ie := ts_GTP2C_FTEID(FTEID_IF_S2b_ePDG_GTPC, g_pars.teic_local, 0, - f_inet_addr(mp_local_hostname_c), omit); - fteid_u_ie := ts_GTP2C_FTEID(FTEID_IF_S2bU_ePDG_GTPU, g_pars.bearer.teid_local, 5, - f_inet_addr(mp_local_hostname_u), omit); - - var template (value) TAI tai := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0001'O }; - var template (value) ECGI ecgi := { '0'H, '0'H, '1'H, 'F'H, '0'H, '1'H, '0'H, 23 }; - uli_ie := ts_GTP2C_UserLocInfo(tai := tai, ecgi := ecgi); - - f_create_session(fteid_c_ie, fteid_u_ie, uli_ie := uli_ie, apco := apco, exp_apco := exp_apco); + f_create_session(f_s2b_fteid_c_ie(), + f_s2b_fteid_u_ie(), + uli_ie := f_s5s8_UserLocationInfo(), + apco := apco, + exp_apco := exp_apco); } -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43895?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I07896c37d06014873b120f87457f99f529f4601a Gerrit-Change-Number: 43895 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: smf: Introduce test TC_createSession_pfcp_sess_est_timeout
by pespin 16 Oct '26

16 Oct '26
Attention is currently required from: osmith. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43902?usp=email ) Change subject: smf: Introduce test TC_createSession_pfcp_sess_est_timeout ...................................................................... Patch Set 4: (1 comment) File smf/SMF_Session_CT_4G.ttcn: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43902/comment/471aa537_fedf… : PS4, Line 168: f_DIA_handle_delete_sesion > ```suggestion […] Done -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43902?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: I005cc6c6afd3f9aba15790e8cd67eeaa2f4d4b89 Gerrit-Change-Number: 43902 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:47:40 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: osmith <osmith(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: smf: Introduce test TC_5g_pfcp_heartbeat_recovery_timestamp
by osmith 16 Oct '26

16 Oct '26
Attention is currently required from: pespin. osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43906?usp=email ) Change subject: smf: Introduce test TC_5g_pfcp_heartbeat_recovery_timestamp ...................................................................... Patch Set 3: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43906?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: Ie1511ef9cfad49e089bd5f2f0638feaf24c6e4c2 Gerrit-Change-Number: 43906 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:46:57 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: smf: Introduce test TC_5g_pfcp_heartbeat_timeout
by osmith 16 Oct '26

16 Oct '26
Attention is currently required from: pespin. osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43905?usp=email ) Change subject: smf: Introduce test TC_5g_pfcp_heartbeat_timeout ...................................................................... Patch Set 5: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43905?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: Id1db247658aa11e10626357fbb47616ba425fb7f Gerrit-Change-Number: 43905 Gerrit-PatchSet: 5 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:46:33 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: smf: Introduce test TC_createSession_pfcp_sess_est_timeout
by osmith 16 Oct '26

16 Oct '26
Attention is currently required from: pespin. osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43902?usp=email ) Change subject: smf: Introduce test TC_createSession_pfcp_sess_est_timeout ...................................................................... Patch Set 4: Code-Review+1 (1 comment) File smf/SMF_Session_CT_4G.ttcn: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43902/comment/1c6deb8a_42f9… : PS4, Line 168: f_DIA_handle_delete_sesion ```suggestion function f_DIA_handle_delete_session() runs on SMF_Session_CT ``` -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43902?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: I005cc6c6afd3f9aba15790e8cd67eeaa2f4d4b89 Gerrit-Change-Number: 43902 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:45:10 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: smf,pgw: Split GTPv2C S2b/S5/S8c create session into multiple func he...
by pespin 16 Oct '26

16 Oct '26
pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43895?usp=email ) Change subject: smf,pgw: Split GTPv2C S2b/S5/S8c create session into multiple func helpers ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43895?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: I07896c37d06014873b120f87457f99f529f4601a Gerrit-Change-Number: 43895 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:43:39 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: HTTP2_Adapter: Add func helper f_http2_adapter_next_stream_id()
by osmith 16 Oct '26

16 Oct '26
Attention is currently required from: laforge, pespin. osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43893?usp=email ) Change subject: HTTP2_Adapter: Add func helper f_http2_adapter_next_stream_id() ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43893?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: I6a881a1d5bbce832cb8da5a6371fb1e46b920b56 Gerrit-Change-Number: 43893 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:43:31 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: smf: Split enc/dec of multipart http2 messages into more generic helpers
by pespin 16 Oct '26

16 Oct '26
Attention is currently required from: fixeria. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43892?usp=email ) Change subject: smf: Split enc/dec of multipart http2 messages into more generic helpers ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43892?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: I5684cf0a5e955d9415e07e27b2a8d3478202e5fd Gerrit-Change-Number: 43892 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Fri, 16 Oct 2026 14:43:23 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • ...
  • 121
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.