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