unsupported
  $   坙椷=縅🛯6�港�qLZ7���y峡� )Z    #!/usr/bin/bash
#
# ip6tables	Start ip6tables firewall
#
# chkconfig: 2345 08 92
# description:	Starts, stops and saves ip6tables firewall
#
# config: /etc/sysconfig/ip6tables
# config: /etc/sysconfig/ip6tables-config
#
### BEGIN INIT INFO
# Provides: ip6tables
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop ip6tables firewall
# Description: Start, stop and save ip6tables firewall
### END INIT INFO

# compat for removed initscripts dependency

success() {
	echo -n "[  OK  ]"
	return 0
}

warning() {
	echo -n "[WARNING]"
	return 1
}

failure() {
	echo -n "[FAILED]"
	return 1
}

IP6TABLES=ip6tables
IP6TABLES_DATA=/etc/sysconfig/$IP6TABLES
IP6TABLES_FALLBACK_DATA=${IP6TABLES_DATA}.fallback
IP6TABLES_CONFIG=/etc/sysconfig/${IP6TABLES}-config
IPV=${IP6TABLES%tables} # ip for ipv4 | ip6 for ipv6
[ "$IPV" = "ip" ] && _IPV="ipv4" || _IPV="ipv6"
PROC_IP6TABLES_NAMES=/proc/net/${IPV}_tables_names
VAR_SUBSYS_IP6TABLES=/var/lock/subsys/$IP6TABLES

# only usable for root
if [ $EUID != 0 ]; then
    echo -n $"${IP6TABLES}: Only usable by root."; warning; echo
    exit 4
fi

if [ ! -x /sbin/$IP6TABLES ]; then
    echo -n $"${IP6TABLES}: /sbin/$IP6TABLES does not exist."; warning; echo
    exit 5
fi

# Default firewall configuration:
IP6TABLES_MODULES=""
IP6TABLES_SAVE_ON_STOP="no"
IP6TABLES_SAVE_ON_RESTART="no"
IP6TABLES_SAVE_COUNTER="no"
IP6TABLES_STATUS_NUMERIC="yes"
IP6TABLES_STATUS_VERBOSE="no"
IP6TABLES_STATUS_LINENUMBERS="yes"
IP6TABLES_SYSCTL_LOAD_LIST=""
IP6TABLES_RESTORE_WAIT=600
IP6TABLES_RESTORE_WAIT_INTERVAL=1000000

# Load firewall configuration.
[ -f "$IP6TABLES_CONFIG" ] && . "$IP6TABLES_CONFIG"

is_ip6tables_nft() {
	ip6tables --version | grep -q '(nf_tables)'
}

netfilter_active() {
	is_ip6tables_nft && return 0
	[ -e "$PROC_IP6TABLES_NAMES" ]
}

netfilter_tables() {
	netfilter_active || return 1
	is_ip6tables_nft && {
		# explicitly omit security table from this list as
		# it should be reserved for SELinux use
		echo "raw mangle filter nat"
		return 0
	}
	cat "$PROC_IP6TABLES_NAMES" 2>/dev/null
}

# Get active tables
NF_TABLES=$(netfilter_tables)


flush_n_delete() {
    # Flush firewall rules and delete chains.
    netfilter_active || return 0

    # Check if firewall is configured (has tables)
    [ -z "$NF_TABLES" ] && return 1

    echo -n $"${IP6TABLES}: Flushing firewall rules: "
    ret=0
    # For all tables
    for i in $NF_TABLES; do
        # Flush firewall rules.
	$IP6TABLES -t $i -F;
	let ret+=$?;

        # Delete firewall chains.
	$IP6TABLES -t $i -X;
	let ret+=$?;

	# Set counter to zero.
	$IP6TABLES -t $i -Z;
	let ret+=$?;
    done

    [ $ret -eq 0 ] && success || failure
    echo
    return $ret
}

set_policy() {
    # Set policy for configured tables.
    policy=$1

    # Check if iptable module is loaded
    netfilter_active || return 0

    # Check if firewall is configured (has tables)
    tables=$(netfilter_tables)
    [ -z "$tables" ] && return 1

    echo -n $"${IP6TABLES}: Setting chains to policy $policy: "
    ret=0
    for i in $tables; do
	echo -n "$i "
	case "$i" in
	    raw)
		$IP6TABLES -t raw -P PREROUTING $policy \
		    && $IP6TABLES -t raw -P OUTPUT $policy \
		    || let ret+=1
		;;
	    filter)
                $IP6TABLES -t filter -P INPUT $policy \
		    && $IP6TABLES -t filter -P OUTPUT $policy \
		    && $IP6TABLES -t filter -P FORWARD $policy \
		    || let ret+=1
		;;
	    nat)
		$IP6TABLES -t nat -P PREROUTING $policy \
		    && $IP6TABLES -t nat -P POSTROUTING $policy \
		    && $IP6TABLES -t nat -P OUTPUT $policy \
		    || let ret+=1
		;;
	    mangle)
	        $IP6TABLES -t mangle -P PREROUTING $policy \
		    && $IP6TABLES -t mangle -P POSTROUTING $policy \
		    && $IP6TABLES -t mangle -P INPUT $policy \
		    && $IP6TABLES -t mangle -P OUTPUT $policy \
		    && $IP6TABLES -t mangle -P FORWARD $policy \
		    || let ret+=1
		;;
	    *)
	        let ret+=1
		;;
        esac
    done

    [ $ret -eq 0 ] && success || failure
    echo
 