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 -----
  • November
  • 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

November 2023

  • 1 participants
  • 1508 discussions
[M] Change in osmo-bts[master]: Use polling based LAPDm with frame numbers
by jolly 29 Nov '23

29 Nov '23
Attention is currently required from: fixeria, jolly, laforge. Hello Jenkins Builder, fixeria, laforge, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bts/+/35007?usp=email to look at the new patch set (#7). The following approvals got outdated and were removed: Code-Review+2 by fixeria, Code-Review-1 by laforge, Verified+1 by Jenkins Builder The change is no longer submittable: Code-Review and Verified are unsatisfied now. Change subject: Use polling based LAPDm with frame numbers ...................................................................... Use polling based LAPDm with frame numbers Osmo-bts uses the new polling based LAPDm implementation. The OML message NM_ATT_T200 is ignored, because T200 timeouts are set to the minimal response time. Longer timeouts would cause lower throughput in case of lost frames. Shorter timeouts would cause LAPDm to fail. Related: OS#4074 Depends: libosmocore.git I6ebe83f829d7751ea9de1d90eb478c7a628db64c Change-Id: Ic6d7902b13cf491daaa8752db78f9875387aeffd --- M include/osmo-bts/bts.h M include/osmo-bts/oml.h M src/common/bts.c M src/common/l1sap.c M src/common/lchan.c M src/common/oml.c 6 files changed, 108 insertions(+), 73 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/07/35007/7 -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35007?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Ic6d7902b13cf491daaa8752db78f9875387aeffd Gerrit-Change-Number: 35007 Gerrit-PatchSet: 7 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: jolly <andreas(a)eversberg.eu> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[M] Change in libosmocore[master]: osmo_io: Remove union in struct osmo_io_ops
by pespin 29 Nov '23

29 Nov '23
Attention is currently required from: arehbein, daniel, laforge. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35079?usp=email ) Change subject: osmo_io: Remove union in struct osmo_io_ops ...................................................................... Patch Set 4: (1 comment) Patchset: PS4: I'd actually keep the union, imho there's nothing wrong with it if used, plus: - Doesn't break ABI with previous libosmocore release - It saves some bytes on each osmo_io (there can be a big number of them in an app). I agree though that the comment you mentioned should be fixed by checking the correct io_mode is in used before checking the pointer, since it's shared with other io_modes through the union. TL;DR: Fix the code bugs, leave the union. If still others prefer merging this, I won't oppose, just saying. -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35079?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I138d57843edc29000530bb7896bcb239002ecbec Gerrit-Change-Number: 35079 Gerrit-PatchSet: 4 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: arehbein <arehbein(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: arehbein <arehbein(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: daniel <dwillmann(a)sysmocom.de> Gerrit-Comment-Date: Wed, 29 Nov 2023 18:31:40 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
[M] Change in libosmocore[master]: osmo_io: Factor out and use common send function from backend
by pespin 29 Nov '23

29 Nov '23
Attention is currently required from: daniel, laforge, lynxis lazus. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35078?usp=email ) Change subject: osmo_io: Factor out and use common send function from backend ...................................................................... Patch Set 2: (3 comments) File src/core/osmo_io.c: https://gerrit.osmocom.org/c/libosmocore/+/35078/comment/65b7ef21_6f5bf225 PS1, Line 348: if (rc > 0 && rc < msgb_length(msg)) { > Regarding your comment about rc == 0, maybe one missing failure case is rc == 0 && rc < msgb_length […] That should fall into the more generic "rc < msgb_length(msg)" condition, I don't think the specific case you mention should be handled differently. https://gerrit.osmocom.org/c/libosmocore/+/35078/comment/442aee50_3a53f950 PS1, Line 360: > IMO rc == 0 in send means we have successfully "written" 0 bytes to the socket (which also means the […] ack, makes sense, the special case for rc=0 is in the recv path (socket closed). I doubt we'll ever see rc=0 here, I'd expect it to return -EAGAIN instead. send(len=0) would probably return an error, or maybe it returns 0 instead to mention it is writable. File src/core/osmo_io_uring.c: https://gerrit.osmocom.org/c/libosmocore/+/35078/comment/be9f52f1_8e2dfc28 PS2, Line 196: iofd_handle_send_completion(iofd, rc, msghdr); The goto can easily be dropped: if (IOFD_FLAG_ISSET(iofd, IOFD_FLAG_CLOSED)) { msgb_free(msghdr->msg); iofd_msghdr_free(msghdr); } else { iofd_handle_send_completion(iofd, rc, msghdr); } iofd->u.uring.write_msghdr = NULL; /* submit the next to-be-transmitted message for this file descriptor */ if (iofd->u.uring.write_enabled && !IOFD_FLAG_ISSET(iofd, IOFD_FLAG_CLOSED)) iofd_uring_submit_tx(iofd); You can btw probably ass OSMO_UNLIKELY() to the if condition checking IOFD_FLAG_CLOSED. -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35078?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I6da2653d32aedd0e7872be0cf90a841b56462e59 Gerrit-Change-Number: 35078 Gerrit-PatchSet: 2 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-CC: laforge <laforge(a)osmocom.org> Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: daniel <dwillmann(a)sysmocom.de> Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Comment-Date: Wed, 29 Nov 2023 18:26:15 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: daniel <dwillmann(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-hnbgw[master]: mgw_fsm: Modify RAB on HNB if IuUP local IP addr at MGW changes durin...
by pespin 29 Nov '23

