struct interface *iface, void *dest_addr);
-
// Create socket and register events
-int init_dhcpv6(void)
+int dhcpv6_init(void)
{
dhcpv6_ia_init();
return 0;
}
-
-int setup_dhcpv6_interface(struct interface *iface, bool enable)
+int dhcpv6_setup_interface(struct interface *iface, bool enable)
{
if (iface->dhcpv6_event.uloop.fd > 0) {
uloop_fd_delete(&iface->dhcpv6_event.uloop);
struct ipv6_mreq server = {ALL_DHCPV6_SERVERS, iface->ifindex};
setsockopt(sock, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &relay, sizeof(relay));
- if (iface->dhcpv6 == RELAYD_SERVER)
+ if (iface->dhcpv6 == MODE_SERVER)
setsockopt(sock, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &server, sizeof(server));
iface->dhcpv6_event.uloop.fd = sock;
odhcpd_register(&iface->dhcpv6_event);
}
- return setup_dhcpv6_ia_interface(iface, enable);
+ return dhcpv6_setup_ia_interface(iface, enable);
}
enum {
static void handle_dhcpv6(void *addr, void *data, size_t len,
struct interface *iface, void *dest_addr)
{
- if (iface->dhcpv6 == RELAYD_SERVER) {
+ if (iface->dhcpv6 == MODE_SERVER) {
handle_client_request(addr, data, len, iface, dest_addr);
- } else if (iface->dhcpv6 == RELAYD_RELAY) {
+ } else if (iface->dhcpv6 == MODE_RELAY) {
if (iface->master)
relay_server_response(data, len);
else
struct odhcpd_ipaddr *addr = NULL;
time_t now = odhcpd_time();
- for (size_t i = 0; i < iface->ia_addr_len; i++) {
- if (iface->ia_addr[i].valid <= (uint32_t)now)
+ for (size_t i = 0; i < iface->addr6_len; i++) {
+ if (iface->addr6[i].valid <= (uint32_t)now)
continue;
- if (iface->ia_addr[i].preferred > (uint32_t)now) {
- addr = &iface->ia_addr[i];
+ if (iface->addr6[i].preferred > (uint32_t)now) {
+ addr = &iface->addr6[i];
break;
}
- if (!addr || (iface->ia_addr[i].valid > addr->valid))
- addr = &iface->ia_addr[i];
+ if (!addr || (iface->addr6[i].valid > addr->valid))
+ addr = &iface->addr6[i];
}
return addr;
{
struct interface *master = odhcpd_get_master_interface();
const struct dhcpv6_relay_header *h = data;
- if (!master || master->dhcpv6 != RELAYD_RELAY ||
+ if (!master || master->dhcpv6 != MODE_RELAY ||
h->msg_type == DHCPV6_MSG_RELAY_REPL ||
h->msg_type == DHCPV6_MSG_RECONFIGURE ||
h->msg_type == DHCPV6_MSG_REPLY ||