#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 {
uint8_t type;
uint16_t seq;
uint32_t peer;
- struct blob_attr data[];
} __packetdata;
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,
};
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,
UBUS_STATUS_PERMISSION_DENIED,
UBUS_STATUS_TIMEOUT,
UBUS_STATUS_NOT_SUPPORTED,
+ UBUS_STATUS_UNKNOWN_ERROR,
+ UBUS_STATUS_CONNECTION_FAILED,
+ UBUS_STATUS_NO_MEMORY,
+ UBUS_STATUS_PARSE_ERROR,
+ UBUS_STATUS_SYSTEM_ERROR,
__UBUS_STATUS_LAST
};