summaryrefslogtreecommitdiff
path: root/sbin/ancontrol
diff options
context:
space:
mode:
authorEric Jackson <ericj@cvs.openbsd.org>2001-04-16 07:51:02 +0000
committerEric Jackson <ericj@cvs.openbsd.org>2001-04-16 07:51:02 +0000
commit235573628dda37b2bf647ea37d195ddbd40eaadf (patch)
tree2b30c580c7a19c1a05017e00a4ec465cd4df90fa /sbin/ancontrol
parent310973b32d5b9078953dc4168c1efb457ca12c85 (diff)
check for 'i' before the getopt. (idea from freebsd)
this allows us to call the functions directly from the switch, which lets us now put all options on ONE command line, instead of separating them out into several command's. ok tholo@, deraadt@
Diffstat (limited to 'sbin/ancontrol')
-rw-r--r--sbin/ancontrol/ancontrol.c164
1 files changed, 54 insertions, 110 deletions
diff --git a/sbin/ancontrol/ancontrol.c b/sbin/ancontrol/ancontrol.c
index 527d36f833f..ae877e80e05 100644
--- a/sbin/ancontrol/ancontrol.c
+++ b/sbin/ancontrol/ancontrol.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ancontrol.c,v 1.13 2001/04/16 05:10:07 ericj Exp $ */
+/* $OpenBSD: ancontrol.c,v 1.14 2001/04/16 07:51:01 ericj Exp $ */
/*
* Copyright 1997, 1998, 1999
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
@@ -75,11 +75,11 @@ void an_dumpap __P((void));
void an_setconfig __P((int, void *));
void an_setssid __P((int, void *));
void an_setap __P((int, void *));
-void an_setspeed __P((int, void *));
-void an_readkeyinfo __P(());
+void an_setspeed __P((void *));
+void an_readkeyinfo __P((void));
#ifdef ANCACHE
-void an_zerocache __P(());
-void an_readcache __P(());
+void an_zerocache __P((void));
+void an_readcache __P((void));
#endif
void getsock __P((void));
static void usage __P((void));
@@ -127,9 +127,9 @@ int main __P((int, char **));
#define ACT_ENABLE_TX_KEY 36
#ifdef ANCACHE
-#define OPTIONS "a:b:c:d:e:f:i:j:k:l:m:n:o:p:r:s:t:v:w:ACIK:NQST:W:Z"
+#define OPTIONS "a:b:c:d:e:f:j:k:l:m:n:o:p:r:s:t:v:w:ACIK:NQST:W:Z"
#else
-#define OPTIONS "a:b:c:d:e:f:i:j:k:l:m:n:o:p:r:s:t:v:w:ACIK:NST:W:"
+#define OPTIONS "a:b:c:d:e:f:j:k:l:m:n:o:p:r:s:t:v:w:ACIK:NST:W:"
#endif /* ANCACHE */
int s; /* Global socket for ioctl's */
@@ -940,8 +940,7 @@ an_setconfig(act, arg)
}
void
-an_setspeed(act, arg)
- int act;
+an_setspeed(arg)
void *arg;
{
struct an_req areq;
@@ -1290,19 +1289,27 @@ main(argc, argv)
char *argv[];
{
int ch;
- int act = 0, ifspecified = 0;
int modifier = 0;
int print_stat = 0;
- void *arg = NULL;
/* Grab device name, if one is given. Default to "an0" */
- if (argc > 1 && argv[1][0] != '-') {
- strlcpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name));
- memcpy(&argv[1], &argv[2], argc * sizeof(char *));
- argc--;
- ifspecified = 1;
- } else
- strlcpy(ifr.ifr_name, "an0", sizeof(ifr.ifr_name));
+ opterr = 0;
+ ch = getopt(argc, argv, "i:");
+ if (ch == 'i') {
+ strlcpy(ifr.ifr_name, optarg, sizeof(ifr.ifr_name));
+ } else {
+ if (argc > 1 && argv[1][0] != '-') {
+ strlcpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name));
+ optind = 2;
+ } else {
+ strlcpy(ifr.ifr_name, "an0", sizeof(ifr.ifr_name));
+ optind = 1;
+ }
+ }
+ opterr = optreset =1;
+
+ /* Grab a socket to do our ioctl's */
+ getsock();
while ((ch = getopt(argc, argv, OPTIONS)) != -1) {
switch(ch) {
@@ -1316,8 +1323,7 @@ main(argc, argv)
print_stat |= STAT_DUMPCAPS;
break;
case 'K':
- act = ACT_SET_KEY_TYPE;
- arg = optarg;
+ an_setconfig(ACT_SET_KEY_TYPE, optarg);
break;
case 'N':
print_stat |= STAT_DUMPSSID;
@@ -1329,144 +1335,116 @@ main(argc, argv)
print_stat |= STAT_DUMPSTATS;
break;
case 'W':
- act = ACT_ENABLE_WEP;
- arg = optarg;
+ an_setconfig(ACT_ENABLE_WEP, optarg);
break;
#ifdef ANCACHE
case 'Q':
- act = ACT_DUMPCACHE;
+ an_readcache();
break;
case 'Z':
- act = ACT_ZEROCACHE;
+ an_zerocache();
break;
#endif /* ANCACHE */
case 'a':
switch (modifier) {
case 0:
case 1:
- act = ACT_SET_AP1;
+ an_setap(ACT_SET_AP1, optarg);
break;
case 2:
- act = ACT_SET_AP2;
+ an_setap(ACT_SET_AP2, optarg);
break;
case 3:
- act = ACT_SET_AP3;
+ an_setap(ACT_SET_AP3, optarg);
break;
case 4:
- act = ACT_SET_AP4;
+ an_setap(ACT_SET_AP4, optarg);
break;
default:
errx(1, "bad modifier %d", modifier);
}
- arg = optarg;
break;
case 'b':
- act = ACT_SET_BEACON_PERIOD;
- arg = optarg;
+ an_setconfig(ACT_SET_BEACON_PERIOD, optarg);
break;
case 'c':
- act = ACT_SET_FREQ;
- arg = optarg;
+ an_setconfig(ACT_SET_FREQ, optarg);
break;
case 'd':
switch (modifier) {
case 0:
- act = ACT_SET_DIVERSITY_RX;
+ an_setconfig(ACT_SET_DIVERSITY_RX, optarg);
break;
case 1:
- act = ACT_SET_DIVERSITY_TX;
+ an_setconfig(ACT_SET_DIVERSITY_RX, optarg);
break;
default:
errx(1, "must specify RX or TX diversity");
}
- arg = optarg;
break;
case 'e':
- act = ACT_SET_KEYS;
- arg = optarg;
+ an_enable_tx_key(optarg);
break;
case 'f':
- act = ACT_SET_FRAG_THRESH;
- arg = optarg;
- break;
- case 'i':
- if (!ifspecified)
- strlcpy(ifr.ifr_name, optarg, sizeof(ifr.ifr_name));
+ an_setconfig(ACT_SET_FRAG_THRESH, optarg);
break;
case 'j':
- act = ACT_SET_NETJOIN;
- arg = optarg;
+ an_setconfig(ACT_SET_NETJOIN, optarg);
break;
case 'k':
- act = ACT_SET_KEYS;
- arg = optarg;
+ an_setkeys(optarg, modifier);
break;
case 'l':
- act = ACT_SET_MYNAME;
- arg = optarg;
+ an_setconfig(ACT_SET_MYNAME, optarg);
break;
case 'm':
- act = ACT_SET_MAC;
- arg = optarg;
+ an_setconfig(ACT_SET_MAC, optarg);
break;
case 'n':
switch (modifier) {
case 0:
case 1:
- act = ACT_SET_SSID1;
+ an_setssid(ACT_SET_SSID1, optarg);
break;
case 2:
- act = ACT_SET_SSID2;
- break;
+ an_setssid(ACT_SET_SSID2, optarg);
+ break;
case 3:
- act = ACT_SET_SSID3;
+ an_setssid(ACT_SET_SSID3, optarg);
break;
default:
errx(1, "bad modifier %d", modifier);
}
- arg = optarg;
break;
case 'o':
- act = ACT_SET_OPMODE;
- arg = optarg;
+ an_setconfig(ACT_SET_OPMODE, optarg);
break;
case 'p':
- act = ACT_SET_TXPWR;
- arg = optarg;
+ an_setconfig(ACT_SET_TXPWR, optarg);
break;
case 'q':
- act = ACT_SET_RTS_RETRYLIM;
- arg = optarg;
+ an_setconfig(ACT_SET_RTS_RETRYLIM, optarg);
break;
case 'r':
- act = ACT_SET_RTS_THRESH;
- arg = optarg;
+ an_setconfig(ACT_SET_RTS_THRESH, optarg);
break;
case 's':
- act = ACT_SET_PWRSAVE;
- arg = optarg;
+ an_setconfig(ACT_SET_PWRSAVE, optarg);
break;
case 't':
- act = ACT_SET_TXRATE;
- arg = optarg;
+ an_setspeed(optarg);
break;
case 'v':
modifier = atoi(optarg);
break;
case 'w':
- act = ACT_SET_WAKE_DURATION;
- arg = optarg;
+ an_setconfig(ACT_SET_WAKE_DURATION, optarg);
break;
default:
usage();
}
}
- if (!print_stat && !act)
- usage();
-
- /* Grab a socket to do our ioctl's */
- getsock();
/*
* Show configuration status first. Do not allow
@@ -1490,40 +1468,6 @@ main(argc, argv)
exit(0);
}
- switch(act) {
- case ACT_SET_SSID1:
- case ACT_SET_SSID2:
- case ACT_SET_SSID3:
- an_setssid(act, arg);
- break;
- case ACT_SET_AP1:
- case ACT_SET_AP2:
- case ACT_SET_AP3:
- case ACT_SET_AP4:
- an_setap(act, arg);
- break;
- case ACT_SET_TXRATE:
- an_setspeed(act, arg);
- break;
-#ifdef ANCACHE
- case ACT_ZEROCACHE:
- an_zerocache();
- break;
- case ACT_DUMPCACHE:
- an_readcache();
- break;
-#endif
- case ACT_SET_KEYS:
- an_setkeys(arg, modifier);
- break;
- case ACT_ENABLE_TX_KEY:
- an_enable_tx_key(arg);
- break;
- default:
- an_setconfig(act, arg);
- break;
- }
-
/* Close our socket */
if (s)
close(s);