This revision implements RFC 4191,
it also resolves PR263982.
notes for reviewers:
- I've avoided using separate callout and, as this aligns with what
RFC 4191 intends by directly using the routing table instead of separate data
structure. (like defrouter)
- I tried to avoid locking the RIB inside the nd6_rtr.c. However, I couldn't
obtain an exact match for my prefix from other public functions without
locking the RIB.
- I could reuse rib_add_redirect(), but it only works for host routes (plen 128).
- I will create rib_add_temproute(), similar to rib_add_redirect()
but tailored for the route info option in another review if necessary.
Despite nhop_create_from_info() being a public function, I prefer not to use it
inside nd6_rtr.c, consider defrouter_addreq already utilizes nhop
facilities, I've used it for now anyway.
- For updating nhop lifetime, I can't use nhop_set_expire() directly, because it linked.
I solved this problem by calling rib_change_route() and making
nhop_create_from_nhop behave like nhop_create_from_info (as intended).
This review depends on D55267.