void moreLua()
{
+ typedef NetmaskTree<string> nmts_t;
g_lua.writeFunction("newCA", [](const std::string& name) { return ComboAddress(name); });
- g_lua.writeFunction("newNMG", []() { return NetmaskGroup(); });
- g_lua.registerFunction<void(NetmaskGroup::*)(const ComboAddress&)>("add",
- [](NetmaskGroup& s, const ComboAddress& ca) { s.addMask(Netmask(ca)); });
-
- g_lua.writeFunction("setDynBlockNMG", [](const NetmaskGroup& nmg) {
+ g_lua.writeFunction("newNMG", []() { return nmts_t(); });
+ g_lua.registerFunction<void(nmts_t::*)(const ComboAddress&, const std::string&)>("add",
+ [](nmts_t& s, const ComboAddress& ca, const std::string& msg)
+ {
+ s.insert(Netmask(ca)).second=msg;
+ });
+
+ g_lua.writeFunction("setDynBlockNMG", [](const nmts_t& nmg) {
g_dynblockNMG.setState(nmg);
});
- g_lua.registerFunction<void(NetmaskGroup::*)(const map<ComboAddress,int>&)>("add",
- [](NetmaskGroup& s, const map<ComboAddress,int>& m) {
+ g_lua.writeFunction("showDynBlocks", []() {
+ auto slow = g_dynblockNMG.getCopy();
+ for(const auto& e: slow) {
+ g_outputBuffer+=e->first.toString()+"\t"+e->second+"\n";
+ }
+ });
+
+ g_lua.registerFunction<void(nmts_t::*)(const map<ComboAddress,int>&, const std::string&)>("add",
+ [](nmts_t& s, const map<ComboAddress,int>& m, const std::string& msg) {
for(const auto& capair : m)
- s.addMask(Netmask(capair.first));
+ s.insert(Netmask(capair.first)).second=msg;
});
- g_lua.registerFunction<bool(NetmaskGroup::*)(const ComboAddress&)>("match",
- [](NetmaskGroup& s, const ComboAddress& ca) { return s.match(ca); });
+ g_lua.registerFunction<bool(nmts_t::*)(const ComboAddress&)>("match",
+ [](nmts_t& s, const ComboAddress& ca) { return s.match(ca); });
g_lua.writeFunction("exceedServfails", [](unsigned int rate, int seconds) {
return exceedRCode(rate, seconds, RCode::ServFail);