#!/bin/sh TUN_NAME=ipsec0 # use protocol specific options to set ports case "$PLUTO_MY_PROTOCOL" in 1) # ICMP ICMP_TYPE_OPTION="--icmp-type" ;; 58) # ICMPv6 ICMP_TYPE_OPTION="--icmpv6-type" ;; *) ;; esac # are there port numbers? if [ "$PLUTO_MY_PORT" != 0 ] then if [ -n "$ICMP_TYPE_OPTION" ] then S_MY_PORT="$ICMP_TYPE_OPTION $PLUTO_MY_PORT" D_MY_PORT="$ICMP_TYPE_OPTION $PLUTO_MY_PORT" else S_MY_PORT="--sport $PLUTO_MY_PORT" D_MY_PORT="--dport $PLUTO_MY_PORT" fi fi if [ "$PLUTO_PEER_PORT" != 0 ] then if [ -n "$ICMP_TYPE_OPTION" ] then # the syntax is --icmp[v6]-type type[/code], so add it to the existing option S_MY_PORT="$S_MY_PORT/$PLUTO_PEER_PORT" D_MY_PORT="$D_MY_PORT/$PLUTO_PEER_PORT" else S_PEER_PORT="--sport $PLUTO_PEER_PORT" D_PEER_PORT="--dport $PLUTO_PEER_PORT" fi fi case "$PLUTO_VERB" in up-client) iptables -I FORWARD 1 -o $TUN_NAME -p $PLUTO_PEER_PROTOCOL \ -s $PLUTO_MY_CLIENT $S_MY_PORT \ -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT iptables -I FORWARD 1 -i $TUN_NAME -p $PLUTO_MY_PROTOCOL \ -s $PLUTO_PEER_CLIENT $S_PEER_PORT \ -d $PLUTO_MY_CLIENT $D_MY_PORT -j ACCEPT ;; down-client) iptables -D FORWARD -o $TUN_NAME -p $PLUTO_PEER_PROTOCOL \ -s $PLUTO_MY_CLIENT $S_MY_PORT \ -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT iptables -D FORWARD -i $TUN_NAME -p $PLUTO_MY_PROTOCOL \ -s $PLUTO_PEER_CLIENT $S_PEER_PORT \ -d $PLUTO_MY_CLIENT $D_MY_PORT -j ACCEPT ;; esac