Re: [Dnsmasq-discuss] [PATCH 1/1] Allow overriding of ubus service name.

2020-04-01 Thread Oldřich Jedlička
Great, thanks :-)

Oldrich.

so 28. 3. 2020 v 20:23 odesílatel Simon Kelley 
napsal:

> Patch applied, thanks.
>
>
> Simon.
>
>
> On 20/03/2020 21:18, Oldřich Jedlička wrote:
> > 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 
> > ---
> >  man/dnsmasq.8 |  7 +--
> >  src/config.h  |  1 +
> >  src/dnsmasq.h |  1 +
> >  src/option.c  | 14 +++---
> >  src/ubus.c|  3 ++-
> >  5 files changed, 20 insertions(+), 6 deletions(-)
> >
> > diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
> > index 2032a37..034e3cf 100644
> > --- a/man/dnsmasq.8
> > +++ b/man/dnsmasq.8
> > @@ -366,10 +366,13 @@ been built with DBus support. If the service name
> is given, dnsmasq
> >  provides service at that name, rather than the default which is
> >  .B uk.org.thekelleys.dnsmasq
> >  .TP
> > -.B --enable-ubus
> > +.B --enable-ubus[=]
> >  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 @@ extern struct daemon {
> >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 @@ static const struct myoption opts[] =
> >  { "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 @@ static struct {
> >{ '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, "[=]", 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, "[=]", gettext_noop("Enable the UBus
> interface."), NULL },
> >{ '2', ARG_DUP, "", gettext_noop("Do not provide DHCP on
> this interface, only provide DNS."), NULL },
> >{ '3', ARG_DUP, "[=tag:]...", gettext_noop("Enable dynamic
> address allocation for bootp."), NULL },
> >{ '4', ARG_DUP, "set:,", gettext_noop("Map MAC
> address (with wildcards) to option set."), NULL },
> > @@ -1881,7 +1881,15 @@ static int one_opt(int option, char *arg, char
> *errstr, char *gen_err, int comma
> >else
> >   daemon->dbus_name = DNSMASQ_SERVICE;
> >break;
> > -
> > +
> > +case LOPT_UBUS: /* --enable-ubus */
> > +  set_option_bool(OP

[Dnsmasq-discuss] [PATCH 1/1] Allow overriding of ubus service name.

2020-03-20 Thread Oldřich Jedlička
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 
---
 man/dnsmasq.8 |  7 +--
 src/config.h  |  1 +
 src/dnsmasq.h |  1 +
 src/option.c  | 14 +++---
 src/ubus.c|  3 ++-
 5 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index 2032a37..034e3cf 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -366,10 +366,13 @@ been built with DBus support. If the service name is 
given, dnsmasq
 provides service at that name, rather than the default which is 
 .B uk.org.thekelleys.dnsmasq
 .TP 
-.B --enable-ubus
+.B --enable-ubus[=]
 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 @@ extern struct daemon {
   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 @@ static const struct myoption opts[] =
 { "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 @@ static struct {
   { '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, "[=]", 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, "[=]", gettext_noop("Enable the UBus 
interface."), NULL },
   { '2', ARG_DUP, "", gettext_noop("Do not provide DHCP on this 
interface, only provide DNS."), NULL },
   { '3', ARG_DUP, "[=tag:]...", gettext_noop("Enable dynamic address 
allocation for bootp."), NULL },
   { '4', ARG_DUP, "set:,", gettext_noop("Map MAC address 
(with wildcards) to option set."), NULL },
@@ -1881,7 +1881,15 @@ static int one_opt(int option, char *arg, char *errstr, 
char *gen_err, int comma
   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 @@ static struct ubus_object_type ubus_object_type =
   UBUS_OBJECT_TYPE("dnsmasq", ubus_object_methods);
 
 static struct ubus_object ubus_object = {
-  .name = "dnsmasq",
+  .name = NULL,
   .type = _object_type,
   .methods = ubus_object_methods,
   .n_methods = ARRAY_SIZE(ubus_object_methods),
@@ -94,6 +94,7 @@ void ubus_init()
   return;
 }
 
+  ubus_object.name = daemon->ubus_name;
   ret = ubus_add_object(ubus, _object);
   if (ret)
 {
-- 
2.17.1


___
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss


[Dnsmasq-discuss] [PATCH 0/1] Allow overriding of ubus service name

2020-03-20 Thread Oldřich Jedlička
Hi,

Another patch, now adding option to specify the name of ubus service
visible by a call to `ubus list`. This is useful when you have more than
one dnsmasq instances running -- the ubus service name has to be unique
for each instance, otherwise `ubus_add_object` fails. With this patch,
it is possible to change the registered name, like for the D-Bus case.

Tested on OpenWrt.

Regards,
Oldrich.

Oldřich Jedlička (1):
  Allow overriding of ubus service name.

 man/dnsmasq.8 |  7 +--
 src/config.h  |  1 +
 src/dnsmasq.h |  1 +
 src/option.c  | 14 +++---
 src/ubus.c|  3 ++-
 5 files changed, 20 insertions(+), 6 deletions(-)

-- 
2.17.1


___
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss


[Dnsmasq-discuss] [PATCH 0/1] Fix resource leak on ubus_init failure.

2020-03-18 Thread Oldřich Jedlička
Hi,

This is my first patch here. I discovered one resource leak in ubus_init, when
ubus_add_object fails - the ubus connection stays open. I added a patch, see
follow-up email. (Hopefully git send-email sends it.)

Regards,
Oldrich.

Oldřich Jedlička (1):
  Fixed resource leak on ubus_init failure.

 src/ubus.c | 1 +
 1 file changed, 1 insertion(+)

-- 
2.17.1


___
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss


[Dnsmasq-discuss] [PATCH 1/1] Fixed resource leak on ubus_init failure.

2020-03-18 Thread Oldřich Jedlička
When ubus_add_object fails, the ubus_connect object is not freed, so the
connection leaks. Add ubus_destroy to free the connection object.

Signed-off-by: Oldřich Jedlička 
---
 src/ubus.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/ubus.c b/src/ubus.c
index 79e2563..c7f6b19 100644
--- a/src/ubus.c
+++ b/src/ubus.c
@@ -102,6 +102,7 @@ void ubus_init()
   my_syslog(LOG_ERR, _("Cannot add object to UBus: %s"), 
ubus_strerror(ret));
   error_logged = 1;
 }
+  ubus_destroy(ubus);
   return;
 }
 
-- 
2.17.1


___
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss