<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>124257</buildingDurationMillis><executingTimeMillis>124257</executingTimeMillis><executorUtilization>1.0</executorUtilization><queuingDurationMillis>7552</queuingDurationMillis><queuingTimeMillis>7552</queuingTimeMillis><subTaskCount>0</subTaskCount><totalDurationMillis>131809</totalDurationMillis><waitingDurationMillis>7550</waitingDurationMillis><waitingTimeMillis>7550</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>757</buildNumber><marked><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></marked><revision><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>756</buildNumber><marked><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><branch><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><branch><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip></buildsByBranchName><lastBuiltRevision><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/erlang/osmo-s1gw</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/757/artifact</artifactsUrl><changesUrl>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/changes</changesUrl><displayUrl>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/757/</displayUrl><testsUrl>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/757/testReport</testsUrl></action><building>false</building><displayName>#757</displayName><duration>124257</duration><estimatedDuration>73293</estimatedDuration><fullDisplayName>master-osmo-s1gw #757</fullDisplayName><id>757</id><inProgress>false</inProgress><keepLog>false</keepLog><number>757</number><queueId>66515</queueId><result>SUCCESS</result><timestamp>1774042268293</timestamp><url>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/757/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>contrib/jenkins_manuals.sh</affectedPath><commitId>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</commitId><timestamp>1774006592000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/osmith</absoluteUrl><fullName>Oliver Smith</fullName></author><authorEmail>osmith@sysmocom.de</authorEmail><comment>contrib/jenkins_manuals: fix doc/manuals paths

Change-Id: Ibfccefec7e44a4803d4ff8ad061db395fc498b89
</comment><date>2026-03-20 12:36:32 +0100</date><id>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</id><msg>contrib/jenkins_manuals: fix doc/manuals paths</msg><path><editType>edit</editType><file>contrib/jenkins_manuals.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>priv/openapi.json</affectedPath><affectedPath>doc/manuals/chapters/rest.adoc</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><affectedPath>doc/manuals/chapters/cli.adoc</affectedPath><affectedPath>contrib/osmo-s1gw-cli.py</affectedPath><affectedPath>contrib/openapi.yaml</affectedPath><commitId>38cb7b1b5b66cffdf035f36bfe07efcb52a52849</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>[REST] Add MME source address/port to EnbItem

The enb_proxy now captures the local address and port of the S1GW-MME
SCTP connection (mme_saddr/mme_sport) at comm_up and includes them in
conn_info().  Expose this info through the REST API (EnbItem schema),
show it as a new column/row in the CLI (enb_list/enb_info).

Change-Id: I15bbddf96ac7d5b6f9962a8d745db58fdec334e7
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>38cb7b1b5b66cffdf035f36bfe07efcb52a52849</id><msg>[REST] Add MME source address/port to EnbItem</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>contrib/osmo-s1gw-cli.py</file></path><path><editType>edit</editType><file>priv/openapi.json</file></path><path><editType>edit</editType><file>doc/manuals/chapters/rest.adoc</file></path><path><editType>edit</editType><file>doc/manuals/chapters/cli.adoc</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>contrib/openapi.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>priv/openapi.json</affectedPath><affectedPath>doc/manuals/chapters/rest.adoc</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>contrib/openapi.yaml</affectedPath><commitId>f9e4cdeeba529dc83f9460a6373771958b756a6d</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>[REST] Add PLMN/eNB IDs to EnbItem

Change-Id: I79690223a34afea5e6661125ac04f98462dadb03
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>f9e4cdeeba529dc83f9460a6373771958b756a6d</id><msg>[REST] Add PLMN/eNB IDs to EnbItem</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>contrib/openapi.yaml</file></path><path><editType>edit</editType><file>doc/manuals/chapters/rest.adoc</file></path><path><editType>edit</editType><file>priv/openapi.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>doc/manuals/chapters/cli.adoc</affectedPath><commitId>0e6f653a7718d3e7accced5ad67a5a34e3ccae39</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>doc/manuals: cli: shorten enb_list example table

