00001 class TIfaceSocket;
00002 #ifndef IFACESOCKETIPV6_H
00003 #define IFACESOCKETIPV6_H
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <iostream>
00013 #include <string>
00014
00015 #include "Portable.h"
00016 #include "DHCPConst.h"
00017 #include "IPv6Addr.h"
00018 #include "SmartPtr.h"
00019 using namespace std;
00020
00021
00022
00023
00024 class TIfaceSocket {
00025 friend ostream& operator<<(ostream& strum, TIfaceSocket &x);
00026 public:
00027 TIfaceSocket(char * iface,int ifaceid, int port,
00028 SmartPtr<TIPv6Addr> addr, bool ifaceonly, bool reuse);
00029 TIfaceSocket(char * iface,int ifaceid, int port,
00030 bool ifaceonly, bool reuse);
00031
00032
00033 int send(char * buf,int len, SmartPtr<TIPv6Addr> addr,int port);
00034 int recv(char * buf,SmartPtr<TIPv6Addr> addr);
00035
00036
00037 int getFD();
00038 int getPort();
00039 int getIfaceID();
00040 SmartPtr<TIPv6Addr> getAddr();
00041 enum EState getStatus();
00042
00043
00044
00045
00046
00047 static fd_set * getFDS();
00048
00049 ~TIfaceSocket();
00050 private:
00051
00052 int createSocket(char * iface, int ifaceid, SmartPtr<TIPv6Addr> addr,
00053 int port, bool ifaceonly, bool reuse);
00054
00055
00056 int FD;
00057
00058
00059 int Port;
00060
00061
00062 enum EState Status;
00063
00064
00065 string Error;
00066
00067
00068 char Iface[MAX_IFNAME_LENGTH];
00069
00070
00071 int IfaceID;
00072
00073
00074 SmartPtr<TIPv6Addr> Addr;
00075
00076
00077 bool IfaceOnly;
00078
00079
00080 bool Multicast;
00081
00082
00083
00084 static int Count;
00085 };
00086
00087
00088 #endif
00089
00090