Commit Graph

163 Commits

Author SHA1 Message Date
Martin Mathieson c72fc5b163 Fix some spelling errors 2024-02-22 20:28:19 +00:00
Gerald Combs 34c90f7a3d 6LoWPAN: Add recursion checks 2024-02-21 14:36:18 -08:00
Stig Bjørlykke 2a9bc63325 Remove init of proto variables
Remove init of proto, header field, expert info and subtree variables.
This will reduces the binary size by approximate 1266320 bytes due to
using .bss to zero-initialize the fields.

The conversion is done using the tools/convert-proto-init.py script.
2023-11-20 08:20:54 +01:00
João Valverde 1c0f9cd3ae IPv6: Move IPv6 header definitions to epan/dissectors 2023-10-31 10:14:09 +00:00
Martin Mathieson edfb89301c tools/delete_includes.py: rework 2023-05-11 09:49:08 +00:00
Jaap Keuter adbaced04c Dissectors should not include stdio.h, unless needed 2021-12-05 12:45:46 +00:00
Tomasz Moń 7b82110092 USB HID: Parse bit fields with correct bit order
Implement little endian support for tvb_get_bits family of functions.
The big/little endian refers to bit numbering within an octet. In big
endian, the most significant bit is considered bit 0, while in little
endian the least significant bit is considered bit 0.

Add encoding parameters to proto tree bits format family functions.
Specify ENC_BIG_ENDIAN in all dissectors using these functions except in
USB HID that requires ENC_LITTLE_ENDIAN to work correctly.

When formatting bits values, always display most significant bit on the
leftmost position regardless of the encoding. This results in no gaps
between octets and makes the displayed value comprehensible.

Close #4478
Fix #17014
2021-09-26 18:16:28 +02:00
Evan Huus d6d7dd1e56 First pass pinfo->pool conversion
Automated find/replace of wmem_packet_scope() with pinfo->pool in all
files where it didn't cause a build failure.

I also tweaked a few of the docs which got caught up.
2021-07-21 05:38:29 +00:00
Guy Harris 57a1514ac7 Cast away the return value of g_strlcpy() and g_strlcat().
Most of the time, the return value tells us nothing useful, as we've
already decided that we're perfectly willing to live with string
truncation.  Hopefully this keeps Coverity from whining that those
routines could return an error code (NARRATOR: They don't) and thus that
we're ignoring the possibility of failure (as indicated, we've already
decided that we can live with string truncation, so truncation is *NOT*
a failure).
2021-04-30 03:19:19 -07:00
Guy Harris e1d9a226a2 Fix the type of arrays of pointers to hf_ values for bitfield routines.
The static arrays are supposed to be arrays of const pointers to int,
not arrays of non-const pointers to const int.

Fixing that means some bugs (scribbling on what's *supposed* to be a
const array) will be caught (see packet-ieee80211-radiotap.c for
examples, the first of which inspired this change and the second of
which was discovered while testing compiles with this change), and
removes the need for some annoying casts.

Also make some of those arrays static while we're at it.

Update documentation and dissector-generator tools.

Change-Id: I789da5fc60aadc15797cefecfd9a9fbe9a130ccc
Reviewed-on: https://code.wireshark.org/review/37517
Petri-Dish: Guy Harris <gharris@sonic.net>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2020-06-19 11:32:26 +00:00
Guy Harris 20800366dd HTTPS (almost) everywhere.
Change all wireshark.org URLs to use https.

Fix some broken links while we're at it.

Change-Id: I161bf8eeca43b8027605acea666032da86f5ea1c
Reviewed-on: https://code.wireshark.org/review/34089
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2019-07-26 18:44:40 +00:00
James Ko dfbf88397e Add 6LoWPAN Selective Fragment Recovery
Reassemble fragments with RFRAG Dispatch type and header.

Change-Id: Ifa30289069fda13fadc090fa5b78c0fcbfbae39e
Reviewed-on: https://code.wireshark.org/review/32594
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2019-04-08 09:31:51 +00:00
Gerald Combs 8d3ac3af86 epan: Convert our PROTO_ITEM_ macros to inline functions.
Convert our various PROTO_ITEM_ macros to inline functions and document
them.

Change-Id: I070b15d4f70d2189217a177ee8ba2740be36327c
Reviewed-on: https://code.wireshark.org/review/32706
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2019-04-04 04:03:38 +00:00
Jeff Morriss 62e81562e4 6lowpan: don't try to use (new) TVB that wasn't created.
If the IPHC TVB wasn't created then bail out of dissection before trying
to use it.

