Clarify nd6_option() return semantics
authorkn <kn@openbsd.org>
Fri, 6 Jan 2023 14:29:47 +0000 (14:29 +0000)
committerkn <kn@openbsd.org>
Fri, 6 Jan 2023 14:29:47 +0000 (14:29 +0000)
commit4afaba8b8fa575ffc3d3af2709a4bf9f8c4476a1
tree2f805a746cad743a48e8fddc90bb78fec657f02a
parent0a2b5415dce9e071f63c96dd2dbfcd2c6c2c6734
Clarify nd6_option() return semantics

nd_opts_last is set only once in nd6_options() during struct init and
guaranteed non-NULL as it is set to the function's argument *opt which
is passed in as (struct_ptr + 1) in both callers.

nd6_option(), the internal helper, returns a pointer to the next option
or NULL, which means either "no option, ok" or "invalid option, fail".

Failure is signaled through nd_opts_last being NULL after nd6_option()
returned, which only happens if nd6_option() zeroed the whole *ndopts.

Move the two cases under mnemonic labels and zap the now obviously
redundant bzero() call in nd6_options().

OK claudio
sys/netinet6/nd6.c