-/* $OpenBSD: in_pcb.c,v 1.300 2024/04/12 16:07:09 bluhm Exp $ */
+/* $OpenBSD: in_pcb.c,v 1.301 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: in_pcb.c,v 1.25 1996/02/13 23:41:53 christos Exp $ */
/*
inp->inp_socket = so;
refcnt_init_trace(&inp->inp_refcnt, DT_REFCNT_IDX_INPCB);
mtx_init(&inp->inp_mtx, IPL_SOFTNET);
- inp->inp_seclevel[SL_AUTH] = IPSEC_AUTH_LEVEL_DEFAULT;
- inp->inp_seclevel[SL_ESP_TRANS] = IPSEC_ESP_TRANS_LEVEL_DEFAULT;
- inp->inp_seclevel[SL_ESP_NETWORK] = IPSEC_ESP_NETWORK_LEVEL_DEFAULT;
- inp->inp_seclevel[SL_IPCOMP] = IPSEC_IPCOMP_LEVEL_DEFAULT;
+ inp->inp_seclevel.sl_auth = IPSEC_AUTH_LEVEL_DEFAULT;
+ inp->inp_seclevel.sl_esp_trans = IPSEC_ESP_TRANS_LEVEL_DEFAULT;
+ inp->inp_seclevel.sl_esp_network = IPSEC_ESP_NETWORK_LEVEL_DEFAULT;
+ inp->inp_seclevel.sl_ipcomp = IPSEC_IPCOMP_LEVEL_DEFAULT;
inp->inp_rtableid = curproc->p_p->ps_rtableid;
inp->inp_hops = -1;
#ifdef INET6
-/* $OpenBSD: in_pcb.h,v 1.155 2024/04/15 18:31:04 bluhm Exp $ */
+/* $OpenBSD: in_pcb.h,v 1.156 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: in_pcb.h,v 1.14 1996/02/13 23:42:00 christos Exp $ */
/*
} inp_mou;
#define inp_moptions inp_mou.mou_mo /* [N] IPv4 multicast options */
#define inp_moptions6 inp_mou.mou_mo6 /* [N] IPv6 multicast options */
- u_char inp_seclevel[4]; /* [N] IPsec level of socket */
-#define SL_AUTH 0 /* Authentication level */
-#define SL_ESP_TRANS 1 /* ESP transport level */
-#define SL_ESP_NETWORK 2 /* ESP network (encapsulation) level */
-#define SL_IPCOMP 3 /* Compression level */
+ struct ipsec_level inp_seclevel; /* [N] IPsec level of socket */
u_char inp_ip_minttl; /* minimum TTL or drop */
#define inp_ip6_minhlim inp_ip_minttl /* minimum Hop Limit or drop */
#define inp_flowinfo inp_hu.hu_ipv6.ip6_flow
-/* $OpenBSD: ip_ipsp.h,v 1.244 2023/11/26 22:08:10 bluhm Exp $ */
+/* $OpenBSD: ip_ipsp.h,v 1.245 2024/04/17 20:48:51 bluhm Exp $ */
/*
* The authors of this code are John Ioannidis (ji@tla.org),
* Angelos D. Keromytis (kermit@csd.uch.gr),
uint64_t ipsec_exctdb; /* TDBs with hardlimit excess */
};
+struct ipsec_level {
+ u_char sl_auth; /* Authentication level */
+ u_char sl_esp_trans; /* ESP transport level */
+ u_char sl_esp_network; /* ESP network (encapsulation) level */
+ u_char sl_ipcomp; /* Compression level */
+};
+
#ifdef _KERNEL
#include <sys/timeout.h>
int ipsp_process_packet(struct mbuf *, struct tdb *, int, int);
int ipsp_process_done(struct mbuf *, struct tdb *);
int ipsp_spd_lookup(struct mbuf *, int, int, int, struct tdb *,
- const u_char[], struct tdb **, struct ipsec_ids *);
+ const struct ipsec_level *, struct tdb **, struct ipsec_ids *);
int ipsp_is_unspecified(union sockaddr_union);
int ipsp_aux_match(struct tdb *, struct ipsec_ids *,
struct sockaddr_encap *, struct sockaddr_encap *);
-/* $OpenBSD: ip_output.c,v 1.397 2024/04/09 11:05:05 bluhm Exp $ */
+/* $OpenBSD: ip_output.c,v 1.398 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: ip_output.c,v 1.28 1996/02/13 23:43:07 christos Exp $ */
/*
static u_int16_t in_cksum_phdr(u_int32_t, u_int32_t, u_int32_t);
void in_delayed_cksum(struct mbuf *);
-int ip_output_ipsec_lookup(struct mbuf *m, int hlen, const u_char seclevel[],
- struct tdb **, int ipsecflowinfo);
+int ip_output_ipsec_lookup(struct mbuf *m, int hlen,
+ const struct ipsec_level *seclevel, struct tdb **, int ipsecflowinfo);
void ip_output_ipsec_pmtu_update(struct tdb *, struct route *, struct in_addr,
int, int);
int ip_output_ipsec_send(struct tdb *, struct mbuf *, struct route *, int);
*/
int
ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags,
- struct ip_moptions *imo, const u_char seclevel[], u_int32_t ipsecflowinfo)
+ struct ip_moptions *imo, const struct ipsec_level *seclevel,
+ u_int32_t ipsecflowinfo)
{
struct ip *ip;
struct ifnet *ifp = NULL;
#ifdef IPSEC
int
-ip_output_ipsec_lookup(struct mbuf *m, int hlen, const u_char seclevel[],
- struct tdb **tdbout, int ipsecflowinfo)
+ip_output_ipsec_lookup(struct mbuf *m, int hlen,
+ const struct ipsec_level *seclevel, struct tdb **tdbout, int ipsecflowinfo)
{
struct m_tag *mtag;
struct tdb_ident *tdbi;
error = EACCES;
break;
}
- inp->inp_seclevel[SL_AUTH] = optval;
+ inp->inp_seclevel.sl_auth = optval;
break;
case IP_ESP_TRANS_LEVEL:
error = EACCES;
break;
}
- inp->inp_seclevel[SL_ESP_TRANS] = optval;
+ inp->inp_seclevel.sl_esp_trans = optval;
break;
case IP_ESP_NETWORK_LEVEL:
error = EACCES;
break;
}
- inp->inp_seclevel[SL_ESP_NETWORK] = optval;
+ inp->inp_seclevel.sl_esp_network = optval;
break;
case IP_IPCOMP_LEVEL:
if (optval < IPSEC_IPCOMP_LEVEL_DEFAULT &&
error = EACCES;
break;
}
- inp->inp_seclevel[SL_IPCOMP] = optval;
+ inp->inp_seclevel.sl_ipcomp = optval;
break;
}
#endif
m->m_len = sizeof(int);
switch (optname) {
case IP_AUTH_LEVEL:
- optval = inp->inp_seclevel[SL_AUTH];
+ optval = inp->inp_seclevel.sl_auth;
break;
case IP_ESP_TRANS_LEVEL:
- optval = inp->inp_seclevel[SL_ESP_TRANS];
+ optval = inp->inp_seclevel.sl_esp_trans;
break;
case IP_ESP_NETWORK_LEVEL:
- optval = inp->inp_seclevel[SL_ESP_NETWORK];
+ optval = inp->inp_seclevel.sl_esp_network;
break;
case IP_IPCOMP_LEVEL:
- optval = inp->inp_seclevel[SL_IPCOMP];
+ optval = inp->inp_seclevel.sl_ipcomp;
break;
}
*mtod(m, int *) = optval;
-/* $OpenBSD: ip_spd.c,v 1.119 2023/11/26 22:08:10 bluhm Exp $ */
+/* $OpenBSD: ip_spd.c,v 1.120 2024/04/17 20:48:51 bluhm Exp $ */
/*
* The author of this code is Angelos D. Keromytis (angelos@cis.upenn.edu)
*
#include <netinet/ip_ipsp.h>
#include <net/pfkeyv2.h>
-int ipsp_spd_inp(struct mbuf *, const u_char *, struct ipsec_policy *,
- struct tdb **);
+int ipsp_spd_inp(struct mbuf *, const struct ipsec_level *,
+ struct ipsec_policy *, struct tdb **);
int ipsp_acquire_sa(struct ipsec_policy *, union sockaddr_union *,
union sockaddr_union *, struct sockaddr_encap *, struct mbuf *);
int ipsp_pending_acquire(struct ipsec_policy *, union sockaddr_union *);
*/
int
ipsp_spd_lookup(struct mbuf *m, int af, int hlen, int direction,
- struct tdb *tdbin, const u_char seclevel[], struct tdb **tdbout,
+ struct tdb *tdbin, const struct ipsec_level *seclevel, struct tdb **tdbout,
struct ipsec_ids *ipsecflowinfo_ids)
{
struct radix_node_head *rnh;
* If an input packet is destined to a BYPASS socket, just accept it.
*/
if ((seclevel != NULL) && (direction == IPSP_DIRECTION_IN) &&
- (seclevel[SL_ESP_TRANS] == IPSEC_LEVEL_BYPASS) &&
- (seclevel[SL_ESP_NETWORK] == IPSEC_LEVEL_BYPASS) &&
- (seclevel[SL_AUTH] == IPSEC_LEVEL_BYPASS)) {
+ (seclevel->sl_esp_trans == IPSEC_LEVEL_BYPASS) &&
+ (seclevel->sl_esp_network == IPSEC_LEVEL_BYPASS) &&
+ (seclevel->sl_auth == IPSEC_LEVEL_BYPASS)) {
if (tdbout != NULL)
*tdbout = NULL;
return 0;
* option set, skip IPsec processing.
*/
if ((seclevel != NULL) &&
- (seclevel[SL_ESP_TRANS] == IPSEC_LEVEL_BYPASS) &&
- (seclevel[SL_ESP_NETWORK] == IPSEC_LEVEL_BYPASS) &&
- (seclevel[SL_AUTH] == IPSEC_LEVEL_BYPASS)) {
+ (seclevel->sl_esp_trans == IPSEC_LEVEL_BYPASS) &&
+ (seclevel->sl_esp_network == IPSEC_LEVEL_BYPASS) &&
+ (seclevel->sl_auth == IPSEC_LEVEL_BYPASS)) {
/* Direct match. */
if (dignore ||
!memcmp(&sdst, &ipo->ipo_dst, sdst.sa.sa_len)) {
* Deal with PCB security requirements.
*/
int
-ipsp_spd_inp(struct mbuf *m, const u_char seclevel[], struct ipsec_policy *ipo,
- struct tdb **tdbout)
+ipsp_spd_inp(struct mbuf *m, const struct ipsec_level *seclevel,
+ struct ipsec_policy *ipo, struct tdb **tdbout)
{
/* Sanity check. */
if (seclevel == NULL)
/* We only support IPSEC_LEVEL_BYPASS or IPSEC_LEVEL_AVAIL */
- if (seclevel[SL_ESP_TRANS] == IPSEC_LEVEL_BYPASS &&
- seclevel[SL_ESP_NETWORK] == IPSEC_LEVEL_BYPASS &&
- seclevel[SL_AUTH] == IPSEC_LEVEL_BYPASS)
+ if (seclevel->sl_esp_trans == IPSEC_LEVEL_BYPASS &&
+ seclevel->sl_esp_network == IPSEC_LEVEL_BYPASS &&
+ seclevel->sl_auth == IPSEC_LEVEL_BYPASS)
goto justreturn;
- if (seclevel[SL_ESP_TRANS] == IPSEC_LEVEL_AVAIL &&
- seclevel[SL_ESP_NETWORK] == IPSEC_LEVEL_AVAIL &&
- seclevel[SL_AUTH] == IPSEC_LEVEL_AVAIL)
+ if (seclevel->sl_esp_trans == IPSEC_LEVEL_AVAIL &&
+ seclevel->sl_esp_network == IPSEC_LEVEL_AVAIL &&
+ seclevel->sl_auth == IPSEC_LEVEL_AVAIL)
goto justreturn;
return -EINVAL; /* Silently drop packet. */
-/* $OpenBSD: ip_var.h,v 1.116 2024/04/16 12:56:39 bluhm Exp $ */
+/* $OpenBSD: ip_var.h,v 1.117 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: ip_var.h,v 1.16 1996/02/13 23:43:20 christos Exp $ */
/*
struct rtentry;
struct route;
struct inpcb;
+struct ipsec_level;
int ip_ctloutput(int, struct socket *, int, int, struct mbuf *);
int ip_fragment(struct mbuf *, struct mbuf_list *, struct ifnet *, u_long);
int ip_mforward(struct mbuf *, struct ifnet *);
int ip_optcopy(struct ip *, struct ip *);
int ip_output(struct mbuf *, struct mbuf *, struct route *, int,
- struct ip_moptions *, const u_char[], u_int32_t);
+ struct ip_moptions *, const struct ipsec_level *, u_int32_t);
u_int16_t
ip_randomid(void);
void ip_send(struct mbuf *);
-/* $OpenBSD: raw_ip.c,v 1.158 2024/04/12 12:25:58 bluhm Exp $ */
+/* $OpenBSD: raw_ip.c,v 1.159 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: raw_ip.c,v 1.25 1996/02/18 18:58:33 christos Exp $ */
/*
#endif
error = ip_output(m, inp->inp_options, &inp->inp_route, flags,
- inp->inp_moptions, inp->inp_seclevel, 0);
+ inp->inp_moptions, &inp->inp_seclevel, 0);
return (error);
}
-/* $OpenBSD: tcp_input.c,v 1.404 2024/04/13 23:44:11 jsg Exp $ */
+/* $OpenBSD: tcp_input.c,v 1.405 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: tcp_input.c,v 1.23 1996/02/13 23:43:44 christos Exp $ */
/*
&tdbi->dst, tdbi->proto);
}
error = ipsp_spd_lookup(m, af, iphlen, IPSP_DIRECTION_IN,
- tdb, inp ? inp->inp_seclevel : NULL, NULL, NULL);
+ tdb, inp ? &inp->inp_seclevel : NULL, NULL, NULL);
tdb_unref(tdb);
if (error) {
tcpstat_inc(tcps_rcvnosec);
* from the old pcb. Ditto for any other
* IPsec-related information.
*/
- memcpy(inp->inp_seclevel, oldinp->inp_seclevel,
- sizeof(oldinp->inp_seclevel));
+ inp->inp_seclevel = oldinp->inp_seclevel;
#endif /* IPSEC */
#ifdef INET6
if (ISSET(inp->inp_flags, INP_IPV6)) {
error = ip_output(m, sc->sc_ipopts, &sc->sc_route,
(ip_mtudisc ? IP_MTUDISC : 0), NULL,
- inp ? inp->inp_seclevel : NULL, 0);
+ inp ? &inp->inp_seclevel : NULL, 0);
break;
#ifdef INET6
case AF_INET6:
/* leave flowlabel = 0, it is legal and require no state mgmt */
error = ip6_output(m, NULL /*XXX*/, &sc->sc_route, 0,
- NULL, inp ? inp->inp_seclevel : NULL);
+ NULL, inp ? &inp->inp_seclevel : NULL);
break;
#endif
}
-/* $OpenBSD: tcp_output.c,v 1.143 2024/02/13 12:22:09 bluhm Exp $ */
+/* $OpenBSD: tcp_output.c,v 1.144 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: tcp_output.c,v 1.16 1997/06/03 16:17:09 kml Exp $ */
/*
error = ip_output(m, tp->t_inpcb->inp_options,
&tp->t_inpcb->inp_route,
(ip_mtudisc ? IP_MTUDISC : 0), NULL,
- tp->t_inpcb->inp_seclevel, 0);
+ &tp->t_inpcb->inp_seclevel, 0);
break;
#ifdef INET6
case AF_INET6:
}
error = ip6_output(m, tp->t_inpcb->inp_outputopts6,
&tp->t_inpcb->inp_route, 0, NULL,
- tp->t_inpcb->inp_seclevel);
+ &tp->t_inpcb->inp_seclevel);
break;
#endif /* INET6 */
}
-/* $OpenBSD: tcp_subr.c,v 1.200 2024/04/12 16:07:09 bluhm Exp $ */
+/* $OpenBSD: tcp_subr.c,v 1.201 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: tcp_subr.c,v 1.22 1996/02/13 23:44:00 christos Exp $ */
/*
ip6_output(m, tp ? tp->t_inpcb->inp_outputopts6 : NULL,
tp ? &tp->t_inpcb->inp_route : NULL,
0, NULL,
- tp ? tp->t_inpcb->inp_seclevel : NULL);
+ tp ? &tp->t_inpcb->inp_seclevel : NULL);
break;
#endif /* INET6 */
case AF_INET:
ip_output(m, NULL,
tp ? &tp->t_inpcb->inp_route : NULL,
ip_mtudisc ? IP_MTUDISC : 0, NULL,
- tp ? tp->t_inpcb->inp_seclevel : NULL, 0);
+ tp ? &tp->t_inpcb->inp_seclevel : NULL, 0);
break;
}
}
-/* $OpenBSD: udp_usrreq.c,v 1.319 2024/04/12 16:07:09 bluhm Exp $ */
+/* $OpenBSD: udp_usrreq.c,v 1.320 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: udp_usrreq.c,v 1.28 1996/03/16 23:54:03 christos Exp $ */
/*
} else
tdb = NULL;
error = ipsp_spd_lookup(m, af, iphlen, IPSP_DIRECTION_IN,
- tdb, inp ? inp->inp_seclevel : NULL, NULL, NULL);
+ tdb, inp ? &inp->inp_seclevel : NULL, NULL, NULL);
if (error) {
udpstat_inc(udps_nosec);
tdb_unref(tdb);
error = ip_output(m, inp->inp_options, &inp->inp_route,
(inp->inp_socket->so_options & SO_BROADCAST), inp->inp_moptions,
- inp->inp_seclevel, ipsecflowinfo);
+ &inp->inp_seclevel, ipsecflowinfo);
bail:
m_freem(control);
-/* $OpenBSD: ip6_output.c,v 1.290 2024/04/16 12:56:39 bluhm Exp $ */
+/* $OpenBSD: ip6_output.c,v 1.291 2024/04/17 20:48:51 bluhm Exp $ */
/* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */
/*
*/
int
ip6_output(struct mbuf *m, struct ip6_pktopts *opt, struct route *ro,
- int flags, struct ip6_moptions *im6o, const u_char seclevel[])
+ int flags, struct ip6_moptions *im6o, const struct ipsec_level *seclevel)
{
struct ip6_hdr *ip6;
struct ifnet *ifp = NULL;
error = EACCES;
break;
}
- inp->inp_seclevel[SL_AUTH] = optval;
+ inp->inp_seclevel.sl_auth = optval;
break;
case IPV6_ESP_TRANS_LEVEL:
error = EACCES;
break;
}
- inp->inp_seclevel[SL_ESP_TRANS] = optval;
+ inp->inp_seclevel.sl_esp_trans = optval;
break;
case IPV6_ESP_NETWORK_LEVEL:
error = EACCES;
break;
}
- inp->inp_seclevel[SL_ESP_NETWORK] = optval;
+ inp->inp_seclevel.sl_esp_network = optval;
break;
case IPV6_IPCOMP_LEVEL:
error = EACCES;
break;
}
- inp->inp_seclevel[SL_IPCOMP] = optval;
+ inp->inp_seclevel.sl_ipcomp = optval;
break;
}
#endif
m->m_len = sizeof(int);
switch (optname) {
case IPV6_AUTH_LEVEL:
- optval = inp->inp_seclevel[SL_AUTH];
+ optval = inp->inp_seclevel.sl_auth;
break;
case IPV6_ESP_TRANS_LEVEL:
optval =
- inp->inp_seclevel[SL_ESP_TRANS];
+ inp->inp_seclevel.sl_esp_trans;
break;
case IPV6_ESP_NETWORK_LEVEL:
optval =
- inp->inp_seclevel[SL_ESP_NETWORK];
+ inp->inp_seclevel.sl_esp_network;
break;
case IPV6_IPCOMP_LEVEL:
- optval = inp->inp_seclevel[SL_IPCOMP];
+ optval = inp->inp_seclevel.sl_ipcomp;
break;
}
*mtod(m, int *) = optval;
#ifdef IPSEC
int
-ip6_output_ipsec_lookup(struct mbuf *m, const u_char seclevel[],
+ip6_output_ipsec_lookup(struct mbuf *m, const struct ipsec_level *seclevel,
struct tdb **tdbout)
{
struct tdb *tdb;
-/* $OpenBSD: ip6_var.h,v 1.115 2024/04/16 12:56:39 bluhm Exp $ */
+/* $OpenBSD: ip6_var.h,v 1.116 2024/04/17 20:48:51 bluhm Exp $ */
/* $KAME: ip6_var.h,v 1.33 2000/06/11 14:59:20 jinmei Exp $ */
/*
extern const struct pr_usrreqs rip6_usrreqs;
struct inpcb;
+struct ipsec_level;
int icmp6_ctloutput(int, struct socket *, int, int, struct mbuf *);
void ip6_mloopback(struct ifnet *, struct mbuf *, struct sockaddr_in6 *);
int ip6_output(struct mbuf *, struct ip6_pktopts *, struct route *, int,
- struct ip6_moptions *, const u_char[]);
+ struct ip6_moptions *, const struct ipsec_level *);
int ip6_fragment(struct mbuf *, struct mbuf_list *, int, u_char, u_long);
int ip6_ctloutput(int, struct socket *, int, int, struct mbuf *);
int ip6_raw_ctloutput(int, struct socket *, int, int, struct mbuf *);
#ifdef IPSEC
struct tdb;
-int ip6_output_ipsec_lookup(struct mbuf *, const u_char[], struct tdb **);
+int ip6_output_ipsec_lookup(struct mbuf *, const struct ipsec_level *,
+ struct tdb **);
int ip6_output_ipsec_send(struct tdb *, struct mbuf *, struct route *,
int, int);
#endif /* IPSEC */
-/* $OpenBSD: raw_ip6.c,v 1.183 2024/04/16 12:40:40 bluhm Exp $ */
+/* $OpenBSD: raw_ip6.c,v 1.184 2024/04/17 20:48:51 bluhm Exp $ */
/* $KAME: raw_ip6.c,v 1.69 2001/03/04 15:55:44 itojun Exp $ */
/*
#endif
error = ip6_output(m, optp, &inp->inp_route, flags,
- inp->inp_moptions6, inp->inp_seclevel);
+ inp->inp_moptions6, &inp->inp_seclevel);
if (so->so_proto->pr_protocol == IPPROTO_ICMPV6) {
icmp6stat_inc(icp6s_outhist + type);
} else
-/* $OpenBSD: udp6_output.c,v 1.64 2024/02/13 12:22:09 bluhm Exp $ */
+/* $OpenBSD: udp6_output.c,v 1.65 2024/04/17 20:48:51 bluhm Exp $ */
/* $KAME: udp6_output.c,v 1.21 2001/02/07 11:51:54 itojun Exp $ */
/*
#endif
error = ip6_output(m, optp, &inp->inp_route,
- flags, inp->inp_moptions6, inp->inp_seclevel);
+ flags, inp->inp_moptions6, &inp->inp_seclevel);
goto releaseopt;
release:
-/* $OpenBSD: inet.c,v 1.181 2024/02/13 12:22:09 bluhm Exp $ */
+/* $OpenBSD: inet.c,v 1.182 2024/04/17 20:48:51 bluhm Exp $ */
/* $NetBSD: inet.c,v 1.14 1995/10/03 21:42:37 thorpej Exp $ */
/*
printf("ro_dst %s\n ", raddr);
p("%#.8x", inp_flags, "\n ");
p("%d", inp_hops, "\n ");
- p("%u", inp_seclevel[0], ", ");
- p("%u", inp_seclevel[1], ", ");
- p("%u", inp_seclevel[2], ", ");
- p("%u", inp_seclevel[3], "\n ");
+ p("%u", inp_seclevel.sl_auth, ", ");
+ p("%u", inp_seclevel.sl_esp_trans, ", ");
+ p("%u", inp_seclevel.sl_esp_network, ", ");
+ p("%u", inp_seclevel.sl_ipcomp, "\n ");
p("%u", inp_ip_minttl, "\n ");
p("%d", inp_cksum6, "\n ");
pp("%p", inp_icmp6filt, "\n ");