summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/conf/links.conf.example2
-rw-r--r--src/modules/m_spanningtree/link.h2
-rw-r--r--src/modules/m_spanningtree/utils.cpp9
3 files changed, 8 insertions, 5 deletions
diff --git a/docs/conf/links.conf.example b/docs/conf/links.conf.example
index 382455bcd..b196c5621 100644
--- a/docs/conf/links.conf.example
+++ b/docs/conf/links.conf.example
@@ -29,7 +29,7 @@
# allowmask: Range of IP addresses to allow for this link.
# Can be a CIDR (see example).
- allowmask="69.58.44.0/24"
+ allowmask="69.58.44.0/24 127.0.0.0/8"
# timeout: If defined, this option defines how long the server
# will wait to consider the connect attempt failed and try the
diff --git a/src/modules/m_spanningtree/link.h b/src/modules/m_spanningtree/link.h
index b318c9bf2..21213fb3e 100644
--- a/src/modules/m_spanningtree/link.h
+++ b/src/modules/m_spanningtree/link.h
@@ -30,7 +30,7 @@ class Link : public refcountbase
std::string SendPass;
std::string RecvPass;
std::string Fingerprint;
- std::string AllowMask;
+ std::vector<std::string> AllowMasks;
bool HiddenFromStats;
std::string Hook;
int Timeout;
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index 6c3ee703c..c9abbd008 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -227,8 +227,7 @@ void SpanningTreeUtilities::RefreshIPCache()
continue;
}
- if (L->AllowMask.length())
- ValidIPs.push_back(L->AllowMask);
+ std::copy(L->AllowMasks.begin(), L->AllowMasks.end(), std::back_inserter(ValidIPs));
irc::sockets::sockaddrs dummy;
bool ipvalid = irc::sockets::aptosa(L->IPAddr, L->Port, dummy);
@@ -277,7 +276,11 @@ void SpanningTreeUtilities::ReadConfiguration()
reference<Link> L = new Link(tag);
std::string linkname = tag->getString("name");
L->Name = linkname.c_str();
- L->AllowMask = tag->getString("allowmask");
+
+ irc::spacesepstream sep = tag->getString("allowmask");
+ for (std::string s; sep.GetToken(s);)
+ L->AllowMasks.push_back(s);
+
L->IPAddr = tag->getString("ipaddr");
L->Port = tag->getInt("port");
L->SendPass = tag->getString("sendpass", tag->getString("password"));