+/*
+ * 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
#define __packetdata __attribute__((packed)) __attribute__((__aligned__(4)))
-#define UBUS_MAX_MSGLEN 65535
+#define UBUS_MSG_CHUNK_SIZE 65536
+
+#define UBUS_SYSTEM_OBJECT_EVENT 1
+#define UBUS_SYSTEM_OBJECT_MAX 1024
struct ubus_msghdr {
uint8_t version;
uint8_t type;
uint16_t seq;
uint32_t peer;
- struct blob_attr data[];
} __packetdata;
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,
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,
UBUS_STATUS_OK,
UBUS_STATUS_INVALID_COMMAND,
UBUS_STATUS_INVALID_ARGUMENT,
+ UBUS_STATUS_METHOD_NOT_FOUND,
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
};