From: Jo-Philipp Wich Date: Wed, 4 Sep 2013 10:46:11 +0000 (+0200) Subject: Move includes into subdirectory X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e0afdb10ae879d26d7f81d1dba8d47978a9a2aa9;p=oweals%2Frpcd.git Move includes into subdirectory --- diff --git a/CMakeLists.txt b/CMakeLists.txt index f448a72..cbdf743 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.6) PROJECT(rpcd C) -ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations) +ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations -Iinclude) OPTION(FILE_SUPPORT "File plugin support" ON) OPTION(LUCI2_SUPPORT "LuCI2 plugin support" ON) diff --git a/exec.c b/exec.c index c03e450..a5f6561 100644 --- a/exec.c +++ b/exec.c @@ -26,7 +26,7 @@ #include #include -#include "exec.h" +#include static int rpc_errno_status(void) diff --git a/exec.h b/exec.h deleted file mode 100644 index 05ba3ca..0000000 --- a/exec.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * rpcd - UBUS RPC server - * - * Copyright (C) 2013 Jo-Philipp Wich - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef __RPC_EXEC_H -#define __RPC_EXEC_H - -#include -#include -#include - -#define RPC_EXEC_MAX_SIZE (4096 * 64) -#define RPC_EXEC_MAX_RUNTIME (30 * 1000) - -#define ustream_for_each_read_buffer(stream, ptr, len) \ - for (ptr = ustream_get_read_buf(stream, &len); \ - ptr != NULL && len > 0; \ - ustream_consume(stream, len), ptr = ustream_get_read_buf(stream, &len)) - -#define ustream_declare_read(us, fd, name) \ - do { \ - us.stream.string_data = true; \ - us.stream.r.buffer_len = 4096; \ - us.stream.r.max_buffers = RPC_EXEC_MAX_SIZE / 4096; \ - us.stream.notify_read = rpc_exec_##name##_read_cb; \ - us.stream.notify_state = rpc_exec_##name##_state_cb; \ - ustream_fd_init(&us, fd); \ - } while(0) - -#define ustream_declare_write(us, fd, name) \ - do { \ - us.stream.string_data = true; \ - us.stream.w.buffer_len = 4096; \ - us.stream.w.max_buffers = RPC_EXEC_MAX_SIZE / 4096; \ - us.stream.notify_write = rpc_exec_##name##_write_cb; \ - ustream_fd_init(&us, fd); \ - } while(0) - - -typedef int (*rpc_exec_write_cb_t)(struct ustream *, void *); -typedef int (*rpc_exec_read_cb_t)(struct blob_buf *, char *, int, void *); -typedef int (*rpc_exec_done_cb_t)(struct blob_buf *, int, void *); - -struct rpc_exec_context { - struct ubus_context *context; - struct ubus_request_data request; - struct uloop_timeout timeout; - struct uloop_process process; - struct ustream_fd ipipe; - struct ustream_fd opipe; - struct ustream_fd epipe; - int outlen; - char *out; - int errlen; - char *err; - int stat; - void *priv; - bool blob_array; - void *blob_cookie; - struct blob_buf blob; - rpc_exec_write_cb_t stdin_cb; - rpc_exec_read_cb_t stdout_cb; - rpc_exec_read_cb_t stderr_cb; - rpc_exec_done_cb_t finish_cb; -}; - -int rpc_exec(const char **args, rpc_exec_write_cb_t in, - rpc_exec_read_cb_t out, rpc_exec_read_cb_t err, - rpc_exec_done_cb_t end, void *priv, struct ubus_context *ctx, - struct ubus_request_data *req); - -#endif diff --git a/file.c b/file.c index b1cfe99..4a8a5c8 100644 --- a/file.c +++ b/file.c @@ -29,7 +29,7 @@ #include #include -#include "plugin.h" +#include /* limit of sys & proc files */ #define RPC_FILE_MIN_SIZE (128) diff --git a/include/rpcd/exec.h b/include/rpcd/exec.h new file mode 100644 index 0000000..05ba3ca --- /dev/null +++ b/include/rpcd/exec.h @@ -0,0 +1,86 @@ +/* + * rpcd - UBUS RPC server + * + * Copyright (C) 2013 Jo-Philipp Wich + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef __RPC_EXEC_H +#define __RPC_EXEC_H + +#include +#include +#include + +#define RPC_EXEC_MAX_SIZE (4096 * 64) +#define RPC_EXEC_MAX_RUNTIME (30 * 1000) + +#define ustream_for_each_read_buffer(stream, ptr, len) \ + for (ptr = ustream_get_read_buf(stream, &len); \ + ptr != NULL && len > 0; \ + ustream_consume(stream, len), ptr = ustream_get_read_buf(stream, &len)) + +#define ustream_declare_read(us, fd, name) \ + do { \ + us.stream.string_data = true; \ + us.stream.r.buffer_len = 4096; \ + us.stream.r.max_buffers = RPC_EXEC_MAX_SIZE / 4096; \ + us.stream.notify_read = rpc_exec_##name##_read_cb; \ + us.stream.notify_state = rpc_exec_##name##_state_cb; \ + ustream_fd_init(&us, fd); \ + } while(0) + +#define ustream_declare_write(us, fd, name) \ + do { \ + us.stream.string_data = true; \ + us.stream.w.buffer_len = 4096; \ + us.stream.w.max_buffers = RPC_EXEC_MAX_SIZE / 4096; \ + us.stream.notify_write = rpc_exec_##name##_write_cb; \ + ustream_fd_init(&us, fd); \ + } while(0) + + +typedef int (*rpc_exec_write_cb_t)(struct ustream *, void *); +typedef int (*rpc_exec_read_cb_t)(struct blob_buf *, char *, int, void *); +typedef int (*rpc_exec_done_cb_t)(struct blob_buf *, int, void *); + +struct rpc_exec_context { + struct ubus_context *context; + struct ubus_request_data request; + struct uloop_timeout timeout; + struct uloop_process process; + struct ustream_fd ipipe; + struct ustream_fd opipe; + struct ustream_fd epipe; + int outlen; + char *out; + int errlen; + char *err; + int stat; + void *priv; + bool blob_array; + void *blob_cookie; + struct blob_buf blob; + rpc_exec_write_cb_t stdin_cb; + rpc_exec_read_cb_t stdout_cb; + rpc_exec_read_cb_t stderr_cb; + rpc_exec_done_cb_t finish_cb; +}; + +int rpc_exec(const char **args, rpc_exec_write_cb_t in, + rpc_exec_read_cb_t out, rpc_exec_read_cb_t err, + rpc_exec_done_cb_t end, void *priv, struct ubus_context *ctx, + struct ubus_request_data *req); + +#endif diff --git a/include/rpcd/plugin.h b/include/rpcd/plugin.h new file mode 100644 index 0000000..6b3d244 --- /dev/null +++ b/include/rpcd/plugin.h @@ -0,0 +1,65 @@ +/* + * rpcd - UBUS RPC server + * + * Copyright (C) 2013 Jo-Philipp Wich + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef __RPC_PLUGIN_H +#define __RPC_PLUGIN_H + +#define _GNU_SOURCE /* asprintf() */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "exec.h" +#include "session.h" + +/* location of plugin executables */ +#define RPC_PLUGIN_DIRECTORY "/usr/libexec/rpcd" + +/* location of plugin libraries */ +#define RPC_LIBRARY_DIRECTORY "/usr/lib/rpcd" + +struct rpc_daemon_ops { + bool (*session_access)(const char *sid, const char *scope, + const char *object, const char *function); + void (*session_create_cb)(struct rpc_session_cb *cb); + void (*session_destroy_cb)(struct rpc_session_cb *cb); + int (*exec)(const char **args, + rpc_exec_write_cb_t in, rpc_exec_read_cb_t out, + rpc_exec_read_cb_t err, rpc_exec_done_cb_t end, + void *priv, struct ubus_context *ctx, + struct ubus_request_data *req); +}; + +struct rpc_plugin { + struct list_head list; + int (*init)(const struct rpc_daemon_ops *ops, struct ubus_context *ctx); +}; + +int rpc_plugin_api_init(struct ubus_context *ctx); + +#endif diff --git a/include/rpcd/session.h b/include/rpcd/session.h new file mode 100644 index 0000000..59b2864 --- /dev/null +++ b/include/rpcd/session.h @@ -0,0 +1,71 @@ +/* + * rpcd - UBUS RPC server + * + * Copyright (C) 2013 Felix Fietkau + * Copyright (C) 2013 Jo-Philipp Wich + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef __RPC_SESSION_H +#define __RPC_SESSION_H + +#include +#include + +#define RPC_SID_LEN 32 +#define RPC_DEFAULT_SESSION_TIMEOUT 300 + +struct rpc_session { + struct avl_node avl; + char id[RPC_SID_LEN + 1]; + + struct uloop_timeout t; + struct avl_tree data; + struct avl_tree acls; + + int timeout; +}; + +struct rpc_session_data { + struct avl_node avl; + struct blob_attr attr[]; +}; + +struct rpc_session_acl_scope { + struct avl_node avl; + struct avl_tree acls; +}; + +struct rpc_session_acl { + struct avl_node avl; + const char *object; + const char *function; + int sort_len; +}; + +int rpc_session_api_init(struct ubus_context *ctx); + +bool rpc_session_access(const char *sid, const char *scope, + const char *object, const char *function); + +struct rpc_session_cb { + struct list_head list; + void (*cb)(struct rpc_session *, void *); + void *priv; +}; + +void rpc_session_create_cb(struct rpc_session_cb *cb); +void rpc_session_destroy_cb(struct rpc_session_cb *cb); + +#endif diff --git a/include/rpcd/uci.h b/include/rpcd/uci.h new file mode 100644 index 0000000..a4f79e2 --- /dev/null +++ b/include/rpcd/uci.h @@ -0,0 +1,35 @@ +/* + * rpcd - UBUS RPC server + * + * Copyright (C) 2013 Jo-Philipp Wich + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef __RPC_UCI_H +#define __RPC_UCI_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +int rpc_uci_api_init(struct ubus_context *ctx); + +#endif diff --git a/iwinfo.c b/iwinfo.c index 78f4485..3faf662 100644 --- a/iwinfo.c +++ b/iwinfo.c @@ -22,7 +22,7 @@ #include #include -#include "plugin.h" +#include static struct blob_buf buf; diff --git a/luci2.c b/luci2.c index 50381a2..f136c56 100644 --- a/luci2.c +++ b/luci2.c @@ -34,7 +34,7 @@ #include #include -#include "plugin.h" +#include /* limit of log size buffer */ #define RPC_LUCI2_MAX_LOGSIZE (128 * 1024) diff --git a/main.c b/main.c index efaa114..7335780 100644 --- a/main.c +++ b/main.c @@ -23,9 +23,9 @@ #include #include -#include "session.h" -#include "uci.h" -#include "plugin.h" +#include +#include +#include static struct ubus_context *ctx; diff --git a/plugin.c b/plugin.c index afc1383..2d5b6c1 100644 --- a/plugin.c +++ b/plugin.c @@ -16,7 +16,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "plugin.h" +#include static struct blob_buf buf; diff --git a/plugin.h b/plugin.h deleted file mode 100644 index 6b3d244..0000000 --- a/plugin.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * rpcd - UBUS RPC server - * - * Copyright (C) 2013 Jo-Philipp Wich - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef __RPC_PLUGIN_H -#define __RPC_PLUGIN_H - -#define _GNU_SOURCE /* asprintf() */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "exec.h" -#include "session.h" - -/* location of plugin executables */ -#define RPC_PLUGIN_DIRECTORY "/usr/libexec/rpcd" - -/* location of plugin libraries */ -#define RPC_LIBRARY_DIRECTORY "/usr/lib/rpcd" - -struct rpc_daemon_ops { - bool (*session_access)(const char *sid, const char *scope, - const char *object, const char *function); - void (*session_create_cb)(struct rpc_session_cb *cb); - void (*session_destroy_cb)(struct rpc_session_cb *cb); - int (*exec)(const char **args, - rpc_exec_write_cb_t in, rpc_exec_read_cb_t out, - rpc_exec_read_cb_t err, rpc_exec_done_cb_t end, - void *priv, struct ubus_context *ctx, - struct ubus_request_data *req); -}; - -struct rpc_plugin { - struct list_head list; - int (*init)(const struct rpc_daemon_ops *ops, struct ubus_context *ctx); -}; - -int rpc_plugin_api_init(struct ubus_context *ctx); - -#endif diff --git a/session.c b/session.c index 6cc4ffe..c8da5a4 100644 --- a/session.c +++ b/session.c @@ -22,7 +22,7 @@ #include #include -#include "session.h" +#include static struct avl_tree sessions; static struct blob_buf buf; diff --git a/session.h b/session.h deleted file mode 100644 index 59b2864..0000000 --- a/session.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * rpcd - UBUS RPC server - * - * Copyright (C) 2013 Felix Fietkau - * Copyright (C) 2013 Jo-Philipp Wich - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef __RPC_SESSION_H -#define __RPC_SESSION_H - -#include -#include - -#define RPC_SID_LEN 32 -#define RPC_DEFAULT_SESSION_TIMEOUT 300 - -struct rpc_session { - struct avl_node avl; - char id[RPC_SID_LEN + 1]; - - struct uloop_timeout t; - struct avl_tree data; - struct avl_tree acls; - - int timeout; -}; - -struct rpc_session_data { - struct avl_node avl; - struct blob_attr attr[]; -}; - -struct rpc_session_acl_scope { - struct avl_node avl; - struct avl_tree acls; -}; - -struct rpc_session_acl { - struct avl_node avl; - const char *object; - const char *function; - int sort_len; -}; - -int rpc_session_api_init(struct ubus_context *ctx); - -bool rpc_session_access(const char *sid, const char *scope, - const char *object, const char *function); - -struct rpc_session_cb { - struct list_head list; - void (*cb)(struct rpc_session *, void *); - void *priv; -}; - -void rpc_session_create_cb(struct rpc_session_cb *cb); -void rpc_session_destroy_cb(struct rpc_session_cb *cb); - -#endif diff --git a/uci.c b/uci.c index 34c6830..3fd187d 100644 --- a/uci.c +++ b/uci.c @@ -16,8 +16,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "uci.h" -#include "session.h" +#include +#include static struct blob_buf buf; static struct uci_context *cursor; diff --git a/uci.h b/uci.h deleted file mode 100644 index a4f79e2..0000000 --- a/uci.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * rpcd - UBUS RPC server - * - * Copyright (C) 2013 Jo-Philipp Wich - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef __RPC_UCI_H -#define __RPC_UCI_H - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -int rpc_uci_api_init(struct ubus_context *ctx); - -#endif