SoW-2020-0002: Trace Hit Counters: trigger error reporting integration
[lttng-tools.git] / src / lib / lttng-ctl / snapshot.c
index 0aebf157539ae27631dc8513b7ac0b434362b2f6..8d3ec201363f595b2520294b9608b16cc3336b2d 100644 (file)
@@ -238,29 +238,29 @@ void lttng_snapshot_output_destroy(struct lttng_snapshot_output *obj)
  * Getter family functions of snapshot output.
  */
 
-uint32_t lttng_snapshot_output_get_id(struct lttng_snapshot_output *output)
+uint32_t lttng_snapshot_output_get_id(const struct lttng_snapshot_output *output)
 {
        return output->id;
 }
 
 const char *lttng_snapshot_output_get_name(
-               struct lttng_snapshot_output *output)
+               const struct lttng_snapshot_output *output)
 {
        return output->name;
 }
 
-const char *lttng_snapshot_output_get_data_url(struct lttng_snapshot_output *output)
+const char *lttng_snapshot_output_get_data_url(const struct lttng_snapshot_output *output)
 {
        return output->data_url;
 }
 
-const char *lttng_snapshot_output_get_ctrl_url(struct lttng_snapshot_output *output)
+const char *lttng_snapshot_output_get_ctrl_url(const struct lttng_snapshot_output *output)
 {
        return output->ctrl_url;
 }
 
 uint64_t lttng_snapshot_output_get_maxsize(
-               struct lttng_snapshot_output *output)
+               const struct lttng_snapshot_output *output)
 {
        return output->max_size;
 }
@@ -323,3 +323,126 @@ int lttng_snapshot_output_set_data_url(const char *url,
        lttng_ctl_copy_string(output->data_url, url, sizeof(output->data_url));
        return 0;
 }
+
+int lttng_snapshot_output_set_local_path(const char *path,
+               struct lttng_snapshot_output *output)
+{
+       int ret;
+       struct lttng_uri *uris = NULL;
+       ssize_t num_uris;
+
+       if (!path || !output) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       num_uris = uri_parse_str_urls(path, NULL, &uris);
+       if (num_uris != 1) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       if (uris[0].dtype != LTTNG_DST_PATH) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       ret = lttng_strncpy(output->ctrl_url, path, sizeof(output->ctrl_url));
+       if (ret != 0) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+end:
+       free(uris);
+       return ret;
+}
+
+int lttng_snapshot_output_set_network_url(const char *url,
+               struct lttng_snapshot_output *output)
+{
+       int ret;
+       struct lttng_uri *uris = NULL;
+       ssize_t num_uris;
+
+       if (!url || !output) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       num_uris = uri_parse_str_urls(url, NULL, &uris);
+       if (num_uris != 2) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       if (uris[0].dtype != LTTNG_DST_IPV4 &&
+                       uris[0].dtype != LTTNG_DST_IPV6) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       if (uris[1].dtype != LTTNG_DST_IPV4 &&
+                       uris[1].dtype != LTTNG_DST_IPV6) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       ret = lttng_strncpy(output->ctrl_url, url, sizeof(output->ctrl_url));
+       if (ret != 0) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+end:
+       free(uris);
+       return ret;
+}
+
+int lttng_snapshot_output_set_network_urls(
+               const char *ctrl_url, const char *data_url,
+               struct lttng_snapshot_output *output)
+{
+       int ret;
+       struct lttng_uri *uris = NULL;
+       ssize_t num_uris;
+
+       if (!ctrl_url || !data_url || !output) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       num_uris = uri_parse_str_urls(ctrl_url, data_url, &uris);
+       if (num_uris != 2) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       if (uris[0].dtype != LTTNG_DST_IPV4 &&
+                       uris[0].dtype != LTTNG_DST_IPV6) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       if (uris[1].dtype != LTTNG_DST_IPV4 &&
+                       uris[1].dtype != LTTNG_DST_IPV6) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       ret = lttng_strncpy(output->ctrl_url, ctrl_url, sizeof(output->ctrl_url));
+       if (ret != 0) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       ret = lttng_strncpy(output->data_url, data_url, sizeof(output->data_url));
+       if (ret != 0) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+end:
+       free(uris);
+       return ret;
+}
This page took 0.026282 seconds and 5 git commands to generate.