Bug: 15217
Change-Id: I6e297590cdf86e13b0185f75f1d409888f2498d8
Reviewed-on: https://code.wireshark.org/review/31308
Petri-Dish: Jeff Morriss <jeff.morriss.ws@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
2019-01-02 23:49:36 +00:00
Robert Sauter 55d8c445b4 6lowpan: fix handling of UDP packets without payload
Replace all calls of tvb_ensure_captured_length_remaining with
tvb_ensure_length_remaining as they are only used to ensure that already
read data is present and it is not always required that at least 1 more
byte follows.

Change-Id: I71b1142c0d8f8fe3ddb09b80b6ca8ed10e0b67b6
Reviewed-on: https://code.wireshark.org/review/30517
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-11-07 11:43:30 +00:00
Stig Bjørlykke 1d5142a38c 6lowpan: Show IPv6 summary line in tree
Add a preference to show IPv6 summary line in the protocol tree.
Mark source and destination as generated when length is 0.

Change-Id: I1c1befed100e92de38006f1e4ce65bf19c14a32b
Reviewed-on: https://code.wireshark.org/review/30230
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2018-10-18 08:38:43 +00:00
tchang 07f7008e4c 6LoRH: fix in IP-in-IP header dissector
Change-Id: Iaba22d9b431a097eea4bb0dbea3c514a607ef001
Reviewed-on: https://code.wireshark.org/review/27805
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2018-05-26 06:53:25 +00:00
Peter Wu 06d6fbfdc1 6lowpan: fix reassembly for forwarded packets
With 6LoWPAN mesh routing over 802.15.4 networks, the same packet will
be forwarded over different links. Such duplicate datagram tags will
result in collisions (wrong "Reasssembled in" and reassembly failure).

Incorporate the link-layer address to differentiate fragments in
forwarded packets, in addition to the datagram tag.

Bug: 14700
Change-Id: I8e4adae54b3e903cfcd74844c6bbe0ecf17eefda
Reviewed-on: https://code.wireshark.org/review/27761
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Eduardo Montoya Marín <emontoya@kirale.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Robert Sauter <sauter@locoslab.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-05-24 13:58:48 +00:00
Stig Bjørlykke 845bd4f728 6lowpan: Add option to toggle IID U/L bit
RFC 7668 section 3.2.2 states that IID formed from the 48-bit Bluetooth
device addresses does not toggle the Universal/Local bit, but Linux
kernel BT IPSP code before version 4.12 does toggle this bit.

Add an option to turn this on when needed.

Change-Id: I77f84a5d56e77bb2c61770237fe53367498cc194
Reviewed-on: https://code.wireshark.org/review/26533
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2018-03-18 22:26:24 +00:00
Robert Sauter 6bb0d8b7ff 6LoWPAN: fix cast-qual warning
Change-Id: I688c2052b2e242664d31d995583330715ace37cd
Reviewed-on: https://code.wireshark.org/review/26261
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2018-03-04 23:37:58 +00:00
Robert Sauter 87dfaa72cf 6LoWPAN: Less scary display if UDP checksum is elided
Set the 'recomputed' checksum to 0xffff instead of 0 so that the UDP
dissector does not show an 'Illegal Checksum value (0)' PI_ERROR.

Bug 14458

Change-Id: I0fba0979be5a5b2957a7cec98c0df7996491d3b5
Reviewed-on: https://code.wireshark.org/review/26052
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2018-02-28 12:25:09 +00:00
Stig Bjørlykke 8f4ea952b4 6lowpan: Use correct offset for "UDP header compression" header
Change-Id: I900dce329a593e55b894faf3e41071893ed91c46
Reviewed-on: https://code.wireshark.org/review/26147
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2018-02-27 20:48:35 +00:00
Pascal Quantin 38d784d547 6LoWPAN: break loop in case of unexpected loRHE type
Bug: 14422
Change-Id: I5875dd63282ff645e78a4b0cf5f34ea746ec7dfd
Reviewed-on: https://code.wireshark.org/review/25852
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
2018-02-18 02:23:22 +00:00
Dario Lombardo fe219637a6 dissectors: use SPDX identifiers.
Change-Id: I92c94448e6641716d03158a5f332c8b53709423a
Reviewed-on: https://code.wireshark.org/review/25756
Petri-Dish: Dario Lombardo <lomato@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-02-12 16:49:58 +00:00
Pascal Quantin 183b9119dc 6LowPAN: always build IPv6 address whatever the tree state
Bug: 14277
Change-Id: I320def755076ef8c52d4e5e0dbedf06ea88f25a7
Reviewed-on: https://code.wireshark.org/review/24848
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
2017-12-16 03:08:05 +00:00
Guy Harris 458c3c026e Add a ws_in6_addr typedef for struct e_in6_addr.
That allows a parallel typedef of ws_in4_addr for guint32.

