nat: Add vty option for number rewriting

Parse a msg file in case we do have a list.
diff --git a/openbsc/src/nat/bsc_nat_vty.c b/openbsc/src/nat/bsc_nat_vty.c
index 9eb8ebc..af7e94c 100644
--- a/openbsc/src/nat/bsc_nat_vty.c
+++ b/openbsc/src/nat/bsc_nat_vty.c
@@ -87,6 +87,9 @@
 	if (_nat->ussd_local)
 		vty_out(vty, " ussd-local-ip %s%s", _nat->ussd_local, VTY_NEWLINE);
 
+	if (_nat->num_rewr_name)
+		vty_out(vty, " number-rewrite %s%s", _nat->num_rewr_name, VTY_NEWLINE);
+
 	llist_for_each_entry(lst, &_nat->access_lists, list) {
 		write_acc_lst(vty, lst);
 	}
@@ -403,6 +406,25 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_nat_number_rewrite,
+      cfg_nat_number_rewrite_cmd,
+      "number-rewrite FILENAME",
+      "Set the file with rewriting rules.\n" "Filename")
+{
+	bsc_replace_string(_nat, &_nat->num_rewr_name, argv[0]);
+	if (_nat->num_rewr_name) {
+		if (_nat->num_rewr)
+			talloc_free(_nat->num_rewr);
+		_nat->num_rewr = msg_entry_parse(_nat, _nat->num_rewr_name);
+		return _nat->num_rewr == NULL ? CMD_WARNING : CMD_SUCCESS;
+	} else {
+		if (_nat->num_rewr)
+			talloc_free(_nat->num_rewr);
+		_nat->num_rewr = NULL;
+		return CMD_SUCCESS;
+	}
+}
+
 DEFUN(cfg_nat_ussd_lst_name,
       cfg_nat_ussd_lst_name_cmd,
       "ussd-list-name NAME",
@@ -688,6 +710,9 @@
 	install_element(NAT_NODE, &cfg_lst_imsi_deny_cmd);
 	install_element(NAT_NODE, &cfg_lst_no_cmd);
 
+	/* number rewriting */
+	install_element(NAT_NODE, &cfg_nat_number_rewrite_cmd);
+
 	/* BSC subgroups */
 	install_element(NAT_NODE, &cfg_bsc_cmd);
 	install_node(&bsc_node, config_write_bsc);