#include "dolog.hh"
#include "xsk.hh"
+#include <variant>
void setupLuaBindingsLogging(LuaContext& luaCtx)
{
/* DNSName */
luaCtx.registerFunction("isPartOf", &DNSName::isPartOf);
luaCtx.registerFunction<bool (DNSName::*)()>("chopOff", [](DNSName& name) { return name.chopOff(); });
+ luaCtx.registerFunction<void (DNSName::*)(const std::variant<DNSName, std::string>&)>("append", [](DNSName& name, const std::variant<DNSName, std::string>& labels) {
+ if (std::holds_alternative<DNSName>(labels)) {
+ name += std::get<DNSName>(labels);
+ }
+ if (std::holds_alternative<string>(labels)) {
+ name += DNSName(std::get<std::string>(labels));
+ }
+ });
+ luaCtx.registerFunction<void (DNSName::*)(const std::variant<DNSName, std::string>&)>("prepend", [](DNSName& name, const std::variant<DNSName, std::string>& labels) {
+ if (std::holds_alternative<DNSName>(labels)) {
+ name = std::get<DNSName>(labels) + name;
+ }
+ if (std::holds_alternative<string>(labels)) {
+ name = DNSName(std::get<std::string>(labels)) + name;
+ }
+ });
luaCtx.registerFunction<unsigned int (DNSName::*)() const>("countLabels", [](const DNSName& name) { return name.countLabels(); });
luaCtx.registerFunction<size_t (DNSName::*)() const>("hash", [](const DNSName& name) { return name.hash(); });
luaCtx.registerFunction<size_t (DNSName::*)() const>("wirelength", [](const DNSName& name) { return name.wirelength(); });
.. method:: DNSName:wirelength() -> int
Returns the length in bytes of the DNSName as it would be on the wire.
+
+ .. method:: DNSName:append(labels: [DNSName,string])
+
+ .. versionadded:: 2.2.0
+
+ Append ``labels`` to the DNSName. ``labels`` can be a string or DNSName containing one or more labels.
+
+ .. codeblock:: lua
+ local n = newDNSName("example.com")
+ n:append("example") -- n is now "example.com.example"
+ local other_name = newDNSName("foobar.invalid")
+ n:append(other_name) -- n is now "example.com.example.foobar.invalid")
+
+ .. method:: DNSName:prepend(labels: [DNSName,string])
+
+ .. versionadded:: 2.2.0
+
+ Prepend ``labels`` to the DNSName. ``labels`` can be a string or DNSName containing one or more labels.
"""
configTemplate = "blablabla"
self.tryDNSDist(configTemplate, False)
+
+ def testDNSNameLuaFuncs(self):
+ """
+ CheckConfig: DNSName related functions
+ """
+ configTemplate = """
+ local myName = newDNSName("foo")
+ myName:prepend("bar")
+ if myName:toString() ~= "bar.foo." then
+ print("DNSName:prepend(string) failed")
+ os.exit(1)
+ end
+ myName:prepend(newDNSName("baz"))
+ if myName:toString() ~= "baz.bar.foo." then
+ print("DNSName:prepend(DNSName) failed")
+ os.exit(1)
+ end
+ myName:append("bar")
+ if myName:toString() ~= "baz.bar.foo.bar." then
+ print("DNSName:append(string) failed")
+ os.exit(1)
+ end
+ myName:append(newDNSName("baz"))
+ if myName:toString() ~= "baz.bar.foo.bar.baz." then
+ print("DNSName:append(DNSName) failed")
+ os.exit(1)
+ end
+ """
+ self.tryDNSDist(configTemplate)