map: ignore insignificant PSID bits
[openwrt/openwrt.git] / package / network / ipv6 / map / src / mapcalc.c
index b9fab4d9238684845bd6ed373af0923afff60168..7aa28e57d52eff59bb8c6d9a4ae77286a6be72d7 100644 (file)
@@ -314,7 +314,9 @@ int main(int argc, char *argv[])
                        psid = be16_to_cpu(psid16);
                }
 
-               psid16 = cpu_to_be16(psid >> (16 - psidlen));
+               psid = psid >> (16 - psidlen);
+               psid16 = cpu_to_be16(psid);
+               psid = psid << (16 - psidlen);
 
                if (prefix4len < 0 || prefix6len < 0 || ealen < 0 || ealen < psidlen) {
                        fprintf(stderr, "Skipping invalid or incomplete rule: %s\n", argv[i]);