]> git.sur5r.net Git - ngadmin/blob - cli/src/common.c
Add error codes to handle bad replies and unknown errors
[ngadmin] / cli / src / common.c
1
2 #include "common.h"
3
4
5 void printErrCode (int err)
6 {
7         switch (err) {
8         case ERR_OK:
9                 break;
10         
11         case ERR_NET:
12                 printf("network error\n");
13                 break;
14         
15         case ERR_NOTLOG:
16                 printf("no switch selected\n");
17                 break;
18         
19         case ERR_DENIED:
20                 printf("access denied\n");
21                 break;
22         
23         case ERR_BADPASS:
24                 printf("wrong password\n");
25                 break;
26         
27         case ERR_BADID:
28                 printf("bad switch id\n");
29                 break;
30         
31         case ERR_INVARG:
32                 printf("invalid argument\n");
33                 break;
34         
35         case ERR_TIMEOUT:
36                 printf("timeout\n");
37                 break;
38         
39         case ERR_NOTIMPL:
40                 printf("not implemented\n");
41                 break;
42         
43         case ERR_BADREPLY:
44                 printf("bad reply from switch\n");
45                 break;
46         
47         case ERR_UNKNOWN:
48                 printf("unknown error\n");
49                 break;
50         
51         default:
52                 printf("unknown status code (%i)\n", err);
53         }
54 }
55
56
57 const char* const bitrates[] = {
58         "nl",
59         "512K",
60         "1M",
61         "2M",
62         "4M",
63         "8M",
64         "16M",
65         "32M",
66         "64M",
67         "128M",
68         "256M",
69         "512M",
70         NULL
71 };
72
73
74 const char* const prio[]={
75         NULL,
76         "high",
77         "medium",
78         "normal",
79         "low",
80         NULL
81 };
82
83
84 int parseBitrate (const char *s)
85 {
86         int i;
87         
88         for (i = 0; bitrates[i] != NULL && strcasecmp(bitrates[i], s) != 0; i++);
89         
90         return i;
91 }
92
93
94 char parsePrio (const char *s)
95 {
96         int i;
97         
98         for (i = 1; prio[i] != NULL && strcasecmp(prio[i], s) != 0; i++);
99         
100         return (char)i;
101 }
102
103
104 void displaySwitchTab (const struct swi_attr *sa, int nb)
105 {
106         int i=0;
107         
108         if (nb == 0) {
109                 printf("no switch found\n");
110                 return;
111         }
112         
113         printf("Num\tMac\t\t\tProduct\t\tName\t\t\tIP/mask\t\t\tDHCP\tPorts\tFirmware\n");
114         
115         for (i = 0; i < nb; i++) {
116                 printf("%i\t%s\t%s\t%s\t\t%s/", i, ether_ntoa(&sa[i].mac), sa[i].product, sa[i].name, inet_ntoa(sa[i].nc.ip));
117                 printf("%s\t%s\t%i\t%s\n", inet_ntoa(sa[i].nc.netmask), ( sa[i].nc.dhcp ? "Yes" : "No" ), sa[i].ports, sa[i].firmware);
118         }
119         
120         printf("\nfound %i switch(es)\n", nb);
121 }
122
123
124 int trim (char *txt, int start)
125 {
126         char *p;
127         
128         if (txt == NULL)
129                 return 0;
130         
131         p = txt + start;
132         for (p--; p >= txt && (*p == ' ' || *p == '\n'); *p-- = 0);
133         
134         return p - txt + 1;
135 }
136
137
138 int explode (const char *commande, char** tab, int maximum)
139 {
140         const char *start, *end;
141         int n = 0, len;
142         
143         
144         for (end = commande; ; n++) {
145                 for (start = end; *start == ' ' && *start != 0; start++);
146                 for (end = start; (*end != ' ' || n >= maximum - 1 ) && *end != 0; end++);
147                 
148                 len = end - start;
149                 if (len == 0)
150                         break;
151                 
152                 tab[n] = malloc(sizeof(char) * (len + 1));
153                 memcpy(tab[n], start, len);
154                 tab[n][len] = 0;
155         }
156         
157         
158         return n;
159 }
160
161