diff --git a/package/gluon-radv-filterd/src/respondd.c b/package/gluon-radv-filterd/src/respondd.c index 1e0aa128..7e65a3d9 100644 --- a/package/gluon-radv-filterd/src/respondd.c +++ b/package/gluon-radv-filterd/src/respondd.c @@ -12,7 +12,7 @@ static struct json_object * get_radv_filter() { char *line = NULL; size_t len = 0; struct ether_addr mac = {}; - struct json_object *ret = NULL; + struct ether_addr unspec = {}; char macstr[F_MAC_LEN + 1] = ""; if (!f) @@ -26,17 +26,19 @@ static struct json_object * get_radv_filter() { pclose(f); - snprintf(macstr, sizeof(macstr), F_MAC, F_MAC_VAR(mac)); - ret = gluonutil_wrap_string(macstr); - return ret; + memset(&unspec, 0, sizeof(unspec)); + if (ether_addr_equal(mac, unspec)) { + return NULL; + } else { + snprintf(macstr, sizeof(macstr), F_MAC, F_MAC_VAR(mac)); + return gluonutil_wrap_string(macstr); + } } static struct json_object * respondd_provider_statistics() { struct json_object *ret = json_object_new_object(); - struct json_object *radv_filter = get_radv_filter(); - if (radv_filter) - json_object_object_add(ret, "gateway6", radv_filter); + json_object_object_add(ret, "gateway6", get_radv_filter()); return ret; }