Fix: network instrumentation protocol enum
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 25 Jan 2018 17:41:57 +0000 (12:41 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 25 Jan 2018 17:41:57 +0000 (12:41 -0500)
The enumeration field within the header payload should keep the
enumeration describing the header field, and not use the variant
selector enumeration.

This issue has been introduced by commit "Fix: network instrumentation
handling of corrupted TCP headers".

It causes the following warning messages in babeltrace:

[warning] Unknown value 6 in enum.
[warning] Unknown value 17 in enum.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/events/lttng-module/net.h

index e48c4db1ea3557d975f38e31f1ca0bd513b6122d..2085def5ee9445496e79f9e2c91f4689737d7515 100644 (file)
@@ -133,6 +133,30 @@ static inline enum transport_header_types __get_transport_header_type(struct sk_
        return TH_NONE;
 }
 
+static struct lttng_enum_entry proto_transport_enum_entries[] = {
+       [0] = {
+               .start = { .value = 0, .signedness = 0, },
+               .end = { .value = IPPROTO_TCP - 1, .signedness = 0, },
+               .string = "_unknown",
+       },
+       [1] = {
+               .start = { .value = IPPROTO_TCP, .signedness = 0, },
+               .end = { .value = IPPROTO_TCP, .signedness = 0, },
+               .string = "_tcp",
+       },
+       [2] = {
+               .start = { .value = IPPROTO_TCP + 1, .signedness = 0, },
+               .end = { .value = 255, .signedness = 0, },
+               .string = "_unknown",
+       },
+};
+
+static const struct lttng_enum_desc proto_transport_header_type = {
+       .name = "proto_transport_header_type",
+       .entries = proto_transport_enum_entries,
+       .nr_entries = ARRAY_SIZE(proto_transport_enum_entries),
+};
+
 static struct lttng_enum_entry transport_enum_entries[] = {
        [0] = {
                .start = { .value = TH_NONE, .signedness = 0, },
@@ -194,7 +218,8 @@ static struct lttng_event_field ipv4fields[] = {
                .name = "protocol",
                .type = {
                        .atype = atype_enum,
-                       .u.basic.enumeration.desc = &transport_header_type,
+                       .u.basic.enumeration.desc =
+                               &proto_transport_header_type,
                        .u.basic.enumeration.container_type = {
                                .size = 8,
                                .alignment = 8,
@@ -290,7 +315,8 @@ static struct lttng_event_field ipv6fields[] = {
                .name = "nexthdr",
                .type = {
                        .atype = atype_enum,
-                       .u.basic.enumeration.desc = &transport_header_type,
+                       .u.basic.enumeration.desc =
+                               &proto_transport_header_type,
                        .u.basic.enumeration.container_type = {
                                .size = 8,
                                .alignment = 8,
This page took 0.027379 seconds and 4 git commands to generate.