libubus: keep objects in an avl tree
[project/ubus.git] / ubusmsg.h
1 #ifndef __UBUSMSG_H
2 #define __UBUSMSG_H
3
4 #include <stdint.h>
5 #include <libubox/blob.h>
6
7 #define __packetdata __attribute__((packed)) __attribute__((__aligned__(4)))
8
9 #define UBUS_MAX_MSGLEN 65535
10
11 struct ubus_msghdr {
12         uint8_t version;
13         uint8_t type;
14         uint16_t seq;
15         uint32_t peer;
16         struct blob_attr data[];
17 } __packetdata;
18
19 enum ubus_msg_type {
20         /* initial server message */
21         UBUS_MSG_HELLO,
22
23         /* generic command response */
24         UBUS_MSG_STATUS,
25
26         /* data message response */
27         UBUS_MSG_DATA,
28
29         /* ping request */
30         UBUS_MSG_PING,
31
32         /* look up one or more objects */
33         UBUS_MSG_LOOKUP,
34
35         /* invoke a method on a single object */
36         UBUS_MSG_INVOKE,
37
38         /* publish an object */
39         UBUS_MSG_PUBLISH,
40
41         /* must be last */
42         __UBUS_MSG_LAST,
43 };
44
45 enum ubus_msg_attr {
46         UBUS_ATTR_UNSPEC,
47
48         UBUS_ATTR_STATUS,
49
50         UBUS_ATTR_OBJPATH,
51         UBUS_ATTR_OBJID,
52         UBUS_ATTR_METHOD,
53
54         UBUS_ATTR_OBJTYPE,
55         UBUS_ATTR_SIGNATURE,
56
57         UBUS_ATTR_DATA,
58
59         /* must be last */
60         UBUS_ATTR_MAX,
61 };
62
63 enum ubus_msg_status {
64         UBUS_STATUS_OK,
65         UBUS_STATUS_INVALID_COMMAND,
66         UBUS_STATUS_INVALID_ARGUMENT,
67         UBUS_STATUS_NOT_FOUND,
68         UBUS_STATUS_NO_DATA,
69         __UBUS_STATUS_LAST
70 };
71
72 #endif