//
// $Copyright$
//
// $Id: icmpv4.def,v 1.1.1.1 2000/10/31 22:39:24 sekiya Exp $

#include "tunnel.def"

FEM_icmp6_echo_request(
	v6_echo_request_LINK0_tn2nut_OFFLINK,
	_HETHER_tn2nut,
		{
		_SRC(TN_LINK0_GLOBAL_ADDRESS);
		_DST(OFFLINK1_GLOBAL_ADDRESS);
	},
		{
		payload=ping_data;
	}
)


FEM_v6overv4_icmp6_echo_request(
	v6overv4_echo_request_LINK1_nut2tn,
	_HETHER_nut2tn,
	NUT_LINK1_V4_ADDRESS,
	V4_OFFLINK_ADDRESS,
	 	{
		_SRC(TN_LINK0_GLOBAL_ADDRESS);
		_DST(OFFLINK1_GLOBAL_ADDRESS);
	},
		{
		payload=ping_data;
	}
)

Payload v6overv4_orignal_packet {
        data = substr(_PACKET_IPV4_NAME(v6overv4_echo_request_LINK1_nut2tn),0,74);
}

Payload v6_orignal_packet {
        data = substr(_PACKET_IPV6_NAME(v6_echo_request_LINK0_tn2nut_OFFLINK),0,54);
}


FEM_icmp4_time_exceeded (
	icmpv4_hop_limit_LINK1_tn2nut,
	_HETHER_tn2nut,
		{
		_SRC(V4_NOCONFIGURED_ADDRESS);
		_DST(NUT_LINK1_V4_ADDRESS);
	},
		{
		Code=0;
		payload=v6overv4_orignal_packet;
	}
)

FEM_icmp4_destination_unreachable (
	icmpv4_unreachable_LINI1_tn2nut,
	_HETHER_tn2nut,
		{
		_SRC(V4_NOCONFIGURED_ADDRESS);
		_DST(NUT_LINK1_V4_ADDRESS);
	},
		{
		Code=1;
		payload=v6overv4_orignal_packet;
	}
)

FEM_icmp6_time_exceeded(
        icmpv6_hop_limit_LINK0_nut2tn,
        _HETHER_nut2tn,
        {
                _SRC(NUT_LINK0_GLOBAL_ADDRESS);
                _DST(TN_LINK0_GLOBAL_ADDRESS);
        },
        {
                Code = 0;       
                payload = v6_orignal_packet;
        }
)


FEM_icmp6_destination_unreachable(
        icmpv6_unreachable_LINK0_nut2tn,
        _HETHER_nut2tn,
                {
                _SRC(NUT_LINK0_GLOBAL_ADDRESS);
                _DST(TN_LINK0_GLOBAL_ADDRESS);
        },
                {
                Code = 3;
                payload = v6_orignal_packet;
        }
)
