#!/bin/bash # set -e kconfig() { file=$1/net/ipv4/netfilter/Kconfig if [ "`grep 'config IP_NF_SET' $file`" ]; then return fi mv $file $file.orig grep -v endmenu $file.orig > $file cat Kconfig.ipset >> $file echo "endmenu" >> $file } config() { file=$1/net/ipv4/netfilter/Config.in if [ "`grep 'CONFIG_IP_NF_SET' $file`" ]; then return fi mv $file $file.orig grep -v endmenu $file.orig > $file cat Config.in.ipset >> $file echo "endmenu" >> $file } makefile() { file=$1/net/ipv4/netfilter/Makefile if [ "`grep CONFIG_IP_NF_SET $file`" ]; then return fi cp $file $file.orig cat Makefile.ipset >> $file } oldmakefile() { file=$1/net/ipv4/netfilter/Makefile if [ "`grep CONFIG_IP_NF_SET $file`" ]; then return fi lineno=`grep -n Rules.make $file | cut -f1 -d:` lineno=$((lineno-1)) head -n $lineno $file > $file.head lineno=$((lineno+1)) tail +$lineno $file > $file.tail cp $file $file.orig cat $file.head Makefile.ipset Makefile.export.ipset $file.tail > $file } tree() { cp include/linux/netfilter_ipv4/* $1/include/linux/netfilter_ipv4/ cp *.c $1/net/ipv4/netfilter/ } if [ -z "$1" ]; then echo "Error: missing kernel directory parameter." exit 1 fi if [ -f $1/net/ipv4/netfilter/Kconfig ]; then tree $1 kconfig $1 makefile $1 elif [ -f $1/net/ipv4/netfilter/Config.in ]; then tree $1 config $1 oldmakefile $1 else echo "Error: The directory $1 doesn't look like a Linux 2.4/2.6 kernel source tree." exit 1 fi