diff options
Diffstat (limited to 'accel-pppd/ipv6/dhcpv6_packet.c')
-rw-r--r-- | accel-pppd/ipv6/dhcpv6_packet.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/accel-pppd/ipv6/dhcpv6_packet.c b/accel-pppd/ipv6/dhcpv6_packet.c index 8decc8b..fd2b0dd 100644 --- a/accel-pppd/ipv6/dhcpv6_packet.c +++ b/accel-pppd/ipv6/dhcpv6_packet.c @@ -82,20 +82,20 @@ static void *parse_option(void *ptr, void *endptr, struct list_head *opt_list) list_add_tail(&opt->entry, opt_list); for (dopt = known_options; dopt->code; dopt++) { - if (dopt->code) + if (dopt->code == ntohs(opth->code)) break; } if (dopt->len) { endptr = ptr + sizeof(*opth) + ntohs(opth->len); - ptr += sizeof(*opth) + dopt->len; + ptr += dopt->len; while (ptr < endptr) { ptr = parse_option(ptr, endptr, &opt->opt_list); if (!ptr) return NULL; } } else - ptr = ptr + sizeof(*opth) + ntohs(opth->len); + ptr += sizeof(*opth) + ntohs(opth->len); return ptr; } |