29 Nov '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/35168?usp=email ) Change subject: mgw_fsm: Modify RAB on HNB if IuUP local IP addr at MGW changes during MDCX ...................................................................... mgw_fsm: Modify RAB on HNB if IuUP local IP addr at MGW changes during MDCX Allow IP address renegotation between HNB and MGW: * Upon MGCP MDCX ACK received from the RAN-side conn, if the IP address/port changes, then restart the RAB-Ass-Req+Resp procedure on Iuh. * Upon RAB-Ass-Resp received from the HNB, if the IP address/port changes, then go through another MDCX + MDCX ACK prcoedure on MGCP. An MDCX counter is introduced to avoid infinite loops where the HNB and the MGW keep changing their IP address triggered by the change on the other side, eg. due to incorrect network/routing setup. The counter is also used to track count in order to make sure that always at least 1 MDCX is transmitted, in order to change conn_mode to SEND_RECV. Related: OS#6127 Change-Id: I936a50fed38a201c4a8da99b40f07082049e5157 --- M src/osmo-hnbgw/mgw_fsm.c 1 file changed, 110 insertions(+), 61 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/68/35168/1 diff --git a/src/osmo-hnbgw/mgw_fsm.c b/src/osmo-hnbgw/mgw_fsm.c index e1e53fb..1e04f58 100644 --- a/src/osmo-hnbgw/mgw_fsm.c +++ b/src/osmo-hnbgw/mgw_fsm.c @@ -109,6 +109,11 @@ ranap_message *ranap_rab_ass_req_message; ranap_message *ranap_rab_ass_resp_message; struct msgb *ranap_rab_ass_resp_msgb; + /* IP address contained in ranap_rab_ass_resp_msgb/message: */ + struct osmo_sockaddr hnb_rtp_addr; + /* Number of MDCX transmitted. Used to detect current mgw conn_mode and + * detect modify infinite loops: */ + unsigned int mdcx_tx_cnt; /* MGW context */ struct mgcp_client *mgcpc; @@ -205,8 +210,6 @@ struct mgw_fsm_priv *mgw_fsm_priv = fi->priv; const struct mgcp_conn_peer *mgw_info; struct osmo_sockaddr_str addr_str; - struct osmo_sockaddr *addr = &mgw_fsm_priv->ci_hnb_crcx_ack_addr; - RANAP_RAB_AssignmentRequestIEs_t *ies; int rc; switch (event) { @@ -224,7 +227,7 @@ addr_str.af = AF_INET6; addr_str.port = mgw_info->port; osmo_strlcpy(addr_str.ip, mgw_info->addr, sizeof(addr_str.ip)); - rc = osmo_sockaddr_str_to_sockaddr(&addr_str, &addr->u.sas); + rc = osmo_sockaddr_str_to_sockaddr(&addr_str, &mgw_fsm_priv->ci_hnb_crcx_ack_addr.u.sas); if (rc < 0) { LOGPFSML(fi, LOGL_ERROR, "Failed to convert RTP IP-address (%s) and Port (%u) to its binary representation\n", @@ -233,16 +236,6 @@ return; } - ies = &mgw_fsm_priv->ranap_rab_ass_req_message->msg.raB_AssignmentRequestIEs; - rc = ranap_rab_ass_req_ies_replace_inet_addr(ies, addr, mgw_fsm_priv->rab_id); - if (rc < 0) { - LOGPFSML(fi, LOGL_ERROR, - "Failed to replace RTP IP-address (%s) and Port (%u) in RAB-AssignmentRequest\n", - mgw_info->addr, mgw_info->port); - osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); - return; - } - mgw_fsm_state_chg(fi, MGW_ST_ASSIGN); return; default: @@ -256,8 +249,16 @@ struct hnbgw_context_map *map = mgw_fsm_priv->map; RANAP_RAB_AssignmentRequestIEs_t *ies; struct msgb *msg; + int rc; ies = &mgw_fsm_priv->ranap_rab_ass_req_message->msg.raB_AssignmentRequestIEs; + rc = ranap_rab_ass_req_ies_replace_inet_addr(ies, &mgw_fsm_priv->ci_hnb_crcx_ack_addr, mgw_fsm_priv->rab_id); + if (rc < 0) { + LOGPFSML(fi, LOGL_ERROR, "Failed to replace RTP IP-address and Port in RAB-AssignmentRequest\n"); + osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); + return; + } + msg = ranap_rab_ass_req_encode(ies); if (!msg) { LOGPFSML(fi, LOGL_ERROR, "failed to re-encode RAB-AssignmentRequest message\n"); @@ -273,9 +274,72 @@ static void mgw_fsm_assign(struct osmo_fsm_inst *fi, uint32_t event, void *data) { + struct mgw_fsm_priv *mgw_fsm_priv = fi->priv; + struct hnbgw_context_map *map = mgw_fsm_priv->map; + RANAP_RAB_AssignmentResponseIEs_t *ies; + bool rab_failed_at_hnb; + struct osmo_sockaddr addr; + enum mgw_fsm_state next_st; + int rc; + switch (event) { case MGW_EV_RAB_ASS_RESP: - mgw_fsm_state_chg(fi, MGW_ST_MDCX_HNB); + LOGPFSML(fi, LOGL_DEBUG, "RAB-AssignmentResponse received, completing HNB side call-leg on MGW...\n"); + ies = &mgw_fsm_priv->ranap_rab_ass_resp_message->msg.raB_AssignmentResponseIEs; + rc = ranap_rab_ass_resp_ies_extract_inet_addr(&addr, ies, mgw_fsm_priv->rab_id); + if (rc < 0) { + rab_failed_at_hnb = ranap_rab_ass_resp_ies_check_failure(ies, mgw_fsm_priv->rab_id); + if (rab_failed_at_hnb) { + struct msgb *msg; + + LOGPFSML(fi, LOGL_ERROR, + "The RAB-AssignmentResponse contains a RAB-FailedList, RAB-Assignment (%u) failed.\n", + mgw_fsm_priv->rab_id); + + /* Forward the RAB-AssignmentResponse transparently. This will ensure that the MSC is informed + * about the problem. */ + LOGPFSML(fi, LOGL_DEBUG, "forwarding unmodified RAB-AssignmentResponse to MSC\n"); + + msg = mgw_fsm_priv->ranap_rab_ass_resp_msgb; + mgw_fsm_priv->ranap_rab_ass_resp_msgb = NULL; + talloc_steal(OTC_SELECT, msg); + + rc = map_sccp_dispatch(map, MAP_SCCP_EV_TX_DATA_REQUEST, msg); + if (rc < 0) { + LOGPFSML(fi, LOGL_DEBUG, "failed to forward RAB-AssignmentResponse message\n"); + osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); + } + + /* Even though this is a failure situation, we still release normally as the error is located + * at the HNB. */ + osmo_fsm_inst_state_chg(fi, MGW_ST_RELEASE, 0, 0); + return; + } + + /* The RAB-ID we are dealing with is not on an FailedList and we were unable to parse the response + * normally. This is a situation we cannot recover from. */ + LOGPFSML(fi, LOGL_ERROR, "Failed to extract RTP IP-address and Port from RAB-AssignmentResponse\n"); + osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); + return; + } + + /* Break infinite loops modifications between HNB and our MGW: */ + if (mgw_fsm_priv->mdcx_tx_cnt > 3) { + osmo_fsm_inst_state_chg(fi, MGW_ST_RELEASE, 0, 0); + return; + } + + /* Send at least 1 MDCX in order to change conn_mode to SEND_RECV. + * From there on, MDCX is only needed if HNB IP/Port changed: */ + if (mgw_fsm_priv->mdcx_tx_cnt == 0 || + osmo_sockaddr_cmp(&addr, &mgw_fsm_priv->hnb_rtp_addr) != 0) { + next_st = MGW_ST_MDCX_HNB; + } else { + LOGPFSML(fi, LOGL_DEBUG, "RAB-AssignmentResponse received with unchanged IuUP attributes, skipping MDCX...\n"); + next_st = MGW_ST_CRCX_MSC; + } + mgw_fsm_priv->hnb_rtp_addr = addr; + mgw_fsm_state_chg(fi, next_st); return; default: OSMO_ASSERT(false); @@ -287,13 +351,8 @@ struct mgw_fsm_priv *mgw_fsm_priv = fi->priv; struct hnbgw_context_map *map = mgw_fsm_priv->map; struct mgcp_conn_peer mgw_info; - struct osmo_sockaddr addr; struct osmo_sockaddr_str addr_str; - RANAP_RAB_AssignmentResponseIEs_t *ies; int rc; - bool rab_failed_at_hnb; - - LOGPFSML(fi, LOGL_DEBUG, "RAB-AssignmentResponse received, completing HNB side call-leg on MGW...\n"); mgw_info = (struct mgcp_conn_peer) { .call_id = map->rua_ctx_id, @@ -303,53 +362,17 @@ mgw_info.codecs[0] = CODEC_IUFP; mgw_info.codecs_len = 1; - ies = &mgw_fsm_priv->ranap_rab_ass_resp_message->msg.raB_AssignmentResponseIEs; - rc = ranap_rab_ass_resp_ies_extract_inet_addr(&addr, ies, mgw_fsm_priv->rab_id); - if (rc < 0) { - rab_failed_at_hnb = ranap_rab_ass_resp_ies_check_failure(ies, mgw_fsm_priv->rab_id); - if (rab_failed_at_hnb) { - struct msgb *msg; - - LOGPFSML(fi, LOGL_ERROR, - "The RAB-AssignmentResponse contains a RAB-FailedList, RAB-Assignment (%u) failed.\n", - mgw_fsm_priv->rab_id); - - /* Forward the RAB-AssignmentResponse transparently. This will ensure that the MSC is informed - * about the problem. */ - LOGPFSML(fi, LOGL_DEBUG, "forwarding unmodified RAB-AssignmentResponse to MSC\n"); - - msg = mgw_fsm_priv->ranap_rab_ass_resp_msgb; - mgw_fsm_priv->ranap_rab_ass_resp_msgb = NULL; - talloc_steal(OTC_SELECT, msg); - - rc = map_sccp_dispatch(map, MAP_SCCP_EV_TX_DATA_REQUEST, msg); - if (rc < 0) { - LOGPFSML(fi, LOGL_DEBUG, "failed to forward RAB-AssignmentResponse message\n"); - osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); - } - - /* Even though this is a failure situation, we still release normally as the error is located - * at the HNB. */ - osmo_fsm_inst_state_chg(fi, MGW_ST_RELEASE, 0, 0); - return; - } - - /* The RAB-ID we are dealing with is not on an FailedList and we were unable to parse the response - * normally. This is a situation we cannot recover from. */ - LOGPFSML(fi, LOGL_ERROR, "Failed to extract RTP IP-address and Port from RAB-AssignmentResponse\n"); - osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); - return; - } - - rc = osmo_sockaddr_str_from_sockaddr(&addr_str, &addr.u.sas); + rc = osmo_sockaddr_str_from_sockaddr(&addr_str, &mgw_fsm_priv->hnb_rtp_addr.u.sas); if (rc < 0) { LOGPFSML(fi, LOGL_ERROR, "Invalid RTP IP-address or Port in RAB-AssignmentResponse\n"); osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); return; } + osmo_strlcpy(mgw_info.addr, addr_str.ip, sizeof(mgw_info.addr)); mgw_info.port = addr_str.port; + mgw_fsm_priv->mdcx_tx_cnt++; osmo_mgcpc_ep_ci_request(mgw_fsm_priv->mgcpc_ep_ci_hnb, MGCP_VERB_MDCX, &mgw_info, fi, MGW_EV_MGCP_OK, MGW_EV_MGCP_FAIL, NULL); } @@ -387,13 +410,14 @@ } if (osmo_sockaddr_cmp(&mgw_fsm_priv->ci_hnb_crcx_ack_addr, &addr) != 0) { - /* FIXME: Send RAB Modify Req to HNB. See OS#6127 */ char addr_buf[INET6_ADDRSTRLEN + 8]; LOGPFSML(fi, LOGL_ERROR, "Local MGW IuUP IP address %s changed to %s during MDCX." - " This is so far unsupported, adapt your osmo-mgw config!\n", + " Modifying RAB on HNB.\n", osmo_sockaddr_to_str(&mgw_fsm_priv->ci_hnb_crcx_ack_addr), osmo_sockaddr_to_str_buf(addr_buf, sizeof(addr_buf), &addr)); - osmo_fsm_inst_state_chg(fi, MGW_ST_FAILURE, 0, 0); + /* Modify RAB on the HNB with the new local IuUP address (OS#6127): */ + mgw_fsm_priv->ci_hnb_crcx_ack_addr = addr; + mgw_fsm_state_chg(fi, MGW_ST_ASSIGN); return; } @@ -619,6 +643,7 @@ .in_event_mask = S(MGW_EV_RAB_ASS_RESP), .out_state_mask = S(MGW_ST_MDCX_HNB) | + S(MGW_ST_CRCX_MSC) | S(MGW_ST_FAILURE) | S(MGW_ST_RELEASE), }, @@ -629,6 +654,7 @@ .in_event_mask = S(MGW_EV_MGCP_OK), .out_state_mask = + S(MGW_ST_ASSIGN) | S(MGW_ST_CRCX_MSC) | S(MGW_ST_FAILURE) | S(MGW_ST_RELEASE), -- To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/35168?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-hnbgw Gerrit-Branch: master Gerrit-Change-Id: I936a50fed38a201c4a8da99b40f07082049e5157 Gerrit-Change-Number: 35168 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: hnbgw: Rename record CrcxResponse->MgwResponse
by pespin 29 Nov '23

