Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

SrvCfgIface.h

Go to the documentation of this file.
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 

Generated on Mon Dec 27 21:55:22 2004 for Dibbler - a portable DHCPv6 by  doxygen 1.3.9.1