]> git.proxmox.com Git - mirror_frr.git/commitdiff
lib: have a lib_privs for ... lib privs
authorDavid Lamparter <equinox@diac24.net>
Thu, 4 Feb 2021 21:26:41 +0000 (22:26 +0100)
committerDavid Lamparter <equinox@diac24.net>
Fri, 12 Feb 2021 18:28:52 +0000 (19:28 +0100)
Logging code might want to raise privs for file operations.

Signed-off-by: David Lamparter <equinox@diac24.net>
lib/privs.c
lib/privs.h

index 1bb5d059c87b759da80ee9f75a1816d69597cd28..5ca3c0d886efbaf9c5f6deb92e7ddcd558b1128f 100644 (file)
@@ -587,6 +587,8 @@ void zprivs_preinit(struct zebra_privs_t *zprivs)
        }
 }
 
+struct zebra_privs_t *lib_privs;
+
 void zprivs_init(struct zebra_privs_t *zprivs)
 {
        gid_t groups[NGROUPS_MAX] = {};
@@ -598,6 +600,8 @@ void zprivs_init(struct zebra_privs_t *zprivs)
              || zprivs->cap_num_i))
                return;
 
+       lib_privs = zprivs;
+
        if (zprivs->user) {
                ngroups = array_size(groups);
                if (getgrouplist(zprivs->user, zprivs_state.zgid, groups,
@@ -701,6 +705,8 @@ void zprivs_terminate(struct zebra_privs_t *zprivs)
 {
        struct zebra_privs_refs_t *refs;
 
+       lib_privs = NULL;
+
        if (!zprivs) {
                fprintf(stderr, "%s: no privs struct given, terminating",
                        __func__);
index 18ba8e888898d1965c99c829be0ed029277db31d..2dcdbe2e6ca5cf534aab1251a142c31be8ada5ff 100644 (file)
@@ -100,6 +100,8 @@ struct zprivs_ids_t {
        gid_t gid_vty;    /* vty gid */
 };
 
+extern struct zebra_privs_t *lib_privs;
+
 /* initialise zebra privileges */
 extern void zprivs_preinit(struct zebra_privs_t *zprivs);
 extern void zprivs_init(struct zebra_privs_t *zprivs);