]> git.sur5r.net Git - ngadmin/blob - cli/src/common.c
Cli: add command to show network configuration details
[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\t\tPorts\tFirmware\n");
114         
115         for (i = 0; i < nb; i++)
116                 printf("%i\t%s\t%s\t%s\t\t%s\t%i\t%s\n", i, ether_ntoa(&sa[i].mac), sa[i].product, sa[i].name, inet_ntoa(sa[i].nc.ip), sa[i].ports, sa[i].firmware);
117         
118         printf("\nfound %i switch(es)\n", nb);
119 }
120
121
122 int trim (char *txt, int start)
123 {
124         char *p;
125         
126         if (txt == NULL)
127                 return 0;
128         
129         p = txt + start;
130         for (p--; p >= txt && (*p == ' ' || *p == '\n'); *p-- = 0);
131         
132         return p - txt + 1;
133 }
134
135
136 int explode (const char *commande, char** tab, int maximum)
137 {
138         const char *start, *end;
139         int n = 0, len;
140         
141         
142         for (end = commande; ; n++) {
143                 for (start = end; *start == ' ' && *start != 0; start++);
144                 for (end = start; (*end != ' ' || n >= maximum - 1 ) && *end != 0; end++);
145                 
146                 len = end - start;
147                 if (len == 0)
148                         break;
149                 
150                 tab[n] = malloc(sizeof(char) * (len + 1));
151                 memcpy(tab[n], start, len);
152                 tab[n][len] = 0;
153         }
154         
155         
156         return n;
157 }
158
159