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: StationRange.h,v 1.4 2004/12/07 00:45:41 thomson Exp $ 00010 * 00011 * $Log: StationRange.h,v $ 00012 * Revision 1.4 2004/12/07 00:45:41 thomson 00013 * Clnt managers creation unified and cleaned up. 00014 * 00015 * Revision 1.3 2004/07/05 00:12:29 thomson 00016 * Lots of minor changes. 00017 * 00018 * 00019 */ 00020 00021 class TStationRange; 00022 #ifndef STATIONRANGE_H 00023 #define STATIONRANGE_H 00024 00025 #include "IPv6Addr.h" 00026 #include "DUID.h" 00027 #include "SmartPtr.h" 00028 00029 #include <iostream> 00030 #include <iomanip> 00031 00032 using namespace std; 00033 00034 class TStationRange 00035 { 00036 friend ostream& operator<<(ostream& out,TStationRange& station); 00037 public: 00038 TStationRange(void); 00039 ~TStationRange(void); 00040 TStationRange( SmartPtr<TDUID> duidl, SmartPtr<TDUID> duidr); 00041 TStationRange( SmartPtr<TDUID> duid); 00042 TStationRange( SmartPtr<TIPv6Addr> addrl, SmartPtr<TIPv6Addr> addrR); 00043 TStationRange( SmartPtr<TIPv6Addr> addr); 00044 bool in(SmartPtr<TDUID> duid, SmartPtr<TIPv6Addr> addr); 00045 bool in(SmartPtr<TIPv6Addr> addr); 00046 bool in(SmartPtr<TDUID> duid); 00047 SmartPtr<TIPv6Addr> getRandomAddr(); 00048 unsigned long rangeCount(); 00049 SmartPtr<TIPv6Addr> getAddrL(); 00050 SmartPtr<TIPv6Addr> getAddrR(); 00051 private: 00052 bool isAddrRange; 00053 SmartPtr<TDUID> DUIDL; 00054 SmartPtr<TDUID> DUIDR; 00055 SmartPtr<TIPv6Addr> AddrL; 00056 SmartPtr<TIPv6Addr> AddrR; 00057 }; 00058 00059 #endif 00060