Allow overriding of ubus service name.
Same as for the dbus, allow specifying ubus service name (namespace) on
the command line as an optional argument to --enable-ubus option.
Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index 8ce0e68..3d01655 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -366,10 +366,13 @@
provides service at that name, rather than the default which is
.B uk.org.thekelleys.dnsmasq
.TP
-.B --enable-ubus
+.B --enable-ubus[=<service-name>]
Enable dnsmasq UBus interface. It sends notifications via UBus on
DHCPACK and DHCPRELEASE events. Furthermore it offers metrics.
-Requires that dnsmasq has been built with UBus support.
+Requires that dnsmasq has been built with UBus support. If the service
+name is given, dnsmasq provides service at that namespace, rather than
+the default which is
+.B dnsmasq
.TP
.B \-o, --strict-order
By default, dnsmasq will send queries to any of the upstream servers
diff --git a/src/config.h b/src/config.h
index b002560..7d08f7d 100644
--- a/src/config.h
+++ b/src/config.h
@@ -50,6 +50,7 @@
#define RANDFILE "/dev/urandom"
#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq" /* Default - may be overridden by config */
#define DNSMASQ_PATH "/uk/org/thekelleys/dnsmasq"
+#define DNSMASQ_UBUS_NAME "dnsmasq" /* Default - may be overridden by config */
#define AUTH_TTL 600 /* default TTL for auth DNS */
#define SOA_REFRESH 1200 /* SOA refresh default */
#define SOA_RETRY 180 /* SOA retry default */
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index f747868..b47ef74 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -1063,6 +1063,7 @@
unsigned int duid_enterprise, duid_config_len;
unsigned char *duid_config;
char *dbus_name;
+ char *ubus_name;
char *dump_file;
int dump_mask;
unsigned long soa_sn, soa_refresh, soa_retry, soa_expiry;
diff --git a/src/option.c b/src/option.c
index 9ffd7fc..1f698da 100644
--- a/src/option.c
+++ b/src/option.c
@@ -238,7 +238,7 @@
{ "caa-record", 1, 0 , LOPT_CAA },
{ "dns-rr", 1, 0, LOPT_RR },
{ "enable-dbus", 2, 0, '1' },
- { "enable-ubus", 0, 0, LOPT_UBUS },
+ { "enable-ubus", 2, 0, LOPT_UBUS },
{ "bootp-dynamic", 2, 0, '3' },
{ "dhcp-mac", 1, 0, '4' },
{ "no-ping", 0, 0, '5' },
@@ -428,7 +428,7 @@
{ 'z', OPT_NOWILD, NULL, gettext_noop("Bind only to interfaces in use."), NULL },
{ 'Z', OPT_ETHERS, NULL, gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
{ '1', ARG_ONE, "[=<busname>]", gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
- { LOPT_UBUS, OPT_UBUS, NULL, gettext_noop("Enable the UBus interface."), NULL },
+ { LOPT_UBUS, ARG_ONE, "[=<busname>]", gettext_noop("Enable the UBus interface."), NULL },
{ '2', ARG_DUP, "<interface>", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
{ '3', ARG_DUP, "[=tag:<tag>]...", gettext_noop("Enable dynamic address allocation for bootp."), NULL },
{ '4', ARG_DUP, "set:<tag>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
@@ -1881,7 +1881,15 @@
else
daemon->dbus_name = DNSMASQ_SERVICE;
break;
-
+
+ case LOPT_UBUS: /* --enable-ubus */
+ set_option_bool(OPT_UBUS);
+ if (arg)
+ daemon->ubus_name = opt_string_alloc(arg);
+ else
+ daemon->ubus_name = DNSMASQ_UBUS_NAME;
+ break;
+
case '8': /* --log-facility */
/* may be a filename */
if (strchr(arg, '/') || strcmp (arg, "-") == 0)
diff --git a/src/ubus.c b/src/ubus.c
index c7f6b19..5f81287 100644
--- a/src/ubus.c
+++ b/src/ubus.c
@@ -38,7 +38,7 @@
UBUS_OBJECT_TYPE("dnsmasq", ubus_object_methods);
static struct ubus_object ubus_object = {
- .name = "dnsmasq",
+ .name = NULL,
.type = &ubus_object_type,
.methods = ubus_object_methods,
.n_methods = ARRAY_SIZE(ubus_object_methods),
@@ -94,6 +94,7 @@
return;
}
+ ubus_object.name = daemon->ubus_name;
ret = ubus_add_object(ubus, &ubus_object);
if (ret)
{