00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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;
00097 unsigned long MRT;
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