]> git.ipfire.org Git - telemetry.git/commitdiff
legacy-gateway-latency4: Add the packet loss to the graph's background
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Nov 2025 21:13:10 +0000 (21:13 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Nov 2025 21:13:10 +0000 (21:13 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/colors.h
src/daemon/graphs/graph.h
src/daemon/graphs/legacy-gateway-latency4.c
src/daemon/sources/legacy-gateway-latency4.c

index fbbdba45f633656dfc93ae0801f7c99b49a15b34..70ae99b0e6165d5c4b52eaae78ba88ffcf0ab8e3 100644 (file)
 
 // Latency
 #define COLOR_LATENCY                  COLOR_LIGHT_BLUE
+#define COLOR_LOSS_0                   COLOR_TRANSPARENT
+#define COLOR_LOSS_5                   COLOR_WITH_ALPHA(COLOR_LIMIT, COLOR_OPACITY_20P)
+#define COLOR_LOSS_10                  COLOR_WITH_ALPHA(COLOR_LIMIT, COLOR_OPACITY_40P)
+#define COLOR_LOSS_25                  COLOR_WITH_ALPHA(COLOR_LIMIT, COLOR_OPACITY_60P)
+#define COLOR_LOSS_50                  COLOR_WITH_ALPHA(COLOR_LIMIT, COLOR_OPACITY_80P)
 
 // Temperature
 #define COLOR_TEMPERATURE              COLOR_RED
@@ -101,9 +106,13 @@ static inline const char* COLOR_CPU(long i) {
 #define COLOR_WITH_ALPHA(base, alpha) base alpha
 
 #define COLOR_OPACITY_100P             "ff"
+#define COLOR_OPACITY_80P              "cc"
 #define COLOR_OPACITY_75P              "c0"
+#define COLOR_OPACITY_60P              "66"
 #define COLOR_OPACITY_50P              "80"
+#define COLOR_OPACITY_40P              "66"
 #define COLOR_OPACITY_25P              "40"
+#define COLOR_OPACITY_20P              "33"
 #define COLOR_OPACITY_0P               "00"
 
 // Fill areas very lightly
index dd1af017959babae8e373ee0609ce1127fb7dbd3..88a0800dc2237b967521d52aea8872b35166ea60 100644 (file)
@@ -234,6 +234,7 @@ static inline int __DRAW(td_args* args, const char* what, const char* field,
 
 // Handles for fields
 #define FIELD_SPACER(field)                                    field "_spacer"
+#define FIELD_BACKGROUND(field)                                field "_background"
 #define FIELD_CURRENT(field)                           field "_cur"
 #define FIELD_AVERAGE(field)                           field "_avg"
 #define FIELD_MINIMUM(field)                           field "_min"
@@ -344,6 +345,14 @@ static inline int __DRAW(td_args* args, const char* what, const char* field,
                ); \
        } while (0)
 
+#define COMPUTE_BACKGROUND(args, background, field, object) \
+       do { \
+               COMPUTE_CDEF(args, FIELD "=" FIELD ",UN,UNKN,INF,IF", \
+                       FIELD_AND_OBJECT(background, object), \
+                       FIELD_AND_OBJECT(field, object) \
+               ); \
+       } while (0)
+
 #define COMPUTE_BYTES_FROM_SECTORS(args, field, object) \
        do { \
                COMPUTE_CDEF(args, FIELD "=" FIELD ",512,*", \
@@ -364,6 +373,15 @@ static inline int __DRAW(td_args* args, const char* what, const char* field,
                DRAW_AREA_BACKGROUND(args, FIELD_STDDEV2(stddev), object, color, STACKED); \
        } while (0)
 
+/*
+       Fills the background with the given color if there is any value
+*/
+#define DRAW_BACKGROUND_WITH_LABEL(args, field, object, color, ...) \
+       do { \
+               COMPUTE_BACKGROUND(args, FIELD_BACKGROUND(field), field, object); \
+               DRAW_WITH_LABEL(args, "AREA", FIELD_BACKGROUND(field), object, color, 0, ##__VA_ARGS__); \
+       } while (0)
+
 /*
        This draws an I/O graph
 */
index 82ba30f734660173db64796c081922a33090ef63..c058ce6511fc8fa47b457f1e3fcb4cf9ec670719 100644 (file)
@@ -37,6 +37,29 @@ static int legacy_gateway_latency4_render(td_ctx* ctx, td_graph* graph,
        if (r < 0)
                return r;
 
+       // Compute packet losses
+       COMPUTE_LIMIT(args, "loss0", "loss", NULL, 0L, 5L);
+       COMPUTE_LIMIT(args, "loss5", "loss", NULL, 5L, 10L);
+       COMPUTE_LIMIT(args, "loss10", "loss", NULL, 10L, 25L);
+       COMPUTE_LIMIT(args, "loss25", "loss", NULL, 25L, 50L);
+       COMPUTE_LIMIT(args, "loss50", "loss", NULL, 50L, 100L);
+
+       // Fill the background if the loss is within the range
+       DRAW_BACKGROUND_WITH_LABEL(args, "loss0", NULL, COLOR_LOSS_0, "%s", _("Packet Loss > 0%"));
+       PRINT_EOL(args);
+
+       DRAW_BACKGROUND_WITH_LABEL(args, "loss5", NULL, COLOR_LOSS_5, "%s", _("Packet Loss > 5%"));
+       PRINT_EOL(args);
+
+       DRAW_BACKGROUND_WITH_LABEL(args, "loss10", NULL, COLOR_LOSS_10, "%s", _("Packet Loss > 10%"));
+       PRINT_EOL(args);
+
+       DRAW_BACKGROUND_WITH_LABEL(args, "loss25", NULL, COLOR_LOSS_25, "%s", _("Packet Loss > 25%"));
+       PRINT_EOL(args);
+
+       DRAW_BACKGROUND_WITH_LABEL(args, "loss50", NULL, COLOR_LOSS_50, "%s", _("Packet Loss > 50%"));
+       PRINT_EOL(args);
+
        PRINT_EMPTY_LINE(args);
 
        // Draw a horizontal line of the average
index 26cc995a4c9ec5cd86a7548a29d9265af781e506..62183a664f7afc2deeb7f1fcf2c381a0240b1664 100644 (file)
@@ -161,9 +161,6 @@ static int legacy_gateway_latency_on_success(td_ctx* ctx,
        avg  = MSEC_TO_SEC(avg);
        mdev = MSEC_TO_SEC(mdev);
 
-       // Convert the loss
-       loss /= 100.0;
-
        // Submit values
        return td_source_submit_values(source, NULL, VALUES(
                VALUE_FLOAT("latency", &avg),