+ service_load("/tmp/run/mdns/*");
+
+ blob_for_each_attr(cur, msg, rem) {
+ struct blob_attr *cur2;
+ int rem2;
+
+ blobmsg_for_each_attr(cur2, cur, rem2) {
+ struct blob_attr *cur3;
+ int rem3;
+
+ if (strcmp(blobmsg_name(cur2), "instances"))
+ continue;
+
+ blobmsg_for_each_attr(cur3, cur2, rem3) {
+ struct blob_attr *cur4;
+ int rem4;
+ int running = 0;
+
+ blobmsg_for_each_attr(cur4, cur3, rem4) {
+ const char *name = blobmsg_name(cur4);
+
+ if (!strcmp(name, "running")) {
+ running = blobmsg_get_bool(cur4);
+ } else if (running && !strcmp(name, "data")) {
+ struct blob_attr *cur5;
+ int rem5;
+
+ blobmsg_for_each_attr(cur5, cur4, rem5) {
+ struct blob_attr *cur6;
+ int rem6;
+
+ if (strcmp(blobmsg_name(cur5), "mdns"))
+ continue;
+
+ blobmsg_for_each_attr(cur6, cur5, rem6)
+ service_load_blob(cur6);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }