misc: Move the bsc_parse_reg to libcommom and name it gsm_parse_reg

Move the regexp parsing code from the NAT to libcommon as it will
be used by the NAT and BSC code. This also adds the #include <regex.h>
include to gsm_data. This header should be split up.
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_utils.c b/openbsc/src/osmo-bsc_nat/bsc_nat_utils.c
index 84b23d1..0eb8be9 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_utils.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_utils.c
@@ -672,31 +672,6 @@
 	}
 }
 
-int bsc_parse_reg(void *ctx, regex_t *reg, char **imsi, int argc, const char **argv)
-{
-	int ret;
-
-	ret = 0;
-	if (*imsi) {
-		talloc_free(*imsi);
-		*imsi = NULL;
-	}
-	regfree(reg);
-
-	if (argc > 0) {
-		*imsi = talloc_strdup(ctx, argv[0]);
-		ret = regcomp(reg, argv[0], 0);
-
-		/* handle compilation failures */
-		if (ret != 0) {
-			talloc_free(*imsi);
-			*imsi = NULL;
-		}
-	}
-
-	return ret;
-}
-
 static const char *con_types [] = {
 	[NAT_CON_TYPE_NONE] = "n/a",
 	[NAT_CON_TYPE_LU] = "Location Update",
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
index b5c1cf2..55b3958 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
@@ -19,6 +19,7 @@
  */
 
 #include <openbsc/vty.h>
+#include <openbsc/gsm_data.h>
 #include <openbsc/bsc_nat.h>
 #include <openbsc/bsc_nat_sccp.h>
 #include <openbsc/bsc_msc.h>
@@ -527,7 +528,7 @@
       "Set the USSD query to match with the ussd-list-name\n"
       "The query to match")
 {
-	if (bsc_parse_reg(_nat, &_nat->ussd_query_re, &_nat->ussd_query, argc, argv) != 0)
+	if (gsm_parse_reg(_nat, &_nat->ussd_query_re, &_nat->ussd_query, argc, argv) != 0)
 		return CMD_WARNING;
 	return CMD_SUCCESS;
 }
@@ -641,7 +642,7 @@
 	if (!entry)
 		return CMD_WARNING;
 
-	if (bsc_parse_reg(acc, &entry->imsi_allow_re, &entry->imsi_allow, argc - 1, &argv[1]) != 0)
+	if (gsm_parse_reg(acc, &entry->imsi_allow_re, &entry->imsi_allow, argc - 1, &argv[1]) != 0)
 		return CMD_WARNING;
 	return CMD_SUCCESS;
 }
@@ -664,7 +665,7 @@
 	if (!entry)
 		return CMD_WARNING;
 
-	if (bsc_parse_reg(acc, &entry->imsi_deny_re, &entry->imsi_deny, argc - 1, &argv[1]) != 0)
+	if (gsm_parse_reg(acc, &entry->imsi_deny_re, &entry->imsi_deny, argc - 1, &argv[1]) != 0)
 		return CMD_WARNING;
 	return CMD_SUCCESS;
 }
@@ -797,7 +798,7 @@
 	char *str = NULL;
 
 	memset(&reg, 0, sizeof(reg));
-	if (bsc_parse_reg(_nat, &reg, &str, 1, argv) != 0)
+	if (gsm_parse_reg(_nat, &reg, &str, 1, argv) != 0)
 		return CMD_WARNING;
 
 	vty_out(vty, "String matches allow pattern: %d%s",