summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2002-04-01 20:43:09 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2002-04-01 20:43:09 +0000
commit1f66d416fde867e9d94a323c8dcc59cf7474dca5 (patch)
treed71b44e2601df47225c7c06243f0c93efad16908
parent246c86203a49af3f344ad123f32dc598d4a9a29e (diff)
Also accept "adhoc" (or "ad-hoc"), "bss", and "hostap" instead of
numbers for -p option.
-rw-r--r--sbin/wicontrol/wicontrol.88
-rw-r--r--sbin/wicontrol/wicontrol.c39
2 files changed, 36 insertions, 11 deletions
diff --git a/sbin/wicontrol/wicontrol.8 b/sbin/wicontrol/wicontrol.8
index 0e90a4d5d59..ebd3440dd15 100644
--- a/sbin/wicontrol/wicontrol.8
+++ b/sbin/wicontrol/wicontrol.8
@@ -1,4 +1,4 @@
-.\" $OpenBSD: wicontrol.8,v 1.28 2002/04/01 07:00:34 deraadt Exp $
+.\" $OpenBSD: wicontrol.8,v 1.29 2002/04/01 20:43:08 millert Exp $
.\"
.\" Copyright (c) 1997, 1998, 1999
.\" Bill Paul <wpaul@ctr.columbia.edu> All rights reserved.
@@ -199,6 +199,12 @@ for a specified interface.
The legal values for
.Ar port type
are 1 (BSS mode), 3 (ad-hoc mode) and 6 (hostap mode).
+The symbolic values
+.Dq bss ,
+.Dq adhoc
+and
+.Dq hostap
+may also be used instead of numeric values.
In ad-hoc mode, the station can communicate directly with any other
stations within direct radio range (provided that they are also
operating in ad-hoc mode).
diff --git a/sbin/wicontrol/wicontrol.c b/sbin/wicontrol/wicontrol.c
index a8ca4a9b875..13f7f8766cb 100644
--- a/sbin/wicontrol/wicontrol.c
+++ b/sbin/wicontrol/wicontrol.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wicontrol.c,v 1.28 2002/04/01 19:50:44 millert Exp $ */
+/* $OpenBSD: wicontrol.c,v 1.29 2002/04/01 20:43:08 millert Exp $ */
/*
* Copyright (c) 1997, 1998, 1999
@@ -69,7 +69,7 @@
static const char copyright[] = "@(#) Copyright (c) 1997, 1998, 1999\
Bill Paul. All rights reserved.";
static const char rcsid[] =
- "@(#) $OpenBSD: wicontrol.c,v 1.28 2002/04/01 19:50:44 millert Exp $";
+ "@(#) $OpenBSD: wicontrol.c,v 1.29 2002/04/01 20:43:08 millert Exp $";
#endif
void wi_getval(char *, struct wi_req *);
@@ -89,7 +89,8 @@ void wi_printcardid(struct wi_req *, int);
void wi_dumpstats(char *);
void wi_dumpstations(char *);
void usage(void);
-void printb(char *s, unsigned short v, char *bits);
+void printb(char *, unsigned short, char *);
+char *portid(char *);
void
wi_getval(iface, wreq)
@@ -778,7 +779,10 @@ main(argc, argv)
"a:c:d:e:f:hi:k:lm:n:op:q:r:s:t:v:A:M:S:P:R:T:")) != -1) {
for (p = 0; ch && wi_opt[p].key; p++)
if (ch == wi_opt[p].key) {
- wi_opt[p].optarg = optarg;
+ if (ch == 'p' && !isdigit(*optarg))
+ wi_opt[p].optarg = portid(optarg);
+ else
+ wi_opt[p].optarg = optarg;
if (ch == 'T') /* key 1-4/0-3 kludge */
(*optarg)--;
dumpinfo = ch = 0;
@@ -786,13 +790,13 @@ main(argc, argv)
switch(ch) {
case 0:
break;
- case 'o':
- dumpstats ++;
- break;
case 'i':
if (!ifspecified)
iface = optarg;
break;
+ case 'o':
+ dumpstats++;
+ break;
case 'l':
dumpstations++;
break;
@@ -814,9 +818,6 @@ main(argc, argv)
}
}
- if (iface == NULL)
- usage();
-
for (p = 0; wi_opt[p].key; p++)
if (wi_opt[p].optarg != NULL)
wi_opt[p].function(iface, wi_opt[p].wi_code,
@@ -868,3 +869,21 @@ printb(s, v, bits)
putchar('>');
}
}
+
+char *
+portid(char *name)
+{
+ char *id;
+
+ if (strcasecmp(name, "bss") == 0)
+ id = "1";
+ else if (strcasecmp(name, "adhoc") == 0 ||
+ strcasecmp(name, "ad-hoc") == 0)
+ id = "3";
+ else if (strcasecmp(name, "hostap") == 0)
+ id = "6";
+ else
+ errx(1, "unknown port type %s", name);
+
+ return(id);
+}