mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-09 16:20:55 +00:00
GetLoopServers Dbus method.
This commit is contained in:
1 parent
40766e55e8
commit
aaeea9f6ed
2 files changed
+43
No files matched your search
@@ -160,6 +160,15 @@ for SetServersEx is represented as
|
|||||||
"/eng.mycorp.com/lab.mycorp.com/1003:1234:abcd::1%eth0"
|
"/eng.mycorp.com/lab.mycorp.com/1003:1234:abcd::1%eth0"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
GetLoopServers
|
||||||
|
--------------
|
||||||
|
|
||||||
|
(Only available if dnsmasq compiled with HAVE_LOOP)
|
||||||
|
|
||||||
|
Return an array of strings, each string is the IP address of an upstream
|
||||||
|
server which has been found to loop queries back to this dnsmasq instance, and
|
||||||
|
it therefore not being used.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2. SIGNALS
|
2. SIGNALS
|
||||||
|
|||||||
+34
@@ -35,6 +35,11 @@ const char* introspection_xml_template =
|
|||||||
" <method name=\"GetVersion\">\n"
|
" <method name=\"GetVersion\">\n"
|
||||||
" <arg name=\"version\" direction=\"out\" type=\"s\"/>\n"
|
" <arg name=\"version\" direction=\"out\" type=\"s\"/>\n"
|
||||||
" </method>\n"
|
" </method>\n"
|
||||||
|
#ifdef HAVE_LOOP
|
||||||
|
" <method name=\"GetLoopServers\">\n"
|
||||||
|
" <arg name=\"server\" direction=\"out\" type=\"as\"/>\n"
|
||||||
|
" </method>\n"
|
||||||
|
#endif
|
||||||
" <method name=\"SetServers\">\n"
|
" <method name=\"SetServers\">\n"
|
||||||
" <arg name=\"servers\" direction=\"in\" type=\"av\"/>\n"
|
" <arg name=\"servers\" direction=\"in\" type=\"av\"/>\n"
|
||||||
" </method>\n"
|
" </method>\n"
|
||||||
@@ -205,6 +210,29 @@ static void dbus_read_servers(DBusMessage *message)
|
|||||||
cleanup_servers();
|
cleanup_servers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LOOP
|
||||||
|
static DBusMessage *dbus_reply_server_loop(DBusMessage *message)
|
||||||
|
{
|
||||||
|
DBusMessageIter args, args_iter;
|
||||||
|
struct server *serv;
|
||||||
|
DBusMessage *reply = dbus_message_new_method_return(message);
|
||||||
|
|
||||||
|
dbus_message_iter_init_append (reply, &args);
|
||||||
|
dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY,DBUS_TYPE_STRING_AS_STRING, &args_iter);
|
||||||
|
|
||||||
|
for (serv = daemon->servers; serv; serv = serv->next)
|
||||||
|
if (serv->flags & SERV_LOOP)
|
||||||
|
{
|
||||||
|
prettyprint_addr(&serv->addr, daemon->addrbuff);
|
||||||
|
dbus_message_iter_append_basic (&args_iter, DBUS_TYPE_STRING, &daemon->addrbuff);
|
||||||
|
}
|
||||||
|
|
||||||
|
dbus_message_iter_close_container (&args, &args_iter);
|
||||||
|
|
||||||
|
return reply;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static DBusMessage* dbus_read_servers_ex(DBusMessage *message, int strings)
|
static DBusMessage* dbus_read_servers_ex(DBusMessage *message, int strings)
|
||||||
{
|
{
|
||||||
DBusMessageIter iter, array_iter, string_iter;
|
DBusMessageIter iter, array_iter, string_iter;
|
||||||
@@ -433,6 +461,12 @@ DBusHandlerResult message_handler(DBusConnection *connection,
|
|||||||
|
|
||||||
dbus_message_append_args(reply, DBUS_TYPE_STRING, &v, DBUS_TYPE_INVALID);
|
dbus_message_append_args(reply, DBUS_TYPE_STRING, &v, DBUS_TYPE_INVALID);
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_LOOP
|
||||||
|
else if (strcmp(method, "GetLoopServers") == 0)
|
||||||
|
{
|
||||||
|
reply = dbus_reply_server_loop(message);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else if (strcmp(method, "SetServers") == 0)
|
else if (strcmp(method, "SetServers") == 0)
|
||||||
{
|
{
|
||||||
dbus_read_servers(message);
|
dbus_read_servers(message);
|
||||||
|
|||||||
Reference in new issue
Block a user