173 lines
4.0 KiB
C
173 lines
4.0 KiB
C
/****************************************************************************
|
|
****************************************************************************
|
|
***
|
|
*** This header was automatically generated from a Linux kernel header
|
|
*** of the same name, to make information necessary for userspace to
|
|
*** call into the kernel available to libc. It contains only constants,
|
|
*** structures, and macros generated from the original header, and thus,
|
|
*** contains no copyrightable information.
|
|
***
|
|
****************************************************************************
|
|
****************************************************************************/
|
|
#ifndef _LINUX_SUNRPC_XPRT_H
|
|
#define _LINUX_SUNRPC_XPRT_H
|
|
|
|
#include <linux/uio.h>
|
|
#include <linux/socket.h>
|
|
#include <linux/in.h>
|
|
#include <linux/sunrpc/sched.h>
|
|
#include <linux/sunrpc/xdr.h>
|
|
|
|
#define RPC_MIN_SLOT_TABLE (2U)
|
|
#define RPC_DEF_SLOT_TABLE (16U)
|
|
#define RPC_MAX_SLOT_TABLE (128U)
|
|
|
|
#define RPC_CALLHDRSIZE 6
|
|
#define RPC_REPHDRSIZE 4
|
|
|
|
#define RPC_MIN_RESVPORT (1U)
|
|
#define RPC_MAX_RESVPORT (65535U)
|
|
#define RPC_DEF_MIN_RESVPORT (665U)
|
|
#define RPC_DEF_MAX_RESVPORT (1023U)
|
|
|
|
struct rpc_timeout {
|
|
unsigned long to_initval,
|
|
to_maxval,
|
|
to_increment;
|
|
unsigned int to_retries;
|
|
unsigned char to_exponential;
|
|
};
|
|
|
|
struct rpc_task;
|
|
struct rpc_xprt;
|
|
struct seq_file;
|
|
|
|
struct rpc_rqst {
|
|
|
|
struct rpc_xprt * rq_xprt;
|
|
struct xdr_buf rq_snd_buf;
|
|
struct xdr_buf rq_rcv_buf;
|
|
|
|
struct rpc_task * rq_task;
|
|
__u32 rq_xid;
|
|
int rq_cong;
|
|
int rq_received;
|
|
u32 rq_seqno;
|
|
int rq_enc_pages_num;
|
|
struct page **rq_enc_pages;
|
|
void (*rq_release_snd_buf)(struct rpc_rqst *);
|
|
struct list_head rq_list;
|
|
|
|
__u32 * rq_buffer;
|
|
size_t rq_bufsize;
|
|
|
|
struct xdr_buf rq_private_buf;
|
|
unsigned long rq_majortimeo;
|
|
unsigned long rq_timeout;
|
|
unsigned int rq_retries;
|
|
|
|
u32 rq_bytes_sent;
|
|
|
|
unsigned long rq_xtime;
|
|
int rq_ntrans;
|
|
};
|
|
#define rq_svec rq_snd_buf.head
|
|
#define rq_slen rq_snd_buf.len
|
|
|
|
struct rpc_xprt_ops {
|
|
void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
|
|
int (*reserve_xprt)(struct rpc_task *task);
|
|
void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
|
|
void (*set_port)(struct rpc_xprt *xprt, unsigned short port);
|
|
void (*connect)(struct rpc_task *task);
|
|
void * (*buf_alloc)(struct rpc_task *task, size_t size);
|
|
void (*buf_free)(struct rpc_task *task);
|
|
int (*send_request)(struct rpc_task *task);
|
|
void (*set_retrans_timeout)(struct rpc_task *task);
|
|
void (*timer)(struct rpc_task *task);
|
|
void (*release_request)(struct rpc_task *task);
|
|
void (*close)(struct rpc_xprt *xprt);
|
|
void (*destroy)(struct rpc_xprt *xprt);
|
|
void (*print_stats)(struct rpc_xprt *xprt, struct seq_file *seq);
|
|
};
|
|
|
|
struct rpc_xprt {
|
|
struct rpc_xprt_ops * ops;
|
|
struct socket * sock;
|
|
struct sock * inet;
|
|
|
|
struct rpc_timeout timeout;
|
|
struct sockaddr_in addr;
|
|
int prot;
|
|
|
|
unsigned long cong;
|
|
unsigned long cwnd;
|
|
|
|
size_t rcvsize,
|
|
sndsize;
|
|
|
|
size_t max_payload;
|
|
unsigned int tsh_size;
|
|
|
|
struct rpc_wait_queue sending;
|
|
struct rpc_wait_queue resend;
|
|
struct rpc_wait_queue pending;
|
|
struct rpc_wait_queue backlog;
|
|
struct list_head free;
|
|
struct rpc_rqst * slot;
|
|
unsigned int max_reqs;
|
|
unsigned long state;
|
|
unsigned char shutdown : 1,
|
|
resvport : 1;
|
|
|
|
__u32 xid;
|
|
|
|
u32 tcp_recm,
|
|
tcp_xid,
|
|
tcp_reclen,
|
|
tcp_offset;
|
|
unsigned long tcp_copied,
|
|
tcp_flags;
|
|
|
|
unsigned long connect_timeout,
|
|
bind_timeout,
|
|
reestablish_timeout;
|
|
struct work_struct connect_worker;
|
|
unsigned short port;
|
|
|
|
struct work_struct task_cleanup;
|
|
struct timer_list timer;
|
|
unsigned long last_used,
|
|
idle_timeout;
|
|
|
|
spinlock_t transport_lock;
|
|
spinlock_t reserve_lock;
|
|
struct rpc_task * snd_task;
|
|
|
|
struct list_head recv;
|
|
|
|
struct {
|
|
unsigned long bind_count,
|
|
connect_count,
|
|
connect_start,
|
|
connect_time,
|
|
sends,
|
|
recvs,
|
|
bad_xids;
|
|
|
|
unsigned long long req_u,
|
|
bklog_u;
|
|
} stat;
|
|
|
|
void (*old_data_ready)(struct sock *, int);
|
|
void (*old_state_change)(struct sock *);
|
|
void (*old_write_space)(struct sock *);
|
|
};
|
|
|
|
#define XPRT_LAST_FRAG (1 << 0)
|
|
#define XPRT_COPY_RECM (1 << 1)
|
|
#define XPRT_COPY_XID (1 << 2)
|
|
#define XPRT_COPY_DATA (1 << 3)
|
|
|
|
#endif
|