The full enb_list table with all address columns is too wide to fit
on a page and does not render well in PDF.  Collapse the address
columns with '...'; add a note that they are omitted for readability.

Change-Id: I4e25233a3e77358060f1098e97907c93deab334b
Related: OS#6671
</comment><date>2026-03-20 21:27:59 +0000</date><id>0e6f653a7718d3e7accced5ad67a5a34e3ccae39</id><msg>doc/manuals: cli: shorten enb_list example table</msg><path><editType>edit</editType><file>doc/manuals/chapters/cli.adoc</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_registry.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>6a2008296e6f0d7558b046d46f4e25556bddf7c6</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_{proxy,registry}: signal MME conn info on SCTP comm_up

Previously, mme_aid/mme_saddr/mme_sport were only signalled to the
enb_registry once the S1 Setup procedure completed.  This meant the
REST API could not show MME connection details for eNBs stuck in
wait_s1setup_rsp state (e.g. due to a slow or retrying MME).

Add notify_mme_comm_up/2, called at SCTP comm_up, which stores the full
conn_info (including mme_aid, mme_saddr, mme_sport) in the registry as
soon as the SCTP connection is established.

notify_mme_connected/2 is simplified to notify_mme_connected/1: it now
only flips the state to 'connected', since conn_info is already stored.

Change-Id: Iea9ba4fdf961e6cd262edc154884a2eee3d95355
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>6a2008296e6f0d7558b046d46f4e25556bddf7c6</id><msg>enb_{proxy,registry}: signal MME conn info on SCTP comm_up</msg><path><editType>edit</editType><file>src/enb_registry.erl</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_registry.erl</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>c147dee4a6ad62bbfd737063851c1d3bf0fa4fb1</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: split conn_info() into mme_conn_info() and proxy_info()

The old conn_info() conflated two distinct concerns: the MME SCTP
connection info stored in enb_registry (aid, saddr, sport) and the
broader operational state used for introspection (handler pid, enb
connection info, etc.).  Mixing them forced enb_registry to hold a
handler pid it has no business knowing about, and required rest_server
to extract that pid just to reach s1ap_proxy for E-RAB listing.

Split into two distinct types:

* mme_conn_info() - pure MME SCTP connection info (aid, saddr, sport),
  stored in the enb_registry and signalled via notify_mme_comm_up/2.
  The `mme_` prefix is dropped from field names as the type name
  provides the context.

* proxy_info() - richer operational snapshot (handler, enb_handle,
  enb_conn_info, mme_conn_info, genb_id_str, mme_info), returned by
  fetch_info/1 for introspection/debugging purposes.

Additionally:

* Add fetch_erab_list/1 to enb_proxy, delegating internally to
  s1ap_proxy:fetch_erab_list/1 via the cached handler pid.  This
  allows the rest_server to obtain a list of E-RAB without having
  to obtain pid of the s1ap_proxy and interact with it.

* Remove separate enb_aid/mme_aid/mme_saddr/mme_sport state fields;
  enb_aid is now read directly from enb_conn_info, and the MME fields
  are grouped in mme_conn_info.

Change-Id: Ia428ceb4762f972211e9b790688dc89fb5b8a274
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>c147dee4a6ad62bbfd737063851c1d3bf0fa4fb1</id><msg>enb_proxy: split conn_info() into mme_conn_info() and proxy_info()</msg><path><editType>edit</editType><file>src/enb_registry.erl</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_proxy.erl</affectedPath><commitId>8b29eaa6eadde6563a9dd3a4ce84c902bd069e26</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: add missing mme_info() to proxy_info()

As a bonus, `tried_mmes` now only serves its actual purpose - tracking
which MMEs have already been tried for selection filtering - rather
than being abused as a way to retrieve the current MME name.

Change-Id: Ibbb293d9e68b7c3a8c3ca7ee73132dbda3f2bf97
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>8b29eaa6eadde6563a9dd3a4ce84c902bd069e26</id><msg>enb_proxy: add missing mme_info() to proxy_info()</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/s1ap_proxy.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>941b61bf2f5691d3ede8dcef11472bb3adbc97d2</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>s1ap_proxy: add public erab_list() type

