⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connection.h

📁 SecuDe是一个由安全应用程序接口组成,对验证机制、证件处理、PEM、X.400报文处理和密钥管理提供支持。SecuDe提供DES、 RSA杂凑函数、密钥生成以及数字签名的生成和核实等多种密码机制。
💻 H
字号:
/* connection.h - directory internal structures *//* * $Header: /xtel/isode/isode/h/quipu/RCS/connection.h,v 9.0 1992/06/16 12:23:11 isode Rel $ * * * $Log: connection.h,v $ * Revision 9.0  1992/06/16  12:23:11  isode * Release 8.0 * *//* *				  NOTICE * *    Acquisition, use, and distribution of this module and related *    materials are subject to the restrictions of a license agreement. *    Consult the Preface in the User's Manual for the full terms of *    this agreement. * */#ifndef QUIPUCON#define QUIPUCON#include "quipu/common.h"#include "quipu/dsargument.h"#include "quipu/dsap.h"#define DSA_PRIO_LOW            1#define DSA_PRIO_MED            2#define DSA_PRIO_HIGH           3#define DSA_MAX_PRIO            3extern int max_conns;#define MAX_CONNS		max_conns	/* Maximum concurrent connections */#define CONNS_RESERVED_DI	2	/* Reserved for Get DSA Info ops */#define CONNS_RESERVED_X500	10	/* Reserved for normal operations *//**  If the connection definitions are altered bear in mind that *  MAX_CONNS - CONNS_RESERVED_FOR_DI - CONNS_RESERVED_FOR_X500*  must be at least 1 to allow get edb ops to happen, and should*  probably be at least 2 to allow one get edb operation to block.*//**  The following structures form the basis of the connection mesh*  which is central to the scheduling of the DSA.*//**  The di_block structure is used to generate lists of dsa information*  blocks even when the information is not yet available.*  There are 3 states which a di_block can be in:*	DI_ACCESSPOINT:	di_block contains access point only.*	DI_COMPLETE:	di_block contains entry for dsa.*	DI_DEFERRED:	di_block is waiting for a dsa entry.**  The links in this structure need to be handled with care!!*  di_next is used to link the "di_block"s on*	1) the global list if that is where this block is kept*	2) the requesting operation if that is where this block is kept*	3) the requesting task if that is where this block is kept**  di_wake_next is used to link the "di_block"s for the performing*  operation, so that it is obvious what needs to be alerted.**  di_task points to the task to be alerted from type DI_TASK*  di_oper points to the operation to be alerted from type DI_OPERATION*  di_perform points to the operation performing the get dsa info operation*/struct di_block{	DN	  di_dn;	/* Name of dsa this block refers to */	char	  di_type;	/* Global list, operation list or task list */#define DI_GLOBAL	1	/* deferred_dis lists this block */#define DI_OPERATION	2	/* di_oper lists this block */#define DI_TASK		3	/* di_task lists this block */	char	  di_state;	/* How the dsa information is formed */#define DI_COMPLETE	1	/* di_entry filled out */#define DI_ACCESSPOINT	2	/* di_accesspoints filled out */#define DI_DEFERRED	3	/* di_perform still generating di_entry */	struct task_act		* di_task;	struct oper_act		* di_oper;/**  The following are needed to generate chaining arguments from DSAInformation*  in the case of chaining (DI_OPERATION); and to generate continuation*  references in the case of referring (DI_TASK). Not present for DI_GLOBAL*/	DN			  di_target;	int			  di_reftype;	int			  di_rdn_resolved;	int			  di_aliasedRDNs;	struct access_point	* di_accesspoints;	Entry			  di_entry;	struct oper_act		* di_perform;	struct di_block		* di_wake_next;	/* List of blocks to wake */	struct di_block		* di_next;	/* List of blocks */};#define NULL_DI_BLOCK	((struct di_block *) NULL)/** Operations received over a bound association are represented as a* linked list of task blocks. The following task block structure * contains the invocation (including decoded argument) received,* representations of the progress of the task and fields to be* used for generating the response.*/struct task_act{	int			  tk_prio;	char			  tk_state;#define TK_ACTIVE		  1	/* Task ready to have work done */#define TK_PASSIVE		  2	/* Task waiting for operation */#define TK_SUSPEND		  3	/* Giving the network a chance */	char			  tk_timed;	time_t			  tk_timeout;	struct DSAPinvoke	  tk_dx;	struct di_block		* tk_dsas;	/* di_blocks for referral */	struct DSAPindication	  tk_resp;	struct ds_op_res	* tk_result;	struct DSError		* tk_error;	/* Specific additions to provide multi-subtask search implementation */	struct ds_search_task	* local_st;	struct ds_search_task	* refer_st;	struct ds_search_task	* referred_st;	struct oper_act		* tk_operlist;	struct task_act		* tk_next;	struct connection	* tk_conn;};#define NULLTASK ((struct task_act *) NULL)struct oper_act{	int                       on_id;	char                      on_state;#define ON_DEFERRED		  1	/* Waiting for DSA INFO */#define ON_CHAINED		  2	/* Waiting for a response */#define ON_COMPLETE		  3	/* Waiting to be used by task */#define ON_ABANDONED		  4	/* Waiting for response - no task */	char                      on_type;#define ON_TYPE_X500		  1#define ON_TYPE_BIND_COMPARE	  2#define ON_TYPE_GET_DSA_INFO	  3#define ON_TYPE_GET_EDB		  4#define ON_TYPE_SUBTASK		  5#define ON_TYPE_SHADOW		  6/* Specific to ON_TYPE_X500 */	struct task_act         *on_task;		/* Task to wake *//* Specific to ON_TYPE_BIND_COMPARE */	struct connection	*on_bind_compare;	/* Bind to wake *//* Specific to ON_TYPE_GET_DSA_INFO */	struct di_block		* on_wake_list;		/* di_blocks to wake *//* Specific to ON_TYPE_GET_EDB */	Entry			  on_getedb_eptr;	/* previous entry */	char			* on_getedb_ver;	/* previous version */	char                    on_relay;       /* if TRUE try Relay DSA *//* Specific to ON_TYPE_SUBTASK */	struct ds_search_task	* on_subtask;	struct di_block		* on_dsas;	/* DSAInfos for chaining */	struct ds_op_arg        on_req;		/* Argument stuff */	struct ds_op_arg	*on_arg;	struct DSAPindication	  on_resp;	/* Response stuff */	struct oper_act         *on_next_conn;	struct oper_act         *on_next_task;	struct connection       *on_conn;};#define NULLOPER ((struct oper_act *) NULL)struct conn_start{	/* Values stored after call to TNetAccept */	int			  cs_vecp;	char 			* cs_vec[4];	char			* cs_svec[4];	/* Value extracted from above by conn_init() */	struct DSAPstart          cs_ds;	/* Operation carrying out compare for binding */	struct oper_act 	* cs_bind_compare;	/* Result or error generated for response */	struct ds_bind_arg	  cs_res;	struct ds_bind_error	  cs_err;};struct conn_connect{	/* Bind argument used in conn_request() */	struct ds_bind_arg              cc_req;	struct DSAPconnect		cc_dc;};/** Conn is the structure used to represent external connections*/struct connection{	char			  cn_state;/* State of the connection */#define CN_INDICATED		  1#define CN_WAITING		  2#define CN_CONNECTING1		  3#define CN_CONNECTING2		  4#define CN_OPEN			  5#define CN_FAILED		  6#define CN_CLOSING		  7#define CN_OPENING		  8#define CN_PRE_OPENING		  9	char			  cn_ctx; /* DS_CTX_* values defined in dsap.h for use by decoders */	char			  cn_initiator;	/* TRUE: this DSA is initiator, FALSE: this DSA is responder */	/* Information used during initialisation of the connection */        union        {		struct conn_start	cn_start_un_start;	/* responder */		struct conn_connect	cn_start_un_connect;	/* initiator */	} cn_start_un;#define cn_start	cn_start_un.cn_start_un_start#define cn_connect	cn_start_un.cn_start_un_connect/*	struct ds_bind_arg	* cn_res;	struct ds_bind_error		* cn_err;	struct init_activity	  cn_init_act;	struct oper_act 	* cn_bind_compare;*/        time_t			  cn_last_used;/* Time at which this connection was last used */        time_t			  cn_last_release;/* Time at which this connection release was last attempted */	DN			  cn_dn;/* Name of the entity at the far end of the connection */	struct PSAPaddr           cn_addr;/* Address of the entity at the far end of the connection */	int                       cn_ad;/* Descriptor identifying the association on which the connection is based *//*	int			  cn_context_id;*//* Context identifier of context to be used for user-data. */	int                       cn_op_id;/* Used to ensure unique invoke id's are used when invoking operations. */	struct task_act		* cn_tasklist;/* List of tasks received over this connection. */	struct oper_act		* cn_operlist;/* List of operations sent over this connection. */	struct connection       * cn_next;/* Rest of list of connections. */	int 			cn_authen;/* Takes a value from bind.h -> level to which the association is authenticated */};#define NULLCONN ((struct connection *) NULL)/**  Global variables are nasty but useful. Here the external definitions*  for the most crucial are given:*	a handle on the connections being processed*	info describing how this DSA wants the lower layers parameterised*	a handle on current deferred get dsa info operations*	a handle on current get_edb operations*/extern struct connection	* connlist;     /* Connection blocks */extern int			  conns_used;	/* No. conns in connlist */extern struct connection	* connwaitlist; /* Connection blocks to be */extern struct di_block		* deferred_dis;	/* deferred di_blocks */extern struct oper_act		* get_edb_ops;	/* GET_EDB operations */extern struct PSAPaddr		* mydsaaddr;	/* PSAP of this DSA */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -