#ifndef _SUNRPC_XDR_H_
#define _SUNRPC_XDR_H_
#include <linux/uio.h>
#include <asm/byteorder.h>
#include <linux/unaligned.h>
#include <linux/scatterlist.h>
struct bio_vec;
struct rpc_rqst;
#define XDR_UNIT …
#define XDR_QUADLEN(l) …
#define XDR_MAX_NETOBJ …
struct xdr_netobj { … };
struct xdr_buf { … };
static inline void
xdr_buf_init(struct xdr_buf *buf, void *start, size_t len)
{ … }
#define xdr_zero …
#define xdr_one …
#define xdr_two …
#define rpc_auth_null …
#define rpc_auth_unix …
#define rpc_auth_short …
#define rpc_auth_gss …
#define rpc_auth_tls …
#define rpc_call …
#define rpc_reply …
#define rpc_msg_accepted …
#define rpc_success …
#define rpc_prog_unavail …
#define rpc_prog_mismatch …
#define rpc_proc_unavail …
#define rpc_garbage_args …
#define rpc_system_err …
#define rpc_drop_reply …
#define rpc_mismatch …
#define rpc_auth_error …
#define rpc_auth_ok …
#define rpc_autherr_badcred …
#define rpc_autherr_rejectedcred …
#define rpc_autherr_badverf …
#define rpc_autherr_rejectedverf …
#define rpc_autherr_tooweak …
#define rpcsec_gsserr_credproblem …
#define rpcsec_gsserr_ctxproblem …
__be32 *xdr_encode_opaque_fixed(__be32 *p, const void *ptr, unsigned int len);
__be32 *xdr_encode_opaque(__be32 *p, const void *ptr, unsigned int len);
__be32 *xdr_encode_string(__be32 *p, const char *s);
__be32 *xdr_decode_string_inplace(__be32 *p, char **sp, unsigned int *lenp,
unsigned int maxlen);
__be32 *xdr_encode_netobj(__be32 *p, const struct xdr_netobj *);
__be32 *xdr_decode_netobj(__be32 *p, struct xdr_netobj *);
void xdr_inline_pages(struct xdr_buf *, unsigned int,
struct page **, unsigned int, unsigned int);
void xdr_terminate_string(const struct xdr_buf *, const u32);
size_t xdr_buf_pagecount(const struct xdr_buf *buf);
int xdr_alloc_bvec(struct xdr_buf *buf, gfp_t gfp);
void xdr_free_bvec(struct xdr_buf *buf);
unsigned int xdr_buf_to_bvec(struct bio_vec *bvec, unsigned int bvec_size,
const struct xdr_buf *xdr);
static inline __be32 *xdr_encode_array(__be32 *p, const void *s, unsigned int len)
{ … }
static inline __be32 *
xdr_encode_hyper(__be32 *p, __u64 val)
{ … }
static inline __be32 *
xdr_decode_hyper(__be32 *p, __u64 *valp)
{ … }
static inline __be32 *
xdr_decode_opaque_fixed(__be32 *p, void *ptr, unsigned int len)
{ … }
static inline void xdr_netobj_dup(struct xdr_netobj *dst,
struct xdr_netobj *src, gfp_t gfp_mask)
{ … }
static inline int
xdr_adjust_iovec(struct kvec *iov, __be32 *p)
{ … }
extern void xdr_buf_from_iov(const struct kvec *, struct xdr_buf *);
extern int xdr_buf_subsegment(const struct xdr_buf *, struct xdr_buf *, unsigned int, unsigned int);
extern void xdr_buf_trim(struct xdr_buf *, unsigned int);
extern int read_bytes_from_xdr_buf(const struct xdr_buf *, unsigned int, void *, unsigned int);
extern int write_bytes_to_xdr_buf(const struct xdr_buf *, unsigned int, void *, unsigned int);
extern int xdr_encode_word(const struct xdr_buf *, unsigned int, u32);
extern int xdr_decode_word(const struct xdr_buf *, unsigned int, u32 *);
struct xdr_array2_desc;
xdr_xcode_elem_t;
struct xdr_array2_desc { … };
extern int xdr_decode_array2(const struct xdr_buf *buf, unsigned int base,
struct xdr_array2_desc *desc);
extern int xdr_encode_array2(const struct xdr_buf *buf, unsigned int base,
struct xdr_array2_desc *desc);
extern void _copy_from_pages(char *p, struct page **pages, size_t pgbase,
size_t len);
struct xdr_stream { … };
kxdreproc_t;
kxdrdproc_t;
extern void xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf,
__be32 *p, struct rpc_rqst *rqst);
extern void xdr_init_encode_pages(struct xdr_stream *xdr, struct xdr_buf *buf,
struct page **pages, struct rpc_rqst *rqst);
extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes);
extern int xdr_reserve_space_vec(struct xdr_stream *xdr, size_t nbytes);
extern void __xdr_commit_encode(struct xdr_stream *xdr);
extern void xdr_truncate_encode(struct xdr_stream *xdr, size_t len);
extern void xdr_truncate_decode(struct xdr_stream *xdr, size_t len);
extern int xdr_restrict_buflen(struct xdr_stream *xdr, int newbuflen);
extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages,
unsigned int base, unsigned int len);
extern unsigned int xdr_stream_pos(const struct xdr_stream *xdr);
extern unsigned int xdr_page_pos(const struct xdr_stream *xdr);
extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf,
__be32 *p, struct rpc_rqst *rqst);
extern void xdr_init_decode_pages(struct xdr_stream *xdr, struct xdr_buf *buf,
struct page **pages, unsigned int len);
extern void xdr_finish_decode(struct xdr_stream *xdr);
extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes);
extern unsigned int xdr_read_pages(struct xdr_stream *xdr, unsigned int len);
extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len);
extern int xdr_process_buf(const struct xdr_buf *buf, unsigned int offset, unsigned int len, int (*actor)(struct scatterlist *, void *), void *data);
extern void xdr_set_pagelen(struct xdr_stream *, unsigned int len);
extern bool xdr_stream_subsegment(struct xdr_stream *xdr, struct xdr_buf *subbuf,
unsigned int len);
extern unsigned int xdr_stream_move_subsegment(struct xdr_stream *xdr, unsigned int offset,
unsigned int target, unsigned int length);
extern unsigned int xdr_stream_zero(struct xdr_stream *xdr, unsigned int offset,
unsigned int length);
static inline void
xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen)
{ … }
static inline void
xdr_set_scratch_page(struct xdr_stream *xdr, struct page *page)
{ … }
static inline void
xdr_reset_scratch_buffer(struct xdr_stream *xdr)
{ … }
static inline void xdr_commit_encode(struct xdr_stream *xdr)
{ … }
static inline size_t
xdr_stream_remaining(const struct xdr_stream *xdr)
{ … }
ssize_t xdr_stream_decode_opaque(struct xdr_stream *xdr, void *ptr,
size_t size);
ssize_t xdr_stream_decode_opaque_dup(struct xdr_stream *xdr, void **ptr,
size_t maxlen, gfp_t gfp_flags);
ssize_t xdr_stream_decode_string(struct xdr_stream *xdr, char *str,
size_t size);
ssize_t xdr_stream_decode_string_dup(struct xdr_stream *xdr, char **str,
size_t maxlen, gfp_t gfp_flags);
ssize_t xdr_stream_decode_opaque_auth(struct xdr_stream *xdr, u32 *flavor,
void **body, unsigned int *body_len);
ssize_t xdr_stream_encode_opaque_auth(struct xdr_stream *xdr, u32 flavor,
void *body, unsigned int body_len);
static inline size_t
xdr_align_size(size_t n)
{ … }
static inline size_t xdr_pad_size(size_t n)
{ … }
static inline ssize_t xdr_stream_encode_item_present(struct xdr_stream *xdr)
{ … }
static inline int xdr_stream_encode_item_absent(struct xdr_stream *xdr)
{ … }
static inline __be32 *xdr_encode_bool(__be32 *p, u32 n)
{ … }
static inline int xdr_stream_encode_bool(struct xdr_stream *xdr, __u32 n)
{ … }
static inline ssize_t
xdr_stream_encode_u32(struct xdr_stream *xdr, __u32 n)
{ … }
static inline ssize_t
xdr_stream_encode_be32(struct xdr_stream *xdr, __be32 n)
{ … }
static inline ssize_t
xdr_stream_encode_u64(struct xdr_stream *xdr, __u64 n)
{ … }
static inline ssize_t
xdr_stream_encode_opaque_inline(struct xdr_stream *xdr, void **ptr, size_t len)
{ … }
static inline ssize_t
xdr_stream_encode_opaque_fixed(struct xdr_stream *xdr, const void *ptr, size_t len)
{ … }
static inline ssize_t
xdr_stream_encode_opaque(struct xdr_stream *xdr, const void *ptr, size_t len)
{ … }
static inline ssize_t
xdr_stream_encode_uint32_array(struct xdr_stream *xdr,
const __u32 *array, size_t array_size)
{ … }
static inline bool xdr_item_is_absent(const __be32 *p)
{ … }
static inline bool xdr_item_is_present(const __be32 *p)
{ … }
static inline ssize_t
xdr_stream_decode_bool(struct xdr_stream *xdr, __u32 *ptr)
{ … }
static inline ssize_t
xdr_stream_decode_u32(struct xdr_stream *xdr, __u32 *ptr)
{ … }
static inline ssize_t
xdr_stream_decode_u64(struct xdr_stream *xdr, __u64 *ptr)
{ … }
static inline ssize_t
xdr_stream_decode_opaque_fixed(struct xdr_stream *xdr, void *ptr, size_t len)
{ … }
static inline ssize_t
xdr_stream_decode_opaque_inline(struct xdr_stream *xdr, void **ptr, size_t maxlen)
{ … }
static inline ssize_t
xdr_stream_decode_uint32_array(struct xdr_stream *xdr,
__u32 *array, size_t array_size)
{ … }
#endif