Change in osmo-hnodeb[master]: Configure PLMN over VTY and use it in HnbRegisterRequest

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Tue Nov 2 12:00:41 UTC 2021


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hnodeb/+/26020 )

Change subject: Configure PLMN over VTY and use it in HnbRegisterRequest
......................................................................

Configure PLMN over VTY and use it in HnbRegisterRequest

Change-Id: I6d67aa547d5496fe1407744e1dde07d2a41df500
---
M include/osmocom/hnodeb/hnodeb.h
M src/osmo-hnodeb/hnb.c
M src/osmo-hnodeb/hnbap.c
M src/osmo-hnodeb/vty.c
4 files changed, 62 insertions(+), 4 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved
  laforge: Looks good to me, but someone else must approve
  fixeria: Looks good to me, but someone else must approve



diff --git a/include/osmocom/hnodeb/hnodeb.h b/include/osmocom/hnodeb/hnodeb.h
index cca7f35..77430d6 100644
--- a/include/osmocom/hnodeb/hnodeb.h
+++ b/include/osmocom/hnodeb/hnodeb.h
@@ -25,6 +25,7 @@
 #include <osmocom/core/linuxlist.h>
 #include <osmocom/core/write_queue.h>
 #include <osmocom/core/logging.h>
+#include <osmocom/gsm/gsm23003.h>
 
 enum {
 	DMAIN,
@@ -54,6 +55,7 @@
 };
 
 struct hnb {
+	struct osmo_plmn_id plmn;
 	struct {
 		char *local_addr;
 		uint16_t local_port;
diff --git a/src/osmo-hnodeb/hnb.c b/src/osmo-hnodeb/hnb.c
index d7dde7b..b0628e5 100644
--- a/src/osmo-hnodeb/hnb.c
+++ b/src/osmo-hnodeb/hnb.c
@@ -116,6 +116,11 @@
 	if (!hnb)
 		return NULL;
 
+	hnb->plmn = (struct osmo_plmn_id){
+		.mcc = 1,
+		.mnc = 1,
+	};
+
 	hnb->iuh.local_addr = talloc_strdup(hnb, "0.0.0.0");
 	hnb->iuh.local_port = 0;
 	hnb->iuh.remote_addr = talloc_strdup(hnb, "127.0.0.1");
diff --git a/src/osmo-hnodeb/hnbap.c b/src/osmo-hnodeb/hnbap.c
index eaa51a4..58fec85 100644
--- a/src/osmo-hnodeb/hnbap.c
+++ b/src/osmo-hnodeb/hnbap.c
@@ -156,7 +156,7 @@
 	uint16_t lac, sac;
 	uint8_t rac;
 	uint32_t cid;
-	uint8_t plmn[] = {0x09, 0xf1, 0x99};
+	uint8_t plmn[3];
 	char identity[50] = "ATestHNB@";
 
 	HNBAP_HNBRegisterRequestIEs_t request;
@@ -175,10 +175,9 @@
 	request.hnB_Identity.hNB_Identity_Info.buf = (uint8_t*) identity;
 	request.hnB_Identity.hNB_Identity_Info.size = strlen(identity);
 
+	osmo_plmn_to_bcd(plmn, &hnb->plmn);
 	request.plmNidentity.buf = plmn;
-	request.plmNidentity.size = 3;
-
-
+	request.plmNidentity.size = sizeof(plmn);
 
 	memset(&request_out, 0, sizeof(request_out));
 	rc = hnbap_encode_hnbregisterrequesties(&request_out, &request);
diff --git a/src/osmo-hnodeb/vty.c b/src/osmo-hnodeb/vty.c
index 989b7e8..f4623ad 100644
--- a/src/osmo-hnodeb/vty.c
+++ b/src/osmo-hnodeb/vty.c
@@ -68,6 +68,7 @@
 };
 
 #define HNODEB_STR "Configure the HNodeB\n"
+#define CODE_CMD_STR "Code commands\n"
 
 DEFUN(cfg_hnodeb,
       cfg_hnodeb_cmd,
@@ -80,6 +81,52 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN_USRATTR(cfg_hnodeb_ncc,
+	      cfg_hnodeb_ncc_cmd,
+	      0,
+	      "network country code <1-999>",
+	      "Set the GSM network country code\n"
+	      "Country commands\n"
+	      CODE_CMD_STR
+	      "Network Country Code to use\n")
+{
+	struct hnb *hnb = (struct hnb *)vty->index;
+	uint16_t mcc;
+
+	if (osmo_mcc_from_str(argv[0], &mcc)) {
+		vty_out(vty, "%% Error decoding MCC: %s%s", argv[0], VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	hnb->plmn.mcc = mcc;
+
+	return CMD_SUCCESS;
+}
+
+DEFUN_USRATTR(cfg_hnodeb_mnc,
+	      cfg_hnodeb_mnc_cmd,
+	      0,
+	      "mobile network code <0-999>",
+	      "Set the GSM mobile network code\n"
+	      "Network Commands\n"
+	      CODE_CMD_STR
+	      "Mobile Network Code to use\n")
+{
+	struct hnb *hnb = (struct hnb *)vty->index;
+	uint16_t mnc;
+	bool mnc_3_digits;
+
+	if (osmo_mnc_from_str(argv[0], &mnc, &mnc_3_digits)) {
+		vty_out(vty, "%% Error decoding MNC: %s%s", argv[0], VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	hnb->plmn.mnc = mnc;
+	hnb->plmn.mnc_3_digits = mnc_3_digits;
+
+	return CMD_SUCCESS;
+}
+
 static struct cmd_node iuh_node = {
 	IUH_NODE,
 	"%s(config-iuh)# ",
@@ -139,6 +186,9 @@
 static int config_write_hnodeb(struct vty *vty)
 {
 	vty_out(vty, "hnodeb%s", VTY_NEWLINE);
+	vty_out(vty, " network country code %s%s", osmo_mcc_name(g_hnb->plmn.mcc), VTY_NEWLINE);
+	vty_out(vty, " mobile network code %s%s",
+		osmo_mnc_name(g_hnb->plmn.mnc, g_hnb->plmn.mnc_3_digits), VTY_NEWLINE);
 	vty_out(vty, " iuh%s", VTY_NEWLINE);
 	if (g_hnb->iuh.local_addr)
 		vty_out(vty, "  local-ip %s%s", g_hnb->iuh.local_addr, VTY_NEWLINE);
@@ -254,6 +304,8 @@
 {
 	install_element(CONFIG_NODE, &cfg_hnodeb_cmd);
 	install_node(&hnodeb_node, config_write_hnodeb);
+	install_element(HNODEB_NODE, &cfg_hnodeb_ncc_cmd);
+	install_element(HNODEB_NODE, &cfg_hnodeb_mnc_cmd);
 	install_element(HNODEB_NODE, &cfg_hnodeb_iuh_cmd);
 	install_node(&iuh_node, NULL);
 	install_element(IUH_NODE, &cfg_hnodeb_iuh_local_ip_cmd);

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-hnodeb/+/26020
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hnodeb
Gerrit-Branch: master
Gerrit-Change-Id: I6d67aa547d5496fe1407744e1dde07d2a41df500
Gerrit-Change-Number: 26020
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211102/263a4acd/attachment.htm>


More information about the gerrit-log mailing list