add Lua bindings for ubus events
[project/ubus.git] / ubusmsg.h
index 32cee6b..c9b92e7 100644 (file)
--- a/ubusmsg.h
+++ b/ubusmsg.h
@@ -1,3 +1,16 @@
+/*
+ * Copyright (C) 2011 Felix Fietkau <nbd@openwrt.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
 #ifndef __UBUSMSG_H
 #define __UBUSMSG_H
 
@@ -6,7 +19,7 @@
 
 #define __packetdata __attribute__((packed)) __attribute__((__aligned__(4)))
 
-#define UBUS_MAX_MSGLEN        65535
+#define UBUS_MAX_MSGLEN        65536
 
 #define UBUS_SYSTEM_OBJECT_EVENT       1
 #define UBUS_SYSTEM_OBJECT_MAX         1024
@@ -16,7 +29,6 @@ struct ubus_msghdr {
        uint8_t type;
        uint16_t seq;
        uint32_t peer;
-       struct blob_attr data[];
 } __packetdata;
 
 enum ubus_msg_type {
@@ -38,8 +50,23 @@ enum ubus_msg_type {
        /* invoke a method on a single object */
        UBUS_MSG_INVOKE,
 
-       /* publish an object */
-       UBUS_MSG_PUBLISH,
+       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,
 
        /* must be last */
        __UBUS_MSG_LAST,
@@ -58,6 +85,12 @@ enum ubus_msg_attr {
        UBUS_ATTR_SIGNATURE,
 
        UBUS_ATTR_DATA,
+       UBUS_ATTR_TARGET,
+
+       UBUS_ATTR_ACTIVE,
+       UBUS_ATTR_NO_REPLY,
+
+       UBUS_ATTR_SUBSCRIBERS,
 
        /* must be last */
        UBUS_ATTR_MAX,
@@ -71,6 +104,10 @@ enum ubus_msg_status {
        UBUS_STATUS_NOT_FOUND,
        UBUS_STATUS_NO_DATA,
        UBUS_STATUS_PERMISSION_DENIED,
+       UBUS_STATUS_TIMEOUT,
+       UBUS_STATUS_NOT_SUPPORTED,
+       UBUS_STATUS_UNKNOWN_ERROR,
+       UBUS_STATUS_CONNECTION_FAILED,
        __UBUS_STATUS_LAST
 };