pf2netbsd revision 1.1 1 1.1 martti #!/bin/sh
2 1.1 martti #
3 1.1 martti # $NetBSD: pf2netbsd,v 1.1 2009/12/01 06:27:57 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 share/pf/ackpri
97 1.1 martti share/pf/faq-example1
98 1.1 martti share/pf/faq-example2
99 1.1 martti share/pf/faq-example3
100 1.1 martti share/pf/Makefile
101 1.1 martti share/pf/queue1
102 1.1 martti share/pf/queue2
103 1.1 martti share/pf/queue3
104 1.1 martti share/pf/queue4
105 1.1 martti share/pf/spamd
106 1.1 martti usr.sbin/authpf/authpf.8
107 1.1 martti usr.sbin/authpf/authpf.c
108 1.1 martti usr.sbin/authpf/Makefile
109 1.1 martti usr.sbin/authpf/pathnames.h
110 1.1 martti usr.sbin/ftp-proxy/filter.c
111 1.1 martti usr.sbin/ftp-proxy/filter.h
112 1.1 martti usr.sbin/ftp-proxy/ftp-proxy.8
113 1.1 martti usr.sbin/ftp-proxy/ftp-proxy.c
114 1.1 martti usr.sbin/ftp-proxy/Makefile
115 1.1 martti sys/net/if.c
116 1.1 martti sys/net/if.h
117 1.1 martti sys/net/if_pflog.c
118 1.1 martti sys/net/if_pflog.h
119 1.1 martti sys/net/if_pfsync.c
120 1.1 martti sys/net/if_pfsync.h
121 1.1 martti sys/net/pf.c
122 1.1 martti sys/net/pf_if.c
123 1.1 martti sys/net/pf_ioctl.c
124 1.1 martti sys/net/pf_norm.c
125 1.1 martti sys/net/pf_osfp.c
126 1.1 martti sys/net/pf_ruleset.c
127 1.1 martti sys/net/pf_table.c
128 1.1 martti sys/net/pfvar.h
129 1.1 martti sys/netinet/tcp_subr.c
130 1.1 martti sys/netinet/tcp_var.h
131 1.1 martti EOF
132 1.1 martti }
133 1.1 martti
134 1.1 martti openbsd2netbsd()
135 1.1 martti {
136 1.1 martti # $1 = srcdir
137 1.1 martti # $2 = dstdir
138 1.1 martti
139 1.1 martti if [ -z "$2" ]; then
140 1.1 martti echo "ERROR: Not enough arguments for openbsd2netbsd!"
141 1.1 martti exit 1
142 1.1 martti fi
143 1.1 martti if [ -d $2/dist/pf ]; then
144 1.1 martti echo "ERROR: $2 already exists!"
145 1.1 martti exit 1
146 1.1 martti fi
147 1.1 martti if [ -d "$1/src" ]; then
148 1.1 martti echo "ERROR: Use $1/src as the srcdir!"
149 1.1 martti exit 1
150 1.1 martti fi
151 1.1 martti
152 1.1 martti cd $1 || exit 1
153 1.1 martti
154 1.1 martti # Copy from OpenBSD
155 1.1 martti verbose "mklist /tmp/pf.$$"
156 1.1 martti verbose "mkdir -p $2"
157 1.1 martti verbose "tar -c -T /tmp/pf.$$ -f- | tar -x -f- -C $2"
158 1.1 martti
159 1.1 martti # Some files have different name/location in NetBSD
160 1.1 martti verbose cd $2
161 1.1 martti verbose mkdir -p dist/pf sys/dist/pf
162 1.1 martti
163 1.1 martti verbose cd $2/sys/net
164 1.1 martti verbose mv if.c if_compat.c
165 1.1 martti verbose mv if.h if_compat.h
166 1.1 martti verbose cp pf.c pf_mtag.c
167 1.1 martti verbose cp pfvar.h pf_mtag.h
168 1.1 martti
169 1.1 martti verbose cd $2/sys/netinet
170 1.1 martti verbose mv tcp_subr.c tcp_rndiss.c
171 1.1 martti verbose mv tcp_var.h tcp_rndiss.h
172 1.1 martti
173 1.1 martti verbose cd $2
174 1.1 martti verbose mv etc libexec sbin share usr.sbin dist/pf/
175 1.1 martti
176 1.1 martti verbose cd $2/sys
177 1.1 martti verbose mv net netinet dist/pf/
178 1.1 martti
179 1.1 martti # Remove references to the OpenBSD CVS
180 1.1 martti find $2 -name CVS | xargs rm -rf
181 1.1 martti
182 1.1 martti # # Remove the $'s around various CVS keywords
183 1.1 martti # find $2 -type f | \
184 1.1 martti # while read f
185 1.1 martti # do
186 1.1 martti # sed -e 's/\$\(Id.*\) \$/\1/' \
187 1.1 martti # -e 's/\$\(Date.*\) \$/\1/' \
188 1.1 martti # -e 's/\$\(Header.*\) \$/\1/' \
189 1.1 martti # ${f} > ${f}.fixed
190 1.1 martti # mv ${f}.fixed ${f}
191 1.1 martti # echo "Deactivated CVS keywords from ${f}"
192 1.1 martti # done
193 1.1 martti
194 1.1 martti # Add the NetBSD keyword
195 1.1 martti find $2 -type f -name '*.[chly]' | \
196 1.1 martti grep -v -e if_compat -e tcp_rndiss | \
197 1.1 martti while read f
198 1.1 martti do
199 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
200 1.1 martti cat > /tmp/pf2n.$$ << EOF
201 1.1 martti /* \$NetBSD\$ */
202 1.1 martti EOF
203 1.1 martti cat ${f} >> /tmp/pf2n.$$
204 1.1 martti mv /tmp/pf2n.$$ ${f}
205 1.1 martti )
206 1.1 martti done
207 1.1 martti find $2 -type f -name '*.[0-9]' | \
208 1.1 martti while read f
209 1.1 martti do
210 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
211 1.1 martti cat > /tmp/pf2n.$$ << EOF
212 1.1 martti .\" \$NetBSD\$
213 1.1 martti EOF
214 1.1 martti cat ${f} >> /tmp/pf2n.$$
215 1.1 martti mv /tmp/pf2n.$$ ${f}
216 1.1 martti )
217 1.1 martti done
218 1.1 martti find $2 -type f -name 'faq*' -o -name 'queue*' \
219 1.1 martti -o -name 'ackpri' -o -name 'spamd' | \
220 1.1 martti while read f
221 1.1 martti do
222 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
223 1.1 martti cat > /tmp/pf2n.$$ << EOF
224 1.1 martti # \$NetBSD\$
225 1.1 martti EOF
226 1.1 martti cat ${f} >> /tmp/pf2n.$$
227 1.1 martti mv /tmp/pf2n.$$ ${f}
228 1.1 martti )
229 1.1 martti done
230 1.1 martti find $2 -type f -name 'Makefile' | \
231 1.1 martti while read f
232 1.1 martti do
233 1.1 martti sed 1q < ${f} | grep -q '\$NetBSD' || (
234 1.1 martti cat > /tmp/pf2n.$$ << EOF
235 1.1 martti # \$NetBSD\$
236 1.1 martti EOF
237 1.1 martti cat ${f} >> /tmp/pf2n.$$
238 1.1 martti mv /tmp/pf2n.$$ ${f}
239 1.1 martti )
240 1.1 martti done
241 1.1 martti }
242 1.1 martti
243 1.1 martti ##
244 1.1 martti ## MAIN
245 1.1 martti ##
246 1.1 martti VERBOSE=false
247 1.1 martti
248 1.1 martti ARGV=`getopt hv ${*}`
249 1.1 martti [ ${?} != 0 ] && exit 1
250 1.1 martti set -- ${ARGV}
251 1.1 martti for i
252 1.1 martti do
253 1.1 martti case "${i}" in
254 1.1 martti -h)
255 1.1 martti usage
256 1.1 martti shift
257 1.1 martti ;;
258 1.1 martti -v)
259 1.1 martti VERBOSE=true
260 1.1 martti shift
261 1.1 martti ;;
262 1.1 martti --)
263 1.1 martti shift
264 1.1 martti ;;
265 1.1 martti esac
266 1.1 martti done
267 1.1 martti [ $# -ne 2 ] && usage
268 1.1 martti
269 1.1 martti openbsd2netbsd $1 $2
270 1.1 martti rm -f /tmp/pf.$$
271 1.1 martti echo ""
272 1.1 martti echo "The sources-to-be-imported are now in $2"
273 1.1 martti echo ""
274