diff options
Diffstat (limited to 'watchlink/watchlink.cc')
-rw-r--r-- | watchlink/watchlink.cc | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/watchlink/watchlink.cc b/watchlink/watchlink.cc index 4d8f0787..849e2f20 100644 --- a/watchlink/watchlink.cc +++ b/watchlink/watchlink.cc @@ -10,7 +10,7 @@ #include <iostream> #include <stdio.h> #include <string> -#include <set> +#include <map> #include <fcntl.h> #include <syslog.h> #include <errno.h> @@ -36,7 +36,7 @@ struct option longopts[] = { 0 } }; -set<string> g_exclude; +multimap<string,IPv4net> g_exclude; string g_link_dir = "/var/linkstatus"; /** @@ -59,10 +59,10 @@ usage() * * **/ -set<string> +multimap<string,IPv4net> load_exclusion_file(const string &link_dir) { - set<string> coll; + multimap<string,IPv4net> coll; string file = link_dir + "/exclude"; FILE *fp = fopen(file.c_str(), "r"); @@ -76,9 +76,14 @@ load_exclusion_file(const string &link_dir) while (fgets(str, 1024, fp)) { string line(str); - StrProc tokens(line, ","); - for (int i = 0; i < tokens.size(); ++i) { - coll.insert(tokens.get(i)); + StrProc tokens(line, " "); + if (tokens.size() == 1) { + string any("0/0"); + coll.insert(pair<string,IPv4net>(tokens.get(0),IPv4net(any))); + } + else if (tokens.size() == 2) { + string net(tokens.get(1)); + coll.insert(pair<string,IPv4net>(tokens.get(0),IPv4net(net))); } } fclose(fp); @@ -183,8 +188,6 @@ main(int argc, char* const argv[]) NetlinkLinkStatus nl_ls(sock, g_link_dir, debug); while (true) { - // cout << "watchlink: now entering listening mode: " << endl; - NetlinkEvent nl_event; if (nl_listener.process(nl_event, g_exclude) == true) { if (send_request) { |