On Tue, 30 Aug 2022, Gleb Smirnoff wrote:
The branch main has been updated by glebius:
URL:
https://cgit.FreeBSD.org/src/commit/?id=e72c522858cb3fe179b8ec5700cdbf46c45e917e
commit e72c522858cb3fe179b8ec5700cdbf46c45e917e
Author: Gleb Smirnoff <gleb...@freebsd.org>
AuthorDate: 2022-08-30 22:09:21 +0000
Commit: Gleb Smirnoff <gleb...@freebsd.org>
CommitDate: 2022-08-30 22:09:21 +0000
divert(4): make it compilable and working without INET
Differential revision: https://reviews.freebsd.org/D36383
Well, almost at least....
- sysctls require INET
- ip_divert_ptr still requires INET or INET6 (raw_ip.c)
- one of the SCTP blocks has a early-ended #ifdef INET which can just be
fixed easily compared to the two above.
diff --git sys/netinet/ip_divert.c sys/netinet/ip_divert.c
index 2a5a7677cb71..d1270ee72499 100644
--- sys/netinet/ip_divert.c
+++ sys/netinet/ip_divert.c
@@ -117,6 +117,8 @@ __FBSDID("$FreeBSD$");
* will apply the entire ruleset to the packet).
*/
+#ifdef INET
static SYSCTL_NODE(_net_inet, OID_AUTO, divert, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
"divert(4)");
+#endif
VNET_PCPUSTAT_DEFINE_STATIC(struct divstat, divstat);
@@ -125,6 +127,8 @@ VNET_PCPUSTAT_SYSINIT(divstat);
VNET_PCPUSTAT_SYSUNINIT(divstat);
#endif
+#ifdef INET
SYSCTL_VNET_PCPUSTAT(_net_inet_divert, OID_AUTO, stats, struct divstat,
divstat, "divert(4) socket statistics");
+#endif
#define DIVSTAT_INC(name) \
VNET_PCPUSTAT_ADD(struct divstat, divstat, div_ ## name, 1)
@@ -191,5 +195,4 @@ divert_packet(struct mbuf *m, bool incoming)
m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA;
}
-#endif
#if defined(SCTP) || defined(SCTP_SUPPORT)
if (m->m_pkthdr.csum_flags & CSUM_SCTP) {
@@ -201,4 +204,5 @@ divert_packet(struct mbuf *m, bool incoming)
}
#endif
+#endif /* INET */
#ifdef INET6
if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA_IPV6) {
@@ -686,7 +690,9 @@ div_pcblist(SYSCTL_HANDLER_ARGS)
return (error);
}
+#ifdef INET
SYSCTL_PROC(_net_inet_divert, OID_AUTO, pcblist,
CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0, div_pcblist,
"S,xinpcb", "List of active divert sockets");
+#endif
static struct protosw div_protosw = {
@@ -715,5 +721,7 @@ div_modevent(module_t mod, int type, void *unused)
case MOD_LOAD:
domain_add(&divertdomain);
+#if defined(INET6) || defined(INET)
ip_divert_ptr = divert_packet;
+#endif
break;
case MOD_QUIESCE:
@@ -747,5 +755,7 @@ div_modevent(module_t mod, int type, void *unused)
}
DIVERT_UNLOCK();
+#if defined(INET6) || defined(INET)
ip_divert_ptr = NULL;
+#endif
domain_remove(&divertdomain);
break;
--
Bjoern A. Zeeb r15:7