1/************************************************************/ 2/* Version 1.5 by Yuhsin_Lee 2005/3/24 15:02 */ 3/************************************************************/ 4 5/* Defintion of Communcation Protocol of ASUS's network devices */ 6/* $Id: iboxcom.h,v 1.1.1.1 2008/10/15 03:31:22 james26_jang Exp $ */ 7 8#ifndef __IBOX_COMMON__ 9#define __IBOX_COMMON__ 10 11#pragma pack(1) 12 13/****************************************/ 14/* FOR LINUX */ 15/****************************************/ 16#ifndef WIN32 17#define ULONG unsigned long 18#define DWORD unsigned long 19#define BYTE char 20#define PBYTE char * 21#define WORD unsigned short 22#define INT int 23#endif //#ifndef WIN32 24 25#define SVRPORT 9999 26#define OTSPORT 9998 27#define OTS_IPADD "192.168.1.1" 28#define WLHDD_SUPPORT 1 29//Define Error Code 30 31/************ Use Internally in Program************/ 32#define ERR_SUCCESS 0 33 34/************ Use Internally in Program************/ 35 36#define ERR_BASE 100 37 38 39//Use For Network Communication Protocol 40 41//Packet Type Section 42#define NET_SERVICE_ID_BASE (10) 43#define NET_SERVICE_ID_LPT_EMU (NET_SERVICE_ID_BASE + 1) 44#define NET_SERVICE_ID_IBOX_INFO (NET_SERVICE_ID_BASE + 2) 45 46 47//Packet Type Section 48#define NET_PACKET_TYPE_BASE (20) 49#define NET_PACKET_TYPE_CMD (NET_PACKET_TYPE_BASE + 1) 50#define NET_PACKET_TYPE_RES (NET_PACKET_TYPE_BASE + 2) 51 52//Command ID Section 53//#define NET_CMD_ID_BASE 30 54//#define NET_CMD_ID_GETINFO NET_CMD_ID_BASE + 1 55 56enum NET_CMD_ID 57{ // Decimal Hexadecimal 58 NET_CMD_ID_BASE = 30, // 30 0x1E 59 NET_CMD_ID_GETINFO, // 31 0x1F 60 NET_CMD_ID_GETINFO_EX, // 32 0x20 61 NET_CMD_ID_GETINFO_SITES, // 33 0x21 62 NET_CMD_ID_SETINFO, // 34 0x22 63 NET_CMD_ID_SETSYSTEM, // 35 0x23 64 NET_CMD_ID_GETINFO_PROF, // 36 0x24 65 NET_CMD_ID_SETINFO_PROF, // 37 0x25 66 NET_CMD_ID_CHECK_PASS, // 38 0x26 67#ifdef BTN_SETUP 68 NET_CMD_ID_SETKEY_EX, // 39 0x27 69 NET_CMD_ID_QUICKGW_EX, // 40 0x28 70 NET_CMD_ID_EZPROBE, // 41 0x29 71#endif 72 NET_CMD_ID_MANU_BASE=50, // 50 0x32 73 NET_CMD_ID_MANU_CMD, // 51 0x33 74 NET_CMD_ID_MAXIMUM 75}; 76 77enum NET_RES_OP 78{ 79 NET_RES_OK = 0x0000, 80 NET_RES_ERR_PASSWORD = 0x0100, 81 NET_RES_ERR_FIELD_UNDEF = 0x0200 82}; 83 84//Packet Header Structure 85typedef struct iboxPKT 86{ 87 BYTE ServiceID; 88 BYTE PacketType; 89 WORD OpCode; 90 DWORD Info; // Or Transaction ID 91} IBOX_COMM_PKT_HDR; 92 93typedef struct iboxPKTRes 94{ 95 BYTE ServiceID; 96 BYTE PacketType; 97 WORD OpCode; 98 DWORD Info; // Or Transaction ID 99} IBOX_COMM_PKT_RES; 100 101typedef struct iboxPKTEx 102{ 103 BYTE ServiceID; 104 BYTE PacketType; 105 WORD OpCode; 106 DWORD Info; // Or Transaction ID 107 BYTE MacAddress[6]; 108 BYTE Password[32]; //NULL terminated string, string length:1~31, cannot be NULL string 109} IBOX_COMM_PKT_HDR_EX; 110 111typedef struct iboxPKTExRes 112{ 113 BYTE ServiceID; 114 BYTE PacketType; 115 WORD OpCode; 116 DWORD Info; // Or Transaction ID 117 BYTE MacAddress[6]; 118} IBOX_COMM_PKT_RES_EX; 119 120//structure in IBOX_COMM_PKT_HDR.Info 121//-------------------------------------------- 122//|Product Info| Not used | 123//-------------------------------------------- 124// 1 bytes 3 bytes 125 126//Define the constants used in IBOX_COMM_PKT_HDR.Info 127#define INFO_WL500 0x00010000 128#define INFO_WL510 0x00020000 129#define INFO_PDU_LENGTH 512 130 131#define WAVESERVER // eric++ 132 133//Extended Fields Definition 134typedef struct PktGetInfo 135{ 136 BYTE PrinterInfo[128]; 137 BYTE SSID[32]; 138 BYTE NetMask[32]; 139 BYTE ProductID[32]; 140 BYTE FirmwareVersion[16]; 141 BYTE OperationMode; 142 BYTE MacAddress[6]; 143 BYTE Regulation; 144} PKT_GET_INFO; 145 146#ifdef WAVESERVER // eric++ 147#define WS_INFO_FILENAME "/tmp/waveserver.info" 148 149// appended to the PKT_GET_INFO; 150// at offset 0x100 (sizeof (IBOX_COMM_PKT_RES) + sizeof (PKT_GET_INFO)) 151typedef struct ws_info_t { 152 BYTE Name[4]; // 'W' + 'S' + Major version number + Minor version number 153 WORD Channel; 154 WORD SampleRate; 155 union { 156 unsigned char SampleSize; 157 struct { 158 unsigned char s8:1, /* bit0, Sample Size 8-bits */ 159 s16:1, /* bit1, Sample Size 16-bits */ 160 s24:1, /* bit2, Sample Size 24-bits */ 161 s32:1, /* bit3, Sample Size 32-bits */ 162 rsvd:3, /* bit4~6, Reserved */ 163 cflag:1; /* bit7, Connection Flag */ 164 } b; 165 } u; 166 BYTE Compress; 167 BYTE Reserved[6]; 168} WS_INFO_T; 169#endif 170 171typedef struct PktGetInfoEx1 172{ 173 BYTE FieldCount; 174 WORD FieldID; 175} PKT_GET_INFO_EX1; 176 177typedef struct Profiles 178{ 179 BYTE mode; 180 BYTE chan; 181 BYTE ssid[32]; 182 BYTE rate; 183 BYTE wep; 184 BYTE wepkeylen; /* 0: 40 bit, 1: 128 bit */ 185 BYTE wepkey1[16]; /* only up to 13 bits used */ 186 BYTE wepkey2[16] ; /* only up to 13 bits used */ 187 BYTE wepkey3[16] ; /* only up to 13 bits used */ 188 BYTE wepkey4[16]; /* only up to 13 bits used */ 189 BYTE wepkeyactive; 190 BYTE sharedkeyauth; 191 BYTE brgmacclone; 192 BYTE preamble; 193 BYTE Reserve[55]; 194} PROFILES; 195 196typedef struct PktGetInfoProf 197{ 198 BYTE StartIndex; 199 BYTE Count; 200 union 201 { 202 PROFILES Profiles[2]; 203 struct 204 { 205 BYTE ButtonType; 206 BYTE ButtonMode; 207 BYTE ProfileCount; 208 } ProfileControl; 209 } p; 210} PKT_GET_INFO_PROFILE; 211 212typedef struct PktGetInfoSta 213{ 214 BYTE mode; 215 BYTE chan; 216 BYTE ssid[32]; 217 BYTE rate; 218 BYTE wep; 219 BYTE wepkeylen; /* 0: 40 bit, 1: 128 bit */ 220 BYTE wepkey1[16]; /* only up to 13 bits used */ 221 BYTE wepkey2[16] ; /* only up to 13 bits used */ 222 BYTE wepkey3[16] ; /* only up to 13 bits used */ 223 BYTE wepkey4[16]; /* only up to 13 bits used */ 224 BYTE wepkeyactive; 225 BYTE sharedkeyauth; 226 BYTE brgmacclone; 227 BYTE preamble; 228 BYTE buttonMode; 229 BYTE buttonType; 230 BYTE profileCount; 231 BYTE connectionStatus; 232 DWORD IPAddr; 233 DWORD Mask; 234 DWORD Gateway; 235 BYTE Dhcp; 236 BYTE Reserve[38]; //51-13=38 237} PKT_GET_INFO_STA; // total 173 238 239/* 240======================================================= 241definition in these 2 data structure (EA mode) 242typedef struct Profiles 243typedef struct PktGetInfoSta 244 245 wep wepkeylen sharedkeyauth 246open-none 0 0 0 247open-wep64 1 0 0 248open-wep128 1 1 0 249shared-wep64 1 0 1 250shared-wep128 1 1 1 251wpa-tkip 0 1 not used 252 253//enum STA_VIRTUAL_WEP_KEYLEN_TYPE 254======================================================= 255*/ 256 257typedef struct InfoSite 258{ 259 BYTE SSID[32]; 260 BYTE Channel; 261 BYTE Type; 262 BYTE Wep; //enum SITE_ENCRYPTION 263 BYTE Status; 264 BYTE BSSID[6]; 265 BYTE RSSI; 266 BYTE Flag; 267 BYTE Reserve[16]; 268} SITES; 269 270typedef struct PktGetInfoSite 271{ 272 BYTE Count; 273 BYTE Index; 274 SITES Sites[8]; 275} PKT_GET_INFO_SITES; 276 277typedef struct PktGetInfoAP 278{ 279 BYTE SSID[32]; 280 BYTE Channel; 281 BYTE Auth; 282 BYTE Encrypt; 283 BYTE Key[64]; 284 BYTE DefaultKey; 285 DWORD IPAddr; 286 DWORD Mask; 287 DWORD Gateway; 288 BYTE Dhcp; 289 BYTE WdsMode; 290 BYTE WdsMAC[6*6]; 291 BYTE WdsNo; 292 BYTE Reserve[9]; 293} PKT_GET_INFO_AP; // total 224 bytes 294 295typedef struct iboxPKTCmd 296{ 297 WORD len; 298 BYTE cmd[420]; 299} PKT_SYSCMD; // total 422 bytes 300 301typedef struct iboxPKTCmdRes 302{ 303 WORD len; 304 BYTE res[420]; 305} PKT_SYSCMD_RES; // total 422 bytes 306 307#ifdef BTN_SETUP 308// what is included in PKT_SET_INFO_GW_QUICK, OR these 3 flags 309#define QFCAP_WIRELESS 0x01 310#define QFCAP_ISP 0x02 311#define QFCAP_GET 0x40 312#define QFCAP_FINISH 0x80 313#define MAX_DHKEY_LEN 192 314 315enum ACK_TYPE 316{ 317 QUICK_ACK=0x00, 318 QUICK_NACK 319}; 320 321enum ISP_TYPE 322{ 323 ISP_TYPE_DHCPCLIENT=0x00, 324 ISP_TYPE_PPPOE, 325 ISP_TYPE_PPTP, 326 ISP_TYPE_STATICIP, 327 ISP_TYPE_BIGPOND 328}; 329 330typedef struct PktEZProbeInfo 331{ 332 BYTE isNotDefault; // 0/1, is in default state ? 333 BYTE isSetByOts; // 0/1, is in EZSetup default state ? 334 BYTE isWAN; // 0/1, is WAN connected ? 335 BYTE isDHCP; // Not used now 336 BYTE isPPPOE; // Not used now 337 BYTE Auth; // Authentication Method 338 BYTE Wds; // WDS Mode, in WDS_MODE 339 BYTE Acl; // ACL Mode, in ACL_MODE 340 BYTE ProductID[32]; // Not used now 341 BYTE FirmwareVersion[16]; // Not used now 342} PKT_EZPROBE_INFO; 343 344typedef struct PktSetInfoGWQuickKey 345{ 346 BYTE Auth; 347 BYTE Encrypt; 348 BYTE KeyLen; //default: 0 349 BYTE Key[MAX_DHKEY_LEN]; 350} PKT_SET_INFO_GW_QUICK_KEY; 351 352typedef struct TempWirelessStruct { 353 BYTE TempSSID[32]; 354 BYTE TempKey[32]; // AES Key, 256 bits = 32 bytes 355 BYTE SuggestSSID[32]; // If SSID = NULL String, use this one 356 BYTE SuggestKey[64]; // If Key = NULL String, use this one 357} TEMP_WIRELESS_STRUCT; 358 359typedef struct TempWireless 360{ 361 union 362 { 363 BYTE SharedKey[MAX_DHKEY_LEN*2]; 364 TEMP_WIRELESS_STRUCT WirelessStruct; 365 } u; 366} TEMP_WIRELESS; 367 368typedef struct GWQuickWireless 369{ 370 BYTE SSID[32]; 371 BYTE Auth; // as enum in AP_AUTHENTICATION 372 BYTE Encrypt; // as enum is AP_ENCRYPTION 373 BYTE Key[64]; 374 BYTE DefaultKey; 375} GW_QUICK_WIRELESS; 376 377typedef struct GWQuickISP 378{ 379 BYTE ISPType; // as enum in ISP_TYPE 380 BYTE UserName[64]; // NOTE: max length: 64! 0~63: null-terminated, 64: NOT null-terminated 381 BYTE Password[64]; // NOTE: max length: 64! 0~63: null-terminated, 64: NOT null-terminated 382 BYTE MAC[12]; // MAC in xxxxxxxxxxxx 383 BYTE HostName[32]; // Name // NOTE: max length: 32! 0~31: null-terminated, 32: NOT null-terminated 384 BYTE BPServer[32]; // IP address or Name // NOTE: max length: 32! 0~31: null-terminated, 32: NOT null-terminated 385 DWORD IPAddr; 386 DWORD Mask; 387 DWORD Gateway; 388 DWORD DNSServer1; 389 DWORD DNSServer2; 390 BYTE TimeZone[16]; // as string in Linux setting 391} GW_QUICK_ISP; 392 393typedef struct PktSetInfoGWQuick 394{ 395 BYTE QuickFlag; 396 GW_QUICK_WIRELESS WSetting; 397 GW_QUICK_ISP ISPSetting; 398} PKT_SET_INFO_GW_QUICK; 399 400#endif 401// Definition for field ID and type 402enum ACL_MODE 403{ 404 ACL_MODE_DISABLE=0x00, 405 ACL_MODE_ACCEPT, 406 ACL_MODE_REJECT 407}; 408 409enum WDS_MODE 410{ 411 WDS_MODE_AP_ONLY=0x00, 412 WDS_MODE_HYBRID, 413 WDS_MODE_WDS_ONLY 414}; 415 416enum OPERATION_MODE 417{ 418 OPERATION_MODE_WB=0x00, 419 OPERATION_MODE_AP, 420 OPERATION_MODE_GATEWAY, 421 OPERATION_MODE_ROUTER, 422 OPERATION_MODE_PAIRING 423}; 424 425enum AP_AUTHENTICATION 426{ 427 AUTHENTICATION_SHARED=0x00, 428 AUTHENTICATION_OPEN, 429 AUTHENTICATION_WPA_PSK=3, //add by Axin 430 AUTHENTICATION_WPA=4, //add by Chen-I 431 AUTHENTICATION_8021X=5 //add by Chen-I 432}; 433 434enum AP_ENCRYPTION 435{ 436 ENCRYPTION_DISABLE=0x00, 437 ENCRYPTION_WEP64, 438 ENCRYPTION_WEP128, 439 ENCRYPTION_TKIP, //add by Axin 440 ENCRYPTION_AES 441}; 442 443enum DEFAULT_KEY_INDEX 444{ 445 DEFAULT_KEY_1=0x1, 446 DEFAULT_KEY_2, 447 DEFAULT_KEY_3, 448 DEFAULT_KEY_4 449}; 450 451enum SITE_ENCRYPTION 452{ 453 SITE_ENCRYPTION_DISABLE=0x00, 454 SITE_ENCRYPTION_WEP, 455 SITE_ENCRYPTION_TKIP 456}; 457 458enum STA_STATION_MODE 459{ 460 STATION_MODE_INFRA=0x00, 461 STATION_MODE_ADHOC 462#ifdef WLHDD_SUPPORT 463 , 464 STATION_MODE_AP 465#endif 466}; 467 468enum STA_AUTHENTICATION 469{ 470 STA_AUTHENTICATION_OPEN=0x00, 471 STA_AUTHENTICATION_SHARED 472}; 473 474enum STA_ENCRYPTION 475{ 476 STA_ENCRYPTION_DISABLE=0x00, 477 STA_ENCRYPTION_ENABLE 478}; 479 480enum STA_ENCRYPTION_TYPE 481{ 482 STA_ENCRYPTION_TYPE_WEP64=0x00, 483 STA_ENCRYPTION_TYPE_WEP128 484}; 485 486enum STA_VIRTUAL_WEP_KEYLEN_TYPE 487{ 488 STA_VIRTUAL_WEP_KEYLEN_NONE=0x00, 489 STA_VIRTUAL_WEP_KEYLEN_TKIP 490}; 491 492enum STA_CONNECTION_STATUS 493{ 494 STATUS_DISCONNECT=0x00, 495 STATUS_CONNECT 496}; 497 498enum DHCP_MODE 499{ 500 DHCP_DISABLED = 0x00, 501 DHCP_ENABLED 502}; 503 504enum STA_BUTTON_MODE 505{ 506 BUTTON_MODE_DISABLE=0x00, 507 BUTTON_MODE_ENABLE 508}; 509 510enum STA_BUTTON_TYPE 511{ 512 BUTTON_TYPE_MAX_POWER=0x00, 513 BUTTON_TYPE_MAX_POWER_PROFILE, 514 BUTTON_TYPE_MAX_POWER_ALL, 515 BUTTON_TYPE_PROFILE, 516 BUTTON_TYPE_PROFILE_ONE 517}; 518 519enum STA_PROFILE_INDEX 520{ 521 PROFILE_INDEX_START=0x00, 522 PROFILE_INDEX_ERASE 523}; 524 525 526enum FIELD_DEFINTION 527{ 528 FIELD_GENERAL = 0x0001, 529 FIELD_GENERAL_CONTROL, // 1 530 FIELD_GENERAL_OPERATION_MODE, // 1 531 FIELD_GENERAL_CURRENT_STA, // 160 532 FIELD_GENERAL_CURRENT_AP, // 160 533 FIELD_STA = 0x1000, 534 FIELD_STA_SSID, // 32 535 FIELD_STA_MODE, // 1 536 FIELD_STA_CHANNEL, // 1 537 FIELD_STA_AUTH, // 1 538 FIELD_STA_ENCRYPT, // 1 539 FIELD_STA_TXRATE, // 1 540 FIELD_STA_KEY1, // 32 541 FIELD_STA_KEY2, // 32 542 FIELD_STA_KEY3, // 32 543 FIELD_STA_KEY4, // 32 544 FIELD_STA_DEFAULTKEY, // 1 545 FIELD_STA_PASSPHRASE, // 64 546 FIELD_STA_SCANMODE, // 1 547 FIELD_STA_SCANTYPE, // 1 548 FIELD_STA_PROFILE, // 1 549 FIELD_STA_CONNECTION_STATUS = 0x1050, // 1 550 FIELD_WIRELESS = 0x2000, 551 FIELD_WIRELESS_SSID, // 32 552 FIELD_WIRELESS_CHANNEL, // 1 553 FIELD_WIRELESS_AUTH, // 1 554 FIELD_WIRELESS_ENCRYPT, // 1 555 FIELD_WIRELESS_TXRATE, // 1 556 FIELD_WIRELESS_KEY1, // 1 557 FIELD_WIRELESS_KEY2, // 1 558 FIELD_WIRELESS_KEY3, // 1 559 FIELD_WIRELESS_KEY4, // 1 560 FIELD_WIRELESS_DEFAULTKEY, // 1 561 FIELD_WIRELESS_PASSPHRASE, // 64 562 FIELD_WIRELESS_BLOCKSSID, // 1 563 FIELD_WIRELESS_BASICRATE, // 2 564 FIELD_WIRELESS_PREAMBLE, // 1 565 FIELD_LAN = 0x2100, 566 FIELD_LAN_CONNECTION_TYPE, // 1 567 FIELD_LAN_IPADDRESS, // 32 568 FIELD_LAN_NETMASK, // 32 569 FIELD_LAN_GATEWAY, // 32 570 FIELD_WAN = 0x2200, 571 FIELD_WAN_CONNECTION_TYPE // 1 572#ifdef BTN_SETUP 573 , FIELD_GW_QUICK = 0x2300, 574 FIELD_GW_QUICK_SETUP // 1 575#endif 576}; 577 578#pragma pack() 579#endif //#ifndef __IBOX_COMMON__ 580 581 582 583