Example #1
0
/**
 * @brief Load parameters from config file
 *
 * @param[in]  config_struct Parsed config file
 * @param[out] p_start_info  Startup parameters
 *
 * @return -1 on failure.
 */
int nfs_set_param_from_conf(config_file_t config_struct,
			    nfs_start_info_t *p_start_info)
{
	int rc;
	cache_inode_status_t cache_inode_status;

	/*
	 * Initialize exports and clients so config parsing can use them
	 * early.
	 */
	client_pkginit();
	export_pkginit();

	rc = read_log_config(config_struct);
	if (rc < 0) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing log configuration");
		return -1;
	}

	/* Core parameters */
	rc = nfs_read_core_conf(config_struct, &nfs_param.core_param);
	if (rc < 0) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing core configuration");
		return -1;
	} else {
		/* No such stanza in configuration file */
		if (rc == 1)
			LogEvent(COMPONENT_INIT,
				 "No core configuration found in config file, using default");
		else
			LogDebug(COMPONENT_INIT,
				 "core configuration read from config file");
	}

	/* Worker paramters: ip/name hash table and expiration for each entry */
	rc = nfs_read_ip_name_conf(config_struct, &nfs_param.ip_name_param);
	if (rc < 0) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing IP/name configuration");
		return -1;
	} else {
		/* No such stanza in configuration file */
		if (rc == 1)
			LogDebug(COMPONENT_INIT,
				 "No IP/name configuration found in config file, using default");
		else
			LogDebug(COMPONENT_INIT,
				 "IP/name configuration read from config file");
	}

#ifdef _HAVE_GSSAPI
	/* NFS kerberos5 configuration */
	rc = nfs_read_krb5_conf(config_struct, &nfs_param.krb5_param);
	if (rc < 0) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing NFS/KRB5 configuration for RPCSEC_GSS");
		return -1;
	} else {
		/* No such stanza in configuration file */
		if (rc == 1)
			LogDebug(COMPONENT_INIT,
				 "No NFS/KRB5 configuration found in config file, using default");
		else
			LogDebug(COMPONENT_INIT,
				 "NFS/KRB5 configuration read from config file");
	}
#endif

	/* NFSv4 specific configuration */
	rc = nfs_read_version4_conf(config_struct, &nfs_param.nfsv4_param);
	if (rc < 0) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing NFSv4 specific configuration");
		return -1;
	} else {
		/* No such stanza in configuration file */
		if (rc == 1)
			LogDebug(COMPONENT_INIT,
				 "No NFSv4 specific configuration found in config file, using default");
		else
			LogDebug(COMPONENT_INIT,
				 "NFSv4 specific configuration read from config file");
	}

#ifdef _USE_9P
	rc = _9p_read_conf(config_struct, &nfs_param._9p_param);
	if (rc < 0) {
		if (rc == -2)
			LogDebug(COMPONENT_INIT,
				 "No 9P configuration found, using default");
		else {
			LogCrit(COMPONENT_INIT,
				"Error while parsing 9P configuration");
			return -1;
		}
	}
#endif

	/* Cache inode client parameters */
	cache_inode_status =
		cache_inode_read_conf_parameter(config_struct,
						&nfs_param.cache_param);
	if (cache_inode_status != CACHE_INODE_SUCCESS) {
		if (cache_inode_status == CACHE_INODE_NOT_FOUND)
			LogDebug(COMPONENT_INIT,
				 "No Cache Inode Client configuration found, using default");
		else {
			LogCrit(COMPONENT_INIT,
				"Error while parsing Cache Inode Client configuration");
			return 1;
		}
	} else
		LogDebug(COMPONENT_INIT,
			 "Cache Inode Client configuration read from config file");

	/* Load export entries from parsed file
	 * returns the number of export entries.
	 */
	rc = ReadExports(config_struct);
	if (rc < 0) {
		LogCrit(COMPONENT_INIT, "Error while parsing export entries");
		return -1;
	} else if (rc == 0) {
		LogWarn(COMPONENT_INIT,
			"No export entries found in configuration file !!!");
	}

	LogEvent(COMPONENT_INIT, "Configuration file successfully parsed");

	return 0;
}
Example #2
0
/**
 * @brief Load parameters from config file
 *
 * @param[in]  config_struct Parsed config file
 * @param[out] p_start_info  Startup parameters
 * @param[out] err_type error reporting state
 *
 * @return -1 on failure.
 */
int nfs_set_param_from_conf(config_file_t parse_tree,
			    nfs_start_info_t *p_start_info,
			    struct config_error_type *err_type)
{
	/*
	 * Initialize exports and clients so config parsing can use them
	 * early.
	 */
	client_pkginit();
	export_pkginit();
	server_pkginit();

	/* Core parameters */
	(void) load_config_from_parse(parse_tree,
				      &nfs_core,
				      &nfs_param.core_param,
				      true,
				      err_type);
	if (!config_error_is_harmless(err_type)) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing core configuration");
		return -1;
	}

	/* Worker paramters: ip/name hash table and expiration for each entry */
	(void) load_config_from_parse(parse_tree,
				      &nfs_ip_name,
				      NULL,
				      true,
				      err_type);
	if (!config_error_is_harmless(err_type)) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing IP/name configuration");
		return -1;
	}

#ifdef _HAVE_GSSAPI
	/* NFS kerberos5 configuration */
	(void) load_config_from_parse(parse_tree,
				      &krb5_param,
				      &nfs_param.krb5_param,
				      true,
				      err_type);
	if (!config_error_is_harmless(err_type)) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing NFS/KRB5 configuration for RPCSEC_GSS");
		return -1;
	}
#endif

	/* NFSv4 specific configuration */
	(void) load_config_from_parse(parse_tree,
				      &version4_param,
				      &nfs_param.nfsv4_param,
				      true,
				      err_type);
	if (!config_error_is_harmless(err_type)) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing NFSv4 specific configuration");
		return -1;
	}

#ifdef _USE_9P
	(void) load_config_from_parse(parse_tree,
				      &_9p_param_blk,
				      NULL,
				      true,
				      err_type);
	if (!config_error_is_harmless(err_type)) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing 9P specific configuration");
		return -1;
	}
#endif

	/* Cache inode client parameters */
	(void) load_config_from_parse(parse_tree,
				      &cache_inode_param_blk,
				      NULL,
				      true,
				      err_type);
	if (!config_error_is_harmless(err_type)) {
		LogCrit(COMPONENT_INIT,
			"Error while parsing 9P specific configuration");
		return -1;
	}

	LogEvent(COMPONENT_INIT, "Configuration file successfully parsed");

	return 0;
}