interface-ip: fix misuse of IN6_IS_ADDR_LINKLOCAL on a netifd specific union
[project/netifd.git] / interface-ip.c
index b000725..018b657 100644 (file)
@@ -400,6 +400,9 @@ route_cmp(const void *k1, const void *k2, void *ptr)
        if (r1->sourcemask != r2->sourcemask)
                return r1->sourcemask - r2->sourcemask;
 
+       if (r1->table != r2->table)
+               return r1->table - r2->table;
+
        int maskcmp = memcmp(&r1->source, &r2->source, sizeof(r1->source));
        if (maskcmp)
                return maskcmp;
@@ -1040,7 +1043,7 @@ write_resolv_conf_entries(FILE *f, struct interface_ip_settings *ip, const char
                if (!str)
                        continue;
 
-               if (s->af == AF_INET6 && IN6_IS_ADDR_LINKLOCAL(&s->addr))
+               if (s->af == AF_INET6 && IN6_IS_ADDR_LINKLOCAL(&s->addr.in6))
                        fprintf(f, "nameserver %s%%%s\n", str, dev);
                else
                        fprintf(f, "nameserver %s\n", str);