1 /* 2 * rpcd - UBUS RPC server 3 * 4 * Copyright (C) 2013 Felix Fietkau <nbd@openwrt.org> 5 * Copyright (C) 2013-2014 Jo-Philipp Wich <jow@openwrt.org> 6 * 7 * Permission to use, copy, modify, and/or distribute this software for any 8 * purpose with or without fee is hereby granted, provided that the above 9 * copyright notice and this permission notice appear in all copies. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 #ifndef __RPC_SESSION_H 21 #define __RPC_SESSION_H 22 23 #include <ctype.h> 24 #include <fcntl.h> 25 #include <dirent.h> 26 #include <unistd.h> 27 #include <sys/stat.h> 28 #include <sys/types.h> 29 30 #include <libubox/avl.h> 31 #include <libubox/blobmsg_json.h> 32 33 #define RPC_SID_LEN 32 34 #define RPC_DEFAULT_SESSION_TIMEOUT 300 35 #define RPC_DEFAULT_SESSION_ID "00000000000000000000000000000000" 36 #define RPC_SESSION_DIRECTORY "/var/run/rpcd/sessions" 37 #define RPC_SESSION_ACL_DIR INSTALL_PREFIX "/share/rpcd/acl.d" 38 39 extern char apply_sid[RPC_SID_LEN + 1]; 40 41 struct rpc_session { 42 struct avl_node avl; 43 char id[RPC_SID_LEN + 1]; 44 45 struct uloop_timeout t; 46 struct avl_tree data; 47 struct avl_tree acls; 48 49 int timeout; 50 }; 51 52 struct rpc_session_data { 53 struct avl_node avl; 54 struct blob_attr attr[]; 55 }; 56 57 struct rpc_session_acl_scope { 58 struct avl_node avl; 59 struct avl_tree acls; 60 }; 61 62 struct rpc_session_acl { 63 struct avl_node avl; 64 const char *object; 65 const char *function; 66 int sort_len; 67 }; 68 69 int rpc_session_api_init(struct ubus_context *ctx); 70 71 bool rpc_session_access(const char *sid, const char *scope, 72 const char *object, const char *function); 73 74 struct rpc_session_cb { 75 struct list_head list; 76 void (*cb)(struct rpc_session *, void *); 77 void *priv; 78 }; 79 80 void rpc_session_create_cb(struct rpc_session_cb *cb); 81 void rpc_session_destroy_cb(struct rpc_session_cb *cb); 82 83 void rpc_session_freeze(void); 84 void rpc_session_thaw(void); 85 86 #endif 87
This page was automatically generated by LXR 0.3.1. • OpenWrt