X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=blobdiff_plain;f=libubus.h;h=c89182980295c81ccf19db49adeb7ed2bdd4c1e9;hp=08dac49d2e74c2906e68897ca5b856ff5404df99;hb=e3815962c184b92f5e592ec6b7298898a113371f;hpb=6c0fa3a8cf9690b2c787f3b8941202e3d2501592 diff --git a/libubus.h b/libubus.h index 08dac49..c891829 100644 --- a/libubus.h +++ b/libubus.h @@ -66,32 +66,44 @@ typedef void (*ubus_connect_handler_t)(struct ubus_context *ctx); .methods = _methods \ } -#define __UBUS_METHOD_NOARG(_name, _handler) \ +#define __UBUS_METHOD_NOARG(_name, _handler, _tags) \ .name = _name, \ - .handler = _handler + .handler = _handler, \ + .tags = _tags -#define __UBUS_METHOD(_name, _handler, _policy) \ - __UBUS_METHOD_NOARG(_name, _handler), \ +#define __UBUS_METHOD(_name, _handler, _policy, _tags) \ + __UBUS_METHOD_NOARG(_name, _handler, _tags), \ .policy = _policy, \ .n_policy = ARRAY_SIZE(_policy) #define UBUS_METHOD(_name, _handler, _policy) \ - { __UBUS_METHOD(_name, _handler, _policy) } + { __UBUS_METHOD(_name, _handler, _policy, 0) } + +#define UBUS_METHOD_TAG(_name, _handler, _policy, _tags)\ + { __UBUS_METHOD(_name, _handler, _policy, _tags) } #define UBUS_METHOD_MASK(_name, _handler, _policy, _mask) \ { \ - __UBUS_METHOD(_name, _handler, _policy),\ + __UBUS_METHOD(_name, _handler, _policy, 0),\ .mask = _mask \ } #define UBUS_METHOD_NOARG(_name, _handler) \ - { __UBUS_METHOD_NOARG(_name, _handler) } + { __UBUS_METHOD_NOARG(_name, _handler, 0) } + +#define UBUS_METHOD_TAG_NOARG(_name, _handler, _tags) \ + { __UBUS_METHOD_NOARG(_name, _handler, _tags) } + +#define UBUS_TAG_STATUS BIT(0) +#define UBUS_TAG_ADMIN BIT(1) +#define UBUS_TAG_PRIVATE BIT(2) struct ubus_method { const char *name; ubus_handler_t handler; unsigned long mask; + unsigned long tags; const struct blobmsg_policy *policy; int n_policy; };