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: SrvParsIfaceOpt.h,v 1.6 2004/10/25 20:45:54 thomson Exp $ 00010 * 00011 * $Log: SrvParsIfaceOpt.h,v $ 00012 * Revision 1.6 2004/10/25 20:45:54 thomson 00013 * Option support, parsers rewritten. ClntIfaceMgr now handles options. 00014 * 00015 * Revision 1.5 2004/09/03 23:20:23 thomson 00016 * RAPID-COMMIT support fixed. (bugs #50, #51, #52) 00017 * 00018 * Revision 1.4 2004/07/05 00:12:30 thomson 00019 * Lots of minor changes. 00020 * 00021 * Revision 1.3 2004/06/28 22:37:59 thomson 00022 * Minor changes. 00023 * 00024 */ 00025 00026 #ifndef TSRCPARSIFACEOPT_H_ 00027 #define TSRCPARSIFACEOPT_H_ 00028 #include "SrvParsClassOpt.h" 00029 00030 class TSrvParsIfaceOpt : public TSrvParsClassOpt 00031 { 00032 public: 00033 TSrvParsIfaceOpt(void); 00034 ~TSrvParsIfaceOpt(void); 00035 00036 bool uniAddress(); 00037 void setUniAddress(bool isUni); 00038 void setClntMaxLease(long maxLeases); 00039 long getClntMaxLease(); 00040 void setIfaceMaxLease(long maxLease); 00041 long getIfaceMaxLease(); 00042 00043 void setPreference(char pref); 00044 char getPreference(); 00045 00046 void setRapidCommit(bool rapidComm); 00047 bool getRapidCommit(); 00048 00049 void setUnicast(SmartPtr<TIPv6Addr> addr); 00050 SmartPtr<TIPv6Addr> getUnicast(); 00051 00052 00053 //-- options related methods -- 00054 // option: DNS Servers 00055 TContainer< SmartPtr<TIPv6Addr> > * getDNSServerLst(); 00056 void setDNSServerLst(TContainer< SmartPtr<TIPv6Addr> > *lst); 00057 bool supportDNSServer(); 00058 00059 // option: Domain 00060 TContainer< SmartPtr<string> > * getDomainLst(); 00061 void setDomainLst(TContainer< SmartPtr<string> > * domains); 00062 bool supportDomain(); 00063 00064 // option: NTP servers 00065 TContainer< SmartPtr<TIPv6Addr> > * getNTPServerLst(); 00066 void setNTPServerLst(TContainer< SmartPtr<TIPv6Addr> > *lst); 00067 bool supportNTPServer(); 00068 00069 // option: Timezone 00070 string getTimezone(); 00071 void setTimezone(string timeZone); 00072 bool supportTimezone(); 00073 00074 // option: SIP servers 00075 TContainer< SmartPtr<TIPv6Addr> > * getSIPServerLst(); 00076 void setSIPServerLst(TContainer< SmartPtr<TIPv6Addr> > *addr); 00077 bool supportSIPServer(); 00078 00079 // option: SIP domains 00080 TContainer< SmartPtr<string> > * getSIPDomainLst(); 00081 void setSIPDomainLst(TContainer< SmartPtr<string> > *domainlist); 00082 bool supportSIPDomain(); 00083 00084 // option: FQDN 00085 string getFQDN(); 00086 void setFQDN(string fqdn); 00087 bool supportFQDN(); 00088 00089 // option: NIS servers 00090 TContainer< SmartPtr<TIPv6Addr> > * getNISServerLst(); 00091 void setNISServerLst( TContainer< SmartPtr<TIPv6Addr> > *nislist); 00092 bool supportNISServer(); 00093 00094 // option: NIS+ servers 00095 TContainer< SmartPtr<TIPv6Addr> > * getNISPServerLst(); 00096 void setNISPServerLst( TContainer< SmartPtr<TIPv6Addr> > *nisplist); 00097 bool supportNISPServer(); 00098 00099 // option: NIS domain 00100 string getNISDomain(); 00101 void setNISDomain(string domain); 00102 bool supportNISDomain(); 00103 00104 // option: NISP domain 00105 string getNISPDomain(); 00106 void setNISPDomain(string domain); 00107 bool supportNISPDomain(); 00108 00109 // option: LIFETIME 00110 void setLifetime(unsigned int life); 00111 unsigned int getLifetime(); 00112 bool supportLifetime(); 00113 00114 private: 00115 char Preference; 00116 bool RapidCommit; 00117 long IfaceMaxLease; 00118 long ClntMaxLease; 00119 SmartPtr<TIPv6Addr> Unicast; 00120 00121 // options 00122 bool DNSServerSupport; 00123 bool DomainSupport; 00124 bool NTPServerSupport; 00125 bool TimezoneSupport; 00126 bool SIPServerSupport; 00127 bool SIPDomainSupport; 00128 bool FQDNSupport; 00129 bool NISServerSupport; 00130 bool NISDomainSupport; 00131 bool NISPServerSupport; 00132 bool NISPDomainSupport; 00133 bool LifetimeSupport; 00134 00135 TContainer< SmartPtr<TIPv6Addr> > DNSServerLst; 00136 TContainer< SmartPtr<string> > DomainLst; 00137 TContainer< SmartPtr<TIPv6Addr> > NTPServerLst; 00138 string Timezone; 00139 TContainer< SmartPtr<TIPv6Addr> > SIPServerLst; 00140 TContainer< SmartPtr<string> > SIPDomainLst; 00141 string FQDN; 00142 TContainer< SmartPtr<TIPv6Addr> > NISServerLst; 00143 TContainer< SmartPtr<TIPv6Addr> > NISPServerLst; 00144 string NISDomain; 00145 string NISPDomain; 00146 unsigned int Lifetime; 00147 }; 00148 00149 #endif 00150