]> git.sur5r.net Git - ngadmin/blob - lib/ngadmin.h
50f0bc375439d62d25940504b828caf81bff62c5
[ngadmin] / lib / ngadmin.h
1
2 #ifndef DEF_NGADMIN
3 #define DEF_NGADMIN
4
5
6 #include <stdbool.h>
7 #include <arpa/inet.h>
8 #include <netinet/ether.h>
9
10
11 #ifdef BUILD_LIB
12 #define EXPORT  __attribute__((visibility("default")))
13 #else
14 #define EXPORT  
15 #endif
16
17
18 #define ERR_OK          0       // no error
19 #define ERR_NET         -1      // network
20 #define ERR_NOTLOG      -2      // not logged on a switch
21 #define ERR_BADPASS     -3      // bad password
22 #define ERR_BADID       -4      // bad switch id
23 #define ERR_INVARG      -5      // invalid argument
24 #define ERR_TIMEOUT     -6      // timeout
25
26 #define PRODUCT_SIZE    64
27 #define NAME_SIZE       64
28 #define FIRMWARE_SIZE   64
29
30
31
32
33 #define SPEED_DOWN              0
34 #define SPEED_10                1
35 #define SPEED_100               4
36 #define SPEED_1000              5
37
38 #define VLAN_PORT_BASIC         1
39 #define VLAN_PORT_ADV           2
40 #define VLAN_DOT_BASIC          3
41 #define VLAN_DOT_ADV            4
42
43 #define QOS_PORT                1
44 #define QOS_DOT                 2
45
46 #define PRIO_UNSPEC             -1
47 #define PRIO_HIGH               1
48 #define PRIO_MED                2
49 #define PRIO_NORM               3
50 #define PRIO_LOW                4
51
52 #define BITRATE_UNSPEC          -1
53 #define BITRATE_NOLIMIT         0
54 #define BITRATE_512K            1
55 #define BITRATE_1M              2
56 #define BITRATE_2M              3
57 #define BITRATE_4M              4
58 #define BITRATE_8M              5
59 #define BITRATE_16M             6
60 #define BITRATE_32M             7
61 #define BITRATE_64M             8
62 #define BITRATE_128M            9
63 #define BITRATE_256M            10
64 #define BITRATE_512M            11
65
66
67
68
69 // opaque type to clients
70 struct ngadmin;
71
72
73 struct net_conf {
74  struct in_addr ip;             // IP
75  struct in_addr netmask;        // netmask
76  struct in_addr gw;             // gateway IP
77  bool dhcp;                     // DHCP enabled
78 };
79
80
81 struct swi_attr {
82  char product[PRODUCT_SIZE];    // product name (eg. GS108EV1)
83  char name[NAME_SIZE];          // custom name
84  char firmware[FIRMWARE_SIZE];  // firmware version string
85  unsigned char ports;           // number of ports
86  struct ether_addr mac;         // MAC address
87  struct net_conf nc;            // network configuration
88 };
89
90
91 struct port_stats {
92  unsigned long long recv;
93  unsigned long long sent;
94  unsigned long long crc;
95 };
96
97
98 struct igmp_conf {
99  bool enable;
100  unsigned short vlan;
101  bool validate;
102  bool block;
103 };
104
105
106 struct cabletest {
107  char port;
108  int v1;
109  int v2;
110 };
111
112
113
114 // initialize NgAdmin lib
115 struct ngadmin* ngadmin_init (const char *iface) EXPORT;
116
117 // 
118 int ngadmin_close (struct ngadmin *nga) EXPORT;
119
120
121 // 
122 int ngadmin_forceInterface (struct ngadmin *nga) EXPORT;
123
124
125 // 
126 int ngadmin_setKeepBroadcasting (struct ngadmin *nga, bool value) EXPORT;
127
128
129 // specify password to use for authenticating on switches
130 int ngadmin_setPassword (struct ngadmin *nga, const char *pass) EXPORT;
131
132
133 // 
134 int ngadmin_setTimeout (struct ngadmin *nga, const struct timeval *tv) EXPORT;
135
136
137 // 
138 int ngadmin_scan (struct ngadmin *nga) EXPORT;
139
140
141 // 
142 const struct swi_attr* ngadmin_getSwitchTab (struct ngadmin *nga, int *nb) EXPORT;
143
144
145 // 
146 const struct swi_attr* ngadmin_getCurrentSwitch (struct ngadmin *nga) EXPORT;
147
148
149 // 
150 int ngadmin_login (struct ngadmin *nga, int id) EXPORT;
151
152
153 // 
154 int ngadmin_getPortsStatus (struct ngadmin *nga, unsigned char *ports) EXPORT;
155
156
157 // 
158 int ngadmin_setName (struct ngadmin *nga, const char *name) EXPORT;
159
160
161 // 
162 int ngadmin_getPortsStatistics (struct ngadmin *nga, struct port_stats *ps) EXPORT;
163
164
165 // 
166 int ngadmin_resetPortsStatistics (struct ngadmin *nga) EXPORT;
167
168
169 // 
170 int ngadmin_changePassword (struct ngadmin *nga, const char* pass) EXPORT;
171
172
173 // 
174 int ngadmin_getStormFilterState (struct ngadmin *nga, int *s) EXPORT;
175
176
177 // 
178 int ngadmin_setStormFilterState (struct ngadmin *nga, int s) EXPORT;
179
180
181 // 
182 int ngadmin_getStormFilterValues (struct ngadmin *nga, int *ports) EXPORT;
183
184
185 // 
186 int ngadmin_setStormFilterValues (struct ngadmin *nga, const int *ports) EXPORT;
187
188
189 // 
190 int ngadmin_getBitrateLimits (struct ngadmin *nga, int *ports) EXPORT;
191
192
193 // 
194 int ngadmin_setBitrateLimits (struct ngadmin *nga, const int *ports) EXPORT;
195
196
197 // 
198 int ngadmin_getQOSMode (struct ngadmin *nga, int *s) EXPORT;
199
200
201 // 
202 int ngadmin_setQOSMode (struct ngadmin *nga, int s) EXPORT;
203
204
205 // 
206 int ngadmin_getQOSValues (struct ngadmin *nga, char *ports) EXPORT;
207
208
209 // 
210 int ngadmin_setQOSValues (struct ngadmin *nga, const char *ports) EXPORT;
211
212
213 // 
214 int ngadmin_restart (struct ngadmin *nga) EXPORT;
215
216
217 // 
218 int ngadmin_defaults (struct ngadmin *nga) EXPORT;
219
220
221 // 
222 int ngadmin_getMirror (struct ngadmin *nga, char *ports) EXPORT;
223
224
225 // 
226 int ngadmin_setMirror (struct ngadmin *nga, const char *ports) EXPORT;
227
228
229 // 
230 int ngadmin_getIGMPConf (struct ngadmin *nga, struct igmp_conf *ic) EXPORT;
231
232
233 // 
234 int ngadmin_setIGMPConf (struct ngadmin *nga, const struct igmp_conf *ic) EXPORT;
235
236
237 // 
238 int ngadmin_cabletest (struct ngadmin *nga, struct cabletest *ct, int nb) EXPORT;
239
240
241
242 #endif
243