mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-08-14 07:49:20 +00:00
Add config reload support for logsys
If objdb is reloaded, then we re-parse the logging options. This allows logging options to be changed/enabled/disabled without restarting corosync git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1710 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
parent
bd646b6c39
commit
f5467e33b7
@ -51,6 +51,12 @@
|
||||
#include "mempool.h"
|
||||
|
||||
static char error_string_response[512];
|
||||
static struct objdb_iface_ver0 *global_objdb;
|
||||
|
||||
static void add_logsys_config_notification(
|
||||
struct objdb_iface_ver0 *objdb,
|
||||
struct main_config *main_config);
|
||||
|
||||
|
||||
/* This just makes the code below a little neater */
|
||||
static inline int objdb_get_string (
|
||||
@ -98,7 +104,10 @@ static struct logsys_config_struct {
|
||||
unsigned int tags;
|
||||
} logsys_logger;
|
||||
|
||||
int corosync_main_config_read (
|
||||
|
||||
|
||||
|
||||
int corosync_main_config_read_logging (
|
||||
struct objdb_iface_ver0 *objdb,
|
||||
char **error_string,
|
||||
struct main_config *main_config)
|
||||
@ -110,8 +119,6 @@ int corosync_main_config_read (
|
||||
unsigned int object_find_handle;
|
||||
unsigned int object_find_logsys_handle;
|
||||
|
||||
memset (main_config, 0, sizeof (struct main_config));
|
||||
|
||||
objdb->object_find_create (
|
||||
OBJECT_PARENT_HANDLE,
|
||||
"logging",
|
||||
@ -286,6 +293,31 @@ int corosync_main_config_read (
|
||||
|
||||
objdb->object_find_destroy (object_find_handle);
|
||||
|
||||
return 0;
|
||||
|
||||
parse_error:
|
||||
sprintf (error_string_response,
|
||||
"parse error in config: %s.\n",
|
||||
error_reason);
|
||||
|
||||
*error_string = error_string_response;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
int corosync_main_config_read (
|
||||
struct objdb_iface_ver0 *objdb,
|
||||
char **error_string,
|
||||
struct main_config *main_config)
|
||||
{
|
||||
unsigned int object_service_handle;
|
||||
char *value;
|
||||
char *error_reason = error_string_response;
|
||||
unsigned int object_find_handle;
|
||||
|
||||
memset (main_config, 0, sizeof (struct main_config));
|
||||
|
||||
corosync_main_config_read_logging(objdb, error_string, main_config);
|
||||
|
||||
objdb->object_find_create (
|
||||
OBJECT_PARENT_HANDLE,
|
||||
"aisexec",
|
||||
@ -322,6 +354,8 @@ int corosync_main_config_read (
|
||||
if (main_config->syslog_facility == 0)
|
||||
main_config->syslog_facility = LOG_DAEMON;
|
||||
|
||||
add_logsys_config_notification(objdb, main_config);
|
||||
|
||||
return 0;
|
||||
|
||||
parse_error:
|
||||
@ -332,3 +366,38 @@ parse_error:
|
||||
*error_string = error_string_response;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
static void main_objdb_reload_notify(objdb_reload_notify_type_t type, int flush,
|
||||
void *priv_data_pt)
|
||||
{
|
||||
struct main_config *main_config = priv_data_pt;
|
||||
char *error_string;
|
||||
|
||||
if (type == OBJDB_RELOAD_NOTIFY_END) {
|
||||
|
||||
/*
|
||||
* Reload the logsys configuration
|
||||
*/
|
||||
corosync_main_config_read_logging(global_objdb,
|
||||
&error_string,
|
||||
main_config);
|
||||
}
|
||||
}
|
||||
|
||||
static void add_logsys_config_notification(
|
||||
struct objdb_iface_ver0 *objdb,
|
||||
struct main_config *main_config)
|
||||
{
|
||||
|
||||
global_objdb = objdb;
|
||||
|
||||
objdb->object_track_start(OBJECT_PARENT_HANDLE,
|
||||
1,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
main_objdb_reload_notify,
|
||||
main_config);
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user