Initial import
[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