3 void shell_vlan(char ** argv, int elem) {
11 if (strncmp(argv[1], "show", 4) == 0) {
12 struct vlan * vl = settings.vlans;
21 printf("%u\t", vl->id);
22 for (n = 0; n < 5; n++)
23 printf("%s\t", vl->members & (0x80 >> n) ? (vl->tag & (0x80 >> n) ? "\033[93mT\033[0m" : "\033[92mU\033[0m") : "\033[91m-\033[0m", (unsigned int) vl->members);
28 }else if (strncmp(argv[1], "add", 3) == 0) {
30 printf("You need to provide a vlan ID to add!\n");
35 printf("Invalid id!\n");
39 printError(gs105e_addVlan(n));
40 }else if (strncmp(argv[1], "del", 3) == 0) {
43 printf("You need to provide a vlan ID to add!\n");
48 struct vlan * vl = settings.vlans;
59 printf("Invalid id!\n");
63 printError(gs105e_delVlan(n));
64 }else if (strncmp(argv[1], "assign", 6) == 0) {
66 printf("vlan assign [vlan ID] [port ID] [T|U]\n");
69 int n = atoi(argv[2]);
70 struct vlan * vl = settings.vlans;
81 printf("Invalid Vlan ID\n");
88 printf("Invalid Port ID\n");
92 m = (0x80 >> ((m & 0xFF) - 1)) | (int)vl->members;
94 if (strncmp(argv[4], "T", 1) == 0) {
96 }else if (strncmp(argv[4], "U", 1) == 0) {
97 o = (int)vl->tag &(~((char)m));
100 printError(gs105e_setVlanMembers(n, m, o));
102 }else if (strncmp(argv[1], "revoke", 6) == 0) {
104 printf("vlan revoke [vlan ID] [port ID]\n");
107 int n = atoi(argv[2]);
108 struct vlan * vl = settings.vlans;
119 printf("Invalid Vlan ID\n");
126 printf("Invalid Port ID\n");
130 m = (~(0x80 >> ((m & 0xFF) - 1))) & (int)vl->members;
133 o = (int)vl->tag &(~((char)m));
136 printError(gs105e_setVlanMembers(n, m, o));