X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=blobdiff_plain;f=libubus-req.c;h=88a54530220f6524d8d9060314cb8ea29db49007;hp=74286c03e38b15ffb71ad5d801eb69a4b117c2d6;hb=22246585804a2f6546a329a9e626598a82feb554;hpb=1579969983b4c54a4f454bfcc6df720cb829ade3;ds=sidebyside diff --git a/libubus-req.c b/libubus-req.c index 74286c0..88a5453 100644 --- a/libubus-req.c +++ b/libubus-req.c @@ -48,6 +48,22 @@ static void __ubus_process_req_data(struct ubus_request *req) } } +int __hidden ubus_start_request(struct ubus_context *ctx, struct ubus_request *req, + struct blob_attr *msg, int cmd, uint32_t peer) +{ + memset(req, 0, sizeof(*req)); + + if (msg && blob_pad_len(msg) > UBUS_MAX_MSGLEN) + return -1; + + INIT_LIST_HEAD(&req->list); + INIT_LIST_HEAD(&req->pending); + req->ctx = ctx; + req->peer = peer; + req->seq = ++ctx->request_seq; + return ubus_send_msg(ctx, req->seq, msg, cmd, peer); +} + void ubus_abort_request(struct ubus_context *ctx, struct ubus_request *req) { if (!list_empty(&req->list))