]> git.proxmox.com Git - mirror_kronosnet.git/commitdiff
[libtap] tests: add better IPv6 private address space randomization
authorFabio M. Di Nitto <fdinitto@redhat.com>
Tue, 7 Nov 2017 10:08:32 +0000 (11:08 +0100)
committerFabio M. Di Nitto <fdinitto@redhat.com>
Tue, 18 Dec 2018 04:55:08 +0000 (05:55 +0100)
Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
libtap/libtap.c

index e0ebee2b21d007c70a1031a6fe4189940381fd45..b8e5f53635d0a0773d9685377f4a758616c999ef 100644 (file)
@@ -2122,6 +2122,7 @@ static void make_local_ips(void)
 {
        pid_t mypid;
        uint8_t *pid;
+       uint8_t i;
 
        if (sizeof(pid_t) < 4) {
                printf("pid_t is smaller than 4 bytes?\n");
@@ -2136,33 +2137,39 @@ static void make_local_ips(void)
        mypid = getpid();
        pid = (uint8_t *)&mypid;
 
+       for (i = 0; i < sizeof(pid_t); i++) {
+               if (pid[i] == 0) {
+                       pid[i] = 128;
+               }
+       }
+
        snprintf(testipv4_1,
                 sizeof(testipv4_1) - 1,
                 "127.%u.%u.%u",
-                pid[0],
                 pid[1],
-                pid[2]);
+                pid[2],
+                pid[0]);
 
        snprintf(testipv4_2,
                 sizeof(testipv4_2) - 1,
                 "127.%u.%d.%u",
-                pid[0],
-                pid[1]+1,
-                pid[2]);
+                pid[1],
+                pid[2]+1,
+                pid[0]);
 
        snprintf(testipv6_1,
                 sizeof(testipv6_1) - 1,
-                "::%u:%u:%u:1",
-                pid[0],
+                "fd%x:%x%x::1",
                 pid[1],
-                pid[2]);
+                pid[2],
+                pid[0]);
 
        snprintf(testipv6_2,
                 sizeof(testipv6_2) - 1,
-                "::%u:%u:%d:1",
-                pid[0],
+                "fd%x:%x%x:1::1",
                 pid[1],
-                pid[2]+1);
+                pid[2],
+                pid[0]);
 }
 
 int main(void)