setkey(8): extract prefixlen calculation info helper

While there, hide AF_INET case under #ifdef INET.

Reviewed by:	ae
Discussed with:	bz
Sponsored by:	NVidia networking
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D40300
This commit is contained in:
Konstantin Belousov 2023-05-25 15:20:00 +03:00
parent 6a71277c30
commit 2c1296a3c5

View file

@ -787,6 +787,23 @@ setkeymsg0(struct sadb_msg *msg, unsigned type, unsigned satype, size_t l)
return 0;
}
static int
setkeymsg_plen(struct addrinfo *s)
{
switch (s->ai_addr->sa_family) {
#ifdef INET
case AF_INET:
return (sizeof(struct in_addr) << 3);
#endif
#ifdef INET6
case AF_INET6:
return (sizeof(struct in6_addr) << 3);
#endif
default:
return (-1);
}
}
/* XXX NO BUFFER OVERRUN CHECK! BAD BAD! */
static int
setkeymsg_spdaddr(unsigned type, unsigned upper, vchar_t *policy,
@ -825,18 +842,9 @@ setkeymsg_spdaddr(unsigned type, unsigned upper, vchar_t *policy,
if (s->ai_addr->sa_family != d->ai_addr->sa_family)
continue;
switch (s->ai_addr->sa_family) {
case AF_INET:
plen = sizeof(struct in_addr) << 3;
break;
#ifdef INET6
case AF_INET6:
plen = sizeof(struct in6_addr) << 3;
break;
#endif
default:
plen = setkeymsg_plen(s);
if (plen == -1)
continue;
}
/* set src */
sa = s->ai_addr;
@ -954,18 +962,9 @@ setkeymsg_addr(unsigned type, unsigned satype, struct addrinfo *srcs,
if (s->ai_addr->sa_family != d->ai_addr->sa_family)
continue;
switch (s->ai_addr->sa_family) {
case AF_INET:
plen = sizeof(struct in_addr) << 3;
break;
#ifdef INET6
case AF_INET6:
plen = sizeof(struct in6_addr) << 3;
break;
#endif
default:
plen = setkeymsg_plen(s);
if (plen == -1)
continue;
}
/* set src */
sa = s->ai_addr;
@ -1140,18 +1139,9 @@ setkeymsg_add(unsigned type, unsigned satype, struct addrinfo *srcs,
if (s->ai_addr->sa_family != d->ai_addr->sa_family)
continue;
switch (s->ai_addr->sa_family) {
case AF_INET:
plen = sizeof(struct in_addr) << 3;
break;
#ifdef INET6
case AF_INET6:
plen = sizeof(struct in6_addr) << 3;
break;
#endif
default:
plen = setkeymsg_plen(s);
if (plen == -1)
continue;
}
/* set src */
sa = s->ai_addr;