aboutsummaryrefslogtreecommitdiff
path: root/sys/netipsec/key.c
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2022-08-11 16:19:36 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2022-08-11 16:19:36 +0000
commitea7be1293b48385f27b97c5f112e4cad93cbd33b (patch)
tree63036ab204e6b748dc404fba172578252ffc920a /sys/netipsec/key.c
parent36b10ac2cd18a535cac20ccf51e3fc6c408671e8 (diff)
downloadsrc-ea7be1293b48385f27b97c5f112e4cad93cbd33b.tar.gz
src-ea7be1293b48385f27b97c5f112e4cad93cbd33b.zip
keysock: do not use raw socket code
This makes key socket implementation self contained and removes one of the last dependencies on the raw socket code and pr_output method. There are very subtle API visible changes: - now key socket would return EOPNOTSUPP instead of EINVAL on syscalls that are not supposed to be called on a key socket. - key socket buffer sizes are now controlled by net.key sysctls instead of net.raw. The latter were not documented anywhere, and even Internet search doesn't find any references or discussions related to them. Reviewed by: melifaro Differential revision: https://reviews.freebsd.org/D36123
Diffstat (limited to 'sys/netipsec/key.c')
-rw-r--r--sys/netipsec/key.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c
index b1a99cfbb261..a7d691f09bb1 100644
--- a/sys/netipsec/key.c
+++ b/sys/netipsec/key.c
@@ -66,7 +66,6 @@
#include <net/if.h>
#include <net/if_var.h>
#include <net/vnet.h>
-#include <net/raw_cb.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
@@ -468,7 +467,6 @@ SYSCTL_INT(_net_inet6_ipsec6, IPSECCTL_DEBUG, debug,
"Enable IPsec debugging output when set.");
#endif
-SYSCTL_DECL(_net_key);
SYSCTL_INT(_net_key, KEYCTL_DEBUG_LEVEL, debug,
CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(key_debug_level), 0, "");
@@ -516,8 +514,7 @@ SYSCTL_INT(_net_key, KEYCTL_AH_KEYMIN, ah_keymin,
SYSCTL_INT(_net_key, KEYCTL_PREFERED_OLDSA, preferred_oldsa,
CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(key_preferred_oldsa), 0, "");
-static SYSCTL_NODE(_net_key, OID_AUTO, spdcache,
- CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
+SYSCTL_NODE(_net_key, OID_AUTO, spdcache, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
"SPD cache");
SYSCTL_UINT(_net_key_spdcache, OID_AUTO, maxentries,
@@ -7157,7 +7154,7 @@ key_register(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
}
newreg->so = so;
- ((struct keycb *)sotorawcb(so))->kp_registered++;
+ ((struct keycb *)(so->so_pcb))->kp_registered++;
/* add regnode to regtree. */
LIST_INSERT_HEAD(&V_regtree[mhp->msg->sadb_msg_satype], newreg, chain);
@@ -7717,7 +7714,7 @@ key_promisc(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
/* enable/disable promisc mode */
struct keycb *kp;
- if ((kp = (struct keycb *)sotorawcb(so)) == NULL)
+ if ((kp = so->so_pcb) == NULL)
return key_senderror(so, m, EINVAL);
mhp->msg->sadb_msg_errno = 0;
switch (mhp->msg->sadb_msg_satype) {