nat: Allow to have a regexp to match the MSISDN

The idea that MCC and MNC is enough to classify a subscriber
turns out to be wrong. Certain operatos license a number range
of IMSIs to others. When we see a '^' in the MCC field we treat
it as a regexp. The code now turns the MCC/MNC into a regexp
for the IMSI. It is not using extended POSIX regexp to match
the behavior of the access list.
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
index 0375cf8..38b5a09 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
@@ -461,16 +461,16 @@
       "number-rewrite FILENAME",
       "Set the file with rewriting rules.\n" "Filename")
 {
+	struct osmo_config_list *rewr = NULL;
+
 	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 = osmo_config_list_parse(_nat, _nat->num_rewr_name);
-		return _nat->num_rewr == NULL ? CMD_WARNING : CMD_SUCCESS;
+		rewr = osmo_config_list_parse(_nat, _nat->num_rewr_name);
+		bsc_nat_num_rewr_entry_adapt(_nat, rewr);
+		talloc_free(rewr);
+		return CMD_SUCCESS;
 	} else {
-		if (_nat->num_rewr)
-			talloc_free(_nat->num_rewr);
-		_nat->num_rewr = NULL;
+		bsc_nat_num_rewr_entry_adapt(_nat, NULL);
 		return CMD_SUCCESS;
 	}
 }