IBR-DTNSuite  0.12
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(const std::string &name);
50 #ifdef __WIN32__
51  vinterface(const std::string &name, const std::wstring &friendlyName);
52 #endif
53  virtual ~vinterface();
54 
55  bool isLoopback() const;
56  bool isAny() const;
57 
58  uint32_t getIndex() const;
59  const std::list<vaddress> getAddresses(const std::string &scope = "") const;
60  const std::string toString() const;
61  bool empty() const;
62  bool up() const;
63 
64 #ifdef __WIN32__
65  const std::wstring& getFriendlyName() const;
66 #endif
67 
68  bool operator<(const vinterface &obj) const;
69  bool operator==(const vinterface &obj) const;
70  bool operator!=(const vinterface &obj) const;
71 
72  void eventNotify(const LinkManagerEvent &evt);
73 
74  private:
75  std::string _name;
76 #ifdef __WIN32__
77  std::wstring _friendlyName;
78 #endif
79  };
80 }
81 
82 #endif /* VINTERFACE_H_ */