83 lines
2.2 KiB
Bash
83 lines
2.2 KiB
Bash
#! /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
|