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: ClntIfaceMgr.h,v 1.5 2004/12/07 00:45:41 thomson Exp $ 00010 * 00011 * $Log: ClntIfaceMgr.h,v $ 00012 * Revision 1.5 2004/12/07 00:45:41 thomson 00013 * Clnt managers creation unified and cleaned up. 00014 * 00015 * Revision 1.4 2004/12/01 20:55:17 thomson 00016 * Obsolete definitions removed. 00017 * 00018 * Revision 1.3 2004/10/27 22:07:55 thomson 00019 * Signed/unsigned issues fixed, Lifetime option implemented, INFORMATION-REQUEST 00020 * message is now sent properly. Valid lifetime granted by server fixed. 00021 * 00022 * Revision 1.2 2004/10/25 20:45:53 thomson 00023 * Option support, parsers rewritten. ClntIfaceMgr now handles options. 00024 * 00025 * 00026 */ 00027 00028 class TClntIfaceMgr; 00029 #ifndef CLNTIFACEMGR_H 00030 #define CLNTIFACEMGR_H 00031 00032 #include "SmartPtr.h" 00033 #include "IfaceMgr.h" 00034 #include "ClntCfgMgr.h" 00035 #include "ClntAddrMgr.h" 00036 #include "ClntTransMgr.h" 00037 #include "ClntIfaceIface.h" 00038 #include "IPv6Addr.h" 00039 #include "Msg.h" 00040 00041 class TClntIfaceMgr : public TIfaceMgr 00042 { 00043 public: 00044 TClntIfaceMgr(string xmlFile); 00045 ~TClntIfaceMgr(); 00046 friend ostream & operator <<(ostream & strum, TClntIfaceMgr &x); 00047 void dump(); 00048 00049 bool sendUnicast(int iface, char *msg, int size, SmartPtr<TIPv6Addr> addr); 00050 00051 bool sendMulticast(int iface, char *msg, int msgsize); 00052 00053 SmartPtr<TMsg> select(unsigned int timeout); 00054 00055 void setThats(SmartPtr<TClntIfaceMgr> clntIfaceMgr, 00056 SmartPtr<TClntTransMgr> clntTransMgr, 00057 SmartPtr<TClntCfgMgr> clntCfgMgr, 00058 SmartPtr<TClntAddrMgr> clntAddrMgr); 00059 00060 // --- option related --- 00061 void removeAllOpts(); 00062 00063 unsigned int getTimeout(); 00064 00065 private: 00066 string XmlFile; 00067 SmartPtr<TClntCfgMgr> ClntCfgMgr; 00068 SmartPtr<TClntAddrMgr> ClntAddrMgr; 00069 SmartPtr<TClntTransMgr> ClntTransMgr; 00070 SmartPtr<TClntIfaceMgr> That; 00071 }; 00072 00073 #endif 00074