00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef IF_PROP_NEW_HPP
00024 #define IF_PROP_NEW_HPP
00025
00026 #include <list>
00027 #include <map>
00028 #include <ifaddrs.h>
00029 using namespace std;
00030
00031 typedef pair<struct ifaddrs* , list<struct ifaddrs*> > ipv4_6_pair;
00032
00033
00034 typedef map<string, ipv4_6_pair > if_prop_map;
00035 typedef pair<string, ipv4_6_pair >if_prop_pair;
00036
00040 class if_prop{
00041 private:
00042 if_prop_map m_if_map;
00043 struct ifaddrs* m_if_addrs;
00044 public:
00048 if_prop();
00049
00053 if_prop_map* get_if_props();
00054
00059 bool refresh_network_interfaces();
00060
00064 struct ifaddrs* get_ip4_if(const string &if_name);
00065
00069 list<struct ifaddrs*>* get_ip6_if(const string &if_name);
00070
00074 void print_if_info();
00075
00080 void print_if_addr(const struct ifaddrs* if_p);
00081
00085 ~if_prop();
00086
00090 bool is_getaddrs_valid() {
00091 return m_if_addrs > 0;
00092 }
00093
00097 static void test_if_prop();
00098 };
00099
00100 #endif // IF_PROP_NEW_HPP