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: SrvCfgIface.h,v 1.8 2004/10/25 20:45:53 thomson Exp $ 00010 * 00011 * $Log: SrvCfgIface.h,v $ 00012 * Revision 1.8 2004/10/25 20:45:53 thomson 00013 * Option support, parsers rewritten. ClntIfaceMgr now handles options. 00014 * 00015 * Revision 1.7 2004/09/05 15:27:49 thomson 00016 * Data receive switched from recvfrom to recvmsg, unicast partially supported. 00017 * 00018 * Revision 1.6 2004/09/03 23:20:23 thomson 00019 * RAPID-COMMIT support fixed. (bugs #50, #51, #52) 00020 * 00021 * Revision 1.5 2004/07/05 00:12:30 thomson 00022 * Lots of minor changes. 00023 * 00024 * 00025 */ 00026 00027 class TSrvCfgIface; 00028 #ifndef SRVCONFIFACE_H 00029 #define SRVCONFIFACE_H 00030 #include "DHCPConst.h" 00031 #include "SrvCfgAddrClass.h" 00032 #include "SrvParsGlobalOpt.h" 00033 #include <iostream> 00034 #include <string> 00035 using namespace std; 00036 00037 class TSrvCfgIface 00038 { 00039 friend ostream& operator<<(ostream& out,TSrvCfgIface& iface); 00040 public: 00041 TSrvCfgIface(); 00042 TSrvCfgIface(string ifaceName); 00043 TSrvCfgIface(int ifaceNr); 00044 virtual ~TSrvCfgIface(); 00045 void setDefaults(); 00046 00047 void setName(string ifaceName); 00048 void setID(int ifaceID); 00049 int getID(); 00050 string getName(); 00051 00052 void addAddrClass(SmartPtr<TSrvCfgAddrClass> addrClass); 00053 void firstAddrClass(); 00054 SmartPtr<TSrvCfgAddrClass> getAddrClass(); 00055 SmartPtr<TSrvCfgAddrClass> getClassByID(unsigned long id); 00056 SmartPtr<TSrvCfgAddrClass> getRandomClass(SmartPtr<TDUID> clntDuid, 00057 SmartPtr<TIPv6Addr> clntAddr); 00058 long countAddrClass(); 00059 00060 SmartPtr<TIPv6Addr> getUnicast(); 00061 00062 void setNoConfig(); 00063 void setOptions(SmartPtr<TSrvParsGlobalOpt> opt); 00064 00065 unsigned char getPreference(); 00066 00067 bool getRapidCommit(); 00068 00069 long getIfaceMaxLease(); 00070 unsigned long getClntMaxLease(); 00071 00072 // assigned address functions 00073 void addClntAddr(SmartPtr<TIPv6Addr> ptrAddr); 00074 void delClntAddr(SmartPtr<TIPv6Addr> ptrAddr); 00075 00076 // options 00077 // option: DNS Servers 00078 TContainer< SmartPtr<TIPv6Addr> > * getDNSServerLst(); 00079 void setDNSServerLst(TContainer< SmartPtr<TIPv6Addr> > *lst); 00080 bool supportDNSServer(); 00081 00082 // option: Domain 00083 TContainer< SmartPtr<string> > * getDomainLst(); 00084 void setDomainLst(TContainer< SmartPtr<string> > * domains); 00085 bool supportDomain(); 00086 00087 // option: NTP servers 00088 TContainer< SmartPtr<TIPv6Addr> > * getNTPServerLst(); 00089 void setNTPServerLst(TContainer< SmartPtr<TIPv6Addr> > *lst); 00090 bool supportNTPServer(); 00091 00092 // option: Timezone 00093 string getTimezone(); 00094 void setTimezone(string timeZone); 00095 bool supportTimezone(); 00096 00097 // option: SIP servers 00098 TContainer< SmartPtr<TIPv6Addr> > * getSIPServerLst(); 00099 void setSIPServerLst(TContainer< SmartPtr<TIPv6Addr> > *addr); 00100 bool supportSIPServer(); 00101 00102 // option: SIP domains 00103 TContainer< SmartPtr<string> > * getSIPDomainLst(); 00104 void setSIPDomainLst(TContainer< SmartPtr<string> > *domainlist); 00105 bool supportSIPDomain(); 00106 00107 // option: FQDN 00108 string getFQDN(); 00109 void setFQDN(string fqdn); 00110 bool supportFQDN(); 00111 00112 // option: NIS servers 00113 TContainer< SmartPtr<TIPv6Addr> > * getNISServerLst(); 00114 void setNISServerLst( TContainer< SmartPtr<TIPv6Addr> > *nislist); 00115 bool supportNISServer(); 00116 00117 // option: NIS+ servers 00118 TContainer< SmartPtr<TIPv6Addr> > * getNISPServerLst(); 00119 void setNISPServerLst( TContainer< SmartPtr<TIPv6Addr> > *nisplist); 00120 bool supportNISPServer(); 00121 00122 // option: NIS domain 00123 string getNISDomain(); 00124 void setNISDomain(string domain); 00125 bool supportNISDomain(); 00126 00127 // option: NISP domain 00128 string getNISPDomain(); 00129 void setNISPDomain(string domain); 00130 bool supportNISPDomain(); 00131 00132 // option: LIFETIME 00133 void setLifetime(unsigned int life); 00134 unsigned int getLifetime(); 00135 bool supportLifetime(); 00136 00137 private: 00138 unsigned char preference; 00139 int ID; 00140 string Name; 00141 bool NoConfig; 00142 SmartPtr<TIPv6Addr> Unicast; 00143 unsigned long IfaceMaxLease; 00144 unsigned long ClntMaxLease; 00145 bool RapidCommit; 00146 00147 TContainer< SmartPtr<TSrvCfgAddrClass> > SrvCfgAddrClassLst; 00148 00149 00150 // options 00151 bool DNSServerSupport; 00152 bool DomainSupport; 00153 bool NTPServerSupport; 00154 bool TimezoneSupport; 00155 bool SIPServerSupport; 00156 bool SIPDomainSupport; 00157 bool FQDNSupport; 00158 bool NISServerSupport; 00159 bool NISDomainSupport; 00160 bool NISPServerSupport; 00161 bool NISPDomainSupport; 00162 bool LifetimeSupport; 00163 00164 TContainer< SmartPtr<TIPv6Addr> > DNSServerLst; 00165 TContainer< SmartPtr<string> > DomainLst; 00166 TContainer< SmartPtr<TIPv6Addr> > NTPServerLst; 00167 string Timezone; 00168 TContainer< SmartPtr<TIPv6Addr> > SIPServerLst; 00169 TContainer< SmartPtr<string> > SIPDomainLst; 00170 string FQDN; 00171 TContainer< SmartPtr<TIPv6Addr> > NISServerLst; 00172 TContainer< SmartPtr<TIPv6Addr> > NISPServerLst; 00173 string NISDomain; 00174 string NISPDomain; 00175 unsigned int Lifetime; 00176 00177 00178 }; 00179 00180 #endif /* SRVCONFIFACE_H */ 00181