From 7299e758b109db074589f7879ae631b27c25dc05 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 25 Jan 2018 12:41:57 -0500 Subject: [PATCH] Fix: network instrumentation protocol enum 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 --- instrumentation/events/lttng-module/net.h | 30 +++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/instrumentation/events/lttng-module/net.h b/instrumentation/events/lttng-module/net.h index e48c4db1..2085def5 100644 --- a/instrumentation/events/lttng-module/net.h +++ b/instrumentation/events/lttng-module/net.h @@ -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, -- 2.34.1