/* * 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; }
/* * 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; }