kupgrade revision 153877
153024Sguido#!/bin/sh
253024Sguido#
353024SguidoPATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
4145510Sdarrenrargv0=`basename $0`
553024Sguido 
6145510Sdarrenros=`uname -s`
7145510Sdarrenrrev=`uname -r`
8145510Sdarrenrmaj=`expr $rev : '\([0-9]*\)\.'`
9145510Sdarrenrmin=`expr $rev : '[0-9]*\.\([0-9]*\)'`
10145510Sdarrenrsub=`expr $rev : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
11145510Sdarrenr
1253024Sguido# try to bomb out fast if anything fails....
1353024Sguidoset -e
14145510Sdarrenr
15145510Sdarrenrfullrev=`printf '%02d%02d%02d' $maj $min $sub`
1653024Sguidodir=`pwd`
1753024Sguidokarch=`uname -m`
1853024Sguidoarchdir="/sys/arch/$karch"
1992686Sdarrenripfdir=/sys/netinet
2092686Sdarrenrif [ -d /sys/contrib/ipfilter ] ; then
2192686Sdarrenr	ipfdir=/sys/contrib/ipfilter/netinet
2292686Sdarrenrfi
23145510Sdarrenrif [ -d /sys/dist/ipf ] ; then
24145510Sdarrenr	ipfdir=/sys/dist/ipf/netinet
25145510Sdarrenrfi
2653024Sguidoconfdir="$archdir/conf"
27145510Sdarrenrif [ -f /dev/ipnat ] ; then
28145510Sdarrenr	major=`ls -l /dev/ipnat | sed -e 's/.* \([0-9]*\),.*/\1/'`
29145510Sdarrenr	echo "Major number for IP Filter is $major"
30145510Sdarrenrelse
31145510Sdarrenr	major=x
32145510Sdarrenrfi
3353024Sguido 
34153877Sguidoif [ ! -f ip_rules.c -o ! -f ip_rules.h ] ; then
35153877Sguido	echo "Please do a build of ipfilter and then run the following"
36153877Sguido	echo "command to build extra files:"
37153877Sguido	echo
38153877Sguido	echo "make ip_rules.c"
39153877Sguido	exit 1
40153877Sguidofi
41153877Sguido
4253024Sguidoecho -n "Installing "
43145510Sdarrenrfor j in auth frag nat proxy scan state sync pool htable lookup rules; do
44145510Sdarrenr	for i in ip_$j.[ch]; do
45145510Sdarrenr		if [ -f "$i" ] ; then
46145510Sdarrenr			echo -n " $i"
47145510Sdarrenr			cp $i $ipfdir
48145510Sdarrenr			chmod 644 $ipfdir/$i
49145510Sdarrenr		fi
50145510Sdarrenr	done
51145510Sdarrenrdone
52145510Sdarrenr
53145510Sdarrenrcase $os in
54145510SdarrenrSunOS)
55145510Sdarrenr	case `uname -r` in
56145510Sdarrenr	5.*)
57145510Sdarrenr		filc=ip_fil_solaris.c
58145510Sdarrenr		;;
59145510Sdarrenr	4.*)
60145510Sdarrenr		filc=ip_fil_sunos.c
61145510Sdarrenr		;;
62145510Sdarrenr	esac
63145510Sdarrenr	;;
64145510Sdarrenr*BSD)
65145510Sdarrenr	filc=ip_fil_`echo $os | tr A-Z a-z`.c
66145510Sdarrenr	case $os in
67145510Sdarrenr	FreeBSD)
68145510Sdarrenr		cp mlfk_ipl.c $ipfdir/
69145510Sdarrenr		;;
70145510Sdarrenr	*)
71145510Sdarrenr		;;
72145510Sdarrenr	esac
73145510Sdarrenr	;;
74145510Sdarrenresac
75145510Sdarrenr
76145510Sdarrenrif [ -f $ipfdir/$filc ] ; then
77145510Sdarrenr	echo -n "$filc -> $ipfdir/$filc "
78145510Sdarrenr	cp $filc $ipfdir/$filc
79145510Sdarrenr	chmod 644 $ipfdir/$filc
80145510Sdarrenrfi
81145510Sdarrenrif [ -f $ipfdir/ip_fil.c ] ; then
82145510Sdarrenr	echo -n "$filc -> $ipfdir/ip_fil.c "
83145510Sdarrenr	cp $filc $ipfdir/ip_fil.c
84145510Sdarrenr	chmod 644 $ipfdir/ip_fil.c
85145510Sdarrenrfi
86145510Sdarrenr
87145510Sdarrenrfor i in ip_fil.h fil.c ip_log.c ip_compat.h ipl.h ip_*_pxy.c; do
88145510Sdarrenr	echo -n " $i"
8992686Sdarrenr	cp $i $ipfdir
9092686Sdarrenr	chmod 644 $ipfdir/$i
9153024Sguidodone
9253024Sguidoecho ""
93110917Sdarrenrecho -n "Installing into /usr/include/netinet"
94145510Sdarrenrfor j in auth compat fil frag nat proxy scan state sync pool htable lookup; do
95110917Sdarrenr	i=ip_$j.h
96110917Sdarrenr	if [ -f "$i" ] ; then
97110917Sdarrenr		echo -n " $i"
98110917Sdarrenr		cp $i /usr/include/netinet/$i
99110917Sdarrenr		chmod 644 /usr/include/netinet/$i
100110917Sdarrenr	fi
101110917Sdarrenrdone
102110917Sdarrenrfor j in ipl.h; do
103110917Sdarrenr	if [ -f "$j" ] ; then
104110917Sdarrenr		echo -n " $j"
105110917Sdarrenr		cp $j /usr/include/netinet/$j
106110917Sdarrenr		chmod 644 /usr/include/netinet/$j
107110917Sdarrenr	fi
108110917Sdarrenrdone
109110917Sdarrenrecho
110110917Sdarrenr
11153024Sguidoif [ -f /sys/netinet/ip_fil_compat.h ] ; then
11253024Sguido	echo "Linking /sys/netinet/ip_compat.h to /sys/netinet/ip_fil_compat.h"
11353024Sguido	rm /sys/netinet/ip_fil_compat.h
11453024Sguido	ln -s /sys/netinet/ip_compat.h /sys/netinet/ip_fil_compat.h
11553024Sguidofi
116145510Sdarrenr
117145510Sdarrenrif [ $major != x ] ; then
118145510Sdarrenr	if [ ! -e /dev/ipsync ] ; then
119145510Sdarrenr		echo "Creating /dev/ipsync"
120145510Sdarrenr		mknod /dev/ipsync c $major 4
121145510Sdarrenr	fi
122145510Sdarrenr
123145510Sdarrenr	if [ ! -e /dev/ipsync ] ; then
124145510Sdarrenr		echo "Creating /dev/ipscan"
125145510Sdarrenr		mknod /dev/ipsync c $major 5
126145510Sdarrenr	fi
127145510Sdarrenr
128145510Sdarrenr	if [ ! -e /dev/iplookup ] ; then
129145510Sdarrenr		echo "Creating /dev/iplookup"
130145510Sdarrenr		mknod /dev/iplookup c $major 6
131145510Sdarrenr	fi
132145510Sdarrenrfi
133145510Sdarrenr
134145510Sdarrenrset +e
135145510Sdarrenros=`uname -s`
136145510Sdarrenrif [ $os = FreeBSD -a -f /sys/conf/files ] ; then
137145510Sdarrenr	cd /sys/conf
138145510Sdarrenr	if [ -f options ] ; then
139145510Sdarrenr		if [ ! -f options.preipf4 ] ; then
140145510Sdarrenr			mv options options.preipf4
141145510Sdarrenr			cp -p options.preipf4 options
142145510Sdarrenr		fi
143145510Sdarrenr		for i in SCAN SYNC LOOKUP COMPILED; do
144145510Sdarrenr			grep IPFILTER_$i options >/dev/null 2>&1
145145510Sdarrenr			if [ $? -ne 0 ] ; then
146145510Sdarrenr				echo >> options
147145510Sdarrenr				echo "# extra option for IP Filter" >> options
148145510Sdarrenr				echo "IPFILTER_$i	opt_ipfilter.h" >> options
149145510Sdarrenr			fi
150145510Sdarrenr		done
151145510Sdarrenr	fi
152145510Sdarrenr	if [ ! -f files.preipf4 ] ; then
153145510Sdarrenr		mv files files.preipf4
154145510Sdarrenr		cp -p files.preipf4 files
155145510Sdarrenr	fi
156145510Sdarrenr	for i in htable pool lookup; do
157145510Sdarrenr		grep ip_$i.c files >/dev/null 2>&1
158145510Sdarrenr		if [ $? -ne 0 ] ; then
159145510Sdarrenr			echo "contrib/ipfilter/netinet/ip_$i.c	optional ipfilter inet ipfilter_lookup" >> files
160145510Sdarrenr		fi
161145510Sdarrenr	done
162145510Sdarrenr	grep ip_sync.c files >/dev/null 2>&1
163145510Sdarrenr	if [ $? -ne 0 ] ; then
164145510Sdarrenr		echo 'contrib/ipfilter/netinet/ip_sync.c	optional ipfilter inet ipfilter_sync' >> files
165145510Sdarrenr	fi
166145510Sdarrenr	grep ip_scan.c files >/dev/null 2>&1
167145510Sdarrenr	if [ $? -ne 0 ] ; then
168145510Sdarrenr		echo 'contrib/ipfilter/netinet/ip_scan.c	optional ipfilter inet ipfilter_scan' >> files
169145510Sdarrenr	fi
170145510Sdarrenr	grep ip_rules.c files >/dev/null 2>&1
171145510Sdarrenr	if [ $? -ne 0 ] ; then
172145510Sdarrenr		echo 'contrib/ipfilter/netinet/ip_rules.c	optional ipfilter inet ipfilter_compiled' >> files
173145510Sdarrenr	fi
174145510Sdarrenrfi
175145510Sdarrenrif [ $os = NetBSD -a -f /sys/conf/files ] ; then
176145510Sdarrenr	cd /sys/conf
177145510Sdarrenr	if [ ! -f files.preipf4 ] ; then
178145510Sdarrenr		mv files files.preipf4
179145510Sdarrenr		cp -p files.preipf4 files
180145510Sdarrenr	fi
181145510Sdarrenr	if [ $fullrev -ge 010600 -a $fullrev -lt 020000 ] ; then
182145510Sdarrenr		for i in htable pool lookup; do
183145510Sdarrenr			grep ip_$i.c files >/dev/null 2>&1
184145510Sdarrenr			if [ $? -ne 0 ] ; then
185145510Sdarrenr				echo "file	netinet/ip_$i.c	ipfilter & ipfilter_lookup" >> files
186145510Sdarrenr			fi
187145510Sdarrenr		done
188145510Sdarrenr		grep ip_sync.c files >/dev/null 2>&1
189145510Sdarrenr		if [ $? -ne 0 ] ; then
190145510Sdarrenr			echo 'file	netinet/ip_sync.c	ipfilter & ipfilter_sync' >> files
191145510Sdarrenr		fi
192145510Sdarrenr		grep ip_scan.c files >/dev/null 2>&1
193145510Sdarrenr		if [ $? -ne 0 ] ; then
194145510Sdarrenr			echo 'file	netinet/ip_scan.c	ipfilter & ipfilter_scan' >> files
195145510Sdarrenr		fi
196145510Sdarrenr		grep ip_rules.c files >/dev/null 2>&1
197145510Sdarrenr		if [ $? -ne 0 ] ; then
198145510Sdarrenr			echo 'file	netinet/ip_rules.c	ipfilter & ipfilter_compiled' >> files
199145510Sdarrenr		fi
200145510Sdarrenr	fi
201145510Sdarrenrfi
202145510Sdarrenrif [ $os = OpenBSD -a -f /sys/conf/files ] ; then
203145510Sdarrenr	cd /sys/conf
204145510Sdarrenr	if [ ! -f files.preipf4 ] ; then
205145510Sdarrenr		mv files files.preipf4
206145510Sdarrenr		cp -p files.preipf4 files
207145510Sdarrenr	fi
208145510Sdarrenr	if [ $fullrev -ge 030400 ] ; then
209145510Sdarrenr		for i in htable pool lookup; do
210145510Sdarrenr			grep ip_$i.c files >/dev/null 2>&1
211145510Sdarrenr			if [ $? -ne 0 ] ; then
212145510Sdarrenr				echo "file	netinet/ip_$i.c	ipfilter & ipfilter_lookup" >> files
213145510Sdarrenr			fi
214145510Sdarrenr		done
215145510Sdarrenr		grep ip_sync.c files >/dev/null 2>&1
216145510Sdarrenr		if [ $? -ne 0 ] ; then
217145510Sdarrenr			echo 'file	netinet/ip_sync.c	ipfilter & ipfilter_sync' >> files
218145510Sdarrenr		fi
219145510Sdarrenr		grep ip_scan.c files >/dev/null 2>&1
220145510Sdarrenr		if [ $? -ne 0 ] ; then
221145510Sdarrenr			echo 'file	netinet/ip_scan.c	ipfilter & ipfilter_scan' >> files
222145510Sdarrenr		fi
223145510Sdarrenr		grep ip_rules.c files >/dev/null 2>&1
224145510Sdarrenr		if [ $? -ne 0 ] ; then
225145510Sdarrenr			echo 'file	netinet/ip_rules.c	ipfilter & ipfilter_compiled' >> files
226145510Sdarrenr		fi
227145510Sdarrenr	fi
228145510Sdarrenrfi
229145510Sdarrenr
230145510Sdarrenrif [ -f /usr/src/sys/modules/ipfilter/Makefile -a \
231145510Sdarrenr   ! -f /usr/src/sys/modules/ipfilter/Makefile.orig ] ; then
232145510Sdarrenrcat | (cd /usr/src/sys/modules/ipfilter; patch) <<__EOF__
233145510Sdarrenr*** Makefile.orig	Mon Mar 28 09:10:11 2005
234145510Sdarrenr--- Makefile	Mon Mar 28 09:12:51 2005
235145510Sdarrenr***************
236145510Sdarrenr*** 5,13 ****
237145510Sdarrenr  KMOD=	ipl
238145510Sdarrenr  SRCS=	mlfk_ipl.c ip_nat.c ip_frag.c ip_state.c ip_proxy.c ip_auth.c \\
239145510Sdarrenr! 	ip_log.c ip_fil.c fil.c
240145510Sdarrenr  
241145510Sdarrenr  .if !defined(NOINET6)
242145510Sdarrenr  CFLAGS+= -DUSE_INET6
243145510Sdarrenr  .endif
244145510Sdarrenr  CFLAGS+=  -I$${.CURDIR}/../../contrib/ipfilter
245145510Sdarrenr! CFLAGS+= -DIPFILTER=1 -DIPFILTER_LKM -DIPFILTER_LOG -DPFIL_HOOKS
246145510Sdarrenr--- 5,15 ----
247145510Sdarrenr  KMOD=	ipl
248145510Sdarrenr  SRCS=	mlfk_ipl.c ip_nat.c ip_frag.c ip_state.c ip_proxy.c ip_auth.c \\
249145510Sdarrenr! 	ip_log.c ip_fil.c fil.c ip_lookup.c ip_pool.c ip_htable.c \\
250145510Sdarrenr! 	ip_sync.c ip_scan.c ip_rules.c
251145510Sdarrenr  
252145510Sdarrenr  .if !defined(NOINET6)
253145510Sdarrenr  CFLAGS+= -DUSE_INET6
254145510Sdarrenr  .endif
255145510Sdarrenr  CFLAGS+=  -I$${.CURDIR}/../../contrib/ipfilter
256145510Sdarrenr! CFLAGS+= -DIPFILTER=1 -DIPFILTER_LKM -DIPFILTER_LOG -DPFIL_HOOKS \\
257145510Sdarrenr! 	-DIPFILTER_LOOKUP -DIPFILTER_COMPILED
258145510Sdarrenr__EOF__
259145510Sdarrenrfi
26053024Sguidoexit 0
261