summaryrefslogtreecommitdiff
path: root/sys/netinet6
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2020-08-14 21:29:56 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2020-08-14 21:29:56 +0000
commit2f23f45b20ace184ddc5183d298a9f47cd9c2e33 (patch)
tree6560fd1222d0da4c83cd82076380d098624ed5a8 /sys/netinet6
parentea7b737a6fe72565f53471d2a1e1b03a0348c642 (diff)
downloadsrc-test2-2f23f45b20ace184ddc5183d298a9f47cd9c2e33.tar.gz
src-test2-2f23f45b20ace184ddc5183d298a9f47cd9c2e33.zip
Simplify dom_<rtattach|rtdetach>.
Remove unused arguments from dom_rtattach/dom_rtdetach functions and make them return/accept 'struct rib_head' instead of 'void **'. Declare inet/inet6 implementations in the relevant _var.h headers similar to domifattach / domifdetach. Add rib_subscribe_internal() function to accept subscriptions to the rnh directly. Differential Revision: https://reviews.freebsd.org/D26053
Notes
Notes: svn path=/head/; revision=364238
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6_proto.c5
-rw-r--r--sys/netinet6/in6_rmx.c24
-rw-r--r--sys/netinet6/in6_var.h3
3 files changed, 11 insertions, 21 deletions
diff --git a/sys/netinet6/in6_proto.c b/sys/netinet6/in6_proto.c
index ea7a468ac72b..9f9c9b9dbbf8 100644
--- a/sys/netinet6/in6_proto.c
+++ b/sys/netinet6/in6_proto.c
@@ -333,11 +333,6 @@ IP6PROTOSPACER,
},
};
-extern int in6_inithead(void **, int, u_int);
-#ifdef VIMAGE
-extern int in6_detachhead(void **, int);
-#endif
-
struct domain inet6domain = {
.dom_family = AF_INET6,
.dom_name = "internet6",
diff --git a/sys/netinet6/in6_rmx.c b/sys/netinet6/in6_rmx.c
index f705c91602f4..c026bf4a057c 100644
--- a/sys/netinet6/in6_rmx.c
+++ b/sys/netinet6/in6_rmx.c
@@ -101,11 +101,6 @@ __FBSDID("$FreeBSD$");
#include <netinet/tcp_timer.h>
#include <netinet/tcp_var.h>
-extern int in6_inithead(void **head, int off, u_int fibnum);
-#ifdef VIMAGE
-extern int in6_detachhead(void **head, int off);
-#endif
-
static int
rib6_preadd(u_int fibnum, const struct sockaddr *addr, const struct sockaddr *mask,
struct nhop_object *nh)
@@ -147,8 +142,8 @@ rib6_preadd(u_int fibnum, const struct sockaddr *addr, const struct sockaddr *ma
* Initialize our routing tree.
*/
-int
-in6_inithead(void **head, int off, u_int fibnum)
+struct rib_head *
+in6_inithead(uint32_t fibnum)
{
struct rib_head *rh;
struct rib_subscription *rs;
@@ -156,29 +151,26 @@ in6_inithead(void **head, int off, u_int fibnum)
rh = rt_table_init(offsetof(struct sockaddr_in6, sin6_addr) << 3,
AF_INET6, fibnum);
if (rh == NULL)
- return (0);
+ return (NULL);
rh->rnh_preadd = rib6_preadd;
#ifdef RADIX_MPATH
rt_mpath_init_rnh(rh);
#endif
- *head = (void *)rh;
- rs = rib_subscribe(fibnum, AF_INET6, nd6_subscription_cb, NULL,
+ rs = rib_subscribe_internal(rh, nd6_subscription_cb, NULL,
RIB_NOTIFY_IMMEDIATE, true);
KASSERT(rs != NULL, ("Unable to subscribe to fib %u\n", fibnum));
- return (1);
+ return (rh);
}
#ifdef VIMAGE
-int
-in6_detachhead(void **head, int off)
+void
+in6_detachhead(struct rib_head *rh)
{
- rt_table_destroy((struct rib_head *)(*head));
-
- return (1);
+ rt_table_destroy(rh);
}
#endif
diff --git a/sys/netinet6/in6_var.h b/sys/netinet6/in6_var.h
index 7381ff68064a..f5e6a931ae64 100644
--- a/sys/netinet6/in6_var.h
+++ b/sys/netinet6/in6_var.h
@@ -857,6 +857,7 @@ in6m_rele_locked(struct in6_multi_head *inmh, struct in6_multi *inm)
struct ip6_moptions;
struct sockopt;
struct inpcbinfo;
+struct rib_head;
/* Multicast KPIs. */
int im6o_mc_filter(const struct ip6_moptions *, const struct ifnet *,
@@ -891,6 +892,8 @@ void in6_savemkludge(struct in6_ifaddr *);
void *in6_domifattach(struct ifnet *);
void in6_domifdetach(struct ifnet *, void *);
int in6_domifmtu(struct ifnet *);
+struct rib_head *in6_inithead(uint32_t fibnum);
+void in6_detachhead(struct rib_head *rh);
void in6_setmaxmtu(void);
int in6_if2idlen(struct ifnet *);
struct in6_ifaddr *in6ifa_ifpforlinklocal(struct ifnet *, int);