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

📄 ar-internal.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
 */struct rxkad_key {	u16	security_index;		/* RxRPC header security index */	u16	ticket_len;		/* length of ticket[] */	u32	expiry;			/* time at which expires */	u32	kvno;			/* key version number */	u8	session_key[8];		/* DES session key */	u8	ticket[0];		/* the encrypted ticket */};struct rxrpc_key_payload {	struct rxkad_key k;};/* * locally abort an RxRPC call */static inline void rxrpc_abort_call(struct rxrpc_call *call, u32 abort_code){	write_lock_bh(&call->state_lock);	if (call->state < RXRPC_CALL_COMPLETE) {		call->abort_code = abort_code;		call->state = RXRPC_CALL_LOCALLY_ABORTED;		set_bit(RXRPC_CALL_ABORT, &call->events);	}	write_unlock_bh(&call->state_lock);}/* * af_rxrpc.c */extern atomic_t rxrpc_n_skbs;extern __be32 rxrpc_epoch;extern atomic_t rxrpc_debug_id;extern struct workqueue_struct *rxrpc_workqueue;/* * ar-accept.c */extern void rxrpc_accept_incoming_calls(struct work_struct *);extern struct rxrpc_call *rxrpc_accept_call(struct rxrpc_sock *,					    unsigned long);extern int rxrpc_reject_call(struct rxrpc_sock *);/* * ar-ack.c */extern void __rxrpc_propose_ACK(struct rxrpc_call *, uint8_t, __be32, bool);extern void rxrpc_propose_ACK(struct rxrpc_call *, uint8_t, __be32, bool);extern void rxrpc_process_call(struct work_struct *);/* * ar-call.c */extern struct kmem_cache *rxrpc_call_jar;extern struct list_head rxrpc_calls;extern rwlock_t rxrpc_call_lock;extern struct rxrpc_call *rxrpc_get_client_call(struct rxrpc_sock *,						struct rxrpc_transport *,						struct rxrpc_conn_bundle *,						unsigned long, int, gfp_t);extern struct rxrpc_call *rxrpc_incoming_call(struct rxrpc_sock *,					      struct rxrpc_connection *,					      struct rxrpc_header *, gfp_t);extern struct rxrpc_call *rxrpc_find_server_call(struct rxrpc_sock *,						 unsigned long);extern void rxrpc_release_call(struct rxrpc_call *);extern void rxrpc_release_calls_on_socket(struct rxrpc_sock *);extern void __rxrpc_put_call(struct rxrpc_call *);extern void __exit rxrpc_destroy_all_calls(void);/* * ar-connection.c */extern struct list_head rxrpc_connections;extern rwlock_t rxrpc_connection_lock;extern struct rxrpc_conn_bundle *rxrpc_get_bundle(struct rxrpc_sock *,						  struct rxrpc_transport *,						  struct key *,						  __be16, gfp_t);extern void rxrpc_put_bundle(struct rxrpc_transport *,			     struct rxrpc_conn_bundle *);extern int rxrpc_connect_call(struct rxrpc_sock *, struct rxrpc_transport *,			      struct rxrpc_conn_bundle *, struct rxrpc_call *,			      gfp_t);extern void rxrpc_put_connection(struct rxrpc_connection *);extern void __exit rxrpc_destroy_all_connections(void);extern struct rxrpc_connection *rxrpc_find_connection(struct rxrpc_transport *,						      struct rxrpc_header *);extern struct rxrpc_connection *rxrpc_incoming_connection(struct rxrpc_transport *, struct rxrpc_header *,			  gfp_t);/* * ar-connevent.c */extern void rxrpc_process_connection(struct work_struct *);extern void rxrpc_reject_packet(struct rxrpc_local *, struct sk_buff *);extern void rxrpc_reject_packets(struct work_struct *);/* * ar-error.c */extern void rxrpc_UDP_error_report(struct sock *);extern void rxrpc_UDP_error_handler(struct work_struct *);/* * ar-input.c */extern unsigned long rxrpc_ack_timeout;extern const char *rxrpc_pkts[];extern void rxrpc_data_ready(struct sock *, int);extern int rxrpc_queue_rcv_skb(struct rxrpc_call *, struct sk_buff *, bool,			       bool);extern void rxrpc_fast_process_packet(struct rxrpc_call *, struct sk_buff *);/* * ar-local.c */extern rwlock_t rxrpc_local_lock;extern struct rxrpc_local *rxrpc_lookup_local(struct sockaddr_rxrpc *);extern void rxrpc_put_local(struct rxrpc_local *);extern void __exit rxrpc_destroy_all_locals(void);/* * ar-key.c */extern struct key_type key_type_rxrpc;extern struct key_type key_type_rxrpc_s;extern int rxrpc_request_key(struct rxrpc_sock *, char __user *, int);extern int rxrpc_server_keyring(struct rxrpc_sock *, char __user *, int);extern int rxrpc_get_server_data_key(struct rxrpc_connection *, const void *,				     time_t, u32);/* * ar-output.c */extern int rxrpc_resend_timeout;extern int rxrpc_send_packet(struct rxrpc_transport *, struct sk_buff *);extern int rxrpc_client_sendmsg(struct kiocb *, struct rxrpc_sock *,				struct rxrpc_transport *, struct msghdr *,				size_t);extern int rxrpc_server_sendmsg(struct kiocb *, struct rxrpc_sock *,				struct msghdr *, size_t);/* * ar-peer.c */extern struct rxrpc_peer *rxrpc_get_peer(struct sockaddr_rxrpc *, gfp_t);extern void rxrpc_put_peer(struct rxrpc_peer *);extern struct rxrpc_peer *rxrpc_find_peer(struct rxrpc_local *,					  __be32, __be16);extern void __exit rxrpc_destroy_all_peers(void);/* * ar-proc.c */extern const char *rxrpc_call_states[];extern struct file_operations rxrpc_call_seq_fops;extern struct file_operations rxrpc_connection_seq_fops;/* * ar-recvmsg.c */extern void rxrpc_remove_user_ID(struct rxrpc_sock *, struct rxrpc_call *);extern int rxrpc_recvmsg(struct kiocb *, struct socket *, struct msghdr *,			 size_t, int);/* * ar-security.c */extern int rxrpc_register_security(struct rxrpc_security *);extern void rxrpc_unregister_security(struct rxrpc_security *);extern int rxrpc_init_client_conn_security(struct rxrpc_connection *);extern int rxrpc_init_server_conn_security(struct rxrpc_connection *);extern int rxrpc_secure_packet(const struct rxrpc_call *, struct sk_buff *,			       size_t, void *);extern int rxrpc_verify_packet(const struct rxrpc_call *, struct sk_buff *,			       u32 *);extern void rxrpc_clear_conn_security(struct rxrpc_connection *);/* * ar-skbuff.c */extern void rxrpc_packet_destructor(struct sk_buff *);/* * ar-transport.c */extern struct rxrpc_transport *rxrpc_get_transport(struct rxrpc_local *,						   struct rxrpc_peer *,						   gfp_t);extern void rxrpc_put_transport(struct rxrpc_transport *);extern void __exit rxrpc_destroy_all_transports(void);extern struct rxrpc_transport *rxrpc_find_transport(struct rxrpc_local *,						    struct rxrpc_peer *);/* * debug tracing */extern unsigned rxrpc_debug;#define dbgprintk(FMT,...) \	printk("[%x%-6.6s] "FMT"\n", smp_processor_id(), current->comm ,##__VA_ARGS__)/* make sure we maintain the format strings, even when debugging is disabled */static inline __attribute__((format(printf,1,2)))void _dbprintk(const char *fmt, ...){}#define kenter(FMT,...)	dbgprintk("==> %s("FMT")",__FUNCTION__ ,##__VA_ARGS__)#define kleave(FMT,...)	dbgprintk("<== %s()"FMT"",__FUNCTION__ ,##__VA_ARGS__)#define kdebug(FMT,...)	dbgprintk("    "FMT ,##__VA_ARGS__)#define kproto(FMT,...)	dbgprintk("### "FMT ,##__VA_ARGS__)#define knet(FMT,...)	dbgprintk("@@@ "FMT ,##__VA_ARGS__)#if defined(__KDEBUG)#define _enter(FMT,...)	kenter(FMT,##__VA_ARGS__)#define _leave(FMT,...)	kleave(FMT,##__VA_ARGS__)#define _debug(FMT,...)	kdebug(FMT,##__VA_ARGS__)#define _proto(FMT,...)	kproto(FMT,##__VA_ARGS__)#define _net(FMT,...)	knet(FMT,##__VA_ARGS__)#elif defined(CONFIG_AF_RXRPC_DEBUG)#define RXRPC_DEBUG_KENTER	0x01#define RXRPC_DEBUG_KLEAVE	0x02#define RXRPC_DEBUG_KDEBUG	0x04#define RXRPC_DEBUG_KPROTO	0x08#define RXRPC_DEBUG_KNET	0x10#define _enter(FMT,...)					\do {							\	if (unlikely(rxrpc_debug & RXRPC_DEBUG_KENTER))	\		kenter(FMT,##__VA_ARGS__);		\} while (0)#define _leave(FMT,...)					\do {							\	if (unlikely(rxrpc_debug & RXRPC_DEBUG_KLEAVE))	\		kleave(FMT,##__VA_ARGS__);		\} while (0)#define _debug(FMT,...)					\do {							\	if (unlikely(rxrpc_debug & RXRPC_DEBUG_KDEBUG))	\		kdebug(FMT,##__VA_ARGS__);		\} while (0)#define _proto(FMT,...)					\do {							\	if (unlikely(rxrpc_debug & RXRPC_DEBUG_KPROTO))	\		kproto(FMT,##__VA_ARGS__);		\} while (0)#define _net(FMT,...)					\do {							\	if (unlikely(rxrpc_debug & RXRPC_DEBUG_KNET))	\		knet(FMT,##__VA_ARGS__);		\} while (0)#else#define _enter(FMT,...)	_dbprintk("==> %s("FMT")",__FUNCTION__ ,##__VA_ARGS__)#define _leave(FMT,...)	_dbprintk("<== %s()"FMT"",__FUNCTION__ ,##__VA_ARGS__)#define _debug(FMT,...)	_dbprintk("    "FMT ,##__VA_ARGS__)#define _proto(FMT,...)	_dbprintk("### "FMT ,##__VA_ARGS__)#define _net(FMT,...)	_dbprintk("@@@ "FMT ,##__VA_ARGS__)#endif/* * debug assertion checking */#if 1 // defined(__KDEBUGALL)#define ASSERT(X)						\do {								\	if (unlikely(!(X))) {					\		printk(KERN_ERR "\n");				\		printk(KERN_ERR "RxRPC: Assertion failed\n");	\		BUG();						\	}							\} while(0)#define ASSERTCMP(X, OP, Y)						\do {									\	if (unlikely(!((X) OP (Y)))) {					\		printk(KERN_ERR "\n");					\		printk(KERN_ERR "RxRPC: Assertion failed\n");		\		printk(KERN_ERR "%lu " #OP " %lu is false\n",		\		       (unsigned long)(X), (unsigned long)(Y));		\		printk(KERN_ERR "0x%lx " #OP " 0x%lx is false\n",	\		       (unsigned long)(X), (unsigned long)(Y));		\		BUG();							\	}								\} while(0)#define ASSERTIF(C, X)						\do {								\	if (unlikely((C) && !(X))) {				\		printk(KERN_ERR "\n");				\		printk(KERN_ERR "RxRPC: Assertion failed\n");	\		BUG();						\	}							\} while(0)#define ASSERTIFCMP(C, X, OP, Y)					\do {									\	if (unlikely((C) && !((X) OP (Y)))) {				\		printk(KERN_ERR "\n");					\		printk(KERN_ERR "RxRPC: Assertion failed\n");		\		printk(KERN_ERR "%lu " #OP " %lu is false\n",		\		       (unsigned long)(X), (unsigned long)(Y));		\		printk(KERN_ERR "0x%lx " #OP " 0x%lx is false\n",	\		       (unsigned long)(X), (unsigned long)(Y));		\		BUG();							\	}								\} while(0)#else#define ASSERT(X)				\do {						\} while(0)#define ASSERTCMP(X, OP, Y)			\do {						\} while(0)#define ASSERTIF(C, X)				\do {						\} while(0)#define ASSERTIFCMP(C, X, OP, Y)		\do {						\} while(0)#endif /* __KDEBUGALL *//* * socket buffer accounting / leak finding */static inline void __rxrpc_new_skb(struct sk_buff *skb, const char *fn){	//_net("new skb %p %s [%d]", skb, fn, atomic_read(&rxrpc_n_skbs));	//atomic_inc(&rxrpc_n_skbs);}#define rxrpc_new_skb(skb) __rxrpc_new_skb((skb), __func__)static inline void __rxrpc_kill_skb(struct sk_buff *skb, const char *fn){	//_net("kill skb %p %s [%d]", skb, fn, atomic_read(&rxrpc_n_skbs));	//atomic_dec(&rxrpc_n_skbs);}#define rxrpc_kill_skb(skb) __rxrpc_kill_skb((skb), __func__)static inline void __rxrpc_free_skb(struct sk_buff *skb, const char *fn){	if (skb) {		CHECK_SLAB_OKAY(&skb->users);		//_net("free skb %p %s [%d]",		//     skb, fn, atomic_read(&rxrpc_n_skbs));		//atomic_dec(&rxrpc_n_skbs);		kfree_skb(skb);	}}#define rxrpc_free_skb(skb) __rxrpc_free_skb((skb), __func__)static inline void rxrpc_purge_queue(struct sk_buff_head *list){	struct sk_buff *skb;	while ((skb = skb_dequeue((list))) != NULL)		rxrpc_free_skb(skb);}static inline void __rxrpc_get_local(struct rxrpc_local *local, const char *f){	CHECK_SLAB_OKAY(&local->usage);	if (atomic_inc_return(&local->usage) == 1)		printk("resurrected (%s)\n", f);}#define rxrpc_get_local(LOCAL) __rxrpc_get_local((LOCAL), __func__)#define rxrpc_get_call(CALL)				\do {							\	CHECK_SLAB_OKAY(&(CALL)->usage);		\	if (atomic_inc_return(&(CALL)->usage) == 1)	\		BUG();					\} while(0)#define rxrpc_put_call(CALL)				\do {							\	__rxrpc_put_call(CALL);				\} while(0)

⌨️ 快捷键说明

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