#/bin/sh - # # Enable ICMP ping-of-death. Runs on the target node and sets the # passed parameters into the kernel. # Invocation: pl-podcntl HOSTIP HOSTMASK HASH # ----------------------------------------------------------------- # $Header: /shareddata/CVS/planetlab/admin/ipod/pl-podcntl,v 1.2 2003/01/18 01:43:48 radams Exp $ # # Copyright (c) 2003 Intel Corporation # All rights reserved. # This file is distributed under the terms in the attached INTEL_LICENSE # file. If you do not find this file, a copy can be obtained by # writing to Intel Research Berkeley; Attention: Intel License Inquiry; # 2150 Shattuck Avenue; Berkeley, CA 94704 # ----------------------------------------------------------------- # Modified from origional EMULAB script. Origional copyright: # EMULAB-COPYRIGHT # Copyright (c) 2000-2002 University of Utah and the Flux Group. # All rights reserved. # # Enable ICMP ping-of-death # Support both the old style (host only) and the new style (host+mask+key) # IPODHOSTP=$1 IPODMASKP=$2 IPODHASHP=$3 SYSCTL="/sbin/sysctl" # Grotesque sed/awk converts IP addrs into an integer for sysctl if [ x"$IPODHOSTP" != x ]; then IPODHOST=`echo $IPODHOSTP | \ sed -e 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \2 \3 \4/' | \ awk '{ printf "%d\n", $1*16777216+$2*65536+$3*256+$4 }'` IPODMASK=`echo $IPODMASKP | \ sed -e 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \2 \3 \4/' | \ awk '{ printf "%d\n", $1*16777216+$2*65536+$3*256+$4 }'` IPODKEY=`echo $IPODHASHP | \ sed -e 's/\(.*\)/\1/'` echo "IPODHOST = $IPODHOST" echo "IPODMASK = $IPODMASK" echo "IPODKEY = $IPODKEY" # figure out the version version=`$SYSCTL net.ipv4.icmp_ipod_version 2>/dev/null` if [ "$version"x = x ]; then $SYSCTL net.ipv4.icmp_ipod_enabled >/dev/null 2>&1 case $? in 0) version=1 ;; *) version=0 ;; esac fi echo "Version = $version" # enable if possible case $version in 0) echo "*** WARNING: no IPOD sysctls, not enabled" exit 1 ;; 1) $SYSCTL -w net.ipv4.icmp_ipod_host=$IPODHOST >/dev/null $SYSCTL -w net.ipv4.icmp_ipod_enabled=1 >/dev/null str="Old-style" ;; *) $SYSCTL -w net.ipv4.icmp_ipod_host=$IPODHOST >/dev/null Success=$? $SYSCTL -w net.ipv4.icmp_ipod_mask=$IPODMASK >/dev/null $SYSCTL -w net.ipv4.icmp_ipod_key=$IPODKEY >/dev/null $SYSCTL -w net.ipv4.icmp_ipod_enabled=1 >/dev/null str="Authenticated" ;; esac echo Success = $Success if [[ $Success -eq 0 ]] ; then IPODHOST=`echo $IPODINFO | \ sed -e 's/.*HOST=\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*/\1/'` IPODMASK=`echo $IPODINFO | \ sed -e 's/.*MASK=\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*/\1/'` echo "$str IPOD enabled from $IPODHOST/$IPODMASK" else echo "*** WARNING: could not set IPOD info, not enabled" fi else echo "*** WARNING: no IPOD info, not enabled" fi