10 void printErrCode (int err) {
14 case ERR_OK: /*printf("ok\n");*/ break;
15 case ERR_NET: printf("network error\n"); break;
16 case ERR_NOTLOG: printf("no switch selected\n"); break;
17 case ERR_BADPASS: printf("wrong password\n"); break;
18 case ERR_BADID: printf("bad switch id\n"); break;
19 case ERR_INVARG: printf("invalid argument\n"); break;
20 case ERR_TIMEOUT: printf("timeout\n"); break;
21 default: printf("unknown status code (%i)\n", err);
30 const char* bitrates[]={
48 int parseBitrate (const char *s) {
53 for (i=0; bitrates[i]!=NULL && strcasecmp(bitrates[i], s)!=0; ++i);
62 void displaySwitchTab (const struct swi_attr *sa, int nb) {
68 printf("no switch found\n");
73 printf("Num\tMac\t\t\tProduct\t\tName\t\t\tIP/mask\t\t\t\tDHCP\tPorts\tFirmware\n");
75 for (i=0; i<nb; ++i) {
76 printf("%i\t%s\t%s\t\t%s\t%s/", i, ether_ntoa(&sa[i].mac), sa[i].product, sa[i].name, inet_ntoa(sa[i].nc.ip));
77 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);
80 printf("\nfound %i switch(es)\n", nb);
87 // ----------------------------
88 int trim (char *txt, int start) {
97 //for (p=txt; *p!=0; p++);
99 for (p--; p>=txt && ( (c=*p)==' ' || c=='\n' ); *p--=0);
108 // --------------------------------------------------------
109 int explode (const char *commande, char** tab, int maximum) {
111 const char *start, *end;
116 for (end=commande; ; n++) {
118 for (start=end; (c=*start)==' ' && c!=0; start++);
119 for (end=start; ( (c=*end)!=' ' || n>=maximum-1 ) && c!=0; end++);
121 if ( (len=end-start)==0 ) {
125 tab[n]=malloc(sizeof(char)*(len+1));
126 memcpy(tab[n], start, len);