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