29 Nov '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35165?usp=email ) Change subject: hnbgw: Rename record CrcxResponse->MgwResponse ...................................................................... hnbgw: Rename record CrcxResponse->MgwResponse The previous name is misleading, since they are also used during MDCX. Change-Id: I1ffcb1100b0f92f7175ff08f9d4df49c0cf596b5 --- M hnbgw/HNBGW_Tests.ttcn 1 file changed, 15 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/65/35165/1 diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 67411ff..7f2d6c0 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -219,7 +219,7 @@ sccp_addr_peer := omit } -type record CrcxResponse { +type record MgwResponse { integer resp, HostName mgw_rtp_ip, PortNumber mgw_rtp_port, @@ -230,8 +230,8 @@ integer got_dlcx_count, MgcpCallId mgcp_call_id optional, MgcpEndpoint mgcp_ep, - CrcxResponse mgw_conn_ran, - CrcxResponse mgw_conn_cn, + MgwResponse mgw_conn_ran, + MgwResponse mgw_conn_cn, uint7_t rtp_payload_type, charstring rtp_sdp_format, HostName hnb_rtp_ip, @@ -1131,7 +1131,7 @@ * Return true when an OK reply was sent, false otherwise. * Count occurrence of Osmux, include Osmux parameters in the reply if necessary. */ function f_handle_crcx(inout MgcpParameters pars, MgcpCommand mgcp_cmd) return template MgcpResponse { - var CrcxResponse conn := pars.mgw_conn_ran; + var MgwResponse conn := pars.mgw_conn_ran; if (pars.got_crcx_count > 0) { conn := pars.mgw_conn_cn; } -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35165?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I1ffcb1100b0f92f7175ff08f9d4df49c0cf596b5 Gerrit-Change-Number: 35165 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: hnbgw: Rename mgcp conns to reflect each side peer
by pespin 29 Nov '23

