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

Generated on Sun Aug 7 22:47:17 2005 for Dibbler - a portable DHCPv6 by  doxygen 1.3.9.1