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