add functionality for registering anonymous objects as event listeners
[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 #define UBUS_SYSTEM_OBJECT_EVENT 1
12 #define UBUS_SYSTEM_OBJECT_MAX 1024
13
14 struct ubus_msghdr {
15 uint8_t version;
16 uint8_t type;
17 uint16_t seq;
18 uint32_t peer;
19 struct blob_attr data[];
20 } __packetdata;
21
22 enum ubus_msg_type {
23 /* initial server message */
24 UBUS_MSG_HELLO,
25
26 /* generic command response */
27 UBUS_MSG_STATUS,
28
29 /* data message response */
30 UBUS_MSG_DATA,
31
32 /* ping request */
33 UBUS_MSG_PING,
34
35 /* look up one or more objects */
36 UBUS_MSG_LOOKUP,
37
38 /* invoke a method on a single object */
39 UBUS_MSG_INVOKE,
40
41 /* publish an object */
42 UBUS_MSG_PUBLISH,
43
44 /* must be last */
45 __UBUS_MSG_LAST,
46 };
47
48 enum ubus_msg_attr {
49 UBUS_ATTR_UNSPEC,
50
51 UBUS_ATTR_STATUS,
52
53 UBUS_ATTR_OBJPATH,
54 UBUS_ATTR_OBJID,
55 UBUS_ATTR_METHOD,
56
57 UBUS_ATTR_OBJTYPE,
58 UBUS_ATTR_SIGNATURE,
59
60 UBUS_ATTR_DATA,
61
62 /* must be last */
63 UBUS_ATTR_MAX,
64 };
65
66 enum ubus_msg_status {
67 UBUS_STATUS_OK,
68 UBUS_STATUS_INVALID_COMMAND,
69 UBUS_STATUS_INVALID_ARGUMENT,
70 UBUS_STATUS_METHOD_NOT_FOUND,
71 UBUS_STATUS_NOT_FOUND,
72 UBUS_STATUS_NO_DATA,
73 UBUS_STATUS_PERMISSION_DENIED,
74 __UBUS_STATUS_LAST
75 };
76
77 #endif