[lttng-dev] Fwd: [PATCH lttng-modules] Add UDP and ICMP packet header information to the tracepoint:

2019-12-17 Thread Florian Walbroel

Hi,

I sent in this patch last month and did not hear about any updates since 
then.


There were a few formatting issues that have been addressed. Is there 
anything more that should be done?


Best regards,
Florian Walbroel

 Forwarded Message 
Subject: 	[PATCH lttng-modules] Add UDP and ICMP packet header 
information to the tracepoint:

Date:   Wed, 13 Nov 2019 17:38:14 +0100
From:   Florian Walbroel 
To: lttng-dev@lists.lttng.org



* UDP transport header
* ICMP transport header

(Correct indentation for switch/case)

Signed-off-by: Florian Walbroel 
---
instrumentation/events/lttng-module/net.h | 166 --
1 file changed, 153 insertions(+), 13 deletions(-)

diff --git a/instrumentation/events/lttng-module/net.h 
b/instrumentation/events/lttng-module/net.h

index bfa14fc..ad1892a 100644
--- a/instrumentation/events/lttng-module/net.h
+++ b/instrumentation/events/lttng-module/net.h
@@ -11,6 +11,8 @@
#include 
#include 
#include 
+#include 
+#include 
#include 
#include 
#include 
@@ -85,6 +87,53 @@ static struct lttng_event_field tcpfields[] = {
},
};
+static struct lttng_event_field udpfields[] = {
+ [0] = {
+ .name = "source_port",
+ .type = __type_integer(uint16_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+ [1] = {
+ .name = "dest_port",
+ .type = __type_integer(uint16_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+ [2] = {
+ .name = "len",
+ .type = __type_integer(uint16_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+ [3] = {
+ .name = "check",
+ .type = __type_integer(uint16_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+};
+
+static struct lttng_event_field icmpfields[] = {
+ [0] = {
+ .name = "type",
+ .type = __type_integer(uint8_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+ [1] = {
+ .name = "code",
+ .type = __type_integer(uint8_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+ [2] = {
+ .name = "checksum",
+ .type = __type_integer(uint16_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+ [3] = {
+ .name = "gateway",
+ .type = __type_integer(uint32_t, 0, 0, 0,
+ __BIG_ENDIAN, 10, none),
+ },
+};
+
+
static struct lttng_event_field transport_fields[] = {
[0] = {
.name = "unknown",
@@ -102,13 +151,57 @@ static struct lttng_event_field transport_fields[] = {
.u._struct.fields = tcpfields,
},
},
+ [2] = {
+ .name = "udp",
+ .type = {
+ .atype = atype_struct,
+ .u._struct.nr_fields = ARRAY_SIZE(udpfields),
+ .u._struct.fields = udpfields,
+ },
+ },
+ [3] = {
+ .name = "icmp",
+ .type = {
+ .atype = atype_struct,
+ .u._struct.nr_fields = ARRAY_SIZE(icmpfields),
+ .u._struct.fields = icmpfields,
+ },
+ },
};
enum transport_header_types {
TH_NONE = 0,
TH_TCP = 1,
+ TH_UDP = 2,
+ TH_ICMP = 3,
};
+static inline enum transport_header_types 
__get_transport_header_type_ip(struct sk_buff *skb)

+{
+ switch(ip_hdr(skb)->protocol) {
+ case IPPROTO_TCP:
+ return TH_TCP;
+ case IPPROTO_UDP:
+ return TH_UDP;
+ case IPPROTO_ICMP:
+ return TH_ICMP;
+ }
+ return TH_NONE;
+}
+
+static inline enum transport_header_types 
__get_transport_header_type_ipv6(struct sk_buff *skb)

+{
+ switch(ipv6_hdr(skb)->nexthdr) {
+ case IPPROTO_TCP:
+ return TH_TCP;
+ case IPPROTO_UDP:
+ return TH_UDP;
+ case IPPROTO_ICMP:
+ return TH_ICMP;
+ }
+ return TH_NONE;
+}
+
static inline enum transport_header_types 
__get_transport_header_type(struct sk_buff *skb)

{
if (__has_network_hdr(skb)) {
@@ -123,13 +216,13 @@ static inline enum transport_header_types 
__get_transport_header_type(struct sk_

* header's data. This method works both for
* sent and received packets.
*/
- if ((skb->protocol == htons(ETH_P_IP) &&
- ip_hdr(skb)->protocol == IPPROTO_TCP) ||
- (skb->protocol == htons(ETH_P_IPV6) &&
- ipv6_hdr(skb)->nexthdr == IPPROTO_TCP))
- return TH_TCP;
+ if (skb->protocol == htons(ETH_P_IP)) {
+ return __get_transport_header_type_ip(skb);
+ } else if(skb->protocol == htons(ETH_P_IPV6)) {
+ return __get_transport_header_type_ipv6(skb);
+ }
}
- /* Fallthrough for other cases where header is not TCP. */
+ /* Fallthrough for other cases where header is not recognized. */
}
return TH_NONE;
}
@@ -137,16 +230,36 @@ static inline enum transport_header_types 
__get_transport_header_type(struct sk_

static struct lttng_enum_entry proto_transport_enum_entries[] = {
[0] = {
.start = { .value = 0, .signedness = 0, },
- .end = { .value = IPPROTO_TCP - 1, .signedness = 0, },
+ .end = { .value = IPPROTO_ICMP - 1, .signedness = 0, },
.string = "_unknown",
},
[1] = {
+ .start = { .value = IPPROTO_ICMP, .signedness = 0, },
+ .end = { .value = IPPROTO_ICMP, .signedness = 0, },
+ .string = "_icmp",
+ },
+ [2] = {
+ .start = { .value = IPPROTO_ICMP + 1, .signedness = 0, },
+ .end = { .value = IPPROTO_TCP - 1, .signedness = 0, },
+ .string = "_unknown",
+ },
+ [3] = {
.start = { .value = IPPROTO_TCP, .signedness = 0, },
.end = { .value = IPPROTO_TCP, .signedness = 0, },
.string = "_tcp",
},
- [2] = {
+ [4] = {
.start = { .value = IPPROTO_TCP + 1, .signedness = 0, },
+ .end = { .value = IPPROTO_UDP - 1, .signedness = 0, },
+ .string = "

Re: [lttng-dev] Fwd: [PATCH lttng-modules] Add UDP and ICMP packet header information to the tracepoint:

2019-12-17 Thread Mathieu Desnoyers
- On Dec 17, 2019, at 3:56 AM, Florian Walbroel  
wrote: 

> Hi,

> I sent in this patch last month and did not hear about any updates since then.

> There were a few formatting issues that have been addressed. Is there anything
> more that should be done?
Hi, 

I was expecting review from Geneviève and Julien on this patch, but never heard 
back from 
them. 

Geneviève, Julien, Michael, can you review this patch please ? 

Thanks, 

Mathieu 

> Best regards,
> Florian Walbroel

>  Forwarded Message  Subject:  [PATCH lttng-modules] Add UDP 
> and
> ICMP packet header information to the tracepoint:
> Date: Wed, 13 Nov 2019 17:38:14 +0100
> From: Florian Walbroel [ mailto:walbr...@silexica.com | 
> 
> ]

> To:   [ mailto:lttng-dev@lists.lttng.org | lttng-dev@lists.lttng.org ]

> * UDP transport header
> * ICMP transport header

> (Correct indentation for switch/case)

> Signed-off-by: Florian Walbroel [ mailto:walbr...@silexica.com |
>  ]
> ---
> instrumentation/events/lttng-module/net.h | 166 --
> 1 file changed, 153 insertions(+), 13 deletions(-)

> diff --git a/instrumentation/events/lttng-module/net.h
> b/instrumentation/events/lttng-module/net.h
> index bfa14fc..ad1892a 100644
> --- a/instrumentation/events/lttng-module/net.h
> +++ b/instrumentation/events/lttng-module/net.h
> @@ -11,6 +11,8 @@
> #include 
> #include 
> #include 
> +#include 
> +#include 
> #include 
> #include 
> #include 
> @@ -85,6 +87,53 @@ static struct lttng_event_field tcpfields[] = {
> },
> };
> +static struct lttng_event_field udpfields[] = {
> + [0] = {
> + .name = "source_port",
> + .type = __type_integer(uint16_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> + [1] = {
> + .name = "dest_port",
> + .type = __type_integer(uint16_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> + [2] = {
> + .name = "len",
> + .type = __type_integer(uint16_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> + [3] = {
> + .name = "check",
> + .type = __type_integer(uint16_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> +};
> +
> +static struct lttng_event_field icmpfields[] = {
> + [0] = {
> + .name = "type",
> + .type = __type_integer(uint8_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> + [1] = {
> + .name = "code",
> + .type = __type_integer(uint8_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> + [2] = {
> + .name = "checksum",
> + .type = __type_integer(uint16_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> + [3] = {
> + .name = "gateway",
> + .type = __type_integer(uint32_t, 0, 0, 0,
> + __BIG_ENDIAN, 10, none),
> + },
> +};
> +
> +
> static struct lttng_event_field transport_fields[] = {
> [0] = {
> .name = "unknown",
> @@ -102,13 +151,57 @@ static struct lttng_event_field transport_fields[] = {
> .u._struct.fields = tcpfields,
> },
> },
> + [2] = {
> + .name = "udp",
> + .type = {
> + .atype = atype_struct,
> + .u._struct.nr_fields = ARRAY_SIZE(udpfields),
> + .u._struct.fields = udpfields,
> + },
> + },
> + [3] = {
> + .name = "icmp",
> + .type = {
> + .atype = atype_struct,
> + .u._struct.nr_fields = ARRAY_SIZE(icmpfields),
> + .u._struct.fields = icmpfields,
> + },
> + },
> };
> enum transport_header_types {
> TH_NONE = 0,
> TH_TCP = 1,
> + TH_UDP = 2,
> + TH_ICMP = 3,
> };
> +static inline enum transport_header_types 
> __get_transport_header_type_ip(struct
> sk_buff *skb)
> +{
> + switch(ip_hdr(skb)->protocol) {
> + case IPPROTO_TCP:
> + return TH_TCP;
> + case IPPROTO_UDP:
> + return TH_UDP;
> + case IPPROTO_ICMP:
> + return TH_ICMP;
> + }
> + return TH_NONE;
> +}
> +
> +static inline enum transport_header_types
> __get_transport_header_type_ipv6(struct sk_buff *skb)
> +{
> + switch(ipv6_hdr(skb)->nexthdr) {
> + case IPPROTO_TCP:
> + return TH_TCP;
> + case IPPROTO_UDP:
> + return TH_UDP;
> + case IPPROTO_ICMP:
> + return TH_ICMP;
> + }
> + return TH_NONE;
> +}
> +
> static inline enum transport_header_types __get_transport_header_type(struct
> sk_buff *skb)
> {
> if (__has_network_hdr(skb)) {
> @@ -123,13 +216,13 @@ static inline enum transport_header_types
> __get_transport_header_type(struct sk_
> * header's data. This method works both for
> * sent and received packets.
> */
> - if ((skb->protocol == htons(ETH_P_IP) &&
> - ip_hdr(skb)->protocol == IPPROTO_TCP) ||
> - (skb->protocol == htons(ETH_P_IPV6) &&
> - ipv6_hdr(skb)->nexthdr == IPPROTO_TCP))
> - return TH_TCP;
> + if (skb->protocol == htons(ETH_P_IP)) {
> + return __get_transport_header_type_ip(skb);
> + } else if(skb->protocol == htons(ETH_P_IPV6)) {
> + return __get_transport_header_type_ipv6(skb);
> + }
> }
> - /* Fallthrough for other cases where header is not TCP. */
> + /* Fallthrough for other cases where header is not recognized. */
> }
> return TH_NONE;
> }
> @@ -137,16 +230,36 @@ static inline enum transport_header_types
> __get_transport_header_type(struct sk_
> static struct lttng_enum_entry proto_transport_enum_entries[] = {
> [0] = {
> .start = { .value = 0, .signedness = 0, },
> - .end = { .val

[lttng-dev] [PATCH lttng-modules] fix: function prototype in wrapper/mm.h

2019-12-17 Thread Michael Jeanson
Signed-off-by: Michael Jeanson 
---
 wrapper/mm.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/wrapper/mm.h b/wrapper/mm.h
index 672855b..405248a 100644
--- a/wrapper/mm.h
+++ b/wrapper/mm.h
@@ -62,7 +62,7 @@ void wrapper_set_current_oom_origin(void)
 }
 
 static inline
-void wrapper_clear_current_oom_origin()
+void wrapper_clear_current_oom_origin(void)
 {
return;
 }
-- 
2.17.1

___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


[lttng-dev] [PATCH lttng-modules] fix: use user ns wrapper code in new id trackers

2019-12-17 Thread Michael Jeanson
These wrappers are required to translate kuid on kernels prior to v3.5.

Signed-off-by: Michael Jeanson 
---
 probes/lttng-tracepoint-event-impl.h | 18 +-
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/probes/lttng-tracepoint-event-impl.h 
b/probes/lttng-tracepoint-event-impl.h
index 39454fb..321cdfa 100644
--- a/probes/lttng-tracepoint-event-impl.h
+++ b/probes/lttng-tracepoint-event-impl.h
@@ -11,7 +11,6 @@
 #include 
 #include 
 #include 
-#include 
 
 #include 
 #include 
@@ -20,6 +19,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -1146,19 +1146,19 @@ static void __event_probe__##_name(void *__data, 
_proto)  \
return;   \
__lf = lttng_rcu_dereference(__session->uid_tracker.p);   \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kuid(&init_user_ns, current_uid()\
+   lttng_current_uid(\
return;   \
__lf = lttng_rcu_dereference(__session->vuid_tracker.p);  \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kuid(current_user_ns(), current_uid()\
+   lttng_current_vuid(   \
return;   \
__lf = lttng_rcu_dereference(__session->gid_tracker.p);   \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kgid(&init_user_ns, current_gid()\
+   lttng_current_gid(\
return;   \
__lf = lttng_rcu_dereference(__session->vgid_tracker.p);  \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kgid(current_user_ns(), current_gid()\
+   lttng_current_vgid(   \
return;   \
__orig_dynamic_len_offset = 
this_cpu_ptr(offset; \
__dynamic_len_idx = __orig_dynamic_len_offset;\
@@ -1239,19 +1239,19 @@ static void __event_probe__##_name(void *__data)
  \
return;   \
__lf = lttng_rcu_dereference(__session->uid_tracker.p);   \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kuid(&init_user_ns, current_uid()\
+   lttng_current_uid(\
return;   \
__lf = lttng_rcu_dereference(__session->vuid_tracker.p);  \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kuid(current_user_ns(), current_uid()\
+   lttng_current_vuid(   \
return;   \
__lf = lttng_rcu_dereference(__session->gid_tracker.p);   \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kgid(&init_user_ns, current_gid()\
+   lttng_current_gid(\
return;   \
__lf = lttng_rcu_dereference(__session->vgid_tracker.p);  \
if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
-   from_kgid(current_user_ns(), current_gid()\
+   lttng_current_vgid(   \
return;   \
__orig_dynamic_len_offset = 
this_cpu_ptr(offset; \
__dynamic_len_idx = __orig_dynamic_len_offset;\
-- 
2.17.1

___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


Re: [lttng-dev] Fwd: [PATCH lttng-modules] Add UDP and ICMP packet header information to the tracepoint:

2019-12-17 Thread Michael Jeanson
On 2019-12-17 9:39 a.m., Mathieu Desnoyers wrote:
> I was expecting review from Geneviève and Julien on this patch, but
> never heard back from
> them.
> 
> Geneviève, Julien, Michael, can you review this patch please ?
> 
> Thanks,
> 
> Mathieu

It builds on all the latest tags of the stable kernel branches we
support and the patch itself looks good to me but Geneviève's or
Julien's feedback would be appreciated.

Michael
___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


Re: [lttng-dev] [PATCH lttng-modules] fix: function prototype in wrapper/mm.h

2019-12-17 Thread Mathieu Desnoyers
Merged into master, 2.11, 2.10, thanks!

Mathieu

- On Dec 17, 2019, at 12:11 PM, Michael Jeanson mjean...@efficios.com wrote:

> Signed-off-by: Michael Jeanson 
> ---
> wrapper/mm.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/wrapper/mm.h b/wrapper/mm.h
> index 672855b..405248a 100644
> --- a/wrapper/mm.h
> +++ b/wrapper/mm.h
> @@ -62,7 +62,7 @@ void wrapper_set_current_oom_origin(void)
> }
> 
> static inline
> -void wrapper_clear_current_oom_origin()
> +void wrapper_clear_current_oom_origin(void)
> {
>   return;
> }
> --
> 2.17.1

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


Re: [lttng-dev] [PATCH lttng-modules] fix: use user ns wrapper code in new id trackers

2019-12-17 Thread Mathieu Desnoyers
Merged into master, thanks!

Mathieu

- On Dec 17, 2019, at 12:11 PM, Michael Jeanson mjean...@efficios.com wrote:

> These wrappers are required to translate kuid on kernels prior to v3.5.
> 
> Signed-off-by: Michael Jeanson 
> ---
> probes/lttng-tracepoint-event-impl.h | 18 +-
> 1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/probes/lttng-tracepoint-event-impl.h
> b/probes/lttng-tracepoint-event-impl.h
> index 39454fb..321cdfa 100644
> --- a/probes/lttng-tracepoint-event-impl.h
> +++ b/probes/lttng-tracepoint-event-impl.h
> @@ -11,7 +11,6 @@
> #include 
> #include 
> #include 
> -#include 
> 
> #include 
> #include 
> @@ -20,6 +19,7 @@
> #include 
> #include 
> #include 
> +#include 
> #include 
> #include 
> #include 
> @@ -1146,19 +1146,19 @@ static void __event_probe__##_name(void *__data, 
> _proto)
> \
>   return;   \
>   __lf = lttng_rcu_dereference(__session->uid_tracker.p);   \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kuid(&init_user_ns, current_uid()\
> + lttng_current_uid(\
>   return;   \
>   __lf = lttng_rcu_dereference(__session->vuid_tracker.p);  \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kuid(current_user_ns(), current_uid()\
> + lttng_current_vuid(   \
>   return;   \
>   __lf = lttng_rcu_dereference(__session->gid_tracker.p);   \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kgid(&init_user_ns, current_gid()\
> + lttng_current_gid(\
>   return;   \
>   __lf = lttng_rcu_dereference(__session->vgid_tracker.p);  \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kgid(current_user_ns(), current_gid()\
> + lttng_current_vgid(   \
>   return;   \
>   __orig_dynamic_len_offset = 
> this_cpu_ptr(offset; \
>   __dynamic_len_idx = __orig_dynamic_len_offset;\
> @@ -1239,19 +1239,19 @@ static void __event_probe__##_name(void *__data)
> \
>   return;   \
>   __lf = lttng_rcu_dereference(__session->uid_tracker.p);   \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kuid(&init_user_ns, current_uid()\
> + lttng_current_uid(\
>   return;   \
>   __lf = lttng_rcu_dereference(__session->vuid_tracker.p);  \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kuid(current_user_ns(), current_uid()\
> + lttng_current_vuid(   \
>   return;   \
>   __lf = lttng_rcu_dereference(__session->gid_tracker.p);   \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kgid(&init_user_ns, current_gid()\
> + lttng_current_gid(\
>   return;   \
>   __lf = lttng_rcu_dereference(__session->vgid_tracker.p);  \
>   if (__lf && likely(!lttng_id_tracker_lookup(__lf, \
> - from_kgid(current_user_ns(), current_gid()\
> + lttng_current_vgid(   \
>   return;   \
>   __orig_dynamic_len_offset = 
> this_cpu_ptr(offset; \
>   __dynamic_len_idx = __orig_dynamic_len_offset;\
> --
> 2.17.1

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev