IPTABLES=/usr/sbin/iptables
CMDIP=/bin/ip
IPTABLES6=/usr/sbin/iptables

add_xfrm() {
  $CMDIP xfrm policy update dir in "$@" 2> /dev/null
  $CMDIP xfrm policy update dir out "$@" 2> /dev/null
  $CMDIP xfrm policy update dir fwd "$@" 2> /dev/null
}

del_xfrm() {
  $CMDIP xfrm policy delete dir in "$@" 2> /dev/null
  $CMDIP xfrm policy delete dir out "$@" 2> /dev/null
  $CMDIP xfrm policy delete dir fwd "$@" 2> /dev/null
}

add_chain() {
  $IPTABLES -N $1 2> /dev/null
  $IPTABLES -A in_srv -j $1 2> /dev/null
  [ $2 ] && return
  $IPTABLES -t nat -N $1 2> /dev/null
  $IPTABLES -t nat -A pre_srv -j $1 2> /dev/null
}

del_chain() {
  $IPTABLES -D in_srv -j $1 2> /dev/null
  $IPTABLES -F $1 2> /dev/null
  $IPTABLES -X $1 2> /dev/null
  [ $2 ] && return
  $IPTABLES -t nat -D pre_srv -j $1 2> /dev/null
  $IPTABLES -t nat -F $1 2> /dev/null
  $IPTABLES -t nat -X $1 2> /dev/null
}

add_rule() {
  [ $3 ] && PORT="--dport $3"
  $IPTABLES -A $1 -p $2 $PORT -j ACCEPT 2> /dev/null
  $IPTABLES -t nat -A $1 -p $2 $PORT -j ACCEPT 2> /dev/null
}

add_chain6() {
  $IPTABLES6 -N $1 2> /dev/null
  $IPTABLES6 -A in_srv -j $1 2> /dev/null
  [ $2 ] && return
  $IPTABLES6 -t nat -N $1 2> /dev/null
  $IPTABLES6 -t nat -A pre_srv -j $1 2> /dev/null
}

del_chain6() {
  $IPTABLES6 -D in_srv -j $1 2> /dev/null
  $IPTABLES6 -F $1 2> /dev/null
  $IPTABLES6 -X $1 2> /dev/null
  [ $2 ] && return
  $IPTABLES6 -t nat -D pre_srv -j $1 2> /dev/null
  $IPTABLES6 -t nat -F $1 2> /dev/null
  $IPTABLES6 -t nat -X $1 2> /dev/null
}

add_rule6() {
  [ $3 ] && PORT="--dport $3"
  $IPTABLES6 -A $1 -p $2 $PORT -j ACCEPT 2> /dev/null
  $IPTABLES6 -t nat -A $1 -p $2 $PORT -j ACCEPT 2> /dev/null
}
