From: MagicBear Date: Tue, 22 Dec 2015 15:10:33 +0000 (+0800) Subject: luabackend: edns-subnet support X-Git-Tag: dnsdist-1.0.0-alpha1~29^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F3082%2Fhead;p=thirdparty%2Fpdns.git luabackend: edns-subnet support --- diff --git a/modules/luabackend/lua_functions.cc b/modules/luabackend/lua_functions.cc index a8d3f8dbc9..816bcac6dc 100644 --- a/modules/luabackend/lua_functions.cc +++ b/modules/luabackend/lua_functions.cc @@ -111,8 +111,9 @@ int l_dnspacket (lua_State *lua) { lua_pushstring(lua, lb->dnspacket->getRemote().c_str()); lua_pushnumber(lua, lb->dnspacket->getRemotePort()); lua_pushstring(lua, lb->dnspacket->getLocal().c_str()); + lua_pushstring(lua, lb->dnspacket->getRealRemote().toString().c_str()); - return 3; + return 4; } int l_logger (lua_State *lua) { @@ -307,6 +308,22 @@ bool LUABackend::getValueFromTable(lua_State *lua, const std::string& key, uint1 return ret; } +bool LUABackend::getValueFromTable(lua_State *lua, const std::string& key, uint8_t& value) { + lua_pushstring(lua, key.c_str()); + lua_gettable(lua, -2); + + bool ret = false; + + if(!lua_isnil(lua, -1)) { + value = (uint8_t)lua_tonumber(lua, -1); + ret = true; + } + + lua_pop(lua, 1); + + return ret; +} + bool LUABackend::getValueFromTable(lua_State *lua, const std::string& key, int& value) { lua_pushstring(lua, key.c_str()); lua_gettable(lua, -2); diff --git a/modules/luabackend/luabackend.hh b/modules/luabackend/luabackend.hh index 0a90553e3c..1b2a380451 100644 --- a/modules/luabackend/luabackend.hh +++ b/modules/luabackend/luabackend.hh @@ -160,6 +160,7 @@ private: #endif bool getValueFromTable(lua_State *lua, const std::string& key, uint32_t& value); bool getValueFromTable(lua_State *lua, const std::string& key, uint16_t& value); + bool getValueFromTable(lua_State *lua, const std::string& key, uint8_t& value); bool getValueFromTable(lua_State *lua, const std::string& key, int& value); bool getValueFromTable(lua_State *lua, const std::string& key, bool& value); diff --git a/modules/luabackend/minimal.cc b/modules/luabackend/minimal.cc index a2a1abb511..ec09913776 100644 --- a/modules/luabackend/minimal.cc +++ b/modules/luabackend/minimal.cc @@ -157,6 +157,7 @@ bool LUABackend::get(DNSResourceRecord &rr) { rr.ttl = ::arg().asNum( "default-ttl" ); getValueFromTable(lua, "content", rr.content); + getValueFromTable(lua, "scopeMask", rr.scopeMask); lua_pop(lua, 1 );