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