This file was derived from FreeBSD, where "in6pcb" is a macro for

"inpcb", and this struct inpcb* and struct inp6cb* are the same type.

On NetBSD they are different types, so we must change the types of
formal argument in IPv6-specific functions from "struct inpcb *" to
"struct in6pcb*".

The code didn't compile on NetBSD beforehand, if both FAST_IPSEC + INET6
were configured. This fix will cause even more short-term breakage for
that case, but its a step in the right direction: it shows up what
still needs to be fixed.
This commit is contained in:
jonathan 2003-11-20 06:35:09 +00:00
parent b4a9ea3c2d
commit 89d603f9ea

View File

@ -1,4 +1,4 @@
/* $NetBSD: ipsec6.h,v 1.1 2003/08/13 20:06:50 jonathan Exp $ */ /* $NetBSD: ipsec6.h,v 1.2 2003/11/20 06:35:09 jonathan Exp $ */
/* $FreeBSD: src/sys/netipsec/ipsec6.h,v 1.1.4.1 2003/01/24 05:11:35 sam Exp $ */ /* $FreeBSD: src/sys/netipsec/ipsec6.h,v 1.1.4.1 2003/01/24 05:11:35 sam Exp $ */
/* $KAME: ipsec.h,v 1.44 2001/03/23 08:08:47 itojun Exp $ */ /* $KAME: ipsec.h,v 1.44 2001/03/23 08:08:47 itojun Exp $ */
@ -40,6 +40,9 @@
#include <net/pfkeyv2.h> #include <net/pfkeyv2.h>
#include <netipsec/keydb.h> #include <netipsec/keydb.h>
#ifdef __NetBSD__
#include <netinet6/in6_pcb.h>
#endif
#ifdef _KERNEL #ifdef _KERNEL
extern int ip6_esp_trans_deflev; extern int ip6_esp_trans_deflev;
@ -48,8 +51,10 @@ extern int ip6_ah_trans_deflev;
extern int ip6_ah_net_deflev; extern int ip6_ah_net_deflev;
extern int ip6_ipsec_ecn; extern int ip6_ipsec_ecn;
extern int ip6_esp_randpad; extern int ip6_esp_randpad;
extern struct secpolicy ip6_def_policy;
struct inpcb; struct inpcb;
struct in6pcb;
/* KAME compatibility shims */ /* KAME compatibility shims */
#define ipsec6_getpolicybyaddr ipsec_getpolicybyaddr #define ipsec6_getpolicybyaddr ipsec_getpolicybyaddr
@ -60,20 +65,33 @@ struct inpcb;
#define out_polvio ips_out_polvio #define out_polvio ips_out_polvio
#define key_freesp(_x) KEY_FREESP(&_x) #define key_freesp(_x) KEY_FREESP(&_x)
extern int ipsec6_delete_pcbpolicy __P((struct inpcb *)); extern int ipsec6_delete_pcbpolicy __P((struct in6pcb *));
extern int ipsec6_set_policy __P((struct inpcb *inp, int optname, extern int ipsec6_set_policy __P((struct in6pcb *inp, int optname,
caddr_t request, size_t len, int priv)); caddr_t request, size_t len, int priv));
extern int ipsec6_get_policy extern int ipsec6_get_policy
__P((struct inpcb *inp, caddr_t request, size_t len, struct mbuf **mp)); __P((struct in6pcb *inp, caddr_t request, size_t len, struct mbuf **mp));
extern int ipsec6_in_reject __P((struct mbuf *, struct inpcb *)); extern int ipsec6_in_reject __P((struct mbuf *, struct in6pcb *));
/*
* KAME ipsec6_in_reject_so(struct mbuf*, struct so) compatibility shim
*/
#define ipsec6_in_reject_so(m, _so) \
ipsec6_in_reject(m, ((_so) == NULL? NULL : sotoin6pcb(_so)))
struct tcp6cb; struct tcp6cb;
extern size_t ipsec6_hdrsiz __P((struct mbuf *, u_int, struct inpcb *)); extern size_t ipsec6_hdrsiz __P((struct mbuf *, u_int, struct in6pcb *));
extern size_t ipsec6_hdrsiz_tcp __P((struct tcpcb*));
struct ip6_hdr; struct ip6_hdr;
extern const char *ipsec6_logpacketstr __P((struct ip6_hdr *, u_int32_t)); extern const char *ipsec6_logpacketstr __P((struct ip6_hdr *, u_int32_t));
#ifdef __NetBSD__
/* NetBSD protosw ctlin entrypoint */
extern void esp6_ctlinput __P((int, struct sockaddr *, void *));
extern void ah6_ctlinput __P((int, struct sockaddr *, void *));
extern int ipsec6_sysctl __P((int *, u_int, void *, size_t *, void *, size_t));
#endif /* __NetBSD__ */
struct m_tag; struct m_tag;
extern int ipsec6_common_input(struct mbuf **mp, int *offp, int proto); extern int ipsec6_common_input(struct mbuf **mp, int *offp, int proto);
extern int ipsec6_common_input_cb(struct mbuf *m, struct secasvar *sav, extern int ipsec6_common_input_cb(struct mbuf *m, struct secasvar *sav,