Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/include/linux/sunrpc/svcsock.h | |
3 | * | |
4 | * RPC server socket I/O. | |
5 | * | |
6 | * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> | |
7 | */ | |
8 | ||
9 | #ifndef SUNRPC_SVCSOCK_H | |
10 | #define SUNRPC_SVCSOCK_H | |
11 | ||
12 | #include <linux/sunrpc/svc.h> | |
360d8738 | 13 | #include <linux/sunrpc/svc_xprt.h> |
1da177e4 LT |
14 | |
15 | /* | |
16 | * RPC server socket. | |
17 | */ | |
18 | struct svc_sock { | |
360d8738 | 19 | struct svc_xprt sk_xprt; |
1da177e4 LT |
20 | struct socket * sk_sock; /* berkeley socket layer */ |
21 | struct sock * sk_sk; /* INET layer */ | |
22 | ||
1da177e4 LT |
23 | /* We keep the old state_change and data_ready CB's here */ |
24 | void (*sk_ostate)(struct sock *); | |
25 | void (*sk_odata)(struct sock *, int bytes); | |
26 | void (*sk_owspace)(struct sock *); | |
27 | ||
28 | /* private TCP part */ | |
8af345f5 BF |
29 | /* On-the-wire fragment header: */ |
30 | __be32 sk_reclen; | |
31 | /* As we receive a record, this includes the length received so | |
32 | * far (including the fragment header): */ | |
33 | u32 sk_tcplen; | |
34 | /* Total length of the data (not including fragment headers) | |
35 | * received so far in the fragments making up this rpc: */ | |
36 | u32 sk_datalen; | |
37 | ||
31d68ef6 | 38 | struct page * sk_pages[RPCSVC_MAXPAGES]; /* received data */ |
1da177e4 LT |
39 | }; |
40 | ||
cc248d4b BF |
41 | static inline u32 svc_sock_reclen(struct svc_sock *svsk) |
42 | { | |
43 | return ntohl(svsk->sk_reclen) & RPC_FRAGMENT_SIZE_MASK; | |
44 | } | |
45 | ||
46 | static inline u32 svc_sock_final_rec(struct svc_sock *svsk) | |
47 | { | |
48 | return ntohl(svsk->sk_reclen) & RPC_LAST_STREAM_FRAGMENT; | |
49 | } | |
50 | ||
1da177e4 LT |
51 | /* |
52 | * Function prototypes. | |
53 | */ | |
7b147f1f | 54 | void svc_close_net(struct svc_serv *, struct net *); |
6fb2b47f | 55 | int svc_recv(struct svc_rqst *, long); |
1da177e4 LT |
56 | int svc_send(struct svc_rqst *); |
57 | void svc_drop(struct svc_rqst *); | |
58 | void svc_sock_update_bufs(struct svc_serv *serv); | |
bfba9ab4 CL |
59 | int svc_addsock(struct svc_serv *serv, const int fd, |
60 | char *name_return, const size_t len); | |
360d8738 TT |
61 | void svc_init_xprt_sock(void); |
62 | void svc_cleanup_xprt_sock(void); | |
7652e5a0 BH |
63 | struct svc_xprt *svc_sock_create(struct svc_serv *serv, int prot); |
64 | void svc_sock_destroy(struct svc_xprt *); | |
1da177e4 | 65 | |
6b174337 CL |
66 | /* |
67 | * svc_makesock socket characteristics | |
68 | */ | |
69 | #define SVC_SOCK_DEFAULTS (0U) | |
70 | #define SVC_SOCK_ANONYMOUS (1U << 0) /* don't register with pmap */ | |
71 | #define SVC_SOCK_TEMPORARY (1U << 1) /* flag socket as temporary */ | |
72 | ||
1da177e4 | 73 | #endif /* SUNRPC_SVCSOCK_H */ |