]> git.decadent.org.uk Git - ap-utils.git/blob - lib/ap-utils.h
459d7226fdff75e224418797b7670dc04f8676d6
[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 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 };
228
229 struct SysDeviceInfo_ATMEL410 {
230     /* sysDeviceInfo OID struct for ATMEL 410 */
231     uint32_t StructVersion;
232     unsigned char MacAddress[6];
233     unsigned short Reserved;
234     uint32_t RegulationDomain;
235     uint32_t ProductType;
236     unsigned char OEMName[32];
237     uint32_t OEMID;
238     unsigned char ProductName[32];
239     uint32_t HardwareRevision;
240 };
241
242 struct SysDeviceInfo_ATMEL12350 {
243     /* sysDeviceInfo OID struct for ATMEL 12350 */
244     uint32_t StructVersion;
245     unsigned char MacAddress[6];
246     unsigned char Channel;
247     unsigned char RegulationDomain;
248     uint32_t ProductType;
249     unsigned char OEMName[32];
250     uint32_t OEMID;
251     unsigned char ProductName[32];
252     uint32_t HardwareRevision;
253     /* The rest is actually dormant. */
254     /*
255     unsigned char PID_VID[4];
256     uint32_t sysOIDSize;
257     uint16_t sysOID[16];
258     unsigned char CountryCode[3];
259     unsigned char Reserved1;
260     uint16_t ChannelInformation;
261     unsigned char Reserved2[2];
262     unsigned char TxPower[14];
263     unsigned char Reserved3[10];
264     */
265 };
266
267 struct MacListStat {
268     unsigned char addr[6];
269     struct MacListStat *next;
270     int quality;
271     int idle;
272     int rssi;
273         unsigned char  Status;
274         unsigned char  Port;
275         unsigned char  ParentMacAddress[6];
276         struct in_addr IP;
277 };
278
279 /* Function prototypes specific/common for both utilites */
280
281 /* service */
282 extern char * oui2manufacturer(char *);
283 extern int ch_list(int, char **);
284 extern void connect_options(unsigned long int, int);
285 extern void about(void);
286 extern void draw_menu_win(void);
287 extern void main_menu(void);
288 extern void print_title(char *);
289 extern void print_viewtype(int);
290 extern void print_menusel(int, int, char *, char *);
291 extern void print_bottom(char *);
292 extern void print_help(char *);
293 extern void print_helperr(char *);
294 extern void clear_main(int);
295 extern void clear_main_new(int, int);
296 extern void get_mac(char *, int, int);
297 extern void get_ip(struct in_addr *, int, int, char *);
298 extern void get_mask(struct in_addr *, int, int, char *);
299 extern void get_value(char *, int, int, int, char, int, int, char *);
300 extern void get_pass(char *, int, int, int);
301 extern int  menu_choose(int, int, char **, unsigned int);
302 extern int  yes_no(int, int);
303 extern int  on_off(int, int);
304 extern void scroll_rows(struct MacListStat *, int, int, int, int);
305 extern void exit_shell(void);
306 extern void exit_program(void);
307 extern int  get_opts(void);
308 extern void save_Stations(struct MacListStat *);
309 extern void uni_menu(struct umitems *umenu, int num);
310
311 /* AP */
312 extern void AuthorizedSettings(void);
313 extern void bridging(void);
314 extern void wep(void);
315 extern void WirelessStat(void);
316 extern void stations(void);
317 extern void atmel_sysinfo(void);
318 extern void ap_search(void);
319
320 /* snmp engine*/
321 extern int snmp(varbind *, int, int);
322 extern int ber(char *, varbind *, int, int);
323
324 /* Function prototypes specific for ATMEL utility */
325 extern void reset(void);
326 extern void defaults(void);
327 extern void upload(void);
328 extern int  SysUpload(void);
329 extern int  SysReset(void);
330 extern void EthStat(void);
331 extern void APs(void);
332 extern void power(void);
333 extern void test(void);
334 extern void atmel_wireless(void);
335 extern void atmel_auth_mac(void);
336
337 /* Function prototypes specific for NWN utility */
338 extern void latest(void);
339 extern int  get_RegDomain(void);
340 extern void advanced(void);
341 extern void command_menu(void);
342 extern void nwn_sysinfo(void);
343 extern void nwn_wep(void);
344 extern void nwn_stations(void);
345 extern void nwn_wireless_stat(void);
346 extern void nwn_wireless(void);
347 extern void nwn_auth_mac(void);
348
349 #endif