/*
* Copyright (C) 2003, 2004, 2005 Yokogawa Electric Corporation,
* INTAP(Interoperability Technology Association
* for Information Processing, 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/McDHCPv6.h,v 1.11 2005/05/09 09:35:23 akisada Exp $
*/
#if !defined(__McDHCPv6_h__)
#define __McDHCPv6_h__ 1
#include "PvOctets.h"
#include "McSub.h"
#include "McUDP.h"
const int32_t TP_DHCPv6_Solicit = 1;
const int32_t TP_DHCPv6_Advertise = 2;
const int32_t TP_DHCPv6_Request = 3;
const int32_t TP_DHCPv6_Confirm = 4;
const int32_t TP_DHCPv6_Renew = 5;
const int32_t TP_DHCPv6_Rebind = 6;
const int32_t TP_DHCPv6_Reply = 7;
const int32_t TP_DHCPv6_Release = 8;
const int32_t TP_DHCPv6_Decline = 9;
const int32_t TP_DHCPv6_Reconfigure = 10;
const int32_t TP_DHCPv6_InformationRequest = 11;
const int32_t TP_DHCPv6_RelayForward = 12;
const int32_t TP_DHCPv6_RelayReply = 13;
const int32_t TP_Opt_DHCPv6_CID = 1;
const int32_t TP_Opt_DHCPv6_SID = 2;
const int32_t TP_Opt_DHCPv6_IA_NA = 3;
const int32_t TP_Opt_DHCPv6_IA_TA = 4;
const int32_t TP_Opt_DHCPv6_IA_Address = 5;
const int32_t TP_Opt_DHCPv6_OptionRequest = 6;
const int32_t TP_Opt_DHCPv6_Preference = 7;
const int32_t TP_Opt_DHCPv6_ElapsedTime = 8;
const int32_t TP_Opt_DHCPv6_RelayMessage = 9;
const int32_t TP_Opt_DHCPv6_Authentication = 11;
const int32_t TP_Opt_DHCPv6_ServerUnicast = 12;
const int32_t TP_Opt_DHCPv6_StatusCode = 13;
const int32_t TP_Opt_DHCPv6_RapidCommit = 14;
const int32_t TP_Opt_DHCPv6_UserClass = 15;
const int32_t TP_Opt_DHCPv6_VendorClass = 16;
const int32_t TP_Opt_DHCPv6_VendorSpecificInfo = 17;
const int32_t TP_Opt_DHCPv6_IID = 18;
const int32_t TP_Opt_DHCPv6_ReconfigureMessage = 19;
const int32_t TP_Opt_DHCPv6_ReconfigureAccept = 20;
const int32_t TP_Opt_DHCPv6_IA_PD = 25;
const int32_t TP_Opt_DHCPv6_IA_Prefix = 26;
const int32_t TP_Opt_DHCPv6_DNS_Servers = 23;
const int32_t TP_Opt_DHCPv6_DNS_SearchList = 24;
#ifndef TBD_OPT_NTP_SERVERS
#define TBD_OPT_NTP_SERVERS 27
#endif // TBD_OPT_NTP_SERVERS
const int32_t TP_Opt_DHCPv6_NTP_Servers = TBD_OPT_NTP_SERVERS;
#undef TBD_OPT_NTP_SERVERS
#ifndef TBD_OPT_TIME_ZONE
#define TBD_OPT_TIME_ZONE 28
#endif // TBD_OPT_TIME_ZONE
const int32_t TP_Opt_DHCPv6_NTP_Timezone = TBD_OPT_TIME_ZONE;
#undef TBD_OPT_TIME_ZONE
const int32_t TP_DHCPv6_DUID_LLT = 1;
const int32_t TP_DHCPv6_DUID_EN = 2;
const int32_t TP_DHCPv6_DUID_LL = 3;
const int32_t TP_DUID_LL_Ether = 1;
const int32_t TP_DHCPv6_Auth_Delayed = 2;
const int32_t TP_DHCPv6_Auth_ReconfigureKey = 3;
////////////////////////////////////////////////////////////////
class PvTimezone: public PvOctets {
public:
PvTimezone();
PvTimezone(uint32_t, OCTSTR = 0, bool = false);
virtual ~PvTimezone();
virtual PvObject *shallowCopy() const;
virtual void print() const;
virtual void log(uint32_t=0) const;
};
////////////////////////////////////////////////////////////////
class MmTimezone: public MmVarOctets {
public:
MmTimezone(CSTR, const PObject *, const PObject *);
virtual ~MmTimezone();
virtual PvObject *reversePv(RControl &, const ItPosition &, const ItPosition &, const OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class PaDHCPAuth;
class RmDHCPAuth: public RmObject {
const PaDHCPAuth *dhcpauth_;
PvObject *calc_pvalue_;
public:
RmDHCPAuth(RObject *, const MObject *, const ItPosition &, const ItPosition &, PvObject *, const PaDHCPAuth *);
virtual ~RmDHCPAuth();
void set_calc_pvalue(PvObject *);
PvObject *calc_pvalue() const{
return(calc_pvalue_);
}
virtual void post_reverse(Con_IPinfo &, RControl &, RObject *);
};
////////////////////////////////////////////////////////////////
class WmDHCPAuth: public WmObject {
const PaDHCPAuth *dhcpauth_;
public:
WmDHCPAuth(WObject *, const MObject *, const PObject *, const PaDHCPAuth *);
virtual ~WmDHCPAuth();
virtual void post_generate(Con_IPinfo &, WControl &, OCTBUF &, WObject *);
virtual bool doEvaluate(WControl &, RObject &);
};
////////////////////////////////////////////////////////////////
class PfDHCPAuth;
class PaDHCPAuth: public PcObject {
private:
PfDHCPAuth *dhcpauth_;
public:
PaDHCPAuth(const MObject*, CSTR, int);
virtual ~PaDHCPAuth();
virtual PObject *dhcpauth_member(PObject *);
virtual OCTBUF *DHCPAuth_Calculate(const OCTBUF &) const;
virtual WObject *selfCompose(WControl &, WObject *) const;
};
////////////////////////////////////////////////////////////////
class PfDHCPAuth: public PvFunction {
private:
const MfDHCPAuth *meta_;
OCTSTR context_;
public:
PfDHCPAuth(const MfDHCPAuth *, CSTR, int);
virtual ~PfDHCPAuth();
const MfDHCPAuth *metaClass() const;
virtual const MObject *meta() const;
void init();
void update(const OCTBUF &);
PvOctets *result();
};
inline const MfDHCPAuth *PfDHCPAuth::metaClass() const {
return(meta_);
}
////////////////////////////////////////////////////////////////
class PvDHCPAuth: public PvOctets {
public:
PvDHCPAuth(OCTSTR = 0, bool = false);
virtual ~PvDHCPAuth();
virtual void log(uint32_t=0) const;
virtual void print() const;
static const PvDHCPAuth *zeroauth();
virtual PvObject *shallowCopy() const;
};
////////////////////////////////////////////////////////////////
class DHCPAuthList;
class KeepDHCPAuth {
private:
DHCPAuthList *dhcpauth_;
uint32_t current_;
public:
KeepDHCPAuth();
virtual ~KeepDHCPAuth();
const PaDHCPAuth *GetDHCPAuth(void);
void SetDHCPAuth(const PaDHCPAuth *);
};
////////////////////////////////////////////////////////////////
class MmDHCPAuth: public MmOctets {
private:
KeepDHCPAuth *keepdhcpauth_;
public:
MmDHCPAuth(CSTR);
virtual ~MmDHCPAuth();
virtual PvObject *reversePv(RControl &, const ItPosition &, const ItPosition &, const OCTBUF &) const;
virtual RObject *reverseRm(RControl &, RObject *, const ItPosition &, const ItPosition &, PvObject *) const;
virtual WObject *composeWm(WControl &, WObject *, const PObject *) const;
virtual RObject *reverse(RControl &, RObject *, ItPosition &, OCTBUF &) const;
virtual bool generate(WControl &, WObject *, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmDHCPRealm: public MmVarOctets {
public:
MmDHCPRealm(CSTR, const PObject *, const PObject *);
virtual ~MmDHCPRealm();
virtual ItPosition length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_ONE: public McHeader {
private:
static McUdp_DHCPv6_ONE *instance_;
McUdp_DHCPv6_ONE(CSTR);
public:
virtual ~McUdp_DHCPv6_ONE();
static McUdp_DHCPv6_ONE *instance();
int32_t upperPort() const {
return(TP_Udp_DHCPv6_SV);
}
bool containsMc(const MObject *mc) const;
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
virtual RObject *reverse(RControl &, RObject *, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6: public McHeader {
protected:
const MmUint *type_;
void type_member(MmUint *meta) {
type_ = meta;
member(meta);
}
void common_member();
McUdp_DHCPv6(CSTR);
public:
const MmUint *get_type() const {
return(type_);
}
virtual ~McUdp_DHCPv6();
virtual int32_t token() const;
int32_t upperPort() const {
return(TP_Udp_DHCPv6_SV);
}
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(Type);
DEC_HCEVAL(Type);
int32_t get_dhcpv6Type(WObject *) const;
virtual RObject *reverse(RControl &, RObject *, ItPosition &, OCTBUF &) const;
virtual bool generate(WControl &, WObject *, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_ANY: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_ANY(CSTR);
virtual ~McUdp_DHCPv6_ANY();
static McUdp_DHCPv6_ANY *create(CSTR);
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Solicit: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Solicit(CSTR);
virtual ~McUdp_DHCPv6_Solicit();
static McUdp_DHCPv6_Solicit *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Solicit);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Advertise: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Advertise(CSTR);
virtual ~McUdp_DHCPv6_Advertise();
static McUdp_DHCPv6_Advertise *create(CSTR);
int32_t upperPort() const {
return(TP_Udp_DHCPv6_CL);
}
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Advertise);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Request: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Request(CSTR);
virtual ~McUdp_DHCPv6_Request();
static McUdp_DHCPv6_Request *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Request);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Confirm: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Confirm(CSTR);
virtual ~McUdp_DHCPv6_Confirm();
static McUdp_DHCPv6_Confirm *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Confirm);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Renew: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Renew(CSTR);
virtual ~McUdp_DHCPv6_Renew();
static McUdp_DHCPv6_Renew *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Renew);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Rebind: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Rebind(CSTR);
virtual ~McUdp_DHCPv6_Rebind();
static McUdp_DHCPv6_Rebind *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Rebind);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Reply: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Reply(CSTR);
virtual ~McUdp_DHCPv6_Reply();
static McUdp_DHCPv6_Reply *create(CSTR);
int32_t upperPort() const {
return(TP_Udp_DHCPv6_CL);
}
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Reply);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Release: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Release(CSTR);
virtual ~McUdp_DHCPv6_Release();
static McUdp_DHCPv6_Release *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Release);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Decline: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Decline(CSTR);
virtual ~McUdp_DHCPv6_Decline();
static McUdp_DHCPv6_Decline *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Decline);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_Reconfigure: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_Reconfigure(CSTR);
virtual ~McUdp_DHCPv6_Reconfigure();
static McUdp_DHCPv6_Reconfigure *create(CSTR);
int32_t upperPort() const {
return(TP_Udp_DHCPv6_CL);
}
int32_t dhcpv6Type() const {
return(TP_DHCPv6_Reconfigure);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_InformationRequest: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_InformationRequest(CSTR);
virtual ~McUdp_DHCPv6_InformationRequest();
static McUdp_DHCPv6_InformationRequest *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_InformationRequest);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_RelayForward: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_RelayForward(CSTR);
virtual ~McUdp_DHCPv6_RelayForward();
static McUdp_DHCPv6_RelayForward *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_RelayForward);
}
};
////////////////////////////////////////////////////////////////
class McUdp_DHCPv6_RelayReply: public McUdp_DHCPv6 {
public:
McUdp_DHCPv6_RelayReply(CSTR);
virtual ~McUdp_DHCPv6_RelayReply();
static McUdp_DHCPv6_RelayReply *create(CSTR);
int32_t dhcpv6Type() const {
return(TP_DHCPv6_RelayReply);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6: public McOption {
protected:
MmUint *code_;
void code_member(MmUint *meta) {
code_ = meta;
member(meta);
}
MmUint *length_;
void length_member(MmUint *meta) {
length_ = meta;
member(meta);
}
void common_member();
McOpt_DHCPv6(CSTR);
public:
virtual ~McOpt_DHCPv6();
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(Length);
DEC_HCGENE(Code);
DEC_HCEVAL(Code);
int32_t get_optionCode(WObject *) const;
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_ANY: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_ANY(CSTR);
virtual ~McOpt_DHCPv6_ANY();
static McOpt_DHCPv6_ANY *create(CSTR);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_CID: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_CID(CSTR);
virtual ~McOpt_DHCPv6_CID();
static McOpt_DHCPv6_CID *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_CID);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_SID: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_SID(CSTR);
virtual ~McOpt_DHCPv6_SID();
static McOpt_DHCPv6_SID *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_SID);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_IA_NA: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_IA_NA(CSTR);
virtual ~McOpt_DHCPv6_IA_NA();
static McOpt_DHCPv6_IA_NA *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_IA_NA);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_IA_TA: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_IA_TA(CSTR);
virtual ~McOpt_DHCPv6_IA_TA();
static McOpt_DHCPv6_IA_TA *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_IA_TA);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_IA_Address: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_IA_Address(CSTR);
virtual ~McOpt_DHCPv6_IA_Address();
static McOpt_DHCPv6_IA_Address *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_IA_Address);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_OptionRequest: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_OptionRequest(CSTR);
virtual ~McOpt_DHCPv6_OptionRequest();
static McOpt_DHCPv6_OptionRequest *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_OptionRequest);
}
DEC_HC_MLC(OptionCode);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_Preference: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_Preference(CSTR);
virtual ~McOpt_DHCPv6_Preference();
static McOpt_DHCPv6_Preference *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_Preference);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_ElapsedTime: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_ElapsedTime(CSTR);
virtual ~McOpt_DHCPv6_ElapsedTime();
static McOpt_DHCPv6_ElapsedTime *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_ElapsedTime);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_RelayMessage: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_RelayMessage(CSTR);
virtual ~McOpt_DHCPv6_RelayMessage();
static McOpt_DHCPv6_RelayMessage *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_RelayMessage);
}
};
////////////////////////////////////////////////////////////////
class AuthInfo {
uint32_t protocol_;
public:
AuthInfo(): protocol_(0) {};
virtual ~AuthInfo() {};
void set_protocol(uint32_t);
uint32_t get_protocol(void) const;
};
inline void AuthInfo::set_protocol(uint32_t d) {protocol_ = d; return;}
inline uint32_t AuthInfo::get_protocol(void) const {return(protocol_);}
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_Authentication: public McOpt_DHCPv6 {
protected:
const MmUint *proto_;
void proto_member(MmUint *meta) {
proto_ = meta;
member(meta);
}
AuthInfo *AuthInfo_;
public:
McOpt_DHCPv6_Authentication(CSTR);
virtual ~McOpt_DHCPv6_Authentication();
static McOpt_DHCPv6_Authentication *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_Authentication);
}
void nextAuth_set_Control(RControl &, RObject *) const;
virtual RObject *reverse(RControl &, RObject *, ItPosition &, OCTBUF &) const;
AuthInfo *get_auth_info(void) const;
DEC_HCGENE(Protocol);
DEC_HCEVAL(Protocol);
int32_t get_authProto(WObject *) const;
};
inline AuthInfo *McOpt_DHCPv6_Authentication::get_auth_info(void) const {return(AuthInfo_);}
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_ServerUnicast: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_ServerUnicast(CSTR);
virtual ~McOpt_DHCPv6_ServerUnicast();
static McOpt_DHCPv6_ServerUnicast *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_ServerUnicast);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_StatusCode: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_StatusCode(CSTR);
virtual ~McOpt_DHCPv6_StatusCode();
static McOpt_DHCPv6_StatusCode *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_StatusCode);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_RapidCommit: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_RapidCommit(CSTR);
virtual ~McOpt_DHCPv6_RapidCommit();
static McOpt_DHCPv6_RapidCommit *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_RapidCommit);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_UserClass: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_UserClass(CSTR);
virtual ~McOpt_DHCPv6_UserClass();
static McOpt_DHCPv6_UserClass *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_UserClass);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_UserClassData: public McOption {
protected:
MmUint *length_;
void length_member(MmUint *meta) {
length_ = meta;
member(meta);
}
void common_member();
McDHCPv6_UserClassData(CSTR);
public:
virtual ~McDHCPv6_UserClassData();
static McDHCPv6_UserClassData *create(CSTR);
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(Length);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_VendorClass: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_VendorClass(CSTR);
virtual ~McOpt_DHCPv6_VendorClass();
static McOpt_DHCPv6_VendorClass *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_VendorClass);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_VendorClassData: public McOption {
protected:
MmUint *length_;
void length_member(MmUint *meta) {
length_ = meta;
member(meta);
}
void common_member();
McDHCPv6_VendorClassData(CSTR);
public:
virtual ~McDHCPv6_VendorClassData();
static McDHCPv6_VendorClassData *create(CSTR);
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(Length);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_VendorSpecificInfo: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_VendorSpecificInfo(CSTR);
virtual ~McOpt_DHCPv6_VendorSpecificInfo();
static McOpt_DHCPv6_VendorSpecificInfo *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_VendorSpecificInfo);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_OptionData: public McOption {
protected:
MmUint *length_;
void length_member(MmUint *meta) {
length_ = meta;
member(meta);
}
void common_member();
McDHCPv6_OptionData(CSTR);
public:
virtual ~McDHCPv6_OptionData();
static McDHCPv6_OptionData *create(CSTR);
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(Length);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_IID: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_IID(CSTR);
virtual ~McOpt_DHCPv6_IID();
static McOpt_DHCPv6_IID *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_IID);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_ReconfigureMessage: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_ReconfigureMessage(CSTR);
virtual ~McOpt_DHCPv6_ReconfigureMessage();
static McOpt_DHCPv6_ReconfigureMessage *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_ReconfigureMessage);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_ReconfigureAccept: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_ReconfigureAccept(CSTR);
virtual ~McOpt_DHCPv6_ReconfigureAccept();
static McOpt_DHCPv6_ReconfigureAccept *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_ReconfigureAccept);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_IA_PD: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_IA_PD(CSTR);
virtual ~McOpt_DHCPv6_IA_PD();
static McOpt_DHCPv6_IA_PD *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_IA_PD);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_IA_Prefix: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_IA_Prefix(CSTR);
virtual ~McOpt_DHCPv6_IA_Prefix();
static McOpt_DHCPv6_IA_Prefix *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_IA_Prefix);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_DNS_Servers: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_DNS_Servers(CSTR);
virtual ~McOpt_DHCPv6_DNS_Servers();
static McOpt_DHCPv6_DNS_Servers *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_DNS_Servers);
}
DEC_HC_MLC(Address);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_DNS_SearchList: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_DNS_SearchList(CSTR);
virtual ~McOpt_DHCPv6_DNS_SearchList();
static McOpt_DHCPv6_DNS_SearchList *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_DNS_SearchList);
}
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_NTP_Servers: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_NTP_Servers(CSTR);
virtual ~McOpt_DHCPv6_NTP_Servers();
static McOpt_DHCPv6_NTP_Servers *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_NTP_Servers);
}
DEC_HC_MLC(Address);
};
////////////////////////////////////////////////////////////////
class McOpt_DHCPv6_NTP_Timezone: public McOpt_DHCPv6 {
public:
McOpt_DHCPv6_NTP_Timezone(CSTR);
virtual ~McOpt_DHCPv6_NTP_Timezone();
static McOpt_DHCPv6_NTP_Timezone *create(CSTR);
int32_t optionCode() const {
return(TP_Opt_DHCPv6_NTP_Timezone);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID: public McUpper {
protected:
MmUint *type_;
void type_member(MmUint *meta) {
type_ = meta;
member(meta);
}
MmUint *hwtype_;
void hwtype_member(MmUint *meta) {
hwtype_ = meta;
member(meta);
}
void common_member();
McDHCPv6_DUID(CSTR);
public:
virtual ~McDHCPv6_DUID();
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(Type);
DEC_HCEVAL(Type);
int32_t get_duidType(WObject *) const;
};
class McDHCPv6_DUID_ANY: public McDHCPv6_DUID {
public:
McDHCPv6_DUID_ANY(CSTR);
virtual ~McDHCPv6_DUID_ANY();
static McDHCPv6_DUID_ANY *create(CSTR);
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LLT_ONE: public McDHCPv6_DUID {
private:
static McDHCPv6_DUID_LLT_ONE *instance_;
McDHCPv6_DUID_LLT_ONE(CSTR);
public:
virtual ~McDHCPv6_DUID_LLT_ONE();
static McDHCPv6_DUID_LLT_ONE *instance();
int32_t duidType() const {
return(TP_DHCPv6_DUID_LLT);
}
bool containsMc(const MObject *mc) const;
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
virtual RObject *reverse(RControl &, RObject *, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LLT: public McDHCPv6_DUID {
protected:
McDHCPv6_DUID_LLT(CSTR);
public:
virtual ~McDHCPv6_DUID_LLT();
int32_t duidType() const {
return(TP_DHCPv6_DUID_LLT);
}
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(HardwareType);
DEC_HCEVAL(HardwareType);
int32_t get_hardwareType(WObject *) const;
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LLT_ANY: public McDHCPv6_DUID_LLT {
public:
McDHCPv6_DUID_LLT_ANY(CSTR);
virtual ~McDHCPv6_DUID_LLT_ANY();
static McDHCPv6_DUID_LLT_ANY *create(CSTR);
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LLT_Ether: public McDHCPv6_DUID_LLT {
public:
McDHCPv6_DUID_LLT_Ether(CSTR);
virtual ~McDHCPv6_DUID_LLT_Ether();
static McDHCPv6_DUID_LLT_Ether *create(CSTR);
int32_t hardwareType() const {
return(TP_DUID_LL_Ether);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_EN: public McDHCPv6_DUID {
public:
McDHCPv6_DUID_EN(CSTR);
virtual ~McDHCPv6_DUID_EN();
static McDHCPv6_DUID_EN *create(CSTR);
int32_t duidType() const {
return(TP_DHCPv6_DUID_EN);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LL_ONE: public McDHCPv6_DUID {
private:
static McDHCPv6_DUID_LL_ONE *instance_;
McDHCPv6_DUID_LL_ONE(CSTR);
public:
virtual ~McDHCPv6_DUID_LL_ONE();
static McDHCPv6_DUID_LL_ONE *instance();
int32_t duidType() const {
return(TP_DHCPv6_DUID_LL);
}
bool containsMc(const MObject *mc) const;
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
virtual RObject *reverse(RControl &, RObject *, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LL: public McDHCPv6_DUID {
protected:
McDHCPv6_DUID_LL(CSTR);
public:
virtual ~McDHCPv6_DUID_LL();
int32_t duidType() const {
return(TP_DHCPv6_DUID_LL);
}
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
DEC_HCGENE(HardwareType);
DEC_HCEVAL(HardwareType);
int32_t get_hardwareType(WObject *) const;
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LL_ANY: public McDHCPv6_DUID_LL {
public:
McDHCPv6_DUID_LL_ANY(CSTR);
virtual ~McDHCPv6_DUID_LL_ANY();
static McDHCPv6_DUID_LL_ANY *create(CSTR);
};
////////////////////////////////////////////////////////////////
class McDHCPv6_DUID_LL_Ether: public McDHCPv6_DUID_LL {
public:
McDHCPv6_DUID_LL_Ether(CSTR);
virtual ~McDHCPv6_DUID_LL_Ether();
static McDHCPv6_DUID_LL_Ether *create(CSTR);
int32_t hardwareType() const {
return(TP_DUID_LL_Ether);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_Auth: public McUpper {
public:
McDHCPv6_Auth(CSTR);
virtual ~McDHCPv6_Auth();
virtual uint32_t length_for_reverse(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class McDHCPv6_Auth_ANY: public McDHCPv6_Auth {
public:
McDHCPv6_Auth_ANY(CSTR);
virtual ~McDHCPv6_Auth_ANY();
static McDHCPv6_Auth_ANY *create(CSTR);
};
////////////////////////////////////////////////////////////////
class McDHCPv6_Auth_Delayed: public McDHCPv6_Auth {
public:
McDHCPv6_Auth_Delayed(CSTR);
virtual ~McDHCPv6_Auth_Delayed();
static McDHCPv6_Auth_Delayed *create(CSTR);
virtual PObject *tokenObject(int, CSTR) const;
int32_t authProto() const {
return(TP_DHCPv6_Auth_Delayed);
}
};
////////////////////////////////////////////////////////////////
class McDHCPv6_Auth_ReconfigureKey: public McDHCPv6_Auth {
public:
McDHCPv6_Auth_ReconfigureKey(CSTR);
virtual ~McDHCPv6_Auth_ReconfigureKey();
static McDHCPv6_Auth_ReconfigureKey *create(CSTR);
virtual PObject *tokenObject(int, CSTR) const;
int32_t authProto() const {
return(TP_DHCPv6_Auth_ReconfigureKey);
}
};
////////////////////////////////////////////////////////////////
class MmHeader_onDHCPv6: public MmReference_Less1 {
static TypevsMcDict dict_;
public:
MmHeader_onDHCPv6(CSTR);
virtual ~MmHeader_onDHCPv6();
int32_t token() const {
return(metaToken(tkn_payload_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add(McUdp_DHCPv6 *mc);
static void add_other(McUdp_DHCPv6 *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmOption_onDHCPv6: public MmReference_More0 {
static TypevsMcDict dict_;
public:
MmOption_onDHCPv6(CSTR);
virtual ~MmOption_onDHCPv6();
int32_t token() const {
return(metaToken(tkn_option_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add(McOpt_DHCPv6 *mc);
static void add_other(McOpt_DHCPv6 *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmDUID_onOption: public MmReference_Less1 {
static TypevsMcDict dict_;
public:
MmDUID_onOption(CSTR);
virtual ~MmDUID_onOption();
int32_t token() const {
return(metaToken(tkn_payload_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add(McDHCPv6_DUID *mc);
static void add_other(McDHCPv6_DUID *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmLLT_onDUID: public MmReference_Must1 {
static TypevsMcDict dict_;
public:
MmLLT_onDUID(CSTR);
virtual ~MmLLT_onDUID();
int32_t token() const {
return(metaToken(tkn_payload_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add(McDHCPv6_DUID_LLT *mc);
static void add_other(McDHCPv6_DUID_LLT *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmLL_onDUID: public MmReference_Must1 {
static TypevsMcDict dict_;
public:
MmLL_onDUID(CSTR);
virtual ~MmLL_onDUID();
int32_t token() const {
return(metaToken(tkn_payload_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add(McDHCPv6_DUID_LL *mc);
static void add_other(McDHCPv6_DUID_LL *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmUserClass_onOption: public MmReference_More0 {
static TypevsMcDict dict_;
public:
MmUserClass_onOption(CSTR);
virtual ~MmUserClass_onOption();
int32_t token() const {
return(metaToken(tkn_option_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add_other(McDHCPv6_UserClassData *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmVendorClass_onOption: public MmReference_More0 {
static TypevsMcDict dict_;
public:
MmVendorClass_onOption(CSTR);
virtual ~MmVendorClass_onOption();
int32_t token() const {
return(metaToken(tkn_option_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add_other(McDHCPv6_VendorClassData *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmOptionData_onOption: public MmReference_More0 {
static TypevsMcDict dict_;
public:
MmOptionData_onOption(CSTR);
virtual ~MmOptionData_onOption();
int32_t token() const {
return(metaToken(tkn_option_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add_other(McDHCPv6_OptionData *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
};
////////////////////////////////////////////////////////////////
class MmProto_onAuth: public MmReference_Must1 {
static TypevsMcDict dict_;
McOpt_DHCPv6_Authentication *opt_auth_;
public:
MmProto_onAuth(CSTR, McOpt_DHCPv6_Authentication *);
virtual ~MmProto_onAuth();
int32_t token() const {
return(metaToken(tkn_payload_ref_));
}
const TypevsMcDict *get_dict() const {
return(&dict_);
}
static void add_other(McDHCPv6_Auth *mc);
static void add(McDHCPv6_Auth *mc);
bool overwrite_DictType(RControl &, ItPosition &, OCTBUF &) const;
McOpt_DHCPv6_Authentication *get_opt_auth(void) const;
};
inline McOpt_DHCPv6_Authentication *MmProto_onAuth::get_opt_auth(void) const {return(opt_auth_);}
interfaceCmList(DHCPAuthList, PaDHCPAuth);
#endif
syntax highlighted by Code2HTML, v. 0.9.1