/* * * Copyright (C) 2003 Yokogawa Electric Corporation , * INTAP(Interoperability Technology Association for Information * Processing, Japan) , IPA (Information-technology Promotion Agency,Japan) * Copyright (C) IBM Corporation 2003. * 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. * * Author: Kazuo Hiekata * */ /*-----------------------------------------------------------------------------------* * * General * *-----------------------------------------------------------------------------------*/ #define LLOCAL_PREFIX "fe80::" #define _LINK_LOCAL_MULTICAST "ff02::1" #define LINK_LOCAL_MULTICAST v6(_LINK_LOCAL_MULTICAST) #define _LINK_LOCAL_ROUTER_MUTLICAST "ff02::02" #define LINK_LOCAL_ROUTER_MUTLICAST v6(_LINK_LOCAL_ROUTER_MUTLICAST) #define SERVER1_ROUTER_PREFIX v6("3ffe:501:ffff:100::") #define SERVER2_ROUTER_PREFIX v6("5ffe:501:ffff:100::") #define LINK_ALL_ROUTER_MAC ether("33:33:00:00:00:02") /*-----------------------------------------------------------------------------------* * * Definitions * Please be carefully of the changing of parameters!!!!!! * Keep a consistent net toplogy in whole development * (consitent network parameters) *-----------------------------------------------------------------------------------*/ // for server test // @ 8/9 changed NUT_GLOBAL_UCAST for unicast option test #define NUT_LLOCAL_UCAST nut2v6(LLOCAL_PREFIX, 64) #define NUTSERVER_LLOCAL_UCAST v6("fe80::200:ff:fe00:a1a1") #define NUT_GLOBAL_UCAST v6("3ffe:501:ffff:100::abcd") #define NUT_GLOBAL_UCAST1 NUT_GLOBAL_UCAST #define NUT_GLOBAL_UCAST2 v6("3ffe:501:ffff:100::6666") #define NUTRELAY1_LINK0_GLOBAL_UCAST v6("3ffe:501:ffff:100:200:ff:fe00:a4a4") #define NUTRELAY1_LINK1_GLOBAL_UCAST v6("3ffe:501:ffff:101:200:ff:fe00:a5a5") #define NUTRELAY1_LINK0_LLOCAL_UCAST nutv6("Link0") #ifdef LINK1 #define NUTRELAY1_LINK1_LLOCAL_UCAST nutv6("Link1") #else #define NUTRELAY1_LINK1_LLOCAL_UCAST nutv6("Link0") #endif #define NUT_MAC_ADDR nutether() #define NUT_GLOBAL_NOTONLINK v6("3ffe:503:ffff:100::abcd") #define DNS_SVR1_GLOBAL_UCAST v6("3ffe:501:ffff:100:200:ff:fe00:3f3e") #define DNS_SVR2_GLOBAL_UCAST v6("3ffe:501:ffff:100:200:ff:fe00:3e3f") #define _SERVER1_LLOCAL_UCAST "fe80::200:ff:fe00:a1a1" #define _SERVER1_GLOBAL_UCAST "3ffe:501:ffff:100:200:ff:fe00:a1a1" #define _SERVER1_MAC_ADDR "00:00:00:00:a1:a1" #define SERVER1_LLOCAL_UCAST v6(_SERVER1_LLOCAL_UCAST) #define SERVER1_GLOBAL_UCAST v6(_SERVER1_GLOBAL_UCAST) #define SERVER1_MAC_ADDR ether(_SERVER1_MAC_ADDR) #define _SERVER2_LLOCAL_UCAST "fe80::200:ff:fe00:a6a6" #define _SERVER2_GLOBAL_UCAST "3ffe:501:ffff:101:200:ff:fe00:a6a6" #define _SERVER2_MAC_ADDR "00:00:00:00:a6:a6" #define SERVER2_LLOCAL_UCAST v6(_SERVER2_LLOCAL_UCAST) #define SERVER2_GLOBAL_UCAST v6(_SERVER2_GLOBAL_UCAST) #define SERVER2_MAC_ADDR ether(_SERVER2_MAC_ADDR) #define _CLIENT1_LLOCAL_UCAST "fe80::200:ff:fe00:a2a2" #define _CLIENT1_GLOBAL_UCAST "3ffe:501:ffff:100:200:ff:fe00:a2a2" #define _CLIENT1_MAC_ADDR "00:00:00:00:a2:a2" #define CLIENT1_LLOCAL_UCAST v6(_CLIENT1_LLOCAL_UCAST) #define CLIENT1_GLOBAL_UCAST v6(_CLIENT1_GLOBAL_UCAST) #define CLIENT1_MAC_ADDR ether(_CLIENT1_MAC_ADDR) // For address assgin test; #define _CLIENT2_LLOCAL_UCAST "fe80::200:ff:fe00:a3a3" #define _CLIENT2_GLOBAL_UCAST "3ffe:501:ffff:100:200:ff:fe00:a3a3" #define _CLIENT2_MAC_ADDR "00:00:00:00:a3:a3" #define CLIENT2_LLOCAL_UCAST v6(_CLIENT2_LLOCAL_UCAST) #define CLIENT2_GLOBAL_UCAST v6(_CLIENT2_GLOBAL_UCAST) #define CLIENT2_MAC_ADDR ether(_CLIENT2_MAC_ADDR) #define _RELAY1_0_LLOCAL_UCAST "fe80::200:ff:fe00:a4a4" #define _RELAY1_0_GLOBAL_UCAST "3ffe:501:ffff:100:200:ff:fe00:a4a4" #define _RELAY1_0_MAC_ADDR "00:00:00:00:a4:a4" #define RELAY1_0_LLOCAL_UCAST v6(_RELAY1_0_LLOCAL_UCAST) #define RELAY1_0_GLOBAL_UCAST v6(_RELAY1_0_GLOBAL_UCAST) #define RELAY1_0_MAC_ADDR ether(_RELAY1_0_MAC_ADDR) #define _RELAY1_1_LLOCAL_UCAST "fe80::200:ff:fe00:a5a5" #define _RELAY1_1_GLOBAL_UCAST "3ffe:501:ffff:101:200:ff:fe00:a5a5" #define _RELAY1_1_MAC_ADDR "00:00:00:00:a5:a5" #define RELAY1_1_LLOCAL_UCAST v6(_RELAY1_1_LLOCAL_UCAST) #define RELAY1_1_GLOBAL_UCAST v6(_RELAY1_1_GLOBAL_UCAST) #define RELAY1_1_MAC_ADDR ether(_RELAY1_1_MAC_ADDR) #define _RELAY2_1_LLOCAL_UCAST "fe80::200:ff:fe00:a7a7" #define _RELAY2_1_GLOBAL_UCAST "3ffe:501:ffff:101:200:ff:fe00:a7a7" #define _RELAY2_1_MAC_ADDR "00:00:00:00:a7:a7" #define RELAY2_1_LLOCAL_UCAST v6(_RELAY2_1_LLOCAL_UCAST) #define RELAY2_1_GLOBAL_UCAST v6(_RELAY2_1_GLOBAL_UCAST) #define RELAY2_1_MAC_ADDR ether(_RELAY2_1_MAC_ADDR) #define _RELAY2_2_LLOCAL_UCAST "fe80::200:ff:fe00:a8a8" #define _RELAY2_2_GLOBAL_UCAST "3ffe:501:ffff:102:200:ff:fe00:a8a8" #define _RELAY2_2_MAC_ADDR "00:00:00:00:a8:a8" #define RELAY2_2_LLOCAL_UCAST v6(_RELAY2_2_LLOCAL_UCAST) #define RELAY2_2_GLOBAL_UCAST v6(_RELAY2_2_GLOBAL_UCAST) #define RELAY2_2_MAC_ADDR ether(_RELAY2_2_MAC_ADDR) #define ALLDHCPAGENTS_MCAST_ADDR v6(_ALLDHCPAGENTS_MCAST_ADDR) #define ALLDHCPSEVERS_MCAST_ADDR v6(_ALLDHCPSERVERS_MCAST_ADDR) //"test.com" #define DNS_DOMAIN_SEARCHLIST_STR "047465737403636f6d00" _HETHER_define(_HETHER_client1_to_nut , CLIENT1_MAC_ADDR , NUT_MAC_ADDR) _HETHER_define(_HETHER_client2_to_nut , CLIENT2_MAC_ADDR , NUT_MAC_ADDR) _HETHER_define(_HETHER_server1_to_nut , SERVER1_MAC_ADDR , NUT_MAC_ADDR) _HETHER_define(_HETHER_server2_to_nut , SERVER2_MAC_ADDR , NUT_MAC_ADDR) _HETHER_define(_HETHER_nut_to_client1 , NUT_MAC_ADDR , CLIENT1_MAC_ADDR) _HETHER_define(_HETHER_server1_to_client1 , SERVER1_MAC_ADDR , CLIENT1_MAC_ADDR) _HETHER_define(_HETHER_nut_to_server1 , NUT_MAC_ADDR , SERVER1_MAC_ADDR) _HETHER_define(_HETHER_nut_to_client2 , NUT_MAC_ADDR , CLIENT2_MAC_ADDR) _HETHER_define(_HETHER_nut_to_server2 , NUT_MAC_ADDR , SERVER2_MAC_ADDR) _HETHER_define(_HETHER_nut_to_relay2 , NUT_MAC_ADDR , RELAY2_2_MAC_ADDR) _HETHER_define(_HETHER_nut_to_alldhcp , NUT_MAC_ADDR , v62ethermulti(v6(_ALLDHCPAGENTS_MCAST_ADDR))) _HETHER_define(_HETHER_nutrelayforward_to_alldhcp , NUT_MAC_ADDR , v62ethermulti(v6(_ALLDHCPSERVERS_MCAST_ADDR))) _HETHER_define(_HETHER_client1_to_all , CLIENT1_MAC_ADDR , v62ethermulti(v6(_ALLNODES_MCAST_ADDR))) _HETHER_define(_HETHER_client1_to_alldhcp , CLIENT1_MAC_ADDR , v62ethermulti(v6(_ALLDHCPAGENTS_MCAST_ADDR))) _HETHER_define(_HETHER_any , any , any) _HETHER_define(_HETHER_nut_dad, NUT_MAC_ADDR, _ETHER_SOLNODE_MCAST(NUT_GLOBAL_UCAST)) _HETHER_define(_HETHER_relay1_0_to_nut , RELAY1_0_MAC_ADDR, NUT_MAC_ADDR) _HETHER_define(_HETHER_relay1_1_to_nut , RELAY1_1_MAC_ADDR, NUT_MAC_ADDR) _HETHER_define(_HETHER_relay1_0_to_alldhcp , RELAY1_0_MAC_ADDR, v62ethermulti(v6(_ALLDHCPAGENTS_MCAST_ADDR))) _HETHER_define(_HETHER_relay1_1_to_alldhcp , RELAY1_1_MAC_ADDR, v62ethermulti(v6(_ALLDHCPAGENTS_MCAST_ADDR))) _HETHER_define(_HETHER_relay2_1_to_nut , RELAY2_1_MAC_ADDR, NUT_MAC_ADDR) _HETHER_define(_HETHER_relay2_1_to_alldhcp , RELAY2_1_MAC_ADDR, v62ethermulti(v6(_ALLDHCPAGENTS_MCAST_ADDR))) _HETHER_define(_HETHER_relay2_1_to_relay1_1 , RELAY2_1_MAC_ADDR, RELAY1_1_MAC_ADDR) _HETHER_define(_HETHER_nut_to_linkallrouter , NUT_MAC_ADDR, LINK_ALL_ROUTER_MAC) #define OPTION_CLIENTID 1 #define OPTION_SERVERID 2 #define OPTION_IA_NA 3 #define OPTION_IA_TA 4 #define OPTION_IAADDR 5 #define OPTION_ORO 6 #define OPTION_PREFERENCE 7 #define OPTION_ELAPSED_TIME 8 #define OPTION_RELAY_MSG 9 #define OPTION_ORO 10 #define OPTION_AUTH 11 #define OPTION_UNICAST 12 #define OPTION_STATUS_CODE 13 #define OPTION_RAPID_COMMIT 14 #define OPTION_USER_CLASS 15 #define OPTION_VENDOR_CLASS 16 #define OPTION_VENDOR_OPTS 17 #define OPTION_INTERFACE_ID 18 #define OPTION_RECONF_MSG 19 #define OPTION_RECONF_ACCEPT 20 #define OPTION_SIP_SERVER_D 21 #define OPTION_SIP_SERVER_A 22 #define OPTION_DNS_SERVERS 23 #define OPTION_DNS_DOMAIN_LIST 24 #define OPTION_IA_PD 25 #define OPTION_IAPREFIX 26 /*-----------------------------------------------------------------------------------* * DHCPv6 options *-----------------------------------------------------------------------------------*/ // for DUID #ifndef NUT_DUID_TIME #define NUT_DUID_TIME 200000 #endif #ifndef NUT_DUID_MAC_ADDR #define NUT_DUID_MAC_ADDR nutether() #endif #ifndef CID_DUID_TIME #define CID_DUID_TIME 300000 #endif #ifndef SID_DUID_TIME #define SID_DUID_TIME 400000 #endif #ifndef TN_DUID_MAC_ADDR #define TN_DUID_MAC_ADDR ether(_TN_MAC_ADDR) #endif #ifndef NUT_DUID_EN_ID #define NUT_DUID_EN_ID repeat(0x01, 8) #endif #ifndef NUT_DUID_EN_ENNUM #define NUT_DUID_EN_ENNUM repeat(0x01, 8) #endif // for IA_TA/IA_NA #ifndef IA_ADDR_ADDR #define IA_ADDR_ADDR NUT_GLOBAL_UCAST #endif #ifndef IA_ADDR_ADDR_1 #define IA_ADDR_ADDR_1 NUT_GLOBAL_UCAST1 #endif #ifndef IA_ADDR_ADDR_2 #define IA_ADDR_ADDR_2 NUT_GLOBAL_UCAST2 #endif #ifndef IA_ADDR_ADDR_NOTONLINK #define IA_ADDR_ADDR_NOTONLINK NUT_GLOBAL_NOTONLINK #endif #ifndef IA_ADDR_PLTIME #define IA_ADDR_PLTIME 10000 #endif #ifndef IA_ADDR_VLTIME #define IA_ADDR_VLTIME 20000 #endif #ifndef IA_NA_IDENTIFIER #define IA_NA_IDENTIFIER 101010 #endif #ifndef IA_NA_IDENTIFIER1 #define IA_NA_IDENTIFIER1 101011 #endif #ifndef IA_NA_IDENTIFIER_1 #define IA_NA_IDENTIFIER_1 101011 #endif #ifndef IA_NA_IDENTIFIER_2 #define IA_NA_IDENTIFIER_2 101012 #endif #ifndef IA_TA_IDENTIFIER #define IA_TA_IDENTIFIER 202020 #endif #ifndef IA_PD_IDENTIFIER #define IA_PD_IDENTIFIER 303030 #endif #ifndef IA_PD_IDENTIFIER_1 #define IA_PD_IDENTIFIER_1 0 #endif #ifndef IA_PD_IDENTIFIER_2 #define IA_PD_IDENTIFIER_2 1 #endif #ifndef IA_NA_TIME1 #define IA_NA_TIME1 4000 #endif #ifndef IA_NA_TIME2 #define IA_NA_TIME2 5000 #endif #ifndef IA_STATUSCODE #define IA_STATUSCODE 0 #endif #ifndef IA_STATUSCODE_1 #define IA_STATUSCODE_1 0 #endif #ifndef IA_STATUSCODE_2 #define IA_STATUSCODE_2 0 #endif #ifndef IA_PREFIX_STATUSCODE #define IA_PREFIX_STATUSCODE 0 #endif #ifndef PREFERENCE #define PREFERENCE 10 #endif //IA_PD time #ifndef IA_PD_TIME1 #define IA_PD_TIME1 4000 #endif #ifndef IA_PD_TIME2 #define IA_PD_TIME2 5000 #endif //IA_PREFIX Option Time #ifndef IA_PREFIX_PLTIME #define IA_PREFIX_PLTIME 4000 #endif #ifndef IA_PREFIX_VLTIME #define IA_PREFIX_VLTIME 5000 #endif //IA_PREFIX Option Prefix #ifndef IA_PREFIX_PREFIX #define IA_PREFIX_PREFIX SERVER1_ROUTER_PREFIX #endif #ifndef IA_PREFIX_PREFIX_1 #define IA_PREFIX_PREFIX_1 SERVER1_ROUTER_PREFIX #endif #ifndef IA_PREFIX_PREFIX_2 #define IA_PREFIX_PREFIX_2 SERVER2_ROUTER_PREFIX #endif #ifndef IA_PREFIX_LEN #define IA_PREFIX_LEN 64 #endif //#define IID_IDENTIFIER repeat(0x00, 8) #ifndef IID_IDENTIFIER #define IID_IDENTIFIER repeat(0x00, 4) #endif //DNS options #ifndef IA_DNSSVR1_ADDR #define IA_DNSSVR1_ADDR #endif #ifndef IA_DNSSVR2_ADDR #define IA_DNSSVR2_ADDR #endif // transaction ID #ifndef ID_SOL #define ID_SOL 100 #endif #ifndef ID_REQ #define ID_REQ 101 #endif #ifndef ID_INFOREQ #define ID_INFOREQ 102 #endif #ifndef ID_ADV #define ID_ADV 103 #endif #ifndef ID_REP #define ID_REP 104 #endif #ifndef ID_CONFIRM #define ID_CONFIRM 105 #endif #ifndef ID_RENEW #define ID_RENEW 106 #endif #ifndef ID_REBIND #define ID_REBIND 106 #endif #ifndef ID_RELEASE #define ID_RELEASE 107 #endif #ifndef ID_DECLINE #define ID_DECLINE 108 #endif #ifndef ID_RECONF #define ID_RECONF 109 #endif #ifndef DUIDANY_SID_TYPE #define DUIDANY_SID_TYPE 255 #endif #ifndef DUIDANY_SID_DATA #define DUIDANY_SID_DATA repeat(0x00, 8) #endif //================================================================ // DHCP unique identifier //================================================================ //--------------------------------------- // DUID any //--------------------------------------- DHCPv6_DUID_ANY duid_ANY { Type = 255; data = repeat(0x00, 8); } DHCPv6_DUID_ANY duid_SID_ANY { Type = DUIDANY_SID_TYPE; data = DUIDANY_SID_DATA; } //--------------------------------------- // DUID-LLT (Link-layer Address Plus Time) //--------------------------------------- DHCPv6_DUID_LLT_ANY duid_LLT_ANY { HardwareType = 255; LinkLayerAddress = repeat(0x12, 8); } #ifndef NUT_DUID_HARDWARE_TYPE #define NUT_DUID_HARDWARE_TYPE 1 #endif DHCPv6_DUID_LLT_Ether duid_LLT_nut { HardwareType = NUT_DUID_HARDWARE_TYPE; Time = NUT_DUID_TIME; LinkLayerAddress = NUT_DUID_MAC_ADDR; } DHCPv6_DUID_LLT_Ether duid_LLT_client1 { Time = CID_DUID_TIME; LinkLayerAddress = CLIENT1_MAC_ADDR; } DHCPv6_DUID_LLT_Ether duid_LLT_client2{ Time = CID_DUID_TIME; LinkLayerAddress = CLIENT2_MAC_ADDR; } DHCPv6_DUID_LLT_Ether duid_LLT_server1 { Time = SID_DUID_TIME; LinkLayerAddress = SERVER1_MAC_ADDR; } DHCPv6_DUID_LLT_Ether duid_LLT_server2{ Time = SID_DUID_TIME; LinkLayerAddress = SERVER2_MAC_ADDR; } //--------------------------------------- // DUID-EN (Enterprise Number) //--------------------------------------- DHCPv6_DUID_EN duid_EN { Identifier = repeat(0x01, 8); } DHCPv6_DUID_EN duid_EN_nut { EnterpriseNumber = NUT_DUID_EN_ENNUM; Identifier = NUT_DUID_EN_ID; } //--------------------------------------- // DUID-LL (Link-layer Address) //--------------------------------------- DHCPv6_DUID_LL_ANY duid_LL_ANY { HardwareType = 255; LinkLayerAddress = repeat(0x12, 8); } DHCPv6_DUID_LL_Ether duid_LL_nut { HardwareType = NUT_DUID_HARDWARE_TYPE; LinkLayerAddress = NUT_DUID_MAC_ADDR; } DHCPv6_DUID_LL_Ether duid_LL_client1 { LinkLayerAddress = CLIENT1_MAC_ADDR; } DHCPv6_DUID_LL_Ether duid_LL_client2 { LinkLayerAddress = CLIENT2_MAC_ADDR; } DHCPv6_DUID_LLT_Ether duid_LL_server1 { LinkLayerAddress = SERVER1_MAC_ADDR; } DHCPv6_DUID_LLT_Ether duid_LL_server2 { LinkLayerAddress = SERVER2_MAC_ADDR; } //================================================================ // Client Identifier option // Opt_DHCPv6_CID opt_CID_LLT_nut { duid = duid_LLT_nut; } Opt_DHCPv6_CID opt_CID_ANY { duid = duid_ANY; } Opt_DHCPv6_CID opt_CID_LLT_client1 { duid = duid_LLT_client1; } Opt_DHCPv6_CID opt_CID_LLT_client2 { duid = duid_LLT_client2; } Opt_DHCPv6_CID opt_CID_LL_client1 { duid = duid_LL_client1; } Opt_DHCPv6_CID opt_CID_LL_client2 { duid = duid_LL_client2; } Opt_DHCPv6_CID opt_CID_EN { duid = duid_EN; } Opt_DHCPv6_CID opt_CID_EN_nut { duid = duid_EN_nut; } Opt_DHCPv6_CID opt_CID_LL_nut { duid = duid_LL_nut; } //================================================================ // Server Identifier option // Opt_DHCPv6_SID opt_SID_ANY { duid = duid_SID_ANY; } Opt_DHCPv6_SID opt_SID_LLT_nut { duid = duid_LLT_nut; } Opt_DHCPv6_SID opt_SID_LL_nut { duid = duid_LL_nut; } Opt_DHCPv6_SID opt_SID_LLT_server1 { duid = duid_LLT_server1; } Opt_DHCPv6_SID opt_SID_LL_server1 { duid = duid_LL_server1; } Opt_DHCPv6_SID opt_SID_LLT_server2 { duid = duid_LLT_server2; } Opt_DHCPv6_SID opt_SID_LL_server2 { duid = duid_LL_server2; } Opt_DHCPv6_SID opt_SID_EN { duid = duid_EN; } //================================================================ // IA_NA (Identity Association for Non-temporary Addresses Option) // Opt_DHCPv6_IA_NA opt_IA_NA { Identifier = IA_NA_IDENTIFIER; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; } Opt_DHCPv6_IA_NA opt_IA_NA1 { Identifier = IA_NA_IDENTIFIER1; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; } Opt_DHCPv6_IA_NA opt_IA_NA_Addr { Identifier = IA_NA_IDENTIFIER; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_IA_Address; } Opt_DHCPv6_IA_NA opt_IA_NA_Addr_woStatus { Identifier = IA_NA_IDENTIFIER; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_IA_Address_woStatus; } Opt_DHCPv6_IA_NA opt_IA_NA_Addr_woStatus_1{ Identifier = IA_NA_IDENTIFIER; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_IA_Address_woStatus_1; } Opt_DHCPv6_IA_NA opt_IA_NA_StatusOnly { Identifier = IA_NA_IDENTIFIER; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_StatusCode; } Opt_DHCPv6_IA_NA opt_IA_NA_Addr_1{ Identifier = IA_NA_IDENTIFIER_1; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_IA_Address_1; } Opt_DHCPv6_IA_NA opt_IA_NA_Addr_2{ Identifier = IA_NA_IDENTIFIER_2; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_IA_Address_2; } Opt_DHCPv6_IA_NA opt_IA_NA_StatusOnly_1{ Identifier = IA_NA_IDENTIFIER_1; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_StatusCode_1; } Opt_DHCPv6_IA_NA opt_IA_NA_StatusOnly_2{ Identifier = IA_NA_IDENTIFIER_2; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_StatusCode_2; } Opt_DHCPv6_IA_NA opt_IA_NA_Addr_2IAAddr { Identifier = IA_NA_IDENTIFIER; Time1 = IA_NA_TIME1; Time2 = IA_NA_TIME2; option = opt_IA_Address_1; option = opt_IA_Address_2; } //================================================================ // IA_TA (Identity Association for Temporary Addresses Option) // Opt_DHCPv6_IA_TA opt_IA_TA { Identifier = IA_TA_IDENTIFIER; } Opt_DHCPv6_IA_TA opt_IA_TA_Addr { Identifier = IA_TA_IDENTIFIER; option = opt_IA_Address; } Opt_DHCPv6_IA_TA opt_IA_TA_Addr_woStatus { Identifier = IA_TA_IDENTIFIER; option = opt_IA_Address_woStatus_1; } //================================================================ // IA_PD (Identity Association for PD Option) // Opt_DHCPv6_IA_PD opt_IA_PD { Identifier = IA_PD_IDENTIFIER; Time1 = 500; Time2 = 1000; // option = opt_IA_Address; } Opt_DHCPv6_IA_PD opt_IA_PD1 { Identifier = IA_PD_IDENTIFIER_1; Time1 = 500; Time2 = 1000; option = opt_IA_Prefix_1; } Opt_DHCPv6_IA_PD opt_IA_PD2 { Identifier = IA_PD_IDENTIFIER_2; Time1 = 500; Time2 = 1000; option = opt_IA_Prefix_2; } Opt_DHCPv6_IA_PD opt_IA_PD_Prefix { Time1 = 500; Time2 = 1000; Identifier = IA_PD_IDENTIFIER; option = opt_IA_Prefix; } Opt_DHCPv6_IA_PD opt_IA_PD_config { Time1 = IA_PD_TIME1; Time2 = IA_PD_TIME2; Identifier = IA_PD_IDENTIFIER; option = opt_IA_Prefix_status; } Opt_DHCPv6_IA_PD opt_IA_PD_NoAvail { option = opt_Prefix_StatusCode; } Opt_DHCPv6_IA_PD opt_IA_PD_Status { Identifier = IA_PD_IDENTIFIER; option = opt_StatusCode; } Opt_DHCPv6_IA_PD opt_IA_PD_2Prefix { Time1 = IA_PD_TIME1; Time2 = IA_PD_TIME2; Identifier = IA_PD_IDENTIFIER; option = opt_IA_Prefix_1; option = opt_IA_Prefix_2; } Opt_DHCPv6_IA_Prefix opt_IA_Prefix { PreferredLifetime = 1000; ValidLifetime = 2000; PrefixLength = 48; Prefix = v6("3ffe:ffff:1000::"); // option = opt_ElapsedTime; } Opt_DHCPv6_IA_Prefix opt_IA_Prefix_status{ PreferredLifetime = IA_PREFIX_PLTIME; ValidLifetime = IA_PREFIX_VLTIME; PrefixLength = IA_PREFIX_LEN; Prefix = IA_PREFIX_PREFIX; option = opt_Prefix_StatusCode; } Opt_DHCPv6_IA_Prefix opt_IA_Prefix_NoAvail{ //PreferredLifetime = IA_PREFIX_PLTIME; //ValidLifetime = IA_PREFIX_VLTIME; //PrefixLength = IA_PREFIX_LEN; //Prefix = IA_PREFIX_PREFIX; option = opt_Prefix_StatusCode; } Opt_DHCPv6_IA_Prefix opt_IA_Prefix_1{ PreferredLifetime = IA_PREFIX_PLTIME; ValidLifetime = IA_PREFIX_VLTIME; PrefixLength = IA_PREFIX_LEN; Prefix = IA_PREFIX_PREFIX_1; option = opt_Prefix_StatusCode; } Opt_DHCPv6_IA_Prefix opt_IA_Prefix_2{ PreferredLifetime = IA_PREFIX_PLTIME; ValidLifetime = IA_PREFIX_VLTIME; PrefixLength = IA_PREFIX_LEN; Prefix = IA_PREFIX_PREFIX_2; option = opt_Prefix_StatusCode; } //================================================================ // IA Address option // Opt_DHCPv6_IA_Address opt_IA_Address { Address = IA_ADDR_ADDR; PreferredLifetime = IA_ADDR_PLTIME; ValidLifetime = IA_ADDR_VLTIME; option = opt_StatusCode; } //================================================================ // IA Address option // Opt_DHCPv6_IA_Address opt_IA_Address_1{ Address = IA_ADDR_ADDR_1; PreferredLifetime = IA_ADDR_PLTIME; ValidLifetime = IA_ADDR_VLTIME; option = opt_StatusCode_1; } Opt_DHCPv6_IA_Address opt_IA_Address_2{ Address = IA_ADDR_ADDR_2; PreferredLifetime = IA_ADDR_PLTIME; ValidLifetime = IA_ADDR_VLTIME; option = opt_StatusCode_2; } Opt_DHCPv6_IA_Address opt_IA_Address_woStatus { Address = IA_ADDR_ADDR; PreferredLifetime = IA_ADDR_PLTIME; ValidLifetime = IA_ADDR_VLTIME; } Opt_DHCPv6_IA_Address opt_IA_Address_woStatus_1 { Address = NUT_GLOBAL_UCAST1; PreferredLifetime = IA_ADDR_PLTIME; ValidLifetime = IA_ADDR_VLTIME; } //================================================================ // Option Request option // Opt_DHCPv6_OptionRequest opt_All_ORO { //OptionCode = 0; //OptionCode = OPTION_CLIENTID; //OptionCode = OPTION_SERVERID; //OptionCode = OPTION_IA_NA; //OptionCode = OPTION_IA_TA; //OptionCode = OPTION_IAADDR; //OptionCode = OPTION_ORO; OptionCode = OPTION_PREFERENCE; //OptionCode = OPTION_ELAPSED_TIME; //OptionCode = OPTION_RELAY_MSG; //OptionCode = OPTION_AUTH; //OptionCode = OPTION_UNICAST; //OptionCode = OPTION_STATUS_CODE; //OptionCode = OPTION_RAPID_COMMIT; //OptionCode = OPTION_USER_CLASS; //OptionCode = OPTION_VENDOR_CLASS; //OptionCode = OPTION_VENDOR_OPTS; //OptionCode = OPTION_INTERFACE_ID; //OptionCode = OPTION_RECONF_MSG; //OptionCode = OPTION_RECONF_ACCEPT; OptionCode = OPTION_DNS_SERVERS; } Opt_DHCPv6_OptionRequest opt_ORO_pref_unicast { OptionCode = OPTION_PREFERENCE; OptionCode = OPTION_UNICAST; } Opt_DHCPv6_OptionRequest opt_ORO_dns_servers { OptionCode = OPTION_DNS_SERVERS; } //for stateless test items Opt_DHCPv6_OptionRequest opt_ORO_dns_servers_statuscode { OptionCode = OPTION_DNS_SERVERS; OptionCode = OPTION_STATUS_CODE; } Opt_DHCPv6_OptionRequest opt_ORO_sip { OptionCode = OPTION_SIP_SERVER_D; OptionCode = OPTION_SIP_SERVER_A; } Opt_DHCPv6_OptionRequest opt_ORO_dns_domainlists { OptionCode = OPTION_DNS_DOMAIN_LIST; } Opt_DHCPv6_OptionRequest opt_ORO_pref_dns { OptionCode = OPTION_PREFERENCE; OptionCode = OPTION_DNS_SERVERS; } Opt_DHCPv6_OptionRequest opt_ORO_pref { OptionCode = OPTION_PREFERENCE; } Opt_DHCPv6_OptionRequest opt_Solicit_ORO { OptionCode =OPTION_IA_NA; } Opt_DHCPv6_OptionRequest opt_OptionRequest_IA_NA { OptionCode =OPTION_IA_NA; } Opt_DHCPv6_OptionRequest opt_OptionRequest_IA_TA { OptionCode = OPTION_IA_TA; } Opt_DHCPv6_OptionRequest opt_OptionRequest_IA_PD { OptionCode = OPTION_IA_PD; } Opt_DHCPv6_OptionRequest opt_OptionRequest_Unicast { OptionCode = OPTION_UNICAST; } //================================================================ // Preference option // Opt_DHCPv6_Preference opt_Preference { Preference = PREFERENCE; } //================================================================ // Elapsed Time option // Opt_DHCPv6_ElapsedTime opt_ElapsedTime {} //================================================================ // Relay Message option // //Opt_DHCPv6_RelayMessage opt_RelayMessage { // relay = _UDP_DHCPV6_NAME(Advertise); //} Opt_DHCPv6_RelayMessage opt_RelayMessage1 { } //================================================================ // Authentication option // Opt_DHCPv6_Authentication opt_Authentication { ReplayDetection = hexstr("0000000000000001", 8); //auth = repeat(0x00, 8); } //================================================================ // Server unicast option // Opt_DHCPv6_ServerUnicast opt_ServerUnicast { Address = NUT_LLOCAL_UCAST; } Opt_DHCPv6_ServerUnicast opt_gaServerUnicast { Address = SERVER1_GLOBAL_UCAST; } Opt_DHCPv6_ServerUnicast opt_laServerUnicast { Address = SERVER1_LLOCAL_UCAST; } //================================================================ // Status Code Option // Opt_DHCPv6_StatusCode opt_StatusCode { StatusCode = IA_STATUSCODE; Message = repeat(0x00, 2); } Opt_DHCPv6_StatusCode opt_StatusCode_1 { StatusCode = IA_STATUSCODE_1; Message = repeat(0x00, 2); } Opt_DHCPv6_StatusCode opt_StatusCode_2 { StatusCode = IA_STATUSCODE_2; Message = repeat(0x00, 2); } Opt_DHCPv6_StatusCode opt_Prefix_StatusCode { StatusCode = IA_PREFIX_STATUSCODE; Message = repeat(0x00, 2); } //================================================================ // Rapid Commit option // Opt_DHCPv6_RapidCommit opt_RapidCommit {} //================================================================ // User Class option // Opt_DHCPv6_UserClass opt_UserClass { data = user_class_data0; data = user_class_data1; data = user_class_data2; } DHCPv6_UserClassData user_class_data0 {} DHCPv6_UserClassData user_class_data1 { data = repeat(0x08, 8); } DHCPv6_UserClassData user_class_data2 { data = repeat(0x16, 16); } //================================================================ // Vendor Class Option // Opt_DHCPv6_VendorClass opt_VendorClass { data = vendor_class_data0; data = vendor_class_data1; data = vendor_class_data2; } DHCPv6_VendorClassData vendor_class_data0 {} DHCPv6_VendorClassData vendor_class_data1 { data = repeat(0x08, 8); } DHCPv6_VendorClassData vendor_class_data2 { data = repeat(0x16, 16); } //================================================================ // Vendor-specific Information option // Opt_DHCPv6_VendorSpecificInfo opt_VendorSpecificInfo { data = option_data0; data = option_data1; data = option_data2; } DHCPv6_OptionData option_data0 {} DHCPv6_OptionData option_data1 { data = repeat(0x08, 8); } DHCPv6_OptionData option_data2 { data = repeat(0x16, 16); } //================================================================ // Interface-Id Option // Opt_DHCPv6_IID opt_IID { Identifier = IID_IDENTIFIER; } //================================================================ // Reconfigure Message option // Opt_DHCPv6_ReconfigureMessage opt_ReconfigureMessage { } //================================================================ // Reconfigure Accept option // Opt_DHCPv6_ReconfigureAccept opt_ReconfigureAccept { } //================================================================ // DNS Severs option // Opt_DHCPv6_DNS_Servers opt_DNS_Server { Address = DNS_SVR1_GLOBAL_UCAST; Address = DNS_SVR2_GLOBAL_UCAST; } Opt_DHCPv6_DNS_Servers opt_DNS_Server1 { Address = v6("3ffe:ffff::1234"); } //================================================================ // DNS Domain search list option // Opt_DHCPv6_DNS_SearchList opt_DNS_ServerSearchList { SearchString = hexstr(DNS_DOMAIN_SEARCHLIST_STR); } //================================================================ #ifdef PD_TROAN // // Prefix Delegation Option // //////////////////////////////// Opt_DHCPv6_PrefixDelegation opt_PrefixDelegation { option = opt_PrefixInformation; } // // Prefix Information option // //////////////////////////////// Opt_DHCPv6_PrefixInformation opt_PrefixInformation { Prefix = v6("3ffe::7"); } // // Prefix Request option // //////////////////////////////// Opt_DHCPv6_PrefixRequest opt_PrefixRequest {} #else /* // // IA_PD Prefix option // //////////////////////////////// Opt_DHCPv6_IA_PD opt_IA_PD { Time1 = IA_PD_TIME1; Time2 = IA_PD_TIME2; option = opt_IA_Prefix; } // // IA_PD Prefix option // //////////////////////////////// Opt_DHCPv6_IA_Prefix opt_IA_Prefix { Prefix = v6("3ffe::7"); option = opt_ElapsedTime; } */ #endif