diff --git a/include/common/cfgparse.h b/include/common/cfgparse.h index 39e8a4c5b..9f432ad39 100644 --- a/include/common/cfgparse.h +++ b/include/common/cfgparse.h @@ -74,6 +74,8 @@ int str2listener(char *str, struct proxy *curproxy, struct bind_conf *bind_conf, int cfg_register_section(char *section_name, int (*section_parser)(const char *, int, char **, int)); void cfg_unregister_sections(void); +void cfg_backup_sections(struct list *backup_sections); +void cfg_restore_sections(struct list *backup_sections); int warnif_misplaced_tcp_conn(struct proxy *proxy, const char *file, int line, const char *arg); int warnif_misplaced_tcp_sess(struct proxy *proxy, const char *file, int line, const char *arg); int warnif_misplaced_tcp_cont(struct proxy *proxy, const char *file, int line, const char *arg); diff --git a/src/cfgparse.c b/src/cfgparse.c index 83accbeb9..5e849699b 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -9258,6 +9258,26 @@ void cfg_unregister_sections(void) } } +void cfg_backup_sections(struct list *backup_sections) +{ + struct cfg_section *cs, *ics; + + list_for_each_entry_safe(cs, ics, §ions, list) { + LIST_DEL(&cs->list); + LIST_ADDQ(backup_sections, &cs->list); + } +} + +void cfg_restore_sections(struct list *backup_sections) +{ + struct cfg_section *cs, *ics; + + list_for_each_entry_safe(cs, ics, backup_sections, list) { + LIST_DEL(&cs->list); + LIST_ADDQ(§ions, &cs->list); + } +} + __attribute__((constructor)) static void cfgparse_init(void) {