diff --git a/Shorewall-common/releasenotes.txt b/Shorewall-common/releasenotes.txt index b05e3c054..f8cb72b6a 100644 --- a/Shorewall-common/releasenotes.txt +++ b/Shorewall-common/releasenotes.txt @@ -7,7 +7,7 @@ Shorewall 4.3.3 Minimun system requirements: - - Kernel 2.6.20 or later with 2.6.25 or later strongly recommended. + - Kernel 2.6.23 or later with 2.6.25 or later strongly recommended. - iptables 1.4.0 or later with 1.4.1 strongly recommended. - Perl 5.10 if you wish to use DNS names in your IPv6 config files. In that case you will also have to install Perl Socket6 support. @@ -31,6 +31,10 @@ Other changes in 4.3.3 3) Traffic shaping is now enabled in Shorewall6. See below. +4) Shorewall6 and Shorewall6 Lite now check the kernel version during + 'start' processing. If the kernel version is less than 2.6.25, a + fatal error is generated. + Migration Issues. None. diff --git a/Shorewall-perl/prog.footer6 b/Shorewall-perl/prog.footer6 index 90dbd05bc..4060c0431 100644 --- a/Shorewall-perl/prog.footer6 +++ b/Shorewall-perl/prog.footer6 @@ -64,137 +64,143 @@ COMMAND="$1" [ -n "${PRODUCT:=Shorewall6}" ] -case "$COMMAND" in - start) - [ $# -ne 1 ] && usage 2 - if shorewall6_is_started; then - error_message "$PRODUCT is already Running" +kernel=$(printf "%2d%02d%02d\n" $(echo $(uname -r) 2> /dev/null | sed 's/-.*//' | tr '.' ' ' ) | head -n1) +if [ $kernel -lt 20625 ]; then + error_message "ERROR: $PRODUCT requires Linux kernel 2.6.25 or later" + status=2 +else + case "$COMMAND" in + start) + [ $# -ne 1 ] && usage 2 + if shorewall6_is_started; then + error_message "$PRODUCT is already Running" + status=0 + else + progress_message3 "Starting $PRODUCT...." + define_firewall + status=$? + [ -n "$SUBSYSLOCK" -a $status -eq 0 ] && touch $SUBSYSLOCK + progress_message3 "done." + fi + ;; + stop) + [ $# -ne 1 ] && usage 2 + progress_message3 "Stopping $PRODUCT...." + stop_firewall status=0 - else - progress_message3 "Starting $PRODUCT...." - define_firewall - status=$? - [ -n "$SUBSYSLOCK" -a $status -eq 0 ] && touch $SUBSYSLOCK + [ -n "$SUBSYSLOCK" ] && rm -f $SUBSYSLOCK progress_message3 "done." - fi - ;; - stop) - [ $# -ne 1 ] && usage 2 - progress_message3 "Stopping $PRODUCT...." - stop_firewall - status=0 - [ -n "$SUBSYSLOCK" ] && rm -f $SUBSYSLOCK - progress_message3 "done." - ;; - reset) - if ! shorewall6_is_started ; then - error_message "$PRODUCT is not running" - status=2 - elif [ $# -eq 1 ]; then - $IP6TABLES -Z - $IP6TABLES -t mangle -Z - date > ${VARDIR}/restarted - status=0 - progress_message3 "$PRODUCT Counters Reset" - else - shift - status=0 - for chain in $@; do - if chain_exists $chain; then - if qt $IP6TABLES -Z $chain; then - progress_message3 "Filter $chain Counters Reset" + ;; + reset) + if ! shorewall6_is_started ; then + error_message "$PRODUCT is not running" + status=2 + elif [ $# -eq 1 ]; then + $IP6TABLES -Z + $IP6TABLES -t mangle -Z + date > ${VARDIR}/restarted + status=0 + progress_message3 "$PRODUCT Counters Reset" + else + shift + status=0 + for chain in $@; do + if chain_exists $chain; then + if qt $IP6TABLES -Z $chain; then + progress_message3 "Filter $chain Counters Reset" + else + error_message "ERROR: Reset of chain $chain failed" + status=2 + break + fi else - error_message "ERROR: Reset of chain $chain failed" - status=2 - break + error_message "WARNING: Filter Chain $chain does not exist" fi - else - error_message "WARNING: Filter Chain $chain does not exist" - fi - done - fi - ;; - restart) - [ $# -ne 1 ] && usage 2 - if shorewall6_is_started; then - progress_message3 "Restarting $PRODUCT...." - else - error_message "$PRODUCT is not running" - progress_message3 "Starting $PRODUCT...." - fi - - define_firewall - status=$? - if [ -n "$SUBSYSLOCK" ]; then - [ $status -eq 0 ] && touch $SUBSYSLOCK || rm -f $SUBSYSLOCK - fi - progress_message3 "done." - ;; - refresh) - [ $# -ne 1 ] && usage 2 - if shorewall6_is_started; then - progress_message3 "Refreshing $PRODUCT...." + done + fi + ;; + restart) + [ $# -ne 1 ] && usage 2 + if shorewall6_is_started; then + progress_message3 "Restarting $PRODUCT...." + else + error_message "$PRODUCT is not running" + progress_message3 "Starting $PRODUCT...." + fi + define_firewall status=$? + if [ -n "$SUBSYSLOCK" ]; then + [ $status -eq 0 ] && touch $SUBSYSLOCK || rm -f $SUBSYSLOCK + fi progress_message3 "done." - else - echo "$PRODUCT is not running" >&2 - status=2 - fi - ;; - restore) - [ $# -ne 1 ] && usage 2 - define_firewall - status=$? - if [ -n "$SUBSYSLOCK" ]; then - [ $status -eq 0 ] && touch $SUBSYSLOCK || rm -f $SUBSYSLOCK - fi - ;; - clear) - [ $# -ne 1 ] && usage 2 - progress_message3 "Clearing $PRODUCT...." - clear_firewall - status=0 - [ -n "$SUBSYSLOCK" ] && rm -f $SUBSYSLOCK - progress_message3 "done." - ;; - status) - [ $# -ne 1 ] && usage 2 - echo "$PRODUCT-$VERSION Status at $HOSTNAME - $(date)" - echo - if shorewall6_is_started; then - echo "$PRODUCT is running" + ;; + refresh) + [ $# -ne 1 ] && usage 2 + if shorewall6_is_started; then + progress_message3 "Refreshing $PRODUCT...." + define_firewall + status=$? + progress_message3 "done." + else + echo "$PRODUCT is not running" >&2 + status=2 + fi + ;; + restore) + [ $# -ne 1 ] && usage 2 + define_firewall + status=$? + if [ -n "$SUBSYSLOCK" ]; then + [ $status -eq 0 ] && touch $SUBSYSLOCK || rm -f $SUBSYSLOCK + fi + ;; + clear) + [ $# -ne 1 ] && usage 2 + progress_message3 "Clearing $PRODUCT...." + clear_firewall status=0 - else - echo "$PRODUCT is stopped" - status=4 - fi - - if [ -f ${VARDIR}/state ]; then - state="$(cat ${VARDIR}/state)" - case $state in - Stopped*|Clear*) - status=3 - ;; - esac - else - state=Unknown - fi - echo "State:$state" - echo - ;; - version) - [ $# -ne 1 ] && usage 2 - echo $VERSION - status=0 - ;; - help) - [ $# -ne 1 ] && usage 2 - usage 0 - ;; - *) - usage 2 - ;; -esac + [ -n "$SUBSYSLOCK" ] && rm -f $SUBSYSLOCK + progress_message3 "done." + ;; + status) + [ $# -ne 1 ] && usage 2 + echo "$PRODUCT-$VERSION Status at $HOSTNAME - $(date)" + echo + if shorewall6_is_started; then + echo "$PRODUCT is running" + status=0 + else + echo "$PRODUCT is stopped" + status=4 + fi + + if [ -f ${VARDIR}/state ]; then + state="$(cat ${VARDIR}/state)" + case $state in + Stopped*|Clear*) + status=3 + ;; + esac + else + state=Unknown + fi + echo "State:$state" + echo + ;; + version) + [ $# -ne 1 ] && usage 2 + echo $VERSION + status=0 + ;; + help) + [ $# -ne 1 ] && usage 2 + usage 0 + ;; + *) + usage 2 + ;; + esac +fi exit $status