Change-Id: I21a674537d1d9f16fdb319aaf2d758ba0906b407
</comment><date>2026-03-20 21:27:59 +0000</date><id>941b61bf2f5691d3ede8dcef11472bb3adbc97d2</id><msg>s1ap_proxy: add public erab_list() type</msg><path><editType>edit</editType><file>src/s1ap_proxy.erl</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/rest_server.erl</affectedPath><commitId>809a5a29a1b696f5cb767037e48fd2c5c60d002c</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>rest_server: fix TOC/TOU race when listing/fetching E-RABs

The list of E-RAB FSM pids is a snapshot taken at one point in time.
By the time we interrogate each erab_fsm process individually, any of
them may have already terminated (e.g. bearer released mid-request).
The current code fails to generate a response if this happens.

* fetch_erab_info/1: add a pid() clause that wraps erab_list_item/1
  in a try/catch, returning 'error' if the process is gone.

* fetch_erab_info/1: catch both exit forms
** `{noproc, _}` raised by gen_statem:call/2 on a monitored pid, and
** the bare noproc atom for other code paths.

* fetch_erab_list/1: switch from lists:map to lists:filtermap and
  call fetch_erab_info/1 per E-RAB, silently dropping any that died
  between the snapshot and the per-process interrogation.

Change-Id: I160b413aa535f2379ad4e40a3ae8f37c5bce2067
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>809a5a29a1b696f5cb767037e48fd2c5c60d002c</id><msg>rest_server: fix TOC/TOU race when listing/fetching E-RABs</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/osmo_s1gw_sup.erl</affectedPath><commitId>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>rest_server: log received requests (as debug)

Change-Id: I25da9662fb98a0eafcedfde21b12a937225f5fb9
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</id><msg>rest_server: log received requests (as debug)</msg><path><editType>edit</editType><file>src/osmo_s1gw_sup.erl</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><description></description><fullName>Vadim Yanitskiy</fullName><id>fixeria</id></culprit><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/osmith</absoluteUrl><description></description><fullName>Oliver Smith</fullName><id>osmith</id></culprit><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-s1gw" build number 757</shortDescription><upstreamBuild>757</upstreamBuild><upstreamProject>master-osmo-s1gw</upstreamProject><upstreamUrl>job/master-osmo-s1gw/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>4</buildableDurationMillis><buildableTimeMillis>4</buildableTimeMillis><buildingDurationMillis>121997</buildingDurationMillis><executingTimeMillis>121997</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>757</buildNumber><marked><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></marked><revision><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>756</buildNumber><marked><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><branch><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><branch><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip></buildsByBranchName><lastBuiltRevision><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/erlang/osmo-s1gw</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#757</displayName><duration>121997</duration><estimatedDuration>71393</estimatedDuration><fullDisplayName>master-osmo-s1gw » build,a1=default,a3=default,a4=default,osmocom-master #757</fullDisplayName><id>757</id><inProgress>false</inProgress><keepLog>false</keepLog><number>757</number><queueId>66516</queueId><result>SUCCESS</result><timestamp>1774042268293</timestamp><url>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/JOB_TYPE=build,a1=default,a3=default,a4=default,label=osmocom-master/757/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>contrib/jenkins_manuals.sh</affectedPath><commitId>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</commitId><timestamp>1774006592000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/osmith</absoluteUrl><fullName>Oliver Smith</fullName></author><authorEmail>osmith@sysmocom.de</authorEmail><comment>contrib/jenkins_manuals: fix doc/manuals paths

Change-Id: Ibfccefec7e44a4803d4ff8ad061db395fc498b89
</comment><date>2026-03-20 12:36:32 +0100</date><id>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</id><msg>contrib/jenkins_manuals: fix doc/manuals paths</msg><path><editType>edit</editType><file>contrib/jenkins_manuals.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>priv/openapi.json</affectedPath><affectedPath>doc/manuals/chapters/rest.adoc</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><affectedPath>doc/manuals/chapters/cli.adoc</affectedPath><affectedPath>contrib/osmo-s1gw-cli.py</affectedPath><affectedPath>contrib/openapi.yaml</affectedPath><commitId>38cb7b1b5b66cffdf035f36bfe07efcb52a52849</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>[REST] Add MME source address/port to EnbItem

