Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

SrvMsg.h

Go to the documentation of this file.
00001 /*
00002  * Dibbler - a portable DHCPv6
00003  *
00004  * authors: Tomasz Mrugalski <thomson@klub.com.pl>
00005  *          Marek Senderski <msend@o2.pl>
00006  *
00007  * released under GNU GPL v2 or later licence
00008  *
00009  * $Id: SrvMsg.h,v 1.8 2005/02/07 20:51:56 thomson Exp $
00010  *
00011  * $Log: SrvMsg.h,v $
00012  * Revision 1.8  2005/02/07 20:51:56  thomson
00013  * Server stateless mode fixed (bug #103)
00014  *
00015  * Revision 1.7  2005/01/12 00:10:05  thomson
00016  * Compilation fixes.
00017  *
00018  * Revision 1.6  2005/01/08 16:52:04  thomson
00019  * Relay support implemented.
00020  *
00021  * Revision 1.5  2004/10/25 20:45:54  thomson
00022  * Option support, parsers rewritten. ClntIfaceMgr now handles options.
00023  *
00024  * Revision 1.4  2004/06/20 17:25:07  thomson
00025  * getName() method implemented, clean up
00026  *
00027  *
00028  */
00029 
00030 class TSrvMsg;
00031 #ifndef SRVMSG_H
00032 #define SRVMSG_H
00033 
00034 #include "Msg.h"
00035 #include "SmartPtr.h"
00036 #include "Opt.h"
00037 #include "SrvIfaceMgr.h"
00038 #include "SrvTransMgr.h"
00039 #include "SrvCfgMgr.h"
00040 #include "SrvAddrMgr.h"
00041 #include "IPv6Addr.h"
00042 #include "SrvOptOptionRequest.h"
00043 #include "SrvOptInterfaceID.h"
00044 #include "SmartPtr.h"
00045 
00046 class TSrvMsg : public TMsg
00047 {
00048 public:
00049         TSrvMsg(SmartPtr<TSrvIfaceMgr> IfaceMgr, 
00050                 SmartPtr<TSrvTransMgr> TransMgr, 
00051                 SmartPtr<TSrvCfgMgr> CfgMgr,
00052                 SmartPtr<TSrvAddrMgr> AddrMgr,
00053                 int iface,  SmartPtr<TIPv6Addr> addr, char* buf,  int bufSize);
00054         
00055         TSrvMsg(SmartPtr<TSrvIfaceMgr> IfaceMgr, 
00056                 SmartPtr<TSrvTransMgr> TransMgr, 
00057                 SmartPtr<TSrvCfgMgr> CfgMgr,
00058                 SmartPtr<TSrvAddrMgr> AddrMgr,
00059                 int iface, SmartPtr<TIPv6Addr> addr,  int msgType);
00060 
00061         TSrvMsg(SmartPtr<TSrvIfaceMgr> IfaceMgr, 
00062                 SmartPtr<TSrvTransMgr> TransMgr, 
00063                 SmartPtr<TSrvCfgMgr> CfgMgr,
00064                 SmartPtr<TSrvAddrMgr> AddrMgr,
00065                 int iface, SmartPtr<TIPv6Addr> addr, int msgType, long transID);
00066 
00067         TSrvMsg(SmartPtr<TSrvIfaceMgr> IfaceMgr, 
00068                 SmartPtr<TSrvTransMgr> TransMgr, 
00069                 SmartPtr<TSrvCfgMgr> CfgMgr,
00070                 SmartPtr<TSrvAddrMgr> AddrMgr);
00071         
00072     SmartPtr<TSrvTransMgr>  SrvTransMgr;
00073     SmartPtr<TSrvAddrMgr>   SrvAddrMgr;
00074     SmartPtr<TSrvCfgMgr>    SrvCfgMgr;
00075     SmartPtr<TSrvIfaceMgr>  SrvIfaceMgr;
00076     
00077     void copyRelayInfo(SmartPtr<TSrvMsg> q);
00078     bool appendRequestedOptions(SmartPtr<TDUID> duid, SmartPtr<TIPv6Addr> addr, 
00079                                 int iface, SmartPtr<TSrvOptOptionRequest> reqOpt);
00080     string showRequestedOptions(SmartPtr<TSrvOptOptionRequest> oro);
00081 
00082     void addRelayInfo(SmartPtr<TIPv6Addr> linkAddr,
00083                       SmartPtr<TIPv6Addr> peerAddr,
00084                       int hop,
00085                       SmartPtr<TSrvOptInterfaceID> interfaceID);
00086 
00087     int getRelayCount();
00088 
00089     virtual bool check() = 0;
00090 
00091 
00092     unsigned long getTimeout();
00093     void doDuties();
00094     void send();
00095 protected:
00096     unsigned long FirstTimeStamp; // timestamp of first message transmission
00097     unsigned long MRT;            // maximum retransmission timeout
00098 
00099     void setAttribs(SmartPtr<TSrvIfaceMgr> IfaceMgr, 
00100                     SmartPtr<TSrvTransMgr> TransMgr, 
00101                     SmartPtr<TSrvCfgMgr> CfgMgr,
00102                     SmartPtr<TSrvAddrMgr> AddrMgr);
00103 
00104     SmartPtr<TIPv6Addr> LinkAddrTbl[HOP_COUNT_LIMIT];
00105     SmartPtr<TIPv6Addr> PeerAddrTbl[HOP_COUNT_LIMIT];
00106     SmartPtr<TSrvOptInterfaceID> InterfaceIDTbl[HOP_COUNT_LIMIT];
00107     int HopTbl[HOP_COUNT_LIMIT];
00108     int Relays;
00109 };
00110 
00111 #endif
00112 

Generated on Wed Mar 16 00:10:28 2005 for Dibbler - a portable DHCPv6 by  doxygen 1.3.9.1