<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt; color: #000000"><div><br data-mce-bogus="1"></div><div><span id="zwchr" data-marker="__DIVIDER__">----- On Dec 17, 2019, at 3:56 AM, Florian Walbroel <walbroel@silexica.com> wrote:<br></span></div><div data-marker="__QUOTED_TEXT__"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><p>Hi,</p>
    <p>I sent in this patch last month and did not hear about any
      updates since then.<br>
    </p>
    <p>There were a few formatting issues that have been addressed. Is
      there anything more that should be done?</p></blockquote><div>Hi,<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><div>I was expecting review from Geneviève and Julien on this patch, but never heard back from<br data-mce-bogus="1"></div><div>them.<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><div>Geneviève, Julien, Michael, can you review this patch please ?<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><div>Thanks,<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><div>Mathieu<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><p><br>
    </p>
    <div>Best regards,</div>
    <div>Florian Walbroel</div>
    <div><br>
    </div>
    <div>-------- Forwarded Message
      --------
      <table class="moz-email-headers-table" cellspacing="0" cellpadding="0" border="0"><tbody><tr><th valign="BASELINE" nowrap="nowrap" align="RIGHT">Subject:
            </th><td>[PATCH lttng-modules] Add UDP and ICMP packet header
              information to the tracepoint:</td></tr><tr><th valign="BASELINE" nowrap="nowrap" align="RIGHT">Date: </th><td>Wed, 13 Nov 2019 17:38:14 +0100</td></tr><tr><th valign="BASELINE" nowrap="nowrap" align="RIGHT">From: </th><td>Florian Walbroel <a href="mailto:walbroel@silexica.com" target="_blank" rel="nofollow noopener noreferrer"><walbroel@silexica.com></a><br data-mce-bogus="1"></td></tr><tr><th valign="BASELINE" nowrap="nowrap" align="RIGHT">To: </th><td><a href="mailto:lttng-dev@lists.lttng.org" target="_blank" rel="nofollow noopener noreferrer">lttng-dev@lists.lttng.org</a><br data-mce-bogus="1"></td></tr></tbody></table>
      <br>
      <br>
      * UDP transport header<br>
      * ICMP transport header<br>
      <br>
      (Correct indentation for switch/case)<br>
      <br>
      Signed-off-by: Florian Walbroel <a href="mailto:walbroel@silexica.com" target="_blank" rel="nofollow noopener noreferrer"><walbroel@silexica.com></a><br>
      ---<br>
      instrumentation/events/lttng-module/net.h | 166
      ++++++++++++++++++++--<br>
      1 file changed, 153 insertions(+), 13 deletions(-)<br>
      <br>
      diff --git a/instrumentation/events/lttng-module/net.h
      b/instrumentation/events/lttng-module/net.h<br>
      index bfa14fc..ad1892a 100644<br>
      --- a/instrumentation/events/lttng-module/net.h<br>
      +++ b/instrumentation/events/lttng-module/net.h<br>
      @@ -11,6 +11,8 @@<br>
      #include <linux/ip.h><br>
      #include <linux/ipv6.h><br>
      #include <linux/tcp.h><br>
      +#include <linux/udp.h><br>
      +#include <linux/icmp.h><br>
      #include <linux/version.h><br>
      #include <lttng-endian.h><br>
      #include <net/sock.h><br>
      @@ -85,6 +87,53 @@ static struct lttng_event_field tcpfields[] = {<br>
      },<br>
      };<br>
      +static struct lttng_event_field udpfields[] = {<br>
      + [0] = {<br>
      + .name = "source_port",<br>
      + .type = __type_integer(uint16_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      + [1] = {<br>
      + .name = "dest_port",<br>
      + .type = __type_integer(uint16_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      + [2] = {<br>
      + .name = "len",<br>
      + .type = __type_integer(uint16_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      + [3] = {<br>
      + .name = "check",<br>
      + .type = __type_integer(uint16_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      +};<br>
      +<br>
      +static struct lttng_event_field icmpfields[] = {<br>
      + [0] = {<br>
      + .name = "type",<br>
      + .type = __type_integer(uint8_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      + [1] = {<br>
      + .name = "code",<br>
      + .type = __type_integer(uint8_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      + [2] = {<br>
      + .name = "checksum",<br>
      + .type = __type_integer(uint16_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      + [3] = {<br>
      + .name = "gateway",<br>
      + .type = __type_integer(uint32_t, 0, 0, 0,<br>
      + __BIG_ENDIAN, 10, none),<br>
      + },<br>
      +};<br>
      +<br>
      +<br>
      static struct lttng_event_field transport_fields[] = {<br>
      [0] = {<br>
      .name = "unknown",<br>
      @@ -102,13 +151,57 @@ static struct lttng_event_field
      transport_fields[] = {<br>
      .u._struct.fields = tcpfields,<br>
      },<br>
      },<br>
      + [2] = {<br>
      + .name = "udp",<br>
      + .type = {<br>
      + .atype = atype_struct,<br>
      + .u._struct.nr_fields = ARRAY_SIZE(udpfields),<br>
      + .u._struct.fields = udpfields,<br>
      + },<br>
      + },<br>
      + [3] = {<br>
      + .name = "icmp",<br>
      + .type = {<br>
      + .atype = atype_struct,<br>
      + .u._struct.nr_fields = ARRAY_SIZE(icmpfields),<br>
      + .u._struct.fields = icmpfields,<br>
      + },<br>
      + },<br>
      };<br>
      enum transport_header_types {<br>
      TH_NONE = 0,<br>
      TH_TCP = 1,<br>
      + TH_UDP = 2,<br>
      + TH_ICMP = 3,<br>
      };<br>
      +static inline enum transport_header_types
      __get_transport_header_type_ip(struct sk_buff *skb)<br>
      +{<br>
      + switch(ip_hdr(skb)->protocol) {<br>
      + case IPPROTO_TCP:<br>
      + return TH_TCP;<br>
      + case IPPROTO_UDP:<br>
      + return TH_UDP;<br>
      + case IPPROTO_ICMP:<br>
      + return TH_ICMP;<br>
      + }<br>
      + return TH_NONE;<br>
      +}<br>
      +<br>
      +static inline enum transport_header_types
      __get_transport_header_type_ipv6(struct sk_buff *skb)<br>
      +{<br>
      + switch(ipv6_hdr(skb)->nexthdr) {<br>
      + case IPPROTO_TCP:<br>
      + return TH_TCP;<br>
      + case IPPROTO_UDP:<br>
      + return TH_UDP;<br>
      + case IPPROTO_ICMP:<br>
      + return TH_ICMP;<br>
      + }<br>
      + return TH_NONE;<br>
      +}<br>
      +<br>
      static inline enum transport_header_types
      __get_transport_header_type(struct sk_buff *skb)<br>
      {<br>
      if (__has_network_hdr(skb)) {<br>
      @@ -123,13 +216,13 @@ static inline enum transport_header_types
      __get_transport_header_type(struct sk_<br>
      * header's data. This method works both for<br>
      * sent and received packets.<br>
      */<br>
      - if ((skb->protocol == htons(ETH_P_IP) &&<br>
      - ip_hdr(skb)->protocol == IPPROTO_TCP) ||<br>
      - (skb->protocol == htons(ETH_P_IPV6) &&<br>
      - ipv6_hdr(skb)->nexthdr == IPPROTO_TCP))<br>
      - return TH_TCP;<br>
      + if (skb->protocol == htons(ETH_P_IP)) {<br>
      + return __get_transport_header_type_ip(skb);<br>
      + } else if(skb->protocol == htons(ETH_P_IPV6)) {<br>
      + return __get_transport_header_type_ipv6(skb);<br>
      + }<br>
      }<br>
      - /* Fallthrough for other cases where header is not TCP. */<br>
      + /* Fallthrough for other cases where header is not recognized.
      */<br>
      }<br>
      return TH_NONE;<br>
      }<br>
      @@ -137,16 +230,36 @@ static inline enum transport_header_types
      __get_transport_header_type(struct sk_<br>
      static struct lttng_enum_entry proto_transport_enum_entries[] = {<br>
      [0] = {<br>
      .start = { .value = 0, .signedness = 0, },<br>
      - .end = { .value = IPPROTO_TCP - 1, .signedness = 0, },<br>
      + .end = { .value = IPPROTO_ICMP - 1, .signedness = 0, },<br>
      .string = "_unknown",<br>
      },<br>
      [1] = {<br>
      + .start = { .value = IPPROTO_ICMP, .signedness = 0, },<br>
      + .end = { .value = IPPROTO_ICMP, .signedness = 0, },<br>
      + .string = "_icmp",<br>
      + },<br>
      + [2] = {<br>
      + .start = { .value = IPPROTO_ICMP + 1, .signedness = 0, },<br>
      + .end = { .value = IPPROTO_TCP - 1, .signedness = 0, },<br>
      + .string = "_unknown",<br>
      + },<br>
      + [3] = {<br>
      .start = { .value = IPPROTO_TCP, .signedness = 0, },<br>
      .end = { .value = IPPROTO_TCP, .signedness = 0, },<br>
      .string = "_tcp",<br>
      },<br>
      - [2] = {<br>
      + [4] = {<br>
      .start = { .value = IPPROTO_TCP + 1, .signedness = 0, },<br>
      + .end = { .value = IPPROTO_UDP - 1, .signedness = 0, },<br>
      + .string = "_unknown",<br>
      + },<br>
      + [5] = {<br>
      + .start = { .value = IPPROTO_UDP, .signedness = 0, },<br>
      + .end = { .value = IPPROTO_UDP, .signedness = 0, },<br>
      + .string = "_udp",<br>
      + },<br>
      + [6] = {<br>
      + .start = { .value = IPPROTO_UDP + 1, .signedness = 0, },<br>
      .end = { .value = 255, .signedness = 0, },<br>
      .string = "_unknown",<br>
      },<br>
      @@ -169,6 +282,16 @@ static struct lttng_enum_entry
      transport_enum_entries[] = {<br>
      .end = { .value = TH_TCP, .signedness = 0, },<br>
      .string = "_tcp",<br>
      },<br>
      + [2] = {<br>
      + .start = { .value = TH_UDP, .signedness = 0, },<br>
      + .end = { .value = TH_UDP, .signedness = 0, },<br>
      + .string = "_udp",<br>
      + },<br>
      + [3] = {<br>
      + .start = { .value = TH_ICMP, .signedness = 0, },<br>
      + .end = { .value = TH_ICMP, .signedness = 0, },<br>
      + .string = "_icmp",<br>
      + },<br>
      };<br>
      static const struct lttng_enum_desc transport_header_type = {<br>
      @@ -510,15 +633,32 @@
      LTTNG_TRACEPOINT_EVENT_CLASS(net_dev_template,<br>
      ctf_integer_type(unsigned char, th_type)<br>
      /* Copy the transport header. */<br>
      - if (th_type == TH_TCP) {<br>
      + switch (th_type) {<br>
      + case TH_TCP: {<br>
      ctf_align(uint32_t)<br>
      ctf_array_type(uint8_t, tcp_hdr(skb),<br>
      sizeof(struct tcphdr))<br>
      + break;<br>
      + }<br>
      + case TH_UDP: {<br>
      + ctf_align(uint32_t)<br>
      + ctf_array_type(uint8_t, udp_hdr(skb),<br>
      + sizeof(struct udphdr))<br>
      + break;<br>
      + }<br>
      + case TH_ICMP: {<br>
      + ctf_align(uint32_t)<br>
      + ctf_array_type(uint8_t, icmp_hdr(skb),<br>
      + sizeof(struct udphdr))<br>
      + break;<br>
      + }<br>
      + default:<br>
      + /*<br>
      + * For any other transport header type,<br>
      + * there is nothing to do.<br>
      + */<br>
      + break;<br>
      }<br>
      - /*<br>
      - * For any other transport header type,<br>
      - * there is nothing to do.<br>
      - */<br>
      }<br>
      )<br>
      )<br>
      <pre class="moz-signature">-- 
2.17.1

</pre>
    </div>
  
<br>_______________________________________________<br>lttng-dev mailing list<br>lttng-dev@lists.lttng.org<br>https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev<br></blockquote></div><div><br></div><div data-marker="__SIG_POST__">-- <br></div><div>Mathieu Desnoyers<br>EfficiOS Inc.<br>http://www.efficios.com</div></div></body></html>