14 #define PASSWORD_MAX 32
17 #define CLIENT_PORT 63321
18 #define SWITCH_PORT 63322
20 #define CODE_READ_REQ 1
21 #define CODE_READ_REP 2
22 #define CODE_WRITE_REQ 3
23 #define CODE_WRITE_REP 4
25 #define ERROR_READONLY 3
26 #define ERROR_INVALID_VALUE 5
27 #define ERROR_INVALID_PASSWORD 7
29 #define ATTR_PRODUCT 0x0001
30 #define ATTR_UNK_0002 0x0002
31 #define ATTR_NAME 0x0003
32 #define ATTR_MAC 0x0004
33 #define ATTR_UNK_0005 0x0005
34 #define ATTR_IP 0x0006
35 #define ATTR_NETMASK 0x0007
36 #define ATTR_GATEWAY 0x0008
37 #define ATTR_NEW_PASSWORD 0x0009
38 #define ATTR_PASSWORD 0x000A
39 #define ATTR_DHCP 0x000B
40 #define ATTR_UNK_000C 0x000C
41 #define ATTR_FIRM_VER 0x000D
42 #define ATTR_UNK_000E 0x000E
43 #define ATTR_UNK_000F 0x000F
44 #define ATTR_FIRM_UPGRADE 0x0010
45 #define ATTR_RESTART 0x0013
46 #define ATTR_DEFAULTS 0x0400
47 #define ATTR_PORT_STATUS 0x0C00
48 #define ATTR_PORT_STATISTICS 0x1000
49 #define ATTR_STATS_RESET 0x1400
50 #define ATTR_CABLETEST_DO 0x1800
51 #define ATTR_CABLETEST_RESULT 0x1C00
52 #define ATTR_VLAN_TYPE 0x2000
53 #define ATTR_VLAN_PORT_CONF 0x2400
54 #define ATTR_VLAN_DOT_CONF 0x2800
55 #define ATTR_VLAN_DESTROY 0x2C00
56 #define ATTR_VLAN_PVID 0x3000
57 #define ATTR_QOS_TYPE 0x3400
58 #define ATTR_QOS_CONFIG 0x3800
59 #define ATTR_BITRATE_INPUT 0x4C00
60 #define ATTR_BITRATE_OUTPUT 0x5000
61 #define ATTR_STORM_ENABLE 0x5400
62 #define ATTR_STORM_BITRATE 0x5800
63 #define ATTR_MIRROR 0x5C00
64 #define ATTR_PORTS_COUNT 0x6000
65 #define ATTR_MAX_VLAN 0x6400
66 #define ATTR_IGMP_ENABLE_VLAN 0x6800
67 #define ATTR_IGMP_BLOCK_UNK 0x6C00
68 #define ATTR_IGMP_VALID_V3 0x7000
69 #define ATTR_TLV_BITMAP 0x7400
70 #define ATTR_END 0xFFFF
77 struct sockaddr_in local; // local address & port
78 struct in_addr brd; // broadcast address
79 char iface[IFNAMSIZ]; // interface
80 struct timeval timeout; // timeout
81 struct ether_addr localmac; // local MAC address
82 bool keepbroad; // keep broadcasting
83 bool globalbroad; // use global broadcast address (255.255.255.255)
85 char password[PASSWORD_MAX]; // password to use to login on switches
86 struct swi_attr *swi_tab; // array of detected switches
87 int swi_count; // number of detected switches
88 struct swi_attr *current; // administred switch
89 int seq; // sequence number for packets