diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2024-01-28 14:30:28 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-28 14:30:28 -0500 |
| commit | 259e3d4dac2da37b9abad9f84e41f90c81325a60 (patch) | |
| tree | 33292e442296b1b4a04b7753e3055706bfd6c7e5 /ospf6d/ospf6_main.c | |
| parent | 4d92badcde7573b97d2acc2228d0ca5fe7168e1e (diff) | |
| parent | bbd858935fad9a469b5b339948e1215b347b05c0 (diff) | |
Merge pull request #15243 from opensourcerouting/autoconf-dir-mess
*: fix a pile of directory and/or state retention related issues
Diffstat (limited to 'ospf6d/ospf6_main.c')
| -rw-r--r-- | ospf6d/ospf6_main.c | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index b61c8f9a5f..6449d68453 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -38,6 +38,14 @@ /* Default configuration file name for ospf6d. */ #define OSPF6_DEFAULT_CONFIG "ospf6d.conf" +/* GR and auth trailer persistent state */ +#define OSPF6D_STATE_NAME "%s/ospf6d.json", frr_libstatedir +#define OSPF6D_COMPAT_STATE_NAME "%s/ospf6d-gr.json", frr_runstatedir +/* for extra confusion, "ospf6d-at-seq-no.dat" is handled directly in + * ospf6_auth_trailer.c; the alternative would be somehow merging JSON which + * is excessive for just supporting a legacy compatibility file location + */ + /* Default port values. */ #define OSPF6_VTY_PORT 2606 @@ -166,16 +174,31 @@ static const struct frr_yang_module_info *const ospf6d_yang_modules[] = { &frr_ospf6_route_map_info, }; -FRR_DAEMON_INFO(ospf6d, OSPF6, .vty_port = OSPF6_VTY_PORT, +/* actual paths filled in main() */ +static char state_path[512]; +static char state_compat_path[512]; +static char *state_paths[] = { + state_path, + state_compat_path, + NULL, +}; + +/* clang-format off */ +FRR_DAEMON_INFO(ospf6d, OSPF6, + .vty_port = OSPF6_VTY_PORT, + .proghelp = "Implementation of the OSPFv3 routing protocol.", + + .signals = ospf6_signals, + .n_signals = array_size(ospf6_signals), - .proghelp = "Implementation of the OSPFv3 routing protocol.", + .privs = &ospf6d_privs, - .signals = ospf6_signals, - .n_signals = array_size(ospf6_signals), + .yang_modules = ospf6d_yang_modules, + .n_yang_modules = array_size(ospf6d_yang_modules), - .privs = &ospf6d_privs, .yang_modules = ospf6d_yang_modules, - .n_yang_modules = array_size(ospf6d_yang_modules), + .state_paths = state_paths, ); +/* clang-format on */ /* Max wait time for config to load before accepting hellos */ #define OSPF6_PRE_CONFIG_MAX_WAIT_SECONDS 600 @@ -233,6 +256,10 @@ int main(int argc, char *argv[], char *envp[]) exit(1); } + snprintf(state_path, sizeof(state_path), OSPF6D_STATE_NAME); + snprintf(state_compat_path, sizeof(state_compat_path), + OSPF6D_COMPAT_STATE_NAME); + /* OSPF6 master init. */ ospf6_master_init(frr_init()); |
