ubus: Correct usage of timeout on poll function
[project/ubus.git] / ubusmsg.h
1 /*
2  * Copyright (C) 2011 Felix Fietkau <nbd@openwrt.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License version 2.1
6  * as published by the Free Software Foundation
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  */
13
14 #ifndef __UBUSMSG_H
15 #define __UBUSMSG_H
16
17 #include <stdint.h>
18 #include <libubox/blob.h>
19
20 #define __packetdata __attribute__((packed)) __attribute__((__aligned__(4)))
21
22 #define UBUS_MSG_CHUNK_SIZE     65536
23
24 #define UBUS_SYSTEM_OBJECT_EVENT        1
25 #define UBUS_SYSTEM_OBJECT_ACL          2
26 #define UBUS_SYSTEM_OBJECT_MONITOR      3
27 #define UBUS_SYSTEM_OBJECT_MAX          1024
28
29 struct ubus_msghdr {
30         uint8_t version;
31         uint8_t type;
32         uint16_t seq;
33         uint32_t peer;
34 } __packetdata;
35
36 enum ubus_msg_type {
37         /* initial server message */
38         UBUS_MSG_HELLO,
39
40         /* generic command response */
41         UBUS_MSG_STATUS,
42
43         /* data message response */
44         UBUS_MSG_DATA,
45
46         /* ping request */
47         UBUS_MSG_PING,
48
49         /* look up one or more objects */
50         UBUS_MSG_LOOKUP,
51
52         /* invoke a method on a single object */
53         UBUS_MSG_INVOKE,
54
55         UBUS_MSG_ADD_OBJECT,
56         UBUS_MSG_REMOVE_OBJECT,
57
58         /*
59          * subscribe/unsubscribe to object notifications
60          * The unsubscribe message is sent from ubusd when
61          * the object disappears
62          */
63         UBUS_MSG_SUBSCRIBE,
64         UBUS_MSG_UNSUBSCRIBE,
65
66         /*
67          * send a notification to all subscribers of an object.
68          * when sent from the server, it indicates a subscription
69          * status change
70          */
71         UBUS_MSG_NOTIFY,
72
73         UBUS_MSG_MONITOR,
74
75         /* must be last */
76         __UBUS_MSG_LAST,
77 };
78
79 enum ubus_msg_attr {
80         UBUS_ATTR_UNSPEC,
81
82         UBUS_ATTR_STATUS,
83
84         UBUS_ATTR_OBJPATH,
85         UBUS_ATTR_OBJID,
86         UBUS_ATTR_METHOD,
87
88         UBUS_ATTR_OBJTYPE,
89         UBUS_ATTR_SIGNATURE,
90
91         UBUS_ATTR_DATA,
92         UBUS_ATTR_TARGET,
93
94         UBUS_ATTR_ACTIVE,
95         UBUS_ATTR_NO_REPLY,
96
97         UBUS_ATTR_SUBSCRIBERS,
98
99         UBUS_ATTR_USER,
100         UBUS_ATTR_GROUP,
101
102         /* must be last */
103         UBUS_ATTR_MAX,
104 };
105
106 enum ubus_monitor_attr {
107         UBUS_MONITOR_CLIENT,
108         UBUS_MONITOR_PEER,
109         UBUS_MONITOR_SEND,
110         UBUS_MONITOR_SEQ,
111         UBUS_MONITOR_TYPE,
112         UBUS_MONITOR_DATA,
113
114         /* must be last */
115         UBUS_MONITOR_MAX,
116 };
117
118 enum ubus_msg_status {
119         UBUS_STATUS_OK,
120         UBUS_STATUS_INVALID_COMMAND,
121         UBUS_STATUS_INVALID_ARGUMENT,
122         UBUS_STATUS_METHOD_NOT_FOUND,
123         UBUS_STATUS_NOT_FOUND,
124         UBUS_STATUS_NO_DATA,
125         UBUS_STATUS_PERMISSION_DENIED,
126         UBUS_STATUS_TIMEOUT,
127         UBUS_STATUS_NOT_SUPPORTED,
128         UBUS_STATUS_UNKNOWN_ERROR,
129         UBUS_STATUS_CONNECTION_FAILED,
130         __UBUS_STATUS_LAST
131 };
132
133 #endif