MCL_WILDCARD,
MCL_NETGROUP,
MCL_ANONYMOUS,
+ MCL_GSS,
MCL_MAXTYPES
};
+enum {
+ FSLOC_NONE = 0,
+ FSLOC_REFER,
+ FSLOC_REPLICA,
+ FSLOC_STUB
+};
+
typedef struct mclient {
struct mclient * m_next;
- char m_hostname[NFSCLNT_IDMAX+1];
+ char * m_hostname;
int m_type;
int m_naddr;
struct in_addr m_addrlist[NFSCLNT_ADDRMAX];
int m_exported; /* known to knfsd. -1 means not sure */
int m_xtabent : 1, /* xtab entry exists */
m_mayexport: 1, /* derived from xtabbed */
- m_changed : 1; /* options (may) have changed */
+ m_changed : 1, /* options (may) have changed */
+ m_warned : 1; /* warned about multiple exports
+ * matching one client */
} nfs_export;
extern nfs_client * clientlist[MCL_MAXTYPES];
extern nfs_export * exportlist[MCL_MAXTYPES];
-nfs_client * client_lookup(char *hname);
+nfs_client * client_lookup(char *hname, int canonical);
nfs_client * client_find(struct hostent *);
void client_add(nfs_client *);
nfs_client * client_dup(nfs_client *, struct hostent *);
int client_match(nfs_client *, char *hname);
void client_release(nfs_client *);
void client_freeall(void);
+char * client_compose(struct hostent *he);
+struct hostent * client_resolve(struct in_addr addr);
+int client_member(char *client, char *name);
int export_read(char *fname);
void export_add(nfs_export *);
void export_reset(nfs_export *);
-nfs_export * export_lookup(char *hname, char *path);
+nfs_export * export_lookup(char *hname, char *path, int caconical);
nfs_export * export_find(struct hostent *, char *path);
-struct exportent * export_allowed(struct hostent *, char *path);
-nfs_export * export_create(struct exportent *);
+nfs_export * export_allowed(struct hostent *, char *path);
+nfs_export * export_create(struct exportent *, int canonical);
nfs_export * export_dup(nfs_export *, struct hostent *);
void export_freeall(void);
int export_export(nfs_export *);
struct nfskey * key_lookup(char *hname);
+/* Record export error. */
+extern int export_errno;
+
#endif /* EXPORTFS_H */