X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Flibnfs.h;h=0676efa787c58e83aba834986be3363919b0e3b2;hb=48593f5;hp=e95cdbe589ccf81e4f209af8fe5c5ff0c56372bc;hpb=e2ba5764d46b29756973fdb20332a8fcfb5bbfd1;p=deb_libnfs.git diff --git a/include/libnfs.h b/include/libnfs.h index e95cdbe..0676efa 100644 --- a/include/libnfs.h +++ b/include/libnfs.h @@ -20,6 +20,7 @@ #include struct nfs_context; +struct rpc_context; /* * Used for interfacing the async version of the api into an external eventsystem @@ -46,6 +47,10 @@ char *nfs_get_error(struct nfs_context *nfs); */ 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); @@ -910,6 +915,64 @@ int nfs_link_async(struct nfs_context *nfs, const char *oldpath, const char *new 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() + * 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) off_t nfs_get_current_offset(struct nfsfh *nfsfh); + + + + + +struct nfs_server_list { + struct nfs_server_list *next; + char *addr; +}; + +/* + * Sync find_local_servers() + * This function will probe all local networks for NFS server. This function will + * block for one second while awaiting for all nfs servers to respond. + * + * Function returns + * NULL : something failed + * + * struct nfs_server_list : a linked list of all discovered servers + * + * returned data must be freed by nfs_free_srvr_list(srv); + */ +struct nfs_server_list *nfs_find_local_servers(void); +void free_nfs_srvr_list(struct nfs_server_list *srv);