Remove IPsec and related code from the system.
authorSascha Wildner <saw@online.de>
Sat, 21 Apr 2018 21:26:37 +0000 (23:26 +0200)
committerSascha Wildner <saw@online.de>
Sat, 21 Apr 2018 21:28:18 +0000 (23:28 +0200)
It was unmaintained ever since we inherited it from FreeBSD 4.8.

In fact, we had two implementations from that time: IPSEC and FAST_IPSEC.
FAST_IPSEC is the implementation to which FreeBSD has moved since, but
it didn't even build in DragonFly.

Fixes for dports have been committed to DeltaPorts.

Requested-by: dillon
Dports-testing-and-fixing: zrj

179 files changed:
Makefile_upgrade.inc
UPDATING
etc/defaults/rc.conf
etc/mtree/BSD.include.dist
etc/rc.d/Makefile
etc/rc.d/ipsec [deleted file]
etc/rc.d/rtadvd
gnu/usr.bin/groff/tmac/fr.ISO8859-1
gnu/usr.bin/groff/tmac/ru.KOI8-R
include/Makefile
lib/Makefile
lib/libc/gen/sysctl.3
lib/libc/net/getnameinfo.c
lib/libipsec/Makefile [deleted file]
lib/libipsec/ipsec_dump_policy.c [deleted file]
lib/libipsec/ipsec_get_policylen.c [deleted file]
lib/libipsec/ipsec_set_policy.3 [deleted file]
lib/libipsec/ipsec_strerror.3 [deleted file]
lib/libipsec/ipsec_strerror.c [deleted file]
lib/libipsec/ipsec_strerror.h [deleted file]
lib/libipsec/libpfkey.h [deleted file]
lib/libipsec/pfkey.c [deleted file]
lib/libipsec/pfkey_dump.c [deleted file]
lib/libipsec/policy_parse.y [deleted file]
lib/libipsec/policy_token.l [deleted file]
lib/libipsec/test-policy.c [deleted file]
sbin/ping/Makefile
sbin/ping/ping.8
sbin/ping/ping.c
sbin/ping6/Makefile
sbin/ping6/ping6.8
sbin/ping6/ping6.c
share/initrd/sbin.libcrypto/Makefile
share/initrd/sbin/Makefile
share/man/man4/Makefile
share/man/man4/aesni.4
share/man/man4/crypto.4
share/man/man4/fast_ipsec.4 [deleted file]
share/man/man4/hifn.4
share/man/man4/ip6.4
share/man/man4/ipsec.4 [deleted file]
share/man/man4/padlock.4
share/man/man4/pfsync.4
share/man/man4/safe.4
share/man/man4/tcp.4
share/man/man4/txp.4
share/man/man4/ubsec.4
share/man/man5/rc.conf.5
share/man/man7/hier.7
share/man/man9/crypto.9
share/mk/bsd.libnames.mk
sys/conf/files
sys/conf/options
sys/config/LINT64
sys/config/VKERNEL64
sys/crypto/blowfish/bf_ecb.c [deleted file]
sys/net/pf/if_pfsync.c
sys/net/pfkeyv2.h [deleted file]
sys/netinet/in.h
sys/netinet/in_pcb.c
sys/netinet/in_pcb.h
sys/netinet/in_proto.c
sys/netinet/ip_divert.c
sys/netinet/ip_icmp.c
sys/netinet/ip_input.c
sys/netinet/ip_output.c
sys/netinet/raw_ip.c
sys/netinet/tcp_input.c
sys/netinet/tcp_output.c
sys/netinet/tcp_subr.c
sys/netinet/tcp_syncache.c
sys/netinet/tcp_usrreq.c
sys/netinet/udp_usrreq.c
sys/netinet6/ah.h [deleted file]
sys/netinet6/ah6.h [deleted file]
sys/netinet6/ah_core.c [deleted file]
sys/netinet6/ah_input.c [deleted file]
sys/netinet6/ah_output.c [deleted file]
sys/netinet6/esp.h [deleted file]
sys/netinet6/esp6.h [deleted file]
sys/netinet6/esp_aesctr.c [deleted file]
sys/netinet6/esp_camellia.c [deleted file]
sys/netinet6/esp_core.c [deleted file]
sys/netinet6/esp_input.c [deleted file]
sys/netinet6/esp_output.c [deleted file]
sys/netinet6/esp_rijndael.c [deleted file]
sys/netinet6/icmp6.c
sys/netinet6/in6.h
sys/netinet6/in6_pcb.c
sys/netinet6/in6_proto.c
sys/netinet6/ip6_forward.c
sys/netinet6/ip6_input.c
sys/netinet6/ip6_output.c
sys/netinet6/ipcomp.h [deleted file]
sys/netinet6/ipcomp6.h [deleted file]
sys/netinet6/ipcomp_core.c [deleted file]
sys/netinet6/ipcomp_input.c [deleted file]
sys/netinet6/ipcomp_output.c [deleted file]
sys/netinet6/ipsec.c [deleted file]
sys/netinet6/ipsec.h [deleted file]
sys/netinet6/ipsec6.h [deleted file]
sys/netinet6/nd6_nbr.c
sys/netinet6/raw_ip6.c
sys/netinet6/udp6_output.c
sys/netinet6/udp6_usrreq.c
sys/netproto/ipsec/ah.h [deleted file]
sys/netproto/ipsec/ah_var.h [deleted file]
sys/netproto/ipsec/esp.h [deleted file]
sys/netproto/ipsec/esp_var.h [deleted file]
sys/netproto/ipsec/ipcomp.h [deleted file]
sys/netproto/ipsec/ipcomp_var.h [deleted file]
sys/netproto/ipsec/ipip_var.h [deleted file]
sys/netproto/ipsec/ipsec.c [deleted file]
sys/netproto/ipsec/ipsec.h [deleted file]
sys/netproto/ipsec/ipsec6.h [deleted file]
sys/netproto/ipsec/ipsec_input.c [deleted file]
sys/netproto/ipsec/ipsec_mbuf.c [deleted file]
sys/netproto/ipsec/ipsec_output.c [deleted file]
sys/netproto/ipsec/key.c [deleted file]
sys/netproto/ipsec/key.h [deleted file]
sys/netproto/ipsec/key_debug.c [deleted file]
sys/netproto/ipsec/key_debug.h [deleted file]
sys/netproto/ipsec/key_var.h [deleted file]
sys/netproto/ipsec/keydb.h [deleted file]
sys/netproto/ipsec/keysock.c [deleted file]
sys/netproto/ipsec/keysock.h [deleted file]
sys/netproto/ipsec/xform.h [deleted file]
sys/netproto/ipsec/xform_ah.c [deleted file]
sys/netproto/ipsec/xform_esp.c [deleted file]
sys/netproto/ipsec/xform_ipcomp.c [deleted file]
sys/netproto/ipsec/xform_ipip.c [deleted file]
sys/netproto/key/key.c [deleted file]
sys/netproto/key/key.h [deleted file]
sys/netproto/key/key_debug.c [deleted file]
sys/netproto/key/key_debug.h [deleted file]
sys/netproto/key/key_var.h [deleted file]
sys/netproto/key/keydb.c [deleted file]
sys/netproto/key/keydb.h [deleted file]
sys/netproto/key/keysock.c [deleted file]
sys/netproto/key/keysock.h [deleted file]
sys/platform/pc64/conf/files
sys/platform/vkernel64/conf/files
sys/sys/mbuf.h
sys/sys/param.h
sys/sys/priv.h
tools/tools/crypto/Makefile
tools/tools/crypto/ipsecstats.c [deleted file]
usr.bin/kdump/mkioctls
usr.bin/netstat/Makefile
usr.bin/netstat/ipsec.c [deleted file]
usr.bin/netstat/main.c
usr.bin/netstat/netstat.1
usr.bin/netstat/netstat.h
usr.bin/telnet/Makefile
usr.bin/telnet/commands.c
usr.bin/telnet/externs.h
usr.bin/telnet/main.c
usr.sbin/Makefile
usr.sbin/authpf/authpf.8
usr.sbin/inetd/Makefile
usr.sbin/inetd/inetd.8
usr.sbin/inetd/inetd.c
usr.sbin/inetd/inetd.h
usr.sbin/mld6query/Makefile
usr.sbin/rrenumd/Makefile
usr.sbin/rrenumd/rrenumd.c
usr.sbin/rtadvd/rtadvd.8
usr.sbin/setkey/Makefile [deleted file]
usr.sbin/setkey/parse.y [deleted file]
usr.sbin/setkey/sample.cf [deleted file]
usr.sbin/setkey/scriptdump [deleted file]
usr.sbin/setkey/setkey.8 [deleted file]
usr.sbin/setkey/setkey.c [deleted file]
usr.sbin/setkey/test-pfkey.c [deleted file]
usr.sbin/setkey/test-policy.c [deleted file]
usr.sbin/setkey/token.l [deleted file]
usr.sbin/setkey/vchar.h [deleted file]
usr.sbin/traceroute6/Makefile
usr.sbin/traceroute6/traceroute6.c

index 9631434..ec47b19 100644 (file)
@@ -3387,6 +3387,30 @@ TO_REMOVE+=/usr/include/sys/ttychars.h
 TO_REMOVE+=/usr/include/sys/ttydev.h
 TO_REMOVE+=/usr/share/man/man3/gtty.3.gz
 TO_REMOVE+=/usr/share/man/man3/stty.3.gz
+TO_REMOVE+=/etc/rc.d/ipsec
+TO_REMOVE+=/usr/include/net/pfkeyv2.h
+TO_REMOVE+=/usr/include/netinet6/ah.h
+TO_REMOVE+=/usr/include/netinet6/ah6.h
+TO_REMOVE+=/usr/include/netinet6/esp.h
+TO_REMOVE+=/usr/include/netinet6/esp6.h
+TO_REMOVE+=/usr/include/netinet6/ipcomp.h
+TO_REMOVE+=/usr/include/netinet6/ipcomp6.h
+TO_REMOVE+=/usr/include/netinet6/ipsec.h
+TO_REMOVE+=/usr/include/netinet6/ipsec6.h
+TO_REMOVE+=/usr/include/netipsec
+TO_REMOVE+=/usr/include/netkey
+TO_REMOVE+=/usr/include/netproto/ipsec
+TO_REMOVE+=/usr/include/netproto/key
+TO_REMOVE+=/usr/lib/libipsec.a
+TO_REMOVE+=/usr/lib/profile/libipsec.a
+TO_REMOVE+=/usr/sbin/setkey
+TO_REMOVE+=/usr/share/man/man3/ipsec_dump_policy.3.gz
+TO_REMOVE+=/usr/share/man/man3/ipsec_get_policylen.3.gz
+TO_REMOVE+=/usr/share/man/man3/ipsec_set_policy.3.gz
+TO_REMOVE+=/usr/share/man/man3/ipsec_strerror.3.gz
+TO_REMOVE+=/usr/share/man/man4/fast_ipsec.4.gz
+TO_REMOVE+=/usr/share/man/man4/ipsec.4.gz
+TO_REMOVE+=/usr/share/man/man8/setkey.8.gz
 
 .if !defined(WANT_INSTALLER)
 TO_REMOVE+=/usr/sbin/dfuibe_installer
index 835f309..602c39d 100644 (file)
--- a/UPDATING
+++ b/UPDATING
 +         UPGRADING DRAGONFLY FROM 5.0 TO LATER VERSIONS                +
 +-----------------------------------------------------------------------+
 
+IPSEC, IPSEC_ESP AND IPSEC_DEBUG REMOVED FROM VKERNEL64 CONFIG
+--------------------------------------------------------------
+
+IPsec has been removed from the system. Of our standard kernel
+configurations, only the virtual kernel one had it. People running
+vkernels with configuration files derived from our VKERNEL64 will
+have to remove these options manually.
+
 VIRTIO_PCI REMOVED FROM KERNEL CONFIG
 -------------------------------------
 
index 56d7edf..561b8fe 100644 (file)
@@ -73,8 +73,6 @@ ipfw3_script="/etc/ipfw3.rules"       # Script to run to set up the firewall rules
 ipfw3_modules="ipfw3 ipfw3_basic"      # IPFW3 modules to be loaded
 ip_portrange_first="NO"                # Set first dynamically allocated port
 ip_portrange_last="NO"         # Set last dynamically allocated port
-ipsec_enable="NO"              # Set to YES to run setkey on ipsec_file
-ipsec_file="/etc/ipsec.conf"   # Name of config file for setkey
 natd_program="/sbin/natd"      # path to natd, if you want a different one.
 natd_enable="NO"               # Enable natd (if firewall_enable == YES).
 natd_interface=""              # Public interface or IPaddress to use.
index efb67fa..d4cad98 100644 (file)
     netproto
         802_11
         ..
-        ipsec
-        ..
-        key
-        ..
         mpls
         ..
         smb
index 61d3a86..55eca8a 100644 (file)
@@ -10,8 +10,7 @@ FILES=        DAEMON LOGIN NETWORKING SERVERS \
        bootconf bootparams btconfig bthcid ccd cleanvar cryptdisks \
        cleartmp cron cryptdisks devd devfs dhclient diskless dmesg dumpon \
        fixbootfile fsck ftpd hostname hotplugd \
-       inetd initdiskless initrandom ip6fw ipfw ipfw3 ipsec \
-       jail keyserv \
+       inetd initdiskless initrandom ip6fw ipfw ipfw3 jail keyserv \
        ldconfig local localdaemons lockd lpd lvm \
        mixer modules motd mountcritlocal mountcritremote \
        mountd moused mroute6d mrouted msgs \
diff --git a/etc/rc.d/ipsec b/etc/rc.d/ipsec
deleted file mode 100644 (file)
index b280f38..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-#
-# $NetBSD: ipsec,v 1.7 2002/03/22 04:33:58 thorpej Exp $
-# $FreeBSD: src/etc/rc.d/ipsec,v 1.5 2003/02/16 20:46:08 mtm Exp $
-# $DragonFly: src/etc/rc.d/ipsec,v 1.5 2005/11/19 21:47:32 swildner Exp $
-#
-
-# PROVIDE: ipsec
-# REQUIRE: root mountcritlocal tty
-# BEFORE:  DAEMON
-
-. /etc/rc.subr
-
-name="ipsec"
-rcvar=`set_rcvar`
-start_precmd="ipsec_prestart"
-start_cmd="ipsec_start"
-stop_precmd="test -f /etc/ipsec.conf"
-stop_cmd="ipsec_stop"
-reload_cmd="ipsec_reload"
-extra_commands="reload"
-ipsec_program="/usr/sbin/setkey"
-# ipsec_file is set by rc.conf
-
-ipsec_prestart()
-{
-       if [ ! -f "$ipsec_file" ]; then
-               warn "$ipsec_file not readable; ipsec start aborted."
-                       #
-                       # If booting directly to multiuser, send SIGTERM to
-                       # the parent (/etc/rc) to abort the boot
-                       #
-               if [ "$autoboot" = yes ]; then
-                       echo "ERROR: ABORTING BOOT (sending SIGTERM to parent)!"
-                       kill -TERM $$
-                       exit 1
-               fi
-               return 1
-       fi
-       return 0
-}
-
-ipsec_start()
-{
-       echo "Installing ipsec manual keys/policies."
-       ${ipsec_program} -f $ipsec_file
-}
-
-ipsec_stop()
-{
-       echo "Clearing ipsec manual keys/policies."
-
-       # still not 100% sure if we would like to do this.
-       # it is very questionable to do this during shutdown session, since
-       # it can hang any of remaining IPv4/v6 session.
-       #
-       ${ipsec_program} -F
-       ${ipsec_program} -FP
-}
-
-ipsec_reload()
-{
-       echo "Reloading ipsec manual keys/policies."
-       ${ipsec_program} -F
-       ${ipsec_program} -FP
-       ${ipsec_program} -f "$ipsec_file"
-}
-
-load_rc_config $name
-run_rc_command "$1"
index d330b89..77c61de 100644 (file)
@@ -31,12 +31,6 @@ rtadvd_precmd()
        # router renumbering messages, specify your Router Renumbering
        # security policy by -R option.
        #
-       # See `man 3 ipsec_set_policy` for IPsec policy specification
-       # details.
-       # (CAUTION: This enables your routers prefix renumbering
-       # from another machine, so if you enable this, do it with
-       # enough care.)
-       #
        # If specific interfaces haven't been specified,
        # get a list of interfaces and enable it on them
        #
@@ -55,9 +49,6 @@ rtadvd_precmd()
                ;;
        esac
        command_args="${rtadvd_interfaces}"
-       # Enable Router Renumbering, unicast case
-       # (use correct src/dst addr)
-       # rtadvd -R "in ipsec ah/transport/fec0:0:0:1::1-fec0:0:0:10::1/require" ${ipv6_network_interf
        return 0
 }
 
index ba66247..f6b8026 100644 (file)
@@ -85,7 +85,6 @@
 .ds doc-str-Lb-libfetch    Biblioth\[`e]que de transfert de fichier (libfetch, \-lfetch)
 .\" XXX ds doc-str-Lb-libgeom     Userland API Library for kernel GEOM subsystem (libgeom, \-lgeom)
 .ds doc-str-Lb-libi386     Biblioth\[`e]que de l'architecture i386 (libi386, \-li386)
-.ds doc-str-Lb-libipsec    Biblioth\[`e]que de contr\[^o]le de politique IPsec (libipsec, \-lipsec)
 .ds doc-str-Lb-libkvm      Biblioth\[`e]que d'acc\[`e]s aux donn\['e]es du noyau (libkvm, \-lkvm)
 .ds doc-str-Lb-libm        Biblioth\[`e]que math\['e]matique (libm, \-lm)
 .ds doc-str-Lb-libmd       Biblioth\[`e]que de support des signatures (MD4, MD5, etc.) (libmd, \-lmd)
index 2513ef7..f422bad 100644 (file)
@@ -85,7 +85,6 @@
 .ds doc-str-Lb-libfetch    âÉÂÌÉÏÔÅËÁ ÆÁÊÌÏ×ÏÊ ÐÅÒÅÄÁÞÉ (libfetch, \-lfetch)
 .ds doc-str-Lb-libgeom     ðÏÌØÚÏ×ÁÔÅÌØÓËÁÑ API ÂÉÂÌÉÏÔÅËÁ ÐÏÄÓÉÓÔÅÍÙ ÑÄÒÁ GEOM (libgeom, \-lgeom)
 .ds doc-str-Lb-libi386     âÉÂÌÉÏÔÅËÁ ÁÒÈÉÔÅËÔÕÒÙ i386 (libi386, \-li386)
-.ds doc-str-Lb-libipsec    âÉÂÌÉÏÔÅËÁ ÕÐÒÁ×ÌÅÎÉÑ IPsec Policy (libipsec, \-lipsec)
 .ds doc-str-Lb-libkvm      âÉÂÌÉÏÔÅËÁ ÄÏÓÔÕÐÁ Ë ÄÁÎÎÙÍ ÑÄÒÁ (libkvm, \-lkvm)
 .ds doc-str-Lb-libm        âÉÂÌÉÏÔÅËÁ ÍÁÔÅÍÁÔÉÞÅÓËÉÈ ÆÕÎËÃÉÊ (libm, \-lm)
 .\" XXX ds doc-str-Lb-libmd       Message Digest (MD4, MD5, É Ô.Ä.) Support Library (libmd, \-lmd)
index a6aa464..6a0dfb5 100644 (file)
@@ -84,8 +84,7 @@ LSUBDIRS= \
        netgraph7/mppc netgraph7/one2many netgraph7/ppp netgraph7/pppoe \
        netgraph7/pptpgre netgraph7/rfc1490 netgraph7/socket \
        netgraph7/tcpmss netgraph7/tee netgraph7/tty netgraph7/vjc \
-       netproto/ipsec netproto/802_11 netproto/mpls \
-       netproto/key netproto/smb \
+       netproto/802_11 netproto/mpls netproto/smb \
        vfs/isofs/cd9660 vfs/puffs \
        vfs/msdosfs vfs/nfs vfs/ntfs \
        vfs/smbfs vfs/udf vfs/ufs vfs/hammer vfs/hammer2 \
@@ -136,8 +135,6 @@ INCSLINKS+= vfs ${INCLUDEDIR}/fs
 # It is hopefully a temporary hack until we have environments working.
 INCSLINKS+=    vfs ${INCLUDEDIR}/ufs
 INCSLINKS+=    ufs ${INCLUDEDIR}/vfs/ffs
-INCSLINKS+=    netproto/ipsec ${INCLUDEDIR}/netipsec
-INCSLINKS+=    netproto/key ${INCLUDEDIR}/netkey
 INCSLINKS+=    netproto/smb ${INCLUDEDIR}/netsmb
 INCSLINKS+=    bus/pccard ${INCLUDEDIR}/pccard
 # Some 3rd party software looks for <floatingpoint.h>
index c021ac1..79a1cab 100644 (file)
@@ -71,7 +71,6 @@ SUBDIR=       ${SUBDIR_ORDERED} \
        libftpio \
        libhammer \
        libipfw3 \
-       libipsec \
        libkcore \
        libkiconv \
        libkinfo \
index 9838f4b..06e2a58 100644 (file)
@@ -28,7 +28,7 @@
 .\"    @(#)sysctl.3    8.4 (Berkeley) 5/9/95
 .\" $FreeBSD: src/lib/libc/gen/sysctl.3,v 1.33.2.13 2002/04/07 04:57:14 dd Exp $
 .\"
-.Dd June 22, 2015
+.Dd April 21, 2018
 .Dt SYSCTL 3
 .Os
 .Sh NAME
@@ -625,9 +625,6 @@ This value applies to normal transport protocols, not to ICMP.
 .It Li udp.checksum
 Returns 1 when UDP checksums are being computed and checked.
 Disabling UDP checksums is strongly discouraged.
-.Pp
-For variables net.inet.*.ipsec, please refer to
-.Xr ipsec 4 .
 .El
 .It Dv PF_INET6
 Get or set various global information about IPv6
@@ -639,10 +636,6 @@ For variables
 .Li net.inet6.* ,
 please refer to
 .Xr inet6 4 .
-For variables
-.Li net.inet6.*.ipsec6 ,
-please refer to
-.Xr ipsec 4 .
 .El
 .Ss CTL_USER
 The string and integer information available for the
