> On Feb 13, 2018, at 9:24 AM, Steve Dickson <SteveD@xxxxxxxxxx> wrote: > > > > On 02/08/2018 12:13 PM, Chuck Lever wrote: >> nfs-utils is not going to provide an implementation of the FedFS >> ADMIN protocol, so there's no need to include the entire .x file >> for that protocol. >> >> The only piece needed (for the moment) is the enum that defines >> the FEDFS_ERR codes, which are used by the internal and external >> libjunction APIs. >> >> Suggested-by: Neil Brown <neilb@xxxxxxxx> >> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > Committed... Thanks! fwiw, nfsref seems to be working fine. I still haven't tested the mountd piece. > steved. >> --- >> support/include/Makefile.am | 1 >> support/include/fedfs_admin.h | 342 ----------------------------------------- >> support/include/junction.h | 47 +++++- >> support/junction/path.c | 1 >> utils/nfsref/add.c | 1 >> utils/nfsref/nfsref.c | 1 >> 6 files changed, 48 insertions(+), 345 deletions(-) >> delete mode 100644 support/include/fedfs_admin.h >> >> diff --git a/support/include/Makefile.am b/support/include/Makefile.am >> index 11cb162..599f500 100644 >> --- a/support/include/Makefile.am >> +++ b/support/include/Makefile.am >> @@ -5,7 +5,6 @@ SUBDIRS = nfs rpcsvc sys >> noinst_HEADERS = \ >> cld.h \ >> exportfs.h \ >> - fedfs_admin.h \ >> ha-callout.h \ >> junction.h \ >> misc.h \ >> diff --git a/support/include/fedfs_admin.h b/support/include/fedfs_admin.h >> deleted file mode 100644 >> index d8b6715..0000000 >> --- a/support/include/fedfs_admin.h >> +++ /dev/null >> @@ -1,342 +0,0 @@ >> -/* >> - * Please do not edit this file. >> - * It was generated using rpcgen. >> - */ >> - >> -#ifndef _FEDFS_ADMIN_H_RPCGEN >> -#define _FEDFS_ADMIN_H_RPCGEN >> - >> -#include <rpc/rpc.h> >> - >> - >> -#ifdef __cplusplus >> -extern "C" { >> -#endif >> - >> - >> -enum FedFsStatus { >> - FEDFS_OK = 0, >> - FEDFS_ERR_ACCESS = 1, >> - FEDFS_ERR_BADCHAR = 2, >> - FEDFS_ERR_BADNAME = 3, >> - FEDFS_ERR_NAMETOOLONG = 4, >> - FEDFS_ERR_LOOP = 5, >> - FEDFS_ERR_BADXDR = 6, >> - FEDFS_ERR_EXIST = 7, >> - FEDFS_ERR_INVAL = 8, >> - FEDFS_ERR_IO = 9, >> - FEDFS_ERR_NOSPC = 10, >> - FEDFS_ERR_NOTJUNCT = 11, >> - FEDFS_ERR_NOTLOCAL = 12, >> - FEDFS_ERR_PERM = 13, >> - FEDFS_ERR_ROFS = 14, >> - FEDFS_ERR_SVRFAULT = 15, >> - FEDFS_ERR_NOTSUPP = 16, >> - FEDFS_ERR_NSDB_ROUTE = 17, >> - FEDFS_ERR_NSDB_DOWN = 18, >> - FEDFS_ERR_NSDB_CONN = 19, >> - FEDFS_ERR_NSDB_AUTH = 20, >> - FEDFS_ERR_NSDB_LDAP = 21, >> - FEDFS_ERR_NSDB_LDAP_VAL = 22, >> - FEDFS_ERR_NSDB_NONCE = 23, >> - FEDFS_ERR_NSDB_NOFSN = 24, >> - FEDFS_ERR_NSDB_NOFSL = 25, >> - FEDFS_ERR_NSDB_RESPONSE = 26, >> - FEDFS_ERR_NSDB_FAULT = 27, >> - FEDFS_ERR_NSDB_PARAMS = 28, >> - FEDFS_ERR_NSDB_LDAP_REFERRAL = 29, >> - FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL = 30, >> - FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED = 31, >> - FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL = 32, >> - FEDFS_ERR_PATH_TYPE_UNSUPP = 33, >> - FEDFS_ERR_DELAY = 34, >> - FEDFS_ERR_NO_CACHE = 35, >> - FEDFS_ERR_UNKNOWN_CACHE = 36, >> - FEDFS_ERR_NO_CACHE_UPDATE = 37, >> -}; >> -typedef enum FedFsStatus FedFsStatus; >> - >> -typedef struct { >> - u_int utf8string_len; >> - char *utf8string_val; >> -} utf8string; >> - >> -typedef utf8string ascii_REQUIRED4; >> - >> -typedef utf8string utf8val_REQUIRED4; >> - >> -typedef char FedFsUuid[16]; >> - >> -struct FedFsNsdbName { >> - u_int port; >> - utf8val_REQUIRED4 hostname; >> -}; >> -typedef struct FedFsNsdbName FedFsNsdbName; >> - >> -typedef ascii_REQUIRED4 FedFsPathComponent; >> - >> -typedef struct { >> - u_int FedFsPathName_len; >> - FedFsPathComponent *FedFsPathName_val; >> -} FedFsPathName; >> - >> -struct FedFsFsn { >> - FedFsUuid fsnUuid; >> - FedFsNsdbName nsdbName; >> -}; >> -typedef struct FedFsFsn FedFsFsn; >> - >> -enum FedFsFslType { >> - FEDFS_NFS_FSL = 0, >> -}; >> -typedef enum FedFsFslType FedFsFslType; >> - >> -struct FedFsNfsFsl { >> - FedFsUuid fslUuid; >> - u_int port; >> - utf8val_REQUIRED4 hostname; >> - FedFsPathName path; >> -}; >> -typedef struct FedFsNfsFsl FedFsNfsFsl; >> - >> -struct FedFsFsl { >> - FedFsFslType type; >> - union { >> - FedFsNfsFsl nfsFsl; >> - } FedFsFsl_u; >> -}; >> -typedef struct FedFsFsl FedFsFsl; >> - >> -enum FedFsPathType { >> - FEDFS_PATH_SYS = 0, >> - FEDFS_PATH_NFS = 1, >> -}; >> -typedef enum FedFsPathType FedFsPathType; >> - >> -struct FedFsPath { >> - FedFsPathType type; >> - union { >> - FedFsPathName adminPath; >> - FedFsPathName nfsPath; >> - } FedFsPath_u; >> -}; >> -typedef struct FedFsPath FedFsPath; >> - >> -struct FedFsCreateArgs { >> - FedFsPath path; >> - FedFsFsn fsn; >> -}; >> -typedef struct FedFsCreateArgs FedFsCreateArgs; >> - >> -enum FedFsResolveType { >> - FEDFS_RESOLVE_NONE = 0, >> - FEDFS_RESOLVE_CACHE = 1, >> - FEDFS_RESOLVE_NSDB = 2, >> -}; >> -typedef enum FedFsResolveType FedFsResolveType; >> - >> -struct FedFsLookupArgs { >> - FedFsPath path; >> - FedFsResolveType resolve; >> -}; >> -typedef struct FedFsLookupArgs FedFsLookupArgs; >> - >> -struct FedFsLookupResOk { >> - FedFsFsn fsn; >> - struct { >> - u_int fsl_len; >> - FedFsFsl *fsl_val; >> - } fsl; >> -}; >> -typedef struct FedFsLookupResOk FedFsLookupResOk; >> - >> -struct FedFsLookupResReferralVal { >> - FedFsNsdbName targetNsdb; >> - u_int ldapResultCode; >> -}; >> -typedef struct FedFsLookupResReferralVal FedFsLookupResReferralVal; >> - >> -struct FedFsLookupRes { >> - FedFsStatus status; >> - union { >> - FedFsLookupResOk resok; >> - u_int ldapResultCode; >> - FedFsNsdbName targetNsdb; >> - FedFsLookupResReferralVal resReferralVal; >> - } FedFsLookupRes_u; >> -}; >> -typedef struct FedFsLookupRes FedFsLookupRes; >> - >> -enum FedFsConnectionSec { >> - FEDFS_SEC_NONE = 0, >> - FEDFS_SEC_TLS = 1, >> -}; >> -typedef enum FedFsConnectionSec FedFsConnectionSec; >> - >> -struct FedFsNsdbParams { >> - FedFsConnectionSec secType; >> - union { >> - struct { >> - u_int secData_len; >> - char *secData_val; >> - } secData; >> - } FedFsNsdbParams_u; >> -}; >> -typedef struct FedFsNsdbParams FedFsNsdbParams; >> - >> -struct FedFsSetNsdbParamsArgs { >> - FedFsNsdbName nsdbName; >> - FedFsNsdbParams params; >> -}; >> -typedef struct FedFsSetNsdbParamsArgs FedFsSetNsdbParamsArgs; >> - >> -struct FedFsGetNsdbParamsRes { >> - FedFsStatus status; >> - union { >> - FedFsNsdbParams params; >> - } FedFsGetNsdbParamsRes_u; >> -}; >> -typedef struct FedFsGetNsdbParamsRes FedFsGetNsdbParamsRes; >> - >> -struct FedFsGetLimitedNsdbParamsRes { >> - FedFsStatus status; >> - union { >> - FedFsConnectionSec secType; >> - } FedFsGetLimitedNsdbParamsRes_u; >> -}; >> -typedef struct FedFsGetLimitedNsdbParamsRes FedFsGetLimitedNsdbParamsRes; >> -#define FEDFS_ADMIN_X >> - >> -#define FEDFS_PROG 100418 >> -#define FEDFS_V1 1 >> - >> -#if defined(__STDC__) || defined(__cplusplus) >> -#define FEDFS_NULL 0 >> -extern void * fedfs_null_1(void *, CLIENT *); >> -extern void * fedfs_null_1_svc(void *, struct svc_req *); >> -#define FEDFS_CREATE_JUNCTION 1 >> -extern FedFsStatus * fedfs_create_junction_1(FedFsCreateArgs *, CLIENT *); >> -extern FedFsStatus * fedfs_create_junction_1_svc(FedFsCreateArgs *, struct svc_req *); >> -#define FEDFS_DELETE_JUNCTION 2 >> -extern FedFsStatus * fedfs_delete_junction_1(FedFsPath *, CLIENT *); >> -extern FedFsStatus * fedfs_delete_junction_1_svc(FedFsPath *, struct svc_req *); >> -#define FEDFS_LOOKUP_JUNCTION 3 >> -extern FedFsLookupRes * fedfs_lookup_junction_1(FedFsLookupArgs *, CLIENT *); >> -extern FedFsLookupRes * fedfs_lookup_junction_1_svc(FedFsLookupArgs *, struct svc_req *); >> -#define FEDFS_CREATE_REPLICATION 7 >> -extern FedFsStatus * fedfs_create_replication_1(FedFsCreateArgs *, CLIENT *); >> -extern FedFsStatus * fedfs_create_replication_1_svc(FedFsCreateArgs *, struct svc_req *); >> -#define FEDFS_DELETE_REPLICATION 8 >> -extern FedFsStatus * fedfs_delete_replication_1(FedFsPath *, CLIENT *); >> -extern FedFsStatus * fedfs_delete_replication_1_svc(FedFsPath *, struct svc_req *); >> -#define FEDFS_LOOKUP_REPLICATION 9 >> -extern FedFsLookupRes * fedfs_lookup_replication_1(FedFsLookupArgs *, CLIENT *); >> -extern FedFsLookupRes * fedfs_lookup_replication_1_svc(FedFsLookupArgs *, struct svc_req *); >> -#define FEDFS_SET_NSDB_PARAMS 4 >> -extern FedFsStatus * fedfs_set_nsdb_params_1(FedFsSetNsdbParamsArgs *, CLIENT *); >> -extern FedFsStatus * fedfs_set_nsdb_params_1_svc(FedFsSetNsdbParamsArgs *, struct svc_req *); >> -#define FEDFS_GET_NSDB_PARAMS 5 >> -extern FedFsGetNsdbParamsRes * fedfs_get_nsdb_params_1(FedFsNsdbName *, CLIENT *); >> -extern FedFsGetNsdbParamsRes * fedfs_get_nsdb_params_1_svc(FedFsNsdbName *, struct svc_req *); >> -#define FEDFS_GET_LIMITED_NSDB_PARAMS 6 >> -extern FedFsGetLimitedNsdbParamsRes * fedfs_get_limited_nsdb_params_1(FedFsNsdbName *, CLIENT *); >> -extern FedFsGetLimitedNsdbParamsRes * fedfs_get_limited_nsdb_params_1_svc(FedFsNsdbName *, struct svc_req *); >> -extern int fedfs_prog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); >> - >> -#else /* K&R C */ >> -#define FEDFS_NULL 0 >> -extern void * fedfs_null_1(); >> -extern void * fedfs_null_1_svc(); >> -#define FEDFS_CREATE_JUNCTION 1 >> -extern FedFsStatus * fedfs_create_junction_1(); >> -extern FedFsStatus * fedfs_create_junction_1_svc(); >> -#define FEDFS_DELETE_JUNCTION 2 >> -extern FedFsStatus * fedfs_delete_junction_1(); >> -extern FedFsStatus * fedfs_delete_junction_1_svc(); >> -#define FEDFS_LOOKUP_JUNCTION 3 >> -extern FedFsLookupRes * fedfs_lookup_junction_1(); >> -extern FedFsLookupRes * fedfs_lookup_junction_1_svc(); >> -#define FEDFS_CREATE_REPLICATION 7 >> -extern FedFsStatus * fedfs_create_replication_1(); >> -extern FedFsStatus * fedfs_create_replication_1_svc(); >> -#define FEDFS_DELETE_REPLICATION 8 >> -extern FedFsStatus * fedfs_delete_replication_1(); >> -extern FedFsStatus * fedfs_delete_replication_1_svc(); >> -#define FEDFS_LOOKUP_REPLICATION 9 >> -extern FedFsLookupRes * fedfs_lookup_replication_1(); >> -extern FedFsLookupRes * fedfs_lookup_replication_1_svc(); >> -#define FEDFS_SET_NSDB_PARAMS 4 >> -extern FedFsStatus * fedfs_set_nsdb_params_1(); >> -extern FedFsStatus * fedfs_set_nsdb_params_1_svc(); >> -#define FEDFS_GET_NSDB_PARAMS 5 >> -extern FedFsGetNsdbParamsRes * fedfs_get_nsdb_params_1(); >> -extern FedFsGetNsdbParamsRes * fedfs_get_nsdb_params_1_svc(); >> -#define FEDFS_GET_LIMITED_NSDB_PARAMS 6 >> -extern FedFsGetLimitedNsdbParamsRes * fedfs_get_limited_nsdb_params_1(); >> -extern FedFsGetLimitedNsdbParamsRes * fedfs_get_limited_nsdb_params_1_svc(); >> -extern int fedfs_prog_1_freeresult (); >> -#endif /* K&R C */ >> - >> -/* the xdr functions */ >> - >> -#if defined(__STDC__) || defined(__cplusplus) >> -extern bool_t xdr_FedFsStatus (XDR *, FedFsStatus*); >> -extern bool_t xdr_utf8string (XDR *, utf8string*); >> -extern bool_t xdr_ascii_REQUIRED4 (XDR *, ascii_REQUIRED4*); >> -extern bool_t xdr_utf8val_REQUIRED4 (XDR *, utf8val_REQUIRED4*); >> -extern bool_t xdr_FedFsUuid (XDR *, FedFsUuid); >> -extern bool_t xdr_FedFsNsdbName (XDR *, FedFsNsdbName*); >> -extern bool_t xdr_FedFsPathComponent (XDR *, FedFsPathComponent*); >> -extern bool_t xdr_FedFsPathName (XDR *, FedFsPathName*); >> -extern bool_t xdr_FedFsFsn (XDR *, FedFsFsn*); >> -extern bool_t xdr_FedFsFslType (XDR *, FedFsFslType*); >> -extern bool_t xdr_FedFsNfsFsl (XDR *, FedFsNfsFsl*); >> -extern bool_t xdr_FedFsFsl (XDR *, FedFsFsl*); >> -extern bool_t xdr_FedFsPathType (XDR *, FedFsPathType*); >> -extern bool_t xdr_FedFsPath (XDR *, FedFsPath*); >> -extern bool_t xdr_FedFsCreateArgs (XDR *, FedFsCreateArgs*); >> -extern bool_t xdr_FedFsResolveType (XDR *, FedFsResolveType*); >> -extern bool_t xdr_FedFsLookupArgs (XDR *, FedFsLookupArgs*); >> -extern bool_t xdr_FedFsLookupResOk (XDR *, FedFsLookupResOk*); >> -extern bool_t xdr_FedFsLookupResReferralVal (XDR *, FedFsLookupResReferralVal*); >> -extern bool_t xdr_FedFsLookupRes (XDR *, FedFsLookupRes*); >> -extern bool_t xdr_FedFsConnectionSec (XDR *, FedFsConnectionSec*); >> -extern bool_t xdr_FedFsNsdbParams (XDR *, FedFsNsdbParams*); >> -extern bool_t xdr_FedFsSetNsdbParamsArgs (XDR *, FedFsSetNsdbParamsArgs*); >> -extern bool_t xdr_FedFsGetNsdbParamsRes (XDR *, FedFsGetNsdbParamsRes*); >> -extern bool_t xdr_FedFsGetLimitedNsdbParamsRes (XDR *, FedFsGetLimitedNsdbParamsRes*); >> - >> -#else /* K&R C */ >> -extern bool_t xdr_FedFsStatus (); >> -extern bool_t xdr_utf8string (); >> -extern bool_t xdr_ascii_REQUIRED4 (); >> -extern bool_t xdr_utf8val_REQUIRED4 (); >> -extern bool_t xdr_FedFsUuid (); >> -extern bool_t xdr_FedFsNsdbName (); >> -extern bool_t xdr_FedFsPathComponent (); >> -extern bool_t xdr_FedFsPathName (); >> -extern bool_t xdr_FedFsFsn (); >> -extern bool_t xdr_FedFsFslType (); >> -extern bool_t xdr_FedFsNfsFsl (); >> -extern bool_t xdr_FedFsFsl (); >> -extern bool_t xdr_FedFsPathType (); >> -extern bool_t xdr_FedFsPath (); >> -extern bool_t xdr_FedFsCreateArgs (); >> -extern bool_t xdr_FedFsResolveType (); >> -extern bool_t xdr_FedFsLookupArgs (); >> -extern bool_t xdr_FedFsLookupResOk (); >> -extern bool_t xdr_FedFsLookupResReferralVal (); >> -extern bool_t xdr_FedFsLookupRes (); >> -extern bool_t xdr_FedFsConnectionSec (); >> -extern bool_t xdr_FedFsNsdbParams (); >> -extern bool_t xdr_FedFsSetNsdbParamsArgs (); >> -extern bool_t xdr_FedFsGetNsdbParamsRes (); >> -extern bool_t xdr_FedFsGetLimitedNsdbParamsRes (); >> - >> -#endif /* K&R C */ >> - >> -#ifdef __cplusplus >> -} >> -#endif >> - >> -#endif /* !_FEDFS_ADMIN_H_RPCGEN */ >> diff --git a/support/include/junction.h b/support/include/junction.h >> index 67cf017..7257d80 100644 >> --- a/support/include/junction.h >> +++ b/support/include/junction.h >> @@ -28,8 +28,51 @@ >> >> #include <stdint.h> >> >> -/* Machine-generated XDR definitions for FedFS Admin protocol */ >> -#include "fedfs_admin.h" >> +/* >> + * The libjunction APIs use the status codes from the FedFS ADMIN >> + * protocol, which includes non-errno codes like FEDFS_ERR_NOTJUNCT. >> + */ >> +enum FedFsStatus { >> + FEDFS_OK = 0, >> + FEDFS_ERR_ACCESS = 1, >> + FEDFS_ERR_BADCHAR = 2, >> + FEDFS_ERR_BADNAME = 3, >> + FEDFS_ERR_NAMETOOLONG = 4, >> + FEDFS_ERR_LOOP = 5, >> + FEDFS_ERR_BADXDR = 6, >> + FEDFS_ERR_EXIST = 7, >> + FEDFS_ERR_INVAL = 8, >> + FEDFS_ERR_IO = 9, >> + FEDFS_ERR_NOSPC = 10, >> + FEDFS_ERR_NOTJUNCT = 11, >> + FEDFS_ERR_NOTLOCAL = 12, >> + FEDFS_ERR_PERM = 13, >> + FEDFS_ERR_ROFS = 14, >> + FEDFS_ERR_SVRFAULT = 15, >> + FEDFS_ERR_NOTSUPP = 16, >> + FEDFS_ERR_NSDB_ROUTE = 17, >> + FEDFS_ERR_NSDB_DOWN = 18, >> + FEDFS_ERR_NSDB_CONN = 19, >> + FEDFS_ERR_NSDB_AUTH = 20, >> + FEDFS_ERR_NSDB_LDAP = 21, >> + FEDFS_ERR_NSDB_LDAP_VAL = 22, >> + FEDFS_ERR_NSDB_NONCE = 23, >> + FEDFS_ERR_NSDB_NOFSN = 24, >> + FEDFS_ERR_NSDB_NOFSL = 25, >> + FEDFS_ERR_NSDB_RESPONSE = 26, >> + FEDFS_ERR_NSDB_FAULT = 27, >> + FEDFS_ERR_NSDB_PARAMS = 28, >> + FEDFS_ERR_NSDB_LDAP_REFERRAL = 29, >> + FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL = 30, >> + FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED = 31, >> + FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL = 32, >> + FEDFS_ERR_PATH_TYPE_UNSUPP = 33, >> + FEDFS_ERR_DELAY = 34, >> + FEDFS_ERR_NO_CACHE = 35, >> + FEDFS_ERR_UNKNOWN_CACHE = 36, >> + FEDFS_ERR_NO_CACHE_UPDATE = 37, >> +}; >> +typedef enum FedFsStatus FedFsStatus; >> >> /** >> * Contains NFS fileset location information >> diff --git a/support/junction/path.c b/support/junction/path.c >> index d33808f..68a1d13 100644 >> --- a/support/junction/path.c >> +++ b/support/junction/path.c >> @@ -33,6 +33,7 @@ >> #include <stdio.h> >> #include <string.h> >> #include <errno.h> >> +#include <dirent.h> >> >> #include <netinet/in.h> >> >> diff --git a/utils/nfsref/add.c b/utils/nfsref/add.c >> index d5d0cf8..781aeee 100644 >> --- a/utils/nfsref/add.c >> +++ b/utils/nfsref/add.c >> @@ -29,6 +29,7 @@ >> #include <stdbool.h> >> #include <stdint.h> >> #include <stdlib.h> >> +#include <string.h> >> #include <stdio.h> >> #include <unistd.h> >> #include <errno.h> >> diff --git a/utils/nfsref/nfsref.c b/utils/nfsref/nfsref.c >> index ff7013e..7f97d01 100644 >> --- a/utils/nfsref/nfsref.c >> +++ b/utils/nfsref/nfsref.c >> @@ -33,6 +33,7 @@ >> #include <stdlib.h> >> #include <stdio.h> >> #include <unistd.h> >> +#include <string.h> >> #include <fcntl.h> >> #include <getopt.h> >> #include <time.h> >> > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Chuck Lever -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html