summaryrefslogtreecommitdiff
path: root/iwinfo_cli.c
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2014-10-27 16:59:50 +0100
committerJo-Philipp Wich <jow@openwrt.org>2014-10-27 17:18:21 +0100
commit149ce00582eea9a23bc0aae72f32ebc4deac6780 (patch)
tree93c729b9d67fff79a7ac221c020ac4ddebc36d61 /iwinfo_cli.c
parent665809c7f34f66add3b816086d93d4116a0749b8 (diff)
downloadiwinfo-149ce00582eea9a23bc0aae72f32ebc4deac6780.tar.gz
cli: add command to translate uci section to phy name
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Diffstat (limited to 'iwinfo_cli.c')
-rw-r--r--iwinfo_cli.c111
1 files changed, 80 insertions, 31 deletions
diff --git a/iwinfo_cli.c b/iwinfo_cli.c
index 891f77e..d9a59e2 100644
--- a/iwinfo_cli.c
+++ b/iwinfo_cli.c
@@ -744,10 +744,29 @@ static void print_countrylist(const struct iwinfo_ops *iw, const char *ifname)
}
}
+static void lookup_phy(const struct iwinfo_ops *iw, const char *section)
+{
+ char buf[IWINFO_BUFSIZE];
+
+ if (!iw->lookup_phy)
+ {
+ fprintf(stderr, "Not supported\n");
+ return;
+ }
+
+ if (iw->lookup_phy(section, buf))
+ {
+ fprintf(stderr, "Phy not found\n");
+ return;
+ }
+
+ printf("%s\n", buf);
+}
+
int main(int argc, char **argv)
{
- int i;
+ int i, rv = 0;
char *p;
const struct iwinfo_ops *iw;
glob_t globbuf;
@@ -762,6 +781,7 @@ int main(int argc, char **argv)
" iwinfo <device> freqlist\n"
" iwinfo <device> assoclist\n"
" iwinfo <device> countrylist\n"
+ " iwinfo <backend> phyname <section>\n"
);
return 1;
@@ -791,49 +811,78 @@ int main(int argc, char **argv)
return 0;
}
- iw = iwinfo_backend(argv[1]);
-
- if (!iw)
+ if (argc > 3)
{
- fprintf(stderr, "No such wireless device: %s\n", argv[1]);
- return 1;
- }
+ iw = iwinfo_backend_by_name(argv[1]);
- for (i = 2; i < argc; i++)
+ if (!iw)
+ {
+ fprintf(stderr, "No such wireless backend: %s\n", argv[1]);
+ rv = 1;
+ }
+ else
+ {
+ switch (argv[2][0])
+ {
+ case 'p':
+ lookup_phy(iw, argv[3]);
+ break;
+
+ default:
+ fprintf(stderr, "Unknown command: %s\n", argv[2]);
+ rv = 1;
+ }
+ }
+ }
+ else
{
- switch(argv[i][0])
+ iw = iwinfo_backend(argv[1]);
+
+ if (!iw)
{
- case 'i':
- print_info(iw, argv[1]);
- break;
+ fprintf(stderr, "No such wireless device: %s\n", argv[1]);
+ rv = 1;
+ }
+ else
+ {
+ for (i = 2; i < argc; i++)
+ {
+ switch(argv[i][0])
+ {
+ case 'i':
+ print_info(iw, argv[1]);
+ break;
- case 's':
- print_scanlist(iw, argv[1]);
- break;
+ case 's':
+ print_scanlist(iw, argv[1]);
+ break;
- case 't':
- print_txpwrlist(iw, argv[1]);
- break;
+ case 't':
+ print_txpwrlist(iw, argv[1]);
+ break;
- case 'f':
- print_freqlist(iw, argv[1]);
- break;
+ case 'f':
+ print_freqlist(iw, argv[1]);
+ break;
- case 'a':
- print_assoclist(iw, argv[1]);
- break;
+ case 'a':
+ print_assoclist(iw, argv[1]);
+ break;
- case 'c':
- print_countrylist(iw, argv[1]);
- break;
+ case 'c':
+ print_countrylist(iw, argv[1]);
+ break;
- default:
- fprintf(stderr, "Unknown command: %s\n", argv[i]);
- return 1;
+ default:
+ fprintf(stderr, "Unknown command: %s\n", argv[i]);
+ rv = 1;
+ }
+ }
}
}
+out:
iwinfo_finish();
- return 0;
+ return rv;
}