IBR-DTNSuite  0.10
vinterface.h
Go to the documentation of this file.
1 /*
2  * vinterface.h
3  *
4  * Copyright (C) 2011 IBR, TU Braunschweig
5  *
6  * Written-by: Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 
22 #ifndef VINTERFACE_H_
23 #define VINTERFACE_H_
24 
25 #include "ibrcommon/net/vaddress.h"
26 
27 #include <list>
28 #include <string>
29 #include <stdint.h>
30 
31 namespace ibrcommon
32 {
33  class LinkManagerEvent;
34 
35  class vinterface
36  {
37  public:
39  {
40  public:
41  interface_not_set(string error = "interface is not specified") : Exception(error)
42  {};
43  };
44 
45  const static std::string LOOPBACK;
46  const static std::string ANY;
47 
48  vinterface();
49  vinterface(std::string name);
50  virtual ~vinterface();
51 
52  bool isLoopback() const;
53  bool isAny() const;
54 
55  uint32_t getIndex() const;
56  const std::list<vaddress> getAddresses(const std::string &scope = "") const;
57  const std::string toString() const;
58  bool empty() const;
59  bool up() const;
60 
61  bool operator<(const vinterface &obj) const;
62  bool operator==(const vinterface &obj) const;
63  bool operator!=(const vinterface &obj) const;
64 
65  void eventNotify(const LinkManagerEvent &evt);
66 
67  private:
68  std::string _name;
69  };
70 }
71 
72 #endif /* VINTERFACE_H_ */