29 Nov '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35164?usp=email ) Change subject: hnbgw: Rename mgcp conns to reflect each side peer ...................................................................... hnbgw: Rename mgcp conns to reflect each side peer Change-Id: Ie68d0397a56d48223fb4b1ffe1710f988518257f --- M hnbgw/HNBGW_Tests.ttcn 1 file changed, 19 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/64/35164/1 diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 5bcd40c..67411ff 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -230,8 +230,8 @@ integer got_dlcx_count, MgcpCallId mgcp_call_id optional, MgcpEndpoint mgcp_ep, - CrcxResponse mgw_conn_1, - CrcxResponse mgw_conn_2, + CrcxResponse mgw_conn_ran, + CrcxResponse mgw_conn_cn, uint7_t rtp_payload_type, charstring rtp_sdp_format, HostName hnb_rtp_ip, @@ -247,13 +247,13 @@ got_dlcx_count := 0, mgcp_call_id := omit, mgcp_ep := "rtpbridge/1@mgw", - mgw_conn_1 := { + mgw_conn_ran := { resp := 1, mgw_rtp_ip := "127.1.2.1", mgw_rtp_port := 10000, mgcp_connection_id := '11111'H }, - mgw_conn_2 := { + mgw_conn_cn := { resp := 1, mgw_rtp_ip := "127.1.2.2", mgw_rtp_port := 20000, @@ -1131,9 +1131,9 @@ * Return true when an OK reply was sent, false otherwise. * Count occurrence of Osmux, include Osmux parameters in the reply if necessary. */ function f_handle_crcx(inout MgcpParameters pars, MgcpCommand mgcp_cmd) return template MgcpResponse { - var CrcxResponse conn := pars.mgw_conn_1; + var CrcxResponse conn := pars.mgw_conn_ran; if (pars.got_crcx_count > 0) { - conn := pars.mgw_conn_2; + conn := pars.mgw_conn_cn; } pars.got_crcx_count := pars.got_crcx_count + 1; @@ -1252,7 +1252,7 @@ T.stop; /* Expect RAB Assignment Request with IP/port from CRCX ACK via Iuh */ - rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_1.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_1.mgw_rtp_port)); + rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_ran.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_ran.mgw_rtp_port)); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); f_rua_expect(tx); @@ -1273,9 +1273,9 @@ [] MGCP.receive(tr_MDCX(tr_SDP(pars.hnb_rtp_ip, pars.hnb_rtp_port))) -> value mgcp_cmd { log("MDCX1", mgcp_cmd); /* Verify SDP of MDCX */ - var SDP_Message sdp := valueof(ts_SDP(pars.mgw_conn_1.mgw_rtp_ip, pars.mgw_conn_1.mgw_rtp_ip, hex2str(pars.mgcp_call_id), "42", pars.mgw_conn_1.mgw_rtp_port, + var SDP_Message sdp := valueof(ts_SDP(pars.mgw_conn_ran.mgw_rtp_ip, pars.mgw_conn_ran.mgw_rtp_ip, hex2str(pars.mgcp_call_id), "42", pars.mgw_conn_ran.mgw_rtp_port, { int2str(pars.rtp_payload_type) }, { valueof(ts_SDP_rtpmap(pars.rtp_payload_type, pars.rtp_sdp_format)), valueof(ts_SDP_ptime(20)) } )); - var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgw_conn_1.mgcp_connection_id, sdp); + var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgw_conn_ran.mgcp_connection_id, sdp); MGCP.send(valueof(mgcp_rsp)); } /* Handle CRCX for second leg of endpoint, answer with IP/port */ @@ -1288,7 +1288,7 @@ } /* Expect RAB Assignment Response with IP/port from second CRCX ACK */ - rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_2.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_2.mgw_rtp_port)); + rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_cn.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_cn.mgw_rtp_port)); tx := valueof(ts_RANAP_RabAssResp(rab_smdl)); f_bssap_expect(tx); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35164?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ie68d0397a56d48223fb4b1ffe1710f988518257f Gerrit-Change-Number: 35164 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: hnbgw: Allow announcing a different mgw-local IuUP address after MDCX
by pespin 29 Nov '23

