/* * ipv6cp.h - Self explanitory * Copyright (C) 1997-2000 SpellCaster Telecommunications Inc. * Released under the GNU Public License. See LICENSE file for details. */ #ifndef IPV6CP_H #define IPV6CP_H #include "debug.h" #include "fsm.h" #include "protocol.h" #include "packet.h" class CInterface; // Packet Codes // Option Types #define IPV6CP_OPT_TOKEN 1 /* Interface-token */ #define IPV6CP_OPT_IPV6COMPR 2 // Option Lengths #define IPV6CP_HEADER_LENGTH 4 #define IPV6CP_OPT_TOKEN_LEN 10 /* code, length + 8 byte token */ class dfs_object_t; class ctrlfd_t; class CIpv6cpProtocol : public CFsmProtocol { public: CIpv6cpProtocol(); ~CIpv6cpProtocol(); public: // External Events void Input(CPppPacket *); CInterface *m_parent; private: unsigned long long m_our_token; unsigned long long m_their_token; protected: virtual void ThisLayerStarted(); virtual void ThisLayerFinished(const char *why); virtual void ThisLayerUp(); virtual void SndConfReq(); virtual void SndConfAck(); virtual void SndConfNak(); virtual void SndTermReq(); virtual void SndTermAck(); virtual void SndCodeReject(CPppPacket *); virtual void RcvCodeReject(CPppPacket *); virtual void RcvConfAck(CPppPacket *); virtual void RcvConfRej(CPppPacket *); virtual void RcvConfNak(CPppPacket *); virtual void RcvConfReq(CPppPacket *); public: void SetWill(OptionSet_t &will) { return; } void dfs_restore(dfs_object_t *obj); void dump_full_state(ctrlfd_t *cfd); }; #endif // IPV6CP_H