add optional tags to the ubus methos struct and the wrapper macros
authorJohn Crispin <blogic@openwrt.org>
Mon, 13 Apr 2015 15:21:21 +0000 (17:21 +0200)
committerJohn Crispin <blogic@openwrt.org>
Thu, 18 Jun 2015 17:01:17 +0000 (19:01 +0200)
Signed-off-by: John Crispin <blogic@openwrt.org>
libubus.h

index 08dac49d2e74c2906e68897ca5b856ff5404df99..c89182980295c81ccf19db49adeb7ed2bdd4c1e9 100644 (file)
--- 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;
 };