@john9527 , would you consider this correct?
if (inet_ntop(AF_INET6, &addr, buf, sizeof(buf))) {
strlcat(buf, "/64", sizeof(buf));
eval("ip", "-6", "addr", "add", buf, "dev", (char *) ifname, "scope", "link");
}
A change to IPv6 code, committed here . It adds the /64 prefix...