/*
* Copyright (C) 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
* INTAP(Interoperability Technology Association for Information
* Processing, Japan), 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.
*
* $TAHI: v6eval/lib/Pz/McInit.cc,v 1.92 2005/05/09 09:35:24 akisada Exp $
*/
#include "McSub.h"
#include "McNull.h"
#include "McEther.h"
#include "McIPv6.h"
#include "McICMPv6.h"
#include "McMobility.h"
#include "McRR.h"
#include "McIPv4.h"
#include "McICMPv4.h"
#include "McARP.h"
#include "McNoNext.h"
#include "McUDP.h"
#include "McTCP.h"
#include "McAlgorithm.h"
#include "McESP.h"
#include "McAH.h"
#include "McRIPng.h"
#include "McSIP.h"
#include "McDNS.h"
#include "McDHCPv6.h"
#include "McMLDv2.h"
#include "McIGMP.h"
#if !defined(NOT_USE_SNMP)
#include "McSNMP.h"
#endif // NOT_USE_SNMP
#include "McVRRP.h"
#include "McIKE.h"
#include "MmObject.h"
#include "MmChecksum.h"
#include "MmHeader.h"
#include "MmData.h"
#include "PvObject.h"
#include "PvOctets.h"
#include "PvAction.h"
#include "PvAutoItem.h"
#include "PControl.h"
#include "WObject.h"
#include <stdio.h>
#define UN(n) PvNumber::unique(n)
#define V6TN()PvV6Addr::TN()
#define V6NUT()PvV6Addr::NUT()
#define ETTN()PvEther::TN()
#define ETNUT()PvEther::NUT()
#define MUST()PvMUSTDEF::must()
#define EVALANY() new PvANY()
#define EVALZERO() new PvOctets(0, 0)
#define GENEHC(mc,cls,mem) new PvHCgene(mc,(HCgenefunc)&cls::HCGENE(mem))
#define EVALHC(mc,cls,mem) new PvHCeval(mc,(HCevalfunc)&cls::HCEVAL(mem))
#define ICVCONST() 0
#define ICVZERO() new ICV_Zero()
#define ICVHC(mc,cls,mem) new ICV_HC(mc,(METH_HC_OWICV)&cls::HC_OWICV(mem))
#define ICVOPTDATA(mc,cls) ICVHC(mc,cls,OptExtData)
#define DEF_EVALSKIP true
#define DEF_EVALGO false
#define DEF_OPTCHKSUM true
#define DEF_MUSTCHKSUM false
#define DEF_NOPSEUDO false
#define DEF_MUSTPSEUDO true
McObject *
McObject::addCompound(McObject *mc)
{
mc->confirmed();
set_.add(mc);
return(mc);
}
#define LEXADD(classname,lexname) addCompound(classname::create(lexname))
#define LEXADD2(classname,lexname,tophdrnm) \
addCompound(classname::create(lexname,tophdrnm))
#define LEXADD5(classname,lexname,tophdrnm0,tophdrnm1,tophdrnm2,tophdrnm3) \
addCompound(classname::create(lexname,tophdrnm0,tophdrnm1,tophdrnm2,tophdrnm3))
#define MCCR(classname,lexname) classname::create(lexname)
McObject *
McObject::initialize()
{
static bool hasBeenHere = false;
if(hasBeenHere) {
return(0);
}
hasBeenHere = true;
/* Payload */
LEXADD(McPayload, "Payload");
/* DataLinkLayer */
// Ether
McObject *mc =
LEXADD2(McFrame_Ether, "Frame_Ether", "Hdr_Ether");
LEXADD2(McFrame_Null, "Frame_Null", "Hdr_Null");
/* NetworkLayer */
// IPv6
LEXADD2(McPacket_IPv6, "Packet_IPv6", "Hdr_IPv6" );
LEXADD(McHdr_Ext_HopByHop, "Hdr_HopByHop" );
LEXADD(McHdr_Ext_Destination, "Hdr_Destination" );
LEXADD(McHdr_Ext_Routing, "Hdr_Routing" );
LEXADD(McHdr_Ext_Fragment, "Hdr_Fragment" );
LEXADD(McOpt_Ext_ANY, "Opt_ANY" );
LEXADD(McOpt_Ext_Pad1, "Opt_Pad1" );
LEXADD(McOpt_Ext_PadN, "Opt_PadN" );
LEXADD(McOpt_Ext_JumboPayload, "Opt_JumboPayload" );
LEXADD(McOpt_Ext_RouterAlert, "Opt_RouterAlert" );
LEXADD(McOpt_Ext_TunnelEncap, "Opt_TunnelEncapslation" );
LEXADD(McOpt_Ext_HomeAddress, "Opt_HomeAddress" );
// IPsec
LEXADD(McHdr_Ext_AH, "Hdr_AH" );
LEXADD(McAlgorithm_AH, "AHAlgorithm" );
LEXADD(McHdr_Ext_ESP, "Hdr_ESP" );
LEXADD(McAlgorithm_ESP, "ESPAlgorithm" );
// IPv4
LEXADD2(McPacket_IPv4, "Packet_IPv4","Hdr_IPv4" );
McOpt_IPv4::create_options();
//ARP
LEXADD2(McPacket_ARP, "Packet_ARP","Hdr_ARP" );
//RARP
LEXADD2(McPacket_RARP, "Packet_RARP","Hdr_RARP" );
/* UpperLayer */
//NoNext
LEXADD(McUpp_NoNext, "Upp_NoNext" );
// VRRP
LEXADD(McUpp_VRRPvX, "Upp_VRRPvX");
LEXADD(McUpp_VRRPv2, "Upp_VRRPv2");
LEXADD(McUpp_VRRPv3, "Upp_VRRPv3");
//ICMPv6
LEXADD(McUpp_ICMPv6_ANY, "ICMPv6_ANY" );
LEXADD(McUpp_ICMPv6_RS, "ICMPv6_RS" );
LEXADD(McUpp_ICMPv6_RA, "ICMPv6_RA" );
LEXADD(McUpp_ICMPv6_NS, "ICMPv6_NS" );
LEXADD(McUpp_ICMPv6_NA, "ICMPv6_NA" );
LEXADD(McUpp_ICMPv6_Redirect, "ICMPv6_Redirect" );
LEXADD(McUpp_ICMPv6_MLDQuery, "ICMPv6_MLDQuery");
LEXADD(McUpp_ICMPv6_MLDReport, "ICMPv6_MLDReport");
LEXADD(McUpp_ICMPv6_MLDDone, "ICMPv6_MLDDone");
LEXADD(McUpp_ICMPv6_MLDv2Report, "ICMPv6_MLDv2Report");
LEXADD(McUpp_ICMPv6_EchoRequest, "ICMPv6_EchoRequest" );
LEXADD(McUpp_ICMPv6_EchoReply, "ICMPv6_EchoReply" );
LEXADD(McUpp_ICMPv6_PacketTooBig, "ICMPv6_PacketTooBig" );
LEXADD(McUpp_ICMPv6_DestinationUnreachable,
"ICMPv6_DestinationUnreachable");
LEXADD(McUpp_ICMPv6_TimeExceeded, "ICMPv6_TimeExceeded" );
LEXADD(McUpp_ICMPv6_ParameterProblem,
"ICMPv6_ParameterProblem");
LEXADD(McUpp_ICMPv6_RouterRenumbering,
"ICMPv6_RouterRenumbering");
// LEXADD(McUpp_ICMPv6_NameLookups, "ICMPv6_NameLookups" );
LEXADD(McUpp_ICMPv6_HAADRequest, "ICMPv6_HAADRequest");
LEXADD(McUpp_ICMPv6_HAADReply, "ICMPv6_HAADReply");
LEXADD(McUpp_ICMPv6_MobilePrefixSolicit,
"ICMPv6_MobilePrefixSol");
LEXADD(McUpp_ICMPv6_MobilePrefixAdvertise,
"ICMPv6_MobilePrefixAdvertise");
LEXADD(McOpt_ICMPv6_ANY, "Opt_ICMPv6_ANY" );
LEXADD(McOpt_ICMPv6_SLL, "Opt_ICMPv6_SLL" );
LEXADD(McOpt_ICMPv6_TLL, "Opt_ICMPv6_TLL" );
LEXADD(McOpt_ICMPv6_Prefix, "Opt_ICMPv6_Prefix" );
LEXADD(McOpt_ICMPv6_Redirected, "Opt_ICMPv6_Redirected" );
LEXADD(McOpt_ICMPv6_MTU, "Opt_ICMPv6_MTU" );
LEXADD(McOpt_ICMPv6_AdvInterval, "Opt_ICMPv6_AdvInterval");
LEXADD(McOpt_ICMPv6_HomeAgentInfo, "Opt_ICMPv6_HomeAgentInfo");
LEXADD(McOpt_ICMPv6_RouteInfo, "Opt_ICMPv6_RouteInfo");
// Mobility Header
LEXADD(McHdr_Ext_MH_ANY, "Hdr_MH_ANY");
LEXADD(McHdr_Ext_MH_BRR, "Hdr_MH_BRR");
LEXADD(McHdr_Ext_MH_HoTI, "Hdr_MH_HoTI");
LEXADD(McHdr_Ext_MH_CoTI, "Hdr_MH_CoTI");
LEXADD(McHdr_Ext_MH_HoT, "Hdr_MH_HoT");
LEXADD(McHdr_Ext_MH_CoT, "Hdr_MH_CoT");
LEXADD(McHdr_Ext_MH_BU, "Hdr_MH_BU");
LEXADD(McHdr_Ext_MH_BA, "Hdr_MH_BA");
LEXADD(McHdr_Ext_MH_BE, "Hdr_MH_BE");
// Mobility Options
LEXADD(McOpt_MH_ANY, "Opt_MH_ANY");
LEXADD(McOpt_MH_Pad1, "Opt_MH_Pad1");
LEXADD(McOpt_MH_PadN, "Opt_MH_PadN");
LEXADD(McOpt_MH_BindingRefreshAdvice, "Opt_MH_BindingRefreshAdvice");
LEXADD(McOpt_MH_AlternateCoA, "Opt_MH_AlternateCoA");
LEXADD(McOpt_MH_NonceIndices, "Opt_MH_NonceIndices");
LEXADD(McOpt_MH_BindingAuthData, "Opt_MH_BindingAuthData");
LEXADD(McOpt_MH_MobNetworkPrefix, "Opt_MH_MobNetworkPrefix");
//ICMPv4
LEXADD(McUpp_ICMPv4_ANY, "ICMPv4_ANY" );
LEXADD(McUpp_ICMPv4_DestinationUnreachable,
"ICMPv4_DestinationUnreachable" );
LEXADD(McUpp_ICMPv4_TimeExceeded, "ICMPv4_TimeExceeded" );
LEXADD(McUpp_ICMPv4_ParameterProblem, "ICMPv4_ParameterProblem" );
LEXADD(McUpp_ICMPv4_Redirect, "ICMPv4_Redirect" );
LEXADD(McUpp_ICMPv4_EchoRequest, "ICMPv4_EchoRequest" );
LEXADD(McUpp_ICMPv4_EchoReply, "ICMPv4_EchoReply" );
//IGMP
LEXADD(McUpp_IGMP_ANY, "IGMP_ANY" );
LEXADD(McUpp_IGMP_IGMPQuery, "IGMP_IGMPQuery" );
LEXADD(McUpp_IGMP_IGMPv1Report, "IGMP_IGMPv1Report" );
LEXADD(McUpp_IGMP_IGMPv2Report, "IGMP_IGMPv2Report" );
LEXADD(McUpp_IGMP_IGMPv2LeaveGroup, "IGMP_IGMPv2LeaveGroup" );
LEXADD(McUpp_IGMP_IGMPv3Report, "IGMP_IGMPv3Report" );
//UDP
LEXADD2(McUpp_UDP, "Upp_UDP", "Hdr_UDP");
// RIPng
LEXADD(McUdp_RIPng, "Udp_RIPng");
LEXADD(McRIPng_RTE, "RIPng_RTE");
// DNS
LEXADD5(McUdp_DNS, "Udp_DNS", "DNS_Question", "DNS_Answer", "DNS_Authority", "DNS_Additional");
LEXADD(McDNS_QuestionEntry, "DNS_QuestionEntry");
LEXADD(McDNS_RR_ANY, "DNS_RR_ANY");
// RFC 1035 - Domain Implementation and Specification
LEXADD(McDNS_RR_A, "DNS_RR_A");
LEXADD(McDNS_RR_NS, "DNS_RR_NS");
LEXADD(McDNS_RR_MD, "DNS_RR_MD");
LEXADD(McDNS_RR_MF, "DNS_RR_MF");
LEXADD(McDNS_RR_CNAME, "DNS_RR_CNAME");
LEXADD(McDNS_RR_SOA, "DNS_RR_SOA");
LEXADD(McDNS_RR_MB, "DNS_RR_MB");
LEXADD(McDNS_RR_MG, "DNS_RR_MG");
LEXADD(McDNS_RR_MR, "DNS_RR_MR");
LEXADD(McDNS_RR_NULL, "DNS_RR_NULL");
LEXADD(McDNS_RR_WKS, "DNS_RR_WKS");
LEXADD(McDNS_RR_PTR, "DNS_RR_PTR");
LEXADD(McDNS_RR_HINFO, "DNS_RR_HINFO");
LEXADD(McDNS_RR_MINFO, "DNS_RR_MINFO");
LEXADD(McDNS_RR_MX, "DNS_RR_MX");
LEXADD(McDNS_RR_TXT, "DNS_RR_TXT");
// RFC 1183 - New DNS RR Definitions
LEXADD(McDNS_RR_RP, "DNS_RR_RP");
LEXADD(McDNS_RR_AFSDB, "DNS_RR_AFSDB");
LEXADD(McDNS_RR_X25, "DNS_RR_X25");
LEXADD(McDNS_RR_ISDN, "DNS_RR_ISDN");
LEXADD(McDNS_RR_RT, "DNS_RR_RT");
// RFC 1664 - Internet DNS for Mail Mapping Tables
LEXADD(McDNS_RR_PX, "DNS_RR_PX");
// RFC 1886 - IPv6 DNS Extensions
LEXADD(McDNS_RR_AAAA, "DNS_RR_AAAA");
// RFC 2782 - DNS SRV RR
LEXADD(McDNS_RR_SRV, "DNS_RR_SRV");
// RFC 2915 - NAPTR DNS RR
LEXADD(McDNS_RR_NAPTR, "DNS_RR_NAPTR");
// DHCPv6
LEXADD(McUdp_DHCPv6_ANY, "Udp_DHCPv6_ANY");
LEXADD(McUdp_DHCPv6_Solicit, "Udp_DHCPv6_Solicit");
LEXADD(McUdp_DHCPv6_Advertise, "Udp_DHCPv6_Advertise");
LEXADD(McUdp_DHCPv6_Request, "Udp_DHCPv6_Request");
LEXADD(McUdp_DHCPv6_Confirm, "Udp_DHCPv6_Confirm");
LEXADD(McUdp_DHCPv6_Renew, "Udp_DHCPv6_Renew");
LEXADD(McUdp_DHCPv6_Rebind, "Udp_DHCPv6_Rebind");
LEXADD(McUdp_DHCPv6_Reply, "Udp_DHCPv6_Reply");
LEXADD(McUdp_DHCPv6_Release, "Udp_DHCPv6_Release");
LEXADD(McUdp_DHCPv6_Decline, "Udp_DHCPv6_Decline");
LEXADD(McUdp_DHCPv6_Reconfigure, "Udp_DHCPv6_Reconfigure");
LEXADD(McUdp_DHCPv6_InformationRequest, "Udp_DHCPv6_InformationRequest");
LEXADD(McUdp_DHCPv6_RelayForward, "Udp_DHCPv6_RelayForward");
LEXADD(McUdp_DHCPv6_RelayReply, "Udp_DHCPv6_RelayReply");
// DHCP options
LEXADD(McOpt_DHCPv6_ANY, "Opt_DHCPv6_ANY");
LEXADD(McOpt_DHCPv6_CID, "Opt_DHCPv6_CID");
LEXADD(McOpt_DHCPv6_SID, "Opt_DHCPv6_SID");
LEXADD(McOpt_DHCPv6_IA_NA, "Opt_DHCPv6_IA_NA");
LEXADD(McOpt_DHCPv6_IA_TA, "Opt_DHCPv6_IA_TA");
LEXADD(McOpt_DHCPv6_IA_Address, "Opt_DHCPv6_IA_Address");
LEXADD(McOpt_DHCPv6_OptionRequest, "Opt_DHCPv6_OptionRequest");
LEXADD(McOpt_DHCPv6_Preference, "Opt_DHCPv6_Preference");
LEXADD(McOpt_DHCPv6_ElapsedTime, "Opt_DHCPv6_ElapsedTime");
LEXADD(McOpt_DHCPv6_RelayMessage, "Opt_DHCPv6_RelayMessage");
LEXADD(McOpt_DHCPv6_Authentication, "Opt_DHCPv6_Authentication");
LEXADD(McOpt_DHCPv6_ServerUnicast, "Opt_DHCPv6_ServerUnicast");
LEXADD(McOpt_DHCPv6_StatusCode, "Opt_DHCPv6_StatusCode");
LEXADD(McOpt_DHCPv6_RapidCommit, "Opt_DHCPv6_RapidCommit");
LEXADD(McOpt_DHCPv6_UserClass, "Opt_DHCPv6_UserClass");
LEXADD(McOpt_DHCPv6_VendorClass, "Opt_DHCPv6_VendorClass");
LEXADD(McOpt_DHCPv6_VendorSpecificInfo,
"Opt_DHCPv6_VendorSpecificInfo");
LEXADD(McOpt_DHCPv6_IID, "Opt_DHCPv6_IID");
LEXADD(McOpt_DHCPv6_ReconfigureMessage,
"Opt_DHCPv6_ReconfigureMessage");
LEXADD(McOpt_DHCPv6_ReconfigureAccept, "Opt_DHCPv6_ReconfigureAccept");
LEXADD(McOpt_DHCPv6_IA_PD, "Opt_DHCPv6_IA_PD");
LEXADD(McOpt_DHCPv6_IA_Prefix, "Opt_DHCPv6_IA_Prefix");
LEXADD(McOpt_DHCPv6_DNS_Servers, "Opt_DHCPv6_DNS_Servers");
LEXADD(McOpt_DHCPv6_DNS_SearchList, "Opt_DHCPv6_DNS_SearchList");
LEXADD(McOpt_DHCPv6_NTP_Servers, "Opt_DHCPv6_NTP_Servers");
LEXADD(McOpt_DHCPv6_NTP_Timezone, "Opt_DHCPv6_NTP_Timezone");
// DHCP unique identifier
LEXADD(McDHCPv6_DUID_ANY, "DHCPv6_DUID_ANY");
LEXADD(McDHCPv6_DUID_LLT_ANY, "DHCPv6_DUID_LLT_ANY");
LEXADD(McDHCPv6_DUID_LLT_Ether, "DHCPv6_DUID_LLT_Ether");
LEXADD(McDHCPv6_DUID_EN, "DHCPv6_DUID_EN");
LEXADD(McDHCPv6_DUID_LL_ANY, "DHCPv6_DUID_LL_ANY");
LEXADD(McDHCPv6_DUID_LL_Ether, "DHCPv6_DUID_LL_Ether");
// user class data
LEXADD(McDHCPv6_UserClassData, "DHCPv6_UserClassData");
// vendor class data
LEXADD(McDHCPv6_VendorClassData, "DHCPv6_VendorClassData");
// option data
LEXADD(McDHCPv6_OptionData, "DHCPv6_OptionData");
// Authentication of DHCP Messages
LEXADD(McDHCPv6_Auth_ANY, "DHCPv6_Auth_ANY");
// Delayed Authentication Protocol
LEXADD(McDHCPv6_Auth_Delayed, "DHCPv6_Auth_Delayed");
// Reconfigure Key Authentication Protocol
LEXADD(McDHCPv6_Auth_ReconfigureKey, "DHCPv6_Auth_ReconfigureKey");
// SIP
LEXADD(McUdp_SIP, "Udp_SIP");
// MLDv2 Address Record
LEXADD(McMLDv2_AddrRecord, "MLDv2_AddrRecord");
// IGMPv3 Address Record
LEXADD(McIGMPv3_AddrRecord, "IGMPv3_AddrRecord");
#if !defined(NOT_USE_SNMP)
// SNMP and SNMP PDUs
LEXADD(McUdp_SNMP, "Udp_SNMP");
LEXADD(McUdp_SNMPTrap, "Udp_SNMPTrap");
LEXADD(McPdu_SNMP_Message, "Pdu_SNMP_Message");
LEXADD(McPdu_SNMP_Version, "Pdu_SNMP_Version");
LEXADD(McPdu_SNMP_Community, "Pdu_SNMP_Community");
LEXADD(McPdu_SNMP_GetRequest, "Pdu_SNMP_GetRequest");
LEXADD(McPdu_SNMP_GetNextRequest, "Pdu_SNMP_GetNextRequest");
LEXADD(McPdu_SNMP_SetRequest, "Pdu_SNMP_SetRequest");
LEXADD(McPdu_SNMP_GetResponse, "Pdu_SNMP_GetResponse");
LEXADD(McPdu_SNMP_Trap, "Pdu_SNMP_Trap");
LEXADD(McPdu_SNMP_GetBulk, "Pdu_SNMP_GetBulk");
LEXADD(McPdu_SNMP_Inform, "Pdu_SNMP_Inform");
LEXADD(McPdu_SNMP_Trap2, "Pdu_SNMP_Trap2");
LEXADD(McPdu_SNMP_Report, "Pdu_SNMP_Report");
LEXADD(McPdu_SNMP_RequestID, "Pdu_SNMP_RequestID");
LEXADD(McPdu_SNMP_ErrorStatus, "Pdu_SNMP_ErrorStatus");
LEXADD(McPdu_SNMP_ErrorIndex, "Pdu_SNMP_ErrorIndex");
LEXADD(McPdu_SNMP_GenericTrap, "Pdu_SNMP_GenericTrap");
LEXADD(McPdu_SNMP_SpecificTrap, "Pdu_SNMP_SpecificTrap");
LEXADD(McPdu_SNMP_VarBindList, "Pdu_SNMP_VarBindList");
LEXADD(McPdu_SNMP_VarBind, "Pdu_SNMP_VarBind");
LEXADD(McPdu_SNMP_ANY, "Pdu_SNMP_ANY");
LEXADD(McPdu_SNMP_Boolean, "Pdu_SNMP_Boolean");
LEXADD(McPdu_SNMP_Integer, "Pdu_SNMP_Integer");
LEXADD(McPdu_SNMP_BitString, "Pdu_SNMP_BitString");
LEXADD(McPdu_SNMP_OctString, "Pdu_SNMP_OctString");
LEXADD(McPdu_SNMP_Null, "Pdu_SNMP_Null");
LEXADD(McPdu_SNMP_ObjectID, "Pdu_SNMP_ObjectID");
LEXADD(McPdu_SNMP_Sequence, "Pdu_SNMP_Sequence");
LEXADD(McPdu_SNMP_Set, "Pdu_SNMP_Set");
LEXADD(McPdu_SNMP_Opaque, "Pdu_SNMP_Opaque");
LEXADD(McPdu_SNMP_IPAddress, "Pdu_SNMP_IPAddress");
LEXADD(McPdu_SNMP_Counter, "Pdu_SNMPCounter");
LEXADD(McPdu_SNMP_Gauge, "Pdu_SNMP_Gauge");
LEXADD(McPdu_SNMP_TimeTicks, "Pdu_SNMP_TimeTicks");
#endif //NOT_USE_SNMP
//TCP
LEXADD2(McUpp_TCP, "Upp_TCP","Hdr_TCP" );
McOpt_TCP::create_options();
// IKE
LEXADD2(McUdp_ISAKMP, "Udp_ISAKMP", "Hdr_ISAKMP");
LEXADD(McISAKMP_Encryption, "ISAKMP_Encryption");
LEXADD(McISAKMP_Algorithm, "ISAKMP_Algorithm" );
LEXADD(McPld_ISAKMP_ANY, "Pld_ISAKMP_ANY");
LEXADD(McPld_ISAKMP_SA_ANY, "Pld_ISAKMP_SA_ANY");
LEXADD(McPld_ISAKMP_SA_IPsec_ANY, "Pld_ISAKMP_SA_IPsec_ANY");
LEXADD(McPld_ISAKMP_SA_IPsec_IDonly, "Pld_ISAKMP_SA_IPsec_IDonly");
LEXADD(McPld_ISAKMP_P, "Pld_ISAKMP_P_ANY");
LEXADD(McPld_ISAKMP_P_ISAKMP, "Pld_ISAKMP_P_ISAKMP");
LEXADD(McPld_ISAKMP_P_IPsec_AH, "Pld_ISAKMP_P_IPsec_AH");
LEXADD(McPld_ISAKMP_P_IPsec_ESP, "Pld_ISAKMP_P_IPsec_ESP");
LEXADD(McPld_ISAKMP_P_IPCOMP, "Pld_ISAKMP_P_IPCOMP");
LEXADD(McPld_ISAKMP_T, "Pld_ISAKMP_T");
LEXADD(McPld_ISAKMP_KE, "Pld_ISAKMP_KE");
LEXADD(McPld_ISAKMP_ID, "Pld_ISAKMP_ID_ANY");
LEXADD(McPld_ISAKMP_ID_IPV4_ADDR, "Pld_ISAKMP_ID_IPV4_ADDR");
LEXADD(McPld_ISAKMP_ID_FQDN, "Pld_ISAKMP_ID_FQDN");
LEXADD(McPld_ISAKMP_ID_USER_FQDN, "Pld_ISAKMP_ID_USER_FQDN");
LEXADD(McPld_ISAKMP_ID_IPV4_ADDR_SUBNET,
"Pld_ISAKMP_ID_IPV4_ADDR_SUBNET");
LEXADD(McPld_ISAKMP_ID_IPV6_ADDR, "Pld_ISAKMP_ID_IPV6_ADDR");
LEXADD(McPld_ISAKMP_ID_IPV6_ADDR_SUBNET,
"Pld_ISAKMP_ID_IPV6_ADDR_SUBNET");
LEXADD(McPld_ISAKMP_ID_IPV4_ADDR_RANGE,
"Pld_ISAKMP_ID_IPV4_ADDR_RANGE");
LEXADD(McPld_ISAKMP_ID_IPV6_ADDR_RANGE,
"Pld_ISAKMP_ID_IPV6_ADDR_RANGE");
LEXADD(McPld_ISAKMP_ID_DER_ASN1_DN, "Pld_ISAKMP_ID_DER_ASN1_DN");
LEXADD(McPld_ISAKMP_ID_DER_ASN1_GN, "Pld_ISAKMP_ID_DER_ASN1_GN");
LEXADD(McPld_ISAKMP_ID_KEY_ID, "Pld_ISAKMP_ID_KEY_ID");
LEXADD(McPld_ISAKMP_CERT, "Pld_ISAKMP_CERT");
LEXADD(McPld_ISAKMP_CR, "Pld_ISAKMP_CR");
LEXADD(McPld_ISAKMP_HASH, "Pld_ISAKMP_HASH");
LEXADD(McPld_ISAKMP_SIG, "Pld_ISAKMP_SIG");
LEXADD(McPld_ISAKMP_NONCE, "Pld_ISAKMP_NONCE");
LEXADD(McPld_ISAKMP_N_ANY, "Pld_ISAKMP_N_ANY");
LEXADD(McPld_ISAKMP_N_ISAKMP, "Pld_ISAKMP_N_ISAKMP");
LEXADD(McPld_ISAKMP_N_IPsec_ANY, "Pld_ISAKMP_N_IPsec_ANY");
LEXADD(McPld_ISAKMP_N_IPsec_ResponderLT,
"Pld_ISAKMP_N_IPsec_ResponderLT");
LEXADD(McPld_ISAKMP_N_IPsec_ReplayStat,
"Pld_ISAKMP_N_IPsec_ReplayStat");
LEXADD(McPld_ISAKMP_D, "Pld_ISAKMP_D");
LEXADD(McPld_ISAKMP_VID, "Pld_ISAKMP_VID");
LEXADD(McAttr_ISAKMP, "Attr_ISAKMP_ANY");
LEXADD(McAttr_ISAKMP_TLV, "Attr_ISAKMP_TLV");
LEXADD(McAttr_ISAKMP_TV, "Attr_ISAKMP_TV");
//
return(mc);
}
/////// Mc creater implementaion /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
McPayload* McPayload::create(CSTR key){
McPayload* mc = new McPayload(key);
mc->member( new MmData( "data" ) );
// dict
MmPayload::add_other(mc); //payload=
MmFrame::add_other(mc); //frame=
MmPacket_onEther::add_other(mc); //Frame_Ether::packet=
MmPacket_onNull::add_other(mc); //Frame_Null::packet=
MmUpper_onIP::add_other(mc); //Packet_IP::upper=
MmUpper_onUpper::add_other(mc); // for forward compatibility
return mc;}
//////////////////////////////////////////////////////////////////////////////
McFrame_Ether* McFrame_Ether::create(CSTR key,CSTR tophdrkey){
addCompound(tophdr_ = McTopHdr_Ether::create(tophdrkey));
McFrame_Ether* mc = new McFrame_Ether(key);
mc->member( new MmTopHdr( "header",tophdr_ ) );
mc->member( new MmPacket_onEther( "packet" ) );
// dict
MmFrame::add(mc); //frame=
return mc;}
McTopHdr_Ether* McTopHdr_Ether::create(CSTR key){
McTopHdr_Ether* mc = new McTopHdr_Ether(key);
mc->member( new MmEther("DestinationAddress", ETNUT(),ETTN()));
mc->member( new MmEther("SourceAddress", ETTN(), ETNUT()));
mc->nextType_member(
new MmUint( "Type", 16, GENEHC(mc,McTopHdr_Ether,Type),EVALHC(mc,McTopHdr_Ether,Type) ) );
// no dict
return mc;}
//////////////////////////////////////////////////////////////////////////////
McPacket_IPv6* McPacket_IPv6::create(CSTR key,CSTR tophdrkey){
addCompound(tophdr_ = McTopHdr_IPv6::create(tophdrkey));
McPacket_IPv6* mc = new McPacket_IPv6(key);
mc->member( new MmTopHdr( "header",tophdr_) );
mc->member( new MmExtent_onIP( "exthdr" ) );
mc->member( new MmUpper_onIP( "upper" ) );
// dict
MmPacket_onNull::add(mc); //Frame_Null::packet=
MmPacket_onEther::add(mc); //Frame_Ether::packet=
MmUpper_onIP::add(mc); //Packet_IP::upper=(tunnel)
return mc;}
McTopHdr_IPv6* McTopHdr_IPv6::create(CSTR key){
McTopHdr_IPv6* mc = new McTopHdr_IPv6(key);
mc->member( new MmUint( "Version", 4,
UN(6), UN(6), ICVCONST() ) );
mc->member( new MmUint( "TrafficClass", 8,
UN(0), EVALANY(), ICVZERO() ) );
mc->member( new MmUint( "FlowLabel", 20,
UN(0), EVALANY(), ICVZERO() ) );
mc->Layerlength_member(
new MmUint( "PayloadLength",16,
GENEHC(mc,McTopHdr_IPv6,PayloadLength),
EVALANY(), ICVCONST() ) );
mc->nextType_member(
new MmUint( "NextHeader", 8,
GENEHC(mc,McTopHdr_IPv6,NextHeader),
EVALHC(mc,McTopHdr_IPv6,NextHeader), ICVCONST() ) );
mc->member( new MmUint( "HopLimit", 8,
UN(64), EVALANY(), ICVZERO() ) );
mc->member( new MmV6Addr( "SourceAddress",
V6TN(),V6NUT(), ICVHC(mc, McTopHdr_IPv6, SourceAddress), // MIP6AH
(METH_HC_ForIPinfo)&McTopHdr_IPv6::HC_ForIPinfo(SourceAddress) ) );
mc->member( new MmV6Addr( "DestinationAddress",
V6NUT(),V6TN(), ICVHC(mc,McTopHdr_IPv6,DestinationAddress),
(METH_HC_ForIPinfo)&McTopHdr_IPv6::HC_ForIPinfo(DestinationAddress) ) );
// no dict
return mc;}
//////////////////////////////////////////////////////////////////////////////
McHdr_Ext_HopByHop* McHdr_Ext_HopByHop::create(CSTR key){
McHdr_Ext_HopByHop* mc = new McHdr_Ext_HopByHop(key);
mc->nextType_member(
new MmUint( "NextHeader", 8,
GENEHC(mc,McHdr_Ext_HopByHop,NextHeader),
EVALHC(mc,McHdr_Ext_HopByHop,NextHeader), ICVCONST() ) );
mc->length_member(
new MmUint( "HeaderExtLength",8,
GENEHC(mc,McHdr_Ext_HopByHop,HeaderExtLength),
EVALANY(), ICVCONST() ) );
mc->member( new MmOption_onExt("option") );
// dict
MmExtent_onIP::add(mc); //Packet_IP::exthdr=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McHdr_Ext_Destination* McHdr_Ext_Destination::create(CSTR key){
McHdr_Ext_Destination* mc = new McHdr_Ext_Destination(key);
mc->nextType_member(
new MmUint( "NextHeader", 8,
GENEHC(mc,McHdr_Ext_Destination,NextHeader),
EVALHC(mc,McHdr_Ext_Destination,NextHeader), ICVCONST() ) );
mc->length_member(
new MmUint( "HeaderExtLength",8,
GENEHC(mc,McHdr_Ext_Destination,HeaderExtLength),
EVALANY(), ICVCONST() ) );
mc->member( new MmOption_onExt("option") );
// dict
MmExtent_onIP::add(mc); //Packet_IP::exthdr=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McHdr_Ext_Routing* McHdr_Ext_Routing::create(CSTR key){
McHdr_Ext_Routing* mc = new McHdr_Ext_Routing(key);
mc->nextType_member(
new MmUint( "NextHeader", 8,
GENEHC(mc,McHdr_Ext_Routing,NextHeader),
EVALHC(mc,McHdr_Ext_Routing,NextHeader), ICVCONST() ) );
mc->length_member(
new MmUint( "HeaderExtLength",8,
GENEHC(mc,McHdr_Ext_Routing,HeaderExtLength),
EVALANY(), ICVCONST() ) );
mc->member( new MmUint( "RoutingType", 8,
UN(0), UN(0), ICVCONST() ) );
mc->member( new MmUint( "SegmentsLeft", 8,
UN(0), UN(0), ICVHC(mc,McHdr_Ext_Routing,SegmentsLeft) ,
(METH_HC_ForIPinfo)&McHdr_Ext_Routing::HC_ForIPinfo(SegmentsLeft) ) );
mc->member( new MmUint( "Reserved", 32,
UN(0), UN(0), ICVCONST() ) );
mc->member( new MmMultiple(
new MmV6Addr( "Address",
MUST(),MUST(), ICVHC(mc,McHdr_Ext_Routing,Address),
(METH_HC_ForIPinfo)&McHdr_Ext_Routing::HC_ForIPinfo(Address) ),
(METH_HC_MLC)&McHdr_Ext_Routing::HC_MLC(Address) ) );
// dict
MmExtent_onIP::add(mc); //Packet_IP::exthdr=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McHdr_Ext_Fragment* McHdr_Ext_Fragment::create(CSTR key){
McHdr_Ext_Fragment* mc = new McHdr_Ext_Fragment(key);
mc->nextType_member(
new MmUint( "NextHeader", 8, MUST(), MUST() ) );
mc->member( new MmUint( "Reserved1", 8, UN(0), UN(0) ) );
mc->member( new MmUint( "FragmentOffset",13, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved2", 2, UN(0), UN(0) ) );
mc->member( new MmUint( "MFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "Identification",32, UN(0), UN(0) ) );
// dict
MmExtent_onIP::add(mc); //Packet_IP::exthdr=
return mc;}
//////////////////////////////////////////////////////////////////////////////
void McOpt_Ext::common_member(){
int32_t Type = optionType();
type_member(
new MmUint( "OptionType", 8,
UN(Type),UN(Type), ICVCONST() ) );
length_member(
new MmUint( "OptDataLength", 8,
GENEHC(this,McOpt_Ext,OptDataLength),
EVALANY(), ICVCONST() ) );
}
McOpt_Ext_ANY* McOpt_Ext_ANY::create(CSTR key){
McOpt_Ext_ANY* mc = new McOpt_Ext_ANY(key);
mc->common_member();
mc->member( new MmData( "data" ,DEF_EVALGO, ICVOPTDATA(mc,McOpt_Ext_ANY) ) );
// dict
MmOption_onExt::add_other(mc); //Hdr_Ext_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_Ext_Pad1* McOpt_Ext_Pad1::create(CSTR key){
McOpt_Ext_Pad1* mc = new McOpt_Ext_Pad1(key);
int32_t Type = mc->optionType();
mc->type_member(
new MmUint( "OptionType", 8,
UN(Type),UN(Type), ICVCONST() ) );
// dict
MmOption_onExt::add(mc); //Hdr_Ext_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_Ext_PadN* McOpt_Ext_PadN::create(CSTR key){
McOpt_Ext_PadN* mc = new McOpt_Ext_PadN(key);
mc->common_member();
mc->member( new MmData( "pad", DEF_EVALSKIP, ICVOPTDATA(mc,McOpt_Ext_PadN) ) );
// dict
MmOption_onExt::add(mc); //Hdr_Ext_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_Ext_JumboPayload* McOpt_Ext_JumboPayload::create(CSTR key){
McOpt_Ext_JumboPayload* mc = new McOpt_Ext_JumboPayload(key);
mc->common_member();
mc->member( new MmUint( "JumboPayloadLength",32,
GENEHC(mc,McOpt_Ext_JumboPayload,JumboPayloadLength),
EVALANY(), ICVOPTDATA(mc,McOpt_Ext_JumboPayload) ) );
// dict
MmOption_onExt::add(mc); //Hdr_Ext_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_Ext_RouterAlert* McOpt_Ext_RouterAlert::create(CSTR key){
McOpt_Ext_RouterAlert* mc = new McOpt_Ext_RouterAlert(key);
mc->common_member();
mc->member( new MmUint( "Value", 16,
MUST(), MUST(), ICVOPTDATA(mc,McOpt_Ext_RouterAlert) ) );
// dict
MmOption_onExt::add(mc); //Hdr_Ext_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_Ext_TunnelEncap* McOpt_Ext_TunnelEncap::create(CSTR key){
McOpt_Ext_TunnelEncap* mc = new McOpt_Ext_TunnelEncap(key);
mc->common_member();
mc->member( new MmUint( "Limit", 8,
UN(0), UN(0), ICVOPTDATA(mc,McOpt_Ext_TunnelEncap) ) );
// dict
MmOption_onExt::add(mc); //Hdr_Ext_XX::option=
return mc;}
////////////////////////////////////////
// Home Address Destination Option //
////////////////////////////////////////
McOpt_Ext_HomeAddress *
McOpt_Ext_HomeAddress::create(CSTR key)
{
McOpt_Ext_HomeAddress *mc = new McOpt_Ext_HomeAddress(key);
mc->common_member();
mc->member(
new MmV6Addr(
"HomeAddress",
MUST(),
MUST(),
ICVHC(mc, McOpt_Ext_HomeAddress, HomeAddress),
(METH_HC_ForIPinfo)&McOpt_Ext_HomeAddress::HC_ForIPinfo(
HomeAddress
)
)
);
MmOption_onExt::add(mc);
return(mc);
}
//////////////////////////////////////////////////////////////////////////////
McPacket_IPv4* McPacket_IPv4::create(CSTR key,CSTR tophdrkey){
addCompound(tophdr_ = McTopHdr_IPv4::create(tophdrkey));
McPacket_IPv4* mc = new McPacket_IPv4(key);
mc->member( new MmTopHdr( "header",tophdr_) );
mc->member( new MmExtent_onIP( "exthdr" ) );
mc->member( new MmUpper_onIP( "upper" ) );
// dict
MmPacket_onNull::add(mc); //Frame_Null::packet=
MmPacket_onEther::add(mc); //Frame_Ether::packet=
MmUpper_onIP::add(mc); //Packet_IP::upper=(tunnel)
return mc;}
McTopHdr_IPv4* McTopHdr_IPv4::create(CSTR key){
McTopHdr_IPv4* mc = new McTopHdr_IPv4(key);
mc->member( new MmUint( "Version", 4,
UN(4), UN(4), ICVCONST() ) );
mc->length_member(
new MmUint( "IHL", 4,
GENEHC(mc,McTopHdr_IPv4,IHL),
EVALANY(), ICVCONST() ) );
mc->member( new MmUint( "TypeOfService",8,
UN(0), EVALANY(), ICVZERO() ) );
mc->Layerlength_member(
new MmUint( "TotalLength", 16,
GENEHC(mc,McTopHdr_IPv4,TotalLength),
EVALANY(), ICVCONST() ) );
mc->member( new MmUint( "Identifier", 16,
UN(0), EVALANY(), ICVCONST() ) );
mc->Flags_member(
new MmUint( "Reserved", 1,
UN(0), UN(0), ICVZERO() ) );
mc->Flags_member(
new MmUint( "DF", 1,
UN(0), EVALANY(), ICVZERO() ) );
mc->Flags_member(
new MmUint( "MF", 1,
UN(0), UN(0), ICVZERO() ) );
mc->fragoffset_member(
new MmUint( "FragmentOffset",13,
UN(0), UN(0), ICVZERO() ) );
mc->member( new MmUint( "TTL", 8,
UN(255),EVALANY(), ICVZERO() ) );
mc->nextType_member(
new MmUint( "Protocol", 8,
GENEHC(mc,McTopHdr_IPv4,Protocol),
EVALHC(mc,McTopHdr_IPv4,Protocol), ICVCONST() ) );
mc->member( new MmIPChecksum( "HeaderChecksum",16,
DEF_MUSTCHKSUM, ICVZERO() ) );
mc->member( new MmV4Addr( "SourceAddress",
MUST(),MUST(), ICVCONST(),
(METH_HC_ForIPinfo)&McTopHdr_IPv4::HC_ForIPinfo(SourceAddress) ) );
mc->member( new MmV4Addr( "DestinationAddress",
MUST(),MUST(), ICVHC(mc,McTopHdr_IPv4,DestinationAddress),
(METH_HC_ForIPinfo)&McTopHdr_IPv4::HC_ForIPinfo(DestinationAddress) ) );
mc->member( new MmOption_onIPv4( "option" ) );
mc->member( new MmData( "Padding",DEF_EVALSKIP, ICVCONST() ) );
// no dict
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_NoNext* McUpp_NoNext::create(CSTR key){
McUpp_NoNext* mc = new McUpp_NoNext(key);
mc->member( new MmData( "data" ) );
// dict
MmUpper_onIP::add(mc); //Packet_IP::upper=
return mc;}
//////////////////////////////////////////////////////////////////////////////
void
McUpp_VRRP::common_member()
{
int32_t Version = vrrpVersion();
version_member(new MmUint("Version", 4, UN(Version), UN(Version)));
member(new MmUint("Type", 4, UN(1), UN(1)));
}
McUpp_VRRPvX *
McUpp_VRRPvX::create(CSTR key)
{
McUpp_VRRPvX *mc = new McUpp_VRRPvX(key);
mc->common_member();
mc->member(new MmData("data"));
MmHeader_onVRRP::add_other(mc);
return(mc);
}
McUpp_VRRPv2 *
McUpp_VRRPv2::create(CSTR key)
{
McUpp_VRRPv2 *mc = new McUpp_VRRPv2(key);
mc->common_member();
mc->member(new MmUint("ID", 8, UN(0), UN(0)));
mc->member(new MmUint("Priority", 8, UN(0), UN(0)));
mc->member(new MmUint("Count", 8, UN(0), UN(0)));
mc->member(new MmUint("AuthType", 8, UN(0), UN(0)));
mc->member(new MmUint("Interval", 8, UN(0), UN(0)));
mc->member(new MmUppChecksum(
"Checksum", 16, DEF_MUSTCHKSUM, DEF_NOPSEUDO));
mc->member(
new MmMultiple(
new MmV4Addr(
"Address",
MUST(),
MUST()
),
(METH_HC_MLC)&McUpp_VRRPv2::HC_MLC(Address)
)
);
MmHeader_onVRRP::add(mc);
return(mc);
}
McUpp_VRRPv3 *
McUpp_VRRPv3::create(CSTR key)
{
McUpp_VRRPv3 *mc = new McUpp_VRRPv3(key);
mc->common_member();
mc->member(new MmUint("ID", 8, UN(0), UN(0)));
mc->member(new MmUint("Priority", 8, UN(0), UN(0)));
mc->member(new MmUint("Count", 8, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 4, UN(0), UN(0)));
mc->member(new MmUint("Interval", 12, UN(0), UN(0)));
mc->member(new MmUppChecksum(
"Checksum", 16, DEF_MUSTCHKSUM, DEF_MUSTPSEUDO));
mc->member(
new MmMultiple(
new MmV6Addr(
"Address",
MUST(),
MUST()
),
(METH_HC_MLC)&McUpp_VRRPv3::HC_MLC(Address)
)
);
MmHeader_onVRRP::add(mc);
return(mc);
}
//////////////////////////////////////////////////////////////////////////////
void McUpp_ICMPv6::common_member(){
int32_t Type = icmpv6Type();
type_member(
new MmUint( "Type", 8, UN(Type),UN(Type) ) );
Code_member(
new MmUint( "Code", 8, UN(0), UN(0) ) );
member( new MmUppChecksum( "Checksum", 16 ) );
//isEqual(DEF_MUSTCHKSUM,DEF_MUSTPSEUDO,ICVCONST)
}
McUpp_ICMPv6_ANY* McUpp_ICMPv6_ANY::create(CSTR key){
McUpp_ICMPv6_ANY* mc = new McUpp_ICMPv6_ANY(key);
mc->common_member();
mc->member( new MmData( "data" ) );
// dict
MmHeader_onICMPv6::add_other(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_RS* McUpp_ICMPv6_RS::create(CSTR key){
McUpp_ICMPv6_RS* mc = new McUpp_ICMPv6_RS(key);
mc->common_member();
mc->member( new MmUint( "Reserved", 32, UN(0), UN(0) ) );
mc->member( new MmOption_onICMPv6( "option" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_RA *
McUpp_ICMPv6_RA::create(CSTR key)
{
McUpp_ICMPv6_RA *mc = new McUpp_ICMPv6_RA(key);
mc->common_member();
mc->member(new MmUint("CurHopLimit", 8, UN(0), UN(0)));
mc->member(new MmUint("MFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("OFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("HFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Preference", 2, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 3, UN(0), UN(0)));
mc->member(new MmUint("LifeTime", 16, UN(0), UN(0)));
mc->member(new MmUint("ReachableTime", 32, UN(0), UN(0)));
mc->member(new MmUint("RetransTimer", 32, UN(0), UN(0)));
mc->member(new MmOption_onICMPv6("option"));
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return(mc);
}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_NS* McUpp_ICMPv6_NS::create(CSTR key){
McUpp_ICMPv6_NS* mc = new McUpp_ICMPv6_NS(key);
mc->common_member();
mc->member( new MmUint( "Reserved", 32, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "TargetAddress", V6NUT(),V6TN()));
mc->member( new MmOption_onICMPv6( "option" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_NA* McUpp_ICMPv6_NA::create(CSTR key){
McUpp_ICMPv6_NA* mc = new McUpp_ICMPv6_NA(key);
mc->common_member();
mc->member( new MmUint( "RFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "SFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "OFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved", 29, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "TargetAddress", V6TN(), V6NUT()));
mc->member( new MmOption_onICMPv6( "option" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_Redirect* McUpp_ICMPv6_Redirect::create(CSTR key){
McUpp_ICMPv6_Redirect* mc = new McUpp_ICMPv6_Redirect(key);
mc->common_member();
mc->member( new MmUint( "Reserved", 32, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "TargetAddress", MUST(), MUST() ) );
mc->member( new MmV6Addr( "DestinationAddress", MUST(), MUST() ) );
mc->member( new MmOption_onICMPv6( "option" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_MLDReport *McUpp_ICMPv6_MLDReport::create(CSTR key) {
McUpp_ICMPv6_MLDReport *mc = new McUpp_ICMPv6_MLDReport(key);
mc->common_member();
mc->member( new MmUint( "MaxResponseDelay",16, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved", 16, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "MulticastAddress", MUST(), MUST() ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_MLDDone *McUpp_ICMPv6_MLDDone::create(CSTR key) {
McUpp_ICMPv6_MLDDone *mc = new McUpp_ICMPv6_MLDDone(key);
mc->common_member();
mc->member( new MmUint( "MaxResponseDelay",16, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved", 16, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "MulticastAddress", MUST(), MUST() ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_EchoRequest *McUpp_ICMPv6_EchoRequest::create(CSTR key) {
McUpp_ICMPv6_EchoRequest *mc = new McUpp_ICMPv6_EchoRequest(key);
mc->common_member();
mc->member( new MmUint( "Identifier", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "SequenceNumber",16, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_EchoReply *McUpp_ICMPv6_EchoReply::create(CSTR key) {
McUpp_ICMPv6_EchoReply *mc = new McUpp_ICMPv6_EchoReply(key);
mc->common_member();
mc->member( new MmUint( "Identifier", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "SequenceNumber",16, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_PacketTooBig* McUpp_ICMPv6_PacketTooBig::create(CSTR key){
McUpp_ICMPv6_PacketTooBig* mc = new McUpp_ICMPv6_PacketTooBig(key);
mc->common_member();
mc->member( new MmUint( "MTU", 32, MUST(), MUST() ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_DestinationUnreachable* McUpp_ICMPv6_DestinationUnreachable::create(CSTR key){
McUpp_ICMPv6_DestinationUnreachable* mc = new McUpp_ICMPv6_DestinationUnreachable(key);
mc->common_member();
mc->member( new MmUint( "Unused", 32, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_TimeExceeded* McUpp_ICMPv6_TimeExceeded::create(CSTR key){
McUpp_ICMPv6_TimeExceeded* mc = new McUpp_ICMPv6_TimeExceeded(key);
mc->common_member();
mc->member( new MmUint( "Unused", 32, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_ParameterProblem* McUpp_ICMPv6_ParameterProblem::create(CSTR key){
McUpp_ICMPv6_ParameterProblem* mc = new McUpp_ICMPv6_ParameterProblem(key);
mc->common_member();
mc->member( new MmUint( "Pointer", 32, MUST(), MUST() ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv6_RouterRenumbering* McUpp_ICMPv6_RouterRenumbering::create(CSTR key){
McUpp_ICMPv6_RouterRenumbering* mc = new McUpp_ICMPv6_RouterRenumbering(key);
mc->common_member();
mc->member( new MmUint( "SequenceNumber", 32, UN(0), UN(0) ) );
mc->member( new MmUint( "SegmentNumber", 8, UN(0), UN(0) ) );
mc->member( new MmUint( "TFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "RFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "AFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "SFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "PFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved1", 3, UN(0), UN(0) ) );
mc->member( new MmUint( "MaxDelay", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved2", 32, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmHeader_onICMPv6::add(mc); //Upp_ICMPv6::header= (upper=)
return mc;}
////////////////////////////////////////////////
// Home Agent Address Discovery Request //
////////////////////////////////////////////////
McUpp_ICMPv6_HAADRequest *
McUpp_ICMPv6_HAADRequest::create(CSTR key)
{
McUpp_ICMPv6_HAADRequest *mc = new McUpp_ICMPv6_HAADRequest(key);
mc->common_member();
mc->member(new MmUint("Identifier", 16, UN(0), UN(0)));
mc->member(new MmUint("RFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 15, UN(0), UN(0)));
MmHeader_onICMPv6::add(mc);
return(mc);
}
////////////////////////////////////////////////
// Home Agent Address Discovery Reply //
////////////////////////////////////////////////
McUpp_ICMPv6_HAADReply *
McUpp_ICMPv6_HAADReply::create(CSTR key)
{
McUpp_ICMPv6_HAADReply *mc = new McUpp_ICMPv6_HAADReply(key);
mc->common_member();
mc->member(new MmUint("Identifier", 16, UN(0), UN(0)));
mc->member(new MmUint("RFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 15, UN(0), UN(0)));
mc->member(
new MmMultiple(
new MmV6Addr("Address", MUST(), MUST()),
(METH_HC_MLC)&McUpp_ICMPv6_HAADReply::HC_MLC(Address)
)
);
MmHeader_onICMPv6::add(mc);
return(mc);
}
////////////////////////////////////////
// Mobile Prefix Solicitation //
////////////////////////////////////////
McUpp_ICMPv6_MobilePrefixSolicit *
McUpp_ICMPv6_MobilePrefixSolicit::create(CSTR key)
{
McUpp_ICMPv6_MobilePrefixSolicit *mc =
new McUpp_ICMPv6_MobilePrefixSolicit(key);
mc->common_member();
mc->member(new MmUint("Identifier", 16, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 16, UN(0), UN(0)));
MmHeader_onICMPv6::add(mc);
return(mc);
}
////////////////////////////////////////
// Mobile Prefix Advertisement //
////////////////////////////////////////
McUpp_ICMPv6_MobilePrefixAdvertise *
McUpp_ICMPv6_MobilePrefixAdvertise::create(CSTR key)
{
McUpp_ICMPv6_MobilePrefixAdvertise *mc =
new McUpp_ICMPv6_MobilePrefixAdvertise(key);
mc->common_member();
mc->member(new MmUint("Identifier", 16, UN(0), UN(0)));
mc->member(new MmUint("MFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("OFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 14, UN(0), UN(0)));
mc->member(new MmOption_onICMPv6("option"));
MmHeader_onICMPv6::add(mc);
return(mc);
}
//////////////////////////////////////////////////////////////////////////////
void McOpt_ICMPv6::common_member(){
int32_t Type = optionType();
type_member(
new MmUint( "Type", 8, UN(Type),UN(Type) ) );
length_member(
new MmUint( "Length", 8, GENEHC(this,McOpt_ICMPv6,Length),EVALANY() ) );
}
McOpt_ICMPv6_ANY* McOpt_ICMPv6_ANY::create(CSTR key){
McOpt_ICMPv6_ANY* mc = new McOpt_ICMPv6_ANY(key);
mc->common_member();
mc->member( new MmData( "data" ) );
// dict
MmOption_onICMPv6::add_other(mc); //Upp_ICMPv6_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_ICMPv6_SLL* McOpt_ICMPv6_SLL::create(CSTR key){
McOpt_ICMPv6_SLL* mc = new McOpt_ICMPv6_SLL(key);
mc->common_member();
mc->member( new MmEther( "LinkLayerAddress", ETNUT(),ETTN()));
// dict
MmOption_onICMPv6::add(mc); //Upp_ICMPv6_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_ICMPv6_TLL* McOpt_ICMPv6_TLL::create(CSTR key){
McOpt_ICMPv6_TLL* mc = new McOpt_ICMPv6_TLL(key);
mc->common_member();
mc->member( new MmEther( "LinkLayerAddress", ETNUT(),ETTN()));
// dict
MmOption_onICMPv6::add(mc); //Upp_ICMPv6_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_ICMPv6_Prefix* McOpt_ICMPv6_Prefix::create(CSTR key){
McOpt_ICMPv6_Prefix* mc = new McOpt_ICMPv6_Prefix(key);
mc->common_member();
mc->member( new MmUint( "PrefixLength", 8, UN(64), UN(64) ) );
mc->member( new MmUint( "LFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "AFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "RFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved1", 5, UN(0), UN(0) ) );
mc->member( new MmUint( "ValidLifetime",32, UN(0), UN(0) ) );
mc->member( new MmUint( "PreferredLifetime",32, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved2", 32, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "Prefix", MUST(), MUST() ) );
// dict
MmOption_onICMPv6::add(mc); //Upp_ICMPv6_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_ICMPv6_MTU* McOpt_ICMPv6_MTU::create(CSTR key){
McOpt_ICMPv6_MTU* mc = new McOpt_ICMPv6_MTU(key);
mc->common_member();
mc->member( new MmUint( "Reserved", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "MTU", 32, UN(1500),UN(1500) ) );
// dict
MmOption_onICMPv6::add(mc); //Upp_ICMPv6_XX::option=
return mc;}
//////////////////////////////////////////////////////////////////////////////
McOpt_ICMPv6_Redirected* McOpt_ICMPv6_Redirected::create(CSTR key){
McOpt_ICMPv6_Redirected* mc = new McOpt_ICMPv6_Redirected(key);
mc->common_member();
#ifdef YDC_YET_IMPL
//request to define MmReserved
mc->member( new MmReserved( "Reserved", OCTET6,
new PvZERO(),
new PvZERO() ) );
#else
//Sorry devide two MmUint(16bits,32bits)
mc->member( new MmUint( "Reserved1", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved2", 32, UN(0), UN(0) ) );
#endif
mc->member( new MmPayload( "payload" ) );
// dict
MmOption_onICMPv6::add(mc); //Upp_ICMPv6_XX::option=
return mc;}
////////////////////////////////////////
// Advertisement Interval Option //
////////////////////////////////////////
McOpt_ICMPv6_AdvInterval *
McOpt_ICMPv6_AdvInterval::create(CSTR key)
{
McOpt_ICMPv6_AdvInterval *mc = new McOpt_ICMPv6_AdvInterval(key);
mc->common_member();
mc->member(new MmUint("Reserved", 16, UN(0), UN(0)));
mc->member(new MmUint("Interval", 32, UN(0), UN(0)));
MmOption_onICMPv6::add(mc);
return(mc);
}
////////////////////////////////////////
// Home Agent Information Option //
////////////////////////////////////////
McOpt_ICMPv6_HomeAgentInfo *
McOpt_ICMPv6_HomeAgentInfo::create(CSTR key)
{
McOpt_ICMPv6_HomeAgentInfo *mc = new McOpt_ICMPv6_HomeAgentInfo(key);
mc->common_member();
mc->member(new MmUint("RFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 15, UN(0), UN(0)));
mc->member(new MmUint("Preference", 16, UN(0), UN(0)));
mc->member(new MmUint("Lifetime", 16, UN(0), UN(0)));
MmOption_onICMPv6::add(mc);
return(mc);
}
//
// Route Information Option
//
////////////////////////////////////////
McOpt_ICMPv6_RouteInfo *McOpt_ICMPv6_RouteInfo::create(CSTR key) {
McOpt_ICMPv6_RouteInfo *mc = new McOpt_ICMPv6_RouteInfo(key);
mc->common_member();
mc->member(new MmUint("PrefixLength", 8, UN(64), UN(64)));
mc->member(new MmUint("Reserved1", 3, UN(0), UN(0)));
mc->member(new MmUint("Preference", 2, UN(0), UN(0)));
mc->member(new MmUint("Reserved2", 3, UN(0), UN(0)));
mc->member(new MmUint("RouteLifetime", 32, UN(0), UN(0)));
mc->member(new MmV6Addr("Prefix", MUST(), MUST()));
MmOption_onICMPv6::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
// Mobility Header //
////////////////////////////////////////////////////////////////
void
McHdr_Ext_MH::common_member()
{
nextType_member(new MmUint("NextHeader", 8,
GENEHC(this, McHdr_Ext_MH, NextHeader),
EVALHC(this, McHdr_Ext_MH, NextHeader),
ICVCONST()));
length_member(new MmUint("HeaderExtLength", 8,
GENEHC(this, McHdr_Ext_MH, HeaderExtLength),
EVALANY(),
ICVCONST()));
type_member(new MmUint("Type", 8,
GENEHC(this, McHdr_Ext_MH, Type),
EVALHC(this, McHdr_Ext_MH, Type)));
member(new MmUint("Reserved1", 8, UN(0), UN(0)));
member(new MmUppChecksum("Checksum", 16));
return;
}
McHdr_Ext_MH_ANY *
McHdr_Ext_MH_ANY::create(CSTR key)
{
McHdr_Ext_MH_ANY *mc = new McHdr_Ext_MH_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmHeader_onMH::add_other(mc);
return(mc);
}
////////////////////////////////////////
// Binding Refresh Request (BRR) //
////////////////////////////////////////
McHdr_Ext_MH_BRR *
McHdr_Ext_MH_BRR::create(CSTR key)
{
McHdr_Ext_MH_BRR *mc = new McHdr_Ext_MH_BRR(key);
mc->common_member();
mc->member(new MmUint("Reserved2", 16, UN(0), UN(0)));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Home Test Init (HoTI) //
////////////////////////////////
McHdr_Ext_MH_HoTI *
McHdr_Ext_MH_HoTI::create(CSTR key)
{
McHdr_Ext_MH_HoTI *mc = new McHdr_Ext_MH_HoTI(key);
mc->common_member();
mc->member(new MmUint("Reserved2", 16, UN(0), UN(0)));
mc->member(new MmMH_Cookie64("InitCookie"));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Care-of Test Init (CoTI) //
////////////////////////////////
McHdr_Ext_MH_CoTI *
McHdr_Ext_MH_CoTI::create(CSTR key)
{
McHdr_Ext_MH_CoTI *mc = new McHdr_Ext_MH_CoTI(key);
mc->common_member();
mc->member(new MmUint("Reserved2", 16, UN(0), UN(0)));
mc->member(new MmMH_Cookie64("InitCookie"));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Home Test (HoT) //
////////////////////////////////
McHdr_Ext_MH_HoT *
McHdr_Ext_MH_HoT::create(CSTR key)
{
McHdr_Ext_MH_HoT *mc = new McHdr_Ext_MH_HoT(key);
mc->common_member();
mc->member(new MmUint("Index", 16, UN(0), UN(0)));
mc->member(new MmMH_Cookie64("InitCookie"));
mc->member(new MmMH_Cookie64("KeygenToken"));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Care-of Test (CoT) //
////////////////////////////////
McHdr_Ext_MH_CoT *
McHdr_Ext_MH_CoT::create(CSTR key)
{
McHdr_Ext_MH_CoT *mc = new McHdr_Ext_MH_CoT(key);
mc->common_member();
mc->member(new MmUint("Index", 16, UN(0), UN(0)));
mc->member(new MmMH_Cookie64("InitCookie"));
mc->member(new MmMH_Cookie64("KeygenToken"));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Binding Update (BU) //
////////////////////////////////
McHdr_Ext_MH_BU *
McHdr_Ext_MH_BU::create(CSTR key)
{
McHdr_Ext_MH_BU *mc = new McHdr_Ext_MH_BU(key);
mc->common_member();
mc->member(new MmUint("SequenceNumber", 16, UN(0), UN(0)));
mc->member(new MmUint("AFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("HFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("LFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("KFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("MFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("RFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved2", 10, UN(0), UN(0)));
mc->member(new MmUint("Lifetime", 16, UN(0), UN(0)));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////////////
// Binding Acknowledgement (BA) //
////////////////////////////////////////
McHdr_Ext_MH_BA *
McHdr_Ext_MH_BA::create(CSTR key)
{
McHdr_Ext_MH_BA *mc = new McHdr_Ext_MH_BA(key);
mc->common_member();
mc->member(new MmBAstatus("Status", 8, UN(0), UN(0)));
mc->member(new MmUint("KFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("RFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved2", 6, UN(0), UN(0)));
mc->member(new MmUint("SequenceNumber", 16, UN(0), UN(0)));
mc->member(new MmUint("Lifetime", 16, UN(0), UN(0)));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Binding Error (BE) //
////////////////////////////////
McHdr_Ext_MH_BE *
McHdr_Ext_MH_BE::create(CSTR key)
{
McHdr_Ext_MH_BE *mc = new McHdr_Ext_MH_BE(key);
mc->common_member();
mc->member(new MmBEstatus("Status", 8, UN(0), UN(0)));
mc->member(new MmUint("Reserved2", 8, UN(0), UN(0)));
mc->member(new MmV6Addr("Address", MUST(), MUST()));
mc->member(new MmOption_onMH("option"));
MmHeader_onMH::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
// Mobility Options //
////////////////////////////////////////////////////////////////
void
McOpt_MH::common_member()
{
type_member(new MmUint("Type",
8, GENEHC(this, McOpt_MH, Type), EVALHC(this, McOpt_MH, Type)));
length_member(new MmUint("Length",
8, GENEHC(this, McOpt_MH, Length), EVALANY()));
return;
}
McOpt_MH_ANY *
McOpt_MH_ANY::create(CSTR key)
{
McOpt_MH_ANY *mc = new McOpt_MH_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmOption_onMH::add_other(mc);
return(mc);
}
////////////////////////////////
// Pad1 //
////////////////////////////////
McOpt_MH_Pad1 *
McOpt_MH_Pad1::create(CSTR key)
{
McOpt_MH_Pad1 *mc = new McOpt_MH_Pad1(key);
int32_t Type = mc->optionType();
mc->type_member(new MmUint("Type", 8, UN(Type), UN(Type)));
MmOption_onMH::add(mc);
return(mc);
}
////////////////////////////////
// PadN //
////////////////////////////////
McOpt_MH_PadN *
McOpt_MH_PadN::create(CSTR key)
{
McOpt_MH_PadN *mc = new McOpt_MH_PadN(key);
mc->common_member();
mc->member(new MmData("pad"));
MmOption_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Binding Refresh Advice //
////////////////////////////////
McOpt_MH_BindingRefreshAdvice *
McOpt_MH_BindingRefreshAdvice::create(CSTR key)
{
McOpt_MH_BindingRefreshAdvice *mc =
new McOpt_MH_BindingRefreshAdvice(key);
mc->common_member();
mc->member(new MmUint("Interval", 16, UN(0), UN(0)));
MmOption_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Alternate Care-of Address //
////////////////////////////////
McOpt_MH_AlternateCoA *
McOpt_MH_AlternateCoA::create(CSTR key)
{
McOpt_MH_AlternateCoA *mc = new McOpt_MH_AlternateCoA(key);
mc->common_member();
mc->member(new MmV6Addr("Address", MUST(), MUST()));
MmOption_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Nonce Indices //
////////////////////////////////
McOpt_MH_NonceIndices *
McOpt_MH_NonceIndices::create(CSTR key)
{
McOpt_MH_NonceIndices *mc = new McOpt_MH_NonceIndices(key);
mc->common_member();
mc->member(new MmUint("HoNonceIndex", 16, UN(0), UN(0)));
mc->member(new MmUint("CoNonceIndex", 16, UN(0), UN(0)));
MmOption_onMH::add(mc);
return(mc);
}
////////////////////////////////////////
// Binding Authorization Data //
////////////////////////////////////////
McOpt_MH_BindingAuthData *
McOpt_MH_BindingAuthData::create(CSTR key)
{
McOpt_MH_BindingAuthData *mc = new McOpt_MH_BindingAuthData(key);
mc->common_member();
mc->member(new MmMH_Auth("Authenticator"));
MmOption_onMH::add(mc);
return(mc);
}
////////////////////////////////
// Mobile Network Prefix //
////////////////////////////////
McOpt_MH_MobNetworkPrefix *
McOpt_MH_MobNetworkPrefix::create(CSTR key) {
McOpt_MH_MobNetworkPrefix *mc = new McOpt_MH_MobNetworkPrefix(key);
mc->common_member();
mc->member(new MmUint("Reserved", 8, UN(0), UN(0)));
mc->member(new MmUint("PrefixLength", 8, UN(0), UN(0)));
mc->member(new MmV6Addr("Prefix", MUST(), MUST()));
MmOption_onMH::add(mc);
return(mc);
}
//////////////////////////////////////////////////////////////////////////////
McUpp_UDP *McUpp_UDP::create(CSTR key, CSTR tophdrkey) {
addCompound(tophdr_ = McTopHdr_UDP::create(tophdrkey));
McUpp_UDP *mc = new McUpp_UDP(key);
mc->member(new MmTopHdr("header", tophdr_));
mc->member(new MmUpper_onUpper("payload", tophdr_));
// dict
MmUpper_onIP::add(mc); // Packet_IP::upper=
return(mc);
}
McTopHdr_UDP *McTopHdr_UDP::create(CSTR key) {
McTopHdr_UDP *mc = new McTopHdr_UDP(key);
mc->SrcPort_member(
new MmUint(
"SourcePort",
16,
GENEHC(mc, McTopHdr_UDP, SourcePort),
EVALHC(mc, McTopHdr_UDP, SourcePort)
)
);
mc->DstPort_member(
new MmUint(
"DestinationPort",
16,
GENEHC(mc, McTopHdr_UDP, DestinationPort),
EVALHC(mc, McTopHdr_UDP, DestinationPort)
)
);
mc->Layerlength_member(new MmUint("Length", 16, GENEHC(mc, McTopHdr_UDP, Length), EVALANY()));
mc->member(new MmUppChecksum("Checksum", 16, DEF_OPTCHKSUM));
// no dict
return(mc);
}
//////////////////////////////////////////////////////////////////////////////
McUpp_TCP* McUpp_TCP::create(CSTR key,CSTR tophdrkey){
addCompound(tophdr_ = McTopHdr_TCP::create(tophdrkey));
McUpp_TCP* mc = new McUpp_TCP(key);
mc->member( new MmTopHdr( "header",tophdr_ ) );
mc->member( new MmPayload( "payload" ) );
// dict
MmUpper_onIP::add(mc); //Packet_IP::upper=
return mc;}
McTopHdr_TCP* McTopHdr_TCP::create(CSTR key){
McTopHdr_TCP* mc = new McTopHdr_TCP(key);
mc->member( new MmUint( "SourcePort", 16, MUST(), MUST() ) );
mc->member( new MmUint( "DestinationPort",16, MUST(), MUST() ) );
mc->member( new MmUint( "SequenceNumber",32, UN(0), UN(0) ) );
mc->member( new MmUint( "AcknowledgmentNumber",32,UN(0),UN(0) ) );
mc->length_member(
new MmUint( "DataOffset", 4,
GENEHC(mc,McTopHdr_TCP,DataOffset), EVALANY() ) );
mc->member( new MmUint( "Reserverd", 6, UN(0), UN(0) ) );
mc->member( new MmUint( "URGFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "ACKFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "PSHFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "RSTFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "SYNFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "FINFlag", 1, UN(0), UN(0) ) );
mc->member( new MmUint( "Window", 16, UN(0), UN(0) ) );
mc->member( new MmUppChecksum( "Checksum",16) );
mc->member( new MmUint( "UrgentPointer",16, UN(0), UN(0) ) );
mc->member( new MmOption_onTCP( "option" ) );
mc->member( new MmData( "Padding",DEF_EVALSKIP ) );
// no dict
return mc;}
//////////////////////////////////////////////////////////////////////////////
McPacket_ARP* McPacket_ARP::create(CSTR key,CSTR tophdrkey){
addCompound(tophdr_ = McTopHdr_ARP::create(tophdrkey));
McPacket_ARP* mc = new McPacket_ARP(key);
mc->member( new MmTopHdr( "header",tophdr_) );
// dict
MmPacket_onEther::add(mc); //Frame_Ether::packet=
return mc;}
McTopHdr_ARP* McTopHdr_ARP::create(CSTR key){
McTopHdr_ARP* mc = new McTopHdr_ARP(key);
mc->member( new MmUint( "Hardware", 16, UN(1), UN(1) ) );
mc->member( new MmUint( "Protocol", 16, UN(2048),UN(2048) ) );
mc->member( new MmUint( "HLEN", 8, UN(6), UN(6) ) );
mc->member( new MmUint( "PLEN", 8, UN(4), UN(4) ) );
mc->member( new MmUint( "Operation", 16, UN(2), UN(1) ) );
mc->member( new MmEther("SenderHAddr", ETTN(), ETNUT()));
mc->member( new MmV4Addr("SenderPAddr", UN(0), UN(0) ) );
mc->member( new MmEther("TargetHAddr", ETNUT(),ETTN()));
mc->member( new MmV4Addr("TargetPAddr", UN(0), UN(0) ) );
// no dict
return mc;}
//////////////////////////////////////////////////////////////////////////////
McPacket_RARP* McPacket_RARP::create(CSTR key,CSTR tophdrkey){
addCompound(tophdr_ = McTopHdr_RARP::create(tophdrkey));
McPacket_RARP* mc = new McPacket_RARP(key);
mc->member( new MmTopHdr( "header",tophdr_) );
// dict
MmPacket_onEther::add(mc); //Frame_Ether::packet=
return mc;}
McTopHdr_RARP* McTopHdr_RARP::create(CSTR key){
McTopHdr_RARP* mc = new McTopHdr_RARP(key);
mc->member( new MmUint( "Hardware", 16, UN(1), UN(1) ) );
mc->member( new MmUint( "Protocol", 16, UN(2048),UN(2048) ) );
mc->member( new MmUint( "HLEN", 8, UN(6), UN(6) ) );
mc->member( new MmUint( "PLEN", 8, UN(4), UN(4) ) );
mc->member( new MmUint( "Operation", 16, UN(3), UN(4) ) );
mc->member( new MmEther("SenderHAddr", ETTN(), ETNUT()));
mc->member( new MmV4Addr("SenderPAddr", UN(0), UN(0) ) );
mc->member( new MmEther("TargetHAddr", ETNUT(),ETTN()));
mc->member( new MmV4Addr("TargetPAddr", UN(0), UN(0) ) );
// no dict
return mc;}
//////////////////////////////////////////////////////////////////////////////
void McUpp_ICMPv4::common_member(){
int32_t Type = icmpv4Type();
type_member(
new MmUint( "Type", 8, UN(Type),UN(Type) ) );
member( new MmUint( "Code", 8, UN(0), UN(0) ) );
member( new MmUppChecksum( "Checksum", 16,
DEF_MUSTCHKSUM, DEF_NOPSEUDO ) );
}
McUpp_ICMPv4_ANY* McUpp_ICMPv4_ANY::create(CSTR key){
McUpp_ICMPv4_ANY* mc = new McUpp_ICMPv4_ANY(key);
mc->common_member();
mc->member( new MmData( "data" ) );
//dict
MmHeader_onICMPv4::add_other(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv4_DestinationUnreachable* McUpp_ICMPv4_DestinationUnreachable::create(CSTR key){
McUpp_ICMPv4_DestinationUnreachable* mc =
new McUpp_ICMPv4_DestinationUnreachable(key);
mc->common_member();
mc->member( new MmUint( "Unused", 32, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
//dict
MmHeader_onICMPv4::add(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv4_TimeExceeded* McUpp_ICMPv4_TimeExceeded::create(CSTR key){
McUpp_ICMPv4_TimeExceeded* mc = new McUpp_ICMPv4_TimeExceeded(key);
mc->common_member();
mc->member( new MmUint( "Unused", 32, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
//dict
MmHeader_onICMPv4::add(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv4_ParameterProblem* McUpp_ICMPv4_ParameterProblem::create(CSTR key){
McUpp_ICMPv4_ParameterProblem* mc =
new McUpp_ICMPv4_ParameterProblem(key);
mc->common_member();
mc->member( new MmUint( "Pointer", 8, UN(0), UN(0) ) );
mc->member( new MmUint( "Unused", 24, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
//dict
MmHeader_onICMPv4::add(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv4_Redirect* McUpp_ICMPv4_Redirect::create(CSTR key){
McUpp_ICMPv4_Redirect* mc = new McUpp_ICMPv4_Redirect(key);
mc->common_member();
mc->member( new MmV4Addr("GatewayInternetAddress", MUST(), MUST() ) );
mc->member( new MmPayload( "payload" ) );
//dict
MmHeader_onICMPv4::add(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_ICMPv4_EchoRequest *McUpp_ICMPv4_EchoRequest::create(CSTR key) {
McUpp_ICMPv4_EchoRequest *mc = new McUpp_ICMPv4_EchoRequest(key);
mc->common_member();
mc->member( new MmUint( "Identifier", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "SequenceNumber",16, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
//dict
MmHeader_onICMPv4::add(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
McUpp_ICMPv4_EchoReply *McUpp_ICMPv4_EchoReply::create(CSTR key) {
McUpp_ICMPv4_EchoReply *mc = new McUpp_ICMPv4_EchoReply(key);
mc->common_member();
mc->member( new MmUint( "Identifier", 16, UN(0), UN(0) ) );
mc->member( new MmUint( "SequenceNumber",16, UN(0), UN(0) ) );
mc->member( new MmPayload( "payload" ) );
//dict
MmHeader_onICMPv4::add(mc); //Upp_ICMPv4::header= (upper=)
return mc;}
//
// RFC 2080
//
// RIPng for IPv6
//
////////////////////////////////////////////////////////////////////////////////
McUdp_RIPng *McUdp_RIPng::create(CSTR key) {
McUdp_RIPng *mc = new McUdp_RIPng(key);
mc->member(new MmUint("Command", 8, UN(0), UN(0)));
mc->member(new MmUint("Version", 8, UN(1), UN(1)));
mc->member(new MmUint("Reserved", 16, UN(0), UN(0)));
mc->member(new MmRTE_onRIPng("rte"));
MmUpper_onUpper::add(mc);
return(mc);
}
McRIPng_RTE *McRIPng_RTE::create(CSTR key) {
McRIPng_RTE *mc = new McRIPng_RTE(key);
mc->member(new MmV6Addr("Prefix", MUST(), MUST()));
mc->member(new MmUint("RouteTag", 16, UN(0), UN(0)));
mc->member(new MmUint("PrefixLength", 8, UN(64), UN(64)));
mc->member(new MmUint("Metric", 8, UN(0), UN(0)));
MmRTE_onRIPng::add_other(mc);
return(mc);
}
//
// RFC 1035
//
// Domain Implementation and Specification
//
////////////////////////////////////////////////////////////////////////////////
McUdp_DNS *McUdp_DNS::create(CSTR key0, CSTR key1, CSTR key2, CSTR key3, CSTR key4) {
McUdp_DNS *mc = new McUdp_DNS(key0);
addCompound(McDNS_Question::create(key1, mc));
addCompound(McDNS_Answer::create(key2, mc));
addCompound(McDNS_Authority::create(key3, mc));
addCompound(McDNS_Additional::create(key4, mc));
mc->member(new MmUint("Identifier", 16, UN(0), UN(0)));
mc->member(new MmUint("QR", 1, UN(0), UN(0)));
mc->member(new MmUint("Opcode", 4, UN(0), UN(0)));
mc->member(new MmUint("AA", 1, UN(0), UN(0)));
mc->member(new MmUint("TC", 1, UN(0), UN(0)));
mc->member(new MmUint("RD", 1, UN(0), UN(0)));
mc->member(new MmUint("RA", 1, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 3, UN(0), UN(0)));
mc->member(new MmUint("RCode", 4, UN(0), UN(0)));
mc->QDCount_member(new MmUint("QDCount", 16, GENEHC(mc, McUdp_DNS, QDCount), EVALANY()));
mc->ANCount_member(new MmUint("ANCount", 16, GENEHC(mc, McUdp_DNS, ANCount), EVALANY()));
mc->NSCount_member(new MmUint("NSCount", 16, GENEHC(mc, McUdp_DNS, NSCount), EVALANY()));
mc->ARCount_member(new MmUint("ARCount", 16, GENEHC(mc, McUdp_DNS, ARCount), EVALANY()));
mc->member(new MmQuestion_onDNS("question", mc));
mc->member(new MmAnswer_onDNS("answer", mc));
mc->member(new MmAuthority_onDNS("authority", mc));
mc->member(new MmAdditional_onDNS("additional", mc));
MmUpper_onUpper::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_Question *McDNS_Question::create(CSTR key, McUdp_DNS *dnshdr) {
McDNS_Question *mc = new McDNS_Question(key);
mc->McUdp_DNS_ = dnshdr;
mc->member(new MmEntry_onQuestion("entry", dnshdr));
MmQuestion_onDNS::add_other(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_Answer *McDNS_Answer::create(CSTR key, McUdp_DNS *dnshdr) {
McDNS_Answer *mc = new McDNS_Answer(key);
mc->McUdp_DNS_ = dnshdr;
mc->member(new MmRR_onAnswer("rr", dnshdr));
MmAnswer_onDNS::add_other(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_Authority *McDNS_Authority::create(CSTR key, McUdp_DNS *dnshdr) {
McDNS_Authority *mc = new McDNS_Authority(key);
mc->McUdp_DNS_ = dnshdr;
mc->member(new MmRR_onAuthority("rr", dnshdr));
MmAuthority_onDNS::add_other(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_Additional *McDNS_Additional::create(CSTR key, McUdp_DNS *dnshdr) {
McDNS_Additional *mc = new McDNS_Additional(key);
mc->McUdp_DNS_ = dnshdr;
mc->member(new MmRR_onAdditional("rr", dnshdr));
MmAdditional_onDNS::add_other(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_QuestionEntry *McDNS_QuestionEntry::create(CSTR key) {
McDNS_QuestionEntry *mc = new McDNS_QuestionEntry(key);
mc->member(new MmDNSName("Name", MUST(), MUST()));
mc->member(new MmQType("Type", 16, UN(0), UN(0)));
mc->member(new MmUint("Class", 16, UN(1), UN(1)));
MmEntry_onQuestion::add_other(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
void McDNS_RR::common_member() {
member(new MmDNSName("Name", MUST(), MUST()));
type_member(new MmUint("Type", 16, GENEHC(this, McDNS_RR, Type), EVALHC(this, McDNS_RR, Type)));
member(new MmUint("Class", 16, UN(1), UN(1)));
member(new MmUint("TTL", 32, UN(0), UN(0)));
length_member(new MmUint("Length", 16, GENEHC(this, McDNS_RR, Length), EVALANY()));
}
////////////////////////////////////////////////////////////////
McDNS_RR_ANY *McDNS_RR_ANY::create(CSTR key) {
McDNS_RR_ANY *mc = new McDNS_RR_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmRR_onAnswer::add_other(mc);
MmRR_onAuthority::add_other(mc);
MmRR_onAdditional::add_other(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_A *McDNS_RR_A::create(CSTR key) {
McDNS_RR_A *mc = new McDNS_RR_A(key);
mc->common_member();
mc->member(new MmV4Addr("Address", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_NS *McDNS_RR_NS::create(CSTR key) {
McDNS_RR_NS *mc = new McDNS_RR_NS(key);
mc->common_member();
mc->member(new MmDNSName("NSDName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MD *McDNS_RR_MD::create(CSTR key) {
McDNS_RR_MD *mc = new McDNS_RR_MD(key);
mc->common_member();
mc->member(new MmDNSName("MADName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MF *McDNS_RR_MF::create(CSTR key) {
McDNS_RR_MF *mc = new McDNS_RR_MF(key);
mc->common_member();
mc->member(new MmDNSName("MADName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_CNAME *McDNS_RR_CNAME::create(CSTR key) {
McDNS_RR_CNAME *mc = new McDNS_RR_CNAME(key);
mc->common_member();
mc->member(new MmDNSName("CName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_SOA *McDNS_RR_SOA::create(CSTR key) {
McDNS_RR_SOA *mc = new McDNS_RR_SOA(key);
mc->common_member();
mc->member(new MmDNSName("MName", MUST(), MUST()));
mc->member(new MmDNSName("RName", MUST(), MUST()));
mc->member(new MmUint("Serial", 32, UN(0), UN(0)));
mc->member(new MmUint("Refresh", 32, UN(0), UN(0)));
mc->member(new MmUint("Retry", 32, UN(0), UN(0)));
mc->member(new MmUint("Expire", 32, UN(0), UN(0)));
mc->member(new MmUint("Minimum", 32, UN(0), UN(0)));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MB *McDNS_RR_MB::create(CSTR key) {
McDNS_RR_MB *mc = new McDNS_RR_MB(key);
mc->common_member();
mc->member(new MmDNSName("MADName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MG *McDNS_RR_MG::create(CSTR key) {
McDNS_RR_MG *mc = new McDNS_RR_MG(key);
mc->common_member();
mc->member(new MmDNSName("MGMName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MR *McDNS_RR_MR::create(CSTR key) {
McDNS_RR_MR *mc = new McDNS_RR_MR(key);
mc->common_member();
mc->member(new MmDNSName("NewName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_NULL *McDNS_RR_NULL::create(CSTR key) {
McDNS_RR_NULL *mc = new McDNS_RR_NULL(key);
mc->common_member();
mc->member(new MmVarOctets("data"));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_WKS *McDNS_RR_WKS::create(CSTR key) {
McDNS_RR_WKS *mc = new McDNS_RR_WKS(key);
mc->common_member();
mc->member(new MmV4Addr("Address", MUST(), MUST()));
mc->member(new MmUint("Protocol", 8, UN(0), UN(0)));
mc->member(new MmVarOctets("BitMap"));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_PTR *McDNS_RR_PTR::create(CSTR key) {
McDNS_RR_PTR *mc = new McDNS_RR_PTR(key);
mc->common_member();
mc->member(new MmDNSName("PTRDName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_HINFO *McDNS_RR_HINFO::create(CSTR key) {
McDNS_RR_HINFO *mc = new McDNS_RR_HINFO(key);
mc->common_member();
mc->member(new MmDNSStr("CPU", MUST(), MUST()));
mc->member(new MmDNSStr("OS", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MINFO *McDNS_RR_MINFO::create(CSTR key) {
McDNS_RR_MINFO *mc = new McDNS_RR_MINFO(key);
mc->common_member();
mc->member(new MmDNSName("RMailbox", MUST(), MUST()));
mc->member(new MmDNSName("EMailbox", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_MX *McDNS_RR_MX::create(CSTR key) {
McDNS_RR_MX *mc = new McDNS_RR_MX(key);
mc->common_member();
mc->member(new MmUint("Preference", 16, UN(0), UN(0)));
mc->member(new MmDNSName("Exchange", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_TXT *McDNS_RR_TXT::create(CSTR key) {
McDNS_RR_TXT *mc = new McDNS_RR_TXT(key);
mc->common_member();
mc->member(
new MmMultiple(
new MmDNSStr(
"TXT",
MUST(),
MUST()
),
(METH_HC_MLC)&McDNS_RR_TXT::HC_MLC(TXT)
)
);
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_RP *McDNS_RR_RP::create(CSTR key) {
McDNS_RR_RP *mc = new McDNS_RR_RP(key);
mc->common_member();
mc->member(new MmDNSName("MailBox", MUST(), MUST()));
mc->member(new MmDNSName("TXTDName", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_AFSDB *McDNS_RR_AFSDB::create(CSTR key) {
McDNS_RR_AFSDB *mc = new McDNS_RR_AFSDB(key);
mc->common_member();
mc->member(new MmUint("Subtype", 16, UN(0), UN(0)));
mc->member(new MmDNSName("Hostname", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_X25 *McDNS_RR_X25::create(CSTR key) {
McDNS_RR_X25 *mc = new McDNS_RR_X25(key);
mc->common_member();
mc->member(new MmDNSStr("Address", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_ISDN *McDNS_RR_ISDN::create(CSTR key) {
McDNS_RR_ISDN *mc = new McDNS_RR_ISDN(key);
mc->common_member();
mc->member(new MmDNSStr("Address", MUST(), MUST()));
mc->member(new MmDNSStr("SubAddress", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_RT *McDNS_RR_RT::create(CSTR key) {
McDNS_RR_RT *mc = new McDNS_RR_RT(key);
mc->common_member();
mc->member(new MmUint("Preference", 16, UN(0), UN(0)));
mc->member(new MmDNSName("Intermediate", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_PX *McDNS_RR_PX::create(CSTR key) {
McDNS_RR_PX *mc = new McDNS_RR_PX(key);
mc->common_member();
mc->member(new MmUint("Preference", 16, UN(0), UN(0)));
mc->member(new MmDNSName("Map822", MUST(), MUST()));
mc->member(new MmDNSName("MapX400", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_AAAA *McDNS_RR_AAAA::create(CSTR key) {
McDNS_RR_AAAA *mc = new McDNS_RR_AAAA(key);
mc->common_member();
mc->member(new MmV6Addr("Address", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_SRV *McDNS_RR_SRV::create(CSTR key) {
McDNS_RR_SRV *mc = new McDNS_RR_SRV(key);
mc->common_member();
mc->member(new MmUint("Priority", 16, UN(0), UN(0)));
mc->member(new MmUint("Weight", 16, UN(0), UN(0)));
mc->member(new MmUint("Port", 16, UN(0), UN(0)));
mc->member(new MmDNSName("Target", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
McDNS_RR_NAPTR *McDNS_RR_NAPTR::create(CSTR key) {
McDNS_RR_NAPTR *mc = new McDNS_RR_NAPTR(key);
mc->common_member();
mc->member(new MmUint("Order", 16, UN(0), UN(0)));
mc->member(new MmUint("Preference", 16, UN(0), UN(0)));
mc->member(new MmDNSStr("Flags", MUST(), MUST()));
mc->member(new MmDNSStr("Service", MUST(), MUST()));
mc->member(new MmDNSStr("Regexp", MUST(), MUST()));
mc->member(new MmDNSName("Replacement", MUST(), MUST()));
MmRR_onAnswer::add(mc);
MmRR_onAuthority::add(mc);
MmRR_onAdditional::add(mc);
return(mc);
}
//
// draft-ietf-dhc-dhcpv6-28.txt
//
// DHCP for IPv6 (-28)
//
////////////////////////////////////////////////////////////////////////////////
void McUdp_DHCPv6::common_member() {
type_member(new MmUint("Type", 8, GENEHC(this, McUdp_DHCPv6, Type), EVALHC(this, McUdp_DHCPv6, Type)));
return;
}
McUdp_DHCPv6_ANY *McUdp_DHCPv6_ANY::create(CSTR key) {
McUdp_DHCPv6_ANY *mc = new McUdp_DHCPv6_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmHeader_onDHCPv6::add_other(mc);
return(mc);
}
McUdp_DHCPv6_Solicit *McUdp_DHCPv6_Solicit::create(CSTR key) {
McUdp_DHCPv6_Solicit *mc = new McUdp_DHCPv6_Solicit(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Advertise *McUdp_DHCPv6_Advertise::create(CSTR key) {
McUdp_DHCPv6_Advertise *mc = new McUdp_DHCPv6_Advertise(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Request *McUdp_DHCPv6_Request::create(CSTR key) {
McUdp_DHCPv6_Request *mc = new McUdp_DHCPv6_Request(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Confirm *McUdp_DHCPv6_Confirm::create(CSTR key) {
McUdp_DHCPv6_Confirm *mc = new McUdp_DHCPv6_Confirm(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Renew *McUdp_DHCPv6_Renew::create(CSTR key) {
McUdp_DHCPv6_Renew *mc = new McUdp_DHCPv6_Renew(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Rebind *McUdp_DHCPv6_Rebind::create(CSTR key) {
McUdp_DHCPv6_Rebind *mc = new McUdp_DHCPv6_Rebind(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Reply *McUdp_DHCPv6_Reply::create(CSTR key) {
McUdp_DHCPv6_Reply *mc = new McUdp_DHCPv6_Reply(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Release *McUdp_DHCPv6_Release::create(CSTR key) {
McUdp_DHCPv6_Release *mc = new McUdp_DHCPv6_Release(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Decline *McUdp_DHCPv6_Decline::create(CSTR key) {
McUdp_DHCPv6_Decline *mc = new McUdp_DHCPv6_Decline(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_Reconfigure *McUdp_DHCPv6_Reconfigure::create(CSTR key) {
McUdp_DHCPv6_Reconfigure *mc = new McUdp_DHCPv6_Reconfigure(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_InformationRequest *McUdp_DHCPv6_InformationRequest::create(CSTR key) {
McUdp_DHCPv6_InformationRequest *mc = new McUdp_DHCPv6_InformationRequest(key);
mc->common_member();
mc->member(new MmUint("Identifier", 24, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_RelayForward *McUdp_DHCPv6_RelayForward::create(CSTR key) {
McUdp_DHCPv6_RelayForward *mc = new McUdp_DHCPv6_RelayForward(key);
mc->common_member();
mc->member(new MmUint("HopCount", 8, UN(0), UN(0)));
mc->member(new MmV6Addr("LinkAddr", MUST(), MUST()));
mc->member(new MmV6Addr("PeerAddr", MUST(), MUST()));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
McUdp_DHCPv6_RelayReply *McUdp_DHCPv6_RelayReply::create(CSTR key) {
McUdp_DHCPv6_RelayReply *mc = new McUdp_DHCPv6_RelayReply(key);
mc->common_member();
mc->member(new MmUint("HopCount", 8, UN(0), UN(0)));
mc->member(new MmV6Addr("LinkAddr", MUST(), MUST()));
mc->member(new MmV6Addr("PeerAddr", MUST(), MUST()));
mc->member(new MmOption_onDHCPv6("option"));
MmHeader_onDHCPv6::add(mc);
return(mc);
}
//
// DHCP options
//
////////////////////////////////////////////////////////////////
void McOpt_DHCPv6::common_member() {
code_member(new MmUint("Code", 16, GENEHC(this, McOpt_DHCPv6, Code), EVALHC(this, McOpt_DHCPv6, Code)));
length_member(new MmUint("Length", 16, GENEHC(this, McOpt_DHCPv6, Length), EVALANY()));
}
McOpt_DHCPv6_ANY *McOpt_DHCPv6_ANY::create(CSTR key) {
McOpt_DHCPv6_ANY *mc = new McOpt_DHCPv6_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmOption_onDHCPv6::add_other(mc);
return(mc);
}
//
// Client Identifier option
//
////////////////////////////////
McOpt_DHCPv6_CID *McOpt_DHCPv6_CID::create(CSTR key) {
McOpt_DHCPv6_CID *mc = new McOpt_DHCPv6_CID(key);
mc->common_member();
mc->member(new MmDUID_onOption("duid"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Server Identifier option
//
////////////////////////////////
McOpt_DHCPv6_SID *McOpt_DHCPv6_SID::create(CSTR key) {
McOpt_DHCPv6_SID *mc = new McOpt_DHCPv6_SID(key);
mc->common_member();
mc->member(new MmDUID_onOption("duid"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Identity Association for Non-temporary Addresses Option
//
////////////////////////////////
McOpt_DHCPv6_IA_NA *McOpt_DHCPv6_IA_NA::create(CSTR key) {
McOpt_DHCPv6_IA_NA *mc = new McOpt_DHCPv6_IA_NA(key);
mc->common_member();
mc->member(new MmUint("Identifier", 32, UN(0), UN(0)));
mc->member(new MmUint("Time1", 32, UN(0), UN(0)));
mc->member(new MmUint("Time2", 32, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Identity Association for Temporary Addresses option
//
////////////////////////////////
McOpt_DHCPv6_IA_TA *McOpt_DHCPv6_IA_TA::create(CSTR key) {
McOpt_DHCPv6_IA_TA *mc = new McOpt_DHCPv6_IA_TA(key);
mc->common_member();
mc->member(new MmUint("Identifier", 32, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// IA Address option
//
////////////////////////////////
McOpt_DHCPv6_IA_Address *McOpt_DHCPv6_IA_Address::create(CSTR key) {
McOpt_DHCPv6_IA_Address *mc = new McOpt_DHCPv6_IA_Address(key);
mc->common_member();
mc->member(new MmV6Addr("Address", MUST(), MUST()));
mc->member(new MmUint("PreferredLifetime", 32, UN(0), UN(0)));
mc->member(new MmUint("ValidLifetime", 32, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Option Request option
//
////////////////////////////////
McOpt_DHCPv6_OptionRequest *McOpt_DHCPv6_OptionRequest::create(CSTR key) {
McOpt_DHCPv6_OptionRequest *mc = new McOpt_DHCPv6_OptionRequest(key);
mc->common_member();
mc->member(
new MmMultiple(
new MmUint("OptionCode", 16, UN(0), UN(0)),
(METH_HC_MLC)&McOpt_DHCPv6_OptionRequest::HC_MLC(OptionCode)
)
);
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Preference option
//
////////////////////////////////
McOpt_DHCPv6_Preference *McOpt_DHCPv6_Preference::create(CSTR key) {
McOpt_DHCPv6_Preference *mc = new McOpt_DHCPv6_Preference(key);
mc->common_member();
mc->member(new MmUint("Preference", 8, UN(0), UN(0)));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Elapsed Time option
//
////////////////////////////////
McOpt_DHCPv6_ElapsedTime *McOpt_DHCPv6_ElapsedTime::create(CSTR key) {
McOpt_DHCPv6_ElapsedTime *mc = new McOpt_DHCPv6_ElapsedTime(key);
mc->common_member();
mc->member(new MmUint("Time", 16, UN(0), UN(0)));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Relay Message option
//
////////////////////////////////
McOpt_DHCPv6_RelayMessage *McOpt_DHCPv6_RelayMessage::create(CSTR key) {
McOpt_DHCPv6_RelayMessage *mc = new McOpt_DHCPv6_RelayMessage(key);
mc->common_member();
mc->member(new MmHeader_onDHCPv6("relay"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Authentication option
//
////////////////////////////////
McOpt_DHCPv6_Authentication *McOpt_DHCPv6_Authentication::create(CSTR key) {
McOpt_DHCPv6_Authentication *mc = new McOpt_DHCPv6_Authentication(key);
mc->common_member();
mc->proto_member(new MmUint(
"Protocol",
8,
GENEHC(mc, McOpt_DHCPv6_Authentication, Protocol),
EVALHC(mc, McOpt_DHCPv6_Authentication, Protocol)
));
mc->member(new MmUint("Algorithm", 8, UN(1), UN(1)));
mc->member(new MmUint("RDM", 8, UN(0), UN(0)));
mc->member(new MmMH_Cookie64("ReplayDetection"));
mc->member(new MmProto_onAuth("auth", mc));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Server unicast option
//
////////////////////////////////
McOpt_DHCPv6_ServerUnicast *McOpt_DHCPv6_ServerUnicast::create(CSTR key) {
McOpt_DHCPv6_ServerUnicast *mc = new McOpt_DHCPv6_ServerUnicast(key);
mc->common_member();
mc->member(new MmV6Addr("Address", MUST(), MUST()));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Status Code Option
//
////////////////////////////////
McOpt_DHCPv6_StatusCode *McOpt_DHCPv6_StatusCode::create(CSTR key) {
McOpt_DHCPv6_StatusCode *mc = new McOpt_DHCPv6_StatusCode(key);
mc->common_member();
mc->member(new MmUint("StatusCode", 16, UN(0), UN(0)));
mc->member(new MmData("Message"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Rapid Commit option
//
////////////////////////////////
McOpt_DHCPv6_RapidCommit *McOpt_DHCPv6_RapidCommit::create(CSTR key) {
McOpt_DHCPv6_RapidCommit *mc = new McOpt_DHCPv6_RapidCommit(key);
mc->common_member();
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// User Class option
//
////////////////////////////////
McOpt_DHCPv6_UserClass *McOpt_DHCPv6_UserClass::create(CSTR key) {
McOpt_DHCPv6_UserClass *mc = new McOpt_DHCPv6_UserClass(key);
mc->common_member();
mc->member(new MmUserClass_onOption("data"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
McDHCPv6_UserClassData *McDHCPv6_UserClassData::create(CSTR key) {
McDHCPv6_UserClassData *mc = new McDHCPv6_UserClassData(key);
mc->length_member(new MmUint("Length", 16, GENEHC(mc, McDHCPv6_UserClassData, Length), EVALANY()));
mc->member(new MmData("data"));
MmUserClass_onOption::add_other(mc);
return(mc);
}
//
// Vendor Class Option
//
////////////////////////////////
McOpt_DHCPv6_VendorClass *McOpt_DHCPv6_VendorClass::create(CSTR key) {
McOpt_DHCPv6_VendorClass *mc = new McOpt_DHCPv6_VendorClass(key);
mc->common_member();
mc->member(new MmUint("EnterpriseNumber", 32, UN(0), UN(0)));
mc->member(new MmVendorClass_onOption("data"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
McDHCPv6_VendorClassData *McDHCPv6_VendorClassData::create(CSTR key) {
McDHCPv6_VendorClassData *mc = new McDHCPv6_VendorClassData(key);
mc->length_member(new MmUint("Length", 16, GENEHC(mc, McDHCPv6_VendorClassData, Length), EVALANY()));
mc->member(new MmData("data"));
MmVendorClass_onOption::add_other(mc);
return(mc);
}
//
// Vendor-specific Information option
//
////////////////////////////////
McOpt_DHCPv6_VendorSpecificInfo *McOpt_DHCPv6_VendorSpecificInfo::create(CSTR key) {
McOpt_DHCPv6_VendorSpecificInfo *mc = new McOpt_DHCPv6_VendorSpecificInfo(key);
mc->common_member();
mc->member(new MmUint("EnterpriseNumber", 32, UN(0), UN(0)));
mc->member(new MmOptionData_onOption("data"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
McDHCPv6_OptionData *McDHCPv6_OptionData::create(CSTR key) {
McDHCPv6_OptionData *mc = new McDHCPv6_OptionData(key);
mc->member(new MmUint("Code", 16, UN(0), UN(0)));
mc->length_member(new MmUint("Length", 16, GENEHC(mc, McDHCPv6_OptionData, Length), EVALANY()));
mc->member(new MmData("data"));
MmOptionData_onOption::add_other(mc);
return(mc);
}
//
// Interface-Id Option
//
////////////////////////////////
McOpt_DHCPv6_IID *McOpt_DHCPv6_IID::create(CSTR key) {
McOpt_DHCPv6_IID *mc = new McOpt_DHCPv6_IID(key);
mc->common_member();
mc->member(new MmData("Identifier"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Reconfigure Message option
//
////////////////////////////////
McOpt_DHCPv6_ReconfigureMessage *McOpt_DHCPv6_ReconfigureMessage::create(CSTR key) {
McOpt_DHCPv6_ReconfigureMessage *mc = new McOpt_DHCPv6_ReconfigureMessage(key);
mc->common_member();
mc->member(new MmUint("Type", 8, UN(0), UN(0)));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Reconfigure Accept option
//
////////////////////////////////
McOpt_DHCPv6_ReconfigureAccept *McOpt_DHCPv6_ReconfigureAccept::create(CSTR key) {
McOpt_DHCPv6_ReconfigureAccept *mc = new McOpt_DHCPv6_ReconfigureAccept(key);
mc->common_member();
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Identity Association for Prefix Delegation Option
//
////////////////////////////////
McOpt_DHCPv6_IA_PD *McOpt_DHCPv6_IA_PD::create(CSTR key) {
McOpt_DHCPv6_IA_PD *mc = new McOpt_DHCPv6_IA_PD(key);
mc->common_member();
mc->member(new MmUint("Identifier", 32, UN(0), UN(0)));
mc->member(new MmUint("Time1", 32, UN(0), UN(0)));
mc->member(new MmUint("Time2", 32, UN(0), UN(0)));
mc->member(new MmOption_onDHCPv6("option"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// IA_PD Prefix option
//
////////////////////////////////
McOpt_DHCPv6_IA_Prefix *McOpt_DHCPv6_IA_Prefix::create(CSTR key) {
McOpt_DHCPv6_IA_Prefix *mc = new McOpt_DHCPv6_IA_Prefix(key);
mc->common_member();
mc->member(new MmUint("PreferredLifetime", 32, UN(0), UN(0)));
mc->member(new MmUint("ValidLifetime", 32, UN(0), UN(0)));
mc->member(new MmUint("PrefixLength", 8, UN(0), UN(0)));
mc->member(new MmV6Addr("Prefix", MUST(), MUST()));
mc->member(new MmOption_onDHCPv6("option"));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Domain Name Server option
//
////////////////////////////////
McOpt_DHCPv6_DNS_Servers *McOpt_DHCPv6_DNS_Servers::create(CSTR key) {
McOpt_DHCPv6_DNS_Servers *mc = new McOpt_DHCPv6_DNS_Servers(key);
mc->common_member();
mc->member(
new MmMultiple(
new MmV6Addr("Address", MUST(), MUST()),
(METH_HC_MLC)&McOpt_DHCPv6_DNS_Servers::HC_MLC(Address)
)
);
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Domain Search List option
//
////////////////////////////////
McOpt_DHCPv6_DNS_SearchList *McOpt_DHCPv6_DNS_SearchList::create(CSTR key) {
McOpt_DHCPv6_DNS_SearchList *mc = new McOpt_DHCPv6_DNS_SearchList(key);
mc->common_member();
mc->member(new MmDNSName("SearchString", MUST(), MUST()));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// Network Time Protocol (NTP) Servers option
//
////////////////////////////////
McOpt_DHCPv6_NTP_Servers *McOpt_DHCPv6_NTP_Servers::create(CSTR key) {
McOpt_DHCPv6_NTP_Servers *mc = new McOpt_DHCPv6_NTP_Servers(key);
mc->common_member();
mc->member(
new MmMultiple(
new MmV6Addr("Address", MUST(), MUST()),
(METH_HC_MLC)&McOpt_DHCPv6_NTP_Servers::HC_MLC(Address)
)
);
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// IEEE 1003.1 POSIX Timezone option
//
////////////////////////////////
McOpt_DHCPv6_NTP_Timezone *McOpt_DHCPv6_NTP_Timezone::create(CSTR key) {
McOpt_DHCPv6_NTP_Timezone *mc = new McOpt_DHCPv6_NTP_Timezone(key);
mc->common_member();
mc->member(new MmTimezone("Timezone", MUST(), MUST()));
MmOption_onDHCPv6::add(mc);
return(mc);
}
//
// DHCP unique identifier (DUID)
//
////////////////////////////////////////////////////////////////
void McDHCPv6_DUID::common_member() {
type_member(new MmUint("Type", 16, GENEHC(this, McDHCPv6_DUID, Type), EVALHC(this, McDHCPv6_DUID, Type)));
return;
}
McDHCPv6_DUID_ANY *McDHCPv6_DUID_ANY::create(CSTR key) {
McDHCPv6_DUID_ANY *mc = new McDHCPv6_DUID_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmDUID_onOption::add_other(mc);
return(mc);
}
//
// DUID based on link-layer address plus time [DUID-LLT]
//
////////////////////////////////
McDHCPv6_DUID_LLT_ANY *McDHCPv6_DUID_LLT_ANY::create(CSTR key) {
McDHCPv6_DUID_LLT_ANY *mc = new McDHCPv6_DUID_LLT_ANY(key);
mc->common_member();
mc->hwtype_member(
new MmUint(
"HardwareType",
16,
GENEHC(mc, McDHCPv6_DUID_LLT, HardwareType),
EVALHC(mc, McDHCPv6_DUID_LLT, HardwareType)
)
);
mc->member(new MmUint("Time", 32, UN(0), UN(0)));
mc->member(new MmData("LinkLayerAddress"));
MmLLT_onDUID::add_other(mc);
return(mc);
}
McDHCPv6_DUID_LLT_Ether *McDHCPv6_DUID_LLT_Ether::create(CSTR key) {
McDHCPv6_DUID_LLT_Ether *mc = new McDHCPv6_DUID_LLT_Ether(key);
mc->common_member();
mc->hwtype_member(
new MmUint(
"HardwareType",
16,
GENEHC(mc, McDHCPv6_DUID_LLT, HardwareType),
EVALHC(mc, McDHCPv6_DUID_LLT, HardwareType)
)
);
mc->member(new MmUint("Time", 32, UN(0), UN(0)));
mc->member(new MmEther("LinkLayerAddress", MUST(), MUST()));
MmLLT_onDUID::add(mc);
return(mc);
}
//
// DUID assigned by vendor based on Enterprise number [DUID-EN]
//
////////////////////////////////
McDHCPv6_DUID_EN *McDHCPv6_DUID_EN::create(CSTR key) {
McDHCPv6_DUID_EN *mc = new McDHCPv6_DUID_EN(key);
mc->common_member();
mc->member(new MmUint("EnterpriseNumber", 32, UN(0), UN(0)));
mc->member(new MmData("Identifier"));
MmDUID_onOption::add(mc);
return(mc);
}
//
// DUID based on link-layer address [DUID-LL]
//
////////////////////////////////
McDHCPv6_DUID_LL_ANY *McDHCPv6_DUID_LL_ANY::create(CSTR key) {
McDHCPv6_DUID_LL_ANY *mc = new McDHCPv6_DUID_LL_ANY(key);
mc->common_member();
mc->hwtype_member(
new MmUint(
"HardwareType",
16,
GENEHC(mc, McDHCPv6_DUID_LL, HardwareType),
EVALHC(mc, McDHCPv6_DUID_LL, HardwareType)
)
);
mc->member(new MmData("LinkLayerAddress"));
MmLL_onDUID::add_other(mc);
return(mc);
}
McDHCPv6_DUID_LL_Ether *McDHCPv6_DUID_LL_Ether::create(CSTR key) {
McDHCPv6_DUID_LL_Ether *mc = new McDHCPv6_DUID_LL_Ether(key);
mc->common_member();
mc->hwtype_member(
new MmUint(
"HardwareType",
16,
GENEHC(mc, McDHCPv6_DUID_LL, HardwareType),
EVALHC(mc, McDHCPv6_DUID_LL, HardwareType)
)
);
mc->member(new MmEther("LinkLayerAddress", MUST(), MUST()));
MmLL_onDUID::add(mc);
return(mc);
}
//
// Authentication of DHCP Messages
//
////////////////////////////////////////////////////////////////
McDHCPv6_Auth_ANY *McDHCPv6_Auth_ANY::create(CSTR key) {
McDHCPv6_Auth_ANY *mc = new McDHCPv6_Auth_ANY(key);
mc->member(new MmData("data"));
MmProto_onAuth::add_other(mc);
return(mc);
}
McDHCPv6_Auth_Delayed *McDHCPv6_Auth_Delayed::create(CSTR key) {
McDHCPv6_Auth_Delayed *mc = new McDHCPv6_Auth_Delayed(key);
mc->member(new MmDHCPRealm("Realm", MUST(), MUST()));
mc->member(new MmUint("Identifier", 32, UN(0), UN(0)));
mc->member(new MmDHCPAuth("Authenticator"));
MmProto_onAuth::add(mc);
return(mc);
}
McDHCPv6_Auth_ReconfigureKey *McDHCPv6_Auth_ReconfigureKey::create(CSTR key) {
McDHCPv6_Auth_ReconfigureKey *mc = new McDHCPv6_Auth_ReconfigureKey(key);
mc->member(new MmUint("Type", 8, UN(0), UN(0)));
mc->member(new MmDHCPAuth("data"));
MmProto_onAuth::add(mc);
return(mc);
}
//
// RFC 1112/2236/3376
//
// IGMPv1/IGMPv2/IGMPv3
//
////////////////////////////////////////////////////////////////////////////////
void McUpp_IGMP::common_member(){
int32_t Type = igmpType();
type_member(
new MmUint( "Type", 8, UN(Type),UN(Type) ) );
member( new MmUint( "MaxRespTime", 8, UN(0), UN(0) ) );
member( new MmUppChecksum( "Checksum", 16,
DEF_MUSTCHKSUM, DEF_NOPSEUDO ) );
}
///////////////////////////////////////////////////////////////////////////////
McUpp_IGMP_ANY* McUpp_IGMP_ANY::create(CSTR key){
McUpp_IGMP_ANY* mc = new McUpp_IGMP_ANY(key);
mc->common_member();
mc->member( new MmData( "data" ) );
//dict
MmHeader_onIGMP::add_other(mc); //Upp_IGMP::header= (upper=)
return mc;}
////////////////////////////////////////////////////////////////////////////////
McUpp_IGMP_IGMPv3Report* McUpp_IGMP_IGMPv3Report::create(CSTR key){
McUpp_IGMP_IGMPv3Report* mc = new McUpp_IGMP_IGMPv3Report(key);
mc->common_member();
mc->member( new MmUint( "Reserved", 16, UN(0), UN(0) ) );
mc->member(
new MmUint( "NumOfGroupAddrRecords", 16,
GENEHC(mc,McUpp_IGMP_IGMPv3Report,NumOfGroupAddrRecords),
EVALANY(), ICVCONST() ) );
mc->member( new MmIGMPv3AddrRecord_onIGMP("IGMPv3_AddrRecord"));
//dict
MmHeader_onIGMP::add(mc); //Upp_IGMP::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_IGMP_IGMPQuery* McUpp_IGMP_IGMPQuery::create(CSTR key){
McUpp_IGMP_IGMPQuery* mc = new McUpp_IGMP_IGMPQuery(key);
mc->common_member();
mc->member( new MmV4Addr( "GroupAddress", MUST(), MUST() ) );
// ICMPv1 and IGMPv2 Query only have GroupAddress
#ifndef NOT_USE_IGMPV3_QUERY
mc->member(new MmUint("Resv", 4, UN(0), UN(0)));
mc->member(new MmUint("SFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("QRV", 3, UN(0), UN(0)));
mc->member(new MmUint("QQIC", 8, UN(0), UN(0)));
mc->member(
new MmUint( "NumOfSources", 16,
GENEHC(mc,McUpp_IGMP_IGMPQuery,NumOfSources),
EVALANY(), ICVCONST() ) );
mc->member(
new MmMultiple(
new MmV4Addr("SourceAddress", MUST(), MUST()),
(METH_HC_MLC)&McUpp_IGMP_IGMPQuery::HC_MLC(SourceAddress)
)
);
#endif // NOT_USE_IGMPV3_QUERY
//dict
MmHeader_onIGMP::add(mc); //Upp_IGMP::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_IGMP_IGMPv1Report* McUpp_IGMP_IGMPv1Report::create(CSTR key){
McUpp_IGMP_IGMPv1Report* mc = new McUpp_IGMP_IGMPv1Report(key);
mc->common_member();
mc->member( new MmV4Addr( "GroupAddress", MUST(), MUST() ) );
//dict
MmHeader_onIGMP::add(mc); //Upp_IGMP::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_IGMP_IGMPv2Report* McUpp_IGMP_IGMPv2Report::create(CSTR key){
McUpp_IGMP_IGMPv2Report* mc = new McUpp_IGMP_IGMPv2Report(key);
mc->common_member();
mc->member( new MmV4Addr( "GroupAddress", MUST(), MUST() ) );
//dict
MmHeader_onIGMP::add(mc); //Upp_IGMP::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McUpp_IGMP_IGMPv2LeaveGroup* McUpp_IGMP_IGMPv2LeaveGroup::create(CSTR key){
McUpp_IGMP_IGMPv2LeaveGroup* mc = new McUpp_IGMP_IGMPv2LeaveGroup(key);
mc->common_member();
mc->member( new MmV4Addr( "GroupAddress", MUST(), MUST() ) );
//dict
MmHeader_onIGMP::add(mc); //Upp_IGMP::header= (upper=)
return mc;}
//////////////////////////////////////////////////////////////////////////////
McIGMPv3_AddrRecord *McIGMPv3_AddrRecord::create(CSTR key) {
McIGMPv3_AddrRecord *mc = new McIGMPv3_AddrRecord(key);
mc->type_member(new MmUint("Type", 8, UN(0), UN(0)));
mc->auxdatalen_member(new MmUint("AuxDataLen", 8, UN(0), UN(0)));
mc->numofsrc_member(
new MmUint( "NumOfSources", 16,
GENEHC(mc,McIGMPv3_AddrRecord,NumOfSources),
EVALANY(), ICVCONST() ) );
mc->mcastaddr_member(new MmV4Addr("GroupAddress", MUST(), MUST()));
mc->member(
new MmMultiple(
new MmV4Addr("SourceAddress", MUST(), MUST()),
(METH_HC_MLC)&McIGMPv3_AddrRecord::HC_MLC(SourceAddress)
)
);
mc->member( new MmData( "AuxData"));
// dict
MmIGMPv3AddrRecord_onIGMP::add(mc);
return(mc);
}
//
// ICMPv6 MLDv2 Messages
//
////////////////////////////////////////////////////////////////
McUpp_ICMPv6_MLDv2Report *McUpp_ICMPv6_MLDv2Report::create(CSTR key) {
McUpp_ICMPv6_MLDv2Report *mc = new McUpp_ICMPv6_MLDv2Report(key);
mc->common_member();
mc->member( new MmUint( "Reserved", 16, UN(0), UN(0) ) );
mc->member(
new MmUint( "NumOfMcastAddrRecords", 16,
GENEHC(mc,McUpp_ICMPv6_MLDv2Report,NumOfMcastAddrRecords),
EVALANY(), ICVCONST() ) );
mc->member( new MmMLDv2AddrRecord_onICMPv6( "MLDv2_AddrRecord"));
// dict
MmHeader_onICMPv6::add(mc);
return(mc);
}
McUpp_ICMPv6_MLDQuery *McUpp_ICMPv6_MLDQuery::create(CSTR key) {
McUpp_ICMPv6_MLDQuery *mc = new McUpp_ICMPv6_MLDQuery(key);
mc->common_member();
mc->member( new MmUint( "MaxResponseDelay",16, UN(0), UN(0) ) );
mc->member( new MmUint( "Reserved", 16, UN(0), UN(0) ) );
mc->member( new MmV6Addr( "MulticastAddress", MUST(), MUST() ) );
#ifdef USE_MLDV2_QUERY
mc->member(new MmUint("Resv", 4, UN(0), UN(0)));
mc->member(new MmUint("SFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("QRV", 3, UN(0), UN(0)));
mc->member(new MmUint("QQIC", 8, UN(0), UN(0)));
mc->member(
new MmUint( "NumOfSources", 16,
GENEHC(mc,McUpp_ICMPv6_MLDQuery,NumOfSources),
EVALANY(), ICVCONST() ) );
mc->member(
new MmMultiple(
new MmV6Addr("SourceAddress", MUST(), MUST()),
(METH_HC_MLC)&McUpp_ICMPv6_MLDQuery::HC_MLC(SourceAddress)
)
);
#endif // USE_MLDV2_QUERY
// dict
MmHeader_onICMPv6::add(mc);
return mc;
}
McMLDv2_AddrRecord *McMLDv2_AddrRecord::create(CSTR key) {
McMLDv2_AddrRecord *mc = new McMLDv2_AddrRecord(key);
mc->type_member(new MmUint("Type", 8, UN(0), UN(0)));
mc->auxdatalen_member(new MmUint("AuxDataLen", 8, UN(0), UN(0)));
mc->numofsrc_member(
new MmUint( "NumOfSources", 16,
GENEHC(mc,McMLDv2_AddrRecord,NumOfSources),
EVALANY(), ICVCONST() ) );
mc->mcastaddr_member(new MmV6Addr("MulticastAddress", MUST(), MUST()));
mc->member(
new MmMultiple(
new MmV6Addr("SourceAddress", MUST(), MUST()),
(METH_HC_MLC)&McMLDv2_AddrRecord::HC_MLC(SourceAddress)
)
);
mc->member( new MmData( "AuxData"));
// dict
MmMLDv2AddrRecord_onICMPv6::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////
// RFC 3261 - SIP: Session Initiation Protocol //
////////////////////////////////////////////////////////////////
McUdp_SIP *McUdp_SIP::create(CSTR key) {
McUdp_SIP *mc = new McUdp_SIP(key);
// mc->member(new MmData("data"));
mc->member(new MmSIPMsg("message", MUST(), MUST()));
MmUpper_onUpper::add(mc);
return(mc);
}
#if !defined(NOT_USE_SNMP)
////////////////////////////////////////////////////////////////////////////////
// SNMP
////////////////////////////////////////////////////////////////////////////////
McUdp_SNMP *McUdp_SNMP::create(CSTR key) {
McUdp_SNMP *mc = new McUdp_SNMP(key);
mc->member(new MmPdu_SNMP_onSNMP("snmpmsg"));
MmUpper_onUpper::add(mc);
return(mc);
}
McUdp_SNMPTrap *McUdp_SNMPTrap::create(CSTR key) {
McUdp_SNMPTrap *mc = new McUdp_SNMPTrap(key);
mc->member(new MmPdu_SNMP_onSNMP("snmpmsg"));
MmUpper_onUpper::add(mc);
return(mc);
}
////////////////////////////////////////////////////////////////////////////////
// SNMP PDU
////////////////////////////////////////////////////////////////////////////////
void McPdu_SNMP::common_member() {
type_member(new MmUint("Type", 8, GENEHC(this, McPdu_SNMP, Type), EVALHC(this, McPdu_SNMP, Type)));
length_member(new MmUint("Length", 8, GENEHC(this, McPdu_SNMP, Length), EVALANY()));
}
////////////////////////////////
McPdu_SNMP_ANY *McPdu_SNMP_ANY::create(CSTR key) {
McPdu_SNMP_ANY *mc = new McPdu_SNMP_ANY(key);
mc->common_member();
mc->member(new MmData("data"));
MmPdu_SNMP_onSNMP::add_other(mc);
MmPdu_SNMP_onPDU::add_other(mc);
MmSNMP_Version_onSNMP_Message::add_other(mc);
MmSNMP_Community_onSNMP_Message::add_other(mc);
MmSNMP_RequestID_onSNMP_Message::add_other(mc);
MmSNMP_ErrorStatus_onSNMP_Message::add_other(mc);
MmSNMP_ErrorIndex_onSNMP_Message::add_other(mc);
MmSNMP_IPAddress_onTrap_Message::add_other(mc);
MmSNMP_GenericTrap_onTrap_Message::add_other(mc);
MmSNMP_SpecificTrap_onTrap_Message::add_other(mc);
MmSNMP_TimeStamp_onTrap_Message::add_other(mc);
MmSNMP_ObjectID_onTrap_Message::add_other(mc);
MmSNMP_VarBindList_onPDU::add_other(mc);
MmSNMP_VarBind_onPDU::add_other(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Message *McPdu_SNMP_Message::create(CSTR key) {
McPdu_SNMP_Message *mc = new McPdu_SNMP_Message(key);
mc->common_member();
mc->member(new MmSNMP_Version_onSNMP_Message("version"));
mc->member(new MmSNMP_Community_onSNMP_Message("community"));
mc->member(new MmPdu_SNMP_onSNMP("pdumsg"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Version *McPdu_SNMP_Version::create(CSTR key) {
McPdu_SNMP_Version *mc = new McPdu_SNMP_Version(key);
mc->common_member();
// mc->member(new MmUint( "Version", 8, UN(0), UN(0)));
mc->member(new MmSNMPVersion( "Version", 8, UN(0), UN(0)));
MmSNMP_Version_onSNMP_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Community *McPdu_SNMP_Community::create(CSTR key) {
McPdu_SNMP_Community *mc = new McPdu_SNMP_Community(key);
mc->common_member();
mc->member(new MmSNMPString("Community", MUST(), MUST()));
MmSNMP_Community_onSNMP_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_GetRequest *McPdu_SNMP_GetRequest::create(CSTR key) {
McPdu_SNMP_GetRequest *mc = new McPdu_SNMP_GetRequest(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_GetNextRequest *McPdu_SNMP_GetNextRequest::create(CSTR key) {
McPdu_SNMP_GetNextRequest *mc = new McPdu_SNMP_GetNextRequest(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_SetRequest *McPdu_SNMP_SetRequest::create(CSTR key) {
McPdu_SNMP_SetRequest *mc = new McPdu_SNMP_SetRequest(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_GetResponse *McPdu_SNMP_GetResponse::create(CSTR key) {
McPdu_SNMP_GetResponse *mc = new McPdu_SNMP_GetResponse(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Trap *McPdu_SNMP_Trap::create(CSTR key) {
McPdu_SNMP_Trap *mc = new McPdu_SNMP_Trap(key);
mc->common_member();
mc->member(new MmSNMP_ObjectID_onTrap_Message("pdu_enterpriseoid"));
mc->member(new MmSNMP_IPAddress_onTrap_Message("pdu_ipaddress"));
mc->member(new MmSNMP_GenericTrap_onTrap_Message("pdu_generictrap"));
mc->member(new MmSNMP_SpecificTrap_onTrap_Message("pdu_specifictrap"));
mc->member(new MmSNMP_TimeStamp_onTrap_Message("pdu_timestamp"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_GetBulk *McPdu_SNMP_GetBulk::create(CSTR key) {
McPdu_SNMP_GetBulk *mc = new McPdu_SNMP_GetBulk(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Inform *McPdu_SNMP_Inform::create(CSTR key) {
McPdu_SNMP_Inform *mc = new McPdu_SNMP_Inform(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Trap2 *McPdu_SNMP_Trap2::create(CSTR key) {
McPdu_SNMP_Trap2 *mc = new McPdu_SNMP_Trap2(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Report *McPdu_SNMP_Report::create(CSTR key) {
McPdu_SNMP_Report *mc = new McPdu_SNMP_Report(key);
mc->common_member();
mc->member(new MmSNMP_RequestID_onSNMP_Message("pdu_requestid"));
mc->member(new MmSNMP_ErrorStatus_onSNMP_Message("pdu_errorstatus"));
mc->member(new MmSNMP_ErrorIndex_onSNMP_Message("pdu_errorindex"));
mc->member(new MmSNMP_VarBindList_onPDU("pdu_varbindlist"));
MmPdu_SNMP_onSNMP::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_RequestID *McPdu_SNMP_RequestID::create(CSTR key) {
McPdu_SNMP_RequestID *mc = new McPdu_SNMP_RequestID(key);
mc->common_member();
mc->member(new MmUint( "RequestID", 32, UN(0), UN(0)));
MmSNMP_RequestID_onSNMP_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_ErrorStatus *McPdu_SNMP_ErrorStatus::create(CSTR key) {
McPdu_SNMP_ErrorStatus *mc = new McPdu_SNMP_ErrorStatus(key);
mc->common_member();
mc->member(new MmErrorStatus( "ErrorStatus", 8, UN(0), UN(0)));
MmSNMP_ErrorStatus_onSNMP_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_ErrorIndex *McPdu_SNMP_ErrorIndex::create(CSTR key) {
McPdu_SNMP_ErrorIndex *mc = new McPdu_SNMP_ErrorIndex(key);
mc->common_member();
mc->member(new MmUint( "ErrorIndex", 8, UN(0), UN(0)));
MmSNMP_ErrorIndex_onSNMP_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_GenericTrap *McPdu_SNMP_GenericTrap::create(CSTR key) {
McPdu_SNMP_GenericTrap *mc = new McPdu_SNMP_GenericTrap(key);
mc->common_member();
mc->member(new MmUint( "GenericTrap", 8, UN(0), UN(0)));
MmSNMP_GenericTrap_onTrap_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_SpecificTrap *McPdu_SNMP_SpecificTrap::create(CSTR key) {
McPdu_SNMP_SpecificTrap *mc = new McPdu_SNMP_SpecificTrap(key);
mc->common_member();
mc->member(new MmUint( "SpecificTrap", 8, UN(0), UN(0)));
MmSNMP_SpecificTrap_onTrap_Message::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_VarBindList *McPdu_SNMP_VarBindList::create(CSTR key) {
McPdu_SNMP_VarBindList *mc = new McPdu_SNMP_VarBindList(key);
mc->common_member();
mc->member(new MmSNMP_VarBind_onPDU("pdu"));
MmSNMP_VarBindList_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_VarBind *McPdu_SNMP_VarBind::create(CSTR key) {
McPdu_SNMP_VarBind *mc = new McPdu_SNMP_VarBind(key);
mc->common_member();
mc->member(new MmPdu_SNMP_onPDU("pdu"));
MmSNMP_VarBind_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Boolean *McPdu_SNMP_Boolean::create(CSTR key) {
McPdu_SNMP_Boolean *mc = new McPdu_SNMP_Boolean(key);
mc->common_member();
mc->member(new MmData("data")); // XXXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Integer *McPdu_SNMP_Integer::create(CSTR key) {
McPdu_SNMP_Integer *mc = new McPdu_SNMP_Integer(key);
mc->common_member();
mc->member(new MmData("data")); // XXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_BitString *McPdu_SNMP_BitString::create(CSTR key) {
McPdu_SNMP_BitString *mc = new McPdu_SNMP_BitString(key);
mc->common_member();
mc->member(new MmData("data")); // XXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_OctString *McPdu_SNMP_OctString::create(CSTR key) {
McPdu_SNMP_OctString *mc = new McPdu_SNMP_OctString(key);
mc->common_member();
mc->member(new MmSNMPString("OctString", MUST(), MUST()));
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Null *McPdu_SNMP_Null::create(CSTR key) {
McPdu_SNMP_Null *mc = new McPdu_SNMP_Null(key);
mc->common_member();
mc->member(new MmData("data"));
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_ObjectID *McPdu_SNMP_ObjectID::create(CSTR key) {
McPdu_SNMP_ObjectID *mc = new McPdu_SNMP_ObjectID(key);
mc->common_member();
mc->member(new MmObjectID("ObjectID", MUST(), MUST())); // XXXX
MmSNMP_ObjectID_onTrap_Message::add(mc);
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Sequence *McPdu_SNMP_Sequence::create(CSTR key) {
McPdu_SNMP_Sequence *mc = new McPdu_SNMP_Sequence(key);
mc->common_member();
mc->member(new MmData("data")); // XXXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Set *McPdu_SNMP_Set::create(CSTR key) {
McPdu_SNMP_Set *mc = new McPdu_SNMP_Set(key);
mc->common_member();
mc->member(new MmData("data")); // XXXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Opaque *McPdu_SNMP_Opaque::create(CSTR key) {
McPdu_SNMP_Opaque *mc = new McPdu_SNMP_Opaque(key);
mc->common_member();
mc->member(new MmPdu_SNMP_onPDU("pdu"));
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_IPAddress *McPdu_SNMP_IPAddress::create(CSTR key) {
McPdu_SNMP_IPAddress *mc = new McPdu_SNMP_IPAddress(key);
mc->common_member();
mc->member(new MmV4Addr("IPAddress"));
MmSNMP_IPAddress_onTrap_Message::add(mc);
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Counter *McPdu_SNMP_Counter::create(CSTR key) {
McPdu_SNMP_Counter *mc = new McPdu_SNMP_Counter(key);
mc->common_member();
mc->member(new MmData("Counter")); // XXXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_Gauge *McPdu_SNMP_Gauge::create(CSTR key) {
McPdu_SNMP_Gauge *mc = new McPdu_SNMP_Gauge(key);
mc->common_member();
mc->member(new MmData("Gauge")); // XXXX
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
////////////////////////////////
McPdu_SNMP_TimeTicks *McPdu_SNMP_TimeTicks::create(CSTR key) {
McPdu_SNMP_TimeTicks *mc = new McPdu_SNMP_TimeTicks(key);
mc->common_member();
mc->member(new MmData("TimeTicks")); // XXXX
MmSNMP_TimeStamp_onTrap_Message::add(mc);
MmPdu_SNMP_onPDU::add(mc);
return(mc);
}
#endif //NOT_USE_SNMP
////////////////////////////////////////////////////////////////
// RFC 2408 - ISAKMP //
////////////////////////////////////////////////////////////////
McUdp_ISAKMP *
McUdp_ISAKMP::create(CSTR key, CSTR tophdrkey)
{
addCompound(tophdr_ = McHdr_ISAKMP::create(tophdrkey));
McUdp_ISAKMP *mc = new McUdp_ISAKMP(key);
mc->member(new MmTopHdr("header", tophdr_));
mc->member(new MmEncrypt_onISAKMP("encrypt", tophdr_));
mc->member(new MmPayload_onISAKMP("payload"));
MmUpper_onUpper::add(mc);
return(mc);
}
////////////////////////////////
// ISAKMP Header //
////////////////////////////////
McHdr_ISAKMP *
McHdr_ISAKMP::create(CSTR key)
{
McHdr_ISAKMP *mc = new McHdr_ISAKMP(key);
mc->member(new MmMH_Cookie64("InitiatorCookie"));
mc->member(new MmMH_Cookie64("ResponderCookie"));
mc->nextType_member(
new MmUint(
"NextPayload",
8,
GENEHC(mc, McHdr_ISAKMP, NextPayload),
EVALHC(mc, McHdr_ISAKMP, NextPayload)
)
);
mc->member(new MmUint("MjVer", 4, UN(1), UN(1)));
mc->member(new MmUint("MnVer", 4, UN(0), UN(0)));
mc->member(new MmUint("ExchangeType", 8, UN(0), UN(0)));
mc->member(new MmUint("Reserved", 5, UN(0), UN(0)));
mc->member(new MmUint("AFlag", 1, UN(0), UN(0)));
mc->member(new MmUint("CFlag", 1, UN(0), UN(0)));
mc->EFlag_member(
new MmUint(
"EFlag",
1,
GENEHC(mc, McHdr_ISAKMP, EFlag),
EVALHC(mc, McHdr_ISAKMP, EFlag)
)
);
mc->MIDmember(
new MmISAKMP_MessageID("MessageID", 32, UN(0), UN(0)));
mc->Layerlength_member(
new MmUint(
"Length",
32,
GENEHC(mc, McHdr_ISAKMP, Length),
EVALANY()
)
);
return(mc);
}
////////////////////////////////
// ISAKMP Generic Payload //
////////////////////////////////
void
McPld_ISAKMP::common_member()
{
nextType_member(
new MmUint(
"NextPayload",
8,
GENEHC(this, McPld_ISAKMP, NextPayload),
EVALHC(this, McPld_ISAKMP, NextPayload)
)
);
member(new MmUint("Reserved1", 8, UN(0), UN(0)));
Layerlength_member(
new MmUint(
"PayloadLength",
16,
GENEHC(this, McPld_ISAKMP, PayloadLength),
EVALANY()
)
);
return;
}
McPld_ISAKMP_ANY *
McPld_ISAKMP_ANY::create(CSTR key)
{
McPld_ISAKMP_ANY *mc = new McPld_ISAKMP_ANY(key);
mc->common_member();
mc->member(new MmVarOctets("data", 0, EVALZERO()));
MmPayload_onISAKMP::add_other(mc);
MmISAKMP_PonSA::add_other(mc);
MmISAKMP_TonP::add_other(mc);
return(mc);
}
////////////////////////////////////////
// Security Association Payload //
////////////////////////////////////////
void
McPld_ISAKMP_SA::common_member()
{
McPld_ISAKMP::common_member();
DOImember(
new MmUint(
"DOI",
32,
GENEHC(this, McPld_ISAKMP_SA, DOI),
EVALHC(this, McPld_ISAKMP_SA, DOI)
)
);
return;
}
McPld_ISAKMP_SA_ANY *
McPld_ISAKMP_SA_ANY::create(CSTR key)
{
McPld_ISAKMP_SA_ANY *mc = new McPld_ISAKMP_SA_ANY(key);
mc->common_member();
mc->member(new MmVarOctets("Situation", 0, EVALZERO()));
MmDOIonSA::add_other(mc);
return(mc);
}
void
McPld_ISAKMP_SA_IPsec::common_member()
{
McPld_ISAKMP_SA::common_member();
SITmember(
new MmUint(
"Situation",
32,
GENEHC(this, McPld_ISAKMP_SA_IPsec, Situation),
EVALHC(this, McPld_ISAKMP_SA_IPsec, Situation)
)
);
}
McPld_ISAKMP_SA_IPsec_ANY *
McPld_ISAKMP_SA_IPsec_ANY::create(CSTR key)
{
McPld_ISAKMP_SA_IPsec_ANY *mc = new McPld_ISAKMP_SA_IPsec_ANY(key);
mc->common_member();
mc->member(new MmVarOctets("data", 0, EVALZERO()));
MmSIT_onSA_IPsec::add_other(mc);
return(mc);
}
McPld_ISAKMP_SA_IPsec_IDonly *
McPld_ISAKMP_SA_IPsec_IDonly::create(CSTR key)
{
McPld_ISAKMP_SA_IPsec_IDonly *mc
= new McPld_ISAKMP_SA_IPsec_IDonly(key);
mc->common_member();
mc->member(new MmISAKMP_PonSA("proposal"));
MmSIT_onSA_IPsec::add(mc);
return(mc);
}
////////////////////////////////
// Proposal Payload //
////////////////////////////////
void
McPld_ISAKMP_P::common_member()
{
McPld_ISAKMP::common_member();
member(new MmUint("ProposalNumber", 8, UN(0), UN(0)));
ProtocolIDmember(
new MmUint(
"ProtocolID",
8,
GENEHC(this, McPld_ISAKMP_P, ProtocolID),
EVALHC(this, McPld_ISAKMP_P, ProtocolID)
)
);
return;
}
void
McPld_ISAKMP_P::spisize_member()
{
SPIsize_member(
new MmUint(
"SPIsize",
8,
GENEHC(this, McPld_ISAKMP_P, SPIsize),
EVALANY()
)
);
return;
}
void
McPld_ISAKMP_P::transnum_member()
{
member(
new MmUint(
"NumOfTransforms",
8,
GENEHC(this, McPld_ISAKMP_P, NumOfTransforms),
EVALHC(this, McPld_ISAKMP_P, NumOfTransforms)
)
);
return;
}
McPld_ISAKMP_P *
McPld_ISAKMP_P::create(CSTR key)
{
McPld_ISAKMP_P *mc = new McPld_ISAKMP_P(key);
mc->common_member();
mc->spisize_member();
mc->transnum_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmISAKMP_TonP(mc, "transform"));
MmProtocolIDonP::add_other(mc);
return(mc);
}
McPld_ISAKMP_P_ISAKMP *
McPld_ISAKMP_P_ISAKMP::create(CSTR key)
{
McPld_ISAKMP_P_ISAKMP *mc = new McPld_ISAKMP_P_ISAKMP(key);
mc->common_member();
mc->spisize_member();
mc->transnum_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmISAKMP_TonP(mc, "transform"));
MmProtocolIDonP::add(mc);
return(mc);
}
McPld_ISAKMP_P_IPsec_AH *
McPld_ISAKMP_P_IPsec_AH::create(CSTR key)
{
McPld_ISAKMP_P_IPsec_AH *mc = new McPld_ISAKMP_P_IPsec_AH(key);
mc->common_member();
mc->member(new MmUint("SPIsize", 8, UN(4), UN(4)));
mc->transnum_member();
mc->member(new MmUint("SPI", 32, UN(0), UN(0)));
mc->member(new MmISAKMP_TonP(mc, "transform"));
MmProtocolIDonP::add(mc);
return(mc);
}
McPld_ISAKMP_P_IPsec_ESP *
McPld_ISAKMP_P_IPsec_ESP::create(CSTR key)
{
McPld_ISAKMP_P_IPsec_ESP *mc = new McPld_ISAKMP_P_IPsec_ESP(key);
mc->common_member();
mc->member(new MmUint("SPIsize", 8, UN(4), UN(4)));
mc->transnum_member();
mc->member(new MmUint("SPI", 32, UN(0), UN(0)));
mc->member(new MmISAKMP_TonP(mc, "transform"));
MmProtocolIDonP::add(mc);
return(mc);
}
McPld_ISAKMP_P_IPCOMP *
McPld_ISAKMP_P_IPCOMP::create(CSTR key)
{
McPld_ISAKMP_P_IPCOMP *mc = new McPld_ISAKMP_P_IPCOMP(key);
mc->common_member();
mc->spisize_member();
mc->transnum_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmISAKMP_TonP(mc, "transform"));
MmProtocolIDonP::add(mc);
return(mc);
}
////////////////////////////////
// Transform Payload //
////////////////////////////////
McPld_ISAKMP_T *
McPld_ISAKMP_T::create(CSTR key)
{
McPld_ISAKMP_T *mc = new McPld_ISAKMP_T(key);
mc->common_member();
mc->member(new MmUint("TransformNumber", 8, UN(0), UN(0)));
mc->member(new MmUint("TransformID", 8, UN(0), UN(0)));
mc->member(new MmUint("Reserved2", 16, UN(0), UN(0)));
mc->member(new MmAttr_onT("attribute"));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Key Exchange Payload //
////////////////////////////////
McPld_ISAKMP_KE *
McPld_ISAKMP_KE::create(CSTR key)
{
McPld_ISAKMP_KE *mc = new McPld_ISAKMP_KE(key);
mc->common_member();
mc->member(new MmVarOctets("KeyExchangeData", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Identification Payload //
////////////////////////////////
void
McPld_ISAKMP_ID::common_member()
{
McPld_ISAKMP::common_member();
IDtype_member(
new MmUint(
"IDtype",
8,
GENEHC(this, McPld_ISAKMP_ID, IDtype),
EVALHC(this, McPld_ISAKMP_ID, IDtype)
)
);
#if 0
member(new MmUint("DOIspecificIDdata", 24, UN(0), UN(0)));
#else
member(new MmUint("ProtoclID", 8, UN(0), UN(0)));
member(new MmUint("Port", 16, UN(0), UN(0)));
#endif
return;
}
McPld_ISAKMP_ID *
McPld_ISAKMP_ID::create(CSTR key)
{
McPld_ISAKMP_ID *mc = new McPld_ISAKMP_ID(key);
mc->common_member();
mc->member(new MmVarOctets("ID", 0, EVALZERO()));
MmIDtype_onID::add_other(mc);
return(mc);
}
McPld_ISAKMP_ID_IPV4_ADDR *
McPld_ISAKMP_ID_IPV4_ADDR::create(CSTR key)
{
McPld_ISAKMP_ID_IPV4_ADDR *mc = new McPld_ISAKMP_ID_IPV4_ADDR(key);
mc->common_member();
mc->member(new MmV4Addr("ID", MUST(), MUST()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_FQDN *
McPld_ISAKMP_ID_FQDN::create(CSTR key)
{
McPld_ISAKMP_ID_FQDN *mc = new McPld_ISAKMP_ID_FQDN(key);
mc->common_member();
mc->member(new MmAsciiString("ID", 0, EVALZERO()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_USER_FQDN *
McPld_ISAKMP_ID_USER_FQDN::create(CSTR key)
{
McPld_ISAKMP_ID_USER_FQDN *mc = new McPld_ISAKMP_ID_USER_FQDN(key);
mc->common_member();
mc->member(new MmAsciiString("ID", 0, EVALZERO()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_IPV4_ADDR_SUBNET *
McPld_ISAKMP_ID_IPV4_ADDR_SUBNET::create(CSTR key)
{
McPld_ISAKMP_ID_IPV4_ADDR_SUBNET *mc =
new McPld_ISAKMP_ID_IPV4_ADDR_SUBNET(key);
mc->common_member();
mc->member(new MmV4Addr("ID1", MUST(), MUST()));
mc->member(new MmV4Addr("ID2", MUST(), MUST()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_IPV6_ADDR *
McPld_ISAKMP_ID_IPV6_ADDR::create(CSTR key)
{
McPld_ISAKMP_ID_IPV6_ADDR *mc = new McPld_ISAKMP_ID_IPV6_ADDR(key);
mc->common_member();
mc->member(new MmV6Addr("ID", MUST(), MUST()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_IPV6_ADDR_SUBNET *
McPld_ISAKMP_ID_IPV6_ADDR_SUBNET::create(CSTR key)
{
McPld_ISAKMP_ID_IPV6_ADDR_SUBNET *mc =
new McPld_ISAKMP_ID_IPV6_ADDR_SUBNET(key);
mc->common_member();
mc->member(new MmV6Addr("ID1", MUST(), MUST()));
mc->member(new MmV6Addr("ID2", MUST(), MUST()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_IPV4_ADDR_RANGE *
McPld_ISAKMP_ID_IPV4_ADDR_RANGE::create(CSTR key)
{
McPld_ISAKMP_ID_IPV4_ADDR_RANGE *mc =
new McPld_ISAKMP_ID_IPV4_ADDR_RANGE(key);
mc->common_member();
mc->member(new MmV4Addr("ID1", MUST(), MUST()));
mc->member(new MmV4Addr("ID2", MUST(), MUST()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_IPV6_ADDR_RANGE *
McPld_ISAKMP_ID_IPV6_ADDR_RANGE::create(CSTR key)
{
McPld_ISAKMP_ID_IPV6_ADDR_RANGE *mc =
new McPld_ISAKMP_ID_IPV6_ADDR_RANGE(key);
mc->common_member();
mc->member(new MmV6Addr("ID1", MUST(), MUST()));
mc->member(new MmV6Addr("ID2", MUST(), MUST()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_DER_ASN1_DN *
McPld_ISAKMP_ID_DER_ASN1_DN::create(CSTR key)
{
McPld_ISAKMP_ID_DER_ASN1_DN *mc =
new McPld_ISAKMP_ID_DER_ASN1_DN(key);
mc->common_member();
mc->member(new MmVarOctets("ID", 0, EVALZERO()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_DER_ASN1_GN *
McPld_ISAKMP_ID_DER_ASN1_GN::create(CSTR key)
{
McPld_ISAKMP_ID_DER_ASN1_GN *mc = new McPld_ISAKMP_ID_DER_ASN1_GN(key);
mc->common_member();
mc->member(new MmVarOctets("ID", 0, EVALZERO()));
MmIDtype_onID::add(mc);
return(mc);
}
McPld_ISAKMP_ID_KEY_ID *
McPld_ISAKMP_ID_KEY_ID::create(CSTR key)
{
McPld_ISAKMP_ID_KEY_ID *mc = new McPld_ISAKMP_ID_KEY_ID(key);
mc->common_member();
mc->member(new MmVarOctets("ID", 0, EVALZERO()));
MmIDtype_onID::add(mc);
return(mc);
}
////////////////////////////////
// Certificate Payload //
////////////////////////////////
McPld_ISAKMP_CERT *
McPld_ISAKMP_CERT::create(CSTR key)
{
McPld_ISAKMP_CERT *mc = new McPld_ISAKMP_CERT(key);
mc->common_member();
mc->member(new MmUint("CertEncoding", 8, UN(0), UN(0)));
mc->member(new MmVarOctets("CertData", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////////////
// Certificate Request Payload //
////////////////////////////////////////
McPld_ISAKMP_CR *
McPld_ISAKMP_CR::create(CSTR key)
{
McPld_ISAKMP_CR *mc = new McPld_ISAKMP_CR(key);
mc->common_member();
mc->member(new MmUint("CertType", 8, UN(0), UN(0)));
mc->member(new MmVarOctets("CertAuthority", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Hash Payload //
////////////////////////////////
McPld_ISAKMP_HASH *
McPld_ISAKMP_HASH::create(CSTR key)
{
McPld_ISAKMP_HASH *mc = new McPld_ISAKMP_HASH(key);
mc->common_member();
mc->member(new MmP2_HASH_2("HashData", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Signature Payload //
////////////////////////////////
McPld_ISAKMP_SIG *
McPld_ISAKMP_SIG::create(CSTR key)
{
McPld_ISAKMP_SIG *mc = new McPld_ISAKMP_SIG(key);
mc->common_member();
mc->member(new MmVarOctets("SignatureData", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Nonce Payload //
////////////////////////////////
McPld_ISAKMP_NONCE *
McPld_ISAKMP_NONCE::create(CSTR key)
{
McPld_ISAKMP_NONCE *mc = new McPld_ISAKMP_NONCE(key);
mc->common_member();
mc->member(new MmVarOctets("NonceData", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Notification Payload //
////////////////////////////////
void
McPld_ISAKMP_N::common_member()
{
McPld_ISAKMP::common_member();
DOImember(
new MmUint(
"DOI",
32,
GENEHC(this, McPld_ISAKMP_N, DOI),
EVALHC(this, McPld_ISAKMP_N, DOI)
)
);
member(new MmUint("ProtocolID", 8, UN(0), UN(0)));
SPIsize_member(
new MmUint(
"SPIsize",
8,
GENEHC(this, McPld_ISAKMP_N, SPIsize),
EVALANY()
)
);
NotifyMessageType_member(
new MmUint(
"NotifyMessageType",
16,
GENEHC(this, McPld_ISAKMP_N, NotifyMessageType),
EVALHC(this, McPld_ISAKMP_N, NotifyMessageType)
)
);
return;
}
McPld_ISAKMP_N_ANY *
McPld_ISAKMP_N_ANY::create(CSTR key)
{
McPld_ISAKMP_N_ANY *mc = new McPld_ISAKMP_N_ANY(key);
mc->common_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmVarOctets("NotificationData", 0, EVALZERO()));
MmDOIonN::add_other(mc);
return(mc);
}
McPld_ISAKMP_N_ISAKMP *
McPld_ISAKMP_N_ISAKMP::create(CSTR key)
{
McPld_ISAKMP_N_ISAKMP *mc = new McPld_ISAKMP_N_ISAKMP(key);
mc->common_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmVarOctets("NotificationData", 0, EVALZERO()));
MmDOIonN::add(mc);
return(mc);
}
McPld_ISAKMP_N_IPsec_ANY *
McPld_ISAKMP_N_IPsec_ANY::create(CSTR key)
{
McPld_ISAKMP_N_IPsec_ANY *mc = new McPld_ISAKMP_N_IPsec_ANY(key);
mc->common_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmVarOctets("NotificationData", 0, EVALZERO()));
MmType_onN_IPsec::add_other(mc);
return(mc);
}
McPld_ISAKMP_N_IPsec_ResponderLT *
McPld_ISAKMP_N_IPsec_ResponderLT::create(CSTR key)
{
McPld_ISAKMP_N_IPsec_ResponderLT *mc =
new McPld_ISAKMP_N_IPsec_ResponderLT(key);
mc->common_member();
mc->SPImember(new MmISAKMP_SPI("SPI", 0, EVALZERO()));
mc->member(new MmAttr_onT("attribute"));
MmType_onN_IPsec::add(mc);
return(mc);
}
McPld_ISAKMP_N_IPsec_ReplayStat *
McPld_ISAKMP_N_IPsec_ReplayStat::create(CSTR key)
{
McPld_ISAKMP_N_IPsec_ReplayStat *mc =
new McPld_ISAKMP_N_IPsec_ReplayStat(key);
mc->common_member();
mc->SPImember(new MmISAKMP_SPI_ReplayStat("SPI", 0, EVALZERO()));
mc->member(new MmUint("NotificationData", 32, UN(0), UN(0)));
MmType_onN_IPsec::add(mc);
return(mc);
}
////////////////////////////////
// Delete Payload //
////////////////////////////////
McPld_ISAKMP_D *
McPld_ISAKMP_D::create(CSTR key)
{
McPld_ISAKMP_D *mc = new McPld_ISAKMP_D(key);
mc->common_member();
mc->member(new MmUint("DOI", 32, UN(0), UN(0)));
mc->member(new MmUint("ProtocolID", 8, UN(0), UN(0)));
mc->SPIsize_member(
new MmSPIsize(
mc,
"SPIsize",
8,
GENEHC(mc, McPld_ISAKMP_D, SPIsize),
EVALANY()
)
);
mc->NumberOfSPI_member(
new MmNumberOfSPI(
mc,
"NumberOfSPI",
16,
GENEHC(mc, McPld_ISAKMP_D, NumberOfSPI),
EVALANY()
)
);
mc->member(
new MmMultiple(
new MmSPI_onD(mc, "SPI", 0, EVALZERO()),
(METH_HC_MLC)&McPld_ISAKMP_D::HC_MLC(SPI)
)
);
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Vendor ID Payload //
////////////////////////////////
McPld_ISAKMP_VID *
McPld_ISAKMP_VID::create(CSTR key)
{
McPld_ISAKMP_VID *mc = new McPld_ISAKMP_VID(key);
mc->common_member();
mc->member(new MmVarOctets("VID", 0, EVALZERO()));
MmPayload_onISAKMP::add(mc);
MmISAKMP_PonSA::add(mc);
MmISAKMP_TonP::add(mc);
return(mc);
}
////////////////////////////////
// Data Attributes //
////////////////////////////////
void
McAttr_ISAKMP::common_member()
{
Attr_member(
new MmUint(
"AF",
1,
GENEHC(this, McAttr_ISAKMP, AF),
EVALHC(this, McAttr_ISAKMP, AF)
)
);
member(new MmUint("Type", 15, UN(0), UN(0)));
}
McAttr_ISAKMP *
McAttr_ISAKMP::create(CSTR key)
{
McAttr_ISAKMP *mc = new McAttr_ISAKMP(key);
mc->common_member();
mc->member(new MmVarOctets("data", 0, EVALZERO()));
MmAttr_onT::add_other(mc);
return(mc);
}
McAttr_ISAKMP_TLV *
McAttr_ISAKMP_TLV::create(CSTR key)
{
McAttr_ISAKMP_TLV *mc = new McAttr_ISAKMP_TLV(key);
mc->common_member();
mc->Length_member(
new MmUint(
"Length",
16,
GENEHC(mc, McAttr_ISAKMP_TLV, Length),
EVALANY()
)
);
mc->member(new MmVarOctets("Value", 0, EVALZERO()));
MmAttr_onT::add(mc);
return(mc);
}
McAttr_ISAKMP_TV *
McAttr_ISAKMP_TV::create(CSTR key)
{
McAttr_ISAKMP_TV *mc = new McAttr_ISAKMP_TV(key);
mc->common_member();
mc->member(new MmUint("Value", 16, UN(0), UN(0)));
MmAttr_onT::add(mc);
return(mc);
}
syntax highlighted by Code2HTML, v. 0.9.1