// // Copyright (C) 1999, 2000, 2001, 2002, 2003 Yokogawa Electric Corporation, // IPA (Information-technology Promotion Agency, Japan). // All rights reserved. // // Redistribution and use of this software in source and binary forms, with // or without modification, are permitted provided that the following // conditions and disclaimer are agreed and accepted by the user: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // 3. Neither the names of the copyrighters, the name of the project which // is related to this software (hereinafter referred to as "project") nor // the names of the contributors may be used to endorse or promote products // derived from this software without specific prior written permission. // // 4. No merchantable use may be permitted without prior written // notification to the copyrighters. However, using this software for the // purpose of testing or evaluating any products including merchantable // products may be permitted without any notification to the copyrighters. // // // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND // CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING // BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF // THE POSSIBILITY OF SUCH DAMAGE. // // $Name: REL_2_1_1 $ // // $TAHI: ct/spec/RH_AtHost.def,v 1.3 2001/10/05 06:39:18 masaxmasa Exp $ // // // Network topology // TN (Link0) NUT // Host1 -----> Router1 -----> Router2 -----> Router3 -----> Host2 // H1R1 R1R2 R2R3 R3H2 // NET_GLOBAL6 NET_GLOBAL4 NET_GLOBAL2 NET_GLOBAL0 // #define TN_GL0_ADDR tn2v6(_GLOBAL0_UCAST_PRFX,_GLOBAL0_UCAST_PRFXLEN,"Link0") #define NUT_GL0_ADDR nut2v6(_GLOBAL0_UCAST_PRFX,_GLOBAL0_UCAST_PRFXLEN,"Link0") #define H1_H1R1_ADDR v6(_GLOBAL6A0N_UCAST_ADDR) #define R1_H1R1_ADDR v6(_GLOBAL6A1N_UCAST_ADDR) #define R1_R1R2_ADDR v6(_GLOBAL4A0N_UCAST_ADDR) #define R2_R1R2_ADDR v6(_GLOBAL4A1N_UCAST_ADDR) #define R2_R2R3_ADDR v6(_GLOBAL2A0N_UCAST_ADDR) #define R3_R2R3_ADDR v6(_GLOBAL2A1N_UCAST_ADDR) #define R3_R3H2_ADDR TN_GL0_ADDR #define H2_R3H2_ADDR NUT_GL0_ADDR #define RH_TO_LINK0 rh_R3_to_H2 // // Routing Header // Hdr_Routing rh_H1_to_R1 { NextHeader = 58; // ICMP SegmentsLeft = 3; Address = R2_R1R2_ADDR; Address = R3_R2R3_ADDR; Address = H2_R3H2_ADDR; } Hdr_Routing rh_R1_to_R2 { NextHeader = 58; // ICMP SegmentsLeft = 2; Address = R1_H1R1_ADDR; Address = R3_R2R3_ADDR; Address = H2_R3H2_ADDR; } Hdr_Routing rh_R2_to_R3 { NextHeader = 58; // ICMP SegmentsLeft = 1; Address = R1_H1R1_ADDR; Address = R2_R1R2_ADDR; Address = H2_R3H2_ADDR; } Hdr_Routing rh_R3_to_H2 { NextHeader = 58; // ICMP SegmentsLeft = 0; Address = R1_H1R1_ADDR; Address = R2_R1R2_ADDR; Address = R3_R2R3_ADDR; } Hdr_Routing rh_H2_to_R3 { NextHeader = 58; // ICMP SegmentsLeft = 3; Address = R2_R2R3_ADDR; Address = R1_R1R2_ADDR; Address = H1_H1R1_ADDR; } Hdr_Routing rh_R3_to_R2 { NextHeader = 58; // ICMP SegmentsLeft = 2; Address = R3_R3H2_ADDR; Address = R1_R1R2_ADDR; Address = H1_H1R1_ADDR; } Hdr_Routing rh_R2_to_R1 { NextHeader = 58; // ICMP SegmentsLeft = 1; Address = R3_R3H2_ADDR; Address = R2_R2R3_ADDR; Address = H1_H1R1_ADDR; } Hdr_Routing rh_R1_to_H1 { NextHeader = 58; // ICMP SegmentsLeft = 0; Address = R3_R3H2_ADDR; Address = R2_R2R3_ADDR; Address = R1_R1R2_ADDR; } //====================================================================== // // Payload Data // Payload echo_data8 { data = {1,2,3,4,5,6,7,8}; } //====================================================================== // // Echo Request with RH // FEM_icmp6_echo_request_exth( echo_request_rh, _HETHER_tn2nut, { _SRC(H1_H1R1_ADDR); _DST(H2_R3H2_ADDR); }, { header = _HDR_IPV6_NAME(echo_request_rh); exthdr = RH_TO_LINK0; upper = _ICMPV6_NAME(echo_request_rh); }, { payload = echo_data8; } ) //====================================================================== // // Echo Reply // FEM_icmp6_echo_reply( echo_reply, _HETHER_nut2tn, { _SRC(H2_R3H2_ADDR); _DST(H1_H1R1_ADDR); }, { payload = echo_data8; } ) //====================================================================== // // RA // Opt_ICMPv6_Prefix prefixopt_test { PrefixLength = 64; LFlag = 1; AFlag = 1; ValidLifetime = 10000; PreferredLifetime = 10000; Prefix = v6(_GLOBAL0_UCAST_PRFX); } FEM_icmp6_ra( usolra, _HETHER_src2allnodes, { _SRC(v6src()); _DST(v6(_ALLNODES_MCAST_ADDR)); HopLimit = 255; }, { CurHopLimit = 64; LifeTime = 1805; ReachableTime = 30005; RetransTimer = 1005; option = _SLLOPT_src; option = prefixopt_test; } ) //====================================================================== // // NS // _HETHER_define(hether_nut2tentsolnode, nutether(), _ETHER_SOLNODE_MCAST(NUT_GL0_ADDR) ) FEM_icmp6_ns ( dadns, hether_nut2tentsolnode, { _SRC(v6(_UNSPEC_ADDR)); _DST(_IPV6_SOLNODE_MCAST(NUT_GL0_ADDR)); HopLimit = 255; }, { TargetAddress = NUT_GL0_ADDR; } )