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 class TSrvOptIA_NA;
00028 #ifndef SRVOPTIA_NA_H
00029 #define SRVOPTIA_NA_H
00030
00031 #include "OptIA_NA.h"
00032 #include "SrvOptIA_NA.h"
00033 #include "SrvOptIAAddress.h"
00034 #include "SmartPtr.h"
00035 #include "DUID.h"
00036 #include "SrvCfgMgr.h"
00037 #include "SrvAddrMgr.h"
00038 #include "Container.h"
00039 #include "IPv6Addr.h"
00040
00041 class TSrvOptIA_NA : public TOptIA_NA
00042 {
00043 public:
00044
00045 TSrvOptIA_NA(SmartPtr<TSrvCfgMgr> cfgMgr,
00046 SmartPtr<TSrvAddrMgr> addrMgr,
00047 SmartPtr<TSrvOptIA_NA> queryOpt,
00048 SmartPtr<TIPv6Addr> clntAddr, SmartPtr<TDUID> duid,
00049 int iface, unsigned long &addrCount, int msgType , TMsg* parent);
00050
00051 TSrvOptIA_NA(char * buf, int bufsize, TMsg* parent);
00052 TSrvOptIA_NA(long IAID, long T1, long T2, TMsg* parent);
00053 TSrvOptIA_NA(long IAID, long T1, long T2, int Code, string Msg, TMsg* parent);
00054
00055
00056
00057
00058
00059 TSrvOptIA_NA(SmartPtr<TSrvAddrMgr> addrMgr, SmartPtr<TSrvCfgMgr> cfgMgr,
00060 SmartPtr<TSrvOptIA_NA> queryOpt,
00061 SmartPtr<TDUID> clntDuid, SmartPtr<TIPv6Addr> clntAddr,
00062 int iface, int msgType, TMsg* parent);
00063
00064 void releaseAllAddrs(bool quiet);
00065
00066 void solicit(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00067 void request(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00068 void renew(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00069 void rebind(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00070 void release(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00071 void confirm(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00072 void decline(SmartPtr<TSrvOptIA_NA> queryOpt, unsigned long &addrCount);
00073 bool doDuties();
00074 private:
00075 SmartPtr<TSrvAddrMgr> AddrMgr;
00076 SmartPtr<TSrvCfgMgr> CfgMgr;
00077 SmartPtr<TIPv6Addr> ClntAddr;
00078 SmartPtr<TDUID> ClntDuid;
00079 int Iface;
00080
00081 SmartPtr<TSrvOptIAAddress> assignAddr(SmartPtr<TIPv6Addr> hint,
00082 unsigned long pref,
00083 unsigned long valid,
00084 bool quiet);
00085 SmartPtr<TIPv6Addr> getFreeAddr(SmartPtr<TIPv6Addr> hint);
00086
00087 };
00088
00089
00090
00091
00092 #endif
00093