Change-Id: I03b230247065e0e3840eb87635315a8e523ef562
Reviewed-on: https://code.wireshark.org/review/24073
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-10-26 08:50:34 +00:00
Stig Bjørlykke 253fcfa221 6lowpan: Create ifcid from AT_ETHER
This will reassemble source and destination addresses from Bluetooth
and Bluetooth LE.

Change-Id: I563ef7b411488a2ba99fe2284eca0445208cf7e1
Reviewed-on: https://code.wireshark.org/review/23618
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-09-19 21:53:30 +00:00
João Valverde 692b1175e4 Have a single IPv6 tap
Optimize code and open possibility for enriching IPv6 tap data.

Change-Id: I5a204d7464cde32123d5bfe664cc9b6bcf08dbe1
Reviewed-on: https://code.wireshark.org/review/23340
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
2017-09-02 16:06:42 +00:00
Robert Sauter 0ba78c947b Ethertype: Add 6LoWPAN Ethertype; register dissector
Change-Id: I3ba09b8ebc696b83531b998fcc3a0f521d86df41
Reviewed-on: https://code.wireshark.org/review/22581
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-07-11 13:48:45 +00:00
Jonathan Munoz a3b47316eb 6LoWPAN: added dissection for 6LoRH. (RFC8138, RFC8025)
Change-Id: I13396077ec7f3ec4fe9cfea9b3bd03305a5ee332
Reviewed-on: https://code.wireshark.org/review/22484
Reviewed-by: Michael Mann <mmann78@netscape.net>
2017-07-08 21:41:02 +00:00
Michael Mann 99b76a5bc3 Use proto_tree_add_item instead of proto_tree_add_xxx.
It's a little more efficient to use proto_tree_add_item, than
proto_tree_add_xxx, passing it the returned tvb_get_xxx value.

Change-Id: I22ddd7ab36e1ee5aae78fc693d7dbac4b4f802f2
Reviewed-on: https://code.wireshark.org/review/21691
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-05-17 15:16:42 +00:00
Michael Mann af54b292e6 Register reassembly tables
Register all reassembly tables with a central unit, allowing the
central unit to have the callback that initializes and destroys
the reassembly tables, rather than have dissectors do it individually.

Change-Id: Ic92619c06fb5ba6f1c3012f613cae14982e101d4
Reviewed-on: https://code.wireshark.org/review/19834
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2017-01-29 13:29:04 +00:00
Dario Lombardo 98718aa107 6lowpan: add shutdown routine.
Change-Id: I1e324f9d7fdf4d96d8d9d53cbf1932458a2ea1a5
Reviewed-on: https://code.wireshark.org/review/19703
Reviewed-by: Michael Mann <mmann78@netscape.net>
2017-01-20 18:30:16 +00:00
João Valverde 3649993ded 6LoWPAN: Make UDP NHC port endianness code cleaner
Change-Id: I7abb29a8368a91d113038bc878aaf47ed58360bb
Reviewed-on: https://code.wireshark.org/review/19298
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
2016-12-16 18:18:27 +00:00
João Valverde f923009c77 6LoWPAN: Display UDP NHC port encoding field as 2-bit
Reference: RFC 6282 Section 4.3.3

Change-Id: I8ff46452d80b1aba4545967bc05310c341f6e174
Reviewed-on: https://code.wireshark.org/review/19297
Reviewed-by: João Valverde <j@v6e.pt>
2016-12-16 17:45:38 +00:00
Yasuyuki Tanaka 0572fbb3cf 6LoWPAN: bugfix in extracting in-line UDP checksum of IPHC
Bug: 13233
Change-Id: Ie697d5a2d8a604bf3348f690d78ada4f9f0b1b89
Reviewed-on: https://code.wireshark.org/review/19208
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
2016-12-16 16:24:11 +00:00
Stig Bjørlykke d7ef9461d3 6LoWPAN: Use correct full name
6LoWPAN is not only used over IEEE 802.15.4, so adjust the full name.

Change-Id: I56305baa74c0cc9337dfd5e813965035fd7dcec6
Reviewed-on: https://code.wireshark.org/review/18677
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2016-11-05 12:44:01 +00:00
Pascal Quantin 0b1fd7e8fb 6LowPAN: initialize interface identifier even when no data-link source is found
Bug: 12939
Change-Id: Ib4e8adbff3e335e602da5e6857bfc801601fd25e
Reviewed-on: https://code.wireshark.org/review/17871
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-09-22 21:38:56 +00:00
João Valverde e3d78be0b4 Move IPv6 inet definitions to wsutil/inet_ipv6.h
Change-Id: I880adf7fc1e131639f318cdecf7d8e59262d89fb
Reviewed-on: https://code.wireshark.org/review/16784
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
2016-07-30 13:14:43 +00:00
Michael Mann ad6fc87d64 Add proto_tree_add_checksum.
This is an attempt to standardize display/handling of checksum fields for all dissectors.
The main target is for dissectors that do validation, but dissectors that just report the
checksum were also included just to make them easier to find in the future.

Bug: 10620
Bug: 12058
Ping-Bug: 8859
Change-Id: Ia8abd86e42eaf8ed50de6b173409e914b17993bf
Reviewed-on: https://code.wireshark.org/review/16380
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Jeff Morriss <jeff.morriss.ws@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-07-21 12:35:22 +00:00
João Valverde 1a3fc2e7af IPv6: Remove union from struct ip6_hdr
The field macros are a particularly obnoxious form of namespace pollution.

Change-Id: I9010a767625fd1c4b4a48c9d75481c577915fce6
Reviewed-on: https://code.wireshark.org/review/16520
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
2016-07-18 01:32:04 +00:00
Michael Mann 8682f4b73c packet-6lowpan.c: fix uninitialized variable (ipv6_ext) warning
Change-Id: I8182bc9452cbd1201c81407041b6b522434f5ec0
Reviewed-on: https://code.wireshark.org/review/16394
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-07-12 18:30:03 +00:00
Michael Mann 5c08509b00 6lowpan - Eliminate tvb_get_ptr
Change-Id: I6a8ea98cf0f4a2172e73fc4dcad67f2dbf8d5be3
Reviewed-on: https://code.wireshark.org/review/15471
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-05-17 12:31:20 +00:00
Dario Lombardo 4d5caf316f 6lowpan: change malloc to wmem_alloc.
Change-Id: Iae9c52571457baccdce9ae0586ee223a08ec7597
Reviewed-on: https://code.wireshark.org/review/14890
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-04-13 02:19:39 +00:00
Kevin Bracey d81fe3907b Correct 6LoWPAN NHC datagram size calculations
Length calculations updating "remaining datagram size" for fragmented
6LoWPAN packets with NHC headers were incorrect if there was any elided
option padding.

The current header's unpadded length was subtracted from dgram_size,
when it should have been the padded length - the datagram size is
uncompressed IPv6.

This meant the final nhdr_list entry created to represent the remaining
payload would have its "reported" field too large. Most visible result
of this was that the IPv6 payload length written into the packet by
lowpan_reassemble_ipv6() was too large.

Error probably went unnoticed because the most typical 6LoWPAN options
don't need padding - the RPL option is 6 bytes, and the MPL option is 6
bytes if using 16-bit seeds, making the HbH extension header an aligned
8 bytes.

Bug: 12310
Change-Id: If94e9ca57f88c4ac41f002a689ce1da7097b5bd0
Reviewed-on: https://code.wireshark.org/review/14701
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-03-31 03:07:58 +00:00
Michael Mann 1e60d63c8c Create call_data_dissector() to call data dissector.
This saves many dissectors the need to find the data dissector and store a handle to it.

There were also some that were finding it, but not using it.
For others this was the only reason for their handoff function, so it could be eliminated.

Change-Id: I5d3f951ee1daa3d30c060d21bd12bbc881a8027b
Reviewed-on: https://code.wireshark.org/review/14530
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-03-20 17:38:03 +00:00
Michael Mann 9bcac48403 Manually add protocol dependencies derived from find_dissector.
Started by grepping call_dissector_with_data, call_dissector_only and call_dissector and traced the handles passed into them to a find_dissector within the dissector.  Then replaced find_dissector with find_dissector_add_dependency and added the protocol id from the dissector.
"data" dissector was not considered to be a dependency.

Change-Id: I15d0d77301306587ef8e7af5876e74231816890d
Reviewed-on: https://code.wireshark.org/review/14509
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-03-20 12:48:48 +00:00
Martin Kaiser bf1c8b5617 6lowpan: proto_tree_add_item() can be used directly for an FT_UINT64
Change-Id: I3f43fc9b0951822dd2ec3aba85af993e20c549d3
Reviewed-on: https://code.wireshark.org/review/14515
Reviewed-by: João Valverde <j@v6e.pt>
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2016-03-18 22:04:18 +00:00
Martin Kaiser 7cb530a594 6lowpan: remove a ton of if (tree) checks
Change-Id: Idff3eda741e62bfe5b00f30760bcc8af0e8e5df5
Reviewed-on: https://code.wireshark.org/review/14514
Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
2016-03-18 16:45:27 +00:00
Michal Labedzki 08cf506988 Bluetooth/6lowpan: Add missing handle for L2CAP CID
Change-Id: I0a9e405069250cf37e38a0e4b1e9645997f80409
Reviewed-on: https://code.wireshark.org/review/13736
Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
2016-02-06 11:09:08 +00:00