<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-cbc/+/21903">View Change</a></p><div style="white-space:pre-wrap">Objections:
  Jenkins Builder: Fails

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: Add show commands<br><br>Change-Id: Ib52d1e02294c10c9f9801507aab1cd327cbdd4fe<br>---<br>M src/cbc_vty.c<br>1 file changed, 91 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/cbc_vty.c b/src/cbc_vty.c</span><br><span>index b2849ae..1655e1e 100644</span><br><span>--- a/src/cbc_vty.c</span><br><span>+++ b/src/cbc_vty.c</span><br><span>@@ -31,6 +31,93 @@</span><br><span> </span><br><span> #include "cbc_data.h"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void dump_one_cbc_peer(struct vty *vty, const struct cbc_peer *peer)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      vty_out(vty, " %-20s | %-15s | %-5d | %s |%s",</span><br><span style="color: hsl(120, 100%, 40%);">+              peer->name ? peer->name : "<unnamed>", peer->remote_host, peer->remote_port,</span><br><span style="color: hsl(120, 100%, 40%);">+              get_value_string(cbc_peer_proto_name, peer->proto), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(show_peers, show_peers_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+  "show peers",</span><br><span style="color: hsl(120, 100%, 40%);">+       SHOW_STR "Display Information about RAN peers connected to this CBC\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  struct cbc_peer *peer;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      vty_out(vty, " Name                | IP             | Port  | Proto |%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+     vty_out(vty, "---------------------|----------------|-------|-------|%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+     llist_for_each_entry(peer, &g_cbc->peers, list)</span><br><span style="color: hsl(120, 100%, 40%);">+                dump_one_cbc_peer(vty, peer);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define MESSAGES_STR "Display information about currently active SMSCB messages\n"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void dump_one_cbc_msg(struct vty *vty, const struct cbc_message *cbc_msg)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ const struct smscb_message *smscb = &cbc_msg->msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(!smscb->is_etws);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    vty_out(vty, " %04X| %04X|%-20s|%-13s| %-4u|%c|%02x|%s",</span><br><span style="color: hsl(120, 100%, 40%);">+            smscb->message_id, smscb->serial_nr, cbc_msg->cbe_name,</span><br><span style="color: hsl(120, 100%, 40%);">+              get_value_string(cbsp_category_names, cbc_msg->priority), cbc_msg->rep_period,</span><br><span style="color: hsl(120, 100%, 40%);">+          cbc_msg->extended_cbch ? 'E' : 'N', smscb->cbs.dcs,</span><br><span style="color: hsl(120, 100%, 40%);">+             VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(show_messages_cbs, show_messages_cbs_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+   "show messages cbs",</span><br><span style="color: hsl(120, 100%, 40%);">+        SHOW_STR MESSAGES_STR "Display Cell Broadcast Service (CBS) messages\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct cbc_message *cbc_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        vty_out(vty,</span><br><span style="color: hsl(120, 100%, 40%);">+"|MsgId|SerNo|      CBE Name       |  Category   |Period|E|DCS|%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+     vty_out(vty,</span><br><span style="color: hsl(120, 100%, 40%);">+"|-----|-----|---------------------|-------------|------|-|---|%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   llist_for_each_entry(cbc_msg, &g_cbc->messages, list) {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (cbc_msg->msg.is_etws)</span><br><span style="color: hsl(120, 100%, 40%);">+                  continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             dump_one_cbc_msg(vty, cbc_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void dump_one_etws_msg(struct vty *vty, const struct cbc_message *cbc_msg)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        const struct smscb_message *smscb = &cbc_msg->msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(smscb->is_etws);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* FIXME */</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(show_messages_etws, show_messages_etws_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+   "show messages etws",</span><br><span style="color: hsl(120, 100%, 40%);">+       SHOW_STR MESSAGES_STR "Display ETWS (CMAS, KPAS, EU-ALERT, PWS, WEA) Emergency messages\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct cbc_message *cbc_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* FIXME: header */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ llist_for_each_entry(cbc_msg, &g_cbc->messages, list) {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (!cbc_msg->msg.is_etws)</span><br><span style="color: hsl(120, 100%, 40%);">+                 continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             dump_one_etws_msg(vty, cbc_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* TODO: Show a single message; with details about scope + payload */</span><br><span style="color: hsl(120, 100%, 40%);">+/* TODO: Delete a single message; either from one peer or globally from all */</span><br><span style="color: hsl(120, 100%, 40%);">+/* TODO: Re-send all messages to one peer / all peers? */</span><br><span style="color: hsl(120, 100%, 40%);">+/* TODO: Completed / Load status */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> enum cbc_vty_node {</span><br><span>     CBC_NODE = _LAST_OSMOVTY_NODE + 1,</span><br><span>   PEER_NODE,</span><br><span>@@ -176,6 +263,10 @@</span><br><span> </span><br><span> void cbc_vty_init(void)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+ install_lib_element_ve(&show_peers_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+  install_lib_element_ve(&show_messages_cbs_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+   install_lib_element_ve(&show_messages_etws_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       install_lib_element(CONFIG_NODE, &cfg_cbc_cmd);</span><br><span>  install_node(&cbc_node, config_write_cbc);</span><br><span>       install_lib_element(CBC_NODE, &cfg_permit_unknown_peers_cmd);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-cbc/+/21903">change 21903</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/osmo-cbc/+/21903"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-cbc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib52d1e02294c10c9f9801507aab1cd327cbdd4fe </div>
<div style="display:none"> Gerrit-Change-Number: 21903 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-MessageType: merged </div>