1
2
3
4
5
6
7
8
9#ifndef SUNRPC_SVCSOCK_H
10#define SUNRPC_SVCSOCK_H
11
12#include <linux/sunrpc/svc.h>
13
14
15
16
17struct svc_sock {
18 struct list_head sk_ready;
19 struct list_head sk_list;
20 struct socket * sk_sock;
21 struct sock * sk_sk;
22
23 struct svc_pool * sk_pool;
24 struct svc_serv * sk_server;
25 atomic_t sk_inuse;
26 unsigned long sk_flags;
27#define SK_BUSY 0
28#define SK_CONN 1
29#define SK_CLOSE 2
30#define SK_DATA 3
31#define SK_TEMP 4
32#define SK_DEAD 6
33#define SK_CHNGBUF 7
34#define SK_DEFERRED 8
35#define SK_OLD 9
36#define SK_DETACHED 10
37
38 atomic_t sk_reserved;
39
40 spinlock_t sk_lock;
41
42 struct list_head sk_deferred;
43
44 struct mutex sk_mutex;
45
46 int (*sk_recvfrom)(struct svc_rqst *rqstp);
47 int (*sk_sendto)(struct svc_rqst *rqstp);
48
49
50 void (*sk_ostate)(struct sock *);
51 void (*sk_odata)(struct sock *, int bytes);
52 void (*sk_owspace)(struct sock *);
53
54
55 int sk_reclen;
56 int sk_tcplen;
57 time_t sk_lastrecv;
58
59
60 void *sk_info_authunix;
61
62 struct sockaddr_storage sk_local;
63 struct sockaddr_storage sk_remote;
64 int sk_remotelen;
65};
66
67
68
69
70int svc_makesock(struct svc_serv *, int, unsigned short, int flags);
71void svc_force_close_socket(struct svc_sock *);
72int svc_recv(struct svc_rqst *, long);
73int svc_send(struct svc_rqst *);
74void svc_drop(struct svc_rqst *);
75void svc_sock_update_bufs(struct svc_serv *serv);
76int svc_sock_names(char *buf, struct svc_serv *serv, char *toclose);
77int svc_addsock(struct svc_serv *serv,
78 int fd,
79 char *name_return,
80 int *proto);
81
82
83
84
85#define SVC_SOCK_DEFAULTS (0U)
86#define SVC_SOCK_ANONYMOUS (1U << 0)
87#define SVC_SOCK_TEMPORARY (1U << 1)
88
89#endif
90