9da330e5287b749ec7b56f46549ff1572d64a194
[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_LAST
74 };
75
76 #endif