struct odhcpd_ipaddr {
struct in6_addr addr;
uint8_t prefix;
+ bool has_class;
+ uint16_t class;
uint32_t preferred;
uint32_t valid;
};
int ifindex;
char ifname[IF_NAMESIZE];
char name[IF_NAMESIZE];
- bool inuse;
// Runtime data
struct uloop_timeout timer_rs;
enum odhcpd_mode dhcpv4;
// Config
+ bool inuse;
bool external;
bool master;
bool ignore;
bool always_rewrite_dns;
- bool deprecate_ula_if_public_avail;
bool ra_not_onlink;
bool no_dynamic_dhcp;
ssize_t odhcpd_unhexlify(uint8_t *dst, size_t len, const char *src);
void odhcpd_hexlify(char *dst, const uint8_t *src, size_t len);
-int config_parse_interface(struct blob_attr *b, const char *iname);
+int config_parse_interface(void *data, size_t len, const char *iname, bool overwrite);
+#ifdef WITH_UBUS
+int init_ubus(void);
const char* ubus_get_ifname(const char *name);
void ubus_apply_network(void);
+bool ubus_has_prefix(const char *name, const char *ifname);
+bool ubus_get_class(const char *ifname, const struct in6_addr *addr, uint16_t *pclass);
+#endif
// Exported module initializers
int init_dhcpv6(void);
int init_dhcpv4(void);
int init_ndp(void);
-int init_ubus(void);
int setup_router_interface(struct interface *iface, bool enable);
int setup_dhcpv6_interface(struct interface *iface, bool enable);
int setup_ndp_interface(struct interface *iface, bool enable);
int setup_dhcpv4_interface(struct interface *iface, bool enable);
+
+void odhcpd_reload(void);