]> git.sur5r.net Git - gsconf/blobdiff - shell_vlan.c
A bunch of fixes for various compiler warnings
[gsconf] / shell_vlan.c
index 83f004a0a0ba3d625a44c80e099f9e3f98263748..abe0382881fcf973db011083b4c59f7643b285e5 100644 (file)
@@ -5,9 +5,21 @@ void shell_vlan(char ** argv, int elem) {
         int n, m, o;
         
         if (elem == 1) {
+                printf(" vlan [show|enable|show|add|del|assign|revoke] \n");
+                return;
+        }
         
+        if (strncmp(argv[1], "enable", 6) == 0) {
+                password();
+                printError(gs105e_vlanEnable());
                 return;
         }
+        
+        if (settings.vlanType != 4) {
+                printf("Type vlan enable once to configure vlan\n");
+                return;
+        }
+        
         if (strncmp(argv[1], "show", 4) == 0) {
                 struct vlan * vl = settings.vlans;
                 
@@ -20,7 +32,7 @@ void shell_vlan(char ** argv, int elem) {
                 while (vl != NULL) {
                         printf("%u\t", vl->id);
                         for (n = 0; n < 5; n++)
-                                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);
+                                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*/);
                         printf("\n");
                         vl = vl->next;
                 }
@@ -84,17 +96,17 @@ void shell_vlan(char ** argv, int elem) {
                 
                 m = atoi(argv[3]);
                 
-                if (m < 1 | m > 5) {
+                if ((m < 1) | (m > 5)) {
                         printf("Invalid Port ID\n");
                         return;
                 }         
-                
+                o = m;
                 m  = (0x80 >> ((m & 0xFF) - 1))  | (int)vl->members;
-                
+                printf("%i  %i\n", (int)vl->tag, (unsigned int)(~((unsigned char)m)));
                 if (strncmp(argv[4], "T", 1) == 0) {
-                        o = (int)vl->tag | m;
+                        o = (int)vl->tag | (0x80 >> ((o & 0xFF) - 1));
                 }else if (strncmp(argv[4], "U", 1) == 0) {
-                        o = (int)vl->tag &(~((char)m));
+                        o = (int)vl->tag &(~((0x80 >> ((o & 0xFF) - 1))));
                 }
                 password();
                 printError(gs105e_setVlanMembers(n, m, o));
@@ -122,7 +134,7 @@ void shell_vlan(char ** argv, int elem) {
                 
                 m = atoi(argv[3]);
                 
-                if (m < 1 | m > 5) {
+                if ((m < 1) | (m > 5)) {
                         printf("Invalid Port ID\n");
                         return;
                 }