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