#include <rpc/xdr.h>
#include <rpc/auth.h>
+struct rpc_fragment {
+ struct rpc_fragment *next;
+ uint64_t size;
+ char *data;
+};
+
struct rpc_context {
int fd;
int is_connected;
/* track the address we connect to so we can auto-reconnect on session failure */
struct sockaddr_storage s;
int auto_reconnect;
+
+ /* fragment reassembly */
+ struct rpc_fragment *fragments;
};
struct rpc_pdu {
void rpc_set_error(struct rpc_context *rpc, char *error_string, ...);
void nfs_set_error(struct nfs_context *nfs, char *error_string, ...);
-struct rpc_context *nfs_get_rpc_context(struct nfs_context *nfs);
const char *nfs_get_server(struct nfs_context *nfs);
const char *nfs_get_export(struct nfs_context *nfs);
void rpc_set_autoreconnect(struct rpc_context *rpc);
void rpc_unset_autoreconnect(struct rpc_context *rpc);
+int rpc_add_fragment(struct rpc_context *rpc, char *data, uint64_t size);
+void rpc_free_all_fragments(struct rpc_context *rpc);
+
+const struct nfs_fh3 *nfs_get_rootfh(struct nfs_context *nfs);