X-Git-Url: https://git.decadent.org.uk/gitweb/?p=odhcp6c.git;a=blobdiff_plain;f=src%2Fdhcpv6.c;h=b7fccaca62e78e9a048b8da5151677523ef69dcd;hp=4fbff843459b0614ecc0c840bff2781261a44bd4;hb=0300fe7589a1701361735ac068e4b57bb1a1896f;hpb=74b94c1442ec0897c1f90a314838594a5d42bb87 diff --git a/src/dhcpv6.c b/src/dhcpv6.c index 4fbff84..b7fccac 100644 --- a/src/dhcpv6.c +++ b/src/dhcpv6.c @@ -179,11 +179,9 @@ int init_dhcpv6(const char *ifname, unsigned int options, int sol_timeout) #ifdef EXT_CER_ID htons(DHCPV6_OPT_CER_ID), #endif -#ifdef EXT_S46 htons(DHCPV6_OPT_S46_CONT_MAPE), htons(DHCPV6_OPT_S46_CONT_MAPT), htons(DHCPV6_OPT_S46_CONT_LW), -#endif }; odhcp6c_add_state(STATE_ORO, oro, sizeof(oro)); } @@ -366,7 +364,7 @@ static void dhcpv6_send(enum dhcpv6_msg type, uint8_t trid[3], uint32_t ecs) struct dhcpv6_ia_hdr hdr_ia_na = { htons(DHCPV6_OPT_IA_NA), htons(sizeof(hdr_ia_na) - 4), - 1, 0, 0 + htonl(1), 0, 0 }; struct dhcpv6_ia_addr pa[ia_na_entries]; @@ -934,7 +932,7 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _unused const int rc, struct dhcpv6_ia_hdr *ia_hdr = (void*)(&odata[-4]); // Test ID - if (ia_hdr->iaid != 1 && otype == DHCPV6_OPT_IA_NA) + if (ia_hdr->iaid != htonl(1) && otype == DHCPV6_OPT_IA_NA) continue; uint16_t code = DHCPV6_Success; @@ -980,6 +978,7 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _unused const int rc, odhcp6c_add_state(STATE_DNS, odata, olen); } else if (otype == DHCPV6_OPT_DNS_DOMAIN) { odhcp6c_add_state(STATE_SEARCH, odata, olen); + passthru = false; } else if (otype == DHCPV6_OPT_SNTP_SERVERS) { if (olen % 16 == 0) odhcp6c_add_state(STATE_SNTP_IP, odata, olen); @@ -1040,7 +1039,6 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _unused const int rc, odhcp6c_add_state(STATE_CER, &cer_id->addr, sizeof(any)); passthru = false; #endif -#ifdef EXT_S46 } else if (otype == DHCPV6_OPT_S46_CONT_MAPT) { odhcp6c_add_state(STATE_S46_MAPT, odata, olen); passthru = false; @@ -1053,13 +1051,13 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _unused const int rc, } else if (otype == DHCPV6_OPT_S46_CONT_LW) { odhcp6c_add_state(STATE_S46_LW, odata, olen); passthru = false; -#endif } else if (otype == DHCPV6_OPT_CLIENTID || otype == DHCPV6_OPT_SERVERID || otype == DHCPV6_OPT_IA_TA || otype == DHCPV6_OPT_PREF || otype == DHCPV6_OPT_UNICAST || - otype == DHCPV6_OPT_FQDN) { + otype == DHCPV6_OPT_FQDN || + otype == DHCPV6_OPT_RECONF_ACCEPT) { passthru = false; } else { odhcp6c_add_state(STATE_CUSTOM_OPTS, &odata[-4], olen + 4);