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 350