29 Nov '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35166?usp=email ) Change subject: hnbgw: Allow announcing a different mgw-local IuUP address after MDCX ...................................................................... hnbgw: Allow announcing a different mgw-local IuUP address after MDCX This will allow emulating an MGW deciding to change its local IuUP IP address due to received remote address in MGCP MDCX, and announce the changed address back in MGCP MDCX. A test validating this scenario against osmo-hnbgw will be added in a follow-up patch. Related: SYS#6657 Change-Id: Ia724e0363a8bab56f5d31e7f7f7a127af584f935 --- M hnbgw/HNBGW_Tests.ttcn 1 file changed, 27 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/66/35166/1 diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 7f2d6c0..d4073d1 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -222,6 +222,8 @@ type record MgwResponse { integer resp, HostName mgw_rtp_ip, + /* if set, used after first received MDCX: */ + HostName mgw_rtp_ip_mdcx optional, PortNumber mgw_rtp_port, MgcpConnectionId mgcp_connection_id } @@ -250,12 +252,14 @@ mgw_conn_ran := { resp := 1, mgw_rtp_ip := "127.1.2.1", + mgw_rtp_ip_mdcx := omit, mgw_rtp_port := 10000, mgcp_connection_id := '11111'H }, mgw_conn_cn := { resp := 1, mgw_rtp_ip := "127.1.2.2", + mgw_rtp_ip_mdcx := omit, mgw_rtp_port := 20000, mgcp_connection_id := '22222'H }, @@ -1271,9 +1275,16 @@ interleave { /* Expect MDCX with IP/port from RAB Assignment Response */ [] MGCP.receive(tr_MDCX(tr_SDP(pars.hnb_rtp_ip, pars.hnb_rtp_port))) -> value mgcp_cmd { + var HostName mgw_rtp_ip; log("MDCX1", mgcp_cmd); + if (ispresent(pars.mgw_conn_ran.mgw_rtp_ip_mdcx)) { + mgw_rtp_ip := pars.mgw_conn_ran.mgw_rtp_ip_mdcx; + } else { + mgw_rtp_ip := pars.mgw_conn_ran.mgw_rtp_ip; + } + /* Verify SDP of MDCX */ - var SDP_Message sdp := valueof(ts_SDP(pars.mgw_conn_ran.mgw_rtp_ip, pars.mgw_conn_ran.mgw_rtp_ip, hex2str(pars.mgcp_call_id), "42", pars.mgw_conn_ran.mgw_rtp_port, + var SDP_Message sdp := valueof(ts_SDP(mgw_rtp_ip, mgw_rtp_ip, hex2str(pars.mgcp_call_id), "42", pars.mgw_conn_ran.mgw_rtp_port, { int2str(pars.rtp_payload_type) }, { valueof(ts_SDP_rtpmap(pars.rtp_payload_type, pars.rtp_sdp_format)), valueof(ts_SDP_ptime(20)) } )); var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgw_conn_ran.mgcp_connection_id, sdp); MGCP.send(valueof(mgcp_rsp)); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35166?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ia724e0363a8bab56f5d31e7f7f7a127af584f935 Gerrit-Change-Number: 35166 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: hnbgw: Introduce test TC_rab_assign_mgw_iuup_addr_chg
by pespin 29 Nov '23

