dhcpv6: Subtract option length before returning one option

dhcpv6_opt() needs to subtract option length _before_ returning,
so that callers can conveniently pass the remaining length on
subsequent calls.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-04-22 02:30:20 +02:00
parent ad60ab1b37
commit 49c766398d

View file

@ -277,10 +277,11 @@ static struct opt_hdr *dhcpv6_opt(struct opt_hdr *o, uint16_t type, size_t *len)
if (ntohs(o->l) > *len)
return NULL;
*len -= ntohs(o->l) + sizeof(struct opt_hdr);
if (o->t == type)
return o;
*len -= ntohs(o->l) + sizeof(struct opt_hdr);
o = (struct opt_hdr *)((uint8_t *)(o + 1) + ntohs(o->l));
}