// // $Copyright$ // // $Name: $ // // $TINY $ // // // Network topology // TN (Link0) NUT // HostB -----> Router1 -----> HOST(NUT) -----> Router1 -----> HostA // #include "PMTU.def" #define HOSTA_ADDR v6("3ffe:501:ffff:10a0::1") #define HOSTB_ADDR v6("3ffe:501:ffff:10b0::1") // // Routing Header // Hdr_Routing rh_HB_to_NUT { NextHeader = 58; // ICMP SegmentsLeft = 1; Address = HOSTA_ADDR; } Hdr_Routing rh_NUT_to_HA { NextHeader = 58; // ICMP SegmentsLeft = 0; Address = NUT_GLOBAL_ADDRESS; } Hdr_Routing rh_NUT_to_HA_nxt_frag { NextHeader = 44; // ICMP SegmentsLeft = 0; Address = NUT_GLOBAL_ADDRESS; } Hdr_Fragment frag_1st { NextHeader = 58; FragmentOffset = 0; MFlag = 1; Identification = 0x00000e60; } Hdr_Fragment frag_2nd { NextHeader = 58; FragmentOffset = 166; MFlag = 0; Identification = 0x00000e60; } //====================================================================== // // Echo Request Data // Payload ping_data_1320 { data=repeat(0xff,1320); } Payload ping_data_32 { data=repeat(0xff,32); } //====================================================================== // // Echo Request with RH // FEM_icmp6_echo_request_exth( echo_request_1400_plus_RH_from_B_to_A_via_NUT, _HETHER_tn2nut, { _SRC(HOSTB_ADDR); _DST(NUT_GLOBAL_ADDRESS); }, { header = _HDR_IPV6_NAME(echo_request_1400_plus_RH_from_B_to_A_via_NUT); exthdr = rh_HB_to_NUT; upper = _ICMPV6_NAME(echo_request_1400_plus_RH_from_B_to_A_via_NUT); }, { payload = ping_data_1352; } ) //====================================================================== // // Echo Request with RH // FEM_icmp6_echo_request_exth( echo_request_1400_plus_RH_from_B_to_A_fwd, _HETHER_nut2tn, { _SRC(HOSTB_ADDR); _DST(HOSTA_ADDR); }, { header = _HDR_IPV6_NAME(echo_request_1400_plus_RH_from_B_to_A_fwd); exthdr = rh_NUT_to_HA; upper = _ICMPV6_NAME(echo_request_1400_plus_RH_from_B_to_A_fwd); }, { payload = ping_data_1352; } ) //====================================================================== // // Fragmented Echo Request with RH // FEM_icmp6_echo_request_exth( frag_echo_request_1400_plus_RH_1st_mtu1400_from_B_to_A, _HETHER_nut2tn, { _SRC(HOSTB_ADDR); _DST(HOSTA_ADDR); }, { header = _HDR_IPV6_NAME(frag_echo_request_1400_plus_RH_1st_mtu1400_from_B_to_A); exthdr = rh_NUT_to_HA_nxt_frag; exthdr = frag_1st; upper = _ICMPV6_NAME(frag_echo_request_1400_plus_RH_1st_mtu1400_from_B_to_A); }, { payload = ping_data_1320; } ) FEM_icmp6_echo_request_exth( frag_echo_request_1400_plus_RH_2nd_mtu1400_from_B_to_A, _HETHER_nut2tn, { _SRC(HOSTB_ADDR); _DST(HOSTA_ADDR); }, { header = _HDR_IPV6_NAME(frag_echo_request_1400_plus_RH_2nd_mtu1400_from_B_to_A); exthdr = rh_NUT_to_HA_nxt_frag; exthdr = frag_2nd; upper = _ICMPV6_NAME(frag_echo_request_1400_plus_RH_2nd_mtu1400_from_B_to_A); }, { payload = ping_data_32; } ) /////////////////////////////////// // // Packets for HOST A or related A // /////////////////////////////////// // size 1500 FEM_icmp6_echo_request( echo_request_1500_from_A, _HETHER_tn2nut, { _SRC(HOSTA_ADDR); _DST(NUT_GLOBAL_ADDRESS); }, { payload=ping_data_1452; } ) FEM_icmp6_echo_reply( echo_reply_1500_to_A, _HETHER_nut2tn, { _SRC(NUT_GLOBAL_ADDRESS); _DST(HOSTA_ADDR); }, { payload=ping_data_1452; } ) /////////////////////////////////// // // Packets Too Big Message for HOST A or related A // FEM_icmp6_packet_too_big( icmp6_TooBigMesg_1400_for_1500_A, _HETHER_tn2nut, { _SRC(v6("3ffe:501:ffff:10a1::1")); _DST(NUT_GLOBAL_ADDRESS); }, { MTU = 1400; payload = TooBigData_1500_A; } ) Payload TooBigData_1500_A { data=substr(_PACKET_IPV6_NAME(echo_reply_1500_to_A),0,1232); }