// // $Copyright$ // // $TAHI: ct/mip6/CN_Common.def,v 1.5.4.2 2002/01/07 08:19:02 akisada Exp $ // // Pad1 option // Echo Request from MN to NUT (no Home Address Option) // Echo Request from MN to NUT (Home Address Option) // Echo Reply from NUT to MN (no Routing Header) // Echo Reply from NUT to MN (no Binding Cache entry) // Echo Reply from NUT to MN (with Binding Cache entry) // NS from NUT to R1 // NA from R1 to NUT (global) // NA from R1 to NUT (link-local) // Router Advertisement _HETHER_define(_HETHER_r12nut, ether(A0N_MAC_ADDR), nutether()) _HETHER_define(_HETHER_r12allnodes, ether(A0N_MAC_ADDR), v62ethermulti(v6(_ALLNODES_MCAST_ADDR))) _HETHER_define(_HETHER_nut2r1, nutether(), ether(A0N_MAC_ADDR)) _HETHER_define(_HETHER_nut2r1solnode, nutether(), _ETHER_SOLNODE_MCAST(v6(_GLOBAL0A0N_UCAST_ADDR))) //================================================================ // Pad1 option Opt_Pad1 opt_pad1 {} //================================================================ // Echo Request from MN to NUT (no Home Address Option) FEM_icmp6_echo_request( echorequest, _HETHER_r12nut, { _SRC(v6(CAREOFADDR)); _DST(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); }, { payload = data8; } ) Payload data8 { data = repeat(0x00, 8); } //================================================================ // Echo Request from MN to NUT (Home Address Option) FEM_icmp6_echo_request_exth( echorequest_ex, _HETHER_r12nut, { _SRC(v6(CAREOFADDR)); _DST(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); }, { header = _HDR_IPV6_NAME(echorequest_ex); exthdr = ext_homeaddress; upper = _ICMPV6_NAME(echorequest_ex); }, { payload = data8; } ) Hdr_Destination ext_homeaddress { option = opt_pad4; option = opt_homeaddress; } Opt_PadN opt_pad4 { pad = repeat(0x00, 2); } Opt_MIPHomeAddress opt_homeaddress { HomeAddress = v6(HOMEADDR); } //================================================================ // Echo Reply from NUT to MN (no Routing Header) FEM_icmp6_echo_reply( echoreply, _HETHER_nut2r1, { _SRC(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); _DST(v6(CAREOFADDR)); }, { payload = data8; } ) //================================================================ // Echo Reply from NUT to MN (no Binding Cache entry) FEM_icmp6_echo_reply( echoreply_no_bce, _HETHER_nut2r1, { _SRC(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); _DST(v6(HOMEADDR)); }, { payload = data8; } ) //================================================================ // Echo Reply from NUT to MN (with Binding Cache entry) FEM_icmp6_echo_reply_exth( echoreply_bce, _HETHER_nut2r1, { _SRC(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); _DST(v6(CAREOFADDR)); }, { header = _HDR_IPV6_NAME(echoreply_bce); exthdr = ext_routing; upper = _ICMPV6_NAME(echoreply_bce); }, { payload = data8; } ) Hdr_Routing ext_routing { SegmentsLeft = 1; Address = v6(HOMEADDR); } //================================================================ // NS from NUT to R1 FEM_icmp6_ns( ns_r1_global, _HETHER_nut2r1solnode, { HopLimit = 255; _SRC(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); _DST(_IPV6_SOLNODE_MCAST(v6(_GLOBAL0A0N_UCAST_ADDR))); }, { TargetAddress = v6(_GLOBAL0A0N_UCAST_ADDR); option = _SLLOPT_nut; } ) //================================================================ // NA from R1 to NUT (global) FEM_icmp6_na( na_r1_global, _HETHER_r12nut, { HopLimit = 255; _SRC(v6(_GLOBAL0A0N_UCAST_ADDR)); _DST(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); }, { RFlag = 1; SFlag = 1; OFlag = 1; TargetAddress = v6(_GLOBAL0A0N_UCAST_ADDR); option = tll_r1; } ) Opt_ICMPv6_TLL tll_r1 { LinkLayerAddress = ether(A0N_MAC_ADDR); } //================================================================ // NA from R1 to NUT (link-local) FEM_icmp6_na( na_r1_linklocal, _HETHER_r12nut, { HopLimit = 255; _SRC(v6(_LLOCAL0A0N_UCAST_ADDR)); _DST(nutv6()); }, { RFlag = 1; SFlag = 1; OFlag = 1; TargetAddress = v6(_LLOCAL0A0N_UCAST_ADDR); option = tll_r1; } ) //================================================================ // Router Advertisement FEM_icmp6_ra( ra_r1, _HETHER_r12allnodes, { HopLimit = 255; _SRC(v6(_LLOCAL0A0N_UCAST_ADDR)); _DST(v6(_ALLNODES_MCAST_ADDR)); }, { LifeTime = 1800; option = opt_sll_r1; option = opt_mtu_1500; option = opt_prefixinformation_r1; } ) Opt_ICMPv6_SLL opt_sll_r1 { LinkLayerAddress = ether(A0N_MAC_ADDR); } Opt_ICMPv6_MTU opt_mtu_1500 { MTU = 1500; } Opt_ICMPv6_Prefix opt_prefixinformation_r1 { LFlag = 1; AFlag = 1; ValidLifetime = 2592000; PreferredLifetime = 604800; Prefix = v6(_GLOBAL0_UCAST_PRFX); } //================================================================ // Parameter Problem FEM_icmp6_parameter_problem( param_problem, _HETHER_nut2r1, { _SRC(nut2v6(_GLOBAL0_UCAST_PRFX, 64)); _DST(v6(CAREOFADDR)); }, { Code = 2; Pointer = any; payload = any; } ) #ifdef KAME //================================================================ // Authentication Data Sub-Option Opt_MIP_AuthenticationData kame_auth { // Type = 4; // Length = 4; // SPI = 0; // AuthData = calc(); } //================================================================ // PadN Sub-Option Opt_MIP_PadN sub_opt_pad2 { // Type = 1; // Length = 0; // pad = ; } #endif