3 void shell_vlan(char ** argv, int elem) {
8 printf(" vlan [show|enable|show|add|del|assign|revoke] \n");
12 if (strncmp(argv[1], "enable", 6) == 0) {
14 printError(gs105e_vlanEnable());
18 if (settings.vlanType != 4) {
19 printf("Type vlan enable once to configure vlan\n");
23 if (strncmp(argv[1], "show", 4) == 0) {
24 struct vlan * vl = settings.vlans;
33 printf("%u\t", vl->id);
34 for (n = 0; n < 5; n++)
35 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);
40 }else if (strncmp(argv[1], "add", 3) == 0) {
42 printf("You need to provide a vlan ID to add!\n");
47 printf("Invalid id!\n");
51 printError(gs105e_addVlan(n));
52 }else if (strncmp(argv[1], "del", 3) == 0) {
55 printf("You need to provide a vlan ID to add!\n");
60 struct vlan * vl = settings.vlans;
71 printf("Invalid id!\n");
75 printError(gs105e_delVlan(n));
76 }else if (strncmp(argv[1], "assign", 6) == 0) {
78 printf("vlan assign [vlan ID] [port ID] [T|U]\n");
81 int n = atoi(argv[2]);
82 struct vlan * vl = settings.vlans;
93 printf("Invalid Vlan ID\n");
100 printf("Invalid Port ID\n");
104 m = (0x80 >> ((m & 0xFF) - 1)) | (int)vl->members;
105 printf("%i %i\n", (int)vl->tag, (unsigned int)(~((unsigned char)m)));
106 if (strncmp(argv[4], "T", 1) == 0) {
107 o = (int)vl->tag | (0x80 >> ((o & 0xFF) - 1));
108 }else if (strncmp(argv[4], "U", 1) == 0) {
109 o = (int)vl->tag &(~((0x80 >> ((o & 0xFF) - 1))));
112 printError(gs105e_setVlanMembers(n, m, o));
114 }else if (strncmp(argv[1], "revoke", 6) == 0) {
116 printf("vlan revoke [vlan ID] [port ID]\n");
119 int n = atoi(argv[2]);
120 struct vlan * vl = settings.vlans;
131 printf("Invalid Vlan ID\n");
138 printf("Invalid Port ID\n");
142 m = (~(0x80 >> ((m & 0xFF) - 1))) & (int)vl->members;
145 o = (int)vl->tag &(~((char)m));
148 printError(gs105e_setVlanMembers(n, m, o));