Initial rewrite of NDP proxy
[project/odhcpd.git] / src / router.h
index 8d74967..1e8649c 100644 (file)
 struct icmpv6_opt {
        uint8_t type;
        uint8_t len;
+       uint8_t data[6];
 };
 
-struct nd_opt_slla {
-       uint8_t type;
-       uint8_t len;
-       uint8_t addr[6];
-};
-
-struct nd_opt_recursive_dns {
-       uint8_t type;
-       uint8_t len;
-       uint8_t pad;
-       uint8_t pad2;
-       uint32_t lifetime;
-};
 
 #define icmpv6_for_each_option(opt, start, end)\
        for (opt = (struct icmpv6_opt*)(start);\
-       (void*)(opt + (opt->len << 3)) <= (void*)(end); opt += (opt->len << 3))
+       (void*)(opt + 1) <= (void*)(end) && opt->len > 0 &&\
+       (void*)(opt + opt->len) <= (void*)(end); opt += opt->len)
+
 
 #define MaxRtrAdvInterval 600
 #define MinRtrAdvInterval (MaxRtrAdvInterval / 3)