summaryrefslogtreecommitdiff
path: root/src/lib/libc/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/net')
-rw-r--r--src/lib/libc/net/ether_aton.36
-rw-r--r--src/lib/libc/net/ethers.c4
-rw-r--r--src/lib/libc/net/freeaddrinfo.c10
-rw-r--r--src/lib/libc/net/gai_strerror.36
-rw-r--r--src/lib/libc/net/getaddrinfo.38
-rw-r--r--src/lib/libc/net/getifaddrs.c87
-rw-r--r--src/lib/libc/net/if_indextoname.312
-rw-r--r--src/lib/libc/net/inet6_opt_init.318
-rw-r--r--src/lib/libc/net/inet6_rth_space.38
9 files changed, 97 insertions, 62 deletions
diff --git a/src/lib/libc/net/ether_aton.3 b/src/lib/libc/net/ether_aton.3
index 98562dc44c..83fe98880c 100644
--- a/src/lib/libc/net/ether_aton.3
+++ b/src/lib/libc/net/ether_aton.3
@@ -1,8 +1,8 @@
1.\" $OpenBSD: ether_aton.3,v 1.3 2022/09/11 06:38:10 jmc Exp $ 1.\" $OpenBSD: ether_aton.3,v 1.4 2025/06/29 00:33:46 dlg Exp $
2.\" 2.\"
3.\" Written by roland@frob.com. Public domain. 3.\" Written by roland@frob.com. Public domain.
4.\" 4.\"
5.Dd $Mdocdate: September 11 2022 $ 5.Dd $Mdocdate: June 29 2025 $
6.Dt ETHER_ATON 3 6.Dt ETHER_ATON 3
7.Os 7.Os
8.Sh NAME 8.Sh NAME
@@ -19,7 +19,7 @@
19.In netinet/in.h 19.In netinet/in.h
20.In netinet/if_ether.h 20.In netinet/if_ether.h
21.Ft char * 21.Ft char *
22.Fn ether_ntoa "struct ether_addr *e" 22.Fn ether_ntoa "const struct ether_addr *e"
23.Ft struct ether_addr * 23.Ft struct ether_addr *
24.Fn ether_aton "const char *s" 24.Fn ether_aton "const char *s"
25.Ft int 25.Ft int
diff --git a/src/lib/libc/net/ethers.c b/src/lib/libc/net/ethers.c
index d62be1ca71..6edad5c5e5 100644
--- a/src/lib/libc/net/ethers.c
+++ b/src/lib/libc/net/ethers.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ethers.c,v 1.27 2019/01/25 00:19:25 millert Exp $ */ 1/* $OpenBSD: ethers.c,v 1.28 2025/06/29 00:33:46 dlg Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1998 Todd C. Miller <millert@openbsd.org> 4 * Copyright (c) 1998 Todd C. Miller <millert@openbsd.org>
@@ -42,7 +42,7 @@
42static char * _ether_aton(const char *, struct ether_addr *); 42static char * _ether_aton(const char *, struct ether_addr *);
43 43
44char * 44char *
45ether_ntoa(struct ether_addr *e) 45ether_ntoa(const struct ether_addr *e)
46{ 46{
47 static char a[] = "xx:xx:xx:xx:xx:xx"; 47 static char a[] = "xx:xx:xx:xx:xx:xx";
48 48
diff --git a/src/lib/libc/net/freeaddrinfo.c b/src/lib/libc/net/freeaddrinfo.c
index 154f70cd75..c06318fb75 100644
--- a/src/lib/libc/net/freeaddrinfo.c
+++ b/src/lib/libc/net/freeaddrinfo.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: freeaddrinfo.c,v 1.9 2016/09/21 04:38:56 guenther Exp $ */ 1/* $OpenBSD: freeaddrinfo.c,v 1.10 2025/12/08 13:30:08 jca Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1996, 1997, 1998, 1999, Craig Metz, All rights reserved. 4 * Copyright (c) 1996, 1997, 1998, 1999, Craig Metz, All rights reserved.
@@ -40,11 +40,15 @@ freeaddrinfo(struct addrinfo *ai)
40{ 40{
41 struct addrinfo *p; 41 struct addrinfo *p;
42 42
43 do { 43 /*
44 * Calling freeaddrinfo() with a NULL pointer is unspecified,
45 * but try to cope with it anyway for compatibility.
46 */
47 while (ai != NULL) {
44 p = ai; 48 p = ai;
45 ai = ai->ai_next; 49 ai = ai->ai_next;
46 free(p->ai_canonname); 50 free(p->ai_canonname);
47 free(p); 51 free(p);
48 } while (ai); 52 }
49} 53}
50DEF_WEAK(freeaddrinfo); 54DEF_WEAK(freeaddrinfo);
diff --git a/src/lib/libc/net/gai_strerror.3 b/src/lib/libc/net/gai_strerror.3
index d271f492c5..93d11aad09 100644
--- a/src/lib/libc/net/gai_strerror.3
+++ b/src/lib/libc/net/gai_strerror.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: gai_strerror.3,v 1.10 2017/05/03 01:58:33 deraadt Exp $ 1.\" $OpenBSD: gai_strerror.3,v 1.11 2025/06/13 18:34:00 schwarze Exp $
2.\" $KAME: gai_strerror.3,v 1.1 2005/01/05 03:04:47 itojun Exp $ 2.\" $KAME: gai_strerror.3,v 1.1 2005/01/05 03:04:47 itojun Exp $
3.\" 3.\"
4.\" Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") 4.\" Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
@@ -16,7 +16,7 @@
16.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17.\" PERFORMANCE OF THIS SOFTWARE. 17.\" PERFORMANCE OF THIS SOFTWARE.
18.\" 18.\"
19.Dd $Mdocdate: May 3 2017 $ 19.Dd $Mdocdate: June 13 2025 $
20.Dt GAI_STRERROR 3 20.Dt GAI_STRERROR 3
21.Os 21.Os
22.Sh NAME 22.Sh NAME
@@ -26,7 +26,7 @@
26.In sys/types.h 26.In sys/types.h
27.In sys/socket.h 27.In sys/socket.h
28.In netdb.h 28.In netdb.h
29.Ft "const char *" 29.Ft const char *
30.Fn gai_strerror "int ecode" 30.Fn gai_strerror "int ecode"
31.Sh DESCRIPTION 31.Sh DESCRIPTION
32The 32The
diff --git a/src/lib/libc/net/getaddrinfo.3 b/src/lib/libc/net/getaddrinfo.3
index 780c7a409f..2df5fbe896 100644
--- a/src/lib/libc/net/getaddrinfo.3
+++ b/src/lib/libc/net/getaddrinfo.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: getaddrinfo.3,v 1.61 2022/09/11 06:38:10 jmc Exp $ 1.\" $OpenBSD: getaddrinfo.3,v 1.62 2025/12/08 13:30:08 jca Exp $
2.\" $KAME: getaddrinfo.3,v 1.36 2005/01/05 03:23:05 itojun Exp $ 2.\" $KAME: getaddrinfo.3,v 1.36 2005/01/05 03:23:05 itojun Exp $
3.\" 3.\"
4.\" Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") 4.\" Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
@@ -16,7 +16,7 @@
16.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17.\" PERFORMANCE OF THIS SOFTWARE. 17.\" PERFORMANCE OF THIS SOFTWARE.
18.\" 18.\"
19.Dd $Mdocdate: September 11 2022 $ 19.Dd $Mdocdate: December 8 2025 $
20.Dt GETADDRINFO 3 20.Dt GETADDRINFO 3
21.Os 21.Os
22.Sh NAME 22.Sh NAME
@@ -475,3 +475,7 @@ flag bit first appeared in Windows 7.
475.%R RFC 4007 475.%R RFC 4007
476.%T IPv6 Scoped Address Architecture 476.%T IPv6 Scoped Address Architecture
477.Re 477.Re
478.Sh CAVEATS
479The behavior of
480.Fn freeaddrinfo "NULL"
481is not specified and therefore not portable.
diff --git a/src/lib/libc/net/getifaddrs.c b/src/lib/libc/net/getifaddrs.c
index 069ee9afab..448e76097f 100644
--- a/src/lib/libc/net/getifaddrs.c
+++ b/src/lib/libc/net/getifaddrs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getifaddrs.c,v 1.14 2021/11/29 03:20:37 deraadt Exp $ */ 1/* $OpenBSD: getifaddrs.c,v 1.15 2025/11/13 10:34:32 deraadt Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1995, 1999 4 * Copyright (c) 1995, 1999
@@ -25,10 +25,10 @@
25 * BSDI getifaddrs.c,v 2.12 2000/02/23 14:51:59 dab Exp 25 * BSDI getifaddrs.c,v 2.12 2000/02/23 14:51:59 dab Exp
26 */ 26 */
27 27
28#include <sys/param.h> /* ALIGN ALIGNBYTES */
29#include <sys/types.h> 28#include <sys/types.h>
30#include <sys/ioctl.h> 29#include <sys/ioctl.h>
31#include <sys/socket.h> 30#include <sys/socket.h>
31#include <sys/syslog.h>
32#include <net/if.h> 32#include <net/if.h>
33#include <net/route.h> 33#include <net/route.h>
34#include <sys/sysctl.h> 34#include <sys/sysctl.h>
@@ -38,35 +38,32 @@
38#include <ifaddrs.h> 38#include <ifaddrs.h>
39#include <stddef.h> 39#include <stddef.h>
40#include <stdlib.h> 40#include <stdlib.h>
41#include <stdint.h>
41#include <string.h> 42#include <string.h>
42#include <unistd.h> 43#include <unistd.h>
44#include <stdio.h>
43 45
44#define SALIGN (sizeof(long) - 1) 46#define roundup(x, y) ((((uintptr_t)(x)+((y)-1))/(y))*(y))
45#define SA_RLEN(sa) ((sa)->sa_len ? (((sa)->sa_len + SALIGN) & ~SALIGN) : (SALIGN + 1)) 47#define proundup(x, y) (void *)roundup(x,y)
48
49#define SA_RLEN(sa) ((sa)->sa_len ? \
50 roundup((sa)->sa_len, sizeof(long)) : \
51 roundup(1, sizeof(long)))
46 52
47int 53int
48getifaddrs(struct ifaddrs **pif) 54getifaddrs(struct ifaddrs **pif)
49{ 55{
50 int icnt = 1; 56 int icnt = 1, dcnt = 0, ncnt = 0, mib[6], i;
51 int dcnt = 0;
52 int ncnt = 0;
53 int mib[6];
54 size_t needed; 57 size_t needed;
55 char *buf = NULL, *bufp; 58 char *buf = NULL, *bufp, *data, *names, *next, *p, *p0;
56 char *next; 59 struct ifaddrs *cif = 0, *ifa, *ift;
57 struct ifaddrs *cif = 0;
58 char *p, *p0;
59 struct rt_msghdr *rtm; 60 struct rt_msghdr *rtm;
60 struct if_msghdr *ifm; 61 struct if_msghdr *ifm;
61 struct ifa_msghdr *ifam; 62 struct ifa_msghdr *ifam;
62 struct sockaddr_dl *dl; 63 struct sockaddr_dl *dl;
63 struct sockaddr *sa; 64 struct sockaddr *sa;
64 u_short index = 0; 65 u_short index = 0;
65 size_t len, alen, dlen; 66 size_t len, alen, dlen, dsize;
66 struct ifaddrs *ifa, *ift;
67 int i;
68 char *data;
69 char *names;
70 67
71 mib[0] = CTL_NET; 68 mib[0] = CTL_NET;
72 mib[1] = PF_ROUTE; 69 mib[1] = PF_ROUTE;
@@ -95,6 +92,7 @@ getifaddrs(struct ifaddrs **pif)
95 break; 92 break;
96 } 93 }
97 94
95 /* Calculate data buffer size */
98 for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { 96 for (next = buf; next < buf + needed; next += rtm->rtm_msglen) {
99 rtm = (struct rt_msghdr *)next; 97 rtm = (struct rt_msghdr *)next;
100 if (rtm->rtm_version != RTM_VERSION) 98 if (rtm->rtm_version != RTM_VERSION)
@@ -107,10 +105,15 @@ getifaddrs(struct ifaddrs **pif)
107 ++icnt; 105 ++icnt;
108 dl = (struct sockaddr_dl *)(next + 106 dl = (struct sockaddr_dl *)(next +
109 rtm->rtm_hdrlen); 107 rtm->rtm_hdrlen);
110 dcnt += SA_RLEN((struct sockaddr *)dl) +
111 ALIGNBYTES;
112 dcnt += sizeof(ifm->ifm_data);
113 ncnt += dl->sdl_nlen + 1; 108 ncnt += dl->sdl_nlen + 1;
109
110 /* sockaddr's need long alignment */
111 dcnt = roundup(dcnt, sizeof(long));
112 dcnt += SA_RLEN((struct sockaddr *)dl);
113
114 /* ifm_data[] needs long long alignment */
115 dcnt = roundup(dcnt, sizeof(long long));
116 dcnt += sizeof(ifm->ifm_data);
114 } else 117 } else
115 index = 0; 118 index = 0;
116 break; 119 break;
@@ -145,6 +148,8 @@ getifaddrs(struct ifaddrs **pif)
145 continue; 148 continue;
146 sa = (struct sockaddr *)p; 149 sa = (struct sockaddr *)p;
147 len = SA_RLEN(sa); 150 len = SA_RLEN(sa);
151 /* sockaddr's need long alignment */
152 dcnt = roundup(dcnt, sizeof(long));
148 if (i == RTAX_NETMASK && sa->sa_len == 0) 153 if (i == RTAX_NETMASK && sa->sa_len == 0)
149 dcnt += alen; 154 dcnt += alen;
150 else 155 else
@@ -155,23 +160,29 @@ getifaddrs(struct ifaddrs **pif)
155 } 160 }
156 } 161 }
157 162
158 if (icnt + dcnt + ncnt == 1) { 163 if (icnt + ncnt + dcnt == 1) {
159 *pif = NULL; 164 *pif = NULL;
160 free(buf); 165 free(buf);
161 return (0); 166 return (0);
162 } 167 }
163 data = malloc(sizeof(struct ifaddrs) * icnt + dcnt + ncnt); 168
169 dsize = sizeof(struct ifaddrs) * icnt;
170 dsize += ncnt;
171 dsize = roundup(dsize, sizeof(long long));
172 dsize += dcnt;
173
174 data = calloc(dsize, 1);
164 if (data == NULL) { 175 if (data == NULL) {
165 free(buf); 176 free(buf);
166 return(-1); 177 return(-1);
167 } 178 }
168 179
169 ifa = (struct ifaddrs *)data; 180 /* ifaddrs[], names, then if_data[] */
181 ift = ifa = (struct ifaddrs *)data;
170 data += sizeof(struct ifaddrs) * icnt; 182 data += sizeof(struct ifaddrs) * icnt;
171 names = data + dcnt; 183 names = data;
172 184 data += ncnt;
173 memset(ifa, 0, sizeof(struct ifaddrs) * icnt); 185 data = proundup(data, sizeof(long long));
174 ift = ifa;
175 186
176 index = 0; 187 index = 0;
177 for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { 188 for (next = buf; next < buf + needed; next += rtm->rtm_msglen) {
@@ -193,19 +204,21 @@ getifaddrs(struct ifaddrs **pif)
193 names[dl->sdl_nlen] = 0; 204 names[dl->sdl_nlen] = 0;
194 names += dl->sdl_nlen + 1; 205 names += dl->sdl_nlen + 1;
195 206
207 data = proundup(data, sizeof(long));
196 ift->ifa_addr = (struct sockaddr *)data; 208 ift->ifa_addr = (struct sockaddr *)data;
197 memcpy(data, dl, 209 memcpy(data, dl,
198 ((struct sockaddr *)dl)->sa_len); 210 ((struct sockaddr *)dl)->sa_len);
199 data += SA_RLEN((struct sockaddr *)dl); 211 data += SA_RLEN((struct sockaddr *)dl);
200 212
201 /* ifm_data needs to be aligned */ 213 /* if_data needs long long alignment */
202 ift->ifa_data = data = (void *)ALIGN(data); 214 data = proundup(data, sizeof(long long));
215 ift->ifa_data = data;
203 dlen = rtm->rtm_hdrlen - 216 dlen = rtm->rtm_hdrlen -
204 offsetof(struct if_msghdr, ifm_data); 217 offsetof(struct if_msghdr, ifm_data);
205 if (dlen > sizeof(ifm->ifm_data)) 218 if (dlen > sizeof(ifm->ifm_data))
206 dlen = sizeof(ifm->ifm_data); 219 dlen = sizeof(ifm->ifm_data);
207 memcpy(data, &ifm->ifm_data, dlen); 220 memcpy(data, &ifm->ifm_data, dlen);
208 data += sizeof(ifm->ifm_data); 221 data += dlen;
209 222
210 ift = (ift->ifa_next = ift + 1); 223 ift = (ift->ifa_next = ift + 1);
211 } else 224 } else
@@ -245,12 +258,14 @@ getifaddrs(struct ifaddrs **pif)
245 len = SA_RLEN(sa); 258 len = SA_RLEN(sa);
246 switch (i) { 259 switch (i) {
247 case RTAX_IFA: 260 case RTAX_IFA:
261 data = proundup(data, sizeof(long));
248 ift->ifa_addr = (struct sockaddr *)data; 262 ift->ifa_addr = (struct sockaddr *)data;
249 memcpy(data, p, len); 263 memcpy(data, p, len);
250 data += len; 264 data += len;
251 break; 265 break;
252 266
253 case RTAX_NETMASK: 267 case RTAX_NETMASK:
268 data = proundup(data, sizeof(long));
254 ift->ifa_netmask = 269 ift->ifa_netmask =
255 (struct sockaddr *)data; 270 (struct sockaddr *)data;
256 if (sa->sa_len == 0) { 271 if (sa->sa_len == 0) {
@@ -263,6 +278,7 @@ getifaddrs(struct ifaddrs **pif)
263 break; 278 break;
264 279
265 case RTAX_BRD: 280 case RTAX_BRD:
281 data = proundup(data, sizeof(long));
266 ift->ifa_broadaddr = 282 ift->ifa_broadaddr =
267 (struct sockaddr *)data; 283 (struct sockaddr *)data;
268 memcpy(data, p, len); 284 memcpy(data, p, len);
@@ -278,6 +294,17 @@ getifaddrs(struct ifaddrs **pif)
278 } 294 }
279 } 295 }
280 296
297 /* XXX temporary paranoia until we are sure it is bug free */
298 if (dsize != (char *)data - (char *)ifa) {
299 char buf[1024];
300
301 /* <10> is LOG_CRIT */
302 snprintf(buf, sizeof buf,
303 "<10>%s: getifaddrs: allocated %lu used %lu\n",
304 __progname, dsize, (char *)data - (char *)ifa);
305 sendsyslog(buf, strlen(buf), LOG_CONS);
306 }
307
281 free(buf); 308 free(buf);
282 if (--ift >= ifa) { 309 if (--ift >= ifa) {
283 ift->ifa_next = NULL; 310 ift->ifa_next = NULL;
diff --git a/src/lib/libc/net/if_indextoname.3 b/src/lib/libc/net/if_indextoname.3
index 25d2a2722f..9d00d66bd5 100644
--- a/src/lib/libc/net/if_indextoname.3
+++ b/src/lib/libc/net/if_indextoname.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: if_indextoname.3,v 1.16 2015/11/21 07:48:10 jmc Exp $ 1.\" $OpenBSD: if_indextoname.3,v 1.17 2025/06/13 18:34:00 schwarze Exp $
2.\" Copyright (c) 1983, 1991, 1993 2.\" Copyright (c) 1983, 1991, 1993
3.\" The Regents of the University of California. All rights reserved. 3.\" The Regents of the University of California. All rights reserved.
4.\" 4.\"
@@ -28,7 +28,7 @@
28.\" 28.\"
29.\" From: @(#)rcmd.3 8.1 (Berkeley) 6/4/93 29.\" From: @(#)rcmd.3 8.1 (Berkeley) 6/4/93
30.\" 30.\"
31.Dd $Mdocdate: November 21 2015 $ 31.Dd $Mdocdate: June 13 2025 $
32.Dt IF_NAMETOINDEX 3 32.Dt IF_NAMETOINDEX 3
33.Os 33.Os
34.Sh NAME 34.Sh NAME
@@ -41,13 +41,13 @@
41.In sys/types.h 41.In sys/types.h
42.In sys/socket.h 42.In sys/socket.h
43.In net/if.h 43.In net/if.h
44.Ft "unsigned int" 44.Ft unsigned int
45.Fn if_nametoindex "const char *ifname" 45.Fn if_nametoindex "const char *ifname"
46.Ft "char *" 46.Ft char *
47.Fn if_indextoname "unsigned int ifindex" "char *ifname" 47.Fn if_indextoname "unsigned int ifindex" "char *ifname"
48.Ft "struct if_nameindex *" 48.Ft struct if_nameindex *
49.Fn if_nameindex "void" 49.Fn if_nameindex "void"
50.Ft "void" 50.Ft void
51.Fn if_freenameindex "struct if_nameindex *ptr" 51.Fn if_freenameindex "struct if_nameindex *ptr"
52.Sh DESCRIPTION 52.Sh DESCRIPTION
53These functions map interface indexes to interface names (such as 53These functions map interface indexes to interface names (such as
diff --git a/src/lib/libc/net/inet6_opt_init.3 b/src/lib/libc/net/inet6_opt_init.3
index 41ba842166..87244507a9 100644
--- a/src/lib/libc/net/inet6_opt_init.3
+++ b/src/lib/libc/net/inet6_opt_init.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: inet6_opt_init.3,v 1.8 2022/03/31 17:27:16 naddy Exp $ 1.\" $OpenBSD: inet6_opt_init.3,v 1.9 2025/06/13 18:34:00 schwarze Exp $
2.\" $KAME: inet6_opt_init.3,v 1.7 2004/12/27 05:08:23 itojun Exp $ 2.\" $KAME: inet6_opt_init.3,v 1.7 2004/12/27 05:08:23 itojun Exp $
3.\" 3.\"
4.\" Copyright (C) 2004 WIDE Project. 4.\" Copyright (C) 2004 WIDE Project.
@@ -28,7 +28,7 @@
28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29.\" SUCH DAMAGE. 29.\" SUCH DAMAGE.
30.\" 30.\"
31.Dd $Mdocdate: March 31 2022 $ 31.Dd $Mdocdate: June 13 2025 $
32.Dt INET6_OPT_INIT 3 32.Dt INET6_OPT_INIT 3
33.Os 33.Os
34.\" 34.\"
@@ -44,19 +44,19 @@
44.\" 44.\"
45.Sh SYNOPSIS 45.Sh SYNOPSIS
46.In netinet/in.h 46.In netinet/in.h
47.Ft "int" 47.Ft int
48.Fn inet6_opt_init "void *extbuf" "socklen_t extlen" 48.Fn inet6_opt_init "void *extbuf" "socklen_t extlen"
49.Ft "int" 49.Ft int
50.Fn inet6_opt_append "void *extbuf" "socklen_t extlen" "int offset" "u_int8_t type" "socklen_t len" "u_int8_t align" "void **databufp" 50.Fn inet6_opt_append "void *extbuf" "socklen_t extlen" "int offset" "u_int8_t type" "socklen_t len" "u_int8_t align" "void **databufp"
51.Ft "int" 51.Ft int
52.Fn inet6_opt_finish "void *extbuf" "socklen_t extlen" "int offset" 52.Fn inet6_opt_finish "void *extbuf" "socklen_t extlen" "int offset"
53.Ft "int" 53.Ft int
54.Fn inet6_opt_set_val "void *databuf" "int offset" "void *val" "socklen_t vallen" 54.Fn inet6_opt_set_val "void *databuf" "int offset" "void *val" "socklen_t vallen"
55.Ft "int" 55.Ft int
56.Fn inet6_opt_next "void *extbuf" "socklen_t extlen" "int offset" "u_int8_t *typep" "socklen_t *lenp" "void **databufp" 56.Fn inet6_opt_next "void *extbuf" "socklen_t extlen" "int offset" "u_int8_t *typep" "socklen_t *lenp" "void **databufp"
57.Ft "int" 57.Ft int
58.Fn inet6_opt_find "void *extbuf" "socklen_t extlen" "int offset" "u_int8_t type" "socklen_t *lenp" "void **databufp" 58.Fn inet6_opt_find "void *extbuf" "socklen_t extlen" "int offset" "u_int8_t type" "socklen_t *lenp" "void **databufp"
59.Ft "int" 59.Ft int
60.Fn inet6_opt_get_val "void *databuf" "socklen_t offset" "void *val" "socklen_t vallen" 60.Fn inet6_opt_get_val "void *databuf" "socklen_t offset" "void *val" "socklen_t vallen"
61.\" 61.\"
62.Sh DESCRIPTION 62.Sh DESCRIPTION
diff --git a/src/lib/libc/net/inet6_rth_space.3 b/src/lib/libc/net/inet6_rth_space.3
index c40b45057e..7304266fe1 100644
--- a/src/lib/libc/net/inet6_rth_space.3
+++ b/src/lib/libc/net/inet6_rth_space.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: inet6_rth_space.3,v 1.8 2022/03/31 17:27:16 naddy Exp $ 1.\" $OpenBSD: inet6_rth_space.3,v 1.9 2025/06/13 18:34:00 schwarze Exp $
2.\" $KAME: inet6_rth_space.3,v 1.7 2005/01/05 03:00:44 itojun Exp $ 2.\" $KAME: inet6_rth_space.3,v 1.7 2005/01/05 03:00:44 itojun Exp $
3.\" 3.\"
4.\" Copyright (C) 2004 WIDE Project. 4.\" Copyright (C) 2004 WIDE Project.
@@ -28,7 +28,7 @@
28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29.\" SUCH DAMAGE. 29.\" SUCH DAMAGE.
30.\" 30.\"
31.Dd $Mdocdate: March 31 2022 $ 31.Dd $Mdocdate: June 13 2025 $
32.Dt INET6_RTH_SPACE 3 32.Dt INET6_RTH_SPACE 3
33.Os 33.Os
34.\" 34.\"
@@ -45,7 +45,7 @@
45.In netinet/in.h 45.In netinet/in.h
46.Ft socklen_t 46.Ft socklen_t
47.Fn inet6_rth_space "int" "int" 47.Fn inet6_rth_space "int" "int"
48.Ft "void *" 48.Ft void *
49.Fn inet6_rth_init "void *" "socklen_t" "int" "int" 49.Fn inet6_rth_init "void *" "socklen_t" "int" "int"
50.Ft int 50.Ft int
51.Fn inet6_rth_add "void *" "const struct in6_addr *" 51.Fn inet6_rth_add "void *" "const struct in6_addr *"
@@ -53,7 +53,7 @@
53.Fn inet6_rth_reverse "const void *" "void *" 53.Fn inet6_rth_reverse "const void *" "void *"
54.Ft int 54.Ft int
55.Fn inet6_rth_segments "const void *" 55.Fn inet6_rth_segments "const void *"
56.Ft "struct in6_addr *" 56.Ft struct in6_addr *
57.Fn inet6_rth_getaddr "const void *" "int" 57.Fn inet6_rth_getaddr "const void *" "int"
58.\" 58.\"
59.Sh DESCRIPTION 59.Sh DESCRIPTION