Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Iface.h
Go to the documentation of this file.
1 /*
2  * Dibbler - a portable DHCPv6
3  *
4  * authors: Tomasz Mrugalski <thomson@klub.com.pl>
5  * Marek Senderski <msend@o2.pl>
6  *
7  * released under GNU GPL v2 only licence
8  *
9  */
10 
11 #ifndef IFACEIFACE_H
12 #define IFACEIFACE_H
13 
14 #include <list>
15 #include "Portable.h"
16 #include "SmartPtr.h"
17 #include "Container.h"
18 #include "SocketIPv6.h"
19 #include "IPv6Addr.h"
20 
21 /*
22  * represents network interface
23  */
25  public:
26  friend std::ostream & operator <<(std::ostream & strum, TIfaceIface &x);
27 
28  TIfaceIface(const char * name, int id, unsigned int flags, char* mac,
29  int maclen, char* llAddr, int llAddrCnt, char * globalAddr, int globalCnt, int hwType);
30  char * getName();
31  int getID();
32  std::string getFullName();
33 
34  // ---flags related---
35  unsigned int getFlags();
36  bool flagUp();
37  bool flagRunning();
38  bool flagMulticast();
39  bool flagLoopback();
40  void updateState(struct iface * x);
41 
42  // --- RA bits ---
43  void setMBit(bool m);
44  void setOBit(bool o);
45  bool getMBit();
46  bool getOBit();
47 
48  // ---layer-2 related---
49  int getMacLen();
50  char* getMac();
51  int getHardwareType();
52  char* firstLLAddress();
53  char* getLLAddress();
54  int countLLAddress();
55 
56  void firstGlobalAddr();
58  unsigned int countGlobalAddr();
59  void addGlobalAddr(SPtr<TIPv6Addr> addr);
60  void delGlobalAddr(SPtr<TIPv6Addr> addr);
61 
62  // ---address related---
63  bool addAddr(SPtr<TIPv6Addr> addr, long pref, long valid, int prefixLen);
64  bool delAddr(SPtr<TIPv6Addr> addr, int prefixLen);
65  bool updateAddr(SPtr<TIPv6Addr> addr, long pref, long valid);
66  void setPrefixLength(int len);
67  int getPrefixLength();
68 
69  // ---socket related---
70  bool addSocket(SPtr<TIPv6Addr> addr,int port, bool ifaceonly, bool reuse);
71  // bool addSocket(int port, bool ifaceonly, bool reuse);
72  bool delSocket(int id);
73  void firstSocket();
77  int countSocket();
78 
79  virtual ~TIfaceIface();
80 
81  protected:
82  // ---interface data---
84  int ID;
85  unsigned int Flags;
86  char* Mac;
87  int Maclen;
88  char* LLAddr;
89  int LLAddrCnt;
90  bool M_bit_; // M (managed) bit from Router Advertisement
91  bool O_bit_; // O (other conf) bit from Router Advertisement
92 
93  TContainer< SPtr<TIPv6Addr> > GlobalAddrLst;
94 
95  int HWType;
96 
97  // sockets
98  TContainer< SPtr<TIfaceSocket> > SocketsLst;
99  char* PresLLAddr;
100 
101  int PrefixLen; // used during address adding
102 };
103 
104 typedef std::list < SPtr<TIfaceIface> > TIfaceIfaceLst;
105 
106 #endif
107