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
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 class TSrvCfgAddrClass;
00049 #ifndef SRVCONFADDRCLASS_H
00050 #define SRVCONFADDRCLASS_H
00051
00052 #include <string>
00053 #include <iostream>
00054 #include <iomanip>
00055
00056 #include "SrvAddrMgr.h"
00057 #include "SrvParsGlobalOpt.h"
00058 #include "DHCPConst.h"
00059 #include "SmartPtr.h"
00060 #include "IPv6Addr.h"
00061 #include "DUID.h"
00062 #include "SmartPtr.h"
00063
00064
00065 using namespace std;
00066
00067
00068 class TSrvCfgAddrClass
00069 {
00070 friend ostream& operator<<(ostream& out,TSrvCfgAddrClass& iface);
00071 public:
00072 TSrvCfgAddrClass();
00073
00074
00075 bool clntSupported(SmartPtr<TDUID> duid,SmartPtr<TIPv6Addr> clntAddr);
00076
00077 bool clntPrefered(SmartPtr<TDUID> duid,SmartPtr<TIPv6Addr> clntAddr);
00078
00079
00080 bool addrInPool(SmartPtr<TIPv6Addr> addr);
00081 unsigned long countAddrInPool();
00082 SmartPtr<TIPv6Addr> getRandomAddr();
00083
00084 unsigned long getT1(long clntT1);
00085 unsigned long getT2(long clntT2);
00086 unsigned long getPref(long clntPref);
00087 unsigned long getValid(long clntValid);
00088 unsigned long getClassMaxLease();
00089 unsigned long getID();
00090 unsigned long getShare();
00091
00092 bool isLinkLocal();
00093
00094 unsigned long getAssignedCount();
00095 long incrAssigned(int count=1);
00096 long decrAssigned(int count=1);
00097
00098 void setOptions(SmartPtr<TSrvParsGlobalOpt> opt);
00099 virtual ~TSrvCfgAddrClass();
00100 private:
00101 unsigned long T1Beg;
00102 unsigned long T2Beg;
00103 unsigned long PrefBeg;
00104 unsigned long ValidBeg;
00105 unsigned long T1End;
00106 unsigned long T2End;
00107 unsigned long PrefEnd;
00108 unsigned long ValidEnd;
00109 unsigned long Share;
00110
00111 long chooseTime(long beg, long end, long clntTime);
00112
00113 unsigned long ID;
00114 static unsigned long staticID;
00115
00116 TContainer<SmartPtr<TStationRange> > RejedClnt;
00117 TContainer<SmartPtr<TStationRange> > AcceptClnt;
00118 SmartPtr<TStationRange> Pool;
00119 unsigned long ClassMaxLease;
00120 unsigned long AddrsAssigned;
00121 unsigned long AddrsCount;
00122 };
00123
00124 #endif
00125