index 1c265a6..c42ce27 100644 (file)
@@ -410,7 +410,6 @@ getnameinfo_link(const struct sockaddr *sa, socklen_t salen __unused,
        /*
         * The following use IPv4 addresses as link-layer addresses:
         * IFT_OTHER    (net/gre/if_gre.c)
-        * IFT_OTHER    (netproto/ipsec/xform_ipip.c)
         */
        /* default below is believed correct for all these. */
        case IFT_ARCNET:
diff --git a/lib/libipsec/Makefile b/lib/libipsec/Makefile
deleted file mode 100644 (file)
index 9a5987e..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. Neither the name of the project nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-# $FreeBSD: src/lib/libipsec/Makefile,v 1.2.2.3 2001/04/25 10:04:30 ru Exp $
-# $DragonFly: src/lib/libipsec/Makefile,v 1.3 2005/04/21 13:42:33 joerg Exp $
-
-LIB=   ipsec
-SHLIB_MAJOR= 2
-SHLIBDIR?= /lib
-CFLAGS+=-I. -I${.CURDIR}
-CFLAGS+=-DIPSEC_DEBUG -DIPSEC
-.if !defined(NOINET6)
-CFLAGS+=-DINET6
-.endif
-
-#.PATH:        ${.CURDIR}/../../sys/netkey
-#SRCS= pfkey.c pfkey_dump.c
-SRCS+= ipsec_strerror.c policy_parse.y policy_token.l
-SRCS+= ipsec_dump_policy.c ipsec_get_policylen.c
-#SRCS+=        key_debug.c
-CLEANFILES+=   y.tab.c y.tab.h
-YFLAGS+=-d -p __libipsecyy
-LFLAGS+=-P__libipsecyy
-WARNS?=        2
-
-MAN=   ipsec_set_policy.3 ipsec_strerror.3
-MLINKS+=ipsec_set_policy.3 ipsec_get_policylen.3 \
-       ipsec_set_policy.3 ipsec_dump_policy.3
-
-SRCS+= y.tab.h
-y.tab.h:       policy_parse.y
-
-.include <bsd.lib.mk>
diff --git a/lib/libipsec/ipsec_dump_policy.c b/lib/libipsec/ipsec_dump_policy.c
deleted file mode 100644 (file)
index bc03ccf..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/ipsec_dump_policy.c,v 1.1.2.1 2000/07/15 07:24:04 kris Exp $ */
-/*     $KAME: ipsec_dump_policy.c,v 1.11 2000/05/07 05:29:47 itojun Exp $      */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-
-#include <netkey/key_var.h>
-#include <netinet/in.h>
-#include <netinet6/ipsec.h>
-
-#include <arpa/inet.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netdb.h>
-
-#include "ipsec_strerror.h"
-
-static const char *ipsp_dir_strs[] = {
-       "any", "in", "out",
-};
-
-static const char *ipsp_policy_strs[] = {
-       "discard", "none", "ipsec", "entrust", "bypass",
-};
-
-static char *ipsec_dump_ipsecrequest (char *, size_t,
-       struct sadb_x_ipsecrequest *, size_t);
-static int set_addresses (char *, size_t, struct sockaddr *,
-       struct sockaddr *);
-static char *set_address (char *, size_t, struct sockaddr *);
-
-/*
- * policy is sadb_x_policy buffer.
- * Must call free() later.
- * When delimiter == NULL, alternatively ' '(space) is applied.
- */
-char *
-ipsec_dump_policy(caddr_t policy, char *delimiter)
-{
-       struct sadb_x_policy *xpl = (struct sadb_x_policy *)policy;
-       struct sadb_x_ipsecrequest *xisr;
-       size_t off, buflen;
-       char *buf;
-       char isrbuf[1024];
-       char *newbuf;
-
-       /* sanity check */
-       if (policy == NULL)
-               return NULL;
-       if (xpl->sadb_x_policy_exttype != SADB_X_EXT_POLICY) {
-               __ipsec_errcode = EIPSEC_INVAL_EXTTYPE;
-               return NULL;
-       }
-
-       /* set delimiter */
-       if (delimiter == NULL)
-               delimiter = " ";
-
-       switch (xpl->sadb_x_policy_dir) {
-       case IPSEC_DIR_ANY:
-       case IPSEC_DIR_INBOUND:
-       case IPSEC_DIR_OUTBOUND:
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_DIR;
-               return NULL;
-       }
-
-       switch (xpl->sadb_x_policy_type) {
-       case IPSEC_POLICY_DISCARD:
-       case IPSEC_POLICY_NONE:
-       case IPSEC_POLICY_IPSEC:
-       case IPSEC_POLICY_BYPASS:
-       case IPSEC_POLICY_ENTRUST:
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_POLICY;
-               return NULL;
-       }
-
-       buflen = strlen(ipsp_dir_strs[xpl->sadb_x_policy_dir])
-               + 1     /* space */
-               + strlen(ipsp_policy_strs[xpl->sadb_x_policy_type])
-               + 1;    /* NUL */
-
-       if ((buf = malloc(buflen)) == NULL) {
-               __ipsec_errcode = EIPSEC_NO_BUFS;
-               return NULL;
-       }
-       snprintf(buf, buflen, "%s %s", ipsp_dir_strs[xpl->sadb_x_policy_dir],
-           ipsp_policy_strs[xpl->sadb_x_policy_type]);
-
-       if (xpl->sadb_x_policy_type != IPSEC_POLICY_IPSEC) {
-               __ipsec_errcode = EIPSEC_NO_ERROR;
-               return buf;
-       }
-
-       /* count length of buffer for use */
-       off = sizeof(*xpl);
-       while (off < PFKEY_EXTLEN(xpl)) {
-               xisr = (struct sadb_x_ipsecrequest *)((caddr_t)xpl + off);
-               off += xisr->sadb_x_ipsecrequest_len;
-       }
-
-       /* validity check */
-       if (off != PFKEY_EXTLEN(xpl)) {
-               __ipsec_errcode = EIPSEC_INVAL_SADBMSG;
-               free(buf);
-               return NULL;
-       }
-
-       off = sizeof(*xpl);
-       while (off < PFKEY_EXTLEN(xpl)) {
-               xisr = (struct sadb_x_ipsecrequest *)((caddr_t)xpl + off);
-
-               if (ipsec_dump_ipsecrequest(isrbuf, sizeof(isrbuf), xisr,
-                   PFKEY_EXTLEN(xpl) - off) == NULL) {
-                       free(buf);
-                       return NULL;
-               }
-
-               buflen = strlen(buf) + strlen(delimiter) + strlen(isrbuf) + 1;
-               newbuf = (char *)realloc(buf, buflen);
-               if (newbuf == NULL) {
-                       __ipsec_errcode = EIPSEC_NO_BUFS;
-                       free(buf);
-                       return NULL;
-               }
-               buf = newbuf;
-               snprintf(buf + strlen(buf), buflen - strlen(buf),
-                   "%s%s", delimiter, isrbuf);
-
-               off += xisr->sadb_x_ipsecrequest_len;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return buf;
-}
-
-static char *
-ipsec_dump_ipsecrequest(char *buf, size_t len,
-    struct sadb_x_ipsecrequest *xisr, size_t bound)
-{
-       const char *proto, *mode, *level;
-       char abuf[NI_MAXHOST * 2 + 2];
-
-       if (xisr->sadb_x_ipsecrequest_len > bound) {
-               __ipsec_errcode = EIPSEC_INVAL_PROTO;
-               return NULL;
-       }
-
-       switch (xisr->sadb_x_ipsecrequest_proto) {
-       case IPPROTO_ESP:
-               proto = "esp";
-               break;
-       case IPPROTO_AH:
-               proto = "ah";
-               break;
-       case IPPROTO_IPCOMP:
-               proto = "ipcomp";
-               break;
-       case IPPROTO_TCP:
-               proto = "tcp";
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_PROTO;
-               return NULL;
-       }
-
-       switch (xisr->sadb_x_ipsecrequest_mode) {
-       case IPSEC_MODE_ANY:
-               mode = "any";
-               break;
-       case IPSEC_MODE_TRANSPORT:
-               mode = "transport";
-               break;
-       case IPSEC_MODE_TUNNEL:
-               mode = "tunnel";
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_MODE;
-               return NULL;
-       }
-
-       abuf[0] = '\0';
-       if (xisr->sadb_x_ipsecrequest_len > sizeof(*xisr)) {
-               struct sockaddr *sa1, *sa2;
-               caddr_t p;
-
-               p = (caddr_t)(xisr + 1);
-               sa1 = (struct sockaddr *)p;
-               sa2 = (struct sockaddr *)(p + sa1->sa_len);
-               if (sizeof(*xisr) + sa1->sa_len + sa2->sa_len !=
-                   xisr->sadb_x_ipsecrequest_len) {
-                       __ipsec_errcode = EIPSEC_INVAL_ADDRESS;
-                       return NULL;
-               }
-               if (set_addresses(abuf, sizeof(abuf), sa1, sa2) != 0) {
-                       __ipsec_errcode = EIPSEC_INVAL_ADDRESS;
-                       return NULL;
-               }
-       }
-
-       switch (xisr->sadb_x_ipsecrequest_level) {
-       case IPSEC_LEVEL_DEFAULT:
-               level = "default";
-               break;
-       case IPSEC_LEVEL_USE:
-               level = "use";
-               break;
-       case IPSEC_LEVEL_REQUIRE:
-               level = "require";
-               break;
-       case IPSEC_LEVEL_UNIQUE:
-               level = "unique";
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_LEVEL;
-               return NULL;
-       }
-
-       if (xisr->sadb_x_ipsecrequest_reqid == 0)
-               snprintf(buf, len, "%s/%s/%s/%s", proto, mode, abuf, level);
-       else {
-               int ch;
-
-               if (xisr->sadb_x_ipsecrequest_reqid > IPSEC_MANUAL_REQID_MAX)
-                       ch = '#';
-               else
-                       ch = ':';
-               snprintf(buf, len, "%s/%s/%s/%s%c%d", proto, mode, abuf, level,
-                   ch, xisr->sadb_x_ipsecrequest_reqid);
-       }
-
-       return buf;
-}
-
-static int
-set_addresses(char *buf, size_t len, struct sockaddr *sa1, struct sockaddr *sa2)
-{
-       char tmp1[NI_MAXHOST], tmp2[NI_MAXHOST];
-
-       if (set_address(tmp1, sizeof(tmp1), sa1) == NULL ||
-           set_address(tmp2, sizeof(tmp2), sa2) == NULL)
-               return -1;
-       if (strlen(tmp1) + 1 + strlen(tmp2) + 1 > len)
-               return -1;
-       snprintf(buf, len, "%s-%s", tmp1, tmp2);
-       return 0;
-}
-
-static char *
-set_address(char *buf, size_t len, struct sockaddr *sa)
-{
-#ifdef NI_WITHSCOPEID
-       const int niflags = NI_NUMERICHOST | NI_WITHSCOPEID;
-#else
-       const int niflags = NI_NUMERICHOST;
-#endif
-
-       if (len < 1)
-               return NULL;
-       buf[0] = '\0';
-       if (getnameinfo(sa, sa->sa_len, buf, len, NULL, 0, niflags) != 0)
-               return NULL;
-       return buf;
-}
diff --git a/lib/libipsec/ipsec_get_policylen.c b/lib/libipsec/ipsec_get_policylen.c
deleted file mode 100644 (file)
index 39361db..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/ipsec_get_policylen.c,v 1.1.2.1 2000/07/15 07:24:04 kris Exp $       */
-/*     $DragonFly: src/lib/libipsec/ipsec_get_policylen.c,v 1.3 2008/09/30 16:57:05 swildner Exp $     */
-/*     $KAME: ipsec_get_policylen.c,v 1.5 2000/05/07 05:25:03 itojun Exp $     */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-
-#include <netinet6/ipsec.h>
-
-#include <net/pfkeyv2.h>
-
-#include "ipsec_strerror.h"
-
-int
-ipsec_get_policylen(caddr_t policy)
-{
-       return policy ? PFKEY_EXTLEN(policy) : -1;
-}
diff --git a/lib/libipsec/ipsec_set_policy.3 b/lib/libipsec/ipsec_set_policy.3
deleted file mode 100644 (file)
index 5292939..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-.\"    $KAME: ipsec_set_policy.3,v 1.15 2001/08/17 07:21:36 itojun Exp $
-.\"    $FreeBSD: src/lib/libipsec/ipsec_set_policy.3,v 1.3.2.10 2002/12/29 16:35:36 schweikh Exp $
-.\"
-.\" Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the project nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd May 5, 1998
-.Dt IPSEC_SET_POLICY 3
-.Os
-.Sh NAME
-.Nm ipsec_set_policy ,
-.Nm ipsec_get_policylen ,
-.Nm ipsec_dump_policy
-.Nd manipulate IPsec policy specification structure from readable string
-.\"
-.Sh LIBRARY
-.Lb libipsec
-.Sh SYNOPSIS
-.In netinet6/ipsec.h
-.Ft "char *"
-.Fn ipsec_set_policy "char *policy" "int len"
-.Ft int
-.Fn ipsec_get_policylen "char *buf"
-.Ft "char *"
-.Fn ipsec_dump_policy "char *buf" "char *delim"
-.Sh DESCRIPTION
-.Fn ipsec_set_policy
-generates IPsec policy specification structure, namely
-.Li struct sadb_x_policy
-and/or
-.Li struct sadb_x_ipsecrequest
-from human-readable policy specification.
-Policy specification must be given as C string
-.Fa policy
-and length
-.Fa len
-of
-.Fa policy .
-.Fn ipsec_set_policy
-will return the buffer of IPsec policy specification structure.
-The buffer is dynamically allocated, and must be freed by the caller by calling
-.Xr free 3 .
-.Pp
-You may want the length of the generated buffer such when calling
-.Xr setsockopt 2 .
-.Fn ipsec_get_policylen
-will return the length.
-.Pp
-.Fn ipsec_dump_policy
-converts IPsec policy structure into readable form.
-Therefore,
-.Fn ipsec_dump_policy
-can be regarded as inverse conversion of
-.Fn ipsec_set_policy .
-.Fa buf
-points to an IPsec policy structure,
-.Li struct sadb_x_policy .
-.Fa delim
-is a delimiter string, which is usually a blank character.
-If you set
-.Fa delim
-to
-.Dv NULL ,
-single whitespace is assumed.
-.Fn ipsec_dump_policy
-returns pointer to dynamically allocated string.
-It is caller's responsibility to reclaim the region, by using
-.Xr free 3 .
-.Pp
-.Fa policy
-is formatted as either of the following:
-.Bl -tag -width "discard"
-.It Ar direction Li discard
-.Ar direction
-must be
-.Li in
-or
-.Li out .
-.Ar direction
-specifies which direction the policy needs to be applied.
-With
-.Li discard
-policy, packets will be dropped if they match the policy.
-.It Ar direction Li entrust
-.Li entrust
-means to consult to SPD defined by
-.Xr setkey 8 .
-.It Ar direction Li bypass
-.Li bypass
-means to be bypassed the IPsec processing.
-(packet will be transmitted in clear).
-This is for privileged socket.
-.It Xo
-.Ar direction
-.Li ipsec
-.Ar request ...
-.Xc
-.Li ipsec
-means that the matching packets are subject to IPsec processing.
-.Li ipsec
-can be followed by one or more
-.Ar request
-string, which is formatted as below:
-.Bl -tag -width "discard"
-.It Xo
-.Ar protocol
-.Li /
-.Ar mode
-.Li /
-.Ar src
-.Li -
-.Ar dst
-.Op Ar /level
-.Xc
-.Ar protocol
-is either
-.Li ah ,
-.Li esp
-or
-.Li ipcomp .
-.Pp
-.Ar mode
-is either
-.Li transport
-or
-.Li tunnel .
-.Pp
-.Ar src
-and
-.Ar dst
-specifies IPsec endpoint.
-.Ar src
-always means
-.Dq sending node
-and
-.Ar dst
-always means
-.Dq receiving node .
-Therefore, when
-.Ar direction
-is
-.Li in ,
-.Ar dst
-is this node
-and
-.Ar src
-is the other node
-(peer).
-If
-.Ar mode
-is
-.Li transport ,
-Both
-.Ar src
-and
-.Ar dst
-can be omitted.
-.Pp
-.Ar level
-must be set to one of the following:
-.Li default , use , require
-or
-.Li unique .
-.Li default
-means that the kernel should consult the system default policy
-defined by
-.Xr sysctl 8 ,
-such as
-.Va net.inet.ipsec.esp_trans_deflev .
-See
-.Xr ipsec 4
-regarding the system default.
-.Li use
-means that a relevant SA can be used when available,
-since the kernel may perform IPsec operation against packets when possible.
-In this case, packets can be transmitted in clear
-(when SA is not available),
-or encrypted
-(when SA is available).
-.Li require
-means that a relevant SA is required,
-since the kernel must perform IPsec operation against packets.
-.Li unique
-is the same as
-.Li require ,
-but adds the restriction that the SA for outbound traffic is used
-only for this policy.
-You may need the identifier in order to relate the policy and the SA
-when you define the SA by manual keying.
-You can put the decimal number as the identifier after
-.Li unique
-like
-.Li unique : number .
-.Li number
-must be between 1 and 32767 .
-If the
-.Ar request
-string is kept unambiguous,
-.Ar level
-and slash prior to
-.Ar level
-can be omitted.
-However, it is encouraged to specify them explicitly
-to avoid unintended behaviors.
-If
-.Ar level
-is omitted, it will be interpreted as
-.Li default .
-.El
-.El
-.Pp
-Note that there is a bit difference of specification from
-.Xr setkey 8 .
-In specification by
-.Xr setkey 8 ,
-both entrust and bypass are not used.
-Refer to
-.Xr setkey 8
-for detail.
-.Pp
-Here are several examples
-(long lines are wrapped for readability):
-.Bd -literal -offset indent
-in discard
-out ipsec esp/transport//require
-in ipsec ah/transport//require
-out ipsec esp/tunnel/10.1.1.2-10.1.1.1/use
-in ipsec ipcomp/transport//use
-        esp/transport//use
-.Ed
-.Sh RETURN VALUES
-.Fn ipsec_set_policy
-returns a pointer to the allocated buffer of policy specification if successful; otherwise a NULL pointer is returned.
-.Fn ipsec_get_policylen
-returns with positive value
-(meaning the buffer size)
-on success, and negative value on errors.
-.Fn ipsec_dump_policy
-returns a pointer to dynamically allocated region on success,
-and
-.Dv NULL
-on errors.
-.Sh SEE ALSO
-.Xr ipsec_strerror 3 ,
-.Xr ipsec 4 ,
-.Xr setkey 8
-.Sh HISTORY
-The functions first appeared in WIDE/KAME IPv6 protocol stack kit.
-.Pp
-IPv6 and IPsec support based on the KAME Project
-.Pa ( http://www.kame.net/ )
-stack was initially integrated into
-.Fx 4.0
diff --git a/lib/libipsec/ipsec_strerror.3 b/lib/libipsec/ipsec_strerror.3
deleted file mode 100644 (file)
index f4784fb..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-.\"    $KAME: ipsec_strerror.3,v 1.9 2001/08/17 07:21:36 itojun Exp $
-.\"    $FreeBSD: src/lib/libipsec/ipsec_strerror.3,v 1.2.2.7 2002/04/28 05:40:25 suz Exp $
-.\"    $DragonFly: src/lib/libipsec/ipsec_strerror.3,v 1.4 2007/08/19 18:47:47 swildner Exp $
-.\"
-.\" Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the project nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd May 6, 1998
-.Dt IPSEC_STRERROR 3
-.Os
-.\"
-.Sh NAME
-.Nm ipsec_strerror
-.Nd error message for IPsec policy manipulation library
-.\"
-.Sh LIBRARY
-.Lb libipsec
-.Sh SYNOPSIS
-.In netinet6/ipsec.h
-.Ft "const char *"
-.Fn ipsec_strerror "void"
-.\"
-.Sh DESCRIPTION
-.In netinet6/ipsec.h
-declares
-.Pp
-.Dl extern int ipsec_errcode;
-.Pp
-which is used to pass an error code from IPsec policy manipulation library
-to an user program.
-.Fn ipsec_strerror
-can be used to obtain the error message string for the error code.
-.Pp
-The array pointed to is not to be modified by the program.
-Since
-.Fn ipsec_strerror
-uses
-.Xr strerror 3
-as underlying function, calling
-.Xr strerror 3
-after
-.Fn ipsec_strerror
-would make the return value from
-.Fn ipsec_strerror
-invalid, or overwritten.
-.\"
-.Sh RETURN VALUES
-.Fn ipsec_strerror
-always return a pointer to C string.
-The C string must not be overwritten by user programs.
-.\"
-.Sh SEE ALSO
-.Xr ipsec_set_policy 3
-.\"
-.Sh HISTORY
-.Fn ipsec_strerror
-first appeared in WIDE/KAME IPv6 protocol stack kit.
-.\"
-.Sh BUGS
-.Fn ipsec_strerror
-will return its result which may be overwritten by subsequent calls.
-.Pp
-.Va ipsec_errcode
-is not thread safe.
diff --git a/lib/libipsec/ipsec_strerror.c b/lib/libipsec/ipsec_strerror.c
deleted file mode 100644 (file)
index 8282adb..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/ipsec_strerror.c,v 1.1.2.2 2001/07/03 11:01:14 ume Exp $     */
-/*     $KAME: ipsec_strerror.c,v 1.7 2000/07/30 00:45:12 itojun Exp $  */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-
-#include <string.h>
-#include <netinet6/ipsec.h>
-
-#include "ipsec_strerror.h"
-
-int __ipsec_errcode;
-
-static const char *ipsec_errlist[] = {
-"Success",                                     /*EIPSEC_NO_ERROR*/
-"Not supported",                               /*EIPSEC_NOT_SUPPORTED*/
-"Invalid argument",                            /*EIPSEC_INVAL_ARGUMENT*/
-"Invalid sadb message",                                /*EIPSEC_INVAL_SADBMSG*/
-"Invalid version",                             /*EIPSEC_INVAL_VERSION*/
-"Invalid security policy",                     /*EIPSEC_INVAL_POLICY*/
-"Invalid address specification",               /*EIPSEC_INVAL_ADDRESS*/
-"Invalid ipsec protocol",                      /*EIPSEC_INVAL_PROTO*/
-"Invalid ipsec mode",                          /*EIPSEC_INVAL_MODE*/
-"Invalid ipsec level",                         /*EIPSEC_INVAL_LEVEL*/
-"Invalid SA type",                             /*EIPSEC_INVAL_SATYPE*/
-"Invalid message type",                                /*EIPSEC_INVAL_MSGTYPE*/
-"Invalid extension type",                      /*EIPSEC_INVAL_EXTTYPE*/
-"Invalid algorithm type",                      /*EIPSEC_INVAL_ALGS*/
-"Invalid key length",                          /*EIPSEC_INVAL_KEYLEN*/
-"Invalid address family",                      /*EIPSEC_INVAL_FAMILY*/
-"Invalid prefix length",                       /*EIPSEC_INVAL_PREFIXLEN*/
-"Invalid direction",                           /*EIPSEC_INVAL_DIR*/
-"SPI range violation",                         /*EIPSEC_INVAL_SPI*/
-"No protocol specified",                       /*EIPSEC_NO_PROTO*/
-"No algorithm specified",                      /*EIPSEC_NO_ALGS*/
-"No buffers available",                                /*EIPSEC_NO_BUFS*/
-"Must get supported algorithms list first",    /*EIPSEC_DO_GET_SUPP_LIST*/
-"Protocol mismatch",                           /*EIPSEC_PROTO_MISMATCH*/
-"Family mismatch",                             /*EIPSEC_FAMILY_MISMATCH*/
-"Too few arguments",                           /*EIPSEC_FEW_ARGUMENTS*/
-NULL,                                          /*EIPSEC_SYSTEM_ERROR*/
-"Unknown error",                               /*EIPSEC_MAX*/
-};
-
-const char *ipsec_strerror(void)
-{
-       if (__ipsec_errcode < 0 || __ipsec_errcode > EIPSEC_MAX)
-               __ipsec_errcode = EIPSEC_MAX;
-
-       return ipsec_errlist[__ipsec_errcode];
-}
-
-void __ipsec_set_strerror(const char *str)
-{
-       __ipsec_errcode = EIPSEC_SYSTEM_ERROR;
-       ipsec_errlist[EIPSEC_SYSTEM_ERROR] = str;
-
-       return;
-}
diff --git a/lib/libipsec/ipsec_strerror.h b/lib/libipsec/ipsec_strerror.h
deleted file mode 100644 (file)
index e062d47..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/ipsec_strerror.h,v 1.1.2.2 2001/07/03 11:01:14 ume Exp $     */
-/*     $DragonFly: src/lib/libipsec/ipsec_strerror.h,v 1.3 2003/11/12 20:21:30 eirikn Exp $    */
-/*     $KAME: ipsec_strerror.h,v 1.8 2000/07/30 00:45:12 itojun Exp $  */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-extern int __ipsec_errcode;
-extern void __ipsec_set_strerror (const char *);
-
-#define EIPSEC_NO_ERROR                0       /*success*/
-#define EIPSEC_NOT_SUPPORTED   1       /*not supported*/
-#define EIPSEC_INVAL_ARGUMENT  2       /*invalid argument*/
-#define EIPSEC_INVAL_SADBMSG   3       /*invalid sadb message*/
-#define EIPSEC_INVAL_VERSION   4       /*invalid version*/
-#define EIPSEC_INVAL_POLICY    5       /*invalid security policy*/
-#define EIPSEC_INVAL_ADDRESS   6       /*invalid address specification*/
-#define EIPSEC_INVAL_PROTO     7       /*invalid ipsec protocol*/
-#define EIPSEC_INVAL_MODE      8       /*Invalid ipsec mode*/
-#define EIPSEC_INVAL_LEVEL     9       /*invalid ipsec level*/
-#define EIPSEC_INVAL_SATYPE    10      /*invalid SA type*/
-#define EIPSEC_INVAL_MSGTYPE   11      /*invalid message type*/
-#define EIPSEC_INVAL_EXTTYPE   12      /*invalid extension type*/
-#define EIPSEC_INVAL_ALGS      13      /*Invalid algorithm type*/
-#define EIPSEC_INVAL_KEYLEN    14      /*invalid key length*/
-#define EIPSEC_INVAL_FAMILY    15      /*invalid address family*/
-#define EIPSEC_INVAL_PREFIXLEN 16      /*SPI range violation*/
-#define EIPSEC_INVAL_DIR       17      /*Invalid direciton*/
-#define EIPSEC_INVAL_SPI       18      /*invalid prefixlen*/
-#define EIPSEC_NO_PROTO                19      /*no protocol specified*/
-#define EIPSEC_NO_ALGS         20      /*No algorithm specified*/
-#define EIPSEC_NO_BUFS         21      /*no buffers available*/
-#define EIPSEC_DO_GET_SUPP_LIST        22      /*must get supported algorithm first*/
-#define EIPSEC_PROTO_MISMATCH  23      /*protocol mismatch*/
-#define EIPSEC_FAMILY_MISMATCH 24      /*family mismatch*/
-#define EIPSEC_FEW_ARGUMENTS   25      /*Too few arguments*/
-#define EIPSEC_SYSTEM_ERROR    26      /*system error*/
-#define EIPSEC_MAX             27      /*unknown error*/
diff --git a/lib/libipsec/libpfkey.h b/lib/libipsec/libpfkey.h
deleted file mode 100644 (file)
index e7705bf..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/libpfkey.h,v 1.1.2.2 2001/07/03 11:01:14 ume Exp $   */
-/*     $DragonFly: src/lib/libipsec/libpfkey.h,v 1.4 2003/11/13 00:14:52 dillon Exp $  */
-/*     $KAME: libpfkey.h,v 1.6 2001/03/05 18:22:17 thorpej Exp $       */
-
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-struct sadb_msg;
-extern void pfkey_sadump (struct sadb_msg *);
-extern void pfkey_spdump (struct sadb_msg *);
-
-struct sockaddr;
-struct sadb_alg;
-int ipsec_check_keylen (u_int, u_int, u_int);
-int ipsec_check_keylen2 (u_int, u_int, u_int);
-int ipsec_get_keylen (u_int, u_int, struct sadb_alg *);
-u_int pfkey_set_softrate (u_int, u_int);
-u_int pfkey_get_softrate (u_int);
-int pfkey_send_getspi (int, u_int, u_int, struct sockaddr *,
-       struct sockaddr *, u_int32_t, u_int32_t, u_int32_t, u_int32_t);
-int pfkey_send_update (int, u_int, u_int, struct sockaddr *,
-       struct sockaddr *, u_int32_t, u_int32_t, u_int,
-       caddr_t, u_int, u_int, u_int, u_int, u_int, u_int32_t, u_int64_t,
-       u_int64_t, u_int64_t, u_int32_t);
-int pfkey_send_add (int, u_int, u_int, struct sockaddr *,
-       struct sockaddr *, u_int32_t, u_int32_t, u_int,
-       caddr_t, u_int, u_int, u_int, u_int, u_int, u_int32_t, u_int64_t,
-       u_int64_t, u_int64_t, u_int32_t);
-int pfkey_send_delete (int, u_int, u_int,
-       struct sockaddr *, struct sockaddr *, u_int32_t);
-int pfkey_send_delete_all (int, u_int, u_int,
-       struct sockaddr *, struct sockaddr *);
-int pfkey_send_get (int, u_int, u_int,
-       struct sockaddr *, struct sockaddr *, u_int32_t);
-int pfkey_send_register (int, u_int);
-int pfkey_recv_register (int);
-int pfkey_set_supported (struct sadb_msg *, int);
-int pfkey_send_flush (int, u_int);
-int pfkey_send_dump (int, u_int);
-int pfkey_send_promisc_toggle (int, int);
-int pfkey_send_spdadd (int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, caddr_t, int, u_int32_t);
-int pfkey_send_spdadd2 (int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, u_int64_t, u_int64_t,
-       caddr_t, int, u_int32_t);
-int pfkey_send_spdupdate (int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, caddr_t, int, u_int32_t);
-int pfkey_send_spdupdate2 (int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, u_int64_t, u_int64_t,
-       caddr_t, int, u_int32_t);
-int pfkey_send_spddelete (int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, caddr_t, int, u_int32_t);
-int pfkey_send_spddelete2 (int, u_int32_t);
-int pfkey_send_spdget (int, u_int32_t);
-int pfkey_send_spdsetidx (int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, caddr_t, int, u_int32_t);
-int pfkey_send_spdflush (int);
-int pfkey_send_spddump (int);
-
-int pfkey_open (void);
-void pfkey_close (int);
-struct sadb_msg *pfkey_recv (int);
-int pfkey_send (int, struct sadb_msg *, int);
-int pfkey_align (struct sadb_msg *, caddr_t *);
-int pfkey_check (caddr_t *);
diff --git a/lib/libipsec/pfkey.c b/lib/libipsec/pfkey.c
deleted file mode 100644 (file)
index 8baec1b..0000000
+++ /dev/null
@@ -1,1986 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/pfkey.c,v 1.1.2.2 2001/07/03 11:01:14 ume Exp $      */
-/*     $KAME: pfkey.c,v 1.39 2001/03/05 18:22:17 thorpej Exp $ */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <net/pfkeyv2.h>
-#include <netkey/key_var.h>
-#include <netinet/in.h>
-#include <netinet6/ipsec.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include "ipsec_strerror.h"
-#include "libpfkey.h"
-
-#define CALLOC(size, cast) (cast)calloc(1, (size))
-
-static int findsupportedmap (int);
-static int setsupportedmap (struct sadb_supported *);
-static struct sadb_alg *findsupportedalg (u_int, u_int);
-static int pfkey_send_x1 (int, u_int, u_int, u_int, struct sockaddr *,
-       struct sockaddr *, u_int32_t, u_int32_t, u_int, caddr_t,
-       u_int, u_int, u_int, u_int, u_int, u_int32_t, u_int32_t,
-       u_int32_t, u_int32_t, u_int32_t);
-static int pfkey_send_x2 (int, u_int, u_int, u_int,
-       struct sockaddr *, struct sockaddr *, u_int32_t);
-static int pfkey_send_x3 (int, u_int, u_int);
-static int pfkey_send_x4 (int, u_int, struct sockaddr *, u_int,
-       struct sockaddr *, u_int, u_int, u_int64_t, u_int64_t,
-       char *, int, u_int32_t);
-static int pfkey_send_x5 (int, u_int, u_int32_t);
-
-static caddr_t pfkey_setsadbmsg (caddr_t, caddr_t, u_int, u_int,
-       u_int, u_int32_t, pid_t);
-static caddr_t pfkey_setsadbsa (caddr_t, caddr_t, u_int32_t, u_int,
-       u_int, u_int, u_int32_t);
-static caddr_t pfkey_setsadbaddr (caddr_t, caddr_t, u_int,
-       struct sockaddr *, u_int, u_int);
-static caddr_t pfkey_setsadbkey (caddr_t, caddr_t, u_int, caddr_t, u_int);
-static caddr_t pfkey_setsadblifetime (caddr_t, caddr_t, u_int, u_int32_t,
-       u_int32_t, u_int32_t, u_int32_t);
-static caddr_t pfkey_setsadbxsa2 (caddr_t, caddr_t, u_int32_t, u_int32_t);
-
-/*
- * make and search supported algorithm structure.
- */
-static struct sadb_supported *ipsec_supported[] = { NULL, NULL, NULL, NULL};
-
-static int supported_map[] = {
-       SADB_SATYPE_AH,
-       SADB_SATYPE_ESP,
-       SADB_X_SATYPE_IPCOMP,
-       SADB_X_SATYPE_TCPSIGNATURE,
-};
-
-static int
-findsupportedmap(int satype)
-{
-       int i;
-
-       for (i = 0; i < NELEM(supported_map); i++)
-               if (supported_map[i] == satype)
-                       return i;
-       return -1;
-}
-
-static struct sadb_alg *
-findsupportedalg(u_int satype, u_int alg_id)
-{
-       int algno;
-       int tlen;
-       caddr_t p;
-
-       /* validity check */
-       algno = findsupportedmap(satype);
-       if (algno == -1) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return NULL;
-       }
-       if (ipsec_supported[algno] == NULL) {
-               __ipsec_errcode = EIPSEC_DO_GET_SUPP_LIST;
-               return NULL;
-       }
-
-       tlen = ipsec_supported[algno]->sadb_supported_len
-               - sizeof(struct sadb_supported);
-       p = (caddr_t)(ipsec_supported[algno] + 1);
-       while (tlen > 0) {
-               if (tlen < sizeof(struct sadb_alg)) {
-                       /* invalid format */
-                       break;
-               }
-               if (((struct sadb_alg *)p)->sadb_alg_id == alg_id)
-                       return (struct sadb_alg *)p;
-
-               tlen -= sizeof(struct sadb_alg);
-               p += sizeof(struct sadb_alg);
-       }
-
-       __ipsec_errcode = EIPSEC_NOT_SUPPORTED;
-       return NULL;
-}
-
-static int
-setsupportedmap(struct sadb_supported *sup)
-{
-       struct sadb_supported **ipsup;
-
-       switch (sup->sadb_supported_exttype) {
-       case SADB_EXT_SUPPORTED_AUTH:
-               ipsup = &ipsec_supported[findsupportedmap(SADB_SATYPE_AH)];
-               break;
-       case SADB_EXT_SUPPORTED_ENCRYPT:
-               ipsup = &ipsec_supported[findsupportedmap(SADB_SATYPE_ESP)];
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-               return -1;
-       }
-
-       if (*ipsup)
-               free(*ipsup);
-
-       *ipsup = malloc(sup->sadb_supported_len);
-       if (!*ipsup) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       memcpy(*ipsup, sup, sup->sadb_supported_len);
-
-       return 0;
-}
-
-/*
- * check key length against algorithm specified.
- * This function is called with SADB_EXT_SUPPORTED_{AUTH,ENCRYPT} as the
- * augument, and only calls to ipsec_check_keylen2();
- * keylen is the unit of bit.
- * OUT:
- *     -1: invalid.
- *      0: valid.
- */
-int
-ipsec_check_keylen(u_int supported, u_int alg_id, u_int keylen)
-{
-       int satype;
-
-       /* validity check */
-       switch (supported) {
-       case SADB_EXT_SUPPORTED_AUTH:
-               satype = SADB_SATYPE_AH;
-               break;
-       case SADB_EXT_SUPPORTED_ENCRYPT:
-               satype = SADB_SATYPE_ESP;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       return ipsec_check_keylen2(satype, alg_id, keylen);
-}
-
-/*
- * check key length against algorithm specified.
- * satype is one of satype defined at pfkeyv2.h.
- * keylen is the unit of bit.
- * OUT:
- *     -1: invalid.
- *      0: valid.
- */
-int
-ipsec_check_keylen2(u_int satype, u_int alg_id, u_int keylen)
-{
-       struct sadb_alg *alg;
-
-       alg = findsupportedalg(satype, alg_id);
-       if (!alg)
-               return -1;
-
-       if (keylen < alg->sadb_alg_minbits || keylen > alg->sadb_alg_maxbits) {
-               __ipsec_errcode = EIPSEC_INVAL_KEYLEN;
-               return -1;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-/*
- * get max/min key length against algorithm specified.
- * satype is one of satype defined at pfkeyv2.h.
- * keylen is the unit of bit.
- * OUT:
- *     -1: invalid.
- *      0: valid.
- */
-int
-ipsec_get_keylen(u_int supported, u_int alg_id, struct sadb_alg *alg0)
-{
-       struct sadb_alg *alg;
-       u_int satype;
-
-       /* validity check */
-       if (!alg0) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       switch (supported) {
-       case SADB_EXT_SUPPORTED_AUTH:
-               satype = SADB_SATYPE_AH;
-               break;
-       case SADB_EXT_SUPPORTED_ENCRYPT:
-               satype = SADB_SATYPE_ESP;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       alg = findsupportedalg(satype, alg_id);
-       if (!alg)
-               return -1;
-
-       memcpy(alg0, alg, sizeof(*alg0));
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-/*
- * set the rate for SOFT lifetime against HARD one.
- * If rate is more than 100 or equal to zero, then set to 100.
- */
-static u_int soft_lifetime_allocations_rate = PFKEY_SOFT_LIFETIME_RATE;
-static u_int soft_lifetime_bytes_rate = PFKEY_SOFT_LIFETIME_RATE;
-static u_int soft_lifetime_addtime_rate = PFKEY_SOFT_LIFETIME_RATE;
-static u_int soft_lifetime_usetime_rate = PFKEY_SOFT_LIFETIME_RATE;
-
-u_int
-pfkey_set_softrate(u_int type, u_int rate)
-{
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-
-       if (rate > 100 || rate == 0)
-               rate = 100;
-
-       switch (type) {
-       case SADB_X_LIFETIME_ALLOCATIONS:
-               soft_lifetime_allocations_rate = rate;
-               return 0;
-       case SADB_X_LIFETIME_BYTES:
-               soft_lifetime_bytes_rate = rate;
-               return 0;
-       case SADB_X_LIFETIME_ADDTIME:
-               soft_lifetime_addtime_rate = rate;
-               return 0;
-       case SADB_X_LIFETIME_USETIME:
-               soft_lifetime_usetime_rate = rate;
-               return 0;
-       }
-
-       __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-       return 1;
-}
-
-/*
- * get current rate for SOFT lifetime against HARD one.
- * ATTENTION: ~0 is returned if invalid type was passed.
- */
-u_int
-pfkey_get_softrate(u_int type)
-{
-       switch (type) {
-       case SADB_X_LIFETIME_ALLOCATIONS:
-               return soft_lifetime_allocations_rate;
-       case SADB_X_LIFETIME_BYTES:
-               return soft_lifetime_bytes_rate;
-       case SADB_X_LIFETIME_ADDTIME:
-               return soft_lifetime_addtime_rate;
-       case SADB_X_LIFETIME_USETIME:
-               return soft_lifetime_usetime_rate;
-       }
-
-       return ~0;
-}
-
-/*
- * sending SADB_GETSPI message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_getspi(int so, u_int satype, u_int mode, struct sockaddr *src,
-    struct sockaddr *dst, u_int32_t min, u_int32_t max, u_int32_t reqid,
-    u_int32_t seq)
-{
-       struct sadb_msg *newmsg;
-       caddr_t ep;
-       int len;
-       int need_spirange = 0;
-       caddr_t p;
-       int plen;
-
-       /* validity check */
-       if (src == NULL || dst == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-       if (src->sa_family != dst->sa_family) {
-               __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-               return -1;
-       }
-       if (min > max || (min > 0 && min <= 255)) {
-               __ipsec_errcode = EIPSEC_INVAL_SPI;
-               return -1;
-       }
-       switch (src->sa_family) {
-       case AF_INET:
-               plen = sizeof(struct in_addr) << 3;
-               break;
-       case AF_INET6:
-               plen = sizeof(struct in6_addr) << 3;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_FAMILY;
-               return -1;
-       }
-
-       /* create new sadb_msg to send. */
-       len = sizeof(struct sadb_msg)
-               + sizeof(struct sadb_x_sa2)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(src->sa_len)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(dst->sa_len);
-
-       if (min > 255 && max < ~0) {
-               need_spirange++;
-               len += sizeof(struct sadb_spirange);
-       }
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, SADB_GETSPI,
-           len, satype, seq, getpid());
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-
-       p = pfkey_setsadbxsa2(p, ep, mode, reqid);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* set sadb_address for source */
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_SRC, src, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* set sadb_address for destination */
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_DST, dst, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* proccessing spi range */
-       if (need_spirange) {
-               struct sadb_spirange spirange;
-
-               if (p + sizeof(spirange) > ep) {
-                       free(newmsg);
-                       return -1;
-               }
-
-               memset(&spirange, 0, sizeof(spirange));
-               spirange.sadb_spirange_len = PFKEY_UNIT64(sizeof(spirange));
-               spirange.sadb_spirange_exttype = SADB_EXT_SPIRANGE;
-               spirange.sadb_spirange_min = min;
-               spirange.sadb_spirange_max = max;
-
-               memcpy(p, &spirange, sizeof(spirange));
-
-               p += sizeof(spirange);
-       }
-       if (p != ep) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/*
- * sending SADB_UPDATE message to the kernel.
- * The length of key material is a_keylen + e_keylen.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_update(int so, u_int satype, u_int mode, struct sockaddr *src,
-    struct sockaddr *dst, u_int32_t spi, u_int32_t reqid, u_int wsize,
-    caddr_t keymat, u_int e_type, u_int e_keylen, u_int a_type, u_int a_keylen,
-    u_int flags,u_int32_t l_alloc, u_int64_t l_bytes, u_int64_t l_addtime,
-    u_int64_t l_usetime, u_int32_t seq)
-{
-       int len;
-       if ((len = pfkey_send_x1(so, SADB_UPDATE, satype, mode, src, dst, spi,
-                       reqid, wsize,
-                       keymat, e_type, e_keylen, a_type, a_keylen, flags,
-                       l_alloc, l_bytes, l_addtime, l_usetime, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_ADD message to the kernel.
- * The length of key material is a_keylen + e_keylen.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_add(int so, u_int satype, u_int mode, struct sockaddr *src,
-    struct sockaddr *dst, u_int32_t spi, u_int32_t reqid, u_int wsize,
-    caddr_t keymat, u_int e_type, u_int e_keylen, u_int a_type, u_int a_keylen,
-    u_int flags, u_int32_t l_alloc, u_int64_t l_bytes, u_int64_t l_addtime,
-    u_int64_t l_usetime, u_int32_t seq)
-{
-       int len;
-       if ((len = pfkey_send_x1(so, SADB_ADD, satype, mode, src, dst, spi,
-                       reqid, wsize,
-                       keymat, e_type, e_keylen, a_type, a_keylen, flags,
-                       l_alloc, l_bytes, l_addtime, l_usetime, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_DELETE message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_delete(int so, u_int satype, u_int mode, struct sockaddr *src,
-    struct sockaddr *dst, u_int32_t spi)
-{
-       int len;
-       if ((len = pfkey_send_x2(so, SADB_DELETE, satype, mode, src, dst, spi)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_DELETE without spi to the kernel.  This is
- * the "delete all" request (an extension also present in
- * Solaris).
- *
- * OUT:
- *     positive: success and return length sent
- *     -1      : error occured, and set errno
- */
-int
-pfkey_send_delete_all(int so, u_int satype, u_int mode, struct sockaddr *src,
-    struct sockaddr *dst)
-{
-       struct sadb_msg *newmsg;
-       int len;
-       caddr_t p;
-       int plen;
-       caddr_t ep;
-
-       /* validity check */
-       if (src == NULL || dst == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-       if (src->sa_family != dst->sa_family) {
-               __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-               return -1;
-       }
-       switch (src->sa_family) {
-       case AF_INET:
-               plen = sizeof(struct in_addr) << 3;
-               break;
-       case AF_INET6:
-               plen = sizeof(struct in6_addr) << 3;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_FAMILY;
-               return -1;
-       }
-
-       /* create new sadb_msg to reply. */
-       len = sizeof(struct sadb_msg)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(src->sa_len)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(dst->sa_len);
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, SADB_DELETE, len, satype, 0,
-           getpid());
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_SRC, src, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_DST, dst, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p || p != ep) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/*
- * sending SADB_GET message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_get(int so, u_int satype, u_int mode, struct sockaddr *src,
-    struct sockaddr *dst, u_int32_t spi)
-{
-       int len;
-       if ((len = pfkey_send_x2(so, SADB_GET, satype, mode, src, dst, spi)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_REGISTER message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_register(int so, u_int satype)
-{
-       int len, algno;
-
-       if (satype == PF_UNSPEC) {
-               for (algno = 0; algno < NELEM(supported_map); algno++) {
-                       if (ipsec_supported[algno]) {
-                               free(ipsec_supported[algno]);
-                               ipsec_supported[algno] = NULL;
-                       }
-               }
-       } else {
-               algno = findsupportedmap(satype);
-               if (algno == -1) {
-                       __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-                       return -1;
-               }
-
-               if (ipsec_supported[algno]) {
-                       free(ipsec_supported[algno]);
-                       ipsec_supported[algno] = NULL;
-               }
-       }
-
-       if ((len = pfkey_send_x3(so, SADB_REGISTER, satype)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * receiving SADB_REGISTER message from the kernel, and copy buffer for
- * sadb_supported returned into ipsec_supported.
- * OUT:
- *      0: success and return length sent.
- *     -1: error occured, and set errno.
- */
-int
-pfkey_recv_register(int so)
-{
-       pid_t pid = getpid();
-       struct sadb_msg *newmsg;
-       int error = -1;
-
-       /* receive message */
-       do {
-               if ((newmsg = pfkey_recv(so)) == NULL)
-                       return -1;
-       } while (newmsg->sadb_msg_type != SADB_REGISTER
-           || newmsg->sadb_msg_pid != pid);
-
-       /* check and fix */
-       newmsg->sadb_msg_len = PFKEY_UNUNIT64(newmsg->sadb_msg_len);
-
-       error = pfkey_set_supported(newmsg, newmsg->sadb_msg_len);
-       free(newmsg);
-
-       if (error == 0)
-               __ipsec_errcode = EIPSEC_NO_ERROR;
-
-       return error;
-}
-
-/*
- * receiving SADB_REGISTER message from the kernel, and copy buffer for
- * sadb_supported returned into ipsec_supported.
- * NOTE: sadb_msg_len must be host order.
- * IN:
- *     tlen: msg length, it's to makeing sure.
- * OUT:
- *      0: success and return length sent.
- *     -1: error occured, and set errno.
- */
-int
-pfkey_set_supported(struct sadb_msg *msg, int tlen)
-{
-       struct sadb_supported *sup;
-       caddr_t p;
-       caddr_t ep;
-
-       /* validity */
-       if (msg->sadb_msg_len != tlen) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       p = (caddr_t)msg;
-       ep = p + tlen;
-
-       p += sizeof(struct sadb_msg);
-
-       while (p < ep) {
-               sup = (struct sadb_supported *)p;
-               if (ep < p + sizeof(*sup) ||
-                   PFKEY_EXTLEN(sup) < sizeof(*sup) ||
-                   ep < p + sup->sadb_supported_len) {
-                       /* invalid format */
-                       break;
-               }
-
-               switch (sup->sadb_supported_exttype) {
-               case SADB_EXT_SUPPORTED_AUTH:
-               case SADB_EXT_SUPPORTED_ENCRYPT:
-                       break;
-               default:
-                       __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-                       return -1;
-               }
-
-               /* fixed length */
-               sup->sadb_supported_len = PFKEY_EXTLEN(sup);
-
-               /* set supported map */
-               if (setsupportedmap(sup) != 0)
-                       return -1;
-
-               p += sup->sadb_supported_len;
-       }
-
-       if (p != ep) {
-               __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-               return -1;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-
-       return 0;
-}
-
-/*
- * sending SADB_FLUSH message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_flush(int so, u_int satype)
-{
-       int len;
-
-       if ((len = pfkey_send_x3(so, SADB_FLUSH, satype)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_DUMP message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_dump(int so, u_int satype)
-{
-       int len;
-
-       if ((len = pfkey_send_x3(so, SADB_DUMP, satype)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_PROMISC message to the kernel.
- * NOTE that this function handles promisc mode toggle only.
- * IN:
- *     flag:   set promisc off if zero, set promisc on if non-zero.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- *     0     : error occured, and set errno.
- *     others: a pointer to new allocated buffer in which supported
- *             algorithms is.
- */
-int
-pfkey_send_promisc_toggle(int so, int flag)
-{
-       int len;
-
-       if ((len = pfkey_send_x3(so, SADB_X_PROMISC, (flag ? 1 : 0))) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDADD message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdadd(int so, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, caddr_t policy,
-    int policylen, u_int32_t seq)
-{
-       int len;
-
-       if ((len = pfkey_send_x4(so, SADB_X_SPDADD,
-                               src, prefs, dst, prefd, proto,
-                               0, 0,
-                               policy, policylen, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDADD message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdadd2(int so, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, u_int64_t ltime,
-    u_int64_t vtime, caddr_t policy, int policylen, u_int32_t seq)
-{
-       int len;
-
-       if ((len = pfkey_send_x4(so, SADB_X_SPDADD,
-                               src, prefs, dst, prefd, proto,
-                               ltime, vtime,
-                               policy, policylen, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDUPDATE message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdupdate(int so, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, caddr_t policy,
-    int policylen, u_int32_t seq)
-{
-       int len;
-
-       if ((len = pfkey_send_x4(so, SADB_X_SPDUPDATE,
-                               src, prefs, dst, prefd, proto,
-                               0, 0,
-                               policy, policylen, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDUPDATE message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdupdate2(int so, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, u_int64_t ltime,
-    u_int64_t vtime, caddr_t policy, int policylen, u_int32_t seq)
-{
-       int len;
-
-       if ((len = pfkey_send_x4(so, SADB_X_SPDUPDATE,
-                               src, prefs, dst, prefd, proto,
-                               ltime, vtime,
-                               policy, policylen, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDDELETE message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spddelete(int so, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, caddr_t policy,
-    int policylen, u_int32_t seq)
-{
-       int len;
-
-       if (policylen != sizeof(struct sadb_x_policy)) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       if ((len = pfkey_send_x4(so, SADB_X_SPDDELETE,
-                               src, prefs, dst, prefd, proto,
-                               0, 0,
-                               policy, policylen, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDDELETE message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spddelete2(int so, u_int32_t spid)
-{
-       int len;
-
-       if ((len = pfkey_send_x5(so, SADB_X_SPDDELETE2, spid)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDGET message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdget(int so, u_int32_t spid)
-{
-       int len;
-
-       if ((len = pfkey_send_x5(so, SADB_X_SPDGET, spid)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_X_SPDSETIDX message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdsetidx(int so, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, caddr_t policy,
-    int policylen, u_int32_t seq)
-{
-       int len;
-
-       if (policylen != sizeof(struct sadb_x_policy)) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       if ((len = pfkey_send_x4(so, SADB_X_SPDSETIDX,
-                               src, prefs, dst, prefd, proto,
-                               0, 0,
-                               policy, policylen, seq)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_SPDFLUSH message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spdflush(int so)
-{
-       int len;
-
-       if ((len = pfkey_send_x3(so, SADB_X_SPDFLUSH, SADB_SATYPE_UNSPEC)) < 0)
-               return -1;
-
-       return len;
-}
-
-/*
- * sending SADB_SPDDUMP message to the kernel.
- * OUT:
- *     positive: success and return length sent.
- *     -1      : error occured, and set errno.
- */
-int
-pfkey_send_spddump(int so)
-{
-       int len;
-
-       if ((len = pfkey_send_x3(so, SADB_X_SPDDUMP, SADB_SATYPE_UNSPEC)) < 0)
-               return -1;
-
-       return len;
-}
-
-/* sending SADB_ADD or SADB_UPDATE message to the kernel */
-static int
-pfkey_send_x1(int so, u_int type, u_int satype, u_int mode,
-    struct sockaddr *src, struct sockaddr *dst, u_int32_t spi, u_int32_t reqid,
-    u_int wsize, caddr_t keymat, u_int e_type, u_int e_keylen, u_int a_type,
-    u_int a_keylen, u_int flags,u_int32_t l_alloc, u_int32_t l_bytes,
-    u_int32_t l_addtime, u_int32_t l_usetime, u_int32_t seq)
-{
-       struct sadb_msg *newmsg;
-       int len;
-       caddr_t p;
-       int plen;
-       caddr_t ep;
-
-       /* validity check */
-       if (src == NULL || dst == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-       if (src->sa_family != dst->sa_family) {
-               __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-               return -1;
-       }
-       switch (src->sa_family) {
-       case AF_INET:
-               plen = sizeof(struct in_addr) << 3;
-               break;
-       case AF_INET6:
-               plen = sizeof(struct in6_addr) << 3;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_FAMILY;
-               return -1;
-       }
-
-       switch (satype) {
-       case SADB_SATYPE_ESP:
-               if (e_type == SADB_EALG_NONE) {
-                       __ipsec_errcode = EIPSEC_NO_ALGS;
-                       return -1;
-               }
-               break;
-       case SADB_SATYPE_AH:
-               if (e_type != SADB_EALG_NONE) {
-                       __ipsec_errcode = EIPSEC_INVAL_ALGS;
-                       return -1;
-               }
-               if (a_type == SADB_AALG_NONE) {
-                       __ipsec_errcode = EIPSEC_NO_ALGS;
-                       return -1;
-               }
-               break;
-       case SADB_X_SATYPE_IPCOMP:
-               if (e_type == SADB_X_CALG_NONE) {
-                       __ipsec_errcode = EIPSEC_INVAL_ALGS;
-                       return -1;
-               }
-               if (a_type != SADB_AALG_NONE) {
-                       __ipsec_errcode = EIPSEC_NO_ALGS;
-                       return -1;
-               }
-               break;
-       case SADB_X_SATYPE_TCPSIGNATURE:
-               if (e_type != SADB_EALG_NONE) {
-                       __ipsec_errcode = EIPSEC_INVAL_ALGS;
-                       return -1;
-               }
-               if (a_type != SADB_X_AALG_TCP_MD5) {
-                       __ipsec_errcode = EIPSEC_INVAL_ALGS;
-                       return -1;
-               }
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-               return -1;
-       }
-
-       /* create new sadb_msg to reply. */
-       len = sizeof(struct sadb_msg)
-               + sizeof(struct sadb_sa)
-               + sizeof(struct sadb_x_sa2)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(src->sa_len)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(dst->sa_len)
-               + sizeof(struct sadb_lifetime)
-               + sizeof(struct sadb_lifetime);
-
-       if (e_type != SADB_EALG_NONE)
-               len += (sizeof(struct sadb_key) + PFKEY_ALIGN8(e_keylen));
-       if (a_type != SADB_AALG_NONE)
-               len += (sizeof(struct sadb_key) + PFKEY_ALIGN8(a_keylen));
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, type, len,
-                            satype, seq, getpid());
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbsa(p, ep, spi, wsize, a_type, e_type, flags);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbxsa2(p, ep, mode, reqid);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_SRC, src, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_DST, dst, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-
-       if (e_type != SADB_EALG_NONE) {
-               p = pfkey_setsadbkey(p, ep, SADB_EXT_KEY_ENCRYPT,
-                                  keymat, e_keylen);
-               if (!p) {
-                       free(newmsg);
-                       return -1;
-               }
-       }
-       if (a_type != SADB_AALG_NONE) {
-               p = pfkey_setsadbkey(p, ep, SADB_EXT_KEY_AUTH,
-                                  keymat + e_keylen, a_keylen);
-               if (!p) {
-                       free(newmsg);
-                       return -1;
-               }
-       }
-
-       /* set sadb_lifetime for destination */
-       p = pfkey_setsadblifetime(p, ep, SADB_EXT_LIFETIME_HARD,
-                       l_alloc, l_bytes, l_addtime, l_usetime);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadblifetime(p, ep, SADB_EXT_LIFETIME_SOFT,
-                       l_alloc, l_bytes, l_addtime, l_usetime);
-       if (!p || p != ep) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/* sending SADB_DELETE or SADB_GET message to the kernel */
-static int
-pfkey_send_x2(int so, u_int type, u_int satype, u_int mode,
-    struct sockaddr *src, struct sockaddr *dst, u_int32_t spi)
-{
-       struct sadb_msg *newmsg;
-       int len;
-       caddr_t p;
-       int plen;
-       caddr_t ep;
-
-       /* validity check */
-       if (src == NULL || dst == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-       if (src->sa_family != dst->sa_family) {
-               __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-               return -1;
-       }
-       switch (src->sa_family) {
-       case AF_INET:
-               plen = sizeof(struct in_addr) << 3;
-               break;
-       case AF_INET6:
-               plen = sizeof(struct in6_addr) << 3;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_FAMILY;
-               return -1;
-       }
-
-       /* create new sadb_msg to reply. */
-       len = sizeof(struct sadb_msg)
-               + sizeof(struct sadb_sa)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(src->sa_len)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(dst->sa_len);
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, type, len, satype, 0,
-           getpid());
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbsa(p, ep, spi, 0, 0, 0, 0);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_SRC, src, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_DST, dst, plen,
-           IPSEC_ULPROTO_ANY);
-       if (!p || p != ep) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/*
- * sending SADB_REGISTER, SADB_FLUSH, SADB_DUMP or SADB_X_PROMISC message
- * to the kernel
- */
-static int
-pfkey_send_x3(int so, u_int type, u_int satype)
-{
-       struct sadb_msg *newmsg;
-       int len;
-       caddr_t p;
-       caddr_t ep;
-
-       /* validity check */
-       switch (type) {
-       case SADB_X_PROMISC:
-               if (satype != 0 && satype != 1) {
-                       __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-                       return -1;
-               }
-               break;
-       default:
-               switch (satype) {
-               case SADB_SATYPE_UNSPEC:
-               case SADB_SATYPE_AH:
-               case SADB_SATYPE_ESP:
-               case SADB_X_SATYPE_IPCOMP:
-               case SADB_X_SATYPE_TCPSIGNATURE:
-                       break;
-               default:
-                       __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-                       return -1;
-               }
-       }
-
-       /* create new sadb_msg to send. */
-       len = sizeof(struct sadb_msg);
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, type, len, satype, 0,
-           getpid());
-       if (!p || p != ep) {
-               free(newmsg);
-               return -1;
-       }
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/* sending SADB_X_SPDADD message to the kernel */
-static int
-pfkey_send_x4(int so, u_int type, struct sockaddr *src, u_int prefs,
-    struct sockaddr *dst, u_int prefd, u_int proto, u_int64_t ltime,
-    u_int64_t vtime, char *policy, int policylen, u_int32_t seq)
-{
-       struct sadb_msg *newmsg;
-       int len;
-       caddr_t p;
-       int plen;
-       caddr_t ep;
-
-       /* validity check */
-       if (src == NULL || dst == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-       if (src->sa_family != dst->sa_family) {
-               __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-               return -1;
-       }
-
-       switch (src->sa_family) {
-       case AF_INET:
-               plen = sizeof(struct in_addr) << 3;
-               break;
-       case AF_INET6:
-               plen = sizeof(struct in6_addr) << 3;
-               break;
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_FAMILY;
-               return -1;
-       }
-       if (prefs > plen || prefd > plen) {
-               __ipsec_errcode = EIPSEC_INVAL_PREFIXLEN;
-               return -1;
-       }
-
-       /* create new sadb_msg to reply. */
-       len = sizeof(struct sadb_msg)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(src->sa_len)
-               + sizeof(struct sadb_address)
-               + PFKEY_ALIGN8(src->sa_len)
-               + sizeof(struct sadb_lifetime)
-               + policylen;
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, type, len,
-           SADB_SATYPE_UNSPEC, seq, getpid());
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_SRC, src, prefs, proto);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadbaddr(p, ep, SADB_EXT_ADDRESS_DST, dst, prefd, proto);
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-       p = pfkey_setsadblifetime(p, ep, SADB_EXT_LIFETIME_HARD,
-                       0, 0, ltime, vtime);
-       if (!p || p + policylen != ep) {
-               free(newmsg);
-               return -1;
-       }
-       memcpy(p, policy, policylen);
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/* sending SADB_X_SPDGET or SADB_X_SPDDELETE message to the kernel */
-static int
-pfkey_send_x5(int so, u_int type, u_int32_t spid)
-{
-       struct sadb_msg *newmsg;
-       struct sadb_x_policy xpl;
-       int len;
-       caddr_t p;
-       caddr_t ep;
-
-       /* create new sadb_msg to reply. */
-       len = sizeof(struct sadb_msg)
-               + sizeof(xpl);
-
-       if ((newmsg = CALLOC(len, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-       ep = ((caddr_t)newmsg) + len;
-
-       p = pfkey_setsadbmsg((caddr_t)newmsg, ep, type, len,
-           SADB_SATYPE_UNSPEC, 0, getpid());
-       if (!p) {
-               free(newmsg);
-               return -1;
-       }
-
-       if (p + sizeof(xpl) != ep) {
-               free(newmsg);
-               return -1;
-       }
-       memset(&xpl, 0, sizeof(xpl));
-       xpl.sadb_x_policy_len = PFKEY_UNUNIT64(sizeof(xpl));
-       xpl.sadb_x_policy_exttype = SADB_X_EXT_POLICY;
-       xpl.sadb_x_policy_id = spid;
-       memcpy(p, &xpl, sizeof(xpl));
-
-       /* send message */
-       len = pfkey_send(so, newmsg, len);
-       free(newmsg);
-
-       if (len < 0)
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/*
- * open a socket.
- * OUT:
- *     -1: fail.
- *     others : success and return value of socket.
- */
-int
-pfkey_open(void)
-{
-       int so;
-       const int bufsiz = 128 * 1024;  /*is 128K enough?*/
-
-       if ((so = socket(PF_KEY, SOCK_RAW, PF_KEY_V2)) < 0) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-
-       /*
-        * This is a temporary workaround for KAME PR 154.
-        * Don't really care even if it fails.
-        */
-       (void)setsockopt(so, SOL_SOCKET, SO_SNDBUF, &bufsiz, sizeof(bufsiz));
-       (void)setsockopt(so, SOL_SOCKET, SO_RCVBUF, &bufsiz, sizeof(bufsiz));
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return so;
-}
-
-/*
- * close a socket.
- * OUT:
- *      0: success.
- *     -1: fail.
- */
-void
-pfkey_close(int so)
-{
-       (void)close(so);
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return;
-}
-
-/*
- * receive sadb_msg data, and return pointer to new buffer allocated.
- * Must free this buffer later.
- * OUT:
- *     NULL    : error occured.
- *     others  : a pointer to sadb_msg structure.
- *
- * XXX should be rewritten to pass length explicitly
- */
-struct sadb_msg *
-pfkey_recv(int so)
-{
-       struct sadb_msg buf, *newmsg;
-       int len, reallen;
-
-       while ((len = recv(so, (caddr_t)&buf, sizeof(buf), MSG_PEEK)) < 0) {
-               if (errno == EINTR)
-                       continue;
-               __ipsec_set_strerror(strerror(errno));
-               return NULL;
-       }
-
-       if (len < sizeof(buf)) {
-               recv(so, (caddr_t)&buf, sizeof(buf), 0);
-               __ipsec_errcode = EIPSEC_MAX;
-               return NULL;
-       }
-
-       /* read real message */
-       reallen = PFKEY_UNUNIT64(buf.sadb_msg_len);
-       if ((newmsg = CALLOC(reallen, struct sadb_msg *)) == NULL) {
-               __ipsec_set_strerror(strerror(errno));
-               return NULL;
-       }
-
-       while ((len = recv(so, (caddr_t)newmsg, reallen, 0)) < 0) {
-               if (errno == EINTR)
-                       continue;
-               __ipsec_set_strerror(strerror(errno));
-               free(newmsg);
-               return NULL;
-       }
-
-       if (len != reallen) {
-               __ipsec_errcode = EIPSEC_SYSTEM_ERROR;
-               free(newmsg);
-               return NULL;
-       }
-
-       /* don't trust what the kernel says, validate! */
-       if (PFKEY_UNUNIT64(newmsg->sadb_msg_len) != len) {
-               __ipsec_errcode = EIPSEC_SYSTEM_ERROR;
-               free(newmsg);
-               return NULL;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return newmsg;
-}
-
-/*
- * send message to a socket.
- * OUT:
- *      others: success and return length sent.
- *     -1     : fail.
- */
-int
-pfkey_send(int so, struct sadb_msg *msg, int len)
-{
-       if ((len = send(so, (caddr_t)msg, len, 0)) < 0) {
-               __ipsec_set_strerror(strerror(errno));
-               return -1;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return len;
-}
-
-/*
- * %%% Utilities
- * NOTE: These functions are derived from netkey/key.c in KAME.
- */
-/*
- * set the pointer to each header in this message buffer.
- * IN: msg: pointer to message buffer.
- *     mhp: pointer to the buffer initialized like below:
- *             caddr_t mhp[SADB_EXT_MAX + 1];
- * OUT:        -1: invalid.
- *      0: valid.
- *
- * XXX should be rewritten to obtain length explicitly
- */
-int
-pfkey_align(struct sadb_msg *msg, caddr_t *mhp)
-{
-       struct sadb_ext *ext;
-       int i;
-       caddr_t p;
-       caddr_t ep;     /* XXX should be passed from upper layer */
-
-       /* validity check */
-       if (msg == NULL || mhp == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       /* initialize */
-       for (i = 0; i < SADB_EXT_MAX + 1; i++)
-               mhp[i] = NULL;
-
-       mhp[0] = (caddr_t)msg;
-
-       /* initialize */
-       p = (caddr_t) msg;
-       ep = p + PFKEY_UNUNIT64(msg->sadb_msg_len);
-
-       /* skip base header */
-       p += sizeof(struct sadb_msg);
-
-       while (p < ep) {
-               ext = (struct sadb_ext *)p;
-               if (ep < p + sizeof(*ext) || PFKEY_EXTLEN(ext) < sizeof(*ext) ||
-                   ep < p + PFKEY_EXTLEN(ext)) {
-                       /* invalid format */
-                       break;
-               }
-
-               /* duplicate check */
-               /* XXX Are there duplication either KEY_AUTH or KEY_ENCRYPT ?*/
-               if (mhp[ext->sadb_ext_type] != NULL) {
-                       __ipsec_errcode = EIPSEC_INVAL_EXTTYPE;
-                       return -1;
-               }
-
-               /* set pointer */
-               switch (ext->sadb_ext_type) {
-               case SADB_EXT_SA:
-               case SADB_EXT_LIFETIME_CURRENT:
-               case SADB_EXT_LIFETIME_HARD:
-               case SADB_EXT_LIFETIME_SOFT:
-               case SADB_EXT_ADDRESS_SRC:
-               case SADB_EXT_ADDRESS_DST:
-               case SADB_EXT_ADDRESS_PROXY:
-               case SADB_EXT_KEY_AUTH:
-                       /* XXX should to be check weak keys. */
-               case SADB_EXT_KEY_ENCRYPT:
-                       /* XXX should to be check weak keys. */
-               case SADB_EXT_IDENTITY_SRC:
-               case SADB_EXT_IDENTITY_DST:
-               case SADB_EXT_SENSITIVITY:
-               case SADB_EXT_PROPOSAL:
-               case SADB_EXT_SUPPORTED_AUTH:
-               case SADB_EXT_SUPPORTED_ENCRYPT:
-               case SADB_EXT_SPIRANGE:
-               case SADB_X_EXT_POLICY:
-               case SADB_X_EXT_SA2:
-                       mhp[ext->sadb_ext_type] = (caddr_t)ext;
-                       break;
-               default:
-                       __ipsec_errcode = EIPSEC_INVAL_EXTTYPE;
-                       return -1;
-               }
-
-               p += PFKEY_EXTLEN(ext);
-       }
-
-       if (p != ep) {
-               __ipsec_errcode = EIPSEC_INVAL_SADBMSG;
-               return -1;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-/*
- * check basic usage for sadb_msg,
- * NOTE: This routine is derived from netkey/key.c in KAME.
- * IN: msg: pointer to message buffer.
- *     mhp: pointer to the buffer initialized like below:
- *
- *             caddr_t mhp[SADB_EXT_MAX + 1];
- *
- * OUT:        -1: invalid.
- *      0: valid.
- */
-int
-pfkey_check(caddr_t *mhp)
-{
-       struct sadb_msg *msg;
-
-       /* validity check */
-       if (mhp == NULL || mhp[0] == NULL) {
-               __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return -1;
-       }
-
-       msg = (struct sadb_msg *)mhp[0];
-
-       /* check version */
-       if (msg->sadb_msg_version != PF_KEY_V2) {
-               __ipsec_errcode = EIPSEC_INVAL_VERSION;
-               return -1;
-       }
-
-       /* check type */
-       if (msg->sadb_msg_type > SADB_MAX) {
-               __ipsec_errcode = EIPSEC_INVAL_MSGTYPE;
-               return -1;
-       }
-
-       /* check SA type */
-       switch (msg->sadb_msg_satype) {
-       case SADB_SATYPE_UNSPEC:
-               switch (msg->sadb_msg_type) {
-               case SADB_GETSPI:
-               case SADB_UPDATE:
-               case SADB_ADD:
-               case SADB_DELETE:
-               case SADB_GET:
-               case SADB_ACQUIRE:
-               case SADB_EXPIRE:
-                       __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-                       return -1;
-               }
-               break;
-       case SADB_SATYPE_ESP:
-       case SADB_SATYPE_AH:
-       case SADB_X_SATYPE_IPCOMP:
-       case SADB_X_SATYPE_TCPSIGNATURE:
-               switch (msg->sadb_msg_type) {
-               case SADB_X_SPDADD:
-               case SADB_X_SPDDELETE:
-               case SADB_X_SPDGET:
-               case SADB_X_SPDDUMP:
-               case SADB_X_SPDFLUSH:
-                       __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-                       return -1;
-               }
-               break;
-       case SADB_SATYPE_RSVP:
-       case SADB_SATYPE_OSPFV2:
-       case SADB_SATYPE_RIPV2:
-       case SADB_SATYPE_MIP:
-               __ipsec_errcode = EIPSEC_NOT_SUPPORTED;
-               return -1;
-       case 1: /* XXX: What does it do ? */
-               if (msg->sadb_msg_type == SADB_X_PROMISC)
-                       break;
-               /*FALLTHROUGH*/
-       default:
-               __ipsec_errcode = EIPSEC_INVAL_SATYPE;
-               return -1;
-       }
-
-       /* check field of upper layer protocol and address family */
-       if (mhp[SADB_EXT_ADDRESS_SRC] != NULL
-        && mhp[SADB_EXT_ADDRESS_DST] != NULL) {
-               struct sadb_address *src0, *dst0;
-
-               src0 = (struct sadb_address *)(mhp[SADB_EXT_ADDRESS_SRC]);
-               dst0 = (struct sadb_address *)(mhp[SADB_EXT_ADDRESS_DST]);
-
-               if (src0->sadb_address_proto != dst0->sadb_address_proto) {
-                       __ipsec_errcode = EIPSEC_PROTO_MISMATCH;
-                       return -1;
-               }
-
-               if (PFKEY_ADDR_SADDR(src0)->sa_family
-                != PFKEY_ADDR_SADDR(dst0)->sa_family) {
-                       __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-                       return -1;
-               }
-
-               switch (PFKEY_ADDR_SADDR(src0)->sa_family) {
-               case AF_INET:
-               case AF_INET6:
-                       break;
-               default:
-                       __ipsec_errcode = EIPSEC_INVAL_FAMILY;
-                       return -1;
-               }
-
-               /*
-                * prefixlen == 0 is valid because there must be the case
-                * all addresses are matched.
-                */
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-/*
- * set data into sadb_msg.
- * `buf' must has been allocated sufficiently.
- */
-static caddr_t
-pfkey_setsadbmsg(caddr_t buf, caddr_t lim, u_int type, u_int tlen,
-    u_int satype, u_int32_t seq, pid_t pid)
-{
-       struct sadb_msg *p;
-       u_int len;
-
-       p = (struct sadb_msg *)buf;
-       len = sizeof(struct sadb_msg);
-
-       if (buf + len > lim)
-               return NULL;
-
-       memset(p, 0, len);
-       p->sadb_msg_version = PF_KEY_V2;
-       p->sadb_msg_type = type;
-       p->sadb_msg_errno = 0;
-       p->sadb_msg_satype = satype;
-       p->sadb_msg_len = PFKEY_UNIT64(tlen);
-       p->sadb_msg_reserved = 0;
-       p->sadb_msg_seq = seq;
-       p->sadb_msg_pid = (u_int32_t)pid;
-
-       return(buf + len);
-}
-
-/*
- * copy secasvar data into sadb_address.
- * `buf' must has been allocated sufficiently.
- */
-static caddr_t
-pfkey_setsadbsa(caddr_t buf, caddr_t lim, u_int32_t spi, u_int wsize,
-    u_int auth, u_int enc, u_int32_t flags)
-{
-       struct sadb_sa *p;
-       u_int len;
-
-       p = (struct sadb_sa *)buf;
-       len = sizeof(struct sadb_sa);
-
-       if (buf + len > lim)
-               return NULL;
-
-       memset(p, 0, len);
-       p->sadb_sa_len = PFKEY_UNIT64(len);
-       p->sadb_sa_exttype = SADB_EXT_SA;
-       p->sadb_sa_spi = spi;
-       p->sadb_sa_replay = wsize;
-       p->sadb_sa_state = SADB_SASTATE_LARVAL;
-       p->sadb_sa_auth = auth;
-       p->sadb_sa_encrypt = enc;
-       p->sadb_sa_flags = flags;
-
-       return(buf + len);
-}
-
-/*
- * set data into sadb_address.
- * `buf' must has been allocated sufficiently.
- * prefixlen is in bits.
- */
-static caddr_t
-pfkey_setsadbaddr(caddr_t buf, caddr_t lim, u_int exttype,
-    struct sockaddr *saddr, u_int prefixlen, u_int ul_proto)
-{
-       struct sadb_address *p;
-       u_int len;
-
-       p = (struct sadb_address *)buf;
-       len = sizeof(struct sadb_address) + PFKEY_ALIGN8(saddr->sa_len);
-
-       if (buf + len > lim)
-               return NULL;
-
-       memset(p, 0, len);
-       p->sadb_address_len = PFKEY_UNIT64(len);
-       p->sadb_address_exttype = exttype & 0xffff;
-       p->sadb_address_proto = ul_proto & 0xff;
-       p->sadb_address_prefixlen = prefixlen;
-       p->sadb_address_reserved = 0;
-
-       memcpy(p + 1, saddr, saddr->sa_len);
-
-       return(buf + len);
-}
-
-/*
- * set sadb_key structure after clearing buffer with zero.
- * OUT: the pointer of buf + len.
- */
-static caddr_t
-pfkey_setsadbkey(caddr_t buf, caddr_t lim, u_int type, caddr_t key,
-    u_int keylen)
-{
-       struct sadb_key *p;
-       u_int len;
-
-       p = (struct sadb_key *)buf;
-       len = sizeof(struct sadb_key) + PFKEY_ALIGN8(keylen);
-
-       if (buf + len > lim)
-               return NULL;
-
-       memset(p, 0, len);
-       p->sadb_key_len = PFKEY_UNIT64(len);
-       p->sadb_key_exttype = type;
-       p->sadb_key_bits = keylen << 3;
-       p->sadb_key_reserved = 0;
-
-       memcpy(p + 1, key, keylen);
-
-       return buf + len;
-}
-
-/*
- * set sadb_lifetime structure after clearing buffer with zero.
- * OUT: the pointer of buf + len.
- */
-static caddr_t
-pfkey_setsadblifetime(caddr_t buf, caddr_t lim, u_int type, u_int32_t l_alloc,
-    u_int32_t l_bytes, u_int32_t l_addtime, u_int32_t l_usetime)
-{
-       struct sadb_lifetime *p;
-       u_int len;
-
-       p = (struct sadb_lifetime *)buf;
-       len = sizeof(struct sadb_lifetime);
-
-       if (buf + len > lim)
-               return NULL;
-
-       memset(p, 0, len);
-       p->sadb_lifetime_len = PFKEY_UNIT64(len);
-       p->sadb_lifetime_exttype = type;
-
-       switch (type) {
-       case SADB_EXT_LIFETIME_SOFT:
-               p->sadb_lifetime_allocations
-                       = (l_alloc * soft_lifetime_allocations_rate) /100;
-               p->sadb_lifetime_bytes
-                       = (l_bytes * soft_lifetime_bytes_rate) /100;
-               p->sadb_lifetime_addtime
-                       = (l_addtime * soft_lifetime_addtime_rate) /100;
-               p->sadb_lifetime_usetime
-                       = (l_usetime * soft_lifetime_usetime_rate) /100;
-               break;
-       case SADB_EXT_LIFETIME_HARD:
-               p->sadb_lifetime_allocations = l_alloc;
-               p->sadb_lifetime_bytes = l_bytes;
-               p->sadb_lifetime_addtime = l_addtime;
-               p->sadb_lifetime_usetime = l_usetime;
-               break;
-       }
-
-       return buf + len;
-}
-
-/*
- * copy secasvar data into sadb_address.
- * `buf' must has been allocated sufficiently.
- */
-static caddr_t
-pfkey_setsadbxsa2(caddr_t buf, caddr_t lim, u_int32_t mode0, u_int32_t reqid)
-{
-       struct sadb_x_sa2 *p;
-       u_int8_t mode = mode0 & 0xff;
-       u_int len;
-
-       p = (struct sadb_x_sa2 *)buf;
-       len = sizeof(struct sadb_x_sa2);
-
-       if (buf + len > lim)
-               return NULL;
-
-       memset(p, 0, len);
-       p->sadb_x_sa2_len = PFKEY_UNIT64(len);
-       p->sadb_x_sa2_exttype = SADB_X_EXT_SA2;
-       p->sadb_x_sa2_mode = mode;
-       p->sadb_x_sa2_reqid = reqid;
-
-       return(buf + len);
-}
diff --git a/lib/libipsec/pfkey_dump.c b/lib/libipsec/pfkey_dump.c
deleted file mode 100644 (file)
index 326617d..0000000
+++ /dev/null
@@ -1,587 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/pfkey_dump.c,v 1.1.2.4 2003/04/27 00:03:36 sumikawa Exp $    */
-/*     $KAME: pfkey_dump.c,v 1.28 2001/06/27 10:46:51 sakane Exp $     */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <netinet6/ipsec.h>
-#include <net/pfkeyv2.h>
-#include <netkey/key_var.h>
-#include <netkey/key_debug.h>
-
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <netdb.h>
-
-#include "ipsec_strerror.h"
-#include "libpfkey.h"
-
-/* cope with old kame headers - ugly */
-#ifndef SADB_X_AALG_MD5
-#define SADB_X_AALG_MD5                SADB_AALG_MD5   
-#endif
-#ifndef SADB_X_AALG_SHA
-#define SADB_X_AALG_SHA                SADB_AALG_SHA
-#endif
-#ifndef SADB_X_AALG_NULL
-#define SADB_X_AALG_NULL       SADB_AALG_NULL
-#endif
-
-#ifndef SADB_X_EALG_BLOWFISHCBC
-#define SADB_X_EALG_BLOWFISHCBC        SADB_EALG_BLOWFISHCBC
-#endif
-#ifndef SADB_X_EALG_CAST128CBC
-#define SADB_X_EALG_CAST128CBC SADB_EALG_CAST128CBC
-#endif
-#ifndef SADB_X_EALG_RC5CBC
-#ifdef SADB_EALG_RC5CBC
-#define SADB_X_EALG_RC5CBC     SADB_EALG_RC5CBC
-#endif
-#endif
-
-#define GETMSGSTR(str, num) \
-do { \
-       if (sizeof((str)[0]) == 0 \
-        || num >= sizeof(str)/sizeof((str)[0])) \
-               printf("%d ", (num)); \
-       else if (strlen((str)[(num)]) == 0) \
-               printf("%d ", (num)); \
-       else \
-               printf("%s ", (str)[(num)]); \
-} while (0)
-
-#define GETMSGV2S(v2s, num) \
-do { \
-       struct val2str *p;  \
-       for (p = (v2s); p && p->str; p++) { \
-               if (p->val == (num)) \
-                       break; \
-       } \
-       if (p && p->str) \
-               printf("%s ", p->str); \
-       else \
-               printf("%d ", (num)); \
-} while (0)
-
-static char *str_ipaddr (struct sockaddr *);
-static char *str_prefport (u_int, u_int, u_int);
-static char *str_time (time_t);
-static void str_lifetime_byte (struct sadb_lifetime *, char *);
-
-struct val2str {
-       int val;
-       const char *str;
-};
-
-/*
- * Must to be re-written about following strings.
- */
-static char *str_satype[] = {
-       "unspec",
-       "unknown",
-       "ah",
-       "esp",
-       "unknown",
-       "rsvp",
-       "ospfv2",
-       "ripv2",
-       "mip",
-       "ipcomp",
-       "policy",
-       "tcp",
-};
-
-static char *str_mode[] = {
-       "any",
-       "transport",
-       "tunnel",
-};
-
-static char *str_upper[] = {
-/*0*/  "ip", "icmp", "igmp", "ggp", "ip4",
-       "", "tcp", "", "egp", "",
-/*10*/ "", "", "", "", "",
-       "", "", "udp", "", "",
-/*20*/ "", "", "idp", "", "",
-       "", "", "", "", "tp",
-/*30*/ "", "", "", "", "",
-       "", "", "", "", "",
-/*40*/ "", "ip6", "", "rt6", "frag6",
-       "", "rsvp", "gre", "", "",
-/*50*/ "esp", "ah", "", "", "",
-       "", "", "", "icmp6", "none",
-/*60*/ "dst6",
-};
-
-static char *str_state[] = {
-       "larval",
-       "mature",
-       "dying",
-       "dead",
-};
-
-static struct val2str str_alg_auth[] = {
-       { SADB_AALG_NONE, "none", },
-       { SADB_AALG_MD5HMAC, "hmac-md5", },
-       { SADB_AALG_SHA1HMAC, "hmac-sha1", },
-       { SADB_X_AALG_MD5, "md5", },
-       { SADB_X_AALG_SHA, "sha", },
-       { SADB_X_AALG_NULL, "null", },
-       { SADB_X_AALG_TCP_MD5, "tcp-md5", },
-#ifdef SADB_X_AALG_SHA2_256
-       { SADB_X_AALG_SHA2_256, "hmac-sha2-256", },
-#endif
-#ifdef SADB_X_AALG_SHA2_384
-       { SADB_X_AALG_SHA2_384, "hmac-sha2-384", },
-#endif
-#ifdef SADB_X_AALG_SHA2_512
-       { SADB_X_AALG_SHA2_512, "hmac-sha2-512", },
-#endif
-       { -1, NULL, },
-};
-
-static struct val2str str_alg_enc[] = {
-       { SADB_EALG_NONE, "none", },
-       { SADB_EALG_DESCBC, "des-cbc", },
-       { SADB_EALG_3DESCBC, "3des-cbc", },
-       { SADB_EALG_NULL, "null", },
-#ifdef SADB_X_EALG_RC5CBC
-       { SADB_X_EALG_RC5CBC, "rc5-cbc", },
-#endif
-       { SADB_X_EALG_CAST128CBC, "cast128-cbc", },
-       { SADB_X_EALG_BLOWFISHCBC, "blowfish-cbc", },
-#ifdef SADB_X_EALG_RIJNDAELCBC
-       { SADB_X_EALG_RIJNDAELCBC, "rijndael-cbc", },
-#endif
-#ifdef SADB_X_EALG_TWOFISHCBC
-       { SADB_X_EALG_TWOFISHCBC, "twofish-cbc", },
-#endif
-       { -1, NULL, },
-};
-
-static struct val2str str_alg_comp[] = {
-       { SADB_X_CALG_NONE, "none", },
-       { SADB_X_CALG_OUI, "oui", },
-       { SADB_X_CALG_DEFLATE, "deflate", },
-       { SADB_X_CALG_LZS, "lzs", },
-       { -1, NULL, },
-};
-
-/*
- * dump SADB_MSG formated.  For debugging, you should use kdebug_sadb().
- */
-void
-pfkey_sadump(struct sadb_msg *m)
-{
-       caddr_t mhp[SADB_EXT_MAX + 1];
-       struct sadb_sa *m_sa;
-       struct sadb_x_sa2 *m_sa2;
-       struct sadb_lifetime *m_lftc, *m_lfth, *m_lfts;
-       struct sadb_address *m_saddr, *m_daddr;
-       struct sadb_key *m_auth, *m_enc;
-
-       /* check pfkey message. */
-       if (pfkey_align(m, mhp)) {
-               printf("%s\n", ipsec_strerror());
-               return;
-       }
-       if (pfkey_check(mhp)) {
-               printf("%s\n", ipsec_strerror());
-               return;
-       }
-
-       m_sa = (struct sadb_sa *)mhp[SADB_EXT_SA];
-       m_sa2 = (struct sadb_x_sa2 *)mhp[SADB_X_EXT_SA2];
-       m_lftc = (struct sadb_lifetime *)mhp[SADB_EXT_LIFETIME_CURRENT];
-       m_lfth = (struct sadb_lifetime *)mhp[SADB_EXT_LIFETIME_HARD];
-       m_lfts = (struct sadb_lifetime *)mhp[SADB_EXT_LIFETIME_SOFT];
-       m_saddr = (struct sadb_address *)mhp[SADB_EXT_ADDRESS_SRC];
-       m_daddr = (struct sadb_address *)mhp[SADB_EXT_ADDRESS_DST];
-       m_auth = (struct sadb_key *)mhp[SADB_EXT_KEY_AUTH];
-       m_enc = (struct sadb_key *)mhp[SADB_EXT_KEY_ENCRYPT];
-
-       /* source address */
-       if (m_saddr == NULL) {
-               printf("no ADDRESS_SRC extension.\n");
-               return;
-       }
-       printf("%s ", str_ipaddr((struct sockaddr *)(m_saddr + 1)));
-
-       /* destination address */
-       if (m_daddr == NULL) {
-               printf("no ADDRESS_DST extension.\n");
-               return;
-       }
-       printf("%s ", str_ipaddr((struct sockaddr *)(m_daddr + 1)));
-
-       /* SA type */
-       if (m_sa == NULL) {
-               printf("no SA extension.\n");
-               return;
-       }
-       if (m_sa2 == NULL) {
-               printf("no SA2 extension.\n");
-               return;
-       }
-       printf("\n\t");
-
-       GETMSGSTR(str_satype, m->sadb_msg_satype);
-
-       printf("mode=");
-       GETMSGSTR(str_mode, m_sa2->sadb_x_sa2_mode);
-
-       printf("spi=%u(0x%08x) reqid=%u(0x%08x)\n",
-               (u_int32_t)ntohl(m_sa->sadb_sa_spi),
-               (u_int32_t)ntohl(m_sa->sadb_sa_spi),
-               (u_int32_t)m_sa2->sadb_x_sa2_reqid,
-               (u_int32_t)m_sa2->sadb_x_sa2_reqid);
-
-       /* encryption key */
-       if (m->sadb_msg_satype == SADB_X_SATYPE_IPCOMP) {
-               printf("\tC: ");
-               GETMSGV2S(str_alg_comp, m_sa->sadb_sa_encrypt);
-       } else if (m->sadb_msg_satype == SADB_SATYPE_ESP) {
-               if (m_enc != NULL) {
-                       printf("\tE: ");
-                       GETMSGV2S(str_alg_enc, m_sa->sadb_sa_encrypt);
-                       ipsec_hexdump((caddr_t)m_enc + sizeof(*m_enc),
-                                     m_enc->sadb_key_bits / 8);
-                       printf("\n");
-               }
-       }
-
-       /* authentication key */
-       if (m_auth != NULL) {
-               printf("\tA: ");
-               GETMSGV2S(str_alg_auth, m_sa->sadb_sa_auth);
-               ipsec_hexdump((caddr_t)m_auth + sizeof(*m_auth),
-                             m_auth->sadb_key_bits / 8);
-               printf("\n");
-       }
-
-       /* replay windoe size & flags */
-       printf("\tseq=0x%08x replay=%u flags=0x%08x ",
-               m_sa2->sadb_x_sa2_sequence,
-               m_sa->sadb_sa_replay,
-               m_sa->sadb_sa_flags);
-
-       /* state */
-       printf("state=");
-       GETMSGSTR(str_state, m_sa->sadb_sa_state);
-       printf("\n");
-
-       /* lifetime */
-       if (m_lftc != NULL) {
-               time_t tmp_time = time(0);
-
-               printf("\tcreated: %s",
-                       str_time(m_lftc->sadb_lifetime_addtime));
-               printf("\tcurrent: %s\n", str_time(tmp_time));
-               printf("\tdiff: %lu(s)",
-                       (u_long)(m_lftc->sadb_lifetime_addtime == 0 ?
-                       0 : (tmp_time - m_lftc->sadb_lifetime_addtime)));
-
-               printf("\thard: %lu(s)",
-                       (u_long)(m_lfth == NULL ?
-                       0 : m_lfth->sadb_lifetime_addtime));
-               printf("\tsoft: %lu(s)\n",
-                       (u_long)(m_lfts == NULL ?
-                       0 : m_lfts->sadb_lifetime_addtime));
-
-               printf("\tlast: %s",
-                       str_time(m_lftc->sadb_lifetime_usetime));
-               printf("\thard: %lu(s)",
-                       (u_long)(m_lfth == NULL ?
-                       0 : m_lfth->sadb_lifetime_usetime));
-               printf("\tsoft: %lu(s)\n",
-                       (u_long)(m_lfts == NULL ?
-                       0 : m_lfts->sadb_lifetime_usetime));
-
-               str_lifetime_byte(m_lftc, "current");
-               str_lifetime_byte(m_lfth, "hard");
-               str_lifetime_byte(m_lfts, "soft");
-               printf("\n");
-
-               printf("\tallocated: %lu",
-                       (unsigned long)m_lftc->sadb_lifetime_allocations);
-               printf("\thard: %lu",
-                       (u_long)(m_lfth == NULL ?
-                       0 : m_lfth->sadb_lifetime_allocations));
-               printf("\tsoft: %lu\n",
-                       (u_long)(m_lfts == NULL ?
-                       0 : m_lfts->sadb_lifetime_allocations));
-       }
-
-       printf("\tsadb_seq=%lu pid=%lu ",
-               (u_long)m->sadb_msg_seq,
-               (u_long)m->sadb_msg_pid);
-
-       /* XXX DEBUG */
-       printf("refcnt=%u\n", m->sadb_msg_reserved);
-
-       return;
-}
-
-void
-pfkey_spdump(struct sadb_msg *m)
-{
-       char pbuf[NI_MAXSERV];
-       caddr_t mhp[SADB_EXT_MAX + 1];
-       struct sadb_address *m_saddr, *m_daddr;
-       struct sadb_x_policy *m_xpl;
-       struct sadb_lifetime *m_lft = NULL;
-       struct sockaddr *sa;
-       u_int16_t port;
-
-       /* check pfkey message. */
-       if (pfkey_align(m, mhp)) {
-               printf("%s\n", ipsec_strerror());
-               return;
-       }
-       if (pfkey_check(mhp)) {
-               printf("%s\n", ipsec_strerror());
-               return;
-       }
-
-       m_saddr = (struct sadb_address *)mhp[SADB_EXT_ADDRESS_SRC];
-       m_daddr = (struct sadb_address *)mhp[SADB_EXT_ADDRESS_DST];
-       m_xpl = (struct sadb_x_policy *)mhp[SADB_X_EXT_POLICY];
-       m_lft = (struct sadb_lifetime *)mhp[SADB_EXT_LIFETIME_HARD];
-
-       /* source address */
-       if (m_saddr == NULL) {
-               printf("no ADDRESS_SRC extension.\n");
-               return;
-       }
-       sa = (struct sockaddr *)(m_saddr + 1);
-       switch (sa->sa_family) {
-       case AF_INET:
-       case AF_INET6:
-               if (getnameinfo(sa, sa->sa_len, NULL, 0, pbuf, sizeof(pbuf),
-                   NI_NUMERICSERV) != 0)
-                       port = 0;       /*XXX*/
-               else
-                       port = atoi(pbuf);
-               printf("%s%s ", str_ipaddr(sa),
-                       str_prefport(sa->sa_family,
-                           m_saddr->sadb_address_prefixlen, port));
-               break;
-       default:
-               printf("unknown-af ");
-               break;
-       }
-
-       /* destination address */
-       if (m_daddr == NULL) {
-               printf("no ADDRESS_DST extension.\n");
-               return;
-       }
-       sa = (struct sockaddr *)(m_daddr + 1);
-       switch (sa->sa_family) {
-       case AF_INET:
-       case AF_INET6:
-               if (getnameinfo(sa, sa->sa_len, NULL, 0, pbuf, sizeof(pbuf),
-                   NI_NUMERICSERV) != 0)
-                       port = 0;       /*XXX*/
-               else
-                       port = atoi(pbuf);
-               printf("%s%s ", str_ipaddr(sa),
-                       str_prefport(sa->sa_family,
-                           m_daddr->sadb_address_prefixlen, port));
-               break;
-       default:
-               printf("unknown-af ");
-               break;
-       }
-
-       /* upper layer protocol */
-       if (m_saddr->sadb_address_proto != m_daddr->sadb_address_proto) {
-               printf("upper layer protocol mismatched.\n");
-               return;
-       }
-       if (m_saddr->sadb_address_proto == IPSEC_ULPROTO_ANY)
-               printf("any");
-       else
-               GETMSGSTR(str_upper, m_saddr->sadb_address_proto);
-
-       /* policy */
-    {
-       char *d_xpl;
-
-       if (m_xpl == NULL) {
-               printf("no X_POLICY extension.\n");
-               return;
-       }
-       d_xpl = ipsec_dump_policy((char *)m_xpl, "\n\t");
-
-       /* dump SPD */
-       printf("\n\t%s\n", d_xpl);
-       free(d_xpl);
-    }
-
-       /* lifetime */
-       if (m_lft) {
-               printf("\tlifetime:%lu validtime:%lu\n",
-                       (u_long)m_lft->sadb_lifetime_addtime,
-                       (u_long)m_lft->sadb_lifetime_usetime);
-       }
-
-       printf("\tspid=%ld seq=%ld pid=%ld\n",
-               (u_long)m_xpl->sadb_x_policy_id,
-               (u_long)m->sadb_msg_seq,
-               (u_long)m->sadb_msg_pid);
-
-       /* XXX TEST */
-       printf("\trefcnt=%u\n", m->sadb_msg_reserved);
-
-       return;
-}
-
-/*
- * set "ipaddress" to buffer.
- */
-static char *
-str_ipaddr(struct sockaddr *sa)
-{
-       static char buf[NI_MAXHOST];
-#ifdef NI_WITHSCOPEID
-       const int niflag = NI_NUMERICHOST | NI_WITHSCOPEID;
-#else
-       const int niflag = NI_NUMERICHOST;
-#endif
-
-       if (sa == NULL)
-               return "";
-
-       if (getnameinfo(sa, sa->sa_len, buf, sizeof(buf), NULL, 0, niflag) == 0)
-               return buf;
-       return NULL;
-}
-
-/*
- * set "/prefix[port number]" to buffer.
- */
-static char *
-str_prefport(u_int family, u_int pref, u_int port)
-{
-       static char buf[128];
-       char prefbuf[128];
-       char portbuf[128];
-       int plen;
-
-       switch (family) {
-       case AF_INET:
-               plen = sizeof(struct in_addr) << 3;
-               break;
-       case AF_INET6:
-               plen = sizeof(struct in6_addr) << 3;
-               break;
-       default:
-               return "?";
-       }
-
-       if (pref == plen)
-               prefbuf[0] = '\0';
-       else
-               snprintf(prefbuf, sizeof(prefbuf), "/%u", pref);
-
-       if (port == IPSEC_PORT_ANY)
-               snprintf(portbuf, sizeof(portbuf), "[%s]", "any");
-       else
-               snprintf(portbuf, sizeof(portbuf), "[%u]", port);
-
-       snprintf(buf, sizeof(buf), "%s%s", prefbuf, portbuf);
-
-       return buf;
-}
-
-/*
- * set "Mon Day Time Year" to buffer
- */
-static char *
-str_time(time_t t)
-{
-       static char buf[128];
-
-       if (t == 0) {
-               int i = 0;
-               for (;i < 20;) buf[i++] = ' ';
-       } else {
-               char *t0;
-               t0 = ctime(&t);
-               memcpy(buf, t0 + 4, 20);
-       }
-
-       buf[20] = '\0';
-
-       return(buf);
-}
-
-static void
-str_lifetime_byte(struct sadb_lifetime *x, char *str)
-{
-       double y;
-       char *unit;
-       int w;
-
-       if (x == NULL) {
-               printf("\t%s: 0(bytes)", str);
-               return;
-       }
-
-#if 0
-       if ((x->sadb_lifetime_bytes) / 1024 / 1024) {
-               y = (x->sadb_lifetime_bytes) * 1.0 / 1024 / 1024;
-               unit = "M";
-               w = 1;
-       } else if ((x->sadb_lifetime_bytes) / 1024) {
-               y = (x->sadb_lifetime_bytes) * 1.0 / 1024;
-               unit = "K";
-               w = 1;
-       } else {
-               y = (x->sadb_lifetime_bytes) * 1.0;
-               unit = "";
-               w = 0;
-       }
-#else
-       y = (x->sadb_lifetime_bytes) * 1.0;
-       unit = "";
-       w = 0;
-#endif
-       printf("\t%s: %.*f(%sbytes)", str, w, y, unit);
-}
diff --git a/lib/libipsec/policy_parse.y b/lib/libipsec/policy_parse.y
deleted file mode 100644 (file)
index 4954d82..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/policy_parse.y,v 1.1.2.1 2000/07/15 07:24:04 kris Exp $      */
-/*     $DragonFly: src/lib/libipsec/policy_parse.y,v 1.4 2008/09/30 16:57:05 swildner Exp $    */
-/*     $KAME: policy_parse.y,v 1.10 2000/05/07 05:25:03 itojun Exp $   */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * IN/OUT bound policy configuration take place such below:
- *     in <policy>
- *     out <policy>
- *
- * <policy> is one of following:
- *     "discard", "none", "ipsec <requests>", "entrust", "bypass",
- *
- * The following requests are accepted as <requests>:
- *
- *     protocol/mode/src-dst/level
- *     protocol/mode/src-dst           parsed as protocol/mode/src-dst/default
- *     protocol/mode/src-dst/          parsed as protocol/mode/src-dst/default
- *     protocol/transport              parsed as protocol/mode/any-any/default
- *     protocol/transport//level       parsed as protocol/mode/any-any/level
- *
- * You can concatenate these requests with either ' '(single space) or '\n'.
- */
-
-%{
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet6/ipsec.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <netdb.h>
-
-#include "ipsec_strerror.h"
-
-#define ATOX(c) \
-  (isdigit(c) ? (c - '0') : (isupper(c) ? (c - 'A' + 10) : (c - 'a' + 10) ))
-
-static caddr_t pbuf = NULL;            /* sadb_x_policy buffer */
-static int tlen = 0;                   /* total length of pbuf */
-static int offset = 0;                 /* offset of pbuf */
-static int p_dir, p_type, p_protocol, p_mode, p_level, p_reqid;
-static struct sockaddr *p_src = NULL;
-static struct sockaddr *p_dst = NULL;
-
-struct _val;
-extern void yyerror (char *msg);
-static struct sockaddr *parse_sockaddr (struct _val *buf);
-static int rule_check (void);
-static int init_x_policy (void);
-static int set_x_request (struct sockaddr *src, struct sockaddr *dst);
-static int set_sockaddr (struct sockaddr *addr);
-static void policy_parse_request_init (void);
-static caddr_t policy_parse (char *msg, int msglen);
-
-extern void __policy__strbuffer__init__ (char *msg);
-extern int yyparse (void);
-extern int yylex (void);
-
-%}
-
-%union {
-       u_int num;
-       struct _val {
-               int len;
-               char *buf;
-       } val;
-}
-
-%token DIR ACTION PROTOCOL MODE LEVEL LEVEL_SPECIFY
-%token IPADDRESS
-%token ME ANY
-%token SLASH HYPHEN
-%type <num> DIR ACTION PROTOCOL MODE LEVEL
-%type <val> IPADDRESS LEVEL_SPECIFY
-
-%%
-policy_spec
-       :       DIR ACTION
-               {
-                       p_dir = $1;
-                       p_type = $2;
-
-                       if (init_x_policy())
-                               return -1;
-               }
-               rules
-       |       DIR
-               {
-                       p_dir = $1;
-                       p_type = 0;     /* ignored it by kernel */
-
-                       if (init_x_policy())
-                               return -1;
-               }
-       ;
-
-rules
-       :       /*NOTHING*/
-       |       rules rule {
-                       if (rule_check() < 0)
-                               return -1;
-
-                       if (set_x_request(p_src, p_dst) < 0)
-                               return -1;
-
-                       policy_parse_request_init();
-               }
-       ;
-
-rule
-       :       protocol SLASH mode SLASH addresses SLASH level
-       |       protocol SLASH mode SLASH addresses SLASH
-       |       protocol SLASH mode SLASH addresses
-       |       protocol SLASH mode SLASH
-       |       protocol SLASH mode SLASH SLASH level
-       |       protocol SLASH mode
-       |       protocol SLASH {
-                       __ipsec_errcode = EIPSEC_FEW_ARGUMENTS;
-                       return -1;
-               }
-       |       protocol {
-                       __ipsec_errcode = EIPSEC_FEW_ARGUMENTS;
-                       return -1;
-               }
-       ;
-
-protocol
-       :       PROTOCOL { p_protocol = $1; }
-       ;
-
-mode
-       :       MODE { p_mode = $1; }
-       ;
-
-level
-       :       LEVEL {
-                       p_level = $1;
-                       p_reqid = 0;
-               }
-       |       LEVEL_SPECIFY {
-                       p_level = IPSEC_LEVEL_UNIQUE;
-                       p_reqid = atol($1.buf); /* atol() is good. */
-               }
-       ;
-
-addresses
-       :       IPADDRESS {
-                       p_src = parse_sockaddr(&$1);
-                       if (p_src == NULL)
-                               return -1;
-               }
-               HYPHEN
-               IPADDRESS {
-                       p_dst = parse_sockaddr(&$4);
-                       if (p_dst == NULL)
-                               return -1;
-               }
-       |       ME HYPHEN ANY {
-                       if (p_dir != IPSEC_DIR_OUTBOUND) {
-                               __ipsec_errcode = EIPSEC_INVAL_DIR;
-                               return -1;
-                       }
-               }
-       |       ANY HYPHEN ME {
-                       if (p_dir != IPSEC_DIR_INBOUND) {
-                               __ipsec_errcode = EIPSEC_INVAL_DIR;
-                               return -1;
-                       }
-               }
-               /*
-       |       ME HYPHEN ME
-               */
-       ;
-
-%%
-
-void
-yyerror(char *msg)
-{
-       extern char *__libipsecyytext;  /*XXX*/
-
-       fprintf(stderr, "libipsec: %s while parsing \"%s\"\n",
-               msg, __libipsecyytext);
-
-       return;
-}
-
-static struct sockaddr *
-parse_sockaddr(struct _val *buf)
-{
-       struct addrinfo hints, *res;
-       char *serv = NULL;
-       int error;
-       struct sockaddr *newaddr = NULL;
-
-       memset(&hints, 0, sizeof(hints));
-       hints.ai_family = PF_UNSPEC;
-       hints.ai_flags = AI_NUMERICHOST;
-       error = getaddrinfo(buf->buf, serv, &hints, &res);
-       if (error != 0) {
-               yyerror("invalid IP address");
-               __ipsec_set_strerror(gai_strerror(error));
-               return NULL;
-       }
-
-       if (res->ai_addr == NULL) {
-               yyerror("invalid IP address");
-               __ipsec_set_strerror(gai_strerror(error));
-               return NULL;
-       }
-
-       newaddr = malloc(res->ai_addr->sa_len);
-       if (newaddr == NULL) {
-               __ipsec_errcode = EIPSEC_NO_BUFS;
-               freeaddrinfo(res);
-               return NULL;
-       }
-       memcpy(newaddr, res->ai_addr, res->ai_addr->sa_len);
-
-       freeaddrinfo(res);
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return newaddr;
-}
-
-static int
-rule_check(void)
-{
-       if (p_type == IPSEC_POLICY_IPSEC) {
-               if (p_protocol == IPPROTO_IP) {
-                       __ipsec_errcode = EIPSEC_NO_PROTO;
-                       return -1;
-               }
-
-               if (p_mode != IPSEC_MODE_TRANSPORT
-                && p_mode != IPSEC_MODE_TUNNEL) {
-                       __ipsec_errcode = EIPSEC_INVAL_MODE;
-                       return -1;
-               }
-
-               if (p_src == NULL && p_dst == NULL) {
-                        if (p_mode != IPSEC_MODE_TRANSPORT) {
-                               __ipsec_errcode = EIPSEC_INVAL_ADDRESS;
-                               return -1;
-                       }
-               }
-               else if (p_src->sa_family != p_dst->sa_family) {
-                       __ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-                       return -1;
-               }
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-static int
-init_x_policy(void)
-{
-       struct sadb_x_policy *p;
-
-       tlen = sizeof(struct sadb_x_policy);
-
-       pbuf = malloc(tlen);
-       if (pbuf == NULL) {
-               __ipsec_errcode = EIPSEC_NO_BUFS;
-               return -1;
-       }
-       p = (struct sadb_x_policy *)pbuf;
-       p->sadb_x_policy_len = 0;       /* must update later */
-       p->sadb_x_policy_exttype = SADB_X_EXT_POLICY;
-       p->sadb_x_policy_type = p_type;
-       p->sadb_x_policy_dir = p_dir;
-       p->sadb_x_policy_reserved = 0;
-       offset = tlen;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-static int
-set_x_request(struct sockaddr *src, struct sockaddr *dst)
-{
-       struct sadb_x_ipsecrequest *p;
-       int reqlen;
-
-       reqlen = sizeof(*p)
-               + (src ? src->sa_len : 0)
-               + (dst ? dst->sa_len : 0);
-       tlen += reqlen;         /* increment to total length */
-
-       pbuf = realloc(pbuf, tlen);
-       if (pbuf == NULL) {
-               __ipsec_errcode = EIPSEC_NO_BUFS;
-               return -1;
-       }
-       p = (struct sadb_x_ipsecrequest *)&pbuf[offset];
-       p->sadb_x_ipsecrequest_len = reqlen;
-       p->sadb_x_ipsecrequest_proto = p_protocol;
-       p->sadb_x_ipsecrequest_mode = p_mode;
-       p->sadb_x_ipsecrequest_level = p_level;
-       p->sadb_x_ipsecrequest_reqid = p_reqid;
-       offset += sizeof(*p);
-
-       if (set_sockaddr(src) || set_sockaddr(dst))
-               return -1;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-static int
-set_sockaddr(struct sockaddr *addr)
-{
-       if (addr == NULL) {
-               __ipsec_errcode = EIPSEC_NO_ERROR;
-               return 0;
-       }
-
-       /* tlen has already incremented */
-
-       memcpy(&pbuf[offset], addr, addr->sa_len);
-
-       offset += addr->sa_len;
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return 0;
-}
-
-static void
-policy_parse_request_init(void)
-{
-       p_protocol = IPPROTO_IP;
-       p_mode = IPSEC_MODE_ANY;
-       p_level = IPSEC_LEVEL_DEFAULT;
-       p_reqid = 0;
-       if (p_src != NULL) {
-               free(p_src);
-               p_src = NULL;
-       }
-       if (p_dst != NULL) {
-               free(p_dst);
-               p_dst = NULL;
-       }
-
-       return;
-}
-
-static caddr_t
-policy_parse(char *msg, int msglen)
-{
-       int error;
-       pbuf = NULL;
-       tlen = 0;
-
-       /* initialize */
-       p_dir = IPSEC_DIR_INVALID;
-       p_type = IPSEC_POLICY_DISCARD;
-       policy_parse_request_init();
-       __policy__strbuffer__init__(msg);
-
-       error = yyparse();      /* it must be set errcode. */
-       if (error) {
-               if (pbuf != NULL)
-                       free(pbuf);
-               return NULL;
-       }
-
-       /* update total length */
-       ((struct sadb_x_policy *)pbuf)->sadb_x_policy_len = PFKEY_UNIT64(tlen);
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-
-       return pbuf;
-}
-
-caddr_t
-ipsec_set_policy(char *msg, int msglen)
-{
-       caddr_t policy;
-
-       policy = policy_parse(msg, msglen);
-       if (policy == NULL) {
-               if (__ipsec_errcode == EIPSEC_NO_ERROR)
-                       __ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-               return NULL;
-       }
-
-       __ipsec_errcode = EIPSEC_NO_ERROR;
-       return policy;
-}
-
diff --git a/lib/libipsec/policy_token.l b/lib/libipsec/policy_token.l
deleted file mode 100644 (file)
index 77ff00b..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/policy_token.l,v 1.2.2.2 2001/07/03 11:01:15 ume Exp $       */
-/*     $DragonFly: src/lib/libipsec/policy_token.l,v 1.4 2008/09/30 16:57:05 swildner Exp $    */
-/*     $KAME: policy_token.l,v 1.11 2000/12/01 10:08:29 sakane Exp $   */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-%{
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <net/route.h>
-#include <net/pfkeyv2.h>
-#include <netkey/keydb.h>
-#include <netinet/in.h>
-#include <netinet6/ipsec.h>
-
-#include <stdlib.h>
-#include <limits.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#define YY_NO_INPUT
-
-#ifndef __NetBSD__
-#include "y.tab.h"
-#else
-#include "policy_parse.h"
-#endif
-#define yylval __libipsecyylval        /* XXX */
-
-int yylex (void);
-%}
-
-%option noyywrap
-%option nounput
-
-/* common section */
-nl             \n
-ws             [ \t]+
-digit          [0-9]
-hexdigit       [0-9A-Fa-f]
-special                [()+\|\?\*,]
-dot            \.
-comma          \,
-hyphen         \-
-colon          \:
-slash          \/
-bcl            \{
-ecl            \}
-blcl           \[
-elcl           \]
-percent                \%
-semi           \;
-usec           {dot}{digit}{1,6}
-comment                \#.*
-ccomment       "/*"
-bracketstring  \<[^>]*\>
-quotedstring   \"[^"]*\"
-decstring      {digit}+
-hexpair                {hexdigit}{hexdigit}
-hexstring      0[xX]{hexdigit}+
-octetstring    {octet}({dot}{octet})+
-ipaddress      [a-zA-Z0-9:\._][a-zA-Z0-9:\._]*(%[a-zA-Z0-9]+)?
-
-%%
-
-in             { yylval.num = IPSEC_DIR_INBOUND; return(DIR); }
-out            { yylval.num = IPSEC_DIR_OUTBOUND; return(DIR); }
-
-discard                { yylval.num = IPSEC_POLICY_DISCARD; return(ACTION); }
-none           { yylval.num = IPSEC_POLICY_NONE; return(ACTION); }
-ipsec          { yylval.num = IPSEC_POLICY_IPSEC; return(ACTION); }
-bypass         { yylval.num = IPSEC_POLICY_BYPASS; return(ACTION); }
-entrust                { yylval.num = IPSEC_POLICY_ENTRUST; return(ACTION); }
-
-esp            { yylval.num = IPPROTO_ESP; return(PROTOCOL); }
-ah             { yylval.num = IPPROTO_AH; return(PROTOCOL); }
-ipcomp         { yylval.num = IPPROTO_IPCOMP; return(PROTOCOL); }
-tcp            { yylval.num = IPPROTO_TCP; return(PROTOCOL); }
-
-transport      { yylval.num = IPSEC_MODE_TRANSPORT; return(MODE); }
-tunnel         { yylval.num = IPSEC_MODE_TUNNEL; return(MODE); }
-
-me             { return(ME); }
-any            { return(ANY); }
-
-default                { yylval.num = IPSEC_LEVEL_DEFAULT; return(LEVEL); }
-use            { yylval.num = IPSEC_LEVEL_USE; return(LEVEL); }
-require                { yylval.num = IPSEC_LEVEL_REQUIRE; return(LEVEL); }
-unique{colon}{decstring} {
-                       yylval.val.len = strlen(yytext + 7);
-                       yylval.val.buf = yytext + 7;
-                       return(LEVEL_SPECIFY);
-               }
-unique         { yylval.num = IPSEC_LEVEL_UNIQUE; return(LEVEL); }
-{slash}                { return(SLASH); }
-
-{ipaddress}    {
-                       yylval.val.len = strlen(yytext);
-                       yylval.val.buf = yytext;
-                       return(IPADDRESS);
-               }
-
-{hyphen}       { return(HYPHEN); }
-
-{ws}           { ; }
-{nl}           { ; }
-
-%%
-
-void __policy__strbuffer__init__ (char *);
-
-void
-__policy__strbuffer__init__(char *msg)
-{
-       YY_BUFFER_STATE yyb;
-
-       yyb = (YY_BUFFER_STATE)yy_scan_string(msg);
-       yy_switch_to_buffer(yyb);
-
-       return;
-}
-
diff --git a/lib/libipsec/test-policy.c b/lib/libipsec/test-policy.c
deleted file mode 100644 (file)
index 865d243..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-/*     $FreeBSD: src/lib/libipsec/test-policy.c,v 1.2.2.2 2001/07/03 11:01:15 ume Exp $        */
-/*     $KAME: test-policy.c,v 1.14 2000/12/27 11:38:11 sakane Exp $    */
-
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <net/pfkeyv2.h>
-#include <netkey/key_debug.h>
-#include <netinet6/ipsec.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <err.h>
-
-#include "libpfkey.h"
-
-struct req_t {
-       int result;     /* expected result; 0:ok 1:ng */
-       char *str;
-} reqs[] = {
-{ 0, "out ipsec" },
-{ 1, "must_error" },
-{ 1, "in ipsec must_error" },
-{ 1, "out ipsec esp/must_error" },
-{ 1, "out discard" },
-{ 1, "out none" },
-{ 0, "in entrust" },
-{ 0, "out entrust" },
-{ 1, "out ipsec esp" },
-{ 0, "in ipsec ah/transport" },
-{ 1, "in ipsec ah/tunnel" },
-{ 0, "out ipsec ah/transport/" },
-{ 1, "out ipsec ah/tunnel/" },
-{ 0, "in ipsec esp / transport / 10.0.0.1-10.0.0.2" },
-{ 0, "in ipsec esp/tunnel/::1-::2" },
-{ 1, "in ipsec esp/tunnel/10.0.0.1-::2" },
-{ 0, "in ipsec esp/tunnel/::1-::2/require" },
-{ 0, "out ipsec ah/transport//use" },
-{ 1, "out ipsec ah/transport esp/use" },
-{ 1, "in ipsec ah/transport esp/tunnel" },
-{ 0, "in ipsec ah/transport esp/tunnel/::1-::1" },
-{ 0, "in ipsec
-       ah / transport
-       esp / tunnel / ::1-::2" },
-{ 0, "out ipsec
-       ah/transport/::1-::2 esp/tunnel/::3-::4/use ah/transport/::5-::6/require
-       ah/transport/::1-::2 esp/tunnel/::3-::4/use ah/transport/::5-::6/require
-       ah/transport/::1-::2 esp/tunnel/::3-::4/use ah/transport/::5-::6/require
-       " },
-{ 0, "out ipsec esp/transport/fec0::10-fec0::11/use" },
-};
-
-int test1 (void);
-int test1sub1 (struct req_t *);
-int test1sub2 (char *, int);
-int test2 (void);
-int test2sub (int);
-
-int
-main(ac, av)
-       int ac;
-       char **av;
-{
-       test1();
-       test2();
-
-       exit(0);
-}
-
-int
-test1()
-{
-       int i;
-       int result;
-
-       printf("TEST1\n");
-       for (i = 0; i < NELEM(reqs); i++) {
-               printf("#%d [%s]\n", i + 1, reqs[i].str);
-
-               result = test1sub1(&reqs[i]);
-               if (result == 0 && reqs[i].result == 1) {
-                       warnx("ERROR: expecting failure.\n");
-               } else if (result == 1 && reqs[i].result == 0) {
-                       warnx("ERROR: expecting success.\n");
-               }
-       }
-
-       return 0;
-}
-
-int
-test1sub1(req)
-       struct req_t *req;
-{
-       char *buf;
-
-       buf = ipsec_set_policy(req->str, strlen(req->str));
-       if (buf == NULL) {
-               printf("ipsec_set_policy: %s\n", ipsec_strerror());
-               return 1;
-       }
-
-       if (test1sub2(buf, PF_INET) != 0
-        || test1sub2(buf, PF_INET6) != 0) {
-               free(buf);
-               return 1;
-       }
-#if 0
-       kdebug_sadb_x_policy((struct sadb_ext *)buf);
-#endif
-
-       free(buf);
-       return 0;
-}
-
-int
-test1sub2(policy, family)
-       char *policy;
-       int family;
-{
-       int so;
-       int proto = 0, optname = 0;
-       int len;
-       char getbuf[1024];
-
-       switch (family) {
-       case PF_INET:
-               proto = IPPROTO_IP;
-               optname = IP_IPSEC_POLICY;
-               break;
-       case PF_INET6:
-               proto = IPPROTO_IPV6;
-               optname = IPV6_IPSEC_POLICY;
-               break;
-       }
-
-       if ((so = socket(family, SOCK_DGRAM, 0)) < 0)
-               err(1, "socket");
-
-       len = ipsec_get_policylen(policy);
-#if 0
-       printf("\tsetlen:%d\n", len);
-#endif
-
-       if (setsockopt(so, proto, optname, policy, len) < 0) {
-               printf("fail to set sockopt; %s\n", strerror(errno));
-               close(so);
-               return 1;
-       }
-
-       memset(getbuf, 0, sizeof(getbuf));
-       memcpy(getbuf, policy, sizeof(struct sadb_x_policy));
-       if (getsockopt(so, proto, optname, getbuf, &len) < 0) {
-               printf("fail to get sockopt; %s\n", strerror(errno));
-               close(so);
-               return 1;
-       }
-
-    {
-       char *buf = NULL;
-
-#if 0
-       printf("\tgetlen:%d\n", len);
-#endif
-
-       if ((buf = ipsec_dump_policy(getbuf, NULL)) == NULL) {
-               printf("%s\n", ipsec_strerror());
-               close(so);
-               return 1;
-       }
-#if 0
-       printf("\t[%s]\n", buf);
-#endif
-       free(buf);
-    }
-
-       close (so);
-       return 0;
-}
-
-char addr[] = {
-       28, 28, 0, 0,
-       0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-       0, 0, 0, 0,
-};
-
-int
-test2()
-{
-       int so;
-       char *pol1 = "out ipsec";
-       char *pol2 = "out ipsec ah/transport//use";
-       char *sp1, *sp2;
-       int splen1, splen2;
-       int spid;
-       struct sadb_msg *m;
-
-       printf("TEST2\n");
-       if (getuid() != 0)
-               errx(1, "root privilege required.\n");
-
-       sp1 = ipsec_set_policy(pol1, strlen(pol1));
-       splen1 = ipsec_get_policylen(sp1);
-       sp2 = ipsec_set_policy(pol2, strlen(pol2));
-       splen2 = ipsec_get_policylen(sp2);
-
-       if ((so = pfkey_open()) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-
-       printf("spdflush()\n");
-       if (pfkey_send_spdflush(so) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       m = pfkey_recv(so);
-       free(m);
-
-#if 0
-       printf("spdsetidx()\n");
-       if (pfkey_send_spdsetidx(so, (struct sockaddr *)addr, 128,
-                               (struct sockaddr *)addr, 128,
-                               255, sp1, splen1, 0) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       m = pfkey_recv(so);
-       free(m);
-       
-       printf("spdupdate()\n");
-       if (pfkey_send_spdupdate(so, (struct sockaddr *)addr, 128,
-                               (struct sockaddr *)addr, 128,
-                               255, sp2, splen2, 0) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       m = pfkey_recv(so);
-       free(m);
-
-       sleep(4);
-
-       printf("spddelete()\n");
-       if (pfkey_send_spddelete(so, (struct sockaddr *)addr, 128,
-                               (struct sockaddr *)addr, 128,
-                               255, sp1, splen1, 0) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       m = pfkey_recv(so);
-       free(m);
-
-       printf("spdadd()\n");
-       if (pfkey_send_spdadd(so, (struct sockaddr *)addr, 128,
-                               (struct sockaddr *)addr, 128,
-                               255, sp2, splen2, 0) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       spid = test2sub(so);
-
-       printf("spdget(%u)\n", spid);
-       if (pfkey_send_spdget(so, spid) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       m = pfkey_recv(so);
-       free(m);
-
-       sleep(4);
-
-       printf("spddelete2()\n");
-       if (pfkey_send_spddelete2(so, spid) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       m = pfkey_recv(so);
-       free(m);
-#endif
-
-       printf("spdadd() with lifetime's 10(s)\n");
-       if (pfkey_send_spdadd2(so, (struct sockaddr *)addr, 128,
-                               (struct sockaddr *)addr, 128,
-                               255, 0, 10, sp2, splen2, 0) < 0)
-               errx(1, "ERROR: %s\n", ipsec_strerror());
-       spid = test2sub(so);
-
-#if 0
-       /* expecting failure */
-       printf("spdupdate()\n");
-       if (pfkey_send_spdupdate(so, (struct sockaddr *)addr, 128,
-                               (struct sockaddr *)addr, 128,
-                               255, sp2, splen2, 0) == 0) {
-               warnx("ERROR: expecting failure.\n");
-       }
-#endif
-
-       return 0;
-}
-
-int
-test2sub(so)
-       int so;
-{
-       struct sadb_msg *msg;
-       caddr_t mhp[SADB_EXT_MAX + 1];
-
-       if ((msg = pfkey_recv(so)) == NULL)
-               errx(1, "ERROR: pfkey_recv failure.\n");
-       if (pfkey_align(msg, mhp) < 0)
-               errx(1, "ERROR: pfkey_align failure.\n");
-
-       return ((struct sadb_x_policy *)mhp[SADB_X_EXT_POLICY])->sadb_x_policy_id;
-}
-
index bb0e345..892d730 100644 (file)
@@ -1,6 +1,5 @@
 #      @(#)Makefile    8.1 (Berkeley) 6/5/93
 # $FreeBSD: src/sbin/ping/Makefile,v 1.12.2.4 2001/12/19 04:49:11 dd Exp $
-# $DragonFly: src/sbin/ping/Makefile,v 1.4 2006/10/17 00:55:43 pavalos Exp $
 
 PROG=  ping
 MAN=   ping.8
@@ -8,8 +7,4 @@ BINMODE=4555
 DPADD= ${LIBM}
 LDADD= -lm
 
-CFLAGS+=-DIPSEC
-DPADD+=        ${LIBIPSEC}
-LDADD+=        -lipsec
-
 .include <bsd.prog.mk>
index 4c4347e..7053d33 100644 (file)
@@ -28,7 +28,7 @@
 .\"     @(#)ping.8     8.2 (Berkeley) 12/11/93
 .\" $FreeBSD: src/sbin/ping/ping.8,v 1.54 2006/04/05 12:30:42 glebius Exp $
 .\"
-.Dd April 4, 2006
+.Dd April 21, 2018
 .Dt PING 8
 .Os
 .Sh NAME
@@ -47,7 +47,6 @@ packets to network hosts
 .Op Fl l Ar preload
 .Op Fl M Cm mask | time
 .Op Fl m Ar ttl
-.Op Fl P Ar policy
 .Op Fl p Ar pattern
 .Op Fl S Ar src_addr
 .Op Fl s Ar packetsize
@@ -63,7 +62,6 @@ packets to network hosts
 .Op Fl l Ar preload
 .Op Fl M Cm mask | time
 .Op Fl m Ar ttl
-.Op Fl P Ar policy
 .Op Fl p Ar pattern
 .Op Fl S Ar src_addr
 .Op Fl s Ar packetsize
@@ -215,13 +213,6 @@ Numeric output only.
 No attempt will be made to lookup symbolic names for host addresses.
 .It Fl o
 Exit successfully after receiving one reply packet.
-.It Fl P Ar policy
-.Ar policy
-specifies IPsec policy for the ping session.
-For details please refer to
-.Xr ipsec 4
-and
-.Xr ipsec_set_policy 3 .
 .It Fl p Ar pattern
 You may specify up to 16
 .Dq pad
index 2dd549b..1097f58 100644 (file)
@@ -32,7 +32,6 @@
  * @(#) Copyright (c) 1989, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)ping.c  8.1 (Berkeley) 6/5/93
  * $FreeBSD: src/sbin/ping/ping.c,v 1.111 2007/05/21 14:38:45 cognet Exp $
- * $DragonFly: src/sbin/ping/ping.c,v 1.8 2008/09/04 21:00:28 swildner Exp $
  */
 
 /*
 #include <netinet/ip_var.h>
 #include <arpa/inet.h>
 
-#ifdef IPSEC
-#include <netinet6/ipsec.h>
-#endif /*IPSEC*/
-
 #include <ctype.h>
 #include <err.h>
 #include <errno.h>
@@ -122,11 +117,6 @@ int options;
 #define        F_MTTL          0x0800
 #define        F_MIF           0x1000
 #define        F_AUDIBLE       0x2000
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-#define F_POLICY       0x4000
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif /*IPSEC*/
 #define        F_TTL           0x8000
 #define        F_MISSED        0x10000
 #define        F_ONCE          0x20000
@@ -218,9 +208,6 @@ main(int argc, char **argv)
        u_char *datap, packet[IP_MAXPACKET] __aligned(4);
        char *ep, *source, *target, *payload;
        struct hostent *hp;
-#ifdef IPSEC_POLICY_IPSEC
-       char *policy_in, *policy_out;
-#endif
        struct sockaddr_in *to;
        double t;
        u_long alarmtimeout, ultmp;
@@ -234,9 +221,6 @@ main(int argc, char **argv)
        unsigned char loop, mttl;
 
        payload = source = NULL;
-#ifdef IPSEC_POLICY_IPSEC
-       policy_in = policy_out = NULL;
-#endif
 
        /*
         * Do the stuff that we need root priv's for *first*, and
@@ -252,15 +236,7 @@ main(int argc, char **argv)
        alarmtimeout = df = preload = tos = 0;
 
        outpack = outpackhdr + sizeof(struct ip);
-       while ((ch = getopt(argc, argv,
-               "Aac:DdfG:g:h:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:"
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-               "P:"
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif /*IPSEC*/
-               )) != -1)
-       {
+       while ((ch = getopt(argc, argv, "Aac:DdfG:g:h:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:")) != -1) {
                switch(ch) {
                case 'A':
                        options |= F_MISSED;
@@ -395,19 +371,6 @@ main(int argc, char **argv)
                case 'o':
                        options |= F_ONCE;
                        break;
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-               case 'P':
-                       options |= F_POLICY;
-                       if (!strncmp("in", optarg, 2))
-                               policy_in = strdup(optarg);
-                       else if (!strncmp("out", optarg, 3))
-                               policy_out = strdup(optarg);
-                       else
-                               errx(1, "invalid security policy");
-                       break;
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif /*IPSEC*/
                case 'p':               /* fill buffer with user pattern */
                        options |= F_PINGFILLED;
                        payload = optarg;
@@ -594,35 +557,6 @@ main(int argc, char **argv)
        if (options & F_SO_DONTROUTE)
                setsockopt(s, SOL_SOCKET, SO_DONTROUTE, (char *)&hold,
                    sizeof(hold));
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-       if (options & F_POLICY) {
-               char *buf;
-               if (policy_in != NULL) {
-                       buf = ipsec_set_policy(policy_in, strlen(policy_in));
-                       if (buf == NULL)
-                               errx(EX_CONFIG, "%s", ipsec_strerror());
-                       if (setsockopt(s, IPPROTO_IP, IP_IPSEC_POLICY,
-                                       buf, ipsec_get_policylen(buf)) < 0)
-                               err(EX_CONFIG,
-                                   "ipsec policy cannot be configured");
-                       free(buf);
-               }
-
-               if (policy_out != NULL) {
-                       buf = ipsec_set_policy(policy_out, strlen(policy_out));
-                       if (buf == NULL)
-                               errx(EX_CONFIG, "%s", ipsec_strerror());
-                       if (setsockopt(s, IPPROTO_IP, IP_IPSEC_POLICY,
-                                       buf, ipsec_get_policylen(buf)) < 0)
-                               err(EX_CONFIG,
-                                   "ipsec policy cannot be configured");
-                       free(buf);
-               }
-       }
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif /*IPSEC*/
-
        if (options & F_HDRINCL) {
                ip = (struct ip*)outpackhdr;
                if (!(options & (F_TTL | F_MTTL))) {
@@ -1669,11 +1603,6 @@ fill(char *bp, char *patp)
        }
 }
 
-#if defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
-#define        SECOPT          " [-P policy]"
-#else
-#define        SECOPT          ""
-#endif
 static void
 usage(void)
 {
@@ -1681,10 +1610,10 @@ usage(void)
        fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
 "usage: ping [-AaDdfnoQqRrv] [-c count] [-G sweepmaxsize] [-g sweepminsize]",
 "            [-h sweepincrsize] [-i wait] [-l preload] [-M mask | time] [-m ttl]",
-"           " SECOPT " [-p pattern] [-S src_addr] [-s packetsize] [-t timeout]",
+"            [-p pattern] [-S src_addr] [-s packetsize] [-t timeout]",
 "            [-W waittime] [-z tos] host",
 "       ping [-AaDdfLnoQqRrv] [-c count] [-I iface] [-i wait] [-l preload]",
-"            [-M mask | time] [-m ttl]" SECOPT " [-p pattern] [-S src_addr]",
+"            [-M mask | time] [-m ttl] [-p pattern] [-S src_addr]",
 "            [-s packetsize] [-T ttl] [-t timeout] [-W waittime]",
 "            [-z tos] mcast-group");
        exit(EX_USAGE);
index 50462bc..fa3a140 100644 (file)
@@ -3,13 +3,13 @@
 PROG=  ping6
 MAN=   ping6.8
 
-CFLAGS+=-DINET6 -DIPSEC -DHAVE_POLL_H -DHAVE_ARC4RANDOM -DUSE_RFC3542
+CFLAGS+=-DINET6 -DHAVE_POLL_H -DHAVE_ARC4RANDOM -DUSE_RFC3542
 
 BINOWN=        root
 BINMODE=4555
 
-LDADD= -lipsec -lm -lmd -lprivate_crypto
-DPADD= ${LIBIPSEC} ${LIBM} ${LIBMD} ${LIBCRYPTO}
+LDADD= -lm -lmd -lprivate_crypto
+DPADD= ${LIBM} ${LIBMD} ${LIBCRYPTO}
 LDFLAGS+=      ${PRIVATELIB_LDFLAGS}
 CFLAGS+=       -I${.CURDIR}/../../crypto/libressl/include
 NO_STRICT_ALIASING=
index d12a65e..bc7e3d8 100644 (file)
@@ -29,7 +29,7 @@
 .\"
 .\"    $FreeBSD: src/sbin/ping6/ping6.8,v 1.3.2.12 2003/02/24 00:56:42 trhodes Exp $
 .\"
-.Dd May 17, 1998
+.Dd April 21, 2018
 .Dt PING6 8
 .Os
 .Sh NAME
 packets to network hosts
 .Sh SYNOPSIS
 .Nm
-.\" without ipsec, or new ipsec
 .Op Fl dfHnNqRtvwW
-.\" old ipsec
-.\" .Op Fl AdEfnNqRtvwW
 .Bk -words
 .Op Fl a Ar addrtype
 .Ek
@@ -68,10 +65,6 @@ packets to network hosts
 .Op Fl p Ar pattern
 .Ek
 .Bk -words
-.\" new ipsec
-.Op Fl P Ar policy
-.Ek
-.Bk -words
 .Op Fl S Ar sourceaddr
 .Ek
 .Bk -words
@@ -100,10 +93,6 @@ and
 header formatted as documented in RFC 2463.
 The options are as follows:
 .Bl -tag -width Ds
-.\" old ipsec
-.\" .It Fl A
-.\" Enables transport-mode IPsec authentication header
-.\" (experimental).
 .It Fl a Ar addrtype
 Generate ICMPv6 Node Information Node Addresses query, rather than echo-request.
 .Ar addrtype
@@ -142,9 +131,6 @@ packets.
 Set the
 .Dv SO_DEBUG
 option on the socket being used.
-.\" .It Fl E
-.\" Enables transport-mode IPsec encapsulated security payload
-.\" (experimental).
 .It Fl f
 Flood ping.
 Outputs packets as fast as they come back or one hundred times per second,
@@ -214,10 +200,6 @@ For example,
 .Dq Li \-p ff
 will cause the sent packet to be filled with all
 ones.
-.\" new ipsec
-.It Fl P Ar policy
-.Ar policy
-specifies IPsec policy to be used for the probe.
 .It Fl q
 Quiet output.
 Nothing is displayed except the summary lines at startup time and
@@ -465,7 +447,7 @@ The
 utility with IPv6 support first appeared in WIDE Hydrangea IPv6 protocol stack
 kit.
 .Pp
-IPv6 and IPsec support based on the KAME Project
+IPv6 support based on the KAME Project
 .Pa ( http://www.kame.net/ )
 stack was initially integrated into
 .Fx 4.0
index 8fa42bd..0b9fa56 100644 (file)
 #include <poll.h>
 #endif
 
-#ifdef IPSEC
-#include <netinet6/ah.h>
-#include <netinet6/ipsec.h>
-#endif
-
 #include <md5.h>
 
 struct tv32 {
@@ -157,14 +152,6 @@ struct tv32 {
 #define        F_RROUTE        0x0020
 #define        F_SO_DEBUG      0x0040
 #define        F_VERBOSE       0x0100
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-#define        F_POLICY        0x0400
-#else
-#define F_AUTHHDR      0x0200
-#define F_ENCRYPT      0x0400
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif /*IPSEC*/
 #define F_NODEADDR     0x0800
 #define F_FQDN         0x1000
 #define F_INTERFACE    0x2000
@@ -305,10 +292,6 @@ main(int argc, char **argv)
 #ifdef USE_RFC3542
        struct ip6_rthdr *rthdr = NULL;
 #endif
-#ifdef IPSEC_POLICY_IPSEC
-       char *policy_in = NULL;
-       char *policy_out = NULL;
-#endif
 #ifdef IPV6_USE_MIN_MTU
        int mflag = 0;
 #endif
@@ -320,18 +303,7 @@ main(int argc, char **argv)
 
        preload = 0;
        datap = &outpack[ICMP6ECHOLEN + ICMP6ECHOTMLEN];
-#ifndef IPSEC
-#define ADDOPTS
-#else
-#ifdef IPSEC_POLICY_IPSEC
-#define ADDOPTS        "P:"
-#else
-#define ADDOPTS        "AE"
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif
-       while ((ch = getopt(argc, argv,
-           "a:b:c:dfHg:h:I:i:l:mnNp:qS:s:tvwW" ADDOPTS)) != -1) {
-#undef ADDOPTS
+       while ((ch = getopt(argc, argv, "a:b:c:dfHg:h:I:i:l:mnNp:qS:s:tvwW")) != -1) {
                switch (ch) {
                case 'a':
                {
@@ -524,28 +496,6 @@ main(int argc, char **argv)
                        options &= ~F_NOUSERDATA;
                        options |= F_FQDNOLD;
                        break;
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-               case 'P':
-                       options |= F_POLICY;
-                       if (!strncmp("in", optarg, 2)) {
-                               if ((policy_in = strdup(optarg)) == NULL)
-                                       errx(1, "strdup");
-                       } else if (!strncmp("out", optarg, 3)) {
-                               if ((policy_out = strdup(optarg)) == NULL)
-                                       errx(1, "strdup");
-                       } else
-                               errx(1, "invalid security policy");
-                       break;
-#else
-               case 'A':
-                       options |= F_AUTHHDR;
-                       break;
-               case 'E':
-                       options |= F_ENCRYPT;
-                       break;
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif /*IPSEC*/
                default:
                        usage();
                        /*NOTREACHED*/
@@ -732,36 +682,6 @@ main(int argc, char **argv)
 #endif /* IPV6_RECVPATHMTU */
 #endif /* IPV6_USE_MIN_MTU */
 
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-       if (options & F_POLICY) {
-               if (setpolicy(s, policy_in) < 0)
-                       errx(1, "%s", ipsec_strerror());
-               if (setpolicy(s, policy_out) < 0)
-                       errx(1, "%s", ipsec_strerror());
-       }
-#else
-       if (options & F_AUTHHDR) {
-               optval = IPSEC_LEVEL_REQUIRE;
-#ifdef IPV6_AUTH_TRANS_LEVEL
-               if (setsockopt(s, IPPROTO_IPV6, IPV6_AUTH_TRANS_LEVEL,
-                   &optval, sizeof(optval)) == -1)
-                       err(1, "setsockopt(IPV6_AUTH_TRANS_LEVEL)");
-#else /* old def */
-               if (setsockopt(s, IPPROTO_IPV6, IPV6_AUTH_LEVEL,
-                   &optval, sizeof(optval)) == -1)
-                       err(1, "setsockopt(IPV6_AUTH_LEVEL)");
-#endif
-       }
-       if (options & F_ENCRYPT) {
-               optval = IPSEC_LEVEL_REQUIRE;
-               if (setsockopt(s, IPPROTO_IPV6, IPV6_ESP_TRANS_LEVEL,
-                   &optval, sizeof(optval)) == -1)
-                       err(1, "setsockopt(IPV6_ESP_TRANS_LEVEL)");
-       }
-#endif /*IPSEC_POLICY_IPSEC*/
-#endif
-
 #ifdef ICMP6_FILTER
     {
        struct icmp6_filter filt;
@@ -2448,13 +2368,6 @@ pr_retip(struct ip6_hdr *ip6, u_char *end)
                        hlen = (((struct ip6_rthdr *)cp)->ip6r_len+1) << 3;
                        nh = ((struct ip6_rthdr *)cp)->ip6r_nxt;
                        break;
-#ifdef IPSEC
-               case IPPROTO_AH:
-                       printf("AH ");
-                       hlen = (((struct ah *)cp)->ah_len+2) << 2;
-                       nh = ((struct ah *)cp)->ah_nxt;
-                       break;
-#endif
                case IPPROTO_ICMPV6:
                        printf("ICMP6: type = %d, code = %d\n",
                            *cp, *(cp + 1));
@@ -2522,29 +2435,6 @@ fill(char *bp, char *patp)
        }
 }
 
-#ifdef IPSEC
-#ifdef IPSEC_POLICY_IPSEC
-int
-setpolicy(int so __unused, char *policy)
-{
-       char *buf;
-
-       if (policy == NULL)
-               return 0;       /* ignore */
-
-       buf = ipsec_set_policy(policy, strlen(policy));
-       if (buf == NULL)
-               errx(1, "%s", ipsec_strerror());
-       if (setsockopt(s, IPPROTO_IPV6, IPV6_IPSEC_POLICY, buf,
-           ipsec_get_policylen(buf)) < 0)
-               warnx("Unable to set IPsec policy");
-       free(buf);
-
-       return 0;
-}
-#endif
-#endif
-
 char *
 nigroup(char *name)
 {
@@ -2593,14 +2483,8 @@ void
 usage(void)
 {
        fprintf(stderr,
-#if defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC)
-           "A"
-#endif
            "usage: ping6 [-"
            "d"
-#if defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC)
-           "E"
-#endif
            "fH"
 #ifdef IPV6_USE_MIN_MTU
            "m"
@@ -2608,9 +2492,6 @@ usage(void)
            "nNqtvwW] "
            "[-a addrtype] [-b bufsiz] [-c count] [-g gateway]\n"
            "             [-h hoplimit] [-I interface] [-i wait] [-l preload]"
-#if defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
-           " [-P policy]"
-#endif
            "\n"
            "             [-p pattern] [-S sourceaddr] [-s packetsize] "
            "[hops ...] host\n");
index d74e806..579fd89 100644 (file)
@@ -24,7 +24,6 @@ CRUNCH_ALIAS_md5= rmd160
 CRUNCH_SRCDIRS+= usr.sbin/802_11
 CRUNCH_PROGS_usr.sbin/802_11= wpa_supplicant
 CRUNCH_LIBS+= -lpcap -lprivate_ssl -lmd -lprivate_crypto
-CRUNCH_LIBS+= -lipsec
 CRUNCH_LIBS+= ${PRIVATELIB_LDFLAGS}
 
 .include <bsd.crunchgen.mk>
index a7413a0..d461682 100644 (file)
@@ -66,7 +66,7 @@ CRUNCH_ALIAS_swapon= swapoff swapctl
 
 CRUNCH_LIBS+= -lcam -lsbuf -lutil -lkvm -lm -lhammer -lkiconv
 CRUNCH_LIBS+= -lprivate_edit -lprivate_ncurses -ldevstat -lprop -lpthread
-CRUNCH_LIBS+= -lbsdxml -lipsec
+CRUNCH_LIBS+= -lbsdxml
 CRUNCH_LIBS+= ${PRIVATELIB_LDFLAGS}
 
 CRUNCH_SRCDIRS+= usr.sbin
index 49d5feb..0be891f 100644 (file)
@@ -93,7 +93,6 @@ MAN=  aac.4 \
        em.4 \
        et.4 \
        exca.4 \
-       fast_ipsec.4 \
        fd.4 \
        fdc.4 \
        firewire.4 \
@@ -136,7 +135,6 @@ MAN=        aac.4 \
        ipheth.4 \
        ipmi.4 \
        ips.4 \
-       ipsec.4 \
        isa.4 \
        iscsi_initiator.4 \
        isp.4 \
index 6af4b1c..e914440 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man4/aesni.4,v 1.3 2010/09/09 21:37:05 brueffer Exp $
 .\"
-.Dd October 12, 2010
+.Dd April 21, 2018
 .Dt AESNI 4
 .Os
 .Sh NAME
@@ -73,7 +73,6 @@ implementations.
 .Xr crypt 3 ,
 .Xr crypto 4 ,
 .Xr intro 4 ,
-.Xr ipsec 4 ,
 .Xr padlock 4 ,
 .Xr random 4 ,
 .Xr crypto 9
index 244d15f..2791816 100644 (file)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man4/crypto.4,v 1.9 2009/03/03 07:58:01 brueffer Exp $
 .\"
-.Dd August 21, 2010
+.Dd April 21, 2018
 .Dt CRYPTO 4
 .Os
 .Sh NAME
@@ -119,7 +119,6 @@ crypto access device
 .Sh SEE ALSO
 .Xr aesni 4 ,
 .Xr hifn 4 ,
-.Xr ipsec 4 ,
 .Xr padlock 4 ,
 .Xr safe 4 ,
 .Xr ubsec 4 ,
diff --git a/share/man/man4/fast_ipsec.4 b/share/man/man4/fast_ipsec.4
deleted file mode 100644 (file)
index 2cd037c..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-.\" Copyright (c) 2003
-.\"    Sam Leffler <sam@errno.com>. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by Bill Paul.
-.\" 4. Neither the name of the author nor the names of any co-contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"   without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY Sam Leffler AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
-.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-.\" THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD: src/share/man/man4/fast_ipsec.4,v 1.1.2.1 2003/01/24 05:12:59 sam Exp $
-.\" $DragonFly: src/share/man/man4/fast_ipsec.4,v 1.5 2007/05/12 21:22:10 swildner Exp $
-.\"
-.Dd January 20, 2003
-.Dt FAST_IPSEC 4
-.Os
-.Sh NAME
-.Nm "Fast IPsec"
-.Nd Hardware-accelerated IP Security Protocols
-.Sh SYNOPSIS
-.Cd "options FAST_IPSEC"
-.Cd "device crypto"
-.Pp
-.Cd net.inet.esp.enable
-.Cd net.inet.ah.enable
-.Cd net.inet.ipcomp.enable
-.Sh DESCRIPTION
-.Tn IPsec
-is a set of protocols,
-.Tn ESP
-(for Encapsulating Security Payload)
-.Tn AH
-(for Authentication Header),
-and
-.Tn IPComp
-(for IP Payload Compression Protocol)
-that provide security services for IP datagrams.
-.Tn Fast IPsec
-is an experimental implementation of these protocols that uses the
-.Xr crypto 4
-subsystem to carry out cryptographic operations.
-This means, in particular, that cryptograph hardware devices are
-employed whenever possible to optimize the performance of these protocols.
-.Pp
-In general the
-.Tn Fast IPsec
-implementation is intended to be compatible with the
-KAME
-.Tn IPsec
-implementation.
-This documentation concentrates on differences from that software.
-The user should refer to
-.Xr ipsec 4
-for basic information on setting up and using these protocols.
-.Pp
-System configuration requires the crypto subsystem.
-When the
-.Tn Fast IPsec
-protocols are configured for use all protocols are included in the system.
-To selectively enable/disable protocols use
-.Xr sysctl 8 .
-.Sh DIAGNOSTICS
-To be added.
-.Sh SEE ALSO
-.Xr ipsec 4 ,
-.Xr setkey 8 ,
-.Xr sysctl 8
-.Sh HISTORY
-The protocols draw heavily on the
-.Ox
-implementation of the
-.Tn IPsec
-protocols.
-The policy management code is derived from the KAME implementation found
-in their
-.Tn IPsec
-protocols.
-The
-.Tn Fast IPsec
-protocols first appeared in
-.Fx 5.0 .
-.Sh BUGS
-There is presently no support for IPv6.
-The IPcomp protocol support does not work.
-Certain legacy authentication algorithms are not supported because of
-issues with the crypto subsystem.
-This documentation is incomplete.
index 5531326..b0ab104 100644 (file)
@@ -25,7 +25,7 @@
 .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd February 14, 2010
+.Dd April 21, 2018
 .Dt HIFN 4
 .Os
 .Sh NAME
@@ -58,8 +58,6 @@ The
 driver registers itself to accelerate DES, Triple-DES,
 AES (7955 and 7956 only), ARC4, MD5,
 MD5-HMAC, SHA1, and SHA1-HMAC operations for
-.Xr ipsec 4
-and
 .Xr crypto 4 .
 .Pp
 The Hifn
@@ -103,7 +101,6 @@ Contains a 7955 and supports symmetric and random number operations.
 .Xr crypt 3 ,
 .Xr crypto 4 ,
 .Xr intro 4 ,
-.Xr ipsec 4 ,
 .Xr random 4 ,
 .Xr crypto 9
 .Sh CAVEATS
index f026392..49fe613 100644 (file)
@@ -29,7 +29,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd November 25, 2017
+.Dd April 21, 2018
 .Dt IP6 4
 .Os
 .Sh NAME
@@ -384,14 +384,6 @@ the socket option cannot be set to 0 (which will result in returning
 Get or set whether the minimal IPv6 maximum transmission unit (MTU) size
 will be used to avoid fragmentation from occurring for subsequent
 outgoing datagrams.
-.It Dv IPV6_AUTH_LEVEL Fa "int *"
-Get or set the
-.Xr ipsec 4
-authentication level.
-.It Dv IPV6_ESP_TRANS_LEVEL Fa "int *"
-Get or set the ESP transport level.
-.It Dv IPV6_ESP_NETWORK_LEVEL Fa "int *"
-Get or set the ESP encapsulation level.
 .It Dv IPV6_IPCOMP_LEVEL Fa "int *"
 Get or set the
 .Xr ipcomp 4
diff --git a/share/man/man4/ipsec.4 b/share/man/man4/ipsec.4
deleted file mode 100644 (file)
index 705d6b7..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-.\"    $FreeBSD: src/share/man/man4/ipsec.4,v 1.3.2.10 2001/12/17 11:30:12 ru Exp $
-.\"    $DragonFly: src/share/man/man4/ipsec.4,v 1.3 2007/11/23 23:16:37 swildner Exp $
-.\"    $KAME: ipsec.4,v 1.17 2001/06/27 15:25:10 itojun Exp $
-.\"
-.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the project nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd January 29, 1999
-.Dt IPSEC 4
-.Os
-.Sh NAME
-.Nm ipsec
-.Nd IP security protocol
-.Sh SYNOPSIS
-.In sys/types.h
-.In netinet/in.h
-.In netinet6/ipsec.h
-.Sh DESCRIPTION
-.Nm
-is a security protocol in Internet Protocol layer.
-.Nm
-is defined for both IPv4 and IPv6
-.Xr ( inet 4
-and
-.Xr inet6 4 ) .
-.Nm
-consists of two sub-protocols, namely
-ESP
-(encapsulated security payload)
-and AH
-(authentication header).
-ESP protects IP payload from wire-tapping by encrypting it by
-secret key cryptography algorithms.
-AH guarantees integrity of IP packet
-and protects it from intermediate alteration or impersonation,
-by attaching cryptographic checksum computed by one-way hash functions.
-.Nm
-has two operation modes: transport mode and tunnel mode.
-Transport mode is for protecting peer-to-peer communication between end nodes.
-Tunnel mode includes IP-in-IP encapsulation operation
-and is designed for security gateways, like VPN configurations.
-.\"
-.Ss Kernel interface
-.Nm
-is controlled by key management engine and policy engine,
-in the operating system kernel.
-.Pp
-Key management engine can be accessed from the userland by using
-.Dv PF_KEY
-sockets.
-The
-.Dv PF_KEY
-socket API is defined in RFC 2367.
-.Pp
-Policy engine can be controlled by extended part of
-.Dv PF_KEY
-API,
-.Xr setsockopt 2
-operations, and
-.Xr sysctl 3
-interface.
-The kernel implements
-extended version of
-.Dv PF_KEY
-interface, and allows you to define IPsec policy like per-packet filters.
-.Xr setsockopt 2
-interface is used to define per-socket behavior, and
-.Xr sysctl 3
-interface is used to define host-wide default behavior.
-.Pp
-The kernel code does not implement dynamic encryption key exchange protocol
-like IKE
-(Internet Key Exchange).
-That should be implemented as userland programs
-(usually as daemons),
-by using the above described APIs.
-.\"
-.Ss Policy management
-The kernel implements experimental policy management code.
-You can manage the IPsec policy in two ways.
-One is to configure per-socket policy using
-.Xr setsockopt 2 .
-The other is to configure kernel packet filter-based policy using
-.Dv PF_KEY
-interface, via
-.Xr setkey 8 .
-In both cases, IPsec policy must be specified with syntax described in
-.Xr ipsec_set_policy 3 .
-.Pp
-With
-.Xr setsockopt 2 ,
-you can define IPsec policy in per-socket basis.
-You can enforce particular IPsec policy onto packets that go through
-particular socket.
-.Pp
-With
-.Xr setkey 8
-you can define IPsec policy against packets,
-using sort of packet filtering rule.
-Refer to
-.Xr setkey 8
-on how to use it.
-.Pp
-In the latter case,
-.Dq Li default
-policy is allowed for use with
-.Xr setkey 8 .
-By configuring policy to
-.Li default ,
-you can refer system-wide
-.Xr sysctl 8
-variable for default settings.
-The following variables are available.
-.Li 1
-means
-.Dq Li use ,
-and
-.Li 2
-means
-.Dq Li require
-in the syntax.
-.Bl -column net.inet6.ipsec6.esp_trans_deflev integerxxx
-.It Sy "Name   Type    Changeable"
-.It "net.inet.ipsec.esp_trans_deflev   integer yes"
-.It "net.inet.ipsec.esp_net_deflev     integer yes"
-.It "net.inet.ipsec.ah_trans_deflev    integer yes"
-.It "net.inet.ipsec.ah_net_deflev      integer yes"
-.It "net.inet6.ipsec6.esp_trans_deflev integer yes"
-.It "net.inet6.ipsec6.esp_net_deflev   integer yes"
-.It "net.inet6.ipsec6.ah_trans_deflev  integer yes"
-.It "net.inet6.ipsec6.ah_net_deflev    integer yes"
-.El
-.Pp
-If kernel finds no matching policy system wide default value is applied.
-System wide default is specified by the following
-.Xr sysctl 8
-variables.
-.Li 0
-means
-.Dq Li discard
-which asks the kernel to drop the packet.
-.Li 1
-means
-.Dq Li none .
-.Bl -column net.inet6.ipsec6.def_policy integerxxx
-.It Sy "Name   Type    Changeable"
-.It "net.inet.ipsec.def_policy integer yes"
-.It "net.inet6.ipsec6.def_policy       integer yes"
-.El
-.\"
-.Ss Miscellaneous sysctl variables
-The following variables are accessible via
-.Xr sysctl 8 ,
-for tweaking kernel IPsec behavior:
-.Bl -column net.inet6.ipsec6.inbonud_call_ike integerxxx
-.It Sy "Name   Type    Changeable"
-.It "net.inet.ipsec.ah_cleartos        integer yes"
-.It "net.inet.ipsec.ah_offsetmask      integer yes"
-.It "net.inet.ipsec.dfbit      integer yes"
-.It "net.inet.ipsec.ecn        integer yes"
-.It "net.inet.ipsec.debug      integer yes"
-.It "net.inet6.ipsec6.ecn      integer yes"
-.It "net.inet6.ipsec6.debug    integer yes"
-.El
-.Pp
-The variables are interpreted as follows:
-.Bl -tag -width 6n
-.It Li ipsec.ah_cleartos
-If set to non-zero, the kernel clears type-of-service field in the IPv4 header
-during AH authentication data computation.
-The variable is for tweaking AH behavior to interoperate with devices that
-implement RFC 1826 AH.
-It should be set to non-zero
-(clear the type-of-service field)
-for RFC 2402 conformance.
-.It Li ipsec.ah_offsetmask
-During AH authentication data computation, the kernel will include
-16bit fragment offset field
-(including flag bits)
-in IPv4 header, after computing logical AND with the variable.
-The variable is for tweaking AH behavior to interoperate with devices that
-implement RFC 1826 AH.
-It should be set to zero
-(clear the fragment offset field during computation)
-for RFC 2402 conformance.
-.It Li ipsec.dfbit
-The variable configures the kernel behavior on IPv4 IPsec tunnel encapsulation.
-If set to 0, DF bit on the outer IPv4 header will be cleared.
-1 means that the outer DF bit is set regardless from the inner DF bit.
-2 means that the DF bit is copied from the inner header to the outer.
-The variable is supplied to conform to RFC 2401 chapter 6.1.
-.It Li ipsec.ecn
-If set to non-zero, IPv4 IPsec tunnel encapsulation/decapsulation behavior will
-be friendly to ECN
-(explicit congestion notification),
-as documented in
-.Li draft-ietf-ipsec-ecn-02.txt .
-.Xr gif 4
-talks more about the behavior.
-.It Li ipsec.debug
-If set to non-zero, debug messages will be generated via
-.Xr syslog 3 .
-.El
-.Pp
-Variables under
-.Li net.inet6.ipsec6
-tree has similar meaning as the
-.Li net.inet.ipsec
-counterpart.
-.\"
-.Sh PROTOCOLS
-The
-.Nm
-protocol works like plug-in to
-.Xr inet 4
-and
-.Xr inet6 4
-protocols.
-Therefore,
-.Nm
-supports most of the protocols defined upon those IP-layer protocols.
-Some of the protocols, like
-.Xr icmp 4
-or
-.Xr icmp6 4 ,
-may behave differently with
-.Nm .
-This is because
-.Nm
-can prevent
-.Xr icmp 4
-or
-.Xr icmp6 4
-routines from looking into IP payload.
-.\"
-.Sh SEE ALSO
-.Xr ioctl 2 ,
-.Xr socket 2 ,
-.Xr ipsec_set_policy 3 ,
-.Xr icmp6 4 ,
-.Xr intro 4 ,
-.Xr ip6 4 ,
-.Xr setkey 8 ,
-.Xr sysctl 8
-.\".Xr racoon 8
-.Sh STANDARDS
-.Rs
-.%A Daniel L. McDonald
-.%A Craig Metz
-.%A Bao G. Phan
-.%T "PF_KEY Key Management API, Version 2"
-.%R RFC
-.%N 2367
-.Re
-.Pp
-.Rs
-.%A "D. L. McDonald"
-.%T "A Simple IP Security API Extension to BSD Sockets"
-.%R internet draft
-.%N "draft-mcdonald-simple-ipsec-api-03.txt"
-.%O work in progress material
-.Re
-.Sh HISTORY
-The implementation described herein appeared in WIDE/KAME IPv6/IPsec stack.
-.Sh BUGS
-The IPsec support is subject to change as the IPsec protocols develop.
-.Pp
-There is no single standard for policy engine API,
-so the policy engine API described herein is just for KAME implementation.
-.Pp
-AH and tunnel mode encapsulation may not work as you might expect.
-If you configure inbound
-.Dq require
-policy against AH tunnel or any IPsec encapsulating policy with AH
-(like
-.Dq Li esp/tunnel/A-B/use ah/transport/A-B/require ) ,
-tunnelled packets will be rejected.
-This is because we enforce policy check on inner packet on reception,
-and AH authenticates encapsulating
-(outer)
-packet, not the encapsulated
-(inner)
-packet
-(so for the receiving kernel there's no sign of authenticity).
-The issue will be solved when we revamp our policy engine to keep all the
-packet decapsulation history.
-.Pp
-Under certain condition,
-truncated result may be raised from the kernel
-against
-.Dv SADB_DUMP
-and
-.Dv SADB_SPDDUMP
-operation on
-.Dv PF_KEY
-socket.
-This occurs if there are too many database entries in the kernel
-and socket buffer for the
-.Dv PF_KEY
-socket is insufficient.
-If you manipulate many IPsec key/policy database entries,
-increase the size of socket buffer.
index da5d2b5..c6c9f21 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man4/man4.i386/padlock.4,v 1.8 2007/08/02 08:04:48 bz Exp $
 .\"
-.Dd October 3, 2009
+.Dd April 21, 2018
 .Dt PADLOCK 4
 .Os
 .Sh NAME
@@ -58,10 +58,8 @@ and HMAC/SHA256 for
 .Xr crypto 4 .
 It also registers itself to accelerate other HMAC algorithms, although
 there is no hardware acceleration for those algorithms.
-This is only needed so
-.Nm
-can work with
-.Xr ipsec 4 .
+This is due to historical reasons, so that padlock could work with
+.Em IPsec .
 .Pp
 The hardware random number generator supplies data for the kernel
 .Xr random 4
@@ -70,7 +68,6 @@ subsystem.
 .Xr crypt 3 ,
 .Xr crypto 4 ,
 .Xr intro 4 ,
-.Xr ipsec 4 ,
 .Xr random 4 ,
 .Xr crypto 9
 .Sh HISTORY
index adbbbe3..aa02eec 100644 (file)
@@ -24,7 +24,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd January 2, 2011
+.Dd April 21, 2018
 .Dt PFSYNC 4
 .Os
 .Sh NAME
@@ -105,26 +105,17 @@ By default, state change messages are sent out on the synchronisation
 interface using IP multicast packets.
 The protocol is IP protocol 240, PFSYNC, and the multicast group
 used is 224.0.0.240.
-When a peer address is specified using the
+An alternative destination address for
+.Nm
+packets can be specified using the
 .Ic syncpeer
-keyword, the peer address is used as a destination for the pfsync traffic,
-and the traffic can then be protected using
-.Xr ipsec 4 .
-In such a configuration, the syncdev should be set to the
-.Xr enc 4
-interface, as this is where the traffic arrives when it is decapsulated,
-e.g.:
-.Bd -literal -offset indent
-# ifconfig pfsync0 syncpeer 10.0.0.2 syncdev enc0
-.Ed
+keyword.
 .Pp
 It is important that the pfsync traffic be well secured
 as there is no authentication on the protocol and it would
 be trivial to spoof packets which create states, bypassing the pf ruleset.
 Either run the pfsync protocol on a trusted network \- ideally a network
-dedicated to pfsync messages such as a crossover cable between two firewalls,
-or specify a peer address and protect the traffic with
-.Xr ipsec 4 .
+dedicated to pfsync messages such as a crossover cable between two firewalls.
 .Pp
 There is a one-to-one correspondence between packets seen by
 .Xr bpf 4
@@ -216,7 +207,6 @@ net.inet.carp.preempt=1
 .Xr carp 4 ,
 .Xr inet 4 ,
 .Xr inet6 4 ,
-.Xr ipsec 4 ,
 .Xr netintro 4 ,
 .Xr pf 4 ,
 .Xr pf.conf 5 ,
index 0ca6313..0b62b36 100644 (file)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man4/safe.4,v 1.7 2006/04/01 10:56:36 brueffer Exp $
 .\"
-.Dd August 28, 2011
+.Dd April 21, 2018
 .Dt SAFE 4
 .Os
 .Sh NAME
@@ -62,8 +62,6 @@ The
 .Nm
 driver registers itself to accelerate DES, Triple-DES, AES, MD5-HMAC,
 SHA1-HMAC, and NULL operations for
-.Xr ipsec 4
-and
 .Xr crypto 4 .
 .Pp
 On all models, the driver registers itself to provide random data to the
@@ -122,7 +120,6 @@ A faster version of the 1141.
 .Xr crypt 3 ,
 .Xr crypto 4 ,
 .Xr intro 4 ,
-.Xr ipsec 4 ,
 .Xr random 4 ,
 .Xr crypto 9
 .Sh BUGS
index 15d5d5b..1c6ab85 100644 (file)
@@ -28,7 +28,7 @@
 .\"     From: @(#)tcp.4        8.1 (Berkeley) 6/5/93
 .\" $FreeBSD: src/share/man/man4/tcp.4,v 1.11.2.14 2002/12/29 16:35:38 schweikh Exp $
 .\"
-.Dd April 17, 2018
+.Dd April 21, 2018
 .Dt TCP 4
 .Os
 .Sh NAME
@@ -475,8 +475,7 @@ address.
 .Xr blackhole 4 ,
 .Xr inet 4 ,
 .Xr intro 4 ,
-.Xr ip 4 ,
-.Xr setkey 8
+.Xr ip 4
 .Rs
 .%A V. Jacobson
 .%A R. Braden
index a5b10fc..4dc0859 100644 (file)
@@ -1,6 +1,5 @@
 .\"     $OpenBSD: txp.4,v 1.8 2001/06/26 02:09:11 pjanzen Exp $
 .\"    $FreeBSD: src/share/man/man4/txp.4,v 1.1.2.2 2001/08/17 13:08:39 ru Exp $
-.\"    $DragonFly: src/share/man/man4/txp.4,v 1.4 2007/02/25 12:03:07 swildner Exp $
 .\"
 .\" Copyright (c) 2001 Jason L. Wright (jason@thought.net)
 .\" All rights reserved.
@@ -31,7 +30,7 @@
 .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd April 15, 2001
+.Dd April 21, 2018
 .Dt TXP 4
 .Os
 .Sh NAME
@@ -75,16 +74,13 @@ and
 transmit
 .Xr ip 4
 checksum offloading.
-There is currently no support for
-transmit
+There is currently no support for transmit
 .Xr tcp 4
 or
 .Xr udp 4
-checksum offloading,
+checksum offloading, nor
 .Xr tcp 4
-segmentation, nor
-.Xr ipsec 4
-acceleration.
+segmentation.
 Note that hardware checksumming is only used when the interface is not
 in
 .Xr bridge 4
index e345ed3..dfb504d 100644 (file)
@@ -1,6 +1,5 @@
 .\"    $OpenBSD: ubsec.4,v 1.18 2002/09/26 07:55:41 miod Exp $
 .\"    $FreeBSD: src/share/man/man4/ubsec.4,v 1.1.2.1 2002/11/21 23:57:24 sam Exp $
-.\"    $DragonFly: src/share/man/man4/ubsec.4,v 1.4 2007/05/12 21:22:10 swildner Exp $
 .\"
 .\" Copyright (c) 2000 Jason L. Wright (jason@thought.net)
 .\" All rights reserved.
@@ -31,7 +30,7 @@
 .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd November 21, 2002
+.Dd April 21, 2018
 .Dt UBSEC 4
 .Os
 .Sh NAME
@@ -72,8 +71,6 @@ The
 .Nm
 driver registers itself to accelerate DES, Triple-DES, MD5-HMAC,
 and SHA1-HMAC operations for
-.Xr ipsec 4
-and
 .Xr crypto 4 .
 .Pp
 On those models which contain a public key engine (almost all of the
@@ -89,7 +86,6 @@ subsystem.
 .Xr crypt 3 ,
 .Xr crypto 4 ,
 .Xr intro 4 ,
-.Xr ipsec 4 ,
 .Xr random 4 ,
 .Xr crypto 9
 .Sh HISTORY
index 4ec0a11..66f3eda 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.197 2003/07/28 13:56:00 mbr Exp $
 .\"
-.Dd March 29, 2018
+.Dd April 21, 2018
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -2477,19 +2477,6 @@ should be large enough to fill as many of the entropy pools in the kernel
 CSPRNG as possible.
 By default, it is set to 16384, which should be able to seed all 32 entropy
 pools in the Fortuna CSPRNG.
-.It Va ipsec_enable
-.Pq Vt bool
-Set to
-.Dq Li YES
-to run
-.Xr setkey 8
-on
-.Va ipsec_file
-at boot time.
-.It Va ipsec_file
-.Pq Vt str
-Configuration file for
-.Xr setkey 8 .
 .It Va dmesg_enable
 .Pq Vt bool
 Set to
index f102938..f30cf29 100644 (file)
@@ -28,7 +28,7 @@
 .\"    @(#)hier.7      8.1 (Berkeley) 6/5/93
 .\" $FreeBSD: src/share/man/man7/hier.7,v 1.29.2.17 2003/01/13 21:43:50 ceri Exp $
 .\"
-.Dd November 25, 2017
+.Dd April 21, 2018
 .Dt HIER 7
 .Os
 .Sh NAME
@@ -233,8 +233,6 @@ see
 C include files for Internet protocol version 6;
 see
 .Xr inet6 4
-.It Pa netkey/
-kernel key-management service
 .It Pa netsmb/
 SMB/CIFS requester
 .It Pa nfs/
index 4b0074f..7eb6d0e 100644 (file)
@@ -17,7 +17,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man9/crypto.9,v 1.14 2007/09/19 16:28:46 brueffer Exp $
 .\"
-.Dd August 21, 2010
+.Dd April 21, 2018
 .Dt CRYPTO 9
 .Os
 .Sh NAME
@@ -166,9 +166,8 @@ For session initialization and teardown there is no callback mechanism used.
 .Pp
 The
 .Fn crypto_newsession
-routine is called by consumers of cryptographic services (such as the
-.Xr ipsec 4
-stack) that wish to establish a new session with the framework.
+routine is called by consumers of cryptographic services
+that wish to establish a new session with the framework.
 On success, the first argument will contain the Session Identifier (SID).
 The second argument contains all the necessary information for
 the driver to establish the session.
@@ -233,9 +232,7 @@ by the device driver processing the request.
 Contains a pointer to another
 .Vt cryptoini
 structure.
-Multiple such structures may be linked to establish multi-algorithm sessions
-.Xr ( ipsec 4
-is an example consumer of such a feature).
+Multiple such structures may be linked to establish multi-algorithm sessions.
 .El
 .Pp
 The
@@ -391,9 +388,7 @@ at the location pointed to by
 The IV length is assumed to be equal to the blocksize of the
 encryption algorithm.
 Some applications that do special
-.Dq "IV cooking" ,
-such as the half-IV mode in
-.Xr ipsec 4 ,
+.Dq "IV cooking"
 can use this flag to indicate that the IV should not be written on the packet.
 This flag is typically used in conjunction with the
 .Dv CRD_F_IV_EXPLICIT
@@ -410,9 +405,8 @@ operations it is pointed to by the
 field.
 This flag is typically used when the IV is calculated
 .Dq "on the fly"
-by the consumer, and does not precede the data (some
-.Xr ipsec 4
-configurations, and the encrypted swap are two such examples).
+by the consumer, and does not precede the data
+(encrypted swap being an example).
 .It Dv CRD_F_KEY_EXPLICIT
 For encryption and authentication (MAC) algorithms, this bit is set when the key
 is explicitly provided by the consumer in the
@@ -437,8 +431,7 @@ framework may re-route requests as a result of full queues or hardware
 failure, as described above.
 .It Va crd_next
 Point to the next descriptor.
-Linked operations are useful in protocols such as
-.Xr ipsec 4 ,
+Linked operations are useful in protocols
 where multiple cryptographic transforms may be applied on the same
 block of data.
 .El
@@ -658,7 +651,6 @@ field.
 most of the framework code
 .El
 .Sh SEE ALSO
-.Xr ipsec 4 ,
 .Xr kmalloc 9 ,
 .Xr sleep 9
 .Sh HISTORY
index 4760495..b920d0c 100644 (file)
@@ -37,7 +37,6 @@ LIBFL?=               "don't use LIBFL, use LIBL"
 LIBFSID?=      ${DESTDIR}${LIBDIR}/libfsid.a
 LIBFTPIO?=     ${DESTDIR}${LIBDIR}/libftpio.a
 LIBHAMMER?=    ${DESTDIR}${LIBDIR}/libhammer.a
-LIBIPSEC?=     ${DESTDIR}${LIBDIR}/libipsec.a
 LIBKCORE?=     ${DESTDIR}${LIBDIR}/libkcore.a
 LIBKICONV?=    ${DESTDIR}${LIBDIR}/libkiconv.a
 LIBKINFO?=     ${DESTDIR}${LIBDIR}/libkinfo.a
index 5498b79..c605378 100644 (file)
@@ -66,16 +66,7 @@ dev/disk/iscsi/initiator/isc_subr.c  optional iscsi_initiator scbus
 dev/disk/iscsi/initiator/iscsi.c       optional iscsi_initiator scbus
 dev/disk/iscsi/initiator/iscsi_subr.c  optional iscsi_initiator scbus
 
-crypto/blowfish/bf_skey.c              optional ipsec ipsec_esp
-crypto/des/des_ecb.c                   optional ipsec ipsec_esp
-crypto/des/des_setkey.c                        optional ipsec ipsec_esp
-crypto/rijndael/rijndael-alg-fst.c     optional ipsec ipsec_esp
-crypto/rijndael/rijndael-api-fst.c     optional ipsec ipsec_esp
-crypto/camellia/camellia.c             optional ipsec ipsec_esp
-crypto/camellia/camellia-api.c         optional ipsec ipsec_esp
-crypto/sha1.c                          optional ipsec
 crypto/sha1.c                          optional carp
-opencrypto/cast.c                      optional ipsec ipsec_esp
 ddb/db_access.c                                optional ddb
 ddb/db_kld.c                           optional ddb
 ddb/db_break.c                         optional ddb
@@ -1562,7 +1553,6 @@ net/raw_cb.c              standard
 net/raw_usrreq.c       standard
 net/route.c            standard
 net/rtsock.c           standard
-net/zlib.c             optional ipsec
 netbt/bt_input.c       optional bluetooth
 netbt/bt_proto.c       optional bluetooth
 netbt/hci_event.c      optional bluetooth
@@ -1797,16 +1787,6 @@ netinet/tcp_syncache.c           optional inet
 netinet/tcp_timer.c            optional inet
 netinet/tcp_usrreq.c           optional inet
 netinet/udp_usrreq.c           optional inet
-netinet6/ah_core.c             optional ipsec
-netinet6/ah_input.c            optional ipsec
-netinet6/ah_output.c           optional ipsec
-netinet6/esp_core.c            optional ipsec ipsec_esp
-netinet6/esp_input.c           optional ipsec ipsec_esp
-netinet6/esp_output.c          optional ipsec ipsec_esp
-netinet6/esp_rijndael.c                optional ipsec ipsec_esp
-netinet6/esp_camellia.c                optional ipsec ipsec_esp
-netinet6/esp_aesctr.c          optional ipsec ipsec_esp
-netinet6/ipsec.c               optional ipsec
 netinet6/dest6.c               optional inet6
 netinet6/frag6.c               optional inet6
 netinet6/icmp6.c               optional inet6
@@ -1821,9 +1801,6 @@ netinet6/ip6_input.c              optional inet6
 netinet6/ip6_mroute.c          optional inet6
 netinet6/ip6_output.c          optional inet6
 netinet6/in6_src.c             optional inet6
-netinet6/ipcomp_core.c         optional ipsec
-netinet6/ipcomp_input.c                optional ipsec
-netinet6/ipcomp_output.c       optional ipsec
 netinet6/in6_pcb.c             optional inet6
 netinet6/in6_proto.c           optional inet6
 netinet6/in6_rmx.c             optional inet6
@@ -1836,21 +1813,6 @@ netinet6/route6.c                optional inet6
 netinet6/scope6.c              optional inet6
 netinet6/udp6_output.c         optional inet6
 netinet6/udp6_usrreq.c         optional inet6
-netproto/ipsec/ipsec.c         optional fast_ipsec
-netproto/ipsec/ipsec_input.c   optional fast_ipsec
-netproto/ipsec/ipsec_mbuf.c    optional fast_ipsec
-netproto/ipsec/ipsec_output.c  optional fast_ipsec
-netproto/ipsec/key.c           optional fast_ipsec
-netproto/ipsec/key_debug.c     optional fast_ipsec
-netproto/ipsec/keysock.c       optional fast_ipsec
-netproto/ipsec/xform_ah.c      optional fast_ipsec
-netproto/ipsec/xform_esp.c     optional fast_ipsec
-netproto/ipsec/xform_ipcomp.c  optional fast_ipsec
-netproto/ipsec/xform_ipip.c    optional fast_ipsec
-netproto/key/key.c             optional ipsec
-netproto/key/key_debug.c       optional ipsec
-netproto/key/keydb.c           optional ipsec
-netproto/key/keysock.c         optional ipsec
 netproto/mpls/mpls_demux.c     optional mpls
 netproto/mpls/mpls_input.c     optional mpls
 netproto/mpls/mpls_output.c    optional mpls
@@ -2239,7 +2201,6 @@ libprop/prop_object.c                     standard
 libprop/prop_stack.c                   standard
 libprop/prop_string.c                  standard
 libprop/prop_rb.c                      standard
-crypto/blowfish/bf_ecb.c               optional ipsec ipsec_esp
 crypto/blowfish/bf_skey.c              optional crypto
 crypto/camellia/camellia.c             optional crypto
 crypto/camellia/camellia-api.c         optional crypto
index 7ed7fe0..db30ea7 100644 (file)
@@ -249,11 +249,6 @@ MROUTING           opt_mrouting.h
 PIM                    opt_mrouting.h
 INET                   opt_inet.h
 INET6                  opt_inet6.h
-IPSEC                  opt_ipsec.h
-IPSEC_ESP              opt_ipsec.h
-IPSEC_DEBUG            opt_ipsec.h
-IPSEC_FILTERGIF                opt_ipsec.h
-FAST_IPSEC             opt_ipsec.h
 IPDIVERT
 DUMMYNET               opt_ipdn.h
 DUMMYNET_DEBUG         opt_ipdn.h
@@ -681,3 +676,8 @@ EVDEV_DEBUG         opt_evdev.h
 # Obsolete options (will be removed in the future)
 #
 FFS_ROOT               opt_dontuse.h
+FAST_IPSEC             opt_dontuse.h
+IPSEC                  opt_dontuse.h
+IPSEC_DEBUG            opt_dontuse.h
+IPSEC_ESP              opt_dontuse.h
+IPSEC_FILTERGIF                opt_dontuse.h
index 5cad5c9..63fc2b7 100644 (file)
@@ -218,36 +218,9 @@ options    UCONSOLE
 #
 # Protocol families:
 #  Only the INET (Internet) family is officially supported in DragonFly.
-#  Source code for the NS (Xerox Network Service) is provided for amusement
-#  value.
 #
 options        INET                    #Internet communications protocols
 options        INET6                   #IPv6 communications protocols
-options        IPSEC                   #IP security
-options        IPSEC_ESP               #IP security (crypto; define w/ IPSEC)
-options        IPSEC_DEBUG             #debug for IP security
-#
-# Set IPSEC_FILTERGIF to force packets coming through a gif tunnel
-# to be processed by any configured packet filtering (ipfw).
-# The default is that packets coming from a tunnel are _not_ processed;
-# they are assumed trusted.
-#
-# Note that enabling this can be problematic as there are no mechanisms
-# in place for distinguishing packets coming out of a tunnel (e.g. no
-# encX devices as found on openbsd).
-#
-#options       IPSEC_FILTERGIF         #filter ipsec packets from a tunnel
-
-#
-# Experimental IPsec implementation that uses the kernel crypto
-# framework.  This cannot be configured together with IPSEC and
-# (currently) supports only IPv4.  To use this you must also
-# configure the crypto device (see below).  Note that with this
-# you get all the IPsec protocols (e.g. there is no FAST_IPSEC_ESP).
-# IPSEC_DEBUG is used, as above, to configure debugging support
-# within the IPsec protocols.
-#
-#options       FAST_IPSEC              #new IPsec
 
 options        MPLS                    #Multi-Protocol Label Switching
 
@@ -417,15 +390,13 @@ options                ACCEPT_FILTER_DATA
 options                ACCEPT_FILTER_HTTP
 
 # TCP_SIGNATURE adds support for RFC 2385 (TCP-MD5) digests. These are
-# carried in TCP option 19. This option is commonly used to protect
-# TCP sessions (e.g. BGP) where IPSEC is not available nor desirable.
+# carried in TCP option 19.
 # This is enabled on a per-socket basis using the TCP_SIGNATURE_ENABLE
 # socket option.
-# This requires the use of 'device crypto', 'options IPSEC'
-# or 'device cryptodev'.
+# This requires the use of 'device crypto' or 'device cryptodev'.
 #
-# XXX disabled for now until building with it (which broke after removing
-#     IPSEC) is fixed
+# XXX disabled for now until building with it is fixed, which broke
+* after removing IPsec.
 #
 #options   TCP_SIGNATURE   #include support for RFC 2385
 
@@ -2031,8 +2002,8 @@ options           DCONS_FORCE_GDB=1       # force to be the gdb device
 # crypto subsystem
 #
 # This is a port of the openbsd crypto framework.  Include this when
-# configuring IPsec and when you have a h/w crypto device to accelerate
-# user applications that link to openssl.
+# you have a h/w crypto device to accelerate user applications that
+# link to openssl.
 #
 # Drivers are ports from openbsd with some simple enhancements that have
 # been fed back to openbsd (and hopefully will be included).
index 9d73176..feac3e9 100644 (file)
@@ -32,10 +32,6 @@ options              ALTQ_FAIRQ      #fair queue
 #options        ALTQ_NOPCC      #don't use processor cycle counter
 options         ALTQ_DEBUG      #for debugging
 
-options                IPSEC                   #IP security
-options                IPSEC_ESP               #IP security (crypto; define w/ IPSEC)
-options                IPSEC_DEBUG             #debug for IP security
-
 options                HAMMER
 options                HAMMER2                 #HAMMER2 filesystem
 options                NULLFS                  #NULL filesystem
diff --git a/sys/crypto/blowfish/bf_ecb.c b/sys/crypto/blowfish/bf_ecb.c
deleted file mode 100644 (file)
index adf4dbd..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*     $FreeBSD: src/sys/crypto/blowfish/bf_ecb.c,v 1.1 2003/10/13 19:26:08 ume Exp $  */
-
-/* crypto/bf/bf_ecb.c */
-
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- *
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <sys/types.h>
-#include <crypto/blowfish/blowfish.h>
-#include <crypto/blowfish/bf_locl.h>
-
-/* Blowfish as implemented from 'Blowfish: Springer-Verlag paper'
- * (From LECTURE NOTES IN COMPUTER SCIENCE 809, FAST SOFTWARE ENCRYPTION,
- * CAMBRIDGE SECURITY WORKSHOP, CAMBRIDGE, U.K., DECEMBER 9-11, 1993)
- */
-
-void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,
-            BF_KEY *key, int encrypt)
-       {
-       BF_LONG l,d[2];
-
-       n2l(in,l); d[0]=l;
-       n2l(in,l); d[1]=l;
-       if (encrypt)
-               BF_encrypt(d,key);
-       else
-               BF_decrypt(d,key);
-       l=d[0]; l2n(l,out);
-       l=d[1]; l2n(l,out);
-       l=d[0]=d[1]=0;
-       }
index d927af2..a0d2579 100644 (file)
@@ -470,9 +470,6 @@ pfsync_input(struct mbuf *m, ...)
        struct pfsync_state_clr *cp;
        struct pfsync_state_upd_req *rup;
        struct pfsync_state_bus *bus;
-#ifdef IPSEC
-       struct pfsync_tdb *pt;
-#endif
        struct in_addr src;
        struct mbuf *mp;
        int iplen, action, error, i, count, offp, sfail, stale = 0;
@@ -997,20 +994,6 @@ pfsync_input(struct mbuf *m, ...)
                        break;
                }
                break;
-#ifdef IPSEC
-       case PFSYNC_ACT_TDB_UPD:
-               if ((mp = m_pulldown(m, iplen + sizeof(*ph),
-                   count * sizeof(*pt), &offp)) == NULL) {
-                       pfsyncstats.pfsyncs_badlen++;
-                       return;
-               }
-               crit_enter();
-               for (i = 0, pt = (struct pfsync_tdb *)(mp->m_data + offp);
-                   i < count; i++, pt++)
-                       pfsync_update_net_tdb(pt);
-               crit_exit();
-               break;
-#endif
        }
 
 done:
diff --git a/sys/net/pfkeyv2.h b/sys/net/pfkeyv2.h
deleted file mode 100644 (file)
index e94e123..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/*     $FreeBSD: src/sys/net/pfkeyv2.h,v 1.14.2.1 2007/12/07 08:45:28 gnn Exp $        */
-/*     $KAME: pfkeyv2.h,v 1.37 2003/09/06 05:15:43 itojun Exp $        */
-
-/*-
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * This file has been derived rfc 2367,
- * And added some flags of SADB_KEY_FLAGS_ as SADB_X_EXT_.
- *     sakane@ydc.co.jp
- */
-
-#ifndef _NET_PFKEYV2_H_
-#define _NET_PFKEYV2_H_
-
-#ifndef _SYS_TYPES_H_
-#include <sys/types.h>
-#endif
-
-/*
-This file defines structures and symbols for the PF_KEY Version 2
-key management interface. It was written at the U.S. Naval Research
-Laboratory. This file is in the public domain. The authors ask that
-you leave this credit intact on any copies of this file.
-*/
-#ifndef __PFKEY_V2_H
-#define __PFKEY_V2_H 1
-
-#define PF_KEY_V2 2
-#define PFKEYV2_REVISION        199806L
-
-#define SADB_RESERVED    0
-#define SADB_GETSPI      1
-#define SADB_UPDATE      2
-#define SADB_ADD         3
-#define SADB_DELETE      4
-#define SADB_GET         5
-#define SADB_ACQUIRE     6
-#define SADB_REGISTER    7
-#define SADB_EXPIRE      8
-#define SADB_FLUSH       9
-#define SADB_DUMP        10
-#define SADB_X_PROMISC   11
-#define SADB_X_PCHANGE   12
-
-#define SADB_X_SPDUPDATE  13
-#define SADB_X_SPDADD     14
-#define SADB_X_SPDDELETE  15   /* by policy index */
-#define SADB_X_SPDGET     16
-#define SADB_X_SPDACQUIRE 17
-#define SADB_X_SPDDUMP    18
-#define SADB_X_SPDFLUSH   19
-#define SADB_X_SPDSETIDX  20
-#define SADB_X_SPDEXPIRE  21
-#define SADB_X_SPDDELETE2 22   /* by policy id */
-#define SADB_MAX          22
-
-struct sadb_msg {
-  u_int8_t sadb_msg_version;
-  u_int8_t sadb_msg_type;
-  u_int8_t sadb_msg_errno;
-  u_int8_t sadb_msg_satype;
-  u_int16_t sadb_msg_len;
-  u_int16_t sadb_msg_reserved;
-  u_int32_t sadb_msg_seq;
-  u_int32_t sadb_msg_pid;
-};
-
-struct sadb_ext {
-  u_int16_t sadb_ext_len;
-  u_int16_t sadb_ext_type;
-};
-
-struct sadb_sa {
-  u_int16_t sadb_sa_len;
-  u_int16_t sadb_sa_exttype;
-  u_int32_t sadb_sa_spi;
-  u_int8_t sadb_sa_replay;
-  u_int8_t sadb_sa_state;
-  u_int8_t sadb_sa_auth;
-  u_int8_t sadb_sa_encrypt;
-  u_int32_t sadb_sa_flags;
-};
-
-struct sadb_lifetime {
-  u_int16_t sadb_lifetime_len;
-  u_int16_t sadb_lifetime_exttype;
-  u_int32_t sadb_lifetime_allocations;
-  u_int64_t sadb_lifetime_bytes;
-  u_int64_t sadb_lifetime_addtime;
-  u_int64_t sadb_lifetime_usetime;
-};
-
-struct sadb_address {
-  u_int16_t sadb_address_len;
-  u_int16_t sadb_address_exttype;
-  u_int8_t sadb_address_proto;
-  u_int8_t sadb_address_prefixlen;
-  u_int16_t sadb_address_reserved;
-};
-
-struct sadb_key {
-  u_int16_t sadb_key_len;
-  u_int16_t sadb_key_exttype;
-  u_int16_t sadb_key_bits;
-  u_int16_t sadb_key_reserved;
-};
-
-struct sadb_ident {
-  u_int16_t sadb_ident_len;
-  u_int16_t sadb_ident_exttype;
-  u_int16_t sadb_ident_type;
-  u_int16_t sadb_ident_reserved;
-  u_int64_t sadb_ident_id;
-};
-
-struct sadb_sens {
-  u_int16_t sadb_sens_len;
-  u_int16_t sadb_sens_exttype;
-  u_int32_t sadb_sens_dpd;
-  u_int8_t sadb_sens_sens_level;
-  u_int8_t sadb_sens_sens_len;
-  u_int8_t sadb_sens_integ_level;
-  u_int8_t sadb_sens_integ_len;
-  u_int32_t sadb_sens_reserved;
-};
-
-struct sadb_prop {
-  u_int16_t sadb_prop_len;
-  u_int16_t sadb_prop_exttype;
-  u_int8_t sadb_prop_replay;
-  u_int8_t sadb_prop_reserved[3];
-};
-
-struct sadb_comb {
-  u_int8_t sadb_comb_auth;
-  u_int8_t sadb_comb_encrypt;
-  u_int16_t sadb_comb_flags;
-  u_int16_t sadb_comb_auth_minbits;
-  u_int16_t sadb_comb_auth_maxbits;
-  u_int16_t sadb_comb_encrypt_minbits;
-  u_int16_t sadb_comb_encrypt_maxbits;
-  u_int32_t sadb_comb_reserved;
-  u_int32_t sadb_comb_soft_allocations;
-  u_int32_t sadb_comb_hard_allocations;
-  u_int64_t sadb_comb_soft_bytes;
-  u_int64_t sadb_comb_hard_bytes;
-  u_int64_t sadb_comb_soft_addtime;
-  u_int64_t sadb_comb_hard_addtime;
-  u_int64_t sadb_comb_soft_usetime;
-  u_int64_t sadb_comb_hard_usetime;
-};
-
-struct sadb_supported {
-  u_int16_t sadb_supported_len;
-  u_int16_t sadb_supported_exttype;
-  u_int32_t sadb_supported_reserved;
-};
-
-struct sadb_alg {
-  u_int8_t sadb_alg_id;
-  u_int8_t sadb_alg_ivlen;
-  u_int16_t sadb_alg_minbits;
-  u_int16_t sadb_alg_maxbits;
-  u_int16_t sadb_alg_reserved;
-};
-
-struct sadb_spirange {
-  u_int16_t sadb_spirange_len;
-  u_int16_t sadb_spirange_exttype;
-  u_int32_t sadb_spirange_min;
-  u_int32_t sadb_spirange_max;
-  u_int32_t sadb_spirange_reserved;
-};
-
-struct sadb_x_kmprivate {
-  u_int16_t sadb_x_kmprivate_len;
-  u_int16_t sadb_x_kmprivate_exttype;
-  u_int32_t sadb_x_kmprivate_reserved;
-};
-
-/*
- * XXX Additional SA Extension.
- * mode: tunnel or transport
- * reqid: to make SA unique nevertheless the address pair of SA are same.
- *        Mainly it's for VPN.
- */
-struct sadb_x_sa2 {
-  u_int16_t sadb_x_sa2_len;
-  u_int16_t sadb_x_sa2_exttype;
-  u_int8_t sadb_x_sa2_mode;
-  u_int8_t sadb_x_sa2_reserved1;
-  u_int16_t sadb_x_sa2_reserved2;
-  u_int32_t sadb_x_sa2_sequence;       /* lowermost 32bit of sequence number */
-  u_int32_t sadb_x_sa2_reqid;
-};
-
-/* XXX Policy Extension */
-/* sizeof(struct sadb_x_policy) == 16 */
-struct sadb_x_policy {
-  u_int16_t sadb_x_policy_len;
-  u_int16_t sadb_x_policy_exttype;
-  u_int16_t sadb_x_policy_type;                /* See policy type of ipsec.h */
-  u_int8_t sadb_x_policy_dir;          /* direction, see ipsec.h */
-  u_int8_t sadb_x_policy_reserved;
-  u_int32_t sadb_x_policy_id;
-  u_int32_t sadb_x_policy_reserved2;
-};
-/*
- * When policy_type == IPSEC, it is followed by some of
- * the ipsec policy request.
- * [total length of ipsec policy requests]
- *     = (sadb_x_policy_len * sizeof(uint64_t) - sizeof(struct sadb_x_policy))
- */
-
-/* XXX IPsec Policy Request Extension */
-/*
- * This structure is aligned 8 bytes.
- */
-struct sadb_x_ipsecrequest {
-  u_int16_t sadb_x_ipsecrequest_len;   /* structure length in 64 bits. */
-  u_int16_t sadb_x_ipsecrequest_proto; /* See ipsec.h */
-  u_int8_t sadb_x_ipsecrequest_mode;   /* See IPSEC_MODE_XX in ipsec.h. */
-  u_int8_t sadb_x_ipsecrequest_level;  /* See IPSEC_LEVEL_XX in ipsec.h */
-  u_int16_t sadb_x_ipsecrequest_reqid; /* See ipsec.h */
-
-  /*
-   * followed by source IP address of SA, and immediately followed by
-   * destination IP address of SA.  These encoded into two of sockaddr
-   * structure without any padding.  Must set each sa_len exactly.
-   * Each of length of the sockaddr structure are not aligned to 64bits,
-   * but sum of x_request and addresses is aligned to 64bits.
-   */
-};
-
-#define SADB_EXT_RESERVED             0
-#define SADB_EXT_SA                   1
-#define SADB_EXT_LIFETIME_CURRENT     2
-#define SADB_EXT_LIFETIME_HARD        3
-#define SADB_EXT_LIFETIME_SOFT        4
-#define SADB_EXT_ADDRESS_SRC          5
-#define SADB_EXT_ADDRESS_DST          6
-#define SADB_EXT_ADDRESS_PROXY        7
-#define SADB_EXT_KEY_AUTH             8
-#define SADB_EXT_KEY_ENCRYPT          9
-#define SADB_EXT_IDENTITY_SRC         10
-#define SADB_EXT_IDENTITY_DST         11
-#define SADB_EXT_SENSITIVITY          12
-#define SADB_EXT_PROPOSAL             13
-#define SADB_EXT_SUPPORTED_AUTH       14
-#define SADB_EXT_SUPPORTED_ENCRYPT    15
-#define SADB_EXT_SPIRANGE             16
-#define SADB_X_EXT_KMPRIVATE          17
-#define SADB_X_EXT_POLICY             18
-#define SADB_X_EXT_SA2                19
-#define SADB_EXT_MAX                  19
-
-#define SADB_SATYPE_UNSPEC     0
-#define SADB_SATYPE_AH         2
-#define SADB_SATYPE_ESP                3
-#define SADB_SATYPE_RSVP       5
-#define SADB_SATYPE_OSPFV2     6
-#define SADB_SATYPE_RIPV2      7
-#define SADB_SATYPE_MIP                8
-#define SADB_X_SATYPE_IPCOMP   9
-/*#define SADB_X_SATYPE_POLICY 10      obsolete, do not reuse */
-#define SADB_X_SATYPE_TCPSIGNATURE     11
-#define SADB_SATYPE_MAX                12
-
-#define SADB_SASTATE_LARVAL   0
-#define SADB_SASTATE_MATURE   1
-#define SADB_SASTATE_DYING    2
-#define SADB_SASTATE_DEAD     3
-#define SADB_SASTATE_MAX      3
-
-#define SADB_SAFLAGS_PFS      1
-
-/* RFC2367 numbers - meets RFC2407 */
-#define SADB_AALG_NONE         0
-#define SADB_AALG_MD5HMAC      2
-#define SADB_AALG_SHA1HMAC     3
-#define SADB_AALG_MAX          252
-/* private allocations - based on RFC2407/IANA assignment */
-#define SADB_X_AALG_SHA2_256   5
-#define SADB_X_AALG_SHA2_384   6
-#define SADB_X_AALG_SHA2_512   7
-#define SADB_X_AALG_RIPEMD160HMAC      8
-#define SADB_X_AALG_AES_XCBC_MAC       9       /* draft-ietf-ipsec-ciph-aes-xcbc-mac-04 */
-/* private allocations should use 249-255 (RFC2407) */
-#define SADB_X_AALG_MD5                249     /* Keyed MD5 */
-#define SADB_X_AALG_SHA                250     /* Keyed SHA */
-#define SADB_X_AALG_NULL       251     /* null authentication */
-#define SADB_X_AALG_TCP_MD5    252     /* Keyed TCP-MD5 (RFC2385) */
-
-/* RFC2367 numbers - meets RFC2407 */
-#define SADB_EALG_NONE         0
-#define SADB_EALG_DESCBC       2
-#define SADB_EALG_3DESCBC      3
-#define SADB_EALG_NULL         11
-#define SADB_EALG_MAX          250
-/* private allocations - based on RFC2407/IANA assignment */
-#define SADB_X_EALG_CAST128CBC 6
-#define SADB_X_EALG_BLOWFISHCBC        7
-#define SADB_X_EALG_RIJNDAELCBC        12
-#define SADB_X_EALG_AES                12
-/* private allocations - based on RFC4312/IANA assignment */
-#define SADB_X_EALG_CAMELLIACBC        22
-
-/* private allocations should use 249-255 (RFC2407) */
-#define SADB_X_EALG_SKIPJACK   249     /*250*/ /* for FAST_IPSEC */
-#define SADB_X_EALG_AESCTR     250     /*249*/ /* draft-ietf-ipsec-ciph-aes-ctr-03 */
-
-/* private allocations - based on RFC2407/IANA assignment */
-#define SADB_X_CALG_NONE       0
-#define SADB_X_CALG_OUI                1
-#define SADB_X_CALG_DEFLATE    2
-#define SADB_X_CALG_LZS                3
-#define SADB_X_CALG_MAX                4
-
-#define SADB_IDENTTYPE_RESERVED   0
-#define SADB_IDENTTYPE_PREFIX     1
-#define SADB_IDENTTYPE_FQDN       2
-#define SADB_IDENTTYPE_USERFQDN   3
-#define SADB_X_IDENTTYPE_ADDR     4
-#define SADB_IDENTTYPE_MAX        4
-
-/* `flags' in sadb_sa structure holds followings */
-#define SADB_X_EXT_NONE                0x0000  /* i.e. new format. */
-#define SADB_X_EXT_OLD         0x0001  /* old format. */
-
-#define SADB_X_EXT_IV4B                0x0010  /* IV length of 4 bytes in use */
-#define SADB_X_EXT_DERIV       0x0020  /* DES derived */
-#define SADB_X_EXT_CYCSEQ      0x0040  /* allowing to cyclic sequence. */
-
-       /* three of followings are exclusive flags each them */
-#define SADB_X_EXT_PSEQ                0x0000  /* sequencial padding for ESP */
-#define SADB_X_EXT_PRAND       0x0100  /* random padding for ESP */
-#define SADB_X_EXT_PZERO       0x0200  /* zero padding for ESP */
-#define SADB_X_EXT_PMASK       0x0300  /* mask for padding flag */
-
-#if 1
-#define SADB_X_EXT_RAWCPI      0x0080  /* use well known CPI (IPComp) */
-#endif
-
-#define SADB_KEY_FLAGS_MAX     0x0fff
-
-/* SPI size for PF_KEYv2 */
-#define PFKEY_SPI_SIZE sizeof(u_int32_t)
-
-/* Identifier for menber of lifetime structure */
-#define SADB_X_LIFETIME_ALLOCATIONS    0
-#define SADB_X_LIFETIME_BYTES          1
-#define SADB_X_LIFETIME_ADDTIME                2
-#define SADB_X_LIFETIME_USETIME                3
-
-/* The rate for SOFT lifetime against HARD one. */
-#define PFKEY_SOFT_LIFETIME_RATE       80
-
-/* Utilities */
-#define PFKEY_ALIGN8(a) (1 + (((a) - 1) | (8 - 1)))
-#define        PFKEY_EXTLEN(msg) \
-       PFKEY_UNUNIT64(((struct sadb_ext *)(msg))->sadb_ext_len)
-#define PFKEY_ADDR_PREFIX(ext) \
-       (((struct sadb_address *)(ext))->sadb_address_prefixlen)
-#define PFKEY_ADDR_PROTO(ext) \
-       (((struct sadb_address *)(ext))->sadb_address_proto)
-#define PFKEY_ADDR_SADDR(ext) \
-       ((struct sockaddr *)((caddr_t)(ext) + sizeof(struct sadb_address)))
-
-/* in 64bits */
-#define        PFKEY_UNUNIT64(a)       ((a) << 3)
-#define        PFKEY_UNIT64(a)         ((a) >> 3)
-
-#endif /* __PFKEY_V2_H */
-
-#endif /* _NET_PFKEYV2_H_ */
index dc5479c..f8c1abe 100644 (file)
@@ -346,8 +346,6 @@ struct sockaddr_in {
 #define        IP_RSVP_VIF_OFF         18   /* unset RSVP per-vif socket */
 #define        IP_PORTRANGE            19   /* int; range to choose for unspec port */
 #define        IP_RECVIF               20   /* bool; receive reception if w/dgram */
-/* for IPSEC */
-#define        IP_IPSEC_POLICY         21   /* int; set/get security policy */
 
 #define        IP_FW_TBL_CREATE        40   /* create ipfw table */
 #define        IP_FW_TBL_DESTROY       41   /* destroy ipfw table */
@@ -457,7 +455,7 @@ struct ip_mreq {
        { 0, 0 }, \
        { 0, 0 }, \
        { 0, 0 }, \
-       { "ipsec", CTLTYPE_NODE }, \
+       { 0, 0 }, \
        { 0, 0 }, \
        { 0, 0 }, \
        { 0, 0 }, \
index 50c4256..a6aa6d4 100644 (file)
@@ -63,7 +63,6 @@
  * $FreeBSD: src/sys/netinet/in_pcb.c,v 1.59.2.27 2004/01/02 04:06:42 ambrisko Exp $
  */
 
-#include "opt_ipsec.h"
 #include "opt_inet6.h"
 
 #include <sys/param.h>
 #include <netinet6/ip6_var.h>
 #endif /* INET6 */
 
-#ifdef IPSEC
-#include <netinet6/ipsec.h>
-#include <netproto/key/key.h>
-#include <netproto/ipsec/esp_var.h>
-#endif
-
-#ifdef FAST_IPSEC
-#if defined(IPSEC) || defined(IPSEC_ESP)
-#error "Bad idea: don't compile with both IPSEC and FAST_IPSEC!"
-#endif
-
-#include <netproto/ipsec/ipsec.h>
-#include <netproto/ipsec/key.h>
-#define        IPSEC
-#endif /* FAST_IPSEC */
-
 #define INP_LOCALGROUP_SIZMIN  8
 #define INP_LOCALGROUP_SIZMAX  256
 
@@ -247,11 +230,6 @@ in_baddynamic(u_int16_t port, u_int16_t proto)
        case IPPROTO_TCP:
                return (DP_ISSET(baddynamicports.tcp, port));
        case IPPROTO_UDP:
-#ifdef IPSEC
-               /* Cannot preset this as it is a sysctl */
-               if (port == udpencap_port)
-                       return (1);
-#endif
                return (DP_ISSET(baddynamicports.udp, port));
        default:
                return (0);
@@ -299,9 +277,6 @@ int
 in_pcballoc(struct socket *so, struct inpcbinfo *pcbinfo)
 {
        struct inpcb *inp;
-#ifdef IPSEC
-       int error;
-#endif
 
        inp = kmalloc(pcbinfo->ipi_size, M_PCB, M_WAITOK|M_ZERO|M_NULLOK);
        if (inp == NULL)
@@ -310,13 +285,6 @@ in_pcballoc(struct socket *so, struct inpcbinfo *pcbinfo)
        inp->inp_gencnt = ++pcbinfo->ipi_gencnt;
        inp->inp_pcbinfo = pcbinfo;
        inp->inp_socket = so;
-#ifdef IPSEC
-       error = ipsec_init_policy(so, &inp->inp_sp);
-       if (error != 0) {
-               kfree(inp, M_PCB);
-               return (error);
-       }
-#endif
 #ifdef INET6
        if (INP_CHECK_SOCKAF(so, AF_INET6)) {
                if (ip6_auto_flowlabel)
@@ -1063,9 +1031,6 @@ in_pcbdetach(struct inpcb *inp)
        struct socket *so = inp->inp_socket;
        struct inpcbinfo *ipi = inp->inp_pcbinfo;
 
-#ifdef IPSEC
-       ipsec4_delete_pcbpolicy(inp);
-#endif /*IPSEC*/
        inp->inp_gencnt = ++ipi->ipi_gencnt;
        KKASSERT((so->so_state & SS_ASSERTINPROG) == 0);
        in_pcbremlists(inp);
index 83d522e..8556681 100644 (file)
@@ -80,8 +80,6 @@
 #endif
 
 #define        in6pcb          inpcb   /* for KAME src sync over BSD*'s */
-#define        in6p_sp         inp_sp  /* for KAME src sync over BSD*'s */
-struct inpcbpolicy;
 
 /*
  * Common structure pcb for internet protocol implementation.
@@ -200,7 +198,7 @@ struct inpcb {
        uint16_t        inp_hashval;    /* valid iff INP_HASH */
        uint16_t        inp_pad;        /* explicit padding */
 
-       struct  inpcbpolicy *inp_sp; /* for IPSEC */
+       void    *inp_unused1;           /* was: for IPSEC */
        u_char  inp_af;                 /* AF_INET or AF_INET6 */
        u_char  inp_ip_ttl;             /* time to live proto */
        u_char  inp_ip_p;               /* protocol proto */
index 54e8815..8f2372e 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "opt_ipdivert.h"
 #include "opt_mrouting.h"
-#include "opt_ipsec.h"
 #include "opt_inet6.h"
 #include "opt_carp.h"
 
  * TCP/IP protocol family: IP, ICMP, UDP, TCP.
  */
 
-#ifdef IPSEC
-#include <netinet6/ipsec.h>
-#include <netinet6/ah.h>
-#ifdef IPSEC_ESP
-#include <netinet6/esp.h>
-#endif
-#include <netinet6/ipcomp.h>
-#endif /* IPSEC */
-
-#ifdef FAST_IPSEC
-#include <netproto/ipsec/ipsec.h>
-#endif /* FAST_IPSEC */
-
 #include <net/netisr.h>                /* for cpu0_soport */
 
 #ifdef CARP
@@ -197,96 +183,6 @@ struct protosw inetsw[] = {
 
        .pr_usrreqs = &rip_usrreqs
     },
-#ifdef IPSEC
-    {
-       .pr_type = SOCK_RAW,
-       .pr_domain = &inetdomain,
-       .pr_protocol = IPPROTO_AH,
-       .pr_flags = PR_ATOMIC|PR_ADDR,
-
-       .pr_input = ah4_input,
-       .pr_output = NULL,
-       .pr_ctlinput = NULL,
-       .pr_ctloutput = NULL,
-
-       .pr_ctlport = NULL,
-       .pr_usrreqs = &nousrreqs
-    },
-#ifdef IPSEC_ESP
-    {
-       .pr_type = SOCK_RAW,
-       .pr_domain = &inetdomain,
-       .pr_protocol = IPPROTO_ESP,
-       .pr_flags = PR_ATOMIC|PR_ADDR,
-
-       .pr_input = esp4_input,
-       .pr_output = NULL,
-       .pr_ctlinput = NULL,
-       .pr_ctloutput = NULL,
-
-       .pr_ctlport = NULL,
-       .pr_usrreqs = &nousrreqs
-    },
-#endif
-    {
-       .pr_type = SOCK_RAW,
-       .pr_domain = &inetdomain,
-       .pr_protocol = IPPROTO_IPCOMP,
-       .pr_flags = PR_ATOMIC|PR_ADDR,
-
-       .pr_input = ipcomp4_input,
-       .pr_output = 0,
-       .pr_ctlinput = NULL,
-       .pr_ctloutput = NULL,
-
-       .pr_ctlport = NULL,
-       .pr_usrreqs = &nousrreqs
-    },
-#endif /* IPSEC */
-#ifdef FAST_IPSEC
-    {
-       .pr_type = SOCK_RAW,
-       .pr_domain = &inetdomain,
-       .pr_protocol = IPPROTO_AH,
-       .pr_flags = PR_ATOMIC|PR_ADDR,
-
-       .pr_input = ipsec4_common_input,
-       .pr_output = NULL,
-       .pr_ctlinput = NULL,
-       .pr_ctloutput = NULL,
-
-       .pr_ctlport = NULL,
-       .pr_usrreqs = &nousrreqs
-    },
-    {
-       .pr_type = SOCK_RAW,
-       .pr_domain = &inetdomain,
-       .pr_protocol = IPPROTO_ESP,
-       .pr_flags = PR_ATOMIC|PR_ADDR,
-
-       .pr_input = ipsec4_common_input,
-       .pr_output = NULL,
-       .pr_ctlinput = NULL,
-       .pr_ctloutput = NULL,
-
-       .pr_ctlport = NULL,
-       .pr_usrreqs = &nousrreqs
-    },
-    {
-       .pr_type = SOCK_RAW,
-       .pr_domain = &inetdomain,
-       .pr_protocol = IPPROTO_IPCOMP,
-       .pr_flags = PR_ATOMIC|PR_ADDR,
-
-       .pr_input = ipsec4_common_input,
-       .pr_output = NULL,
-       .pr_ctlinput = NULL,
-       .pr_ctloutput = NULL,
-
-       .pr_ctlport = NULL,
-       .pr_usrreqs = &nousrreqs
-    },
-#endif /* FAST_IPSEC */
     {
        .pr_type = SOCK_RAW,
        .pr_domain = &inetdomain,
@@ -463,18 +359,6 @@ SYSCTL_NODE(_net_inet, IPPROTO_ICMP,       icmp,   CTLFLAG_RW, 0,  "ICMP");
 SYSCTL_NODE(_net_inet, IPPROTO_UDP,    udp,    CTLFLAG_RW, 0,  "UDP");
 SYSCTL_NODE(_net_inet, IPPROTO_TCP,    tcp,    CTLFLAG_RW, 0,  "TCP");
 SYSCTL_NODE(_net_inet, IPPROTO_IGMP,   igmp,   CTLFLAG_RW, 0,  "IGMP");
-#ifdef FAST_IPSEC
-/* XXX no protocol # to use, pick something "reserved" */
-SYSCTL_NODE(_net_inet, 253,            ipsec,  CTLFLAG_RW, 0,  "IPSEC");
-SYSCTL_NODE(_net_inet, IPPROTO_AH,     ah,     CTLFLAG_RW, 0,  "AH");
-SYSCTL_NODE(_net_inet, IPPROTO_ESP,    esp,    CTLFLAG_RW, 0,  "ESP");
-SYSCTL_NODE(_net_inet, IPPROTO_IPCOMP, ipcomp, CTLFLAG_RW, 0,  "IPCOMP");
-SYSCTL_NODE(_net_inet, IPPROTO_IPIP,   ipip,   CTLFLAG_RW, 0,  "IPIP");
-#else
-#ifdef IPSEC
-SYSCTL_NODE(_net_inet, IPPROTO_AH,     ipsec,  CTLFLAG_RW, 0,  "IPSEC");
-#endif /* IPSEC */
-#endif /* !FAST_IPSEC */
 SYSCTL_NODE(_net_inet, IPPROTO_RAW,    raw,    CTLFLAG_RW, 0,  "RAW");
 #ifdef IPDIVERT
 SYSCTL_NODE(_net_inet, IPPROTO_DIVERT, divert, CTLFLAG_RW, 0,  "DIVERT");
index 273f172..9b77b92 100644 (file)
@@ -33,7 +33,6 @@
 
 #include "opt_inet.h"
 #include "opt_ipdivert.h"
-#include "opt_ipsec.h"
 
 #ifndef INET
 #error "IPDIVERT requires INET."
index 9d7920d..28024fe 100644 (file)
@@ -30,8 +30,6 @@
  * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.39.2.19 2003/01/24 05:11:34 sam Exp $
  */
 
-#include "opt_ipsec.h"
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/mbuf.h>
 #include <netinet/ip_var.h>
 #include <netinet/icmp_var.h>
 
-#ifdef IPSEC
-#include <netinet6/ipsec.h>
-#include <netproto/key/key.h>
-#endif
-
-#ifdef FAST_IPSEC
-#include <netproto/ipsec/ipsec.h>
-#include <netproto/ipsec/key.h>
-#define        IPSEC
-#endif
-
 /*
  * ICMP routines: error generation, receive packet processing, and
  * routines to turnaround packets back to the originator, and
@@ -508,13 +495,7 @@ icmp_redirect_done_handler(netmsg_t nmsg)
        struct netmsg_ctlinput *msg = (struct netmsg_ctlinput *)nmsg;
        struct mbuf *m = msg->m;
        int hlen = msg->hlen;
-#ifdef IPSEC
-       struct sockaddr_in icmpsrc = { sizeof(struct sockaddr_in), AF_INET };
-       struct icmp *icp = mtodoff(m, struct icmp *, hlen);;
 
-       icmpsrc.sin_addr = icp->icmp_ip.ip_dst;
-       key_sa_routechange((struct sockaddr *)&icmpsrc);
-#endif
        rip_input(&m, &hlen, msg->proto);
 }
 
@@ -912,9 +893,6 @@ reflect:
                        return IPPROTO_DONE;
                }
                /* Move on; run rip_input() directly */
-#ifdef IPSEC
-               key_sa_routechange((struct sockaddr *)&icmpsrc);
-#endif
                break;
 
        /*
index 62ae5b0..0862ee5 100644 (file)
@@ -69,7 +69,6 @@
 #include "opt_ipdn.h"
 #include "opt_ipdivert.h"
 #include "opt_ipstealth.h"
-#include "opt_ipsec.h"
 #include "opt_rss.h"
 
 #include <sys/param.h>
 #include <net/ipfw/ip_fw.h>
 #include <net/dummynet/ip_dummynet.h>
 
-#ifdef IPSEC
-#include <netinet6/ipsec.h>
-#include <netproto/key/key.h>
-#endif
-
-#ifdef FAST_IPSEC
-#include <netproto/ipsec/ipsec.h>
-#include <netproto/ipsec/key.h>
-#endif
-
 int rsvp_on = 0;
 static int ip_rsvp_on;
 struct socket *ip_rsvpd;
@@ -468,11 +457,6 @@ ip_input(struct mbuf *m)
        struct m_tag *mtag;
        struct sockaddr_in *next_hop = NULL;
        lwkt_port_t port;
-#ifdef FAST_IPSEC
-       struct tdb_ident *tdbi;
-       struct secpolicy *sp;
-       int error;
-#endif
 
        ASSERT_NETISR_NCPUS(mycpuid);
        M_ASSERTPKTHDR(m);
@@ -597,13 +581,6 @@ ip_input(struct mbuf *m)
                        m_adj(m, ip->ip_len - m->m_pkthdr.len);
                }
        }
-#if defined(IPSEC) && !defined(IPSEC_FILTERGIF)
-       /*
-        * Bypass packet filtering for packets from a tunnel (gif).
-        */
-       if (ipsec_gethist(m, NULL))
-               goto pass;
-#endif
 
        /*
         * IpHack's section.
@@ -831,43 +808,6 @@ pass:
                ipstat.ips_cantforward++;
                m_freem(m);
        } else {
-#ifdef IPSEC
-               /*
-                * Enforce inbound IPsec SPD.
-                */
-               if (ipsec4_in_reject(m, NULL)) {
-                       ipsecstat.in_polvio++;
-                       goto bad;
-               }
-#endif
-#ifdef FAST_IPSEC
-               mtag = m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE, NULL);
-               crit_enter();
-               if (mtag != NULL) {
-                       tdbi = (struct tdb_ident *)m_tag_data(mtag);
-                       sp = ipsec_getpolicy(tdbi, IPSEC_DIR_INBOUND);
-               } else {
-                       sp = ipsec_getpolicybyaddr(m, IPSEC_DIR_INBOUND,
-                                                  IP_FORWARDING, &error);
-               }
-               if (sp == NULL) {       /* NB: can happen if error */
-                       crit_exit();
-                       /*XXX error stat???*/
-                       DPRINTF(("ip_input: no SP for forwarding\n"));  /*XXX*/
-                       goto bad;
-               }
-
-               /*
-                * Check security policy against packet attributes.
-                */
-               error = ipsec_in_reject(sp, m);
-               KEY_FREESP(&sp);
-               crit_exit();
-               if (error) {
-                       ipstat.ips_cantforward++;
-                       goto bad;
-               }
-#endif
                ip_forward(m, using_srcrt, next_hop);
        }
        return;
@@ -915,58 +855,6 @@ ours:
                ip->ip_len -= hlen;
        }
 
-#ifdef IPSEC
-       /*
-        * enforce IPsec policy checking if we are seeing last header.
-        * note that we do not visit this with protocols with pcb layer
-        * code - like udp/tcp/raw ip.
-        */
-       if ((inetsw[ip_protox[ip->ip_p]].pr_flags & PR_LASTHDR) &&
-           ipsec4_in_reject(m, NULL)) {
-               ipsecstat.in_polvio++;
-               goto bad;
-       }
-#endif
-#ifdef FAST_IPSEC
-       /*
-        * enforce IPsec policy checking if we are seeing last header.
-        * note that we do not visit this with protocols with pcb layer
-        * code - like udp/tcp/raw ip.
-        */
-       if (inetsw[ip_protox[ip->ip_p]].pr_flags & PR_LASTHDR) {
-               /*
-                * Check if the packet has already had IPsec processing
-                * done.  If so, then just pass it along.  This tag gets
-                * set during AH, ESP, etc. input handling, before the
-                * packet is returned to the ip input queue for delivery.
-                */
-               mtag = m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE, NULL);
-               crit_enter();
-               if (mtag != NULL) {
-                       tdbi = (struct tdb_ident *)m_tag_data(mtag);
-                       sp = ipsec_getpolicy(tdbi, IPSEC_DIR_INBOUND);
-               } else {
-                       sp = ipsec_getpolicybyaddr(m, IPSEC_DIR_INBOUND,
-                                                  IP_FORWARDING, &error);
-               }
-               if (sp != NULL) {
-                       /*
-                        * Check security policy against packet attributes.
-                        */
-                       error = ipsec_in_reject(sp, m);
-                       KEY_FREESP(&sp);
-               } else {
-                       /* XXX error stat??? */
-                       error = EINVAL;
-DPRINTF(("ip_input: no SP, packet discarded\n"));/*XXX*/
-                       crit_exit();
-                       goto bad;
-               }
-               crit_exit();
-               if (error)
-                       goto bad;
-       }
-#endif /* FAST_IPSEC */
 
        /*
         * We must forward the packet to the correct protocol thread if
@@ -2133,101 +2021,8 @@ ip_forward(struct mbuf *m, boolean_t using_srcrt, struct sockaddr_in *next_hop)
        case EMSGSIZE:
                type = ICMP_UNREACH;
                code = ICMP_UNREACH_NEEDFRAG;
-#ifdef IPSEC
-               /*
-                * If the packet is routed over IPsec tunnel, tell the
-                * originator the tunnel MTU.
-                *      tunnel MTU = if MTU - sizeof(IP) - ESP/AH hdrsiz
-                * XXX quickhack!!!
-                */
-               if (fwd_ro.ro_rt != NULL) {
-                       struct secpolicy *sp = NULL;
-                       int ipsecerror;
-                       int ipsechdr;
-                       struct route *ro;
-
-                       sp = ipsec4_getpolicybyaddr(mcopy,
-                                                   IPSEC_DIR_OUTBOUND,
-                                                   IP_FORWARDING,
-                                                   &ipsecerror);
-
-                       if (sp == NULL)
-                               destmtu = fwd_ro.ro_rt->rt_ifp->if_mtu;
-                       else {
-                               /* count IPsec header size */
-                               ipsechdr = ipsec4_hdrsiz(mcopy,
-                                                        IPSEC_DIR_OUTBOUND,
-                                                        NULL);
-
-                               /*
-                                * find the correct route for outer IPv4
-                                * header, compute tunnel MTU.
-                                *
-                                */
-                               if (sp->req != NULL && sp->req->sav != NULL &&
-                                   sp->req->sav->sah != NULL) {
-                                       ro = &sp->req->sav->sah->sa_route;
-                                       if (ro->ro_rt != NULL &&
-                                           ro->ro_rt->rt_ifp != NULL) {
-                                               destmtu =
-                                                   ro->ro_rt->rt_ifp->if_mtu;
-                                               destmtu -= ipsechdr;
-                                       }
-                               }
-
-                               key_freesp(sp);
-                       }
-               }
-#elif defined(FAST_IPSEC)
-               /*
-                * If the packet is routed over IPsec tunnel, tell the
-                * originator the tunnel MTU.
-                *      tunnel MTU = if MTU - sizeof(IP) - ESP/AH hdrsiz
-                * XXX quickhack!!!
-                */
-               if (fwd_ro.ro_rt != NULL) {
-                       struct secpolicy *sp = NULL;
-                       int ipsecerror;
-                       int ipsechdr;
-                       struct route *ro;
-
-                       sp = ipsec_getpolicybyaddr(mcopy,
-                                                  IPSEC_DIR_OUTBOUND,
-                                                  IP_FORWARDING,
-                                                  &ipsecerror);
-
-                       if (sp == NULL)
-                               destmtu = fwd_ro.ro_rt->rt_ifp->if_mtu;
-                       else {
-                               /* count IPsec header size */
-                               ipsechdr = ipsec4_hdrsiz(mcopy,
-                                                        IPSEC_DIR_OUTBOUND,
-                                                        NULL);
-
-                               /*
-                                * find the correct route for outer IPv4
-                                * header, compute tunnel MTU.
-                                */
-
-                               if (sp->req != NULL &&
-                                   sp->req->sav != NULL &&
-                                   sp->req->sav->sah != NULL) {
-                                       ro = &sp->req->sav->sah->sa_route;
-                                       if (ro->ro_rt != NULL &&
-                                           ro->ro_rt->rt_ifp != NULL) {
-                                               destmtu =
-                                                   ro->ro_rt->rt_ifp->if_mtu;
-                                               destmtu -= ipsechdr;
-                                       }
-                               }
-
-                               KEY_FREESP(&sp);
-                       }
-               }
-#else /* !IPSEC && !FAST_IPSEC */
                if (fwd_ro.ro_rt != NULL)
                        destmtu = fwd_ro.ro_rt->rt_ifp->if_mtu;
-#endif /*IPSEC*/
                ipstat.ips_cantfrag++;
                break;
 
index c97538d..05723f5 100644 (file)
@@ -34,7 +34,6 @@
 
 #include "opt_ipdn.h"
 #include "opt_ipdivert.h"
-#include "opt_ipsec.h"
 #include "opt_mbuf_stress_test.h"
 #include "opt_mpls.h"
 
 
 static MALLOC_DEFINE(M_IPMOPTS, "ip_moptions", "internet multicast options");
 
-#ifdef IPSEC
-#include <netinet6/ipsec.h>
-#include <netproto/key/key.h>
-#ifdef IPSEC_DEBUG
-#include <netproto/key/key_debug.h>
-#else
-#define        KEYDEBUG(lev,arg)
-#endif
-#endif /*IPSEC*/
-
-#ifdef FAST_IPSEC
-#include <netproto/ipsec/ipsec.h>
-#include <netproto/ipsec/xform.h>
-#include <netproto/ipsec/key.h>
-#endif /*FAST_IPSEC*/
-
 #include <net/ipfw/ip_fw.h>
 #include <net/dummynet/ip_dummynet.h>
 
@@ -202,14 +185,6 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
        struct in_addr pkt_dst;
        struct route iproute;
        struct m_tag *mtag;
-#ifdef IPSEC
-       struct secpolicy *sp = NULL;
-       struct socket *so = inp ? inp->inp_socket : NULL;
-#endif
-#ifdef FAST_IPSEC
-       struct secpolicy *sp = NULL;
-       struct tdb_ident *tdbi;
-#endif /* FAST_IPSEC */
        struct sockaddr_in *next_hop = NULL;
        int src_was_INADDR_ANY = 0;     /* as the name says... */
 
@@ -527,255 +502,6 @@ reroute:
        }
 
 sendit:
-#ifdef IPSEC
-       /* get SP for this packet */
-       if (so == NULL)
-               sp = ipsec4_getpolicybyaddr(m, IPSEC_DIR_OUTBOUND, flags, &error);
-       else
-               sp = ipsec4_getpolicybysock(m, IPSEC_DIR_OUTBOUND, so, &error);
-
-       if (sp == NULL) {
-               ipsecstat.out_inval++;
-               goto bad;
-       }
-
-       error = 0;
-
-       /* check policy */
-       switch (sp->policy) {
-       case IPSEC_POLICY_DISCARD:
-               /*
-                * This packet is just discarded.
-                */
-               ipsecstat.out_polvio++;
-               goto bad;
-
-       case IPSEC_POLICY_BYPASS:
-       case IPSEC_POLICY_NONE:
-       case IPSEC_POLICY_TCP:
-               /* no need to do IPsec. */
-               goto skip_ipsec;
-
-       case IPSEC_POLICY_IPSEC:
-               if (sp->req == NULL) {
-                       /* acquire a policy */
-                       error = key_spdacquire(sp);
-                       goto bad;
-               }
-               break;
-
-       case IPSEC_POLICY_ENTRUST:
-       default:
-               kprintf("ip_output: Invalid policy found. %d\n", sp->policy);
-       }
-    {
-       struct ipsec_output_state state;
-       bzero(&state, sizeof state);
-       state.m = m;
-       if (flags & IP_ROUTETOIF) {
-               state.ro = &iproute;
-               bzero(&iproute, sizeof iproute);
-       } else
-               state.ro = ro;
-       state.dst = (struct sockaddr *)dst;
-
-       ip->ip_sum = 0;
-
-       /*
-        * XXX
-        * delayed checksums are not currently compatible with IPsec
-        */
-       if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) {
-               in_delayed_cksum(m);
-               m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA;
-       }
-
-       ip->ip_len = htons(ip->ip_len);
-       ip->ip_off = htons(ip->ip_off);
-
-       error = ipsec4_output(&state, sp, flags);
-
-       m = state.m;
-       if (flags & IP_ROUTETOIF) {
-               /*
-                * if we have tunnel mode SA, we may need to ignore
-                * IP_ROUTETOIF.
-                */
-               if (state.ro != &iproute || state.ro->ro_rt != NULL) {
-                       flags &= ~IP_ROUTETOIF;
-                       ro = state.ro;
-               }
-       } else
-               ro = state.ro;
-       dst = (struct sockaddr_in *)state.dst;
-       if (error) {
-               /* mbuf is already reclaimed in ipsec4_output. */
-               m0 = NULL;
-               switch (error) {
-               case EHOSTUNREACH:
-               case ENETUNREACH:
-               case EMSGSIZE:
-               case ENOBUFS:
-               case ENOMEM:
-                       break;
-               default:
-                       kprintf("ip4_output (ipsec): error code %d\n", error);
-                       /*fall through*/
-               case ENOENT:
-                       /* don't show these error codes to the user */
-                       error = 0;
-                       break;
-               }
-               goto bad;
-       }
-    }
-
-       /* be sure to update variables that are affected by ipsec4_output() */
-       ip = mtod(m, struct ip *);
-#ifdef _IP_VHL
-       hlen = IP_VHL_HL(ip->ip_vhl) << 2;
-#else
-       hlen = ip->ip_hl << 2;
-#endif
-       if (ro->ro_rt == NULL) {
-               if (!(flags & IP_ROUTETOIF)) {
-                       kprintf("ip_output: "
-                               "can't update route after IPsec processing\n");
-                       error = EHOSTUNREACH;   /*XXX*/
-                       goto bad;
-               }
-       } else {
-               ia = ifatoia(ro->ro_rt->rt_ifa);
-               ifp = ro->ro_rt->rt_ifp;
-       }
-
-       /* make it flipped, again. */
-       ip->ip_len = ntohs(ip->ip_len);
-       ip->ip_off = ntohs(ip->ip_off);
-skip_ipsec:
-#endif /*IPSEC*/
-#ifdef FAST_IPSEC
-       /*
-        * Check the security policy (SP) for the packet and, if
-        * required, do IPsec-related processing.  There are two
-        * cases here; the first time a packet is sent through
-        * it will be untagged and handled by ipsec4_checkpolicy.
-        * If the packet is resubmitted to ip_output (e.g. after
-        * AH, ESP, etc. processing), there will be a tag to bypass
-        * the lookup and related policy checking.
-        */
-       mtag = m_tag_find(m, PACKET_TAG_IPSEC_PENDING_TDB, NULL);
-       crit_enter();
-       if (mtag != NULL) {
-               tdbi = (struct tdb_ident *)m_tag_data(mtag);
-               sp = ipsec_getpolicy(tdbi, IPSEC_DIR_OUTBOUND);
-               if (sp == NULL)
-                       error = -EINVAL;        /* force silent drop */
-               m_tag_delete(m, mtag);
-       } else {
-               sp = ipsec4_checkpolicy(m, IPSEC_DIR_OUTBOUND, flags,
-                                       &error, inp);
-       }
-       /*
-        * There are four return cases:
-        *    sp != NULL                    apply IPsec policy
-        *    sp == NULL, error == 0        no IPsec handling needed
-        *    sp == NULL, error == -EINVAL  discard packet w/o error
-        *    sp == NULL, error != 0        discard packet, report error
-        */
-       if (sp != NULL) {
-               /* Loop detection, check if ipsec processing already done */
-               KASSERT(sp->req != NULL, ("ip_output: no ipsec request"));
-               for (mtag = m_tag_first(m); mtag != NULL;
-                    mtag = m_tag_next(m, mtag)) {
-                       if (mtag->m_tag_cookie != MTAG_ABI_COMPAT)
-                               continue;
-                       if (mtag->m_tag_id != PACKET_TAG_IPSEC_OUT_DONE &&
-                           mtag->m_tag_id != PACKET_TAG_IPSEC_OUT_CRYPTO_NEEDED)
-                               continue;
-                       /*
-                        * Check if policy has an SA associated with it.
-                        * This can happen when an SP has yet to acquire
-                        * an SA; e.g. on first reference.  If it occurs,
-                        * then we let ipsec4_process_packet do its thing.
-                        */
-                       if (sp->req->sav == NULL)
-                               break;
-                       tdbi = (struct tdb_ident *)m_tag_data(mtag);
-                       if (tdbi->spi == sp->req->sav->spi &&
-                           tdbi->proto == sp->req->sav->sah->saidx.proto &&
-                           bcmp(&tdbi->dst, &sp->req->sav->sah->saidx.dst,
-                                sizeof(union sockaddr_union)) == 0) {
-                               /*
-                                * No IPsec processing is needed, free
-                                * reference to SP.
-                                *
-                                * NB: null pointer to avoid free at
-                                *     done: below.
-                                */
-                               KEY_FREESP(&sp), sp = NULL;
-                               crit_exit();
-                               goto spd_done;
-                       }
-               }
-
-               /*
-                * Do delayed checksums now because we send before
-                * this is done in the normal processing path.
-                */
-               if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) {
-                       in_delayed_cksum(m);
-                       m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA;
-               }
-
-               ip->ip_len = htons(ip->ip_len);
-               ip->ip_off = htons(ip->ip_off);
-
-               /* NB: callee frees mbuf */
-               error = ipsec4_process_packet(m, sp->req, flags, 0);
-               /*
-                * Preserve KAME behaviour: ENOENT can be returned
-                * when an SA acquire is in progress.  Don't propagate
-                * this to user-level; it confuses applications.
-                *
-                * XXX this will go away when the SADB is redone.
-                */
-               if (error == ENOENT)
-                       error = 0;
-               crit_exit();
-               goto done;
-       } else {
-               crit_exit();
-
-               if (error != 0) {
-                       /*
-                        * Hack: -EINVAL is used to signal that a packet
-                        * should be silently discarded.  This is typically
-                        * because we asked key management for an SA and
-                        * it was delayed (e.g. kicked up to IKE).
-                        */
-                       if (error == -EINVAL)
-                               error = 0;
-                       goto bad;
-               } else {
-                       /* No IPsec processing for this packet. */
-               }
-#ifdef notyet
-               /*
-                * If deferred crypto processing is needed, check that
-                * the interface supports it.
-                */
-               mtag = m_tag_find(m, PACKET_TAG_IPSEC_OUT_CRYPTO_NEEDED, NULL);
-               if (mtag != NULL && !(ifp->if_capenable & IFCAP_IPSEC)) {
-                       /* notify IPsec to do its own crypto */
-                       ipsp_skipcrypto_unmark((struct tdb_ident *)m_tag_data(mtag));
-                       error = EHOSTUNREACH;
-                       goto bad;
-               }
-#endif
-       }
-spd_done:
-#endif /* FAST_IPSEC */
 
        /* We are already being fwd'd from a firewall. */
        if (next_hop != NULL)
@@ -951,11 +677,6 @@ pass:
                        IFA_STAT_INC(&ia->ia_ifa, obytes, m->m_pkthdr.len);
                }
 
-#ifdef IPSEC
-               /* clean ipsec history once it goes out of the node */
-               ipsec_delaux(m);
-#endif
-
 #ifdef MBUF_STRESS_TEST
                if (mbuf_frag_size && m->m_pkthdr.len > mbuf_frag_size) {
                        struct mbuf *m1, *m2;
@@ -1013,10 +734,6 @@ pass:
        for (; m; m = m0) {
                m0 = m->m_nextpkt;
                m->m_nextpkt = NULL;
-#ifdef IPSEC
-               /* clean ipsec history once it goes out of the node */
-               ipsec_delaux(m);
-#endif
                if (error == 0) {
                        /* Record statistics for this interface address. */
                        if (ia != NULL) {
@@ -1043,17 +760,6 @@ done:
                RTFREE(ro->ro_rt);
                ro->ro_rt = NULL;
        }
-#ifdef IPSEC
-       if (sp != NULL) {
-               KEYDEBUG(KEYDEBUG_IPSEC_STAMP,
-                       kprintf("DP ip_output call free SP:%p\n", sp));
-               key_freesp(sp);
-       }
-#endif
-#ifdef FAST_IPSEC
-       if (sp != NULL)
-               KEY_FREESP(&sp);
-#endif
        return (error);
 bad:
        m_freem(m);
@@ -1510,28 +1216,6 @@ ip_ctloutput(netmsg_t msg)
                        }
                        break;
 
-#if defined(IPSEC) || defined(FAST_IPSEC)
-               case IP_IPSEC_POLICY:
-               {
-                       caddr_t req;
-                       size_t len = 0;
-                       int priv;
-                       struct mbuf *m;
-                       int optname;
-
-                       if ((error = soopt_getm(sopt, &m)) != 0) /* XXX */
-                               break;
-                       soopt_to_mbuf(sopt, m);
-                       priv = (sopt->sopt_td != NULL &&
-                               priv_check(sopt->sopt_td, PRIV_ROOT) != 0) ? 0 : 1;
-                       req = mtod(m, caddr_t);
-                       len = m->m_len;
-                       optname = sopt->sopt_name;
-                       error = ipsec4_set_policy(inp, optname, req, len, priv);
-                       m_freem(m);
-                       break;