<?xml version="1.0" encoding="UTF-8"?>
<CLISH_MODULE xmlns="http://clish.sourceforge.net/XMLSchema" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://clish.sourceforge.net/XMLSchema
                     http://clish.sourceforge.net/XMLSchema/clish.xsd">
	<!--=======================================================-->

<VIEW name="ping-view"
	prompt="${SYSTEM_NAME}# ">

<!-- commands set: ping, ping6, arping, traceroute, traceroute6 -->
<!-- ping, ping6, arping -->
	<COMMAND name="ping"
		help="Send messages to network hosts"
		lock="false"
		interrupt="true">
		<PARAM name="proto"
			help="Protocol to use for the ping"
			optional="true"
			mode="switch"
			ptype="SUBCOMMAND">
			<PARAM name="ip"
				help="Send ICMP IPv4 messages to network hosts (default)"
				mode="subcommand"
				ptype="SUBCOMMAND"/>
			<PARAM name="ipv6"
				help="Send ICMP IPv6 messages to network hosts"
				mode="subcommand"
				ptype="SUBCOMMAND"/>
			<PARAM name="arp"
				help="Send ARP requests to a neighbour host"
				mode="subcommand"
				ptype="SUBCOMMAND"/>
		</PARAM>
		<PARAM name="dst"
			help="Hostname or IP-address to ping"
			ptype="STRING"/>
		<PARAM name="source"
			help="Source IP-address (ip) or interface (ip and arp)"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND">
			<PARAM name="src"
				help="Source IP-address (ip) or interface name (ip and arp)"
				ptype="STRING"/>
		</PARAM>
		<PARAM name="repeat"
			help="Requests to send count, default is 5"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND">
			<PARAM name="count"
				help="Requests count"
				ptype="UINT"/>
		</PARAM>
		<PARAM name="resolve"
			test='"${proto}"!="arp"'
			help="Resolve names"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND"/>
		<PARAM name="broadcast"
			test='"${proto}"!="arp"'
			help="Ping broadcast address"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND"/>
		<PARAM name="size"
			test='"${proto}"!="arp"'
			help="Packet size"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND">
			<PARAM name="psize"
				help="Number of data bytes to send"
				ptype="UINT"/>
		</PARAM>
		<PARAM name="interval"
			test='"${proto}"!="arp"'
			help="The time interval between packets, default is 1"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND">
			<PARAM name="period"
				help="Interval between packets"
				ptype="STRING"/>
		</PARAM>
		<PARAM name="flood"
			test='"${proto}"!="arp"'
			help="Flood ping"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND"/>
		<PARAM name="duplicate-detect"
			test='"${proto}"="arp"'
			help="Duplicate address detection mode"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND"/>
		<ACTION>
			case "${proto}" in
				"ipv6")
					cmd="ping6"
					;;
				"arp")
					cmd="arping"
					;;
				*)
					cmd="ping"
					;;
			esac
			if test "${proto}" != "arp"; then
				# Resolve names
				if test -z "${resolve}"; then
					cmd=$cmd" -n"
				fi
				# Ping broadcast
				cmd=$cmd"`expr substr '${ -b :broadcast}' 1 3`"
				# Packet size
				cmd=$cmd"${ -s :psize}"
				# Interval between packets 
				if test -n "${period}"; then
					cmd=$cmd"${ -i :period}"
				else
					cmd=$cmd" -i 1"
				fi
				# Flood ping
				cmd=$cmd"`expr substr '${ -f :flood}' 1 3`"
			else
				# Detect MAC duplicate
				cmd=$cmd"`expr substr '${ -D :duplicate-detect}' 1 3`"
			fi
			# Interface or address
			cmd=$cmd"${ -I :src}"
			# Request count
			if test -z "${count}"; then
				cmd=$cmd" -c 5"
			else
				cmd=$cmd"${ -c :count}"
			fi
			#
			cmd=$cmd" ${dst}"
			$cmd
		</ACTION>
	</COMMAND>

<!-- traceroute, traceroute6 -->
	<COMMAND name="traceroute"
		help="Print the route packets trace to network host"
		lock="false"
		interrupt="true">
		<PARAM name="proto"
			help="Protocol to use"
			optional="true"
			mode="switch"
			ptype="SUBCOMMAND">
			<PARAM name="ip"
				help="IPv4"
				mode="subcommand"
				ptype="SUBCOMMAND"/>
			<PARAM name="ipv6"
				help="IPv6"
				mode="subcommand"
				ptype="SUBCOMMAND"/>
		</PARAM>
		<PARAM name="dst"
			help="Hostname or IP-address to trace the route"
			ptype="STRING"/>
		<PARAM name="resolve"
			help="Resolve names"
			ptype="SUBCOMMAND"
			mode="subcommand"
			optional="true"/>
		<PARAM name="source"
			help="Source IP-address"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND">
			<PARAM name="src"
				help="IP-address"
				ptype="STRING"/>
		</PARAM>
		<PARAM name="interface"
			help="Source interface"
			optional="true"
			mode="subcommand"
			ptype="SUBCOMMAND">
			<PARAM name="if"
				help="Interface name"
				ptype="STRING"/>
		</PARAM>
		<ACTION>
			if test -n "${ipv6}"; then
				cmd="traceroute6"
			else
				cmd="traceroute"
			fi
			#Resolve names
			if test -z "${resolve}"; then
				cmd=$cmd" -n"
			fi
			# Source address
			cmd=$cmd"${ -s :src}"
			# Source interface
			cmd=$cmd"${ -i :if}"
			#
			cmd=$cmd" ${dst}"
			$cmd
		</ACTION>
	</COMMAND>

</VIEW>

</CLISH_MODULE>