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: ClntParsIfaceOpt.h,v 1.6 2004/11/30 00:42:50 thomson Exp $ 00010 * 00011 * $Log: ClntParsIfaceOpt.h,v $ 00012 * Revision 1.6 2004/11/30 00:42:50 thomson 00013 * Client no longer sends RapidCommit, unless told to do so (bug #55) 00014 * 00015 * Revision 1.5 2004/11/29 21:21:56 thomson 00016 * Client parser now supports 'option lifetime' directive (bug #75) 00017 * 00018 * Revision 1.4 2004/10/25 20:45:52 thomson 00019 * Option support, parsers rewritten. ClntIfaceMgr now handles options. 00020 * 00021 * Revision 1.3 2004/10/02 13:11:24 thomson 00022 * Boolean options in config file now can be specified with YES/NO/TRUE/FALSE. 00023 * Unicast communication now can be enable on client side (disabled by default). 00024 * 00025 * Revision 1.2 2004/05/23 22:37:54 thomson 00026 * *** empty log message *** 00027 * 00028 * 00029 */ 00030 00031 #ifndef TPARSEIFACEOPT_H 00032 #define TPARSEIFACEOPT_H 00033 00034 #include "DHCPConst.h" 00035 #include "Container.h" 00036 00037 #include "ClntParsIAOpt.h" 00038 #include "StationID.h" 00039 #include "IPv6Addr.h" 00040 00041 #include <iostream> 00042 #include <string> 00043 using namespace std; 00044 00045 00046 class TClntParsIfaceOpt : public TClntParsIAOpt 00047 { 00048 public: 00049 TClntParsIfaceOpt(); 00050 ~TClntParsIfaceOpt(); 00051 void setUnicast(bool unicast); 00052 bool getUnicast(); 00053 bool getRapidCommit(); 00054 void setRapidCommit(bool rapid); 00055 bool isNewGroup(); 00056 void setNewGroup(bool newGr); 00057 bool getIsIAs(); 00058 void setIsIAs(bool state); 00059 00060 //-- options related methods -- 00061 // option: DNS Servers 00062 TContainer< SmartPtr<TIPv6Addr> > * getDNSServerLst(); 00063 void setDNSServerLst(TContainer< SmartPtr<TIPv6Addr> > *lst); 00064 bool getReqDNSServer(); 00065 00066 // option: Domain 00067 TContainer< SmartPtr<string> > * getDomainLst(); 00068 void setDomainLst(TContainer< SmartPtr<string> > * domains); 00069 bool getReqDomain(); 00070 00071 // option: NTP servers 00072 TContainer< SmartPtr<TIPv6Addr> > * getNTPServerLst(); 00073 void setNTPServerLst(TContainer< SmartPtr<TIPv6Addr> > *lst); 00074 bool getReqNTPServer(); 00075 00076 // option: Timezone 00077 string getTimezone(); 00078 void setTimezone(string timeZone); 00079 bool getReqTimezone(); 00080 00081 // option: SIP servers 00082 TContainer< SmartPtr<TIPv6Addr> > * getSIPServerLst(); 00083 void setSIPServerLst(TContainer< SmartPtr<TIPv6Addr> > *addr); 00084 bool getReqSIPServer(); 00085 00086 // option: SIP domains 00087 TContainer< SmartPtr<string> > * getSIPDomainLst(); 00088 void setSIPDomainLst(TContainer< SmartPtr<string> > *domainlist); 00089 bool getReqSIPDomain(); 00090 00091 // option: FQDN 00092 string getFQDN(); 00093 void setFQDN(string fqdn); 00094 bool getReqFQDN(); 00095 00096 // option: NIS servers 00097 TContainer< SmartPtr<TIPv6Addr> > * getNISServerLst(); 00098 void setNISServerLst( TContainer< SmartPtr<TIPv6Addr> > *nislist); 00099 bool getReqNISServer(); 00100 00101 // option: NIS+ servers 00102 TContainer< SmartPtr<TIPv6Addr> > * getNISPServerLst(); 00103 void setNISPServerLst( TContainer< SmartPtr<TIPv6Addr> > *nisplist); 00104 bool getReqNISPServer(); 00105 00106 // option: NIS domain 00107 string getNISDomain(); 00108 void setNISDomain(string domain); 00109 bool getReqNISDomain(); 00110 00111 // option: NISP domain 00112 string getNISPDomain(); 00113 void setNISPDomain(string domain); 00114 bool getReqNISPDomain(); 00115 00116 // option: Lifetime 00117 bool getLifetime(); 00118 void setLifetime(); 00119 bool getReqLifetime(); 00120 00121 private: 00122 bool NewGroup;//indicates whether new group should be created 00123 bool NoIAs; 00124 bool Unicast; // do we accept unicast? 00125 bool RapidCommit; 00126 00127 TContainer< SmartPtr<TIPv6Addr> > DNSServerLst; 00128 TContainer< SmartPtr<string> > DomainLst; 00129 TContainer< SmartPtr<TIPv6Addr> > NTPServerLst; 00130 string Timezone; 00131 TContainer< SmartPtr<TIPv6Addr> > SIPServerLst; 00132 TContainer< SmartPtr<string> > SIPDomainLst; 00133 string FQDN; 00134 TContainer< SmartPtr<TIPv6Addr> > NISServerLst; 00135 TContainer< SmartPtr<TIPv6Addr> > NISPServerLst; 00136 string NISDomain; 00137 string NISPDomain; 00138 bool Lifetime; 00139 00140 bool ReqDNSServer; 00141 bool ReqDomain; 00142 bool ReqNTPServer; 00143 bool ReqTimezone; 00144 bool ReqSIPServer; 00145 bool ReqSIPDomain; 00146 bool ReqFQDN; 00147 bool ReqNISServer; 00148 bool ReqNISPServer; 00149 bool ReqNISDomain; 00150 bool ReqNISPDomain; 00151 bool ReqLifetime; 00152 }; 00153 00154 00155 #endif 00156