git: 29a843177e10 - main - sctp: #ifdef INET-only and INET6-only variables.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 13 Apr 2022 23:09:35 UTC
The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=29a843177e108c688d7daaccac6ada4d16f01dca commit 29a843177e108c688d7daaccac6ada4d16f01dca Author: John Baldwin <jhb@FreeBSD.org> AuthorDate: 2022-04-13 23:08:21 +0000 Commit: John Baldwin <jhb@FreeBSD.org> CommitDate: 2022-04-13 23:08:21 +0000 sctp: #ifdef INET-only and INET6-only variables. Duplicating the SCTP_PCB_FLAGS_BOUND_V6 check made the #ifdef's simpler than applying #ifdef's directly to the original code. Modern compilers should cache the result rather than testing the flag twice. --- sys/netinet/sctp_sysctl.c | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/sys/netinet/sctp_sysctl.c b/sys/netinet/sctp_sysctl.c index cc0be9ba36f4..34f727363b7b 100644 --- a/sys/netinet/sctp_sysctl.c +++ b/sys/netinet/sctp_sysctl.c @@ -188,8 +188,15 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st { struct sctp_ifn *sctp_ifn; struct sctp_ifa *sctp_ifa; - int loopback_scope, ipv4_local_scope, local_scope, site_scope; - int ipv4_addr_legal, ipv6_addr_legal; + int loopback_scope; +#ifdef INET + int ipv4_local_scope; + int ipv4_addr_legal; +#endif +#ifdef INET6 + int local_scope, site_scope; + int ipv6_addr_legal; +#endif struct sctp_vrf *vrf; struct xsctp_laddr xladdr; struct sctp_laddr *laddr; @@ -199,28 +206,34 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st if (stcb) { /* use association specific values */ loopback_scope = stcb->asoc.scope.loopback_scope; +#ifdef INET ipv4_local_scope = stcb->asoc.scope.ipv4_local_scope; + ipv4_addr_legal = stcb->asoc.scope.ipv4_addr_legal; +#endif +#ifdef INET6 local_scope = stcb->asoc.scope.local_scope; site_scope = stcb->asoc.scope.site_scope; - ipv4_addr_legal = stcb->asoc.scope.ipv4_addr_legal; ipv6_addr_legal = stcb->asoc.scope.ipv6_addr_legal; +#endif } else { /* Use generic values for endpoints. */ loopback_scope = 1; +#ifdef INET ipv4_local_scope = 1; + if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6 && + SCTP_IPV6_V6ONLY(inp)) + ipv4_addr_legal = 0; + else + ipv4_addr_legal = 1; +#endif +#ifdef INET6 local_scope = 1; site_scope = 1; - if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { + if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) ipv6_addr_legal = 1; - if (SCTP_IPV6_V6ONLY(inp)) { - ipv4_addr_legal = 0; - } else { - ipv4_addr_legal = 1; - } - } else { + else ipv6_addr_legal = 0; - ipv4_addr_legal = 1; - } +#endif } /* neither Mac OS X nor FreeBSD support multiple routing functions */