{"YXRRSET", RCode::YXRRSet },
{"NXRRSET", RCode::NXRRSet },
{"NOTAUTH", RCode::NotAuth },
- {"NOTZONE", RCode::NotZone }};
+ {"NOTZONE", RCode::NotZone },
+ {"DROP", -2 }}; // To give backport-incompatibilityy warning
for(const auto& rcode : rcodes)
d_pd.push_back({rcode.first, rcode.second});
features.emplace_back("PR8001_devicename", true);
}
+static void warnDrop(const RecursorLua4::DNSQuestion& dq)
+{
+ if (dq.rcode == -2) {
+ g_log << Logger::Error << "Returing -2 (pdns.DROP) is not supported anymore, see https://docs.powerdns.com/recursor/lua-scripting/hooks.html#hooksemantics" << endl;
+ // We *could* set policy here, but that would also mean interfering with rcode and the return code of the hook.
+ // So leave it at the error message.
+ }
+}
+
void RecursorLua4::maintenance() const
{
if (d_maintenance) {
et.add(RecEventTrace::LuaPreRPZ);
bool ok = genhook(d_prerpz, dq, ret);
et.add(RecEventTrace::LuaPreRPZ, ok, false);
+ warnDrop(dq);
return ok;
}
et.add(RecEventTrace::LuaPreResolve);
bool ok = genhook(d_preresolve, dq, ret);
et.add(RecEventTrace::LuaPreResolve, ok, false);
+ warnDrop(dq);
return ok;
}
et.add(RecEventTrace::LuaNXDomain);
bool ok = genhook(d_nxdomain, dq, ret);
et.add(RecEventTrace::LuaNXDomain, ok, false);
+ warnDrop(dq);
return ok;
}
et.add(RecEventTrace::LuaNoData);
bool ok = genhook(d_nodata, dq, ret);
et.add(RecEventTrace::LuaNoData, ok, false);
+ warnDrop(dq);
return ok;
}
et.add(RecEventTrace::LuaPostResolve);
bool ok = genhook(d_postresolve, dq, ret);
et.add(RecEventTrace::LuaPostResolve, ok, false);
+ warnDrop(dq);
return ok;
}
et.add(RecEventTrace::LuaPreOutQuery);
bool ok = genhook(d_preoutquery, dq, ret);
et.add(RecEventTrace::LuaPreOutQuery, ok, false);
+ warnDrop(dq);
return ok;
}