svc_xprt.h 1.1 KB
Newer Older
T
Tom Tucker 已提交
1 2 3 4 5 6 7 8 9 10 11 12
/*
 * linux/include/linux/sunrpc/svc_xprt.h
 *
 * RPC server transport I/O
 */

#ifndef SUNRPC_SVC_XPRT_H
#define SUNRPC_SVC_XPRT_H

#include <linux/sunrpc/svc.h>

struct svc_xprt_ops {
13 14 15
	struct svc_xprt	*(*xpo_create)(struct svc_serv *,
				       struct sockaddr *, int,
				       int);
16
	struct svc_xprt	*(*xpo_accept)(struct svc_xprt *);
17
	int		(*xpo_has_wspace)(struct svc_xprt *);
18
	int		(*xpo_recvfrom)(struct svc_rqst *);
T
Tom Tucker 已提交
19
	void		(*xpo_prep_reply_hdr)(struct svc_rqst *);
20
	int		(*xpo_sendto)(struct svc_rqst *);
21
	void		(*xpo_release_rqst)(struct svc_rqst *);
22 23
	void		(*xpo_detach)(struct svc_xprt *);
	void		(*xpo_free)(struct svc_xprt *);
T
Tom Tucker 已提交
24 25 26 27 28 29 30
};

struct svc_xprt_class {
	const char		*xcl_name;
	struct module		*xcl_owner;
	struct svc_xprt_ops	*xcl_ops;
	struct list_head	xcl_list;
31
	u32			xcl_max_payload;
T
Tom Tucker 已提交
32 33 34 35 36 37 38 39 40 41
};

struct svc_xprt {
	struct svc_xprt_class	*xpt_class;
	struct svc_xprt_ops	*xpt_ops;
};

int	svc_reg_xprt_class(struct svc_xprt_class *);
void	svc_unreg_xprt_class(struct svc_xprt_class *);
void	svc_xprt_init(struct svc_xprt_class *, struct svc_xprt *);
42
int	svc_create_xprt(struct svc_serv *, char *, unsigned short, int);
T
Tom Tucker 已提交
43 44

#endif /* SUNRPC_SVC_XPRT_H */