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 class TSrvIfaceIface;
00030 #ifndef SRVIFACEIFACE_H
00031 #define SRVIFACEIFACE_H
00032
00033 #include "Iface.h"
00034 #include "DHCPConst.h"
00035
00036 struct Relay {
00037 SmartPtr<TSrvIfaceIface> iface;
00038 int ifindex;
00039 int interfaceID;
00040 };
00041 typedef struct Relay TRelay;
00042
00043 class TSrvIfaceIface: public TIfaceIface {
00044 public:
00045 TSrvIfaceIface(const char * name, int id, unsigned int flags, char* mac,
00046 int maclen, char* llAddr, int llAddrCnt, char * globalAddr,
00047 int globalAddrCnt, int hwType);
00048
00049 friend ostream & operator <<(ostream & strum, TSrvIfaceIface &x);
00050
00051 void setUnderlaying(SmartPtr<TSrvIfaceIface> under);
00052 bool appendRelay(SmartPtr<TSrvIfaceIface> relay, int interfaceID);
00053 SmartPtr<TSrvIfaceIface> getUnderlaying();
00054 SmartPtr<TSrvIfaceIface> getRelayByInterfaceID(int interfaceID);
00055 SmartPtr<TSrvIfaceIface> getRelayByLinkAddr(SmartPtr<TIPv6Addr> addr);
00056 int getRelayCnt();
00057
00058 private:
00059 SmartPtr<TSrvIfaceIface> UnderRelay;
00060 bool Relay;
00061
00062 TRelay Relays[HOP_COUNT_LIMIT];
00063 int RelaysCnt;
00064 };
00065
00066 #endif
00067