aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2026-01-23 22:16:42 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2026-01-23 22:16:42 +0000
commit6857b3a04e59d178f7716ba409d08a57f850ffcf (patch)
tree4e3049609eb9cc35c6367025d08ca6e12c1d1aeb
parent3aa8d5395c4223f1613f28d6f39904c2df4f92d4 (diff)
netinet6: embed struct nd_ifinfo into struct in6_ndireq
There is no functional change here, but we'd like to emphasize that the nd_ifinfo structure is not a actually a kernel ND6 software context, despite being actively used like this way, but an API/ABI structure for ioctl(2). This should prevent from a ABI breakages like in 31ec8b6407fd. This also is a step towards stopping using it as a kernel software context. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54722
-rw-r--r--sys/netinet6/nd6.h40
1 files changed, 22 insertions, 18 deletions
diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h
index 0f61e167f480..28de6e2ae153 100644
--- a/sys/netinet6/nd6.h
+++ b/sys/netinet6/nd6.h
@@ -62,22 +62,6 @@ struct llentry;
#define ND6_IS_LLINFO_PROBREACH(n) ((n)->ln_state > ND6_LLINFO_INCOMPLETE)
#define ND6_LLINFO_PERMANENT(n) (((n)->la_expire == 0) && ((n)->ln_state > ND6_LLINFO_INCOMPLETE))
-struct nd_ifinfo {
- u_int32_t linkmtu; /* LinkMTU */
- u_int32_t maxmtu; /* Upper bound of LinkMTU */
- u_int32_t basereachable; /* BaseReachableTime */
- u_int32_t reachable; /* Reachable Time */
- u_int32_t retrans; /* Retrans Timer */
- u_int32_t flags; /* Flags */
- int recalctm; /* BaseReacable re-calculation timer */
- u_int8_t chlim; /* CurHopLimit */
- u_int8_t initialized; /* Flag to see the entry is initialized */
- /* the following 3 members are for privacy extension for addrconf */
- u_int8_t randomseed0[8]; /* upper 64 bits of MD5 digest */
- u_int8_t randomseed1[8]; /* lower 64 bits (usually the EUI64 IFID) */
- u_int8_t randomid[8]; /* current random ID */
-};
-
#define ND6_IFF_PERFORMNUD 0x1
#define ND6_IFF_ACCEPT_RTADV 0x2
#define ND6_IFF_PREFER_SOURCE 0x4 /* Not used in FreeBSD. */
@@ -139,9 +123,29 @@ struct in6_prefix {
/* struct sockaddr_in6 advrtr[] */
};
-struct in6_ndireq {
+struct in6_ndireq {
char ifname[IFNAMSIZ];
- struct nd_ifinfo ndi;
+ struct nd_ifinfo {
+ uint32_t linkmtu; /* LinkMTU */
+ uint32_t maxmtu; /* Upper bound of LinkMTU */
+ uint32_t basereachable; /* BaseReachableTime */
+ uint32_t reachable; /* Reachable Time */
+ uint32_t retrans; /* Retrans Timer */
+ uint32_t flags; /* Flags */
+ int recalctm; /* BaseReacable re-calculation timer */
+ uint8_t chlim; /* CurHopLimit */
+ /*
+ * The below members are not used. They came from KAME and
+ * are hanging around to preserve ABI compatibility of the
+ * SIOCGIFINFO_IN6 ioctl.
+ * The original comment documented the random* members as a
+ * privacy extension for addrconf.
+ */
+ uint8_t initialized; /* compat: always 1 */
+ uint8_t randomseed0[8]; /* upper 64 bits of MD5 digest */
+ uint8_t randomseed1[8]; /* lower 64 bits (the EUI64 IFID?) */
+ uint8_t randomid[8]; /* current random ID */
+ } ndi;
};
struct in6_ndifreq {