Finish repo move arlconfig -> arlcontrol.
This commit is contained in:
parent
5dc6beb6a4
commit
ac4a1eaf40
@ -10,7 +10,7 @@ SUBDIR= ac \
|
||||
ancontrol \
|
||||
${_apm} \
|
||||
${_apmd} \
|
||||
${_arlconfig} \
|
||||
${_arlcontrol} \
|
||||
arp \
|
||||
${_asf} \
|
||||
${_atm} \
|
||||
@ -249,7 +249,7 @@ _asf= asf
|
||||
_bluetooth= bluetooth
|
||||
.endif
|
||||
.if ${MACHINE} == "i386"
|
||||
_arlconfig= arlconfig
|
||||
_arlcontrol= arlcontrol
|
||||
_boot0cfg= boot0cfg
|
||||
.endif
|
||||
.if ${MACHINE} == "pc98"
|
||||
|
@ -1,159 +0,0 @@
|
||||
.\" Copyright (c) 2004
|
||||
.\" <ran@styx.aic.net>. All right reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by <ran@styx.aic.net>
|
||||
.\" 4. Neither the name of the author nor the names of any co-contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY ran@styx.aic.net AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL <ran@styx.aic.net> OR THE VOICES IN HIS
|
||||
.\" HEAD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
.\" THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd March 15, 2004
|
||||
.Dt ARLCONFIG 8 i386
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm arlconfig
|
||||
.Nd configure Aironet Arlan 655 device
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Ar iface
|
||||
.Nm
|
||||
.Ar iface Cm country Ar country ( Cm 9-15 )
|
||||
.Nm
|
||||
.Ar iface Cm priority Ar priority ( Cm normal, high, highest )
|
||||
.Nm
|
||||
.Ar iface Cm txretry Ar txretry
|
||||
.Nm
|
||||
.Ar iface Cm stat
|
||||
.Nm
|
||||
.Ar iface Cm quality
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility controls the operation of Aironet Arlan 655 wireless networking
|
||||
devices via the
|
||||
.Xr arl 4
|
||||
driver.
|
||||
Most of the parameters that can be changed are related to the
|
||||
Aironet protocol which the Aironet Arlan 655 card implements.
|
||||
The
|
||||
.Nm
|
||||
utility can also be used to view the current NIC status, configuration
|
||||
and to dump out the values of the card's statistics counters.
|
||||
.Pp
|
||||
The
|
||||
.Ar iface
|
||||
argument given to
|
||||
.Nm
|
||||
should be the logical interface name associated with the Aironet Arlan 655
|
||||
device
|
||||
.Li ( arl0 , arl1 ,
|
||||
etc.) and must be specified.
|
||||
.Sh OPTIONS
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Ar iface
|
||||
Display current settings of specified wireless interface.
|
||||
This retrieves current card settings from the driver and prints
|
||||
them out.
|
||||
.It Ar iface Cm country Ar country ( Cm 9-15 )
|
||||
Chose
|
||||
.Ar country , channel
|
||||
parameters that depend on the
|
||||
.Ar country
|
||||
according to the following table:
|
||||
.Bl -column ".Em Country" ".Em Channel" ".Em MHz" -offset indent indent
|
||||
.Em "Country Ch_Set MHz"
|
||||
.It "North America" Ta 9 Ta "2412, 2427, 2442, 2457, 2465"
|
||||
.It "U.S.A " Ta 9 Ta "2412, 2427, 2442, 2457, 2465"
|
||||
.It "Canada " Ta 9 Ta "2412, 2427, 2442, 2457, 2465"
|
||||
.It "Mexico " Ta 9 Ta "2412, 2427, 2442, 2457, 2465"
|
||||
.IT "New Zealand " Ta 9 Ta "2412, 2427, 2442, 2457, 2465"
|
||||
.It "E.T.S.I " Ta 10 Ta "2412, 2427, 2442, 2457, 2472"
|
||||
.It "Japan " Ta 11 Ta "2484"
|
||||
.It "France " Ta 12 Ta "2457, 2465, 2475"
|
||||
.It "Australia " Ta 13 Ta "2411, 2425, 2439"
|
||||
.It "Germany " Ta 14 Ta "2427, 2442, 2457"
|
||||
.It "U.K.(MPT1349)" Ta 15 Ta "2460"
|
||||
.It "U.K. " Ta 15 Ta "2460"
|
||||
.It "Spain " Ta 15 Ta "2460"
|
||||
.El
|
||||
.It Ar iface Cm priority Ar priority ( Cm normal, high, highest )
|
||||
Use the
|
||||
.Ar priority
|
||||
parameter to set the priority of the Arlan 655 Radio Media Access Control
|
||||
the values are
|
||||
.Cm normal , high
|
||||
or
|
||||
.Cm highest .
|
||||
The higher the priority set, the more likely this unit will be first
|
||||
to successfully transmit a packet when multiple units are trying
|
||||
to transmit at the same time.
|
||||
.Pp
|
||||
The percentage of units on your network that you set to values other than
|
||||
.Dq normal
|
||||
should be kept small - 10 percent or less.
|
||||
.It Ar iface Cm txretry Ar txretry
|
||||
Set transmit retries. Default is 0.
|
||||
.It Ar iface Cm stat
|
||||
Print internal Arlan 655 statistics block.
|
||||
.It Ar iface Cm quality
|
||||
Display the cached signal level and quality maintained by the
|
||||
.Xr arl 4
|
||||
driver.
|
||||
The driver retains information about quality and level for packets
|
||||
received from different hosts.
|
||||
Also the driver extracts values from ACK packets.
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal -offset indent
|
||||
arlconfig arl0 country 11 priority high
|
||||
arlconfig arl0 quality
|
||||
arlconfig arl0 stat
|
||||
arlconfig arl0
|
||||
.Pp
|
||||
You can configure the Arlan 655 card from /etc/start_if.arl0.
|
||||
For example:
|
||||
.Pp
|
||||
#!/bin/sh
|
||||
/sbin/arlconfig country 9 priority highest
|
||||
.Sh SEE ALSO
|
||||
.Xr arl 4 ,
|
||||
.Xr "Arlan 655 ISA Wireless LAN Client Card User Guide" .
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
utility first appeared in
|
||||
.Fx 5.3 .
|
||||
.Sh BUGS
|
||||
Aironet Arlan 640 bridges and Arlan 630 access points don't understand
|
||||
country codes other than 9.
|
||||
.Sh AUTHORS
|
||||
The
|
||||
.Nm
|
||||
utility was written by
|
||||
.Aq ran@styx.aic.net .
|
||||
This manpage was written by
|
||||
.An Yuri Kurenkov Aq y.kurenkov@init.ru .
|
@ -1,431 +0,0 @@
|
||||
/*
|
||||
* $RISS: if_arl/arlconfig/arlconfig.c,v 1.5 2004/03/16 05:00:21 count Exp $
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include <dev/arl/if_arlreg.h>
|
||||
|
||||
struct freq_list {
|
||||
short fr_no;
|
||||
char* name;
|
||||
};
|
||||
|
||||
struct freq_list freq_list_1[] = {
|
||||
{ 0, "908.50" },
|
||||
{ 1, "910.06" },
|
||||
{ 2, "915.52" },
|
||||
{ 3, "915.00" },
|
||||
{ 4, "917.83" },
|
||||
{ 5, "919.22" },
|
||||
{ 6, "922.26" },
|
||||
{ 7, "911.45" },
|
||||
{ 8, "915.00" },
|
||||
{ 9, "918.55" },
|
||||
{ 10,"915.00" },
|
||||
{ 11,"915.00" }
|
||||
};
|
||||
|
||||
struct freq_list freq_list_6[] = {
|
||||
{ 0, "920.31" },
|
||||
{ 1, "920.33" },
|
||||
{ 2, "921.55" },
|
||||
{ 3, "922.17" },
|
||||
{ 4, "922.79" },
|
||||
{ 5, "921.46" },
|
||||
{ 6, "921.55" }
|
||||
};
|
||||
|
||||
struct freq_list freq_list_9[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2412" },
|
||||
{ 2, "2427" },
|
||||
{ 3, "2442" },
|
||||
{ 4, "2457" },
|
||||
{ 5, "2465" }
|
||||
};
|
||||
|
||||
|
||||
struct freq_list freq_list_10[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2412" },
|
||||
{ 2, "2427" },
|
||||
{ 3, "2442" },
|
||||
{ 4, "2457" },
|
||||
{ 5, "2472" }
|
||||
};
|
||||
|
||||
struct freq_list freq_list_11[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2484" }
|
||||
};
|
||||
|
||||
struct freq_list freq_list_12[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2457" },
|
||||
{ 2, "2465" },
|
||||
{ 3, "2472" },
|
||||
};
|
||||
|
||||
struct freq_list freq_list_13[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2411" },
|
||||
{ 2, "2425" },
|
||||
{ 3, "2439" }
|
||||
};
|
||||
|
||||
struct freq_list freq_list_14[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2427" },
|
||||
{ 2, "2442" },
|
||||
{ 3, "2457" }
|
||||
};
|
||||
|
||||
struct freq_list freq_list_15[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "2460" }
|
||||
};
|
||||
|
||||
#define MAXFREQ(a) sizeof(a)/sizeof(struct freq_list)
|
||||
|
||||
struct rate_list {
|
||||
short rate_no;
|
||||
char* name;
|
||||
};
|
||||
|
||||
struct rate_list rate_list_2400[] = {
|
||||
{ 0, "Bad" },
|
||||
{ 1, "354" },
|
||||
{ 2, "512" },
|
||||
{ 3, "1000" },
|
||||
{ 4, "2000" }
|
||||
};
|
||||
|
||||
struct radio_type {
|
||||
int id;
|
||||
char* name;
|
||||
} radio_type_list [] = {
|
||||
{ 0, "No EPROM" },
|
||||
{ 1, "092/094" },
|
||||
{ 2, "020" },
|
||||
{ 3, "092A" },
|
||||
{ 4, "020B" },
|
||||
{ 5, "095" },
|
||||
{ 6, "024" },
|
||||
{ 7, "025B" },
|
||||
{ 8, "024B" },
|
||||
{ 9, "024C" },
|
||||
{10, "025C" },
|
||||
{11, "024-1A" },
|
||||
{12, "025-1A" },
|
||||
{13, "Other" }
|
||||
};
|
||||
|
||||
static struct ch_list {
|
||||
short chan;
|
||||
char* fr;
|
||||
char* country;
|
||||
struct rate_list* rate;
|
||||
struct freq_list* freq;
|
||||
int max_freq;
|
||||
} CHSET[] = {
|
||||
{ 0, 0, 0, 0, 0, 0 },
|
||||
{ 1, "900 Mhz", "Canada, U.S.A., Mexico", 0, freq_list_1, MAXFREQ(freq_list_1) },
|
||||
{ 2, 0, 0, 0, 0, 0 },
|
||||
{ 3, 0, 0, 0, 0, 0 },
|
||||
{ 4, 0, 0, 0, 0, 0 },
|
||||
{ 5, 0, 0, 0, 0, 0 },
|
||||
{ 6, "900 Mhz", "Australia", 0, freq_list_6, MAXFREQ(freq_list_6) },
|
||||
{ 7, 0, 0, 0, 0, 0 },
|
||||
{ 8, 0, 0, 0, 0, 0 },
|
||||
{ 9, "2400 Mhz", "North America", rate_list_2400, freq_list_9, MAXFREQ(freq_list_9) },
|
||||
{ 10, "2400 Mhz", "E.T.S.I", rate_list_2400, freq_list_10, MAXFREQ(freq_list_10) },
|
||||
{ 11, "2400 Mhz", "Japan", rate_list_2400, freq_list_11, MAXFREQ(freq_list_11) },
|
||||
{ 12, "2400 Mhz", "France", rate_list_2400, freq_list_12, MAXFREQ(freq_list_12) },
|
||||
{ 13, "2400 Mhz", "Australia", rate_list_2400, freq_list_13, MAXFREQ(freq_list_13) },
|
||||
{ 14, "2400 Mhz", "Germany", rate_list_2400, freq_list_14, MAXFREQ(freq_list_14) },
|
||||
{ 15, "2400 Mhz", "U.K.(MPT1349),Spain", rate_list_2400, freq_list_15, MAXFREQ(freq_list_15) }
|
||||
};
|
||||
|
||||
char* registrationMode[] = {
|
||||
"NON-TMA",
|
||||
"TMA",
|
||||
"PSP"
|
||||
};
|
||||
|
||||
char* priorityList[] = {
|
||||
"normal",
|
||||
"high",
|
||||
"highest"
|
||||
};
|
||||
|
||||
void
|
||||
usage()
|
||||
{
|
||||
const char *progname = getprogname();
|
||||
|
||||
#if 0
|
||||
fprintf(stderr, "\nArlan configuration utility.\n\n");
|
||||
#endif
|
||||
fprintf(stderr, "Usage: %s <ifname> [<param> <value> ...]\n", progname);
|
||||
fprintf(stderr, "\t<ifname>\tArlan interface name.\n");
|
||||
fprintf(stderr, "\t<param>\t\tParameter name (see below).\n");
|
||||
fprintf(stderr, "\t<value>\t\tNew value for parameter.\n");
|
||||
fprintf(stderr, "Parameter name:\t\tValue:\n");
|
||||
fprintf(stderr, "\tcountry\t\tset Country (9-15)\n");
|
||||
fprintf(stderr, "\tpriority\tset Priority (normal, high, highest)\n");
|
||||
fprintf(stderr, "\ttxretry\t\tset Arlan Tx retry.\n");
|
||||
fprintf(stderr, "or: %s <ifname> stat\n", progname);
|
||||
fprintf(stderr, "\tprint internal arlan statistics block\n");
|
||||
#ifdef ARLCACHE
|
||||
fprintf(stderr,"or: %s <ifname> quality\n", progname);
|
||||
fprintf(stderr,"\tprint receive packet level and quality\n");
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void
|
||||
print_al(struct arl_cfg_param *arl_io)
|
||||
{
|
||||
printf("Arlan-655(IC2000) type 0x%x v%d.%d, radio module type %s\n",
|
||||
arl_io->hardwareType,
|
||||
arl_io->majorHardwareVersion,
|
||||
arl_io->minorHardwareVersion,
|
||||
(arl_io->radioModule < 13) ?
|
||||
radio_type_list[arl_io->radioModule].name : "Unknown" );
|
||||
printf("\tname %s, sid 0x%06x, mode %s, num tx retry %d\n",
|
||||
arl_io->name,
|
||||
*(int *)arl_io->sid,
|
||||
(arl_io->registrationMode < 3) ?
|
||||
registrationMode[arl_io->registrationMode]:"Unknown",
|
||||
arl_io->txRetry );
|
||||
printf("\tchannel set %d, %s, %s\n",
|
||||
arl_io->channelSet,
|
||||
CHSET[arl_io->channelSet].fr,
|
||||
CHSET[arl_io->channelSet].country);
|
||||
printf("\tfrequency %s Mhz, bitrate %s kb/s, priority %s, receive mode %d\n",
|
||||
(CHSET[arl_io->channelSet].freq &&
|
||||
CHSET[arl_io->channelSet].max_freq > arl_io->channelNumber) ?
|
||||
CHSET[arl_io->channelSet].freq[arl_io->channelNumber].name :
|
||||
"unknown",
|
||||
(CHSET[arl_io->channelSet].rate) ?
|
||||
CHSET[arl_io->channelSet].rate[arl_io->spreadingCode].name :
|
||||
"unknown",
|
||||
arl_io->priority <= 2 ?
|
||||
priorityList[arl_io->priority] : "unknown",
|
||||
arl_io->receiveMode);
|
||||
printf("\tether %s",
|
||||
(char *)ether_ntoa((struct ether_addr *)arl_io->lanCardNodeId));
|
||||
printf(" registered to %s\n",
|
||||
(char *)ether_ntoa((struct ether_addr *)arl_io->specifiedRouter));
|
||||
}
|
||||
|
||||
void
|
||||
print_stb( struct arl_stats stb )
|
||||
{
|
||||
printf("Arlan internal statistics block\n\n");
|
||||
printf("%8u\tdatagrams transmitted\n",
|
||||
stb.numDatagramsTransmitted);
|
||||
printf("%8u\tre-transmitted\n",
|
||||
stb.numReTransmissions);
|
||||
printf("%8u\tframes discarded internally in a router\n",
|
||||
stb.numFramesDiscarded);
|
||||
printf("%8u\tdatagrams received\n",
|
||||
stb.numDatagramsReceived);
|
||||
printf("%8u\tduplicate received frame\n",
|
||||
stb.numDuplicateReceivedFrames);
|
||||
printf("%8u\tdatagrams discarded due to unavailable mail box buffer\n",
|
||||
stb.numDatagramsDiscarded);
|
||||
printf("%8d\tmaximum of re-transmissions datagram\n",
|
||||
stb.maxNumReTransmitDatagram);
|
||||
printf("%8d\tmaximum of re-transmissions frame\n",
|
||||
stb.maxNumReTransmitFrames);
|
||||
printf("%8d\tmaximum of consecutive duplicate received frames\n",
|
||||
stb.maxNumConsecutiveDuplicateFrames);
|
||||
printf("%8u\tbytes transmitted\n",
|
||||
stb.numBytesTransmitted);
|
||||
printf("%8u\tbytes received\n",
|
||||
stb.numBytesReceived);
|
||||
printf("%8u\tCRC errors\n",
|
||||
stb.numCRCErrors);
|
||||
printf("%8u\tlength errors\n",
|
||||
stb.numLengthErrors);
|
||||
printf("%8u\tabort errors\n",
|
||||
stb.numAbortErrors);
|
||||
printf("%8u\tTX underuns\n",
|
||||
stb.numTXUnderruns);
|
||||
printf("%8u\tRX overruns\n",
|
||||
stb.numRXOverruns);
|
||||
printf("%8u\tHold Offs (channel tested busy, tx delayed)\n",
|
||||
stb.numHoldOffs);
|
||||
printf("%8u\tframes transmitted\n",
|
||||
stb.numFramesTransmitted);
|
||||
printf("%8u\tframes received\n",
|
||||
stb.numFramesReceived);
|
||||
printf("%8u\treceive frames lost due unavailable buffer\n",
|
||||
stb.numReceiveFramesLost);
|
||||
printf("%8u\tRX buffer overflows \n",
|
||||
stb.numRXBufferOverflows);
|
||||
printf("%8u\tframes discarded due to Address mismatch\n",
|
||||
stb.numFramesDiscardedAddrMismatch);
|
||||
printf("%8u\tframes discarded due to SID mismatch\n",
|
||||
stb.numFramesDiscardedSIDMismatch);
|
||||
printf("%8u\tpolls transmitted\n",
|
||||
stb.numPollsTransmistted);
|
||||
printf("%8u\tpoll acknowledges received\n",
|
||||
stb.numPollAcknowledges);
|
||||
printf("%8u\tstatus vector timeout\n",
|
||||
stb.numStatusVectorTimeouts);
|
||||
printf("%8u\tNACK packets received\n",
|
||||
stb.numNACKReceived);
|
||||
}
|
||||
|
||||
#ifdef ARLCACHE
|
||||
void
|
||||
print_qlt(struct arl_sigcache *qlt)
|
||||
{
|
||||
int i;
|
||||
u_int8_t zero[6] = {0, 0, 0, 0, 0, 0};
|
||||
|
||||
for (i = 0; i < MAXARLCACHE && bcmp(qlt->macsrc, zero, 6); i++) {
|
||||
printf("[%d]:", i+1);
|
||||
printf(" %02x:%02x:%02x:%02x:%02x:%02x,",
|
||||
qlt->macsrc[0]&0xff,
|
||||
qlt->macsrc[1]&0xff,
|
||||
qlt->macsrc[2]&0xff,
|
||||
qlt->macsrc[3]&0xff,
|
||||
qlt->macsrc[4]&0xff,
|
||||
qlt->macsrc[5]&0xff);
|
||||
printf(" rx lvl/qlty: %d/%d,", qlt->level[ARLCACHE_RX],
|
||||
qlt->quality[ARLCACHE_RX]);
|
||||
printf(" tx lvl/qlty: %d/%d", qlt->level[ARLCACHE_TX],
|
||||
qlt->quality[ARLCACHE_TX]);
|
||||
printf("\n");
|
||||
qlt++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct ifreq ifr;
|
||||
struct arl_req arl_io;
|
||||
struct ether_addr *ea;
|
||||
struct arl_stats stb;
|
||||
struct arl_sigcache qlt[MAXARLCACHE];
|
||||
int sd, argind, val = -1;
|
||||
long val2;
|
||||
char *param, *value, *value2;
|
||||
|
||||
if (argc < 2)
|
||||
usage();
|
||||
|
||||
sd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (sd < 0)
|
||||
err(1,"socket");
|
||||
strncpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name));
|
||||
ifr.ifr_addr.sa_family = AF_INET;
|
||||
bzero(&arl_io, sizeof(arl_io));
|
||||
ifr.ifr_data = (caddr_t)&arl_io;
|
||||
|
||||
if (argc == 2) {
|
||||
if (ioctl(sd, SIOCGARLALL, (caddr_t)&ifr))
|
||||
err(1,"Get ALL");
|
||||
print_al(&arl_io.cfg);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (argc == 3) {
|
||||
if (!strcasecmp(argv[2], "stat")) {
|
||||
strncpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name));
|
||||
ifr.ifr_addr.sa_family = AF_INET;
|
||||
ifr.ifr_data = (caddr_t)&stb;
|
||||
if (ioctl(sd, SIOCGARLSTB, (caddr_t)&ifr))
|
||||
err(1,"Get STB");
|
||||
print_stb(stb);
|
||||
exit(0);
|
||||
}
|
||||
#ifdef ARLCACHE
|
||||
if (!strcasecmp( argv[2],"quality")) {
|
||||
printf("\n");
|
||||
strncpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name));
|
||||
ifr.ifr_addr.sa_family = AF_INET;
|
||||
ifr.ifr_data = (caddr_t)qlt;
|
||||
if (ioctl(sd, SIOCGARLQLT, (caddr_t)&ifr))
|
||||
err(1,"Get QLT");
|
||||
print_qlt(qlt);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
arl_io.what_set = 0;
|
||||
|
||||
for (argind = 2; argind < argc; argind += 2) {
|
||||
param = argv[argind];
|
||||
value = argv[argind+1];
|
||||
val = -1;
|
||||
|
||||
if (!strcasecmp(param, "priority")) {
|
||||
if (!strcasecmp(value, "normal"))
|
||||
val = 0;
|
||||
else if (!strcasecmp(value, "high"))
|
||||
val = 1;
|
||||
else if (!strcasecmp(value, "highest"))
|
||||
val = 2;
|
||||
if (val == -1)
|
||||
err( 1, "Bad priority - %s", value);
|
||||
arl_io.cfg.priority = val;
|
||||
arl_io.what_set |= ARLAN_SET_priority;
|
||||
}
|
||||
|
||||
if (!strcasecmp(param, "parent")) {
|
||||
if ((ea = (struct ether_addr*) ether_aton(value)) == NULL)
|
||||
err (1, "Bad parent's MAC - %s", value);
|
||||
for (val = 0; val < 6; val++) {
|
||||
arl_io.cfg.specifiedRouter[val] =
|
||||
(int) ea->octet[val];
|
||||
}
|
||||
arl_io.what_set |= ARLAN_SET_specifiedRouter;
|
||||
}
|
||||
|
||||
if (!strcasecmp(param, "country")) {
|
||||
arl_io.cfg.channelSet = atoi(value);
|
||||
arl_io.what_set |= ARLAN_SET_channelSet;
|
||||
}
|
||||
|
||||
if (!strcasecmp(param, "txretry")) {
|
||||
arl_io.cfg.txRetry = atoi(value);
|
||||
arl_io.what_set |= ARLAN_SET_txRetry;
|
||||
}
|
||||
}
|
||||
|
||||
if (arl_io.what_set) {
|
||||
if (ioctl(sd, SIOCSARLALL, (caddr_t)&ifr))
|
||||
err (1, "Set ALL" );
|
||||
if (ioctl(sd, SIOCGARLALL, (caddr_t)&ifr))
|
||||
err (1, "Get ALL");
|
||||
print_al(&arl_io.cfg);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@ -3,9 +3,9 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PROG= arlconfig
|
||||
SRCS= arlconfig.c
|
||||
PROG= arlcontrol
|
||||
SRCS= arlcontrol.c
|
||||
CFLAGS= -I${.CURDIR}/../../sys -DARLCACHE
|
||||
MAN= arlconfig.8
|
||||
MAN= arlcontrol.8
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -34,7 +34,7 @@
|
||||
.Dt ARLCONFIG 8 i386
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm arlconfig
|
||||
.Nm arlcontrol
|
||||
.Nd configure Aironet Arlan 655 device
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
@ -129,16 +129,16 @@ Also the driver extracts values from ACK packets.
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal -offset indent
|
||||
arlconfig arl0 country 11 priority high
|
||||
arlconfig arl0 quality
|
||||
arlconfig arl0 stat
|
||||
arlconfig arl0
|
||||
arlcontrol arl0 country 11 priority high
|
||||
arlcontrol arl0 quality
|
||||
arlcontrol arl0 stat
|
||||
arlcontrol arl0
|
||||
.Pp
|
||||
You can configure the Arlan 655 card from /etc/start_if.arl0.
|
||||
For example:
|
||||
.Pp
|
||||
#!/bin/sh
|
||||
/sbin/arlconfig country 9 priority highest
|
||||
/usr/sbin/arlcontrol country 9 priority highest
|
||||
.Sh SEE ALSO
|
||||
.Xr arl 4 ,
|
||||
.Xr "Arlan 655 ISA Wireless LAN Client Card User Guide" .
|
||||
|
Loading…
Reference in New Issue
Block a user