aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2024-03-29 12:51:56 -0700
committerDenis Kenzior <denkenz@gmail.com>2024-04-03 11:01:20 -0500
commitbf76c826774f91c5ca966359f98ef0ac701a4008 (patch)
tree74be69a673a24f5a4d12d920b431bf9b9e36f65f
parent61fbfea7e46da56e0dcab33c64c720878bc82272 (diff)
downloadofono-bf76c826774f91c5ca966359f98ef0ac701a4008.tar.gz
tools: lookup-apn: add support for optional tags filter
-rw-r--r--tools/lookup-apn.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/tools/lookup-apn.c b/tools/lookup-apn.c
index abb95f38f..e4fc79cd7 100644
--- a/tools/lookup-apn.c
+++ b/tools/lookup-apn.c
@@ -26,7 +26,7 @@
static const char *option_file;
static int lookup_apn(const char *match_mcc, const char *match_mnc,
- const char *match_spn)
+ const char *match_spn, char **tags_filter)
{
struct provision_db *pdb;
struct provision_db_entry *contexts;
@@ -50,7 +50,8 @@ static int lookup_apn(const char *match_mcc, const char *match_mnc,
fprintf(stdout, "Searching for info for network: %s%s, spn: %s\n",
match_mcc, match_mnc, match_spn ? match_spn : "<None>");
- r = provision_db_lookup(pdb, match_mcc, match_mnc, match_spn, NULL,
+ r = provision_db_lookup(pdb, match_mcc, match_mnc,
+ match_spn, tags_filter,
&contexts, &n_contexts);
if (r < 0) {
fprintf(stderr, "Unable to lookup: %s\n", strerror(-r));
@@ -78,6 +79,8 @@ static int lookup_apn(const char *match_mcc, const char *match_mnc,
fprintf(stdout, "Message Center: %s\n",
ap->message_center);
}
+
+ fprintf(stdout, "Tags: %s\n", ap->tags);
}
l_free(contexts);
@@ -92,22 +95,26 @@ static void usage(void)
printf("lookup-apn\nUsage:\n");
printf("lookup-apn [options] <mcc> <mnc> [spn]\n");
printf("Options:\n"
- "\t-v, --version Show version\n"
- "\t-f, --file Provision DB file to use\n"
- "\t-h, --help Show help options\n");
+ "\t-v, --version Show version\n"
+ "\t-f, --file Provision DB file to use\n"
+ "\t-t, --tags Comma separated tag filter\n"
+ "\t-h, --help Show help options\n");
}
static const struct option options[] = {
{ "version", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' },
{ "file", required_argument, NULL, 'f' },
+ { "tags", required_argument, NULL, 't' },
{ },
};
int main(int argc, char **argv)
{
+ _auto_(l_strv_free) char **tags_filter = NULL;
+
for (;;) {
- int opt = getopt_long(argc, argv, "f:vh", options, NULL);
+ int opt = getopt_long(argc, argv, "f:t:vh", options, NULL);
if (opt < 0)
break;
@@ -116,6 +123,9 @@ int main(int argc, char **argv)
case 'f':
option_file = optarg;
break;
+ case 't':
+ tags_filter = l_strsplit(optarg, ',');
+ break;
case 'v':
printf("%s\n", VERSION);
return EXIT_SUCCESS;
@@ -138,5 +148,6 @@ int main(int argc, char **argv)
}
return lookup_apn(argv[optind], argv[optind + 1],
- argc - optind == 3 ? argv[optind + 2] : NULL);
+ argc - optind == 3 ? argv[optind + 2] : NULL,
+ tags_filter);
}