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.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 

Generated on Wed Mar 16 00:10:28 2005 for Dibbler - a portable DHCPv6 by  doxygen 1.3.9.1