dnsmasq: add interface to ubus notification

Signed-off-by: Borja Salazar <borja.salazar@fon.com>
v19.07.3_mercusys_ac12_duma
Borja Salazar 7 years ago committed by Hans Dedecker
parent e966ed236f
commit 759785c01a

@ -9,7 +9,7 @@
struct daemon *daemon; struct daemon *daemon;
static volatile pid_t pid = 0; static volatile pid_t pid = 0;
@@ -32,6 +34,62 @@ static void fatal_event(struct event_des @@ -32,6 +34,64 @@ static void fatal_event(struct event_des
static int read_event(int fd, struct event_desc *evp, char **msg); static int read_event(int fd, struct event_desc *evp, char **msg);
static void poll_resolv(int force, int do_reload, time_t now); static void poll_resolv(int force, int do_reload, time_t now);
@ -25,7 +25,7 @@
+ .type = &ubus_object_type, + .type = &ubus_object_type,
+}; +};
+ +
+void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name) +void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name, const char *interface)
+{ +{
+ if (!ubus || !ubus_object.has_subscribers) + if (!ubus || !ubus_object.has_subscribers)
+ return; + return;
@ -37,6 +37,8 @@
+ blobmsg_add_string(&b, "ip", ip); + blobmsg_add_string(&b, "ip", ip);
+ if (name) + if (name)
+ blobmsg_add_string(&b, "name", name); + blobmsg_add_string(&b, "name", name);
+ if (interface)
+ blobmsg_add_string(&b, "interface", interface);
+ ubus_notify(ubus, &ubus_object, type, b.head, -1); + ubus_notify(ubus, &ubus_object, type, b.head, -1);
+} +}
+ +
@ -106,7 +108,7 @@
# endif # endif
#endif #endif
+void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name); +void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name, const char *interface);
+ +
/* ipset.c */ /* ipset.c */
#ifdef HAVE_IPSET #ifdef HAVE_IPSET
@ -118,9 +120,9 @@
string ? string : "", string ? string : "",
err ? err : ""); err ? err : "");
+ if (!strcmp(type, "DHCPACK")) + if (!strcmp(type, "DHCPACK"))
+ ubus_event_bcast("dhcp.ack", daemon->namebuff, addr ? inet_ntoa(a) : NULL, string ? string : NULL); + ubus_event_bcast("dhcp.ack", daemon->namebuff, addr ? inet_ntoa(a) : NULL, string ? string : NULL, interface);
+ else if (!strcmp(type, "DHCPRELEASE")) + else if (!strcmp(type, "DHCPRELEASE"))
+ ubus_event_bcast("dhcp.release", daemon->namebuff, addr ? inet_ntoa(a) : NULL, string ? string : NULL); + ubus_event_bcast("dhcp.release", daemon->namebuff, addr ? inet_ntoa(a) : NULL, string ? string : NULL, interface);
} }
static void log_options(unsigned char *start, u32 xid) static void log_options(unsigned char *start, u32 xid)

Loading…
Cancel
Save