nfs-ganesha 1.4
Defines | Functions

exports.c File Reference

#include "cidr.h"
#include "ganesha_rpc.h"
#include "log.h"
#include "fsal.h"
#include "nfs23.h"
#include "nfs4.h"
#include "mount.h"
#include "nfs_core.h"
#include "cache_inode.h"
#include "nfs_file_handle.h"
#include "nfs_exports.h"
#include "nfs_tools.h"
#include "nfs_proto_functions.h"
#include "nfs_dupreq.h"
#include "config_parsing.h"
#include "common_utils.h"
#include "nodelist.h"
#include <stdlib.h>
#include <fnmatch.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <ctype.h>

Go to the source code of this file.

Defines

#define LASTDEFAULT   1048576
#define STRCMP   strcasecmp
#define CONF_LABEL_EXPORT   "EXPORT"
#define CONF_EXPORT_ID   "Export_id"
#define CONF_EXPORT_PATH   "Path"
#define CONF_EXPORT_ROOT   "Root_Access"
#define CONF_EXPORT_ACCESS   "Access"
#define CONF_EXPORT_READ_ACCESS   "R_Access"
#define CONF_EXPORT_READWRITE_ACCESS   "RW_Access"
#define CONF_EXPORT_MD_ACCESS   "MDONLY_Access"
#define CONF_EXPORT_MD_RO_ACCESS   "MDONLY_RO_Access"
#define CONF_EXPORT_PSEUDO   "Pseudo"
#define CONF_EXPORT_ACCESSTYPE   "Access_Type"
#define CONF_EXPORT_ANON_USER   "Anonymous_uid"
#define CONF_EXPORT_ANON_ROOT   "Anonymous_root_uid"
#define CONF_EXPORT_ALL_ANON   "Make_All_Users_Anonymous"
#define CONF_EXPORT_ANON_GROUP   "Anonymous_gid"
#define CONF_EXPORT_NFS_PROTO   "NFS_Protocols"
#define CONF_EXPORT_TRANS_PROTO   "Transport_Protocols"
#define CONF_EXPORT_SECTYPE   "SecType"
#define CONF_EXPORT_MAX_READ   "MaxRead"
#define CONF_EXPORT_MAX_WRITE   "MaxWrite"
#define CONF_EXPORT_PREF_READ   "PrefRead"
#define CONF_EXPORT_PREF_WRITE   "PrefWrite"
#define CONF_EXPORT_PREF_READDIR   "PrefReaddir"
#define CONF_EXPORT_FSID   "Filesystem_id"
#define CONF_EXPORT_NOSUID   "NOSUID"
#define CONF_EXPORT_NOSGID   "NOSGID"
#define CONF_EXPORT_PRIVILEGED_PORT   "PrivilegedPort"
#define CONF_EXPORT_USE_DATACACHE   "Cache_Data"
#define CONF_EXPORT_FS_SPECIFIC   "FS_Specific"
#define CONF_EXPORT_FS_TAG   "Tag"
#define CONF_EXPORT_MAX_OFF_WRITE   "MaxOffsetWrite"
#define CONF_EXPORT_MAX_OFF_READ   "MaxOffsetRead"
#define CONF_EXPORT_MAX_CACHE_SIZE   "MaxCacheSize"
#define CONF_EXPORT_REFERRAL   "Referral"
#define CONF_EXPORT_PNFS   "Use_pNFS"
#define CONF_EXPORT_UQUOTA   "User_Quota"
#define CONF_EXPORT_USE_COMMIT   "Use_NFS_Commit"
#define CONF_EXPORT_USE_GANESHA_WRITE_BUFFER   "Use_Ganesha_Write_Buffer"
#define CONF_EXPORT_USE_FSAL_UP   "Use_FSAL_UP"
#define CONF_EXPORT_FSAL_UP_FILTERS   "FSAL_UP_Filters"
#define CONF_EXPORT_FSAL_UP_TIMEOUT   "FSAL_UP_Timeout"
#define CONF_EXPORT_FSAL_UP_TYPE   "FSAL_UP_Type"
#define CONF_EXPORT_USE_COOKIE_VERIFIER   "UseCookieVerifier"
#define FLAG_EXPORT_ID   0x000000001
#define FLAG_EXPORT_PATH   0x000000002
#define FLAG_EXPORT_ROOT_OR_ACCESS   0x000000004
#define FLAG_EXPORT_PSEUDO   0x000000010
#define FLAG_EXPORT_ACCESSTYPE   0x000000020
#define FLAG_EXPORT_ANON_ROOT   0x000000040
#define FLAG_EXPORT_NFS_PROTO   0x000000080
#define FLAG_EXPORT_TRANS_PROTO   0x000000100
#define FLAG_EXPORT_SECTYPE   0x000000200
#define FLAG_EXPORT_MAX_READ   0x000000400
#define FLAG_EXPORT_MAX_WRITE   0x000000800
#define FLAG_EXPORT_PREF_READ   0x000001000
#define FLAG_EXPORT_PREF_WRITE   0x000002000
#define FLAG_EXPORT_PREF_READDIR   0x000004000
#define FLAG_EXPORT_FSID   0x000008000
#define FLAG_EXPORT_NOSUID   0x000010000
#define FLAG_EXPORT_NOSGID   0x000020000
#define FLAG_EXPORT_PRIVILEGED_PORT   0x000040000
#define FLAG_EXPORT_USE_DATACACHE   0x000080000
#define FLAG_EXPORT_FS_SPECIFIC   0x000100000
#define FLAG_EXPORT_FS_TAG   0x000200000
#define FLAG_EXPORT_MAX_OFF_WRITE   0x000400000
#define FLAG_EXPORT_MAX_OFF_READ   0x000800000
#define FLAG_EXPORT_MAX_CACHE_SIZE   0x001000000
#define FLAG_EXPORT_USE_PNFS   0x002000000
#define FLAG_EXPORT_ACCESS_LIST   0x004000000
#define FLAG_EXPORT_ACCESSTYPE_LIST   0x008000000
#define FLAG_EXPORT_ANON_GROUP   0x010000000
#define FLAG_EXPORT_ALL_ANON   0x020000000
#define FLAG_EXPORT_ANON_USER   0x040000000
#define FLAG_EXPORT_CACHE_POLICY   0x080000000
#define FLAG_EXPORT_USE_UQUOTA   0x100000000
#define EXPORT_MAX_CLIENTS   EXPORTS_NB_MAX_CLIENTS
#define EXPORT_MAX_CLIENTLEN   256
#define DEFINED_TWICE_WARNING(_str_)
#define MAX_NFSPROTO   10
#define MAX_NFSPROTO_LEN   256
#define MAX_TRANSPROTO   10
#define MAX_TRANSPROTO_LEN   256
#define MAX_SECTYPE   10
#define MAX_SECTYPE_LEN   256