The enb_proxy now captures the local address and port of the S1GW-MME
SCTP connection (mme_saddr/mme_sport) at comm_up and includes them in
conn_info().  Expose this info through the REST API (EnbItem schema),
show it as a new column/row in the CLI (enb_list/enb_info).

Change-Id: I15bbddf96ac7d5b6f9962a8d745db58fdec334e7
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>38cb7b1b5b66cffdf035f36bfe07efcb52a52849</id><msg>[REST] Add MME source address/port to EnbItem</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>doc/manuals/chapters/rest.adoc</file></path><path><editType>edit</editType><file>priv/openapi.json</file></path><path><editType>edit</editType><file>contrib/openapi.yaml</file></path><path><editType>edit</editType><file>contrib/osmo-s1gw-cli.py</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>doc/manuals/chapters/cli.adoc</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>priv/openapi.json</affectedPath><affectedPath>doc/manuals/chapters/rest.adoc</affectedPath><affectedPath>contrib/openapi.yaml</affectedPath><affectedPath>src/rest_server.erl</affectedPath><commitId>f9e4cdeeba529dc83f9460a6373771958b756a6d</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>[REST] Add PLMN/eNB IDs to EnbItem

Change-Id: I79690223a34afea5e6661125ac04f98462dadb03
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>f9e4cdeeba529dc83f9460a6373771958b756a6d</id><msg>[REST] Add PLMN/eNB IDs to EnbItem</msg><path><editType>edit</editType><file>contrib/openapi.yaml</file></path><path><editType>edit</editType><file>priv/openapi.json</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>doc/manuals/chapters/rest.adoc</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>doc/manuals/chapters/cli.adoc</affectedPath><commitId>0e6f653a7718d3e7accced5ad67a5a34e3ccae39</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>doc/manuals: cli: shorten enb_list example table

The full enb_list table with all address columns is too wide to fit
on a page and does not render well in PDF.  Collapse the address
columns with '...'; add a note that they are omitted for readability.

Change-Id: I4e25233a3e77358060f1098e97907c93deab334b
Related: OS#6671
</comment><date>2026-03-20 21:27:59 +0000</date><id>0e6f653a7718d3e7accced5ad67a5a34e3ccae39</id><msg>doc/manuals: cli: shorten enb_list example table</msg><path><editType>edit</editType><file>doc/manuals/chapters/cli.adoc</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_registry.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>6a2008296e6f0d7558b046d46f4e25556bddf7c6</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_{proxy,registry}: signal MME conn info on SCTP comm_up

Previously, mme_aid/mme_saddr/mme_sport were only signalled to the
enb_registry once the S1 Setup procedure completed.  This meant the
REST API could not show MME connection details for eNBs stuck in
wait_s1setup_rsp state (e.g. due to a slow or retrying MME).

Add notify_mme_comm_up/2, called at SCTP comm_up, which stores the full
conn_info (including mme_aid, mme_saddr, mme_sport) in the registry as
soon as the SCTP connection is established.

notify_mme_connected/2 is simplified to notify_mme_connected/1: it now
only flips the state to 'connected', since conn_info is already stored.

Change-Id: Iea9ba4fdf961e6cd262edc154884a2eee3d95355
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>6a2008296e6f0d7558b046d46f4e25556bddf7c6</id><msg>enb_{proxy,registry}: signal MME conn info on SCTP comm_up</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/enb_registry.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_registry.erl</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>c147dee4a6ad62bbfd737063851c1d3bf0fa4fb1</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: split conn_info() into mme_conn_info() and proxy_info()

The old conn_info() conflated two distinct concerns: the MME SCTP
connection info stored in enb_registry (aid, saddr, sport) and the
broader operational state used for introspection (handler pid, enb
connection info, etc.).  Mixing them forced enb_registry to hold a
handler pid it has no business knowing about, and required rest_server
to extract that pid just to reach s1ap_proxy for E-RAB listing.

