> Pretty sure this is a botched firmware upgrade for your modem.
>
> rfc 6842 has this:
> If the 'client identifier' option is present in a message received
> from a client, the server MUST return the 'client identifier' option,
> unaltered, in its response message.
>
> But android and iphone do not care, so we can't care either.
>
> Please try this
>
> diff --git engine.c engine.c
> index a2a5fdc859e..95121340c6c 100644
> --- engine.c
> +++ engine.c
> @@ -1100,19 +1100,19 @@ parse_dhcp(struct dhcpleased_iface *iface,
> struct imsg_dhcp *dhcp)
> rem -= dho_len;
> break;
> case DHO_DHCP_CLIENT_IDENTIFIER:
> - /* the server is supposed to echo this back to us */
> + /*
> + * The server is supposed to echo this back to us
> + * (RFC6841), but of course they don't.
> + */
> #ifndef SMALL
> if (iface_conf != NULL && iface_conf->c_id_len > 0) {
> if (dho_len != iface_conf->c_id[1]) {
> log_warnx("wrong "
> "DHO_DHCP_CLIENT_IDENTIFIER");
> - return;
> - }
> - if (memcmp(p, &iface_conf->c_id[2], dho_len) !=
> - 0) {
> + } else if (memcmp(p, &iface_conf->c_id[2],
> + dho_len) != 0) {
> log_warnx("wrong "
> "DHO_DHCP_CLIENT_IDENTIFIER");
> - return;
> }
> } else
> #endif /* SMALL */
> @@ -1122,13 +1122,11 @@ parse_dhcp(struct dhcpleased_iface *iface,
> struct imsg_dhcp *dhcp)
> if (*p != HTYPE_ETHER) {
> log_warnx("DHO_DHCP_CLIENT_IDENTIFIER: "
> "wrong type");
> - return;
> }
> if (memcmp(p + 1, &iface->hw_address,
> sizeof(iface->hw_address)) != 0) {
> log_warnx("wrong "
> "DHO_DHCP_CLIENT_IDENTIFIER");
> - return;
> }
> }
> p += dho_len;
>
Thanks a lot, this seems to do the trick. I've reverted from static
configuration to DHCP.
I'll confirm in a few days if that holds. but I've just ran dhcpleased in the
foreground
for a fair few times now without issues.
Best,
Thomas