2 * luci-rpcd - LuCI UBUS RPC server
4 * Copyright (C) 2013 Jo-Philipp Wich <jow@openwrt.org>
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 #ifndef __RPC_PLUGIN_H
20 #define __RPC_PLUGIN_H
22 #define _GNU_SOURCE /* asprintf() */
32 #include <sys/types.h>
34 #include <libubox/blobmsg_json.h>
40 /* location of plugin executables */
41 #define RPC_PLUGIN_DIRECTORY "/usr/libexec/luci-rpcd"
43 /* location of plugin libraries */
44 #define RPC_LIBRARY_DIRECTORY "/usr/lib/luci-rpcd"
46 struct rpc_daemon_ops {
47 bool (*access)(const char *sid, const char *scope,
48 const char *object, const char *function);
49 int (*exec)(const char **args,
50 rpc_exec_write_cb_t in, rpc_exec_read_cb_t out,
51 rpc_exec_read_cb_t err, rpc_exec_done_cb_t end,
52 void *priv, struct ubus_context *ctx,
53 struct ubus_request_data *req);
57 struct list_head list;
58 int (*init)(const struct rpc_daemon_ops *ops, struct ubus_context *ctx);
61 int rpc_plugin_api_init(struct ubus_context *ctx);