X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconfig%2Fsession-config.c;h=35c5aeef97ea279df9ef08563137a3c40ac04473;hb=86cf031ae8be7633ff8eee0cd0bf503b331cfc34;hp=e625f316a96e735ff77485b1830926c38b663f9d;hpb=55c9e7cac24318259d4f2549c97f7577b7b52db4;p=lttng-tools.git diff --git a/src/common/config/session-config.c b/src/common/config/session-config.c index e625f316a..35c5aeef9 100644 --- a/src/common/config/session-config.c +++ b/src/common/config/session-config.c @@ -1,18 +1,8 @@ /* - * Copyright (C) 2013 - Jérémie Galarneau + * Copyright (C) 2013 Jérémie Galarneau * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License, version 2 only, as - * published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 51 - * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _LGPL_SOURCE @@ -61,7 +51,7 @@ struct session_config_validation_ctx { xmlSchemaValidCtxtPtr schema_validation_ctx; }; -const char * const config_element_all = "all"; +LTTNG_HIDDEN const char * const config_element_all = "all"; const char * const config_str_yes = "yes"; const char * const config_str_true = "true"; const char * const config_str_on = "on"; @@ -142,25 +132,25 @@ const char * const config_element_control_uri = "control_uri"; const char * const config_element_data_uri = "data_uri"; const char * const config_element_max_size = "max_size"; const char * const config_element_pid = "pid"; -const char * const config_element_id = "id"; +LTTNG_HIDDEN const char * const config_element_id = "id"; const char * const config_element_pids = "pids"; const char * const config_element_shared_memory_path = "shared_memory_path"; const char * const config_element_pid_tracker = "pid_tracker"; -const char * const config_element_vpid_tracker = "vpid_tracker"; -const char * const config_element_uid_tracker = "uid_tracker"; -const char * const config_element_vuid_tracker = "vuid_tracker"; -const char * const config_element_gid_tracker = "gid_tracker"; -const char * const config_element_vgid_tracker = "vgid_tracker"; +LTTNG_HIDDEN const char * const config_element_vpid_tracker = "vpid_tracker"; +LTTNG_HIDDEN const char * const config_element_uid_tracker = "uid_tracker"; +LTTNG_HIDDEN const char * const config_element_vuid_tracker = "vuid_tracker"; +LTTNG_HIDDEN const char * const config_element_gid_tracker = "gid_tracker"; +LTTNG_HIDDEN const char * const config_element_vgid_tracker = "vgid_tracker"; const char * const config_element_trackers = "trackers"; const char * const config_element_targets = "targets"; -const char * const config_element_target_type = "target_type"; +LTTNG_HIDDEN const char * const config_element_target_type = "target_type"; const char * const config_element_target_pid = "pid_target"; -const char * const config_element_target_vpid = "vpid_target"; -const char * const config_element_target_uid = "uid_target"; -const char * const config_element_target_vuid = "vuid_target"; -const char * const config_element_target_gid = "gid_target"; -const char * const config_element_target_vgid = "vgid_target"; -const char * const config_element_tracker_type = "tracker_type"; +LTTNG_HIDDEN const char * const config_element_target_vpid = "vpid_target"; +LTTNG_HIDDEN const char * const config_element_target_uid = "uid_target"; +LTTNG_HIDDEN const char * const config_element_target_vuid = "vuid_target"; +LTTNG_HIDDEN const char * const config_element_target_gid = "gid_target"; +LTTNG_HIDDEN const char * const config_element_target_vgid = "vgid_target"; +LTTNG_HIDDEN const char * const config_element_tracker_type = "tracker_type"; LTTNG_HIDDEN const char * const config_element_rotation_schedules = "rotation_schedules"; LTTNG_HIDDEN const char * const config_element_rotation_schedule_periodic = "periodic"; @@ -2745,6 +2735,7 @@ static int process_id_tracker_node(xmlNodePtr id_tracker_node, const char *element_id; const char *element_id_alias; const char *element_name; + enum lttng_tracker_id_status status; assert(handle); assert(id_tracker_node); @@ -2774,11 +2765,21 @@ static int process_id_tracker_node(xmlNodePtr id_tracker_node, /* Go through all id target node */ child = xmlChildElementCount(targets_node); if (child == 0) { - struct lttng_tracker_id tracker_id; + struct lttng_tracker_id *tracker_id = NULL; + tracker_id = lttng_tracker_id_create(); + if (tracker_id == NULL) { + ret = LTTNG_ERR_NOMEM; + goto end; + } + status = lttng_tracker_id_set_all(tracker_id); + if (status != LTTNG_TRACKER_ID_STATUS_OK) { + ret = LTTNG_ERR_INVALID; + goto end; + } - tracker_id.type = LTTNG_ID_ALL; /* The session is explicitly set to target nothing. */ - ret = lttng_untrack_id(handle, tracker_type, &tracker_id); + ret = lttng_untrack_id(handle, tracker_type, tracker_id); + lttng_tracker_id_destroy(tracker_id); if (ret) { goto end; } @@ -2796,7 +2797,7 @@ static int process_id_tracker_node(xmlNodePtr id_tracker_node, element_id_alias))) { int64_t id; xmlChar *content = NULL; - struct lttng_tracker_id tracker_id; + struct lttng_tracker_id *tracker_id = NULL; content = xmlNodeGetContent(node); if (!content) { @@ -2811,10 +2812,23 @@ static int process_id_tracker_node(xmlNodePtr id_tracker_node, goto end; } - tracker_id.type = LTTNG_ID_VALUE; - tracker_id.value = (int) id; + tracker_id = lttng_tracker_id_create(); + if (tracker_id == NULL) { + ret = LTTNG_ERR_NOMEM; + goto end; + } + + status = lttng_tracker_id_set_value( + tracker_id, id); + if (status != LTTNG_TRACKER_ID_STATUS_OK) { + lttng_tracker_id_destroy(tracker_id); + ret = LTTNG_ERR_LOAD_INVALID_CONFIG; + goto end; + } + ret = lttng_track_id(handle, tracker_type, - &tracker_id); + tracker_id); + lttng_tracker_id_destroy(tracker_id); if (ret) { goto end; } @@ -2822,17 +2836,31 @@ static int process_id_tracker_node(xmlNodePtr id_tracker_node, if (element_name && !strcmp((const char *) node->name, element_name)) { xmlChar *content = NULL; - struct lttng_tracker_id tracker_id; + struct lttng_tracker_id *tracker_id = NULL; content = xmlNodeGetContent(node); if (!content) { ret = LTTNG_ERR_LOAD_INVALID_CONFIG; goto end; } - tracker_id.type = LTTNG_ID_STRING; - tracker_id.string = (char *) content; + + tracker_id = lttng_tracker_id_create(); + if (tracker_id == NULL) { + ret = LTTNG_ERR_NOMEM; + goto end; + } + + status = lttng_tracker_id_set_string(tracker_id, + (const char *) content); + if (status != LTTNG_TRACKER_ID_STATUS_OK) { + lttng_tracker_id_destroy(tracker_id); + ret = LTTNG_ERR_LOAD_INVALID_CONFIG; + goto end; + } + ret = lttng_track_id(handle, tracker_type, - &tracker_id); + tracker_id); + lttng_tracker_id_destroy(tracker_id); free(content); if (ret) { goto end;