diff --git a/include/re_sa.h b/include/re_sa.h index 569ebe518..df6fe3eba 100644 --- a/include/re_sa.h +++ b/include/re_sa.h @@ -59,12 +59,10 @@ bool sa_is_linklocal(const struct sa *sa); bool sa_is_loopback(const struct sa *sa); bool sa_is_any(const struct sa *sa); -#ifdef HAVE_INET6 void sa_set_scopeid(struct sa *sa, int scopeid); int sa_scopeid(const struct sa *sa); int sa_cpy_scopeid(struct sa *sa_dst, const struct sa *sa_src); bool sa_is_ipv6ll(const struct sa *sa); -#endif struct re_printf; int sa_print_addr(struct re_printf *pf, const struct sa *sa); diff --git a/src/sa/sa.c b/src/sa/sa.c index 7626de86f..1149673e8 100644 --- a/src/sa/sa.c +++ b/src/sa/sa.c @@ -593,27 +593,41 @@ bool sa_is_any(const struct sa *sa) } -#ifdef HAVE_INET6 void sa_set_scopeid(struct sa *sa, int scopeid) { +#ifndef HAVE_INET6 + return; +#endif if (!sa) return; + if (sa_af(sa) != AF_INET6) + return; + sa->u.in6.sin6_scope_id = scopeid; } int sa_scopeid(const struct sa *sa) { +#ifndef HAVE_INET6 + return; +#endif if (!sa) return 0; + if (sa_af(sa) != AF_INET6) + return 0; + return sa->u.in6.sin6_scope_id; } int sa_cpy_scopeid(struct sa *sa_dst, const struct sa *sa_src) { +#ifndef HAVE_INET6 + return; +#endif if (!sa_dst || !sa_src) return EINVAL; @@ -627,6 +641,8 @@ int sa_cpy_scopeid(struct sa *sa_dst, const struct sa *sa_src) bool sa_is_ipv6ll(const struct sa *sa) { +#ifndef HAVE_INET6 + return; +#endif return sa_af(sa) == AF_INET6 && sa_is_linklocal(sa); } -#endif