This requires kernel side support: [https://reviews.freebsd.org/D51596](https://reviews.freebsd.org/D51596)
— Kristof On 29 Jul 2025, at 11:38, Kristof Provost wrote: > From: Kristof Provost <k...@freebsd.org> > > To support link-local (IPv6) addresses we must pass the scope to the kernel as > well. We should also extract it from the kernel notification for float events. > > Signed-off-by: Kristof Provost <kprov...@netgate.com> > --- > src/openvpn/dco_freebsd.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/src/openvpn/dco_freebsd.c b/src/openvpn/dco_freebsd.c > index 8add41af..306ecd31 100644 > --- a/src/openvpn/dco_freebsd.c > +++ b/src/openvpn/dco_freebsd.c > @@ -62,6 +62,7 @@ sockaddr_to_nvlist(const struct sockaddr *sa) > const struct sockaddr_in6 *in6 = (const struct sockaddr_in6 *)sa; > nvlist_add_binary(nvl, "address", &in6->sin6_addr, > sizeof(in6->sin6_addr)); > nvlist_add_number(nvl, "port", in6->sin6_port); > + nvlist_add_number(nvl, "scopeid", in6->sin6_scope_id); > break; > } > > @@ -118,6 +119,11 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct > sockaddr_storage *ss) > assert(len == sizeof(in6->sin6_addr)); > memcpy(&in6->sin6_addr, data, sizeof(in6->sin6_addr)); > in6->sin6_port = nvlist_get_number(nvl, "port"); > + > + if (nvlist_exists_number(nvl, "scopeid")) > + { > + in6->sin6_scope_id = nvlist_get_number(nvl, "scopeid"); > + } > break; > } > > -- > 2.50.1 _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel