<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-hnodeb/+/26020">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Configure PLMN over VTY and use it in HnbRegisterRequest<br><br>Change-Id: I6d67aa547d5496fe1407744e1dde07d2a41df500<br>---<br>M include/osmocom/hnodeb/hnodeb.h<br>M src/osmo-hnodeb/hnb.c<br>M src/osmo-hnodeb/hnbap.c<br>M src/osmo-hnodeb/vty.c<br>4 files changed, 62 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-hnodeb refs/changes/20/26020/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/hnodeb/hnodeb.h b/include/osmocom/hnodeb/hnodeb.h</span><br><span>index d4fbff1..0928bdd 100644</span><br><span>--- a/include/osmocom/hnodeb/hnodeb.h</span><br><span>+++ b/include/osmocom/hnodeb/hnodeb.h</span><br><span>@@ -25,6 +25,7 @@</span><br><span> #include <osmocom/core/linuxlist.h></span><br><span> #include <osmocom/core/write_queue.h></span><br><span> #include <osmocom/core/logging.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/gsm/gsm23003.h></span><br><span> </span><br><span> enum {</span><br><span>  DMAIN,</span><br><span>@@ -71,6 +72,7 @@</span><br><span> };</span><br><span> </span><br><span> struct hnb {</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_plmn_id plmn;</span><br><span>    struct {</span><br><span>             char *local_addr;</span><br><span>            uint16_t local_port;</span><br><span>diff --git a/src/osmo-hnodeb/hnb.c b/src/osmo-hnodeb/hnb.c</span><br><span>index d7dde7b..b0628e5 100644</span><br><span>--- a/src/osmo-hnodeb/hnb.c</span><br><span>+++ b/src/osmo-hnodeb/hnb.c</span><br><span>@@ -116,6 +116,11 @@</span><br><span>         if (!hnb)</span><br><span>            return NULL;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      hnb->plmn = (struct osmo_plmn_id){</span><br><span style="color: hsl(120, 100%, 40%);">+         .mcc = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+             .mnc = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+     };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         hnb->iuh.local_addr = talloc_strdup(hnb, "0.0.0.0");</span><br><span>    hnb->iuh.local_port = 0;</span><br><span>  hnb->iuh.remote_addr = talloc_strdup(hnb, "127.0.0.1");</span><br><span>diff --git a/src/osmo-hnodeb/hnbap.c b/src/osmo-hnodeb/hnbap.c</span><br><span>index ef459f2..f70f2bb 100644</span><br><span>--- a/src/osmo-hnodeb/hnbap.c</span><br><span>+++ b/src/osmo-hnodeb/hnbap.c</span><br><span>@@ -156,7 +156,7 @@</span><br><span>  uint16_t lac, sac;</span><br><span>   uint8_t rac;</span><br><span>         uint32_t cid;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t plmn[] = {0x09, 0xf1, 0x99};</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t plmn[3];</span><br><span>     char identity[50] = "ATestHNB@";</span><br><span> </span><br><span>       HNBAP_HNBRegisterRequestIEs_t request;</span><br><span>@@ -175,10 +175,9 @@</span><br><span>        request.hnB_Identity.hNB_Identity_Info.buf = (uint8_t*) identity;</span><br><span>    request.hnB_Identity.hNB_Identity_Info.size = strlen(identity);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   osmo_plmn_to_bcd(plmn, &hnb->plmn);</span><br><span>   request.plmNidentity.buf = plmn;</span><br><span style="color: hsl(0, 100%, 40%);">-        request.plmNidentity.size = 3;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+        request.plmNidentity.size = sizeof(plmn);</span><br><span> </span><br><span>        memset(&request_out, 0, sizeof(request_out));</span><br><span>    rc = hnbap_encode_hnbregisterrequesties(&request_out, &request);</span><br><span>diff --git a/src/osmo-hnodeb/vty.c b/src/osmo-hnodeb/vty.c</span><br><span>index 5dd849c..cdc57e9 100644</span><br><span>--- a/src/osmo-hnodeb/vty.c</span><br><span>+++ b/src/osmo-hnodeb/vty.c</span><br><span>@@ -68,6 +68,7 @@</span><br><span> };</span><br><span> </span><br><span> #define HNODEB_STR "Configure the HNodeB\n"</span><br><span style="color: hsl(120, 100%, 40%);">+#define CODE_CMD_STR "Code commands\n"</span><br><span> </span><br><span> DEFUN(cfg_hnodeb,</span><br><span>       cfg_hnodeb_cmd,</span><br><span>@@ -80,6 +81,52 @@</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_hnodeb_ncc,</span><br><span style="color: hsl(120, 100%, 40%);">+         cfg_hnodeb_ncc_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+           0,</span><br><span style="color: hsl(120, 100%, 40%);">+            "network country code <1-999>",</span><br><span style="color: hsl(120, 100%, 40%);">+       "Set the GSM network country code\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Country commands\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        CODE_CMD_STR</span><br><span style="color: hsl(120, 100%, 40%);">+          "Network Country Code to use\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct hnb *hnb = (struct hnb *)vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint16_t mcc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       if (osmo_mcc_from_str(argv[0], &mcc)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           vty_out(vty, "%% Error decoding MCC: %s%s", argv[0], VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+          return CMD_WARNING;</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%);">+   hnb->plmn.mcc = mcc;</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%);">+DEFUN_USRATTR(cfg_hnodeb_mnc,</span><br><span style="color: hsl(120, 100%, 40%);">+             cfg_hnodeb_mnc_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+           0,</span><br><span style="color: hsl(120, 100%, 40%);">+            "mobile network code <0-999>",</span><br><span style="color: hsl(120, 100%, 40%);">+        "Set the GSM mobile network code\n"</span><br><span style="color: hsl(120, 100%, 40%);">+         "Network Commands\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        CODE_CMD_STR</span><br><span style="color: hsl(120, 100%, 40%);">+          "Mobile Network Code to use\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct hnb *hnb = (struct hnb *)vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint16_t mnc;</span><br><span style="color: hsl(120, 100%, 40%);">+ bool mnc_3_digits;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (osmo_mnc_from_str(argv[0], &mnc, &mnc_3_digits)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                vty_out(vty, "%% Error decoding MNC: %s%s", argv[0], VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+          return CMD_WARNING;</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%);">+   hnb->plmn.mnc = mnc;</span><br><span style="color: hsl(120, 100%, 40%);">+       hnb->plmn.mnc_3_digits = mnc_3_digits;</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> static struct cmd_node iuh_node = {</span><br><span>      IUH_NODE,</span><br><span>    "%s(config-iuh)# ",</span><br><span>@@ -139,6 +186,9 @@</span><br><span> static int config_write_hnodeb(struct vty *vty)</span><br><span> {</span><br><span>  vty_out(vty, "hnodeb%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+      vty_out(vty, " network country code %s%s", osmo_mcc_name(g_hnb->plmn.mcc), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " mobile network code %s%s",</span><br><span style="color: hsl(120, 100%, 40%);">+           osmo_mnc_name(g_hnb->plmn.mnc, g_hnb->plmn.mnc_3_digits), VTY_NEWLINE);</span><br><span>        vty_out(vty, " iuh%s", VTY_NEWLINE);</span><br><span>       if (g_hnb->iuh.local_addr)</span><br><span>                vty_out(vty, "  local-ip %s%s", g_hnb->iuh.local_addr, VTY_NEWLINE);</span><br><span>@@ -254,6 +304,8 @@</span><br><span> {</span><br><span>         install_element(CONFIG_NODE, &cfg_hnodeb_cmd);</span><br><span>   install_node(&hnodeb_node, config_write_hnodeb);</span><br><span style="color: hsl(120, 100%, 40%);">+  install_element(HNODEB_NODE, &cfg_hnodeb_ncc_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+        install_element(HNODEB_NODE, &cfg_hnodeb_mnc_cmd);</span><br><span>       install_element(HNODEB_NODE, &cfg_hnodeb_iuh_cmd);</span><br><span>       install_node(&iuh_node, NULL);</span><br><span>   install_element(IUH_NODE, &cfg_hnodeb_iuh_local_ip_cmd);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-hnodeb/+/26020">change 26020</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-hnodeb/+/26020"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-hnodeb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I6d67aa547d5496fe1407744e1dde07d2a41df500 </div>
<div style="display:none"> Gerrit-Change-Number: 26020 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>