Esempio n. 1
0
/*
 * Gather special parameters for NFS4 ACL handling
 */
static int smbacl4_get_vfs_params(
	struct connection_struct *conn,
	smbacl4_vfs_params *params
)
{
	static const struct enum_list enum_smbacl4_modes[] = {
		{ e_simple, "simple" },
		{ e_special, "special" },
		{ -1 , NULL }
	};
	static const struct enum_list enum_smbacl4_acedups[] = {
		{ e_dontcare, "dontcare" },
		{ e_reject, "reject" },
		{ e_ignore, "ignore" },
		{ e_merge, "merge" },
		{ -1 , NULL }
	};
	int enumval;

	ZERO_STRUCTP(params);

	enumval = lp_parm_enum(SNUM(conn), SMBACL4_PARAM_TYPE_NAME, "mode",
			       enum_smbacl4_modes, e_simple);
	if (enumval == -1) {
		DEBUG(10, ("value for %s:mode unknown\n",
			   SMBACL4_PARAM_TYPE_NAME));
		return -1;
	}
	params->mode = (enum smbacl4_mode_enum)enumval;

	params->do_chown = lp_parm_bool(SNUM(conn), SMBACL4_PARAM_TYPE_NAME,
		"chown", true);

	enumval = lp_parm_enum(SNUM(conn), SMBACL4_PARAM_TYPE_NAME, "acedup",
			       enum_smbacl4_acedups, e_dontcare);
	if (enumval == -1) {
		DEBUG(10, ("value for %s:acedup unknown\n",
			   SMBACL4_PARAM_TYPE_NAME));
		return -1;
	}
	params->acedup = (enum smbacl4_acedup_enum)enumval;

	params->map_full_control = lp_acl_map_full_control(SNUM(conn));

	DEBUG(10, ("mode:%s, do_chown:%s, acedup: %s map full control:%s\n",
		enum_smbacl4_modes[params->mode].name,
		params->do_chown ? "true" : "false",
		enum_smbacl4_acedups[params->acedup].name,
		params->map_full_control ? "true" : "false"));

	return 0;
}
Esempio n. 2
0
/*
 * Gather special parameters for NFS4 ACL handling
 */
static int smbacl4_get_vfs_params(
    const char *type_name,
    struct connection_struct *conn,
    smbacl4_vfs_params *params
)
{
    static const struct enum_list enum_smbacl4_modes[] = {
        { e_simple, "simple" },
        { e_special, "special" },
        { -1 , NULL }
    };
    static const struct enum_list enum_smbacl4_acedups[] = {
        { e_dontcare, "dontcare" },
        { e_reject, "reject" },
        { e_ignore, "ignore" },
        { e_merge, "merge" },
        { -1 , NULL }
    };

    memset(params, 0, sizeof(smbacl4_vfs_params));
    params->mode = (enum smbacl4_mode_enum)lp_parm_enum(
                       SNUM(conn), type_name,
                       "mode", enum_smbacl4_modes, e_simple);
    params->do_chown = lp_parm_bool(SNUM(conn), type_name,
                                    "chown", true);
    params->acedup = (enum smbacl4_acedup_enum)lp_parm_enum(
                         SNUM(conn), type_name,
                         "acedup", enum_smbacl4_acedups, e_dontcare);
    params->map_full_control = lp_acl_map_full_control(SNUM(conn));

    DEBUG(10, ("mode:%s, do_chown:%s, acedup: %s map full control:%s\n",
               enum_smbacl4_modes[params->mode].name,
               params->do_chown ? "true" : "false",
               enum_smbacl4_acedups[params->acedup].name,
               params->map_full_control ? "true" : "false"));

    return 0;
}