00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef IFACEIFACE_H
00036 #define IFACEIFACE_H
00037
00038 #include "Portable.h"
00039 #include "SmartPtr.h"
00040 #include "Container.h"
00041 #include "SocketIPv6.h"
00042 #include "IPv6Addr.h"
00043
00044
00045
00046
00047 class TIfaceIface{
00048 public:
00049 friend ostream & operator <<(ostream & strum, TIfaceIface &x);
00050
00051 TIfaceIface(const char * name, int id, unsigned int flags, char* mac,
00052 int maclen, char* llAddr, int llAddrCnt, char * globalAddr, int globalCnt, int hwType);
00053 char * getName();
00054 int getID();
00055 string getFullName();
00056
00057
00058 unsigned int getFlags();
00059 bool flagUp();
00060 bool flagRunning();
00061 bool flagMulticast();
00062 bool flagLoopback();
00063
00064
00065 int getMacLen();
00066 char* getMac();
00067 int getHardwareType();
00068 char* firstLLAddress();
00069 char* getLLAddress();
00070 int countLLAddress();
00071
00072 SmartPtr<TIPv6Addr> getGlobalAddr();
00073
00074
00075 bool addAddr(SmartPtr<TIPv6Addr> addr, long pref, long valid);
00076 bool delAddr(SmartPtr<TIPv6Addr> addr);
00077 bool updateAddr(SmartPtr<TIPv6Addr> addr, long pref, long valid);
00078
00079
00080 bool addSocket(SmartPtr<TIPv6Addr> addr,int port, bool ifaceonly, bool reuse);
00081 bool addSocket(int port, bool ifaceonly, bool reuse);
00082 bool delSocket(int id);
00083 void firstSocket();
00084 SmartPtr <TIfaceSocket> getSocketByFD(int fd);
00085 SmartPtr <TIfaceSocket> getSocket();
00086 int countSocket();
00087
00088 ~TIfaceIface();
00089
00090 protected:
00091
00092 char Name[MAX_IFNAME_LENGTH];
00093 int ID;
00094 unsigned int Flags;
00095 char* Mac;
00096 int Maclen;
00097 char* LLAddr;
00098 int LLAddrCnt;
00099 char * GlobalAddr;
00100 int GlobalAddrCnt;
00101
00102 int HWType;
00103
00104
00105 TContainer< SmartPtr<TIfaceSocket> > SocketsLst;
00106 char* PresLLAddr;
00107 };
00108
00109 #endif
00110