Functions

int nfs_ParseConfLine (char *Argv[], int nbArgv, char *line, int(*separator_function)(char), int(*endLine_func)(char))
int nfs_LookupNetworkAddr (char *host, unsigned long *netAddr, unsigned long *netMask)
int nfs_AddClientsToClientArray (exportlist_client_t *clients, int new_clients_number, char **new_clients_name, int option)
int parseAccessParam (char *var_name, char *var_value, exportlist_t *p_entry, int access_option)
bool_t fsal_specific_checks (exportlist_t *p_entry)
exportlist_tBuildDefaultExport ()
int ReadExports (config_file_t in_config, exportlist_t **ppexportlist)
int export_client_match (sockaddr_t *hostaddr, char *ipstring, exportlist_client_t *clients, exportlist_client_entry_t *pclient_found, unsigned int export_option)
int export_client_matchv6 (struct in6_addr *paddrv6, exportlist_client_t *clients, exportlist_client_entry_t *pclient_found, unsigned int export_option)
int nfs_export_check_security (struct svc_req *req, exportlist_t *pexport)
int nfs_export_check_access (sockaddr_t *hostaddr, struct svc_req *ptr_req, exportlist_t *pexport, unsigned int nfs_prog, unsigned int mnt_prog, hash_table_t *ht_ip_stats, pool_t *ip_stats_pool, exportlist_client_entry_t *pclient_found, struct user_cred *user_credentials, bool_t proc_makes_write)
int nfs_export_create_root_entry (exportlist_t *pexportlist)
int CleanUpExportContext (fsal_export_context_t *p_export_context)
exportlist_tRemoveExportEntry (exportlist_t *exportEntry)
exportlist_tGetExportEntry (char *exportPath)

Detailed Description

What is needed to parse the exports file.

Definition in file exports.c.


Define Documentation

#define CONF_EXPORT_ACCESS   "Access"

Definition at line 78 of file exports.c.

#define CONF_EXPORT_ACCESSTYPE   "Access_Type"

Definition at line 84 of file exports.c.

#define CONF_EXPORT_ALL_ANON   "Make_All_Users_Anonymous"

Definition at line 87 of file exports.c.

#define CONF_EXPORT_ANON_GROUP   "Anonymous_gid"

Definition at line 88 of file exports.c.

#define CONF_EXPORT_ANON_ROOT   "Anonymous_root_uid"

Definition at line 86 of file exports.c.

#define CONF_EXPORT_ANON_USER   "Anonymous_uid"

Definition at line 85 of file exports.c.

#define CONF_EXPORT_FS_SPECIFIC   "FS_Specific"

Definition at line 102 of file exports.c.

#define CONF_EXPORT_FS_TAG   "Tag"

Definition at line 103 of file exports.c.

#define CONF_EXPORT_FSAL_UP_FILTERS   "FSAL_UP_Filters"

Definition at line 113 of file exports.c.

#define CONF_EXPORT_FSAL_UP_TIMEOUT   "FSAL_UP_Timeout"

Definition at line 114 of file exports.c.

#define CONF_EXPORT_FSAL_UP_TYPE   "FSAL_UP_Type"

Definition at line 115 of file exports.c.

#define CONF_EXPORT_FSID   "Filesystem_id"

Definition at line 97 of file exports.c.

#define CONF_EXPORT_ID   "Export_id"

Definition at line 75 of file exports.c.

#define CONF_EXPORT_MAX_CACHE_SIZE   "MaxCacheSize"

Definition at line 106 of file exports.c.

#define CONF_EXPORT_MAX_OFF_READ   "MaxOffsetRead"

Definition at line 105 of file exports.c.

#define CONF_EXPORT_MAX_OFF_WRITE   "MaxOffsetWrite"

Definition at line 104 of file exports.c.

#define CONF_EXPORT_MAX_READ   "MaxRead"

Definition at line 92 of file exports.c.

#define CONF_EXPORT_MAX_WRITE   "MaxWrite"

Definition at line 93 of file exports.c.

#define CONF_EXPORT_MD_ACCESS   "MDONLY_Access"

Definition at line 81 of file exports.c.

#define CONF_EXPORT_MD_RO_ACCESS   "MDONLY_RO_Access"

Definition at line 82 of file exports.c.

#define CONF_EXPORT_NFS_PROTO   "NFS_Protocols"

Definition at line 89 of file exports.c.

#define CONF_EXPORT_NOSGID   "NOSGID"

Definition at line 99 of file exports.c.

#define CONF_EXPORT_NOSUID   "NOSUID"

Definition at line 98 of file exports.c.

#define CONF_EXPORT_PATH   "Path"

Definition at line 76 of file exports.c.

#define CONF_EXPORT_PNFS   "Use_pNFS"

Definition at line 108 of file exports.c.

#define CONF_EXPORT_PREF_READ   "PrefRead"

Definition at line 94 of file exports.c.

#define CONF_EXPORT_PREF_READDIR   "PrefReaddir"

Definition at line 96 of file exports.c.

#define CONF_EXPORT_PREF_WRITE   "PrefWrite"

Definition at line 95 of file exports.c.

#define CONF_EXPORT_PRIVILEGED_PORT   "PrivilegedPort"

Definition at line 100 of file exports.c.

#define CONF_EXPORT_PSEUDO   "Pseudo"

Definition at line 83 of file exports.c.

#define CONF_EXPORT_READ_ACCESS   "R_Access"

Definition at line 79 of file exports.c.

#define CONF_EXPORT_READWRITE_ACCESS   "RW_Access"

Definition at line 80 of file exports.c.

#define CONF_EXPORT_REFERRAL   "Referral"

Definition at line 107 of file exports.c.

#define CONF_EXPORT_ROOT   "Root_Access"

Definition at line 77 of file exports.c.

#define CONF_EXPORT_SECTYPE   "SecType"

Definition at line 91 of file exports.c.

#define CONF_EXPORT_TRANS_PROTO   "Transport_Protocols"

Definition at line 90 of file exports.c.

#define CONF_EXPORT_UQUOTA   "User_Quota"

Definition at line 109 of file exports.c.

#define CONF_EXPORT_USE_COMMIT   "Use_NFS_Commit"

Definition at line 110 of file exports.c.

#define CONF_EXPORT_USE_COOKIE_VERIFIER   "UseCookieVerifier"

Definition at line 116 of file exports.c.

#define CONF_EXPORT_USE_DATACACHE   "Cache_Data"

Definition at line 101 of file exports.c.

#define CONF_EXPORT_USE_FSAL_UP   "Use_FSAL_UP"

Definition at line 112 of file exports.c.

#define CONF_EXPORT_USE_GANESHA_WRITE_BUFFER   "Use_Ganesha_Write_Buffer"

Definition at line 111 of file exports.c.

#define CONF_LABEL_EXPORT   "EXPORT"

Definition at line 72 of file exports.c.

#define DEFINED_TWICE_WARNING (   _str_)
Value:
LogWarn(COMPONENT_CONFIG,            \
          "NFS READ_EXPORT: WARNING: %s defined twice !!! (ignored)", _str_ )

Definition at line 518 of file exports.c.

#define EXPORT_MAX_CLIENTLEN   256

Definition at line 159 of file exports.c.

#define EXPORT_MAX_CLIENTS   EXPORTS_NB_MAX_CLIENTS

Definition at line 158 of file exports.c.

#define FLAG_EXPORT_ACCESS_LIST   0x004000000

Definition at line 148 of file exports.c.

#define FLAG_EXPORT_ACCESSTYPE   0x000000020

Definition at line 127 of file exports.c.

#define FLAG_EXPORT_ACCESSTYPE_LIST   0x008000000

Definition at line 149 of file exports.c.

#define FLAG_EXPORT_ALL_ANON   0x020000000

Definition at line 151 of file exports.c.

#define FLAG_EXPORT_ANON_GROUP   0x010000000

Definition at line 150 of file exports.c.

#define FLAG_EXPORT_ANON_ROOT   0x000000040

Definition at line 128 of file exports.c.

#define FLAG_EXPORT_ANON_USER   0x040000000

Definition at line 152 of file exports.c.

#define FLAG_EXPORT_CACHE_POLICY   0x080000000

Definition at line 153 of file exports.c.

#define FLAG_EXPORT_FS_SPECIFIC   0x000100000

Definition at line 142 of file exports.c.

#define FLAG_EXPORT_FS_TAG   0x000200000

Definition at line 143 of file exports.c.

#define FLAG_EXPORT_FSID   0x000008000

Definition at line 137 of file exports.c.

#define FLAG_EXPORT_ID   0x000000001
Todo:
: add encrypt handles option

Definition at line 121 of file exports.c.

#define FLAG_EXPORT_MAX_CACHE_SIZE   0x001000000

Definition at line 146 of file exports.c.

#define FLAG_EXPORT_MAX_OFF_READ   0x000800000

Definition at line 145 of file exports.c.

#define FLAG_EXPORT_MAX_OFF_WRITE   0x000400000

Definition at line 144 of file exports.c.

#define FLAG_EXPORT_MAX_READ   0x000000400

Definition at line 132 of file exports.c.

#define FLAG_EXPORT_MAX_WRITE   0x000000800

Definition at line 133 of file exports.c.

#define FLAG_EXPORT_NFS_PROTO   0x000000080

Definition at line 129 of file exports.c.

#define FLAG_EXPORT_NOSGID   0x000020000

Definition at line 139 of file exports.c.

#define FLAG_EXPORT_NOSUID   0x000010000

Definition at line 138 of file exports.c.

#define FLAG_EXPORT_PATH   0x000000002

Definition at line 122 of file exports.c.

#define FLAG_EXPORT_PREF_READ   0x000001000

Definition at line 134 of file exports.c.

#define FLAG_EXPORT_PREF_READDIR   0x000004000

Definition at line 136 of file exports.c.

#define FLAG_EXPORT_PREF_WRITE   0x000002000

Definition at line 135 of file exports.c.

#define FLAG_EXPORT_PRIVILEGED_PORT   0x000040000

Definition at line 140 of file exports.c.

#define FLAG_EXPORT_PSEUDO   0x000000010

Definition at line 126 of file exports.c.

#define FLAG_EXPORT_ROOT_OR_ACCESS   0x000000004

Definition at line 124 of file exports.c.

#define FLAG_EXPORT_SECTYPE   0x000000200

Definition at line 131 of file exports.c.

#define FLAG_EXPORT_TRANS_PROTO   0x000000100

Definition at line 130 of file exports.c.

#define FLAG_EXPORT_USE_DATACACHE   0x000080000

Definition at line 141 of file exports.c.

#define FLAG_EXPORT_USE_PNFS   0x002000000

Definition at line 147 of file exports.c.

#define FLAG_EXPORT_USE_UQUOTA   0x100000000

Definition at line 154 of file exports.c.

#define LASTDEFAULT   1048576

Definition at line 68 of file exports.c.

#define MAX_NFSPROTO   10
#define MAX_NFSPROTO_LEN   256
#define MAX_SECTYPE   10
#define MAX_SECTYPE_LEN   256
#define MAX_TRANSPROTO   10
#define MAX_TRANSPROTO_LEN   256
#define STRCMP   strcasecmp

Definition at line 70 of file exports.c.


Function Documentation

exportlist_t* BuildDefaultExport ( )

