autofs-5.0.9 - amd lookup use config map_type if type is not given From: Ian Kent If the map type isn't given in the map defaults or the map location the attempt to set it from the configuration. A NULL map type is valid and means use the nss source list to find the source of the map. This approach may not always give the best result. For example, when a map type specified in the master map submounts will not inherit it and will instead use a configured global type instead. Second, if we want to use nss to find a map source a global map type can't be defined or it will override the nss source search. --- modules/parse_amd.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/parse_amd.c b/modules/parse_amd.c index e27a195..bf673b3 100644 --- a/modules/parse_amd.c +++ b/modules/parse_amd.c @@ -1339,12 +1339,21 @@ struct amd_entry *make_default_entry(struct autofs_point *ap, char *defaults = "opts:=rw,defaults"; struct amd_entry *defaults_entry; struct list_head dflts; + char *map_type; INIT_LIST_HEAD(&dflts); if (amd_parse_list(ap, defaults, &dflts, &sv)) return NULL; defaults_entry = list_entry(dflts.next, struct amd_entry, list); list_del_init(&defaults_entry->list); + /* + * If map type isn't given try to inherit from + * parent. A NULL map type is valid and means + * use configured nss sources. + */ + map_type = conf_amd_get_map_type(ap->path); + if (map_type) + defaults_entry->map_type = strdup(map_type); /* The list should now be empty .... */ free_amd_entry_list(&dflts); return defaults_entry; @@ -1458,6 +1467,16 @@ static struct amd_entry *get_defaults_entry(struct autofs_point *ap, if (amd_parse_list(ap, expand, &dflts, &sv)) goto out; entry = select_default_entry(ap, &dflts, sv); + if (!entry->map_type) { + /* + * If map type isn't given try to inherit from + * parent. A NULL map type is valid and means + * use configured nss sources. + */ + char *map_type = conf_amd_get_map_type(ap->path); + if (map_type) + entry->map_type = strdup(map_type); + } free(expand); }