X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=libubus.h;h=ad2db0c5b55e9df6821cb3fc5df75de26578e24e;hb=2c71017cfb1d370abd1b52b3f59874e253914684;hp=60d9bb6cac67849b8a03698dacf53e66afc49122;hpb=47a9ab0c645d4d49def8080ae68c7c477e733530;p=project%2Fubus.git diff --git a/libubus.h b/libubus.h index 60d9bb6..ad2db0c 100644 --- a/libubus.h +++ b/libubus.h @@ -67,24 +67,32 @@ typedef void (*ubus_connect_handler_t)(struct ubus_context *ctx); .methods = _methods \ } +#define __UBUS_METHOD_NOARG(_name, _handler) \ + .name = _name, \ + .handler = _handler + +#define __UBUS_METHOD(_name, _handler, _policy) \ + __UBUS_METHOD_NOARG(_name, _handler), \ + .policy = _policy, \ + .n_policy = ARRAY_SIZE(_policy) + #define UBUS_METHOD(_name, _handler, _policy) \ + { __UBUS_METHOD(_name, _handler, _policy) } + +#define UBUS_METHOD_MASK(_name, _handler, _policy, _mask) \ { \ - .name = _name, \ - .handler = _handler, \ - .policy = _policy, \ - .n_policy = ARRAY_SIZE(_policy) \ + __UBUS_METHOD(_name, _handler, _policy),\ + .mask = _mask \ } #define UBUS_METHOD_NOARG(_name, _handler) \ - { \ - .name = _name, \ - .handler = _handler, \ - } + { __UBUS_METHOD_NOARG(_name, _handler) } struct ubus_method { const char *name; ubus_handler_t handler; + unsigned long mask; const struct blobmsg_policy *policy; int n_policy; };