29 Nov '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35167?usp=email ) Change subject: hnbgw: Introduce test TC_rab_assign_mgw_iuup_addr_chg ...................................................................... hnbgw: Introduce test TC_rab_assign_mgw_iuup_addr_chg Change-Id: Ibfc37118ed3a67e4ca3f417273bedba127be7639 Related: SYS#6657 Related: OS#6127 --- M hnbgw/HNBGW_Tests.ttcn M hnbgw/expected-results.xml 2 files changed, 50 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/67/35167/1 diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index d4073d1..15fc85f 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -606,7 +606,6 @@ /* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have * a stand-alone 'derefers()' call, see https://www.eclipse.org/forums/index.php/t/1091364/ */ pars.hnb := g_hnb_cfg[pars.hnb_idx]; - pars.mgcp_pars := valueof(t_MgcpParams); vc_conn.start(derefers(fn)(id, pars)); } @@ -993,6 +992,7 @@ cn_idx := f_cn_idx(ps_domain, cn_nr), imsi := f_gen_imsi(imsi_suffix), ps_domain := ps_domain, + mgcp_pars := t_MgcpParams, hnb := omit, /* filled in later */ expect_separate_sccp_cr := expect_separate_sccp_cr, tx_sccp_cr_data_len := tx_sccp_cr_data_len, @@ -1276,9 +1276,13 @@ /* Expect MDCX with IP/port from RAB Assignment Response */ [] MGCP.receive(tr_MDCX(tr_SDP(pars.hnb_rtp_ip, pars.hnb_rtp_port))) -> value mgcp_cmd { var HostName mgw_rtp_ip; + var boolean exp_rua_rab_reass := false; log("MDCX1", mgcp_cmd); if (ispresent(pars.mgw_conn_ran.mgw_rtp_ip_mdcx)) { mgw_rtp_ip := pars.mgw_conn_ran.mgw_rtp_ip_mdcx; + if (pars.mgw_conn_ran.mgw_rtp_ip != pars.mgw_conn_ran.mgw_rtp_ip_mdcx) { + exp_rua_rab_reass := true; + } } else { mgw_rtp_ip := pars.mgw_conn_ran.mgw_rtp_ip; } @@ -1288,6 +1292,21 @@ { int2str(pars.rtp_payload_type) }, { valueof(ts_SDP_rtpmap(pars.rtp_payload_type, pars.rtp_sdp_format)), valueof(ts_SDP_ptime(20)) } )); var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgw_conn_ran.mgcp_connection_id, sdp); MGCP.send(valueof(mgcp_rsp)); + + /* If IP address changed, we expect HNBGW to Modify the RAB through RAB-Ass-Req: */ + if (exp_rua_rab_reass) { + var template RAB_SetupOrModifyList rab_sml; + /* Expect RAB Assignment Request with IP/port from MDCX ACK via Iuh */ + rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_ran.mgw_rtp_ip_mdcx), t_RAB_binding_port(pars.mgw_conn_ran.mgw_rtp_port)); + tx := valueof(ts_RANAP_RabAssReq(rab_sml)); + + f_rua_expect(tx); + /* Send back RAB Assignment Response via Iuh */ + rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.hnb_rtp_ip), t_RAB_binding_port(pars.hnb_rtp_port)); + tx := valueof(ts_RANAP_RabAssResp(rab_smdl)); + RUA.send(tx); + /* This shouldn't trigger any MGCP, since nothing changed on the HNB IP side. Continue below. */ + } } /* Handle CRCX for second leg of endpoint, answer with IP/port */ [] MGCP.receive(tr_CRCX(pars.mgcp_ep, tr_SDP(pars.cn_rtp_ip, pars.cn_rtp_port))) -> value mgcp_cmd { @@ -1487,6 +1506,23 @@ f_shutdown_helper(); } +/* Test case where IuUP IP address announced by HNB and updated through MDCX + * makes MGW select a new local IuUP address. HNBGW is expected to update the HNB + * through RAB-Modify-Req. */ +testcase TC_rab_assign_mgw_iuup_addr_chg() runs on test_CT { + var ConnHdlr vc_conn; + g_num_hnbs := 1; + f_init(); + var template (value) TestHdlrParams pars := t_pars(3); + /* Emulate change of local IuUP IP address after rx MDCX: */ + pars.mgcp_pars.mgw_conn_ran.mgw_rtp_ip_mdcx := "127.3.2.1"; + + vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assignment), pars); + vc_conn.done; + + f_shutdown_helper(); +} + /* Create an Iuh connection; send InitialUE; transceive data both directions */ friend function f_tc_ranap_bidir(charstring id, TestHdlrParams pars) runs on ConnHdlr { f_init_handler(pars); @@ -2688,6 +2724,7 @@ execute(TC_rab_release()); execute(TC_rab_assign_fail()); execute(TC_rab_assign_mgcp_to()); + execute(TC_rab_assign_mgw_iuup_addr_chg()); execute(TC_ranap_cs_mo_disconnect()); execute(TC_ranap_ps_mo_disconnect()); diff --git a/hnbgw/expected-results.xml b/hnbgw/expected-results.xml index 3b338bf..fb86108 100644 --- a/hnbgw/expected-results.xml +++ b/hnbgw/expected-results.xml @@ -13,6 +13,7 @@ <testcase classname='HNBGW_Tests' name='TC_rab_release' time='MASKED'/> <testcase classname='HNBGW_Tests' name='TC_rab_assign_fail' time='MASKED'/> <testcase classname='HNBGW_Tests' name='TC_rab_assign_mgcp_to' time='MASKED'/> + <testcase classname='HNBGW_Tests' name='TC_rab_assign_mgw_iuup_addr_chg' time='MASKED'/> <testcase classname='HNBGW_Tests' name='TC_ranap_cs_mo_disconnect' time='MASKED'/> <testcase classname='HNBGW_Tests' name='TC_ranap_ps_mo_disconnect' time='MASKED'/> <testcase classname='HNBGW_Tests' name='TC_ps_rab_assignment_without_pfcp' time='MASKED'/> -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35167?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ibfc37118ed3a67e4ca3f417273bedba127be7639 Gerrit-Change-Number: 35167 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in libosmocore[master]: osmo_io: Remove union in struct osmo_io_ops
by daniel 29 Nov '23

29 Nov '23
Attention is currently required from: arehbein. Hello Jenkins Builder, arehbein, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/libosmocore/+/35079?usp=email to look at the new patch set (#4). Change subject: osmo_io: Remove union in struct osmo_io_ops ...................................................................... osmo_io: Remove union in struct osmo_io_ops This allows us to check that the correct callbacks are set. The checks are already in e.g. osmo_iofd_write_msgb(), but the union prevented us from distinguishing between write_cb() and sendto_cb() etc. Change-Id: I138d57843edc29000530bb7896bcb239002ecbec Related: #OS6263 --- M TODO-RELEASE M include/osmocom/core/osmo_io.h M src/core/osmo_io.c 3 files changed, 49 insertions(+), 32 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/79/35079/4 -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35079?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I138d57843edc29000530bb7896bcb239002ecbec Gerrit-Change-Number: 35079 Gerrit-PatchSet: 4 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: arehbein <arehbein(a)sysmocom.de> Gerrit-Attention: arehbein <arehbein(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[M] Change in libosmocore[master]: osmo_io: Remove union in struct osmo_io_ops
by daniel 29 Nov '23

29 Nov '23
Attention is currently required from: arehbein. daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35079?usp=email ) Change subject: osmo_io: Remove union in struct osmo_io_ops ...................................................................... Patch Set 3: (1 comment) File src/core/osmo_io.c: https://gerrit.osmocom.org/c/libosmocore/+/35079/comment/b7664ff5_c2daa8a4 PS3, Line 546: if (iofd->io_ops.read_cb) The fact that this happened to work is even more reason to remove the union. -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35079?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I138d57843edc29000530bb7896bcb239002ecbec Gerrit-Change-Number: 35079 Gerrit-PatchSet: 3 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: arehbein <arehbein(a)sysmocom.de> Gerrit-Attention: arehbein <arehbein(a)sysmocom.de> Gerrit-Comment-Date: Wed, 29 Nov 2023 17:59:49 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • ...
  • 151
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.