//
// $Copyright$
//
// ADDRSTATE_dep_pre.def
//
// $Id: ADDRSTATE_dep_pref.def,v 1.1.1.1 2000/09/28 00:15:16 sekiya Exp $


#define DADV6ADDR_0 v6merge(_GLOBAL0_UCAST_PRFX, _GLOBAL0_UCAST_PRFXLEN, nutv6())
#define DADV6ADDR_1 v6merge(_GLOBAL1_UCAST_PRFX, _GLOBAL1_UCAST_PRFXLEN, nutv6())
#define DADV6ADDR_SOLNODE          _IPV6_SOLNODE_MCAST(nutv6())
#define DADV6ADDR_SOLNODE_ETHERDST _ETHER_SOLNODE_MCAST(nutv6())

#define DADV6ADDR oneof(DADV6ADDR_0, DADV6ADDR_1)
#include "BASIC_init.def"

_HETHER_define(hether_nut2tentsolnode,
	       nutether(), DADV6ADDR_SOLNODE_ETHERDST)
_HETHER_define(hether_tn2tentsolnode,
	       tnether(),  DADV6ADDR_SOLNODE_ETHERDST)

// dadns_from_NUT
//  Description: 
//    DAD NS coming from NUT on DAD

FEM_ADDRCONF_dadns(dadns_from_NUT, hether_nut2tentsolnode,
                   DestinationAddress=DADV6ADDR_SOLNODE;
		   ,
                   TargetAddress=oneof(DADV6ADDR_0,DADV6ADDR_1);
                   )


//---- unsolicited RA send to NUT
//------------------------------------------------------
// Prefix                  GLOBAL0   GLOBAL1
// PreferredLifetime[sec]    30        60
// ValidLifetime[sec]        90       120
//------------------------------------------------------

_PRFXOPT_define(prefixopt_test0, v6(_GLOBAL0_UCAST_PRFX), _GLOBAL0_UCAST_PRFXLEN,
		ValidLifetime=90;
		PreferredLifetime=30;
		)

_PRFXOPT_define(prefixopt_test1, v6(_GLOBAL1_UCAST_PRFX), _GLOBAL1_UCAST_PRFXLEN,
		ValidLifetime=120;
		PreferredLifetime=60;
		)

FEM_ADDRCONF_ra(usolra, _HETHER_src2allnodes,
		_SRC(v6src());
		,
		option=_SLLOPT_src;
		option=prefixopt_test0;
		option=prefixopt_test1;
		)


//---- echo request from NUT
// in the case of KAME
//    sleep 40
//    ping6 -c 1 -i 1 -h 64 -s 2 -p 00 -I <ifname> 3ffe:501:ffff:102::1
// makes the following packet

FEM_icmp6_echo_request( echo_request, _HETHER_nut2tn,
             {  _SRC(nut2v6(_GLOBAL1_UCAST_PRFX, _GLOBAL1_UCAST_PRFXLEN));
                _DST(v6merge(_GLOBAL2_UCAST_PRFX, _GLOBAL2_UCAST_PRFXLEN,
                             v6("::1"))); },
             {  Identifier=any;
		SequenceNumber=any;
		payload=apl; }
)

Payload apl {
	data=0x00;
	data=0x00;
}

//end
