odhcp6c: fix IA discard when T1 > 0 and T2 = 0
authorDávid Benko <davidbenko@davidbenko.dev>
Wed, 13 Jul 2022 07:33:54 +0000 (09:33 +0200)
committerHans Dedecker <dedeckeh@gmail.com>
Wed, 13 Jul 2022 19:54:00 +0000 (21:54 +0200)
commit9212bfcbab7681cd30186ac7f1ef4c47bf38c89a
tree4e3dc3de2b8b3346d0bc12f2db25f718ef062f5a
parent39b584bcac8770619b545d6ae344758f87028612
odhcp6c: fix IA discard when T1 > 0 and T2 = 0

My ISP uses DHCPv6 advertisements where IA_PD T1 is non-zero (43200) and
T2 is zero. Current implementation of odhcp6c doesn't handle that and
just switches to stateless mode.

According to RFC 8415, section [21.21](https://datatracker.ietf.org/doc/html/rfc8415#section-21.21):
> If a client receives an IA_PD with T1 greater than T2 and both T1 and
  T2 are greater than 0, the client discards the IA_PD option and
  processes the remainder of the message as though the server had not
  included the IA_PD option.

Currently odhcp6c discards IA_PD option if `t1 > t2`:
https://github.com/openwrt/odhcp6c/blob/39b584bcac8770619b545d6ae344758f87028612/src/dhcpv6.c#L1346-L1347

The same applies for IA_NA.

Fix it by editing IA discard condition according to RFC.

Signed-off-by: Dávid Benko <davidbenko@davidbenko.dev>
src/dhcpv6.c