blob: 072ca88457942479a01b8c011a5219581ee5b786 [file] [log] [blame] [raw]
#!/bin/sh
#
# Install IPFilter into the source tree of OpenBSD 3.0
#
if [ $# -eq 1 ] ; then
if [ "$1" = "-d" ] ; then
debug=echo
fi
fi
copyfiles() {
while [ $# -gt 0 ] ; do
if [ X"$1" = X"\\" ] ; then
:
elif [ -f $IPFDIR/$1 ] ; then
$debug cp -p $IPFDIR/$1 .
elif [ -f $IPFDIR/man/$1 ] ; then
$debug cp -p $IPFDIR/man/$1 .
elif [ -f $IPFDIR/iplang/$1 ] ; then
$debug cp -p $IPFDIR/iplang/$1 .
elif [ -f $IPFDIR/ipsend/$1 ] ; then
$debug cp -p $IPFDIR/ipsend/$1 .
else
echo "Could not find $IPFDIR/$1"
fi
shift
done
}
prep() {
$debug mkdir $1
$debug cd $1
}
IPFDIR=`pwd`
SRC=/usr/src
#
# 3 Programs into /sbin: ipf, ipfstat, ipnat
#
cd $SRC/sbin
/bin/rm -rf ipf ipfstat ipnat
prep ipf
MFILES="ipf.8 ipf.4 ipf.5 ipl.4"
SFILES="ipf.c parse.c opt.c facpri.c common.c"
IFILES="ipf.h facpri.h"
if [ X$debug = X ] ; then
OFILE=Makefile
else
OFILE=/dev/tty
fi
cat > ${OFILE} << __EOF__
# $OpenBSD: Makefile,v 1.10 2001/01/17 05:00:57 fgsch Exp $
PROG= ipf
MAN= ${MFILES}
SRCS= ${SFILES}
CFLAGS+=-DUSE_INET6 -I\${.CURDIR}/../../sys/netinet
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
# Setup ipfstat(8)
#
prep ../ipfstat
MFILES=ipfstat.8
SFILES="fils.c parse.c opt.c kmem.c facpri.c common.c printstate.c"
IFILES=kmem.h
cat > ${OFILE} << __EOF__
# $OpenBSD: Makefile,v 1.8 2001/02/13 01:12:33 fgsch Exp $
PROG= ipfstat
MAN= ${MFILES}
SRCS= ${SFILES}
.PATH: \${.CURDIR}/../../sbin/ipf
CFLAGS+=-DUSE_INET6 -I\${.CURDIR}/../../sbin/ipf -DSTATETOP \\
-I\${.CURDIR}/../../sys/netinet
DPADD= \${LIBCURSES}
LDADD= -lcurses -lkvm
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
# Setup ipnat(8)
#
prep ../ipnat
MFILES="ipnat.8 ipnat.4 ipnat.5"
SFILES="ipnat.c kmem.c natparse.c common.c printnat.c"
IFILES=
cat > ${OFILE} << __EOF__
# $OpenBSD: Makefile,v 1.10 2001/01/17 05:01:01 fgsch Exp $
PROG= ipnat
MAN= ${MFILES}
SRCS= ${SFILES}
.PATH: \${.CURDIR}/../ipfstat \${.CURDIR}/../ipf
CFLAGS+=-DUSE_INET6 -I\${.CURDIR}/../../sbin/ipfstat -I\${.CURDIR}/../ipf \\
-I\${.CURDIR}/../../sys/netinet
LDADD= -lkvm
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES
echo "`pwd` done"
#
# Now fix up the top level Makefile
#
cd $SRC/sbin
grep -q ipf Makefile
if [ $? -ne 0 ] ; then
cat <<__EOF__ | patch
*** Makefile.orig Tue Jan 1 15:01:51 2002
--- Makefile Mon Jan 7 20:31:56 2002
***************
*** 34,37 ****
--- 34,40 ----
# Man pages (and manpages to do)
SUBDIR+= fdisk pdisk ancontrol wicontrol wsconsctl
+ # IPFilter
+ SUBDIR+= ipf ipfstat ipnat
+
.include <bsd.subdir.mk>
__EOF__
fi
#
# 3 Programs into /usr/sbin: ipfs, ipfstat, ipmon
# Also, include ipsend suite of tools.
#
cd $SRC/usr.sbin
/bin/rm -rf ipfs ipftest ipmon ipsend
#
# Create directory for ipftest
#
prep ipftest
MFILES=ipftest.1
SFILES="ipt.c fil.c ipft_hx.c ipft_sn.c ipft_ef.c ipft_td.c ipft_pc.c \\
ipft_tx.c misc.c parse.c opt.c ip_frag.c ip_nat.c ip_state.c \\
ip_auth.c ip_fil.c ip_proxy.c facpri.c natparse.c common.c \\
printnat.c printstate.c ip_log.c"
IFILES="ipt.h pcap.h snoop.h kmem.h"
cat > ${OFILE} << __EOF__
# $OpenBSD: Makefile,v 1.9 2001/01/17 06:01:21 fgsch Exp $
PROG= ipftest
MAN= ${MFILES}
SRCS= ${SFILES}
.PATH: \${.CURDIR}/../../sbin/ipf \${.CURDIR}/../../sbin/ipfstat \\
\${.CURDIR}/../../sys/netinet \${.CURDIR}/../../sbin/ipnat
CFLAGS+=-DUSE_INET6 -I\${.CURDIR}/../../sbin/ipf -DIPFILTER_LOG \\
-I\${.CURDIR}/../../sys/netinet -I\${.CURDIR}/../../sys -I\${.CURDIR}
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
# Create directory for ipfs
#
prep ../ipfs
MFILES=ipfs.8
SFILES=ipfs.c
IFILES=
cat > ${OFILE} << __EOF__
# \$OpenBSD: Makefile,v 1.1 2001/01/17 06:31:06 fgsch Exp \$
PROG= ipfs
MAN= ${MFILES}
SRCS= ${SFILES}
CFLAGS+=-DUSE_INET6 -I\${.CURDIR}/../../sbin/ipf \\
-I\${.CURDIR}/../../sys/netinet
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
#
#
prep ../ipmon
MFILES=ipmon.8
SFILES=ipmon.c
IFILES=
cat > ${OFILE} << __EOF__
# \$OpenBSD: Makefile,v 1.4 1998/09/15 10:01:38 pattonme Exp \$
PROG= ipmon
MAN= ${MFILES}
SRCS= ${SFILES}
CFLAGS+=-DUSE_INET6 -I\${.CURDIR}/../../sys/netinet
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
# Create top level directories for ipsend
#
prep ../ipsend
cat > ${OFILE} << __EOF__
# $OpenBSD: Makefile,v 1.4 1997/09/21 11:43:47 deraadt Exp $
SUBDIR= ipsend ipresend iptest
.include <bsd.subdir.mk>
__EOF__
echo "`pwd` done"
prep iplang
copyfiles iplang.h
#
# 1st ipsend program - ipsend itself
#
prep ../ipsend
MFILES="ipsend.1 ipsend.5"
SFILES="ipsend.c ip.c ipsopt.c sbpf.c sock.c 44arp.c iplang_y.y iplang_l.l"
IFILES="ipsend.h iplang.h"
cat > ${OFILE} << __EOF__
# $OpenBSD: Makefile,v 1.3 1998/01/26 19:46:23 weingart Exp $
PROG= ipsend
BINDIR= /usr/sbin
MAN= ${MFILES}
SRCS= ${SFILES}
CFLAGS+= -DDOSOCKET -I\${.CURDIR}/../common -I\${.CURDIR}/../../ipftest \\
-I\${.CURDIR}/../../../sbin/ipf -I\${.CURDIR}/../../../sys/netinet \\
-I\${.CURDIR}/.. -I\${.OBJDIR}
LDADD= -lfl
CLEANFILES+=y.tab.h
.PATH: \${.CURDIR}/../common
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
# 2nd ipsend program - ipresend
#
prep ../ipresend
MFILES=ipresend.1
SFILES="ipresend.c resend.c \\
ipft_ef.c ipft_hx.c ipft_pc.c ipft_sn.c ipft_td.c ipft_tx.c opt.c \\
sock.c 44arp.c sbpf.c ip.c"
IFILES="ipsend.h"
cat > ${OFILE} << __EOF__
# \$OpenBSD: Makefile,v 1.4 1999/02/21 23:11:05 tholo Exp \$
PROG= ipresend
BINDIR= /usr/sbin
MAN= ${MFILES}
SRCS= ${SFILES}
CFLAGS+=-DDOSOCKET -I\${.CURDIR}/../common -I\${.CURDIR}/../../ipftest \\
-I\${.CURDIR}/../../../sbin/ipf \\
-I\${.CURDIR}/../../../sys/netinet -I\${.CURDIR}/..
.PATH: \${.CURDIR}/../common \${.CURDIR}/../../ipftest \\
\${.CURDIR}/../../../sbin/ipf
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
#
# 3rd ipsend program - iptest
#
prep ../iptest
MFILES=iptest.1
SFILES="iptest.c iptests.c ip.c sbpf.c sock.c 44arp.c"
IFILES="ipsend.h"
cat > ${OFILE} << __EOF__
# \$OpenBSD: Makefile,v 1.2 1998/01/26 04:17:08 dgregor Exp \$
PROG= iptest
BINDIR= /usr/sbin
MAN= ${MFILES}
SRCS= ${SFILES}
CFLAGS+=-DDOSOCKET -I\${.CURDIR}/../common -I\${.CURDIR}/../../ipftest \\
-I\${.CURDIR}/../../../sys/netinet \\
-I\${.CURDIR}/../../../sbin/ipf -I\${.CURDIR}/..
.PATH: \${.CURDIR}/../common
.include <bsd.prog.mk>
__EOF__
copyfiles $MFILES $SFILES $IFILES
echo "`pwd` done"
cd $SRC/usr.sbin
grep -q ipmon Makefile
if [ $? -ne 0 ] ; then
cat << __EOF__ | patch
*** Makefile.orig Tue Jan 1 15:06:30 2002
--- Makefile Mon Jan 7 20:34:05 2002
***************
*** 36,39 ****
--- 36,42 ----
SUBDIR+=ypbind yppoll ypset ypserv
.endif
+ # IPFilter
+ SUBDIR+=ipftest ipfs ipmon ipsend
+
.include <bsd.subdir.mk>
__EOF__
fi
echo "Patching base install set"
cd $SRC
cd distrib/sets/lists/base
grep -q ipfstat mi
if [ $? -ne 0 ] ; then
cat << __EOF__ | patch
*** mi.orig Sat Oct 6 03:30:51 2001
--- mi Tue Jan 8 05:45:39 2002
***************
*** 89,94 ****
--- 89,97 ----
./sbin/halt
./sbin/ifconfig
./sbin/init
+ ./sbin/ipf
+ ./sbin/ipfstat
+ ./sbin/ipnat
./sbin/ipsecadm
./sbin/isakmpd
./sbin/kbd
***************
*** 1276,1281 ****
--- 1279,1290 ----
./usr/sbin/ifmcstat
./usr/sbin/inetd
./usr/sbin/iostat
+ ./usr/sbin/ipfs
+ ./usr/sbin/ipftest
+ ./usr/sbin/ipmon
+ ./usr/sbin/ipresend
+ ./usr/sbin/ipsend
+ ./usr/sbin/iptest
./usr/sbin/kadmin
./usr/sbin/kdb_destroy
./usr/sbin/kdb_edit
__EOF__
fi
echo "Patching etc Makefile"
cd $SRC
cd etc
grep -q ipf.conf Makefile
if [ $? -ne 0 ] ; then
cat << __EOF__ | patch
*** Makefile.orig Tue May 28 15:08:50 2002
--- Makefile Tue May 28 15:09:19 2002
***************
*** 14,20 ****
BINGRP= wheel
BIN1= bootptab changelist ccd.conf csh.cshrc csh.login csh.logout \\
daily dhcpd.conf dhcpd.interfaces dm.conf exports ftpusers \\
! ftpchroot gettytab group hosts hosts.lpd inetd.conf \\
ksh.kshrc locate.rc man.conf monthly motd mrouted.conf \\
myname netstart networks newsyslog.conf pf.conf nat.conf \\
phones printcap protocols rbootd.conf rc rc.conf rc.local \\
--- 14,20 ----
BINGRP= wheel
BIN1= bootptab changelist ccd.conf csh.cshrc csh.login csh.logout \\
daily dhcpd.conf dhcpd.interfaces dm.conf exports ftpusers \\
! ftpchroot gettytab group hosts hosts.lpd inetd.conf ipf.conf \\
ksh.kshrc locate.rc man.conf monthly motd mrouted.conf \\
myname netstart networks newsyslog.conf pf.conf nat.conf \\
phones printcap protocols rbootd.conf rc rc.conf rc.local \\
__EOF__
fi
echo "Patching etc mi install set"
cd $SRC
cd distrib/sets/lists/etc
grep -q ipf.conf mi
if [ $? -ne 0 ] ; then
cat << __EOF__ | patch
*** mi.orig Sat Oct 6 03:30:51 2001
--- mi Tue Jan 8 05:45:39 2002
***************
*** 30,35 ****
--- 30,36 ----
./etc/hosts.equiv
./etc/hosts.lpd
./etc/inetd.conf
+ ./etc/ipf.conf
./etc/kerberosIV/README
./etc/kerberosIV/krb.conf
./etc/kerberosIV/krb.equiv
__EOF__
fi
echo "Patching man install set"
cd $SRC
cd distrib/sets/lists/man
grep -q ipfstat mi
if [ $? -ne 0 ] ; then
cat << __EOF__ | patch
*** mi.orig Wed Oct 10 03:28:42 2001
--- mi Tue Jan 8 19:37:54 2002
***************
*** 319,324 ****
--- 319,328 ----
./usr/share/man/cat1/intro.0
./usr/share/man/cat1/ipcrm.0
./usr/share/man/cat1/ipcs.0
+ ./usr/share/man/cat1/ipftest.0
+ ./usr/share/man/cat1/ipresend.0
+ ./usr/share/man/cat1/ipsend.0
+ ./usr/share/man/cat1/iptest.0
./usr/share/man/cat1/jobs.0
./usr/share/man/cat1/join.0
./usr/share/man/cat1/jot.0
***************
*** 1054,1059 ****
--- 1058,1066 ----
./usr/share/man/cat4/ip.0
./usr/share/man/cat4/ip6.0
./usr/share/man/cat4/ipcomp.0
+ ./usr/share/man/cat4/ipf.0
+ ./usr/share/man/cat4/ipl.0
+ ./usr/share/man/cat4/ipnat.0
./usr/share/man/cat4/ipsec.0
./usr/share/man/cat4/isa.0
./usr/share/man/cat4/isapnp.0
***************
*** 1414,1419 ****
--- 1421,1429 ----
./usr/share/man/cat5/info.0
./usr/share/man/cat5/inode.0
./usr/share/man/cat5/intro.0
+ ./usr/share/man/cat5/ipf.0
+ ./usr/share/man/cat5/ipnat.0
+ ./usr/share/man/cat5/ipsend.0
./usr/share/man/cat5/isakmpd.conf.0
./usr/share/man/cat5/isakmpd.policy.0
./usr/share/man/cat5/keynote.0
***************
*** 1657,1662 ****
--- 1667,1677 ----
./usr/share/man/cat8/intro.0
./usr/share/man/cat8/iopctl.0
./usr/share/man/cat8/iostat.0
+ ./usr/share/man/cat8/ipf.0
+ ./usr/share/man/cat8/ipfs.0
+ ./usr/share/man/cat8/ipfstat.0
+ ./usr/share/man/cat8/ipmon.0
+ ./usr/share/man/cat8/ipnat.0
./usr/share/man/cat8/ipsecadm.0
./usr/share/man/cat8/isakmpd.0
./usr/share/man/cat8/kadmin.0
__EOF__
fi
echo Creating etc/ipf.conf
cd $SRC
cd etc
if [ ! -f ipf.conf ] ; then
cat > ipf.conf << __EOF__
#
# See ipf(5) for syntax and examples.
#
# Pass all packets in and out (these are the implicit first two rules.)
# pass in all
# pass out all
__EOF__
fi
exit 0