<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/25349">View Change</a></p><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>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>3 files changed, 10 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/49/25349/1</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></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: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>