blob: 986a5a07044bed145d090ec675fe744994236b1e [file] [log] [blame]
Tom Tucker1d8206b2007-12-30 21:07:15 -06001/*
2 * linux/include/linux/sunrpc/svc_xprt.h
3 *
4 * RPC server transport I/O
5 */
6
7#ifndef SUNRPC_SVC_XPRT_H
8#define SUNRPC_SVC_XPRT_H
9
10#include <linux/sunrpc/svc.h>
11
12struct svc_xprt_ops {
Tom Tuckerb700cbb2007-12-30 21:07:42 -060013 struct svc_xprt *(*xpo_create)(struct svc_serv *,
14 struct sockaddr *, int,
15 int);
Tom Tucker38a417c2007-12-30 21:07:36 -060016 struct svc_xprt *(*xpo_accept)(struct svc_xprt *);
Tom Tucker323bee32007-12-30 21:07:31 -060017 int (*xpo_has_wspace)(struct svc_xprt *);
Tom Tucker5d137992007-12-30 21:07:23 -060018 int (*xpo_recvfrom)(struct svc_rqst *);
Tom Tuckere831fe62007-12-30 21:07:29 -060019 void (*xpo_prep_reply_hdr)(struct svc_rqst *);
Tom Tucker5d137992007-12-30 21:07:23 -060020 int (*xpo_sendto)(struct svc_rqst *);
Tom Tucker5148bf42007-12-30 21:07:25 -060021 void (*xpo_release_rqst)(struct svc_rqst *);
Tom Tucker755ccea2007-12-30 21:07:27 -060022 void (*xpo_detach)(struct svc_xprt *);
23 void (*xpo_free)(struct svc_xprt *);
Tom Tucker1d8206b2007-12-30 21:07:15 -060024};
25
26struct svc_xprt_class {
27 const char *xcl_name;
28 struct module *xcl_owner;
29 struct svc_xprt_ops *xcl_ops;
30 struct list_head xcl_list;
Tom Tucker49023152007-12-30 21:07:21 -060031 u32 xcl_max_payload;
Tom Tucker1d8206b2007-12-30 21:07:15 -060032};
33
34struct svc_xprt {
35 struct svc_xprt_class *xpt_class;
36 struct svc_xprt_ops *xpt_ops;
37};
38
39int svc_reg_xprt_class(struct svc_xprt_class *);
40void svc_unreg_xprt_class(struct svc_xprt_class *);
41void svc_xprt_init(struct svc_xprt_class *, struct svc_xprt *);
Tom Tuckerb700cbb2007-12-30 21:07:42 -060042int svc_create_xprt(struct svc_serv *, char *, unsigned short, int);
Tom Tucker1d8206b2007-12-30 21:07:15 -060043
44#endif /* SUNRPC_SVC_XPRT_H */