]> git.decadent.org.uk Git - odhcp6c.git/blobdiff - src/odhcp6c.h
Merge remote-tracking branch 'up/master' into hnet
[odhcp6c.git] / src / odhcp6c.h
index aa0bc224169221e12a2300e6db1c69e64cdbc7cf..e0f6f62ce386515b73df1fea85f8e7582d7e677d 100644 (file)
@@ -51,7 +51,10 @@ enum dhcvp6_opt {
        DHCPV6_OPT_NTP_SERVER = 56,
        DHCPV6_OPT_SIP_SERVER_D = 21,
        DHCPV6_OPT_SIP_SERVER_A = 22,
+       DHCPV6_OPT_AFTR_NAME = 64,
        DHCPV6_OPT_PD_EXCLUDE = 67,
+        /* draft-bhandari-dhc-class-based-prefix */
+       DHCPV6_OPT_PREFIX_CLASS = 200, /* NOT STANDARDIZED! */
 };
 
 enum dhcpv6_opt_npt {
@@ -139,7 +142,6 @@ struct dhcpv6_auth_reconfigure {
        uint8_t algorithm;
        uint8_t rdm;
        uint64_t replay;
-       uint8_t auth;
        uint8_t reconf_type;
        uint8_t key[16];
 } _packed;
@@ -158,6 +160,10 @@ struct dhcpv6_server_cand {
        int16_t preference;
        uint8_t duid_len;
        uint8_t duid[130];
+       void *ia_na;
+       void *ia_pd;
+       size_t ia_na_len;
+       size_t ia_pd_len;
 };
 
 
@@ -178,6 +184,7 @@ enum odhcp6c_state {
        STATE_RA_ROUTE,
        STATE_RA_PREFIX,
        STATE_RA_DNS,
+       STATE_AFTR_NAME,
        _STATE_MAX
 };
 
@@ -210,6 +217,7 @@ struct odhcp6c_entry {
        struct in6_addr target;
        uint32_t valid;
        uint32_t preferred;
+        uint32_t prefix_class;
 };
 
 
@@ -225,6 +233,7 @@ int set_rtnetlink_addr(int ifindex, const struct in6_addr *addr,
 int script_init(const char *path, const char *ifname);
 ssize_t script_unhexlify(uint8_t *dst, size_t len, const char *src);
 void script_call(const char *status);
+void script_delay_call(const char *status, int timeout);
 
 bool odhcp6c_signal_process(void);
 uint64_t odhcp6c_get_milli_time(void);
@@ -234,6 +243,7 @@ void odhcp6c_random(void *buf, size_t len);
 void odhcp6c_clear_state(enum odhcp6c_state state);
 void odhcp6c_add_state(enum odhcp6c_state state, const void *data, size_t len);
 size_t odhcp6c_remove_state(enum odhcp6c_state state, size_t offset, size_t len);
+void* odhcp6c_move_state(enum odhcp6c_state state, size_t *len);
 void* odhcp6c_get_state(enum odhcp6c_state state, size_t *len);
 
 // Entry manipulation
@@ -242,3 +252,4 @@ 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);
+uint32_t odhcp6c_elapsed(void);