+void ubus_watch_new(struct ubus_object *obj, struct ubus_object *target, const char *method)
+{
+ struct ubus_watch *w;
+
+ w = calloc(1, sizeof(*w) + strlen(method) + 1);
+ if (!w)
+ return;
+
+ w->watcher = obj;
+ w->watched = target;
+ list_add(&w->watcher_list, &target->watchers);
+ list_add(&w->watched_list, &obj->watched);
+ strcpy(w->method, method);
+}
+
+void ubus_watch_free(struct ubus_watch *w)
+{
+ list_del(&w->watcher_list);
+ list_del(&w->watched_list);
+ free(w);
+}
+