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