|  | #! /bin/sh | 
|  | # | 
|  | #	kinstall/minstall - install patches to kernel sources | 
|  | # | 
|  | # WARNING:  This script should be run exactly once on a virgin system | 
|  | # | 
|  | PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH | 
|  |  | 
|  | argv0=`basename $0` | 
|  | dir=`pwd` | 
|  | karch=`uname -m` | 
|  | archdir="/sys/arch/$karch" | 
|  | confdir="$archdir/conf" | 
|  |  | 
|  | case "$dir" in | 
|  | */OpenBSD ) | 
|  | cd .. | 
|  | ;; | 
|  | esac | 
|  |  | 
|  | echo -n "Backing up existing kernel sources ..." | 
|  | backup="" | 
|  | for i in fil.c ip_fil.[ch] ip_frag.[ch] ip_nat.[ch] ip_state.[ch] ip_fil_compat.h; do | 
|  | if [ -e /sys/netinet/$i ] ; then | 
|  | backup="${backup} ${i}" | 
|  | fi | 
|  | done | 
|  | if [ -n "$backup" ] ; then | 
|  | ( cd /sys/netinet ; tar cf ipfbackup.tar $backup ) | 
|  | fi | 
|  | echo | 
|  |  | 
|  | echo -n "Installing " | 
|  | for i in ip_fil.[ch] fil.c ip_nat.[ch] ip_frag.[ch] ip_state.[ch] ip_proxy.[ch] ip_auth.[ch] ip_log.c ip_compat.h ipl.h ip_ftp_pxy.c ip_rcmd_pxy.c ip_raudio_pxy.c; do | 
|  | echo -n "$i " | 
|  | cp $i /sys/netinet/ | 
|  | chmod 644 /sys/netinet/$i | 
|  | done | 
|  | echo | 
|  |  | 
|  | if [ -f /sys/conf/files ] ; then | 
|  | echo "Patching /sys/conf/files ..." | 
|  | cat OpenBSD/files.diffs | (cd /sys/conf; patch) | 
|  | ip_files=`egrep '^file.*ipfilter' /sys/conf/files | wc -l` | 
|  | if [ $ip_files -lt 8 ] ; then | 
|  | echo "Patching /sys/conf/files ..." | 
|  | cat OpenBSD/files.diffs | (cd /sys/conf; patch) | 
|  | fi | 
|  | fi | 
|  | if [ -f /sys/netinet/ip_fil_compat.h ] ; then | 
|  | echo "Linking /sys/netinet/ip_compat.h to /sys/netinet/ip_fil_compat.h" | 
|  | rm /sys/netinet/ip_fil_compat.h | 
|  | ln -s /sys/netinet/ip_compat.h /sys/netinet/ip_fil_compat.h | 
|  | fi | 
|  |  | 
|  | echo -n "Kernel configuration to update [GENERIC] " | 
|  | read newconfig junk | 
|  |  | 
|  | if [ -n "$newconfig" ] ; then | 
|  | config="$confdir/$newconfig" | 
|  | else | 
|  | newconfig="$confdir/GENERIC" | 
|  | fi | 
|  |  | 
|  | if egrep 'option.*IPFILTER' $confdir/$newconfig > /dev/null 2>&1 ; then | 
|  | echo "$newconfig already contains proper options statement..." | 
|  | echo 'You will now need to build a new kernel.' | 
|  | else | 
|  | echo "Backing up $newconfig to .bak and adding IPFILTER options..." | 
|  | if [ -f $confdir/$newconfig ]; then | 
|  | mv $confdir/$newconfig $confdir/$newconfig.bak | 
|  | fi | 
|  | if [ -d $archdir/compile/$newconfig ]; then | 
|  | mv $archdir/compile/$newconfig $archdir/compile/$newconfig.bak | 
|  | fi | 
|  | awk '{print $0} $2=="INET"{print "options IPFILTER"}' \ | 
|  | $confdir/$newconfig.bak > $confdir/$newconfig | 
|  |  | 
|  | echo 'You will now need to run "config" and build a new kernel.' | 
|  | fi | 
|  |  | 
|  | exit 0 |