<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/25349">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  osmith: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ns2: nse: add a uptime/downtime to track the last state change<br><br>To show adminstrator the last state change of a nse add a timestamp and<br>show it on the vty<br><br>> show ns nse 1234<br><br>NSEI 01234: UDP, ALIVE since 0d 0h 0m 16s<br> FSM Instance Name: 'GPRS-NS2-SNS-SGSN(NSE01234-SNS)[0x6120000012a0]', ID: 'NSE01234-SNS'<br>  Log-Level: 'DEBUG', State: 'CONFIGURED'<br>  Timer: 4<br> Maximum number of remote  NS-VCs: 8, IPv4 Endpoints: 2, IPv6 Endpoints: 0<br> [...]<br><br>Related: OS#5028<br>Change-Id: I8143080a3c5c9a55d37dfad44ba2ac6561daa216<br>---<br>M src/gb/gprs_ns2.c<br>M src/gb/gprs_ns2_internal.h<br>M src/gb/gprs_ns2_vty.c<br>M tests/gb/gprs_ns2_vty.vty<br>4 files changed, 12 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c</span><br><span>index 6c48ca6..c00537d 100644</span><br><span>--- a/src/gb/gprs_ns2.c</span><br><span>+++ b/src/gb/gprs_ns2.c</span><br><span>@@ -838,6 +838,7 @@</span><br><span>         nse->mtu = 0;</span><br><span>     llist_add_tail(&nse->list, &nsi->nse);</span><br><span>         INIT_LLIST_HEAD(&nse->nsvc);</span><br><span style="color: hsl(120, 100%, 40%);">+   osmo_clock_gettime(CLOCK_MONOTONIC, &nse->ts_alive_change);</span><br><span> </span><br><span>       return nse;</span><br><span> }</span><br><span>@@ -1400,6 +1401,7 @@</span><br><span>     /* wait until both data_weight and sig_weight are != 0 before declaring NSE as alive */</span><br><span>      if (unblocked && nse->sum_data_weight && nse->sum_sig_weight) {</span><br><span>                nse->alive = true;</span><br><span style="color: hsl(120, 100%, 40%);">+         osmo_clock_gettime(CLOCK_MONOTONIC, &nse->ts_alive_change);</span><br><span>           ns2_prim_status_ind(nse, NULL, 0, GPRS_NS2_AFF_CAUSE_RECOVERY);</span><br><span>              nse->first = false;</span><br><span>               return;</span><br><span>@@ -1408,6 +1410,7 @@</span><br><span>      if (nse->alive && (nse->sum_data_weight == 0 || nse->sum_sig_weight == 0)) {</span><br><span>                /* nse became unavailable */</span><br><span>                 nse->alive = false;</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_clock_gettime(CLOCK_MONOTONIC, &nse->ts_alive_change);</span><br><span>           ns2_prim_status_ind(nse, NULL, 0, GPRS_NS2_AFF_CAUSE_FAILURE);</span><br><span>       }</span><br><span> }</span><br><span>diff --git a/src/gb/gprs_ns2_internal.h b/src/gb/gprs_ns2_internal.h</span><br><span>index afe6b69..cd9969c 100644</span><br><span>--- a/src/gb/gprs_ns2_internal.h</span><br><span>+++ b/src/gb/gprs_ns2_internal.h</span><br><span>@@ -220,6 +220,9 @@</span><br><span> </span><br><span>        /*! recursive anchor */</span><br><span>      bool freed;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! when the NSE became alive or dead */</span><br><span style="color: hsl(120, 100%, 40%);">+      struct timespec ts_alive_change;</span><br><span> };</span><br><span> </span><br><span> /*! Structure representing a single NS-VC */</span><br><span>diff --git a/src/gb/gprs_ns2_vty.c b/src/gb/gprs_ns2_vty.c</span><br><span>index 52ce207..86471b8 100644</span><br><span>--- a/src/gb/gprs_ns2_vty.c</span><br><span>+++ b/src/gb/gprs_ns2_vty.c</span><br><span>@@ -1900,8 +1900,10 @@</span><br><span>         if (persistent_only && !nse->persistent)</span><br><span>          return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     vty_out(vty, "NSEI %05u: %s, %s%s", nse->nsei, gprs_ns2_lltype_str(nse->ll),</span><br><span style="color: hsl(0, 100%, 40%);">-            nse->alive ? "ALIVE" : "DEAD", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+   vty_out(vty, "NSEI %05u: %s, %s since ", nse->nsei, gprs_ns2_lltype_str(nse->ll),</span><br><span style="color: hsl(120, 100%, 40%);">+             nse->alive ? "ALIVE" : "DEAD");</span><br><span style="color: hsl(120, 100%, 40%);">+        vty_out_uptime(vty, &nse->ts_alive_change);</span><br><span style="color: hsl(120, 100%, 40%);">+    vty_out_newline(vty);</span><br><span> </span><br><span>    ns2_sns_dump_vty(vty, " ", nse, stats);</span><br><span>    llist_for_each_entry(nsvc, &nse->nsvc, list) {</span><br><span>diff --git a/tests/gb/gprs_ns2_vty.vty b/tests/gb/gprs_ns2_vty.vty</span><br><span>index 62fff66..35bee1e 100644</span><br><span>--- a/tests/gb/gprs_ns2_vty.vty</span><br><span>+++ b/tests/gb/gprs_ns2_vty.vty</span><br><span>@@ -38,7 +38,7 @@</span><br><span> OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.15 9496</span><br><span> OsmoNSdummy(config-ns-nse)# end</span><br><span> OsmoNSdummy# show ns</span><br><span style="color: hsl(0, 100%, 40%);">-NSEI 01234: UDP, DEAD</span><br><span style="color: hsl(120, 100%, 40%);">+NSEI 01234: UDP, DEAD since 0d 0h 0m 0s</span><br><span>   1 NS-VC:</span><br><span>    RECOVERING PERSIST sig_weight=1 data_weight=1 udp)[127.0.0.14]:42999<>[127.0.0.15]:9496</span><br><span> UDP bind: 127.0.0.14:42999 DSCP: 0 Priority: 0</span><br><span>@@ -52,7 +52,7 @@</span><br><span> OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.17 9496 signalling-weight 0 data-weight 0</span><br><span> OsmoNSdummy(config-ns-nse)# end</span><br><span> OsmoNSdummy# show ns</span><br><span style="color: hsl(0, 100%, 40%);">-NSEI 01234: UDP, DEAD</span><br><span style="color: hsl(120, 100%, 40%);">+NSEI 01234: UDP, DEAD since 0d 0h 0m 0s</span><br><span>   3 NS-VC:</span><br><span>    RECOVERING PERSIST sig_weight=1 data_weight=1 udp)[127.0.0.14]:42999<>[127.0.0.15]:9496</span><br><span>    RECOVERING PERSIST sig_weight=0 data_weight=9 udp)[127.0.0.14]:42999<>[127.0.0.16]:9496</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/25349">change 25349</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/25349"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I8143080a3c5c9a55d37dfad44ba2ac6561daa216 </div>
<div style="display:none"> Gerrit-Change-Number: 25349 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>