pf2netbsd revision 1.2 1 1.1 martti #!/bin/sh
2 1.1 martti #
3 1.2 martti # $NetBSD: pf2netbsd,v 1.2 2009/12/02 15:21:37 martti Exp $
4 1.1 martti #
5 1.1 martti # Copyright (c) 2009 The NetBSD Foundation, Inc.
6 1.1 martti # All rights reserved.
7 1.1 martti #
8 1.1 martti # Redistribution and use in source and binary forms, with or without
9 1.1 martti # modification, are permitted provided that the following conditions
10 1.1 martti # are met:
11 1.1 martti # 1. Redistributions of source code must retain the above copyright
12 1.1 martti # notice, this list of conditions and the following disclaimer.
13 1.1 martti # 2. Redistributions in binary form must reproduce the above copyright
14 1.1 martti # notice, this list of conditions and the following disclaimer in the
15 1.1 martti # documentation and/or other materials provided with the distribution.
16 1.1 martti #
17 1.1 martti # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 1.1 martti # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 1.1 martti # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 1.1 martti # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 1.1 martti # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 1.1 martti # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 1.1 martti # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 1.1 martti # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 1.1 martti # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 1.1 martti # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 1.1 martti # POSSIBILITY OF SUCH DAMAGE.
28 1.1 martti #
29 1.1 martti
30 1.1 martti usage()
31 1.1 martti {
32 1.1 martti cat << EOF
33 1.1 martti
34 1.1 martti Usage: `basename $0` [options] srcdir dstdir
35 1.1 martti
36 1.1 martti where
37 1.1 martti
38 1.1 martti -h This help
39 1.1 martti -v Be verbose
40 1.1 martti
41 1.1 martti Example:
42 1.1 martti
43 1.1 martti `basename $0` /tmp/openbsd-4.2 /tmp/netbsd-4.2
44 1.1 martti
45 1.1 martti EOF
46 1.1 martti exit 1
47 1.1 martti }
48 1.1 martti
49 1.1 martti verbose()
50 1.1 martti {
51 1.1 martti ${VERBOSE} && echo $*
52 1.1 martti eval $*
53 1.1 martti }
54 1.1 martti
55 1.1 martti mklist()
56 1.1 martti {
57 1.1 martti # $1 = filename
58 1.1 martti
59 1.1 martti if [ -z "$1" ]; then
60 1.1 martti echo "ERROR: Not enough arguments for mklist!"
61 1.1 martti exit 1
62 1.1 martti fi
63 1.1 martti cat > $1 << EOF
64 1.1 martti etc/pf.conf
65 1.1 martti etc/pf.os
66 1.1 martti libexec/tftp-proxy/filter.c
67 1.1 martti libexec/tftp-proxy/filter.h
68 1.1 martti libexec/tftp-proxy/Makefile
69 1.1 martti libexec/tftp-proxy/tftp-proxy.8
70 1.1 martti libexec/tftp-proxy/tftp-proxy.c
71 1.1 martti sbin/pfctl/Makefile
72 1.1 martti sbin/pfctl/parse.y
73 1.1 martti sbin/pfctl/pfctl.8
74 1.1 martti sbin/pfctl/pfctl_altq.c
75 1.1 martti sbin/pfctl/pfctl.c
76 1.1 martti sbin/pfctl/pfctl.h
77 1.1 martti sbin/pfctl/pfctl_optimize.c
78 1.1 martti sbin/pfctl/pfctl_osfp.c
79 1.1 martti sbin/pfctl/pfctl_parser.c
80 1.1 martti sbin/pfctl/pfctl_parser.h
81 1.1 martti sbin/pfctl/pfctl_qstats.c
82 1.1 martti sbin/pfctl/pfctl_radix.c
83 1.1 martti sbin/pfctl/pfctl_table.c
84 1.1 martti sbin/pfctl/pf_print_state.c
85 1.1 martti sbin/pflogd/Makefile
86 1.1 martti sbin/pflogd/pflogd.8
87 1.1 martti sbin/pflogd/pflogd.c
88 1.1 martti sbin/pflogd/pflogd.h
89 1.1 martti sbin/pflogd/privsep.c
90 1.1 martti sbin/pflogd/privsep_fdpass.c
91 1.1 martti share/man/man4/pf.4
92 1.1 martti share/man/man4/pflog.4
93 1.1 martti share/man/man4/pfsync.4
94 1.1 martti share/man/man5/pf.conf.5
95 1.1 martti share/man/man5/pf.os.5
96 1.1 martti usr.sbin/authpf/authpf.8
97 1.1 martti usr.sbin/authpf/authpf.c
98 1.1 martti usr.sbin/authpf/Makefile
99 1.1 martti usr.sbin/authpf/pathnames.h
100 1.1 martti usr.sbin/ftp-proxy/filter.c
101 1.1 martti usr.sbin/ftp-proxy/filter.h
102 1.1 martti usr.sbin/ftp-proxy/ftp-proxy.8
103 1.1 martti usr.sbin/ftp-proxy/ftp-proxy.c
104 1.1 martti usr.sbin/ftp-proxy/Makefile
105 1.1 martti sys/net/if.c
106 1.1 martti sys/net/if.h
107 1.1 martti sys/net/if_pflog.c
108 1.1 martti sys/net/if_pflog.h
109 1.1 martti sys/net/if_pfsync.c
110 1.1 martti sys/net/if_pfsync.h
111 1.1 martti sys/net/pf.c
112 1.1 martti sys/net/pf_if.c
113 1.1 martti sys/net/pf_ioctl.c
114 1.1 martti sys/net/pf_norm.c
115 1.1 martti sys/net/pf_osfp.c
116 1.1 martti sys/net/pf_ruleset.c
117 1.1 martti sys/net/pf_table.c
118 1.1 martti sys/net/pfvar.h
119 1.1 martti sys/netinet/tcp_subr.c
120 1.1 martti sys/netinet/tcp_var.h
121 1.1 martti EOF
122 1.1 martti }
123 1.1 martti
124 1.1 martti openbsd2netbsd()
125 1.1 martti {
126 1.1 martti # $1 = srcdir
127 1.1 martti # $2 = dstdir
128 1.1 martti
129 1.1 martti if [ -z "$2" ]; then
130 1.1 martti echo "ERROR: Not enough arguments for openbsd2netbsd!"
131 1.1 martti exit 1
132 1.1 martti fi
133 1.1 martti if [ -d $2/dist/pf ]; then
134 1.1 martti echo "ERROR: $2 already exists!"
135 1.1 martti exit 1
136 1.1 martti fi
137 1.1 martti if [ -d "$1/src" ]; then
138 1.1 martti echo "ERROR: Use $1/src as the srcdir!"
139 1.1 martti exit 1
140 1.1 martti fi
141 1.1 martti
142 1.1 martti cd $1 || exit 1
143 1.1 martti
144 1.1 martti # Copy from OpenBSD
145 1.1 martti verbose "mklist /tmp/pf.$$"
146 1.1 martti verbose "mkdir -p $2"
147 1.1 martti verbose "tar -c -T /tmp/pf.$$ -f- | tar -x -f- -C $2"
148 1.1 martti
149 1.1 martti # Some files have different name/location in NetBSD
150 1.1 martti verbose cd $2
151 1.1 martti verbose mkdir -p dist/pf sys/dist/pf
152 1.1 martti
153 1.1 martti verbose cd $2/sys/net
154 1.1 martti verbose mv if.c if_compat.c
155 1.1 martti verbose mv if.h if_compat.h
156 1.1 martti verbose cp pf.c pf_mtag.c
157 1.1 martti verbose cp pfvar.h pf_mtag.h
158 1.1 martti
159 1.1 martti verbose cd $2/sys/netinet
160 1.1 martti verbose mv tcp_subr.c tcp_rndiss.c
161 1.1 martti verbose mv tcp_var.h tcp_rndiss.h
162 1.1 martti
163 1.1 martti verbose cd $2
164 1.1 martti verbose mv etc libexec sbin share usr.sbin dist/pf/
165 1.1 martti
166 1.1 martti verbose cd $2/sys
167 1.1 martti verbose mv net netinet dist/pf/
168 1.1 martti
169 1.1 martti # Remove references to the OpenBSD CVS
170 1.1 martti find $2 -name CVS | xargs rm -rf
171 1.1 martti
172 1.1 martti # # Remove the $'s around various CVS keywords
173 1.1 martti # find $2 -type f | \
174 1.1 martti # while read f
175 1.1 martti # do
176 1.1 martti # sed -e 's/\$\(Id.*\) \$/\1/' \
177 1.1 martti # -e 's/\$\(Date.*\) \$/\1/' \
178 1.1 martti # -e 's/\$\(Header.*\) \$/\1/' \
179 1.1 martti # ${f} > ${f}.fixed
180 1.1 martti # mv ${f}.fixed ${f}
181 1.1 martti # echo "Deactivated CVS keywords from ${f}"
182 1.1 martti # done
183 1.1 martti
184 1.1 martti # Add the NetBSD keyword
185 1.1 martti find $2 -type f -name '*.[chly]' | \
186 1.1 martti grep -v -e if_compat -e tcp_rndiss | \
187 1.1 martti while read f
188 1.1 martti do
189 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
190 1.1 martti cat > /tmp/pf2n.$$ << EOF
191 1.1 martti /* \$NetBSD\$ */
192 1.1 martti EOF
193 1.1 martti cat ${f} >> /tmp/pf2n.$$
194 1.1 martti mv /tmp/pf2n.$$ ${f}
195 1.1 martti )
196 1.1 martti done
197 1.1 martti find $2 -type f -name '*.[0-9]' | \
198 1.1 martti while read f
199 1.1 martti do
200 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
201 1.1 martti cat > /tmp/pf2n.$$ << EOF
202 1.1 martti .\" \$NetBSD\$
203 1.1 martti EOF
204 1.1 martti cat ${f} >> /tmp/pf2n.$$
205 1.1 martti mv /tmp/pf2n.$$ ${f}
206 1.1 martti )
207 1.1 martti done
208 1.1 martti find $2 -type f -name 'faq*' -o -name 'queue*' \
209 1.1 martti -o -name 'ackpri' -o -name 'spamd' | \
210 1.1 martti while read f
211 1.1 martti do
212 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
213 1.1 martti cat > /tmp/pf2n.$$ << EOF
214 1.1 martti # \$NetBSD\$
215 1.1 martti EOF
216 1.1 martti cat ${f} >> /tmp/pf2n.$$
217 1.1 martti mv /tmp/pf2n.$$ ${f}
218 1.1 martti )
219 1.1 martti done
220 1.1 martti find $2 -type f -name 'Makefile' | \
221 1.1 martti while read f
222 1.1 martti do
223 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
224 1.1 martti cat > /tmp/pf2n.$$ << EOF
225 1.1 martti # \$NetBSD\$
226 1.1 martti EOF
227 1.1 martti cat ${f} >> /tmp/pf2n.$$
228 1.1 martti mv /tmp/pf2n.$$ ${f}
229 1.1 martti )
230 1.1 martti done
231 1.1 martti }
232 1.1 martti
233 1.1 martti ##
234 1.1 martti ## MAIN
235 1.1 martti ##
236 1.1 martti VERBOSE=false
237 1.1 martti
238 1.1 martti ARGV=`getopt hv ${*}`
239 1.1 martti [ ${?} != 0 ] && exit 1
240 1.1 martti set -- ${ARGV}
241 1.1 martti for i
242 1.1 martti do
243 1.1 martti case "${i}" in
244 1.1 martti -h)
245 1.1 martti usage
246 1.1 martti shift
247 1.1 martti ;;
248 1.1 martti -v)
249 1.1 martti VERBOSE=true
250 1.1 martti shift
251 1.1 martti ;;
252 1.1 martti --)
253 1.1 martti shift
254 1.1 martti ;;
255 1.1 martti esac
256 1.1 martti done
257 1.1 martti [ $# -ne 2 ] && usage
258 1.1 martti
259 1.1 martti openbsd2netbsd $1 $2
260 1.1 martti rm -f /tmp/pf.$$
261 1.1 martti echo ""
262 1.1 martti echo "The sources-to-be-imported are now in $2"
263 1.1 martti echo ""
264