#include <stdint.h>
struct nfs_context;
+struct rpc_context;
/*
* Used for interfacing the async version of the api into an external eventsystem
*/
typedef void (*nfs_cb)(int err, struct nfs_context *nfs, void *data, void *private_data);
+/*
+ * Callback for all ASYNC rpc functions
+ */
+typedef void (*rpc_cb)(struct rpc_context *rpc, int status, void *data, void *private_data);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_mount_sync(struct nfs_context *nfs, const char *server, const char *exportname);
+int nfs_mount(struct nfs_context *nfs, const char *server, const char *exportname);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_stat_sync(struct nfs_context *nfs, const char *path, struct stat *st);
+int nfs_stat(struct nfs_context *nfs, const char *path, struct stat *st);
/*
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_fstat_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, struct stat *st);
+int nfs_fstat(struct nfs_context *nfs, struct nfsfh *nfsfh, struct stat *st);
* 0 : The operation was successfull. *nfsfh is filled in.
* -errno : The command failed.
*/
-int nfs_open_sync(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh);
+int nfs_open(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_close_sync(struct nfs_context *nfs, struct nfsfh *nfsfh);
+int nfs_close(struct nfs_context *nfs, struct nfsfh *nfsfh);
/*
* >=0 : numer of bytes read.
* -errno : An error occured.
*/
-int nfs_pread_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf);
+int nfs_pread(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf);
* >=0 : numer of bytes read.
* -errno : An error occured.
*/
-int nfs_read_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf);
+int nfs_read(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf);
* >=0 : numer of bytes written.
* -errno : An error occured.
*/
-int nfs_pwrite_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf);
+int nfs_pwrite(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf);
/*
* >=0 : numer of bytes written.
* -errno : An error occured.
*/
-int nfs_write_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf);
+int nfs_write(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf);
/*
* >=0 : numer of bytes read.
* -errno : An error occured.
*/
-int nfs_lseek_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, int whence, off_t *current_offset);
+int nfs_lseek(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, int whence, off_t *current_offset);
/*
* 0 : Success
* -errno : An error occured.
*/
-int nfs_fsync_sync(struct nfs_context *nfs, struct nfsfh *nfsfh);
+int nfs_fsync(struct nfs_context *nfs, struct nfsfh *nfsfh);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_truncate_sync(struct nfs_context *nfs, const char *path, off_t length);
+int nfs_truncate(struct nfs_context *nfs, const char *path, off_t length);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_ftruncate_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t length);
+int nfs_ftruncate(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t length);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_mkdir_sync(struct nfs_context *nfs, const char *path);
+int nfs_mkdir(struct nfs_context *nfs, const char *path);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_rmdir_sync(struct nfs_context *nfs, const char *path);
+int nfs_rmdir(struct nfs_context *nfs, const char *path);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_creat_sync(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh);
+int nfs_creat(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_unlink_sync(struct nfs_context *nfs, const char *path);
+int nfs_unlink(struct nfs_context *nfs, const char *path);
* 0 : Success
* -errno : An error occured.
*/
-int nfs_opendir_sync(struct nfs_context *nfs, const char *path, struct nfsdir **nfsdir);
+int nfs_opendir(struct nfs_context *nfs, const char *path, struct nfsdir **nfsdir);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_statvfs_sync(struct nfs_context *nfs, const char *path, struct statvfs *svfs);
+int nfs_statvfs(struct nfs_context *nfs, const char *path, struct statvfs *svfs);
/*
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_readlink_sync(struct nfs_context *nfs, const char *path, char *buf, int bufsize);
+int nfs_readlink(struct nfs_context *nfs, const char *path, char *buf, int bufsize);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_chmod_sync(struct nfs_context *nfs, const char *path, int mode);
+int nfs_chmod(struct nfs_context *nfs, const char *path, int mode);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_fchmod_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, int mode);
+int nfs_fchmod(struct nfs_context *nfs, struct nfsfh *nfsfh, int mode);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_chown_sync(struct nfs_context *nfs, const char *path, int uid, int gid);
+int nfs_chown(struct nfs_context *nfs, const char *path, int uid, int gid);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_fchown_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int gid);
+int nfs_fchown(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int gid);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_utimes_sync(struct nfs_context *nfs, const char *path, struct timeval *times);
+int nfs_utimes(struct nfs_context *nfs, const char *path, struct timeval *times);
/*
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_utime_sync(struct nfs_context *nfs, const char *path, struct utimbuf *times);
+int nfs_utime(struct nfs_context *nfs, const char *path, struct utimbuf *times);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_access_sync(struct nfs_context *nfs, const char *path, int mode);
+int nfs_access(struct nfs_context *nfs, const char *path, int mode);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_symlink_sync(struct nfs_context *nfs, const char *oldpath, const char *newpath);
+int nfs_symlink(struct nfs_context *nfs, const char *oldpath, const char *newpath);
/*
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_rename_sync(struct nfs_context *nfs, const char *oldpath, const char *newpath);
+int nfs_rename(struct nfs_context *nfs, const char *oldpath, const char *newpath);
* 0 : The operation was successfull.
* -errno : The command failed.
*/
-int nfs_link_sync(struct nfs_context *nfs, const char *oldpath, const char *newpath);
+int nfs_link(struct nfs_context *nfs, const char *oldpath, const char *newpath);
+
+
+/*
+ * GETEXPORTS()
+ */
+/*
+ * Async getexports()
+ * NOTE: You must include 'libnfs-raw-mount.h' to get the definitions of the
+ * returned structures.
+ *
+ * This function will return the list of exports from an NFS server.
+ *
+ * Function returns
+ * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
+ * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
+ *
+ * When the callback is invoked, status indicates the result:
+ * 0 : Success.
+ * data is a pointer to an exports pointer:
+ * exports export = *(exports *)data;
+ * -errno : An error occured.
+ * data is the error string.
+ */
+int mount_getexports_async(struct rpc_context *rpc, const char *server, rpc_cb cb, void *private_data);
+/*
+ * Sync getexports(<server>)
+ * Function returns
+ * NULL : something failed
+ * exports export : a linked list of exported directories
+ *
+ * returned data must be freed by calling mount_free_export_list(exportnode);
+ */
+struct exportnode *mount_getexports(const char *server);
+void mount_free_export_list(struct exportnode *exports);
//qqq replace later with lseek(cur, 0)