]> git.decadent.org.uk Git - ap-utils.git/blob - lib/ap-utils.h
94e256a9747e6a07e58a37cd2d4db42e86546f4c
[ap-utils.git] / lib / ap-utils.h
1 /*
2  *    ap-utils.h from Wireless Access Point Utilites for Unix
3  *  Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License Version 2 from
7  * June 1991 as published by the Free Software Foundation.
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with this program; if not, write to the Free Software Foundation, Inc.,
14  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  */
16
17 #ifndef _AP_CNF
18 #define _AP_CNF 1
19
20 #include "config.h"
21
22 #ifdef OS_BSD
23 #include <sys/types.h>
24 #ifdef OS_X
25 #include <stdint.h>
26 #endif /* ifdef OS_X */
27 #else
28 #ifdef OS_SOLARIS
29 #include <sys/types.h>
30 #else
31 #include <features.h>
32 #if defined (__GLIBC__)
33 #include <stdint.h>
34 #else
35 typedef unsigned short uint16_t;
36 typedef unsigned int uint32_t;
37 #endif /* if defined (__GLIBC__) */
38 #endif /* ifdef OS_SOLARIS */
39 #endif /* ifdef OS_BSD */
40
41 #define TITLE "Wireless Access Point Utilites for Unix"
42
43 #define minimum(x, y)   x <= y ? x : y
44
45 #ifdef HAVE_GETTEXT
46 /* GNU gettext stuff*/
47 #include <locale.h>
48 #include <libgnuintl.h>
49 #define _(String) gettext (String)
50 #else
51 #define _(String) (String)
52 #endif
53
54 #include <sys/socket.h>
55 #include <netinet/in.h>
56 #include <arpa/inet.h>
57
58
59 #ifdef WORDS_BIGENDIAN
60 /* a quick-and-dirty macro to unconditionally swap bytes in 4-byte integers
61  * between big-endian and little-endian ordering */
62 #define swap2(d) ((((d) >> 8) & 0x00ff) | (((d) << 8) & 0xff00))
63 #define swap4(d) ((((d) >> 24) & 0x000000ff) | (((d) >>  8) & 0x0000ff00) | (((d) <<  8) & 0x00ff0000) | (((d) << 24) & 0xff000000))
64 #else
65 #define swap2(d) d
66 #define swap4(n) n
67 #endif
68
69 #define rlong(a)        ((a) = swap4(a))
70 #define wlong(a)        ((a) = swap4(a))
71 #define rshort(a)       ((a) = swap2(a))
72 #define wshort(a)       ((a) = swap2(a))
73
74 #define MAC _("MAC address: ")
75 #define TRAPS _("[S] SNMP traps: ")
76
77 #define CHANNEL _("[C] Frequency channel: ")
78
79 #define ANTENNA_RX _("Receive  antenna:")
80 #define ANTENNA_RX_LEFT  _("[U] Left")
81 #define ANTENNA_RX_RIGHT _("[I] Right")
82 #define ANTENNA_TX _("Transmit antenna:")
83 #define ANTENNA_TX_LEFT  _("[O] Left")
84 #define ANTENNA_TX_RIGHT _("[P] Right")
85 #define ANTENNA_DV _("Diversity select:")
86 #define ANTENNA_DV_LEFT  _("[T] Left")
87 #define ANTENNA_DV_RIGHT _("[Y] Right")
88
89 #define YES _("Yes")
90 #define NO _("No")
91
92 #define ON _("On")
93 #define OFF _("Off")
94
95 #define BASIC _("Basic")
96
97 #define ANY_KEY _("Press any key to continue.")
98
99 #define ERR_SET _("Unable to write data to AP. Press any key to continue.")
100 #define ERR_RET _("Unable to retrieve (valid) data from AP. Press any key to continue.")
101 #define WAIT_RET _("Retrieving data from AP. Please wait...")
102 #define WAIT_SET _("Writing data to AP. Please wait...")
103 #define DONE_SET _("Configuration written to the AP. Press any key to continue.")
104
105 #define CREATE_SOCKET_ERROR _("Create socket error. Press any key.")
106 #define BIND_SOCKET_ERROR _("Bind socket error. Press any key.")
107
108 #define MAIN_MENU  _("Back to main menu")
109 #define MENU_EXIT _("Exit program")
110 #define MENU_SHELL _("Run subshell. To return type 'exit'.")
111 #define MENU_ABOUT _("Short info about program")
112 #define MENU_SEARCH _("Find connected Access Points")
113 #define MENU_CONNECT _("Set connection options: ip and community")
114 #define MENU_ENCRYPT _("Set encryption; edit WEP keys")
115 #define MENU_MAC _("Set MAC authorization; edit MAC authorization table")
116 #define MENU_COMMUNITY _("Set SNMP community/password for access to the AP")
117 #define MENU_SYSINFO _("Get info about AP hardware and firmware")
118 #define MENU_WIRELESS _("Get wireless port statistics")
119 #define MENU_STAS _("Get list of currently associated stations (Access Point clients)")
120 #define MENU_INFO _("Get info and statistics from AP")
121 #define MENU_CONFIG  _("Set various configuration options")
122
123
124 #define INT_VALUE       0x02
125 #define STRING_VALUE    0x04
126 #define NULL_VALUE      0x05
127 #define OID_VALUE       0x06
128
129 #define GET             0xA0
130 #define GET_NEXT        0xA1
131 #define RESPONSE        0xA2
132 #define SET             0xA3
133 #define TRAP            0xA4
134
135 #define ASN_HEADER      0x30
136
137 #define INT_STRING      0x01
138 #define HEX_STRING      0x02
139 #define ANY_STRING      0x03
140
141 #define SIZE sizeof(struct sockaddr_in)
142 #define basic(i) (i & 0x80) ? BASIC : (i) ? ON : OFF
143
144
145 #define MCOLS 15 /* width of menu window */
146 #define LAST_ROW LINES-5
147
148 /* Basic distinguished MIB (and AP) types */
149 #define ATMEL410 0
150 #define NWN 1
151 #define ATMEL12350 2
152
153 typedef struct VarBind {
154     unsigned char *oid;
155     int len_oid;
156     unsigned char *value;
157     int len_val;
158     unsigned char type;
159 } varbind;
160
161 struct umitems {
162         char *item;
163         char *help;
164         void (*func)();
165         int is_menu;
166 };
167
168 struct EthernetRxStatistics {
169         uint32_t TotalBytesRx;
170         uint32_t TotalPacketsRx;
171         uint32_t PacketCRCErrorRx;
172         uint32_t MulticastPacketRx;
173         uint32_t BroadcastPacketRx;
174         uint32_t ControlFramesRx;
175         uint32_t PauseFramesRx;
176         uint32_t UnknownOPCodeRx;
177         uint32_t AlignmentRxError;
178         uint32_t LengthOutOfRangeRx;
179         uint32_t CodeErrorRx;
180         uint32_t FalseCarrierRx;
181         uint32_t UndersizePacketsRx;
182         uint32_t OversizePacketsRx;
183         uint32_t TotalFragmentsRx;
184         uint32_t TotalJabberRx;
185 };
186
187 struct EthernetTxStatistics {
188         uint32_t TotalBytesTx;
189         uint32_t TotalPacketsTx;
190         uint32_t PacketCRCErrorTx;
191         uint32_t MulticastPacketTx;
192         uint32_t BroadcastPacketTx;
193         uint32_t UnicastPacketTx;
194         uint32_t PauseFramesTx;
195         uint32_t SingleDeferPacketTx;
196         uint32_t MultiDeferPacketsTx;
197         uint32_t SingleCollisionsTx;
198         uint32_t MultiCollisionsTx;
199         uint32_t LateCollisionsTx;
200         uint32_t ExcessiveCollisionTx;
201         uint32_t TotalCollisionsTx;
202 };
203
204 struct WirelessStatistics {
205         uint32_t UnicastTransmittedPackets;
206         uint32_t BroadcastTransmittedPackets;
207         uint32_t MulticastTransmittedPackets;
208         uint32_t TransmittedBeacon;
209         uint32_t TransmittedACK;
210         uint32_t TransmittedRTS;
211         uint32_t TransmittedCTS;
212         uint32_t UnicastReceivedPackets;
213         uint32_t BroadcastReceivedPackets;
214         uint32_t MulticastReceivedPackets;
215         uint32_t ReceivedBeacon;
216         uint32_t ReceivedACK;
217         uint32_t ReceivedRTS;
218         uint32_t ReceivedCTS;
219         uint32_t ACKFailure;
220         uint32_t CTSFailure;
221         uint32_t RetryPackets;
222         uint32_t ReceivedDuplicate;
223         uint32_t FailedPackets;
224         uint32_t AgedPackets;
225         uint32_t FCSError;
226         uint32_t InvalidPLCP;
227         /* following 4 are specific for ATMEL 12350 MIB enhanced by VERNET */
228         uint32_t TransmittedPackets_11Mbps;
229         uint32_t TransmittedPackets_55Mbps;
230         uint32_t TransmittedPackets_2Mbps;
231         uint32_t TransmittedPackets_1Mbps;
232 };
233
234 struct SysDeviceInfo_ATMEL410 {
235     /* sysDeviceInfo OID struct for ATMEL 410 */
236     uint32_t StructVersion;
237     unsigned char MacAddress[6];
238     unsigned short Reserved;
239     uint32_t RegulationDomain;
240     uint32_t ProductType;
241     unsigned char OEMName[32];
242     uint32_t OEMID;
243     unsigned char ProductName[32];
244     uint32_t HardwareRevision;
245 };
246
247 struct SysDeviceInfo_ATMEL12350 {
248     /* sysDeviceInfo OID struct for ATMEL 12350 */
249     uint32_t StructVersion;
250     unsigned char MacAddress[6];
251     unsigned char Channel;
252     unsigned char RegulationDomain;
253     uint32_t ProductType;
254     unsigned char OEMName[32];
255     uint32_t OEMID;
256     unsigned char ProductName[32];
257     uint32_t HardwareRevision;
258     /* The rest is actually dormant. */
259     /*
260     unsigned char PID_VID[4];
261     uint32_t sysOIDSize;
262     uint16_t sysOID[16];
263     unsigned char CountryCode[3];
264     unsigned char Reserved1;
265     uint16_t ChannelInformation;
266     unsigned char Reserved2[2];
267     unsigned char TxPower[14];
268     unsigned char Reserved3[10];
269     */
270 };
271
272 struct MacListStat {
273     unsigned char addr[6];
274     struct MacListStat *next;
275     int quality;
276     int idle;
277     int rssi;
278     unsigned char  Status;
279     unsigned char  Port;
280     unsigned char  ParentMacAddress[6];
281     struct in_addr IP;
282 };
283
284 /* function prototypes specific/common for both utilites */
285
286 /* service */
287 extern char * oui2manufacturer(char *);
288 extern int ch_list(int, char **);
289 extern void connect_options(unsigned long int, int);
290 extern int get_mib_details(void);
291 extern void about(void);
292 extern void draw_menu_win(void);
293 extern void main_menu(void);
294 extern void print_title(char *);
295 extern void print_viewtype(char *);
296 extern void print_viewtype_rssi(void);
297 extern void print_menusel(int, int, char *, char *);
298 extern void print_bottom(char *);
299 extern void print_help(char *);
300 extern void print_helperr(char *);
301 extern void clear_main(int);
302 extern void clear_main_new(int, int);
303 extern int  conv_rssi(int);
304 extern void get_mac(char *, int, int);
305 extern void get_ip(struct in_addr *, int, int, char *);
306 extern void get_mask(struct in_addr *, int, int, char *);
307 extern void get_value(char *, int, int, int, char, int, int, char *);
308 extern void get_pass(char *, int, int, int);
309 extern int  menu_choose(int, int, char **, unsigned int);
310 extern int  yes_no(int, int);
311 extern int  on_off(int, int);
312 extern void scroll_rows(struct MacListStat *, int, int, int, int);
313 extern void exit_shell(void);
314 extern void exit_program(void);
315 extern int  get_opts(void);
316 extern void save_Stations(struct MacListStat *);
317 extern void uni_menu(struct umitems *umenu, int num);
318
319 /* AP */
320 extern void AuthorizedSettings(void);
321 extern void bridging(void);
322 extern void wep(void);
323 extern void WirelessStat(void);
324 extern void stations(void);
325 extern void atmel_sysinfo(void);
326 extern void ap_search(void);
327
328 /* snmp engine*/
329 extern int snmp(varbind *, int, int);
330 extern int ber(char *, varbind *, int, int);
331
332 /* function prototypes specific for ATMEL utility */
333 extern void reset(void);
334 extern void defaults(void);
335 extern void upload(void);
336 extern int  SysUpload(void);
337 extern int  SysReset(void);
338 extern void EthStat(void);
339 extern void APs(void);
340 extern void power(void);
341 extern void test(void);
342 extern void atmel_wireless(void);
343 extern void atmel_auth_mac(void);
344
345 /* function prototypes specific for NWN utility */
346 extern void latest(void);
347 extern int  get_RegDomain(void);
348 extern void advanced(void);
349 extern void command_menu(void);
350 extern void nwn_sysinfo(void);
351 extern void nwn_wep(void);
352 extern void nwn_stations(void);
353 extern void nwn_wireless_stat(void);
354 extern void nwn_wireless(void);
355 extern void nwn_auth_mac(void);
356
357 #endif