]> git.decadent.org.uk Git - odhcp6c.git/blobdiff - src/odhcp6c.h
Merge branch 'bugfix' into hnet
[odhcp6c.git] / src / odhcp6c.h
index 440381a56f1f37e04cedd4b9b48433c65bfe6f2b..1b46af01df98325b62913b06131bdcaff8cb4e6a 100644 (file)
@@ -51,6 +51,9 @@ enum dhcvp6_opt {
        DHCPV6_OPT_NTP_SERVER = 56,
        DHCPV6_OPT_SIP_SERVER_D = 21,
        DHCPV6_OPT_SIP_SERVER_A = 22,
+
+        /* draft-bhandari-dhc-class-based-prefix */
+       DHCPV6_OPT_PREFIX_CLASS = 200, /* NOT STANDARDIZED! */
 };
 
 enum dhcpv6_opt_npt {
@@ -131,7 +134,6 @@ struct dhcpv6_duid {
        uint8_t data[128];
 } _packed;
 
-
 #define dhcpv6_for_each_option(start, end, otype, olen, odata)\
        for (uint8_t *_o = (uint8_t*)(start); _o + 4 <= (uint8_t*)(end) &&\
                ((otype) = _o[0] << 8 | _o[1]) && ((odata) = (void*)&_o[4]) &&\
@@ -164,6 +166,7 @@ enum odhcp6c_state {
        STATE_SIP_FQDN,
        STATE_RA_ROUTE,
        STATE_RA_PREFIX,
+       STATE_RA_DNS,
        _STATE_MAX
 };
 
@@ -196,6 +199,7 @@ struct odhcp6c_entry {
        struct in6_addr target;
        uint32_t valid;
        uint32_t preferred;
+        uint32_t prefix_class;
 };
 
 
@@ -224,7 +228,7 @@ void* odhcp6c_get_state(enum odhcp6c_state state, size_t *len);
 
 // Entry manipulation
 struct odhcp6c_entry* odhcp6c_find_entry(enum odhcp6c_state state, const struct odhcp6c_entry *new);
-void odhcp6c_update_entry(enum odhcp6c_state state, const struct odhcp6c_entry *new);
-void odhcp6c_update_entry_safe(enum odhcp6c_state state, const struct odhcp6c_entry *new, uint32_t safe);
+void odhcp6c_update_entry(enum odhcp6c_state state, struct odhcp6c_entry *new);
+void odhcp6c_update_entry_safe(enum odhcp6c_state state, struct odhcp6c_entry *new, uint32_t safe);
 
 void odhcp6c_expire(void);