Todo:
set default values here

Grant root access to all clients

Definition at line 2130 of file exports.c.

int CleanUpExportContext ( fsal_export_context_t p_export_context)

Definition at line 3093 of file exports.c.

int export_client_match ( sockaddr_t hostaddr,
char *  ipstring,
exportlist_client_t clients,
exportlist_client_entry_t pclient_found,
unsigned int  export_option 
)

function for matching a specific option in the client export list.

BUGAZOMEU a completer lors de l'integration de RPCSEC_GSS

Definition at line 2297 of file exports.c.

int export_client_matchv6 ( struct in6_addr *  paddrv6,
exportlist_client_t clients,
exportlist_client_entry_t pclient_found,
unsigned int  export_option 
)

Definition at line 2460 of file exports.c.

bool_t fsal_specific_checks ( exportlist_t p_entry)

Definition at line 605 of file exports.c.

exportlist_t* GetExportEntry ( char *  exportPath)

Definition at line 3122 of file exports.c.

int nfs_AddClientsToClientArray ( exportlist_client_t clients,
int  new_clients_number,
char **  new_clients_name,
int  option 
)

Definition at line 352 of file exports.c.

int nfs_export_check_access ( sockaddr_t hostaddr,
struct svc_req *  ptr_req,
exportlist_t pexport,
unsigned int  nfs_prog,
unsigned int  mnt_prog,
hash_table_t ht_ip_stats,
pool_t ip_stats_pool,
exportlist_client_entry_t pclient_found,
struct user_cred user_credentials,
bool_t  proc_makes_write 
)

nfs_export_check_access: checks if a machine is authorized to access an export entry.

Checks if a machine is authorized to access an export entry.

Parameters:
ssaddr[IN] the complete remote address (as a sockaddr_storage to be IPv6 compliant)
ptr_req[IN] pointer to the related RPC request.
pexpprt[IN] related export entry (if found, NULL otherwise).
nfs_prog[IN] number for the NFS program.
mnt_program[IN] number for the MOUNT program.
ht_ip_stats[INOUT] IP/stats hash table
ip_stats_pool[INOUT] IP/stats pool
pclient_found[OUT] pointer to client entry found in export list, NULL if nothing was found.
Returns:
EXPORT_PERMISSION_GRANTED on success and EXPORT_PERMISSION_DENIED, EXPORT_WRITE_ATTEMPT_WHEN_RO, or EXPORT_WRITE_ATTEMPT_WHEN_MDONLY_RO on failure.

Definition at line 2650 of file exports.c.

int nfs_export_check_security ( struct svc_req *  req,
exportlist_t pexport 
)

nfs_export_check_security: checks if request security flavor is suffcient for the requested export

Checks if request security flavor is suffcient for the requested export

Parameters:
ptr_req[IN] pointer to the related RPC request.
pexpprt[IN] related export entry (if found, NULL otherwise).
Returns:
TRUE if the request flavor exists in the matching export FALSE otherwise

Definition at line 2528 of file exports.c.

int nfs_export_create_root_entry ( exportlist_t pexportlist)

nfs_export_create_root_entry: create the root entries for the cached entries.

Create the root entries for the cached entries.

Parameters:
pexportlist[IN] the export list to be parsed
Returns:
TRUE is successfull, FALSE if something wrong occured.

Definition at line 2933 of file exports.c.

int nfs_LookupNetworkAddr ( char *  host,
unsigned long *  netAddr,
unsigned long *  netMask 
)

Definition at line 328 of file exports.c.

int nfs_ParseConfLine ( char *  Argv[],
int  nbArgv,
char *  line,
int(*)(char)  separator_function,
int(*)(char)  endLine_func 
)

nfs_ParseConfLine: parse a line with a settable separator and end of line

parse a line with a settable separator and end of line .

Parameters:
Argv[OUT] result array
nbArgv[IN] allocated number of entries in the Argv
line[IN] input line
separator_function[IN] function used to identify a separator
endLine_func[IN] function used to identify an end of line
Returns:
the number of object found

Definition at line 175 of file exports.c.

int parseAccessParam ( char *  var_name,
char *  var_value,
exportlist_t p_entry,
int  access_option 
)

Definition at line 522 of file exports.c.

int ReadExports ( config_file_t  in_config,
exportlist_t **  ppexportlist 
)

ReadExports: Read the export entries from the parsed configuration file.

Returns:
A negative value on error, the number of export entries else.

Definition at line 2214 of file exports.c.

exportlist_t* RemoveExportEntry ( exportlist_t exportEntry)

Definition at line 3103 of file exports.c.