X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=blobdiff_plain;f=ubusmsg.h;h=d3d29284d70d59b4616705ccdcade0741ab40b08;hp=e62a39328aaf174037509da3785e77ea6a4e19a9;hb=e59b44573423ad608d0752b46a6073222db9ed45;hpb=dbd4c2f121be08e514828f2533687b145a6e16dd diff --git a/ubusmsg.h b/ubusmsg.h index e62a393..d3d2928 100644 --- a/ubusmsg.h +++ b/ubusmsg.h @@ -1,3 +1,16 @@ +/* + * Copyright (C) 2011 Felix Fietkau + * + * 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,14 +19,17 @@ #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_ACL 2 +#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 { @@ -35,8 +51,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, @@ -55,6 +86,15 @@ 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, @@ -64,8 +104,14 @@ enum ubus_msg_status { 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 };