]> git.sur5r.net Git - gsconf/blobdiff - shell_vlan.c
fixed typo
[gsconf] / shell_vlan.c
index 83f004a0a0ba3d625a44c80e099f9e3f98263748..661eb3d77c6143d16d5d5cac5099f636e6d66546 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;
                 
@@ -88,13 +100,13 @@ void shell_vlan(char ** argv, int elem) {
                         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));