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

SrvOptIA_NA.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: SrvOptIA_NA.h,v 1.7 2004/07/05 00:12:30 thomson Exp $
00010  *
00011  * $Log: SrvOptIA_NA.h,v $
00012  * Revision 1.7  2004/07/05 00:12:30  thomson
00013  * Lots of minor changes.
00014  *
00015  * Revision 1.6  2004/06/20 21:00:45  thomson
00016  * Various fixes.
00017  *
00018  * Revision 1.5  2004/06/20 19:29:23  thomson
00019  * New address assignment finally works.
00020  *
00021  * Revision 1.2  2004/06/20 17:51:48  thomson
00022  * getName() method implemented, comment cleanup
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 /* Constructor used in answers to:
00056  * - SOLICIT 
00057  * - SOLICIT (with RAPID_COMMIT)
00058  * - REQUEST */
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 

Generated on Mon Dec 27 21:55:23 2004 for Dibbler - a portable DHCPv6 by  doxygen 1.3.9.1