X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=blobdiff_plain;f=libubus.c;h=9e93aede871c71c65a52793093cde209714d2ba2;hp=5fdde30f6baca72d8d373f86bcb2e3797730b009;hb=8321f8c523c9bf5f476f9c5b06c955d0ce3a0f80;hpb=dbd4c2f121be08e514828f2533687b145a6e16dd diff --git a/libubus.c b/libubus.c index 5fdde30..9e93aed 100644 --- a/libubus.c +++ b/libubus.c @@ -314,6 +314,28 @@ skip: } } +void ubus_invoke_path_async(struct ubus_context *ctx, const char *path, const char *method, + struct blob_attr *msg, struct ubus_request *req) +{ + blob_buf_init(&b, 0); + blob_put_string(&b, UBUS_ATTR_OBJPATH, path); + blob_put_string(&b, UBUS_ATTR_METHOD, method); + blob_put(&b, UBUS_ATTR_DATA, blob_data(msg), blob_len(msg)); + + ubus_start_request(ctx, req, b.head, UBUS_MSG_INVOKE, 0); +} + +int ubus_invoke_path(struct ubus_context *ctx, const char *path, const char *method, + struct blob_attr *msg, ubus_data_handler_t cb, void *priv) +{ + struct ubus_request req; + + ubus_invoke_path_async(ctx, path, method, msg, &req); + req.data_cb = cb; + req.priv = priv; + return ubus_complete_request(ctx, &req); +} + void ubus_invoke_async(struct ubus_context *ctx, uint32_t obj, const char *method, struct blob_attr *msg, struct ubus_request *req) { @@ -322,7 +344,7 @@ void ubus_invoke_async(struct ubus_context *ctx, uint32_t obj, const char *metho blob_put_string(&b, UBUS_ATTR_METHOD, method); blob_put(&b, UBUS_ATTR_DATA, blob_data(msg), blob_len(msg)); - ubus_start_request(ctx, req, b.head, UBUS_MSG_INVOKE, obj); + ubus_start_request(ctx, req, b.head, UBUS_MSG_INVOKE, 0); } int ubus_invoke(struct ubus_context *ctx, uint32_t obj, const char *method,