ubusd: fix a memory leak on user/group client info
[project/ubus.git] / ubusmsg.h
index 794abc7..398b126 100644 (file)
--- a/ubusmsg.h
+++ b/ubusmsg.h
 
 #define __packetdata __attribute__((packed)) __attribute__((__aligned__(4)))
 
-#define UBUS_MAX_MSGLEN        65536
+#define UBUS_MSG_CHUNK_SIZE    65536
 
 #define UBUS_SYSTEM_OBJECT_EVENT       1
+#define UBUS_SYSTEM_OBJECT_ACL         2
+#define UBUS_SYSTEM_OBJECT_MONITOR     3
 #define UBUS_SYSTEM_OBJECT_MAX         1024
 
 struct ubus_msghdr {
@@ -29,7 +31,6 @@ struct ubus_msghdr {
        uint8_t type;
        uint16_t seq;
        uint32_t peer;
-       struct blob_attr data[];
 } __packetdata;
 
 enum ubus_msg_type {
@@ -54,6 +55,23 @@ enum ubus_msg_type {
        UBUS_MSG_ADD_OBJECT,
        UBUS_MSG_REMOVE_OBJECT,
 
+       /*
+        * subscribe/unsubscribe to object notifications
+        * The unsubscribe message is sent from ubusd when
+        * the object disappears
+        */
+       UBUS_MSG_SUBSCRIBE,
+       UBUS_MSG_UNSUBSCRIBE,
+
+       /*
+        * send a notification to all subscribers of an object.
+        * when sent from the server, it indicates a subscription
+        * status change
+        */
+       UBUS_MSG_NOTIFY,
+
+       UBUS_MSG_MONITOR,
+
        /* must be last */
        __UBUS_MSG_LAST,
 };
@@ -71,11 +89,32 @@ enum ubus_msg_attr {
        UBUS_ATTR_SIGNATURE,
 
        UBUS_ATTR_DATA,
+       UBUS_ATTR_TARGET,
+
+       UBUS_ATTR_ACTIVE,
+       UBUS_ATTR_NO_REPLY,
+
+       UBUS_ATTR_SUBSCRIBERS,
+
+       UBUS_ATTR_USER,
+       UBUS_ATTR_GROUP,
 
        /* must be last */
        UBUS_ATTR_MAX,
 };
 
+enum ubus_monitor_attr {
+       UBUS_MONITOR_CLIENT,
+       UBUS_MONITOR_PEER,
+       UBUS_MONITOR_SEND,
+       UBUS_MONITOR_SEQ,
+       UBUS_MONITOR_TYPE,
+       UBUS_MONITOR_DATA,
+
+       /* must be last */
+       UBUS_MONITOR_MAX,
+};
+
 enum ubus_msg_status {
        UBUS_STATUS_OK,
        UBUS_STATUS_INVALID_COMMAND,
@@ -86,6 +125,8 @@ enum ubus_msg_status {
        UBUS_STATUS_PERMISSION_DENIED,
        UBUS_STATUS_TIMEOUT,
        UBUS_STATUS_NOT_SUPPORTED,
+       UBUS_STATUS_UNKNOWN_ERROR,
+       UBUS_STATUS_CONNECTION_FAILED,
        __UBUS_STATUS_LAST
 };