Split into two distinct types:

* mme_conn_info() - pure MME SCTP connection info (aid, saddr, sport),
  stored in the enb_registry and signalled via notify_mme_comm_up/2.
  The `mme_` prefix is dropped from field names as the type name
  provides the context.

* proxy_info() - richer operational snapshot (handler, enb_handle,
  enb_conn_info, mme_conn_info, genb_id_str, mme_info), returned by
  fetch_info/1 for introspection/debugging purposes.

Additionally:

* Add fetch_erab_list/1 to enb_proxy, delegating internally to
  s1ap_proxy:fetch_erab_list/1 via the cached handler pid.  This
  allows the rest_server to obtain a list of E-RAB without having
  to obtain pid of the s1ap_proxy and interact with it.

* Remove separate enb_aid/mme_aid/mme_saddr/mme_sport state fields;
  enb_aid is now read directly from enb_conn_info, and the MME fields
  are grouped in mme_conn_info.

Change-Id: Ia428ceb4762f972211e9b790688dc89fb5b8a274
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>c147dee4a6ad62bbfd737063851c1d3bf0fa4fb1</id><msg>enb_proxy: split conn_info() into mme_conn_info() and proxy_info()</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/enb_registry.erl</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_proxy.erl</affectedPath><commitId>8b29eaa6eadde6563a9dd3a4ce84c902bd069e26</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: add missing mme_info() to proxy_info()

As a bonus, `tried_mmes` now only serves its actual purpose - tracking
which MMEs have already been tried for selection filtering - rather
than being abused as a way to retrieve the current MME name.

Change-Id: Ibbb293d9e68b7c3a8c3ca7ee73132dbda3f2bf97
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>8b29eaa6eadde6563a9dd3a4ce84c902bd069e26</id><msg>enb_proxy: add missing mme_info() to proxy_info()</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/s1ap_proxy.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>941b61bf2f5691d3ede8dcef11472bb3adbc97d2</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>s1ap_proxy: add public erab_list() type

Change-Id: I21a674537d1d9f16fdb319aaf2d758ba0906b407
</comment><date>2026-03-20 21:27:59 +0000</date><id>941b61bf2f5691d3ede8dcef11472bb3adbc97d2</id><msg>s1ap_proxy: add public erab_list() type</msg><path><editType>edit</editType><file>src/s1ap_proxy.erl</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/rest_server.erl</affectedPath><commitId>809a5a29a1b696f5cb767037e48fd2c5c60d002c</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>rest_server: fix TOC/TOU race when listing/fetching E-RABs

The list of E-RAB FSM pids is a snapshot taken at one point in time.
By the time we interrogate each erab_fsm process individually, any of
them may have already terminated (e.g. bearer released mid-request).
The current code fails to generate a response if this happens.

* fetch_erab_info/1: add a pid() clause that wraps erab_list_item/1
  in a try/catch, returning 'error' if the process is gone.

* fetch_erab_info/1: catch both exit forms
** `{noproc, _}` raised by gen_statem:call/2 on a monitored pid, and
** the bare noproc atom for other code paths.

* fetch_erab_list/1: switch from lists:map to lists:filtermap and
  call fetch_erab_info/1 per E-RAB, silently dropping any that died
  between the snapshot and the per-process interrogation.

Change-Id: I160b413aa535f2379ad4e40a3ae8f37c5bce2067
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>809a5a29a1b696f5cb767037e48fd2c5c60d002c</id><msg>rest_server: fix TOC/TOU race when listing/fetching E-RABs</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/osmo_s1gw_sup.erl</affectedPath><commitId>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>rest_server: log received requests (as debug)

Change-Id: I25da9662fb98a0eafcedfde21b12a937225f5fb9
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</id><msg>rest_server: log received requests (as debug)</msg><path><editType>edit</editType><file>src/osmo_s1gw_sup.erl</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/osmith</absoluteUrl><fullName>Oliver Smith</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-s1gw" build number 757</shortDescription><upstreamBuild>757</upstreamBuild><upstreamProject>master-osmo-s1gw</upstreamProject><upstreamUrl>job/master-osmo-s1gw/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>4</buildableDurationMillis><buildableTimeMillis>4</buildableTimeMillis><buildingDurationMillis>7979</buildingDurationMillis><executingTimeMillis>7979</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>10</waitingDurationMillis><waitingTimeMillis>10</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>757</buildNumber><marked><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></marked><revision><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>756</buildNumber><marked><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><branch><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><branch><SHA1>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip></buildsByBranchName><lastBuiltRevision><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><branch><SHA1>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/erlang/osmo-s1gw</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#757</displayName><duration>7979</duration><estimatedDuration>5680</estimatedDuration><fullDisplayName>master-osmo-s1gw » manuals,a1=default,a3=default,a4=default,osmocom-master #757</fullDisplayName><id>757</id><inProgress>false</inProgress><keepLog>false</keepLog><number>757</number><queueId>66517</queueId><result>SUCCESS</result><timestamp>1774042268293</timestamp><url>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/JOB_TYPE=manuals,a1=default,a3=default,a4=default,label=osmocom-master/757/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>contrib/jenkins_manuals.sh</affectedPath><commitId>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</commitId><timestamp>1774006592000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/osmith</absoluteUrl><fullName>Oliver Smith</fullName></author><authorEmail>osmith@sysmocom.de</authorEmail><comment>contrib/jenkins_manuals: fix doc/manuals paths

Change-Id: Ibfccefec7e44a4803d4ff8ad061db395fc498b89
</comment><date>2026-03-20 12:36:32 +0100</date><id>0a0d1fbdbf8bac5ea0b4df3e1d08c949a5733615</id><msg>contrib/jenkins_manuals: fix doc/manuals paths</msg><path><editType>edit</editType><file>contrib/jenkins_manuals.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>priv/openapi.json</affectedPath><affectedPath>doc/manuals/chapters/rest.adoc</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><affectedPath>doc/manuals/chapters/cli.adoc</affectedPath><affectedPath>contrib/osmo-s1gw-cli.py</affectedPath><affectedPath>contrib/openapi.yaml</affectedPath><commitId>38cb7b1b5b66cffdf035f36bfe07efcb52a52849</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>[REST] Add MME source address/port to EnbItem

The enb_proxy now captures the local address and port of the S1GW-MME
SCTP connection (mme_saddr/mme_sport) at comm_up and includes them in
conn_info().  Expose this info through the REST API (EnbItem schema),
show it as a new column/row in the CLI (enb_list/enb_info).

Change-Id: I15bbddf96ac7d5b6f9962a8d745db58fdec334e7
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>38cb7b1b5b66cffdf035f36bfe07efcb52a52849</id><msg>[REST] Add MME source address/port to EnbItem</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>contrib/osmo-s1gw-cli.py</file></path><path><editType>edit</editType><file>doc/manuals/chapters/cli.adoc</file></path><path><editType>edit</editType><file>doc/manuals/chapters/rest.adoc</file></path><path><editType>edit</editType><file>contrib/openapi.yaml</file></path><path><editType>edit</editType><file>priv/openapi.json</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>priv/openapi.json</affectedPath><affectedPath>doc/manuals/chapters/rest.adoc</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>contrib/openapi.yaml</affectedPath><commitId>f9e4cdeeba529dc83f9460a6373771958b756a6d</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>[REST] Add PLMN/eNB IDs to EnbItem

Change-Id: I79690223a34afea5e6661125ac04f98462dadb03
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>f9e4cdeeba529dc83f9460a6373771958b756a6d</id><msg>[REST] Add PLMN/eNB IDs to EnbItem</msg><path><editType>edit</editType><file>priv/openapi.json</file></path><path><editType>edit</editType><file>doc/manuals/chapters/rest.adoc</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>contrib/openapi.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>doc/manuals/chapters/cli.adoc</affectedPath><commitId>0e6f653a7718d3e7accced5ad67a5a34e3ccae39</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>doc/manuals: cli: shorten enb_list example table

The full enb_list table with all address columns is too wide to fit
on a page and does not render well in PDF.  Collapse the address
columns with '...'; add a note that they are omitted for readability.

Change-Id: I4e25233a3e77358060f1098e97907c93deab334b
Related: OS#6671
</comment><date>2026-03-20 21:27:59 +0000</date><id>0e6f653a7718d3e7accced5ad67a5a34e3ccae39</id><msg>doc/manuals: cli: shorten enb_list example table</msg><path><editType>edit</editType><file>doc/manuals/chapters/cli.adoc</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_registry.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>6a2008296e6f0d7558b046d46f4e25556bddf7c6</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_{proxy,registry}: signal MME conn info on SCTP comm_up

Previously, mme_aid/mme_saddr/mme_sport were only signalled to the
enb_registry once the S1 Setup procedure completed.  This meant the
REST API could not show MME connection details for eNBs stuck in
wait_s1setup_rsp state (e.g. due to a slow or retrying MME).

Add notify_mme_comm_up/2, called at SCTP comm_up, which stores the full
conn_info (including mme_aid, mme_saddr, mme_sport) in the registry as
soon as the SCTP connection is established.

notify_mme_connected/2 is simplified to notify_mme_connected/1: it now
only flips the state to 'connected', since conn_info is already stored.

Change-Id: Iea9ba4fdf961e6cd262edc154884a2eee3d95355
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>6a2008296e6f0d7558b046d46f4e25556bddf7c6</id><msg>enb_{proxy,registry}: signal MME conn info on SCTP comm_up</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/enb_registry.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_registry.erl</affectedPath><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>c147dee4a6ad62bbfd737063851c1d3bf0fa4fb1</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: split conn_info() into mme_conn_info() and proxy_info()

The old conn_info() conflated two distinct concerns: the MME SCTP
connection info stored in enb_registry (aid, saddr, sport) and the
broader operational state used for introspection (handler pid, enb
connection info, etc.).  Mixing them forced enb_registry to hold a
handler pid it has no business knowing about, and required rest_server
to extract that pid just to reach s1ap_proxy for E-RAB listing.

Split into two distinct types:

* mme_conn_info() - pure MME SCTP connection info (aid, saddr, sport),
  stored in the enb_registry and signalled via notify_mme_comm_up/2.
  The `mme_` prefix is dropped from field names as the type name
  provides the context.

* proxy_info() - richer operational snapshot (handler, enb_handle,
  enb_conn_info, mme_conn_info, genb_id_str, mme_info), returned by
  fetch_info/1 for introspection/debugging purposes.

Additionally:

* Add fetch_erab_list/1 to enb_proxy, delegating internally to
  s1ap_proxy:fetch_erab_list/1 via the cached handler pid.  This
  allows the rest_server to obtain a list of E-RAB without having
  to obtain pid of the s1ap_proxy and interact with it.

* Remove separate enb_aid/mme_aid/mme_saddr/mme_sport state fields;
  enb_aid is now read directly from enb_conn_info, and the MME fields
  are grouped in mme_conn_info.

Change-Id: Ia428ceb4762f972211e9b790688dc89fb5b8a274
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>c147dee4a6ad62bbfd737063851c1d3bf0fa4fb1</id><msg>enb_proxy: split conn_info() into mme_conn_info() and proxy_info()</msg><path><editType>edit</editType><file>src/enb_registry.erl</file></path><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_proxy.erl</affectedPath><commitId>8b29eaa6eadde6563a9dd3a4ce84c902bd069e26</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: add missing mme_info() to proxy_info()

As a bonus, `tried_mmes` now only serves its actual purpose - tracking
which MMEs have already been tried for selection filtering - rather
than being abused as a way to retrieve the current MME name.

Change-Id: Ibbb293d9e68b7c3a8c3ca7ee73132dbda3f2bf97
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>8b29eaa6eadde6563a9dd3a4ce84c902bd069e26</id><msg>enb_proxy: add missing mme_info() to proxy_info()</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/s1ap_proxy.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>941b61bf2f5691d3ede8dcef11472bb3adbc97d2</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>s1ap_proxy: add public erab_list() type

Change-Id: I21a674537d1d9f16fdb319aaf2d758ba0906b407
</comment><date>2026-03-20 21:27:59 +0000</date><id>941b61bf2f5691d3ede8dcef11472bb3adbc97d2</id><msg>s1ap_proxy: add public erab_list() type</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/s1ap_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/rest_server.erl</affectedPath><commitId>809a5a29a1b696f5cb767037e48fd2c5c60d002c</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>rest_server: fix TOC/TOU race when listing/fetching E-RABs

The list of E-RAB FSM pids is a snapshot taken at one point in time.
By the time we interrogate each erab_fsm process individually, any of
them may have already terminated (e.g. bearer released mid-request).
The current code fails to generate a response if this happens.

* fetch_erab_info/1: add a pid() clause that wraps erab_list_item/1
  in a try/catch, returning 'error' if the process is gone.

* fetch_erab_info/1: catch both exit forms
** `{noproc, _}` raised by gen_statem:call/2 on a monitored pid, and
** the bare noproc atom for other code paths.

* fetch_erab_list/1: switch from lists:map to lists:filtermap and
  call fetch_erab_info/1 per E-RAB, silently dropping any that died
  between the snapshot and the per-process interrogation.

Change-Id: I160b413aa535f2379ad4e40a3ae8f37c5bce2067
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>809a5a29a1b696f5cb767037e48fd2c5c60d002c</id><msg>rest_server: fix TOC/TOU race when listing/fetching E-RABs</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/rest_server.erl</affectedPath><affectedPath>src/osmo_s1gw_sup.erl</affectedPath><commitId>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</commitId><timestamp>1774042079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>rest_server: log received requests (as debug)

Change-Id: I25da9662fb98a0eafcedfde21b12a937225f5fb9
Related: SYS#7066
</comment><date>2026-03-20 21:27:59 +0000</date><id>db8d9d6700dd9c06a6136c1b0c51ad06b44d89f7</id><msg>rest_server: log received requests (as debug)</msg><path><editType>edit</editType><file>src/rest_server.erl</file></path><path><editType>edit</editType><file>src/osmo_s1gw_sup.erl</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/osmith</absoluteUrl><fullName>Oliver Smith</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-s1gw" build number 751</shortDescription><upstreamBuild>751</upstreamBuild><upstreamProject>master-osmo-s1gw</upstreamProject><upstreamUrl>job/master-osmo-s1gw/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>3</buildableDurationMillis><buildableTimeMillis>3</buildableTimeMillis><buildingDurationMillis>74684</buildingDurationMillis><executingTimeMillis>74684</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>751</buildNumber><marked><SHA1>45d9eb03d0c8e401817125ce403f5833e36178b9</SHA1><branch><SHA1>45d9eb03d0c8e401817125ce403f5833e36178b9</SHA1><name>origin/master</name></branch></marked><revision><SHA1>45d9eb03d0c8e401817125ce403f5833e36178b9</SHA1><branch><SHA1>45d9eb03d0c8e401817125ce403f5833e36178b9</SHA1><name>origin/master</name></branch></revision></originmaster></buildsByBranchName><lastBuiltRevision><SHA1>45d9eb03d0c8e401817125ce403f5833e36178b9</SHA1><branch><SHA1>45d9eb03d0c8e401817125ce403f5833e36178b9</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/erlang/osmo-s1gw</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#751</displayName><duration>74684</duration><estimatedDuration>81023</estimatedDuration><fullDisplayName>master-osmo-s1gw » a1=default,default,a3=default,a4=default,osmocom-master #751</fullDisplayName><id>751</id><inProgress>false</inProgress><keepLog>false</keepLog><number>751</number><queueId>65880</queueId><result>SUCCESS</result><timestamp>1773997560775</timestamp><url>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/a1=default,a2=default,a3=default,a4=default,label=osmocom-master/751/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></run></matrixBuild>