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