" -F Force IPv6-Prefix\n"
" -V <class> Set vendor-class option (base-16 encoded)\n"
" -u <user-class> Set user-class option string\n"
- " -c <clientid> Override client-ID (base-16 encoded)\n"
+ " -c <clientid> Override client-ID (base-16 encoded 16-bit type + value)\n"
" -i <iface-id> Use a custom interface identifier for RA handling\n"
" -r <options> Options to be requested (comma-separated)\n"
" -R Do not request any options except those specified with -r\n"
" -e Write logmessages to stderr\n"
" -v Increase logging verbosity\n"
" -h Show this help\n\n";
- write(STDERR_FILENO, buf, sizeof(buf));
+ fputs(buf, stderr);
return 1;
}
}
-struct odhcp6c_entry* odhcp6c_find_entry(enum odhcp6c_state state, const struct odhcp6c_entry *new)
+static struct odhcp6c_entry* odhcp6c_find_entry(enum odhcp6c_state state, const struct odhcp6c_entry *new)
{
- size_t len, cmplen = offsetof(struct odhcp6c_entry, target) + new->length / 8;
+ size_t len, cmplen = offsetof(struct odhcp6c_entry, target) + ((new->length + 7) / 8);
struct odhcp6c_entry *start = odhcp6c_get_state(state, &len);
struct odhcp6c_entry *x = NULL;
new->valid - x->valid < min_update_interval &&
new->preferred >= x->preferred &&
new->preferred != UINT32_MAX &&
- new->preferred - x->preferred < min_update_interval &&
- x->class == new->class)
+ new->preferred - x->preferred < min_update_interval)
return false;
x->valid = new->valid;
x->preferred = new->preferred;
x->t1 = new->t1;
x->t2 = new->t2;
- x->class = new->class;
x->iaid = new->iaid;
} else {
odhcp6c_add_state(state, new, sizeof(*new));
}
-void odhcp6c_random(void *buf, size_t len)
+int odhcp6c_random(void *buf, size_t len)
{
- read(urandom_fd, buf, len);
+ return read(urandom_fd, buf, len);
}
bool odhcp6c_is_bound(void)