X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=libubus.h;h=a63ce31a7ca0d3b4a13473f4cce3a6702c884e32;hb=996e16b2cb79ae3e46742285ee2728f3a166b42a;hp=ad2db0c5b55e9df6821cb3fc5df75de26578e24e;hpb=2c71017cfb1d370abd1b52b3f59874e253914684;p=project%2Fubus.git diff --git a/libubus.h b/libubus.h index ad2db0c..a63ce31 100644 --- a/libubus.h +++ b/libubus.h @@ -34,10 +34,16 @@ struct ubus_event_handler; struct ubus_subscriber; struct ubus_notify_request; +struct ubus_msghdr_buf { + struct ubus_msghdr hdr; + struct blob_attr *data; +}; + static inline struct blob_attr * ubus_msghdr_data(struct ubus_msghdr *hdr) { - return (struct blob_attr *) (hdr + 1); + struct ubus_msghdr_buf *hdrbuf = container_of(hdr, typeof(*hdrbuf), hdr); + return hdrbuf->data; } typedef void (*ubus_lookup_handler_t)(struct ubus_context *ctx, @@ -140,6 +146,7 @@ struct ubus_context { struct list_head pending; struct uloop_fd sock; + struct uloop_timeout pending_timer; uint32_t local_id; uint16_t request_seq; @@ -147,10 +154,9 @@ struct ubus_context { void (*connection_lost)(struct ubus_context *ctx); - struct { - struct ubus_msghdr hdr; - char data[UBUS_MAX_MSGLEN]; - } msgbuf; + struct ubus_msghdr_buf msgbuf; + uint32_t msgbuf_data_len; + int msgbuf_reduction_counter; }; struct ubus_object_data {