]> git.sur5r.net Git - ngadmin/blob - lib/ngadmin.h
Added support for creating and deleting a 802.1q VLAN.
[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_DISABLED           0
39 #define VLAN_PORT_BASIC         1
40 #define VLAN_PORT_ADV           2
41 #define VLAN_DOT_BASIC          3
42 #define VLAN_DOT_ADV            4
43
44 #define VLAN_UNSPEC             0xFF
45 #define VLAN_NO                 0
46 #define VLAN_UNTAGGED           1
47 #define VLAN_TAGGED             2
48
49 #define VLAN_MAX                4093
50
51 #define QOS_PORT                1
52 #define QOS_DOT                 2
53
54 #define PRIO_UNSPEC             -1
55 #define PRIO_HIGH               1
56 #define PRIO_MED                2
57 #define PRIO_NORM               3
58 #define PRIO_LOW                4
59
60 #define BITRATE_UNSPEC          -1
61 #define BITRATE_NOLIMIT         0
62 #define BITRATE_512K            1
63 #define BITRATE_1M              2
64 #define BITRATE_2M              3
65 #define BITRATE_4M              4
66 #define BITRATE_8M              5
67 #define BITRATE_16M             6
68 #define BITRATE_32M             7
69 #define BITRATE_64M             8
70 #define BITRATE_128M            9
71 #define BITRATE_256M            10
72 #define BITRATE_512M            11
73
74
75
76
77 // opaque type to clients
78 struct ngadmin;
79
80
81 struct net_conf {
82  struct in_addr ip;             // IP
83  struct in_addr netmask;        // netmask
84  struct in_addr gw;             // gateway IP
85  bool dhcp;                     // DHCP enabled
86 };
87
88
89 struct swi_attr {
90  char product[PRODUCT_SIZE];    // product name (eg. GS108EV1)
91  char name[NAME_SIZE];          // custom name
92  char firmware[FIRMWARE_SIZE];  // firmware version string
93  unsigned char ports;           // number of ports
94  struct ether_addr mac;         // MAC address
95  struct net_conf nc;            // network configuration
96 };
97
98
99 struct port_stats {
100  unsigned long long recv;
101  unsigned long long sent;
102  unsigned long long crc;
103 };
104
105
106 struct igmp_conf {
107  bool enable;
108  unsigned short vlan;
109  bool validate;
110  bool block;
111 };
112
113
114 struct cabletest {
115  char port;
116  int v1;
117  int v2;
118 };
119
120
121
122 #ifdef __cplusplus
123 extern "C" {
124 #endif
125
126
127 // initialize NgAdmin lib
128 struct ngadmin* ngadmin_init (const char *iface) EXPORT;
129
130
131 // 
132 int ngadmin_close (struct ngadmin *nga) EXPORT;
133
134
135 // 
136 int ngadmin_forceInterface (struct ngadmin *nga) EXPORT;
137
138
139 // 
140 int ngadmin_setKeepBroadcasting (struct ngadmin *nga, bool value) EXPORT;
141
142
143 // specify password to use for authenticating on switches
144 int ngadmin_setPassword (struct ngadmin *nga, const char *pass) EXPORT;
145
146
147 // 
148 int ngadmin_setTimeout (struct ngadmin *nga, const struct timeval *tv) EXPORT;
149
150
151 // 
152 int ngadmin_scan (struct ngadmin *nga) EXPORT;
153
154
155 // 
156 const struct swi_attr* ngadmin_getSwitchTab (struct ngadmin *nga, int *nb) EXPORT;
157
158
159 // 
160 const struct swi_attr* ngadmin_getCurrentSwitch (struct ngadmin *nga) EXPORT;
161
162
163 // 
164 int ngadmin_login (struct ngadmin *nga, int id) EXPORT;
165
166
167 // 
168 int ngadmin_getPortsStatus (struct ngadmin *nga, unsigned char *ports) EXPORT;
169
170
171 // 
172 int ngadmin_setName (struct ngadmin *nga, const char *name) EXPORT;
173
174
175 // 
176 int ngadmin_getPortsStatistics (struct ngadmin *nga, struct port_stats *ps) EXPORT;
177
178
179 // 
180 int ngadmin_resetPortsStatistics (struct ngadmin *nga) EXPORT;
181
182
183 // 
184 int ngadmin_changePassword (struct ngadmin *nga, const char* pass) EXPORT;
185
186
187 // 
188 int ngadmin_getStormFilterState (struct ngadmin *nga, int *s) EXPORT;
189
190
191 // 
192 int ngadmin_setStormFilterState (struct ngadmin *nga, int s) EXPORT;
193
194
195 // 
196 int ngadmin_getStormFilterValues (struct ngadmin *nga, int *ports) EXPORT;
197
198
199 // 
200 int ngadmin_setStormFilterValues (struct ngadmin *nga, const int *ports) EXPORT;
201
202
203 // 
204 int ngadmin_getBitrateLimits (struct ngadmin *nga, int *ports) EXPORT;
205
206
207 // 
208 int ngadmin_setBitrateLimits (struct ngadmin *nga, const int *ports) EXPORT;
209
210
211 // 
212 int ngadmin_getQOSMode (struct ngadmin *nga, int *s) EXPORT;
213
214
215 // 
216 int ngadmin_setQOSMode (struct ngadmin *nga, int s) EXPORT;
217
218
219 // 
220 int ngadmin_getQOSValues (struct ngadmin *nga, char *ports) EXPORT;
221
222
223 // 
224 int ngadmin_setQOSValues (struct ngadmin *nga, const char *ports) EXPORT;
225
226
227 // 
228 int ngadmin_restart (struct ngadmin *nga) EXPORT;
229
230
231 // 
232 int ngadmin_defaults (struct ngadmin *nga) EXPORT;
233
234
235 // 
236 int ngadmin_getMirror (struct ngadmin *nga, char *ports) EXPORT;
237
238
239 // 
240 int ngadmin_setMirror (struct ngadmin *nga, const char *ports) EXPORT;
241
242
243 // 
244 int ngadmin_getIGMPConf (struct ngadmin *nga, struct igmp_conf *ic) EXPORT;
245
246
247 // 
248 int ngadmin_setIGMPConf (struct ngadmin *nga, const struct igmp_conf *ic) EXPORT;
249
250
251 // 
252 int ngadmin_cabletest (struct ngadmin *nga, struct cabletest *ct, int nb) EXPORT;
253
254
255 // 
256 int ngadmin_setNetConf (struct ngadmin *nga, const struct net_conf *nc) EXPORT;
257
258
259 // 
260 int ngadmin_getVLANType (struct ngadmin *nga, int *t) EXPORT;
261
262
263 // 
264 int ngadmin_setVLANType (struct ngadmin *nga, int t) EXPORT;
265
266
267 // 
268 int ngadmin_getVLANDotAllConf (struct ngadmin *nga, unsigned short *vlans, unsigned char *ports, int *nb) EXPORT;
269
270
271 // 
272 int ngadmin_getVLANDotConf (struct ngadmin *nga, unsigned short vlan, unsigned char *ports) EXPORT;
273
274
275 // 
276 int ngadmin_setVLANDotConf (struct ngadmin *nga, unsigned short vlan, const unsigned char *ports) EXPORT;
277
278
279 // 
280 int ngadmin_VLANDestroy (struct ngadmin *nga, unsigned short vlan) EXPORT;
281
282
283 // 
284 int ngadmin_getAllPVID (struct ngadmin *nga, unsigned short *ports) EXPORT;
285
286
287 // 
288 int ngadmin_setPVID (struct ngadmin *nga, unsigned char port, unsigned short vlan) EXPORT;
289
290
291
292 #ifdef __cplusplus
293 }
294 #endif
295
296
297
298 #endif
299