• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/rpcd/include/rpcd/session.h

  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