11.1Smartti#!/bin/sh 21.1Smartti# 31.2Smartti# $NetBSD: pf2netbsd,v 1.2 2009/12/02 15:21:37 martti Exp $ 41.1Smartti# 51.1Smartti# Copyright (c) 2009 The NetBSD Foundation, Inc. 61.1Smartti# All rights reserved. 71.1Smartti# 81.1Smartti# Redistribution and use in source and binary forms, with or without 91.1Smartti# modification, are permitted provided that the following conditions 101.1Smartti# are met: 111.1Smartti# 1. Redistributions of source code must retain the above copyright 121.1Smartti# notice, this list of conditions and the following disclaimer. 131.1Smartti# 2. Redistributions in binary form must reproduce the above copyright 141.1Smartti# notice, this list of conditions and the following disclaimer in the 151.1Smartti# documentation and/or other materials provided with the distribution. 161.1Smartti# 171.1Smartti# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 181.1Smartti# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 191.1Smartti# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 201.1Smartti# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 211.1Smartti# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 221.1Smartti# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 231.1Smartti# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 241.1Smartti# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 251.1Smartti# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 261.1Smartti# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 271.1Smartti# POSSIBILITY OF SUCH DAMAGE. 281.1Smartti# 291.1Smartti 301.1Smarttiusage() 311.1Smartti{ 321.1Smartti cat << EOF 331.1Smartti 341.1SmarttiUsage: `basename $0` [options] srcdir dstdir 351.1Smartti 361.1Smarttiwhere 371.1Smartti 381.1Smartti-h This help 391.1Smartti-v Be verbose 401.1Smartti 411.1SmarttiExample: 421.1Smartti 431.1Smartti`basename $0` /tmp/openbsd-4.2 /tmp/netbsd-4.2 441.1Smartti 451.1SmarttiEOF 461.1Smartti exit 1 471.1Smartti} 481.1Smartti 491.1Smarttiverbose() 501.1Smartti{ 511.1Smartti ${VERBOSE} && echo $* 521.1Smartti eval $* 531.1Smartti} 541.1Smartti 551.1Smarttimklist() 561.1Smartti{ 571.1Smartti # $1 = filename 581.1Smartti 591.1Smartti if [ -z "$1" ]; then 601.1Smartti echo "ERROR: Not enough arguments for mklist!" 611.1Smartti exit 1 621.1Smartti fi 631.1Smartti cat > $1 << EOF 641.1Smarttietc/pf.conf 651.1Smarttietc/pf.os 661.1Smarttilibexec/tftp-proxy/filter.c 671.1Smarttilibexec/tftp-proxy/filter.h 681.1Smarttilibexec/tftp-proxy/Makefile 691.1Smarttilibexec/tftp-proxy/tftp-proxy.8 701.1Smarttilibexec/tftp-proxy/tftp-proxy.c 711.1Smarttisbin/pfctl/Makefile 721.1Smarttisbin/pfctl/parse.y 731.1Smarttisbin/pfctl/pfctl.8 741.1Smarttisbin/pfctl/pfctl_altq.c 751.1Smarttisbin/pfctl/pfctl.c 761.1Smarttisbin/pfctl/pfctl.h 771.1Smarttisbin/pfctl/pfctl_optimize.c 781.1Smarttisbin/pfctl/pfctl_osfp.c 791.1Smarttisbin/pfctl/pfctl_parser.c 801.1Smarttisbin/pfctl/pfctl_parser.h 811.1Smarttisbin/pfctl/pfctl_qstats.c 821.1Smarttisbin/pfctl/pfctl_radix.c 831.1Smarttisbin/pfctl/pfctl_table.c 841.1Smarttisbin/pfctl/pf_print_state.c 851.1Smarttisbin/pflogd/Makefile 861.1Smarttisbin/pflogd/pflogd.8 871.1Smarttisbin/pflogd/pflogd.c 881.1Smarttisbin/pflogd/pflogd.h 891.1Smarttisbin/pflogd/privsep.c 901.1Smarttisbin/pflogd/privsep_fdpass.c 911.1Smarttishare/man/man4/pf.4 921.1Smarttishare/man/man4/pflog.4 931.1Smarttishare/man/man4/pfsync.4 941.1Smarttishare/man/man5/pf.conf.5 951.1Smarttishare/man/man5/pf.os.5 961.1Smarttiusr.sbin/authpf/authpf.8 971.1Smarttiusr.sbin/authpf/authpf.c 981.1Smarttiusr.sbin/authpf/Makefile 991.1Smarttiusr.sbin/authpf/pathnames.h 1001.1Smarttiusr.sbin/ftp-proxy/filter.c 1011.1Smarttiusr.sbin/ftp-proxy/filter.h 1021.1Smarttiusr.sbin/ftp-proxy/ftp-proxy.8 1031.1Smarttiusr.sbin/ftp-proxy/ftp-proxy.c 1041.1Smarttiusr.sbin/ftp-proxy/Makefile 1051.1Smarttisys/net/if.c 1061.1Smarttisys/net/if.h 1071.1Smarttisys/net/if_pflog.c 1081.1Smarttisys/net/if_pflog.h 1091.1Smarttisys/net/if_pfsync.c 1101.1Smarttisys/net/if_pfsync.h 1111.1Smarttisys/net/pf.c 1121.1Smarttisys/net/pf_if.c 1131.1Smarttisys/net/pf_ioctl.c 1141.1Smarttisys/net/pf_norm.c 1151.1Smarttisys/net/pf_osfp.c 1161.1Smarttisys/net/pf_ruleset.c 1171.1Smarttisys/net/pf_table.c 1181.1Smarttisys/net/pfvar.h 1191.1Smarttisys/netinet/tcp_subr.c 1201.1Smarttisys/netinet/tcp_var.h 1211.1SmarttiEOF 1221.1Smartti} 1231.1Smartti 1241.1Smarttiopenbsd2netbsd() 1251.1Smartti{ 1261.1Smartti # $1 = srcdir 1271.1Smartti # $2 = dstdir 1281.1Smartti 1291.1Smartti if [ -z "$2" ]; then 1301.1Smartti echo "ERROR: Not enough arguments for openbsd2netbsd!" 1311.1Smartti exit 1 1321.1Smartti fi 1331.1Smartti if [ -d $2/dist/pf ]; then 1341.1Smartti echo "ERROR: $2 already exists!" 1351.1Smartti exit 1 1361.1Smartti fi 1371.1Smartti if [ -d "$1/src" ]; then 1381.1Smartti echo "ERROR: Use $1/src as the srcdir!" 1391.1Smartti exit 1 1401.1Smartti fi 1411.1Smartti 1421.1Smartti cd $1 || exit 1 1431.1Smartti 1441.1Smartti # Copy from OpenBSD 1451.1Smartti verbose "mklist /tmp/pf.$$" 1461.1Smartti verbose "mkdir -p $2" 1471.1Smartti verbose "tar -c -T /tmp/pf.$$ -f- | tar -x -f- -C $2" 1481.1Smartti 1491.1Smartti # Some files have different name/location in NetBSD 1501.1Smartti verbose cd $2 1511.1Smartti verbose mkdir -p dist/pf sys/dist/pf 1521.1Smartti 1531.1Smartti verbose cd $2/sys/net 1541.1Smartti verbose mv if.c if_compat.c 1551.1Smartti verbose mv if.h if_compat.h 1561.1Smartti verbose cp pf.c pf_mtag.c 1571.1Smartti verbose cp pfvar.h pf_mtag.h 1581.1Smartti 1591.1Smartti verbose cd $2/sys/netinet 1601.1Smartti verbose mv tcp_subr.c tcp_rndiss.c 1611.1Smartti verbose mv tcp_var.h tcp_rndiss.h 1621.1Smartti 1631.1Smartti verbose cd $2 1641.1Smartti verbose mv etc libexec sbin share usr.sbin dist/pf/ 1651.1Smartti 1661.1Smartti verbose cd $2/sys 1671.1Smartti verbose mv net netinet dist/pf/ 1681.1Smartti 1691.1Smartti # Remove references to the OpenBSD CVS 1701.1Smartti find $2 -name CVS | xargs rm -rf 1711.1Smartti 1721.1Smartti# # Remove the $'s around various CVS keywords 1731.1Smartti# find $2 -type f | \ 1741.1Smartti# while read f 1751.1Smartti# do 1761.1Smartti# sed -e 's/\$\(Id.*\) \$/\1/' \ 1771.1Smartti# -e 's/\$\(Date.*\) \$/\1/' \ 1781.1Smartti# -e 's/\$\(Header.*\) \$/\1/' \ 1791.1Smartti# ${f} > ${f}.fixed 1801.1Smartti# mv ${f}.fixed ${f} 1811.1Smartti# echo "Deactivated CVS keywords from ${f}" 1821.1Smartti# done 1831.1Smartti 1841.1Smartti # Add the NetBSD keyword 1851.1Smartti find $2 -type f -name '*.[chly]' | \ 1861.1Smartti grep -v -e if_compat -e tcp_rndiss | \ 1871.1Smartti while read f 1881.1Smartti do 1891.1Smartti sed 1q < ${f} | grep -q '\$NetBSD' || ( 1901.1Smartti cat > /tmp/pf2n.$$ << EOF 1911.1Smartti/* \$NetBSD\$ */ 1921.1SmarttiEOF 1931.1Smartti cat ${f} >> /tmp/pf2n.$$ 1941.1Smartti mv /tmp/pf2n.$$ ${f} 1951.1Smartti ) 1961.1Smartti done 1971.1Smartti find $2 -type f -name '*.[0-9]' | \ 1981.1Smartti while read f 1991.1Smartti do 2001.1Smartti sed 1q < ${f} | grep -q '\$NetBSD' || ( 2011.1Smartti cat > /tmp/pf2n.$$ << EOF 2021.1Smartti.\" \$NetBSD\$ 2031.1SmarttiEOF 2041.1Smartti cat ${f} >> /tmp/pf2n.$$ 2051.1Smartti mv /tmp/pf2n.$$ ${f} 2061.1Smartti ) 2071.1Smartti done 2081.1Smartti find $2 -type f -name 'faq*' -o -name 'queue*' \ 2091.1Smartti -o -name 'ackpri' -o -name 'spamd' | \ 2101.1Smartti while read f 2111.1Smartti do 2121.1Smartti sed 1q < ${f} | grep -q '\$NetBSD' || ( 2131.1Smartti cat > /tmp/pf2n.$$ << EOF 2141.1Smartti# \$NetBSD\$ 2151.1SmarttiEOF 2161.1Smartti cat ${f} >> /tmp/pf2n.$$ 2171.1Smartti mv /tmp/pf2n.$$ ${f} 2181.1Smartti ) 2191.1Smartti done 2201.1Smartti find $2 -type f -name 'Makefile' | \ 2211.1Smartti while read f 2221.1Smartti do 2231.1Smartti sed 1q < ${f} | grep -q '\$NetBSD' || ( 2241.1Smartti cat > /tmp/pf2n.$$ << EOF 2251.1Smartti# \$NetBSD\$ 2261.1SmarttiEOF 2271.1Smartti cat ${f} >> /tmp/pf2n.$$ 2281.1Smartti mv /tmp/pf2n.$$ ${f} 2291.1Smartti ) 2301.1Smartti done 2311.1Smartti} 2321.1Smartti 2331.1Smartti## 2341.1Smartti## MAIN 2351.1Smartti## 2361.1SmarttiVERBOSE=false 2371.1Smartti 2381.1SmarttiARGV=`getopt hv ${*}` 2391.1Smartti[ ${?} != 0 ] && exit 1 2401.1Smarttiset -- ${ARGV} 2411.1Smarttifor i 2421.1Smarttido 2431.1Smartti case "${i}" in 2441.1Smartti -h) 2451.1Smartti usage 2461.1Smartti shift 2471.1Smartti ;; 2481.1Smartti -v) 2491.1Smartti VERBOSE=true 2501.1Smartti shift 2511.1Smartti ;; 2521.1Smartti --) 2531.1Smartti shift 2541.1Smartti ;; 2551.1Smartti esac 2561.1Smarttidone 2571.1Smartti[ $# -ne 2 ] && usage 2581.1Smartti 2591.1Smarttiopenbsd2netbsd $1 $2 2601.1Smarttirm -f /tmp/pf.$$ 2611.1Smarttiecho "" 2621.1Smarttiecho "The sources-to-be-imported are now in $2" 2631.1Smarttiecho "" 264