From 6087a8d31a23d445aabfb630c5a92dffe89b5da3 Mon Sep 17 00:00:00 2001 From: daniel_ulied Date: Fri, 12 Dec 2025 12:54:38 -0500 Subject: [PATCH] Update to GeoNet with current standards (issue #992). This PR updates ETSI GeoNetworking protocol to version 1 (ETSI EN 302 636-4-1 V1.4.1 (2020-01)). The update includes dissectors for GeoNet Beacon messages and TopoScopeBcast-SH. Additionally, the Basic Transport Protocol (ETSI EN 302 636-5-1 V2.2.1 (2019-05)) has also been updated. It includes BTP-A and BTP-B in all its variants. --- netdissect.h | 2 +- print-ether.c | 2 +- print-geonet.c | 744 +++++++++++++++++++++++++++++----------- tests/TESTLIST | 11 +- tests/geonet_v1-v.out | 113 ++++++ tests/geonet_v1-vv.out | 113 ++++++ tests/geonet_v1-vvv.out | 113 ++++++ tests/geonet_v1.out | 35 ++ tests/geonet_v1.pcap | Bin 0 -> 3517 bytes 9 files changed, 930 insertions(+), 203 deletions(-) create mode 100644 tests/geonet_v1-v.out create mode 100644 tests/geonet_v1-vv.out create mode 100644 tests/geonet_v1-vvv.out create mode 100644 tests/geonet_v1.out create mode 100644 tests/geonet_v1.pcap diff --git a/netdissect.h b/netdissect.h index 6663e9d6db..5735d9b450 100644 --- a/netdissect.h +++ b/netdissect.h @@ -676,7 +676,7 @@ extern u_int fr_print(netdissect_options *, const u_char *, u_int); extern int frag6_print(netdissect_options *, const u_char *, const u_char *); extern void ftp_print(netdissect_options *, const u_char *, u_int); extern void geneve_print(netdissect_options *, const u_char *, u_int); -extern void geonet_print(netdissect_options *, const u_char *, u_int, const struct lladdr_info *); +extern void geonet_print(netdissect_options *, const u_char *, u_int); extern void gre_print(netdissect_options *, const u_char *, u_int); extern int hbhopt_process(netdissect_options *, const u_char *, int *, uint32_t *); extern void hex_and_ascii_print(netdissect_options *, const char *, const u_char *, u_int); diff --git a/print-ether.c b/print-ether.c index 324d089fc3..514dd048f1 100644 --- a/print-ether.c +++ b/print-ether.c @@ -636,7 +636,7 @@ ethertype_print(netdissect_options *ndo, case ETHERTYPE_GEONET_OLD: case ETHERTYPE_GEONET: - geonet_print(ndo, p, length, src); + geonet_print(ndo, p, length); return (1); case ETHERTYPE_CALM_FAST: diff --git a/print-geonet.c b/print-geonet.c index 3f8ee07572..2d5adfe343 100644 --- a/print-geonet.c +++ b/print-geonet.c @@ -12,10 +12,11 @@ * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE. * - * Original code by Ola Martin Lykkja (ola.lykkja@q-free.com) + * Original code by Ola Martin Lykkja (ola.lykkja@q-free.com). + * Updated code by Daniel Ulied (daniel.ulied@i2cat.net) and Jordi Marias-Parella (jordi.marias@i2cat.net). */ -/* \summary: ISO CALM FAST and ETSI GeoNetworking printer */ +/* \summary: ETSI GeoNetworking & Basic Transport Protocol printer */ #include @@ -26,232 +27,584 @@ #include "extract.h" #include "addrtoname.h" - /* - ETSI TS 102 636-5-1 V1.1.1 (2011-02) - Intelligent Transport Systems (ITS); Vehicular Communications; GeoNetworking; - Part 5: Transport Protocols; Sub-part 1: Basic Transport Protocol + ETSI EN 302 636-5-1 V2.2.1 (2019-05) + Intelligent Transport Systems (ITS); + Vehicular Communications; + GeoNetworking; + Part 5: Transport Protocols; + Sub-part 1: Basic Transport Protocol - ETSI TS 102 636-4-1 V1.1.1 (2011-06) - Intelligent Transport Systems (ITS); Vehicular communications; GeoNetworking; + ETSI EN 302 636-4-1 V1.4.1 (2020-01) + Intelligent Transport Systems (ITS); + Vehicular Communications; + GeoNetworking; Part 4: Geographical addressing and forwarding for point-to-point and point-to-multipoint communications; - Sub-part 1: Media-Independent Functionality + Sub-part 1: Media-Independent Functionality; + Release 2 */ -#define GEONET_ADDR_LEN 8 - -static const struct tok msg_type_values[] = { - { 0, "CAM" }, - { 1, "DENM" }, - { 101, "TPEGM" }, - { 102, "TSPDM" }, - { 103, "VPM" }, - { 104, "SRM" }, - { 105, "SLAM" }, - { 106, "ecoCAM" }, - { 107, "ITM" }, - { 150, "SA" }, - { 0, NULL } -}; - -static void -print_btp_body(netdissect_options *ndo, - const u_char *bp) +/*Specific Definitions*/ +#define NDO_V_FLAG_FIRST_DEBUG_LEVEL 1 +#define NDO_V_FLAG_SECOND_DEBUG_LEVEL 2 +#define NDO_V_FLAG_THIRD_DEBUG_LEVEL 3 + +/*Bit-Wise Definitions*/ +#define ONE_BYTE 8 +#define TWO_BYTES 16 +#define THREE_BYTES 24 +#define FOUR_BYTES 32 +#define FIVE_BYTES 40 +#define SIX_BYTES 48 +#define SEVEN_BYTES 56 +#define EIGHT_BYTES 64 + +#define ONE_BIT_MASK 0x01 +#define TWO_BITS_MASK 0x03 +#define THREE_BITS_MASK 0x07 +#define FOUR_BITS_MASK 0x0F +#define FIVE_BITS_MASK 0x1F +#define SIX_BITS_MASK 0x3F +#define SEVEN_BITS_MASK 0x7F +#define EIGHT_BITS_MASK 0xFF +#define TEN_BITS_MASK 0x3FF +#define SIXTEEN_BITS_MASK 0xFFFF +#define FORTY_EIGHT_BITS_MASK 0xFFFFFFFFFFFF + +/* GeoNetworking Definitons*/ + +/* GeoNetworking Basic Header Definitions*/ +#define GN_BASIC_HEADER_MINIMUM_PACKET_LENGTH 4 + +#define IMPLEMENTED_GN_VERSIONS_NUM 1 +static const u_int implemented_gn_versions[IMPLEMENTED_GN_VERSIONS_NUM] = {1}; + +#define NH_COMMONHEADER 1 +#define NH_SECUREDPACKET 2 +#define IMPLEMENTED_GN_NEXT_HEADERS_NUM 1 +static const u_int implemented_gn_nh_headers[IMPLEMENTED_GN_NEXT_HEADERS_NUM] = { + NH_COMMONHEADER}; +static const struct tok basic_header_next_header_values[] = { + {0, "Any"}, + {NH_COMMONHEADER, "CommonHeader"}, + {NH_SECUREDPACKET, "SecuredPacket"}, + {0, NULL}}; + +#define HT_BEACON 1 +#define HT_TSB 5 +#define HT_TSB_SHB 0 +#define HT_TSB_MULTI_HOP 1 +#define ELAPSED_SECONDS 5 + +#define IMPLEMENTED_GN_HEADER_TYPES_NUM 2 +static const u_int implemented_gn_header_types[IMPLEMENTED_GN_HEADER_TYPES_NUM] = { + HT_BEACON, + HT_TSB}; + +#define LT_BASE_FIFTY_MILLISECONDS 0.05 +#define LT_BASE_ONE_SECOND 1 +#define LT_BASE_TEN_SECONDS 10 +#define LT_BASE_ONE_HUNDRED_SECONDS 100 + +/* GeoNetworking Common Header Defintiions*/ +#define BTP_A 1 +#define BTP_B 2 +static const struct tok common_header_next_header_values[] = { + {0, "Any"}, + {BTP_A, "BTP-A"}, + {BTP_B, "BTP-B"}, + {3, "IPv6"}, + {0, NULL}}; + +#define HT_HST(ht, hst) (((ht) << 8) | (hst)) +static const struct tok header_type_tok[] = { + {HT_HST(0, 0), "Any"}, + + {HT_HST(1, 0), "Beacon"}, + + {HT_HST(2, 0), "GeoUnicast"}, + + {HT_HST(3, 0), "GeoAnycastCircle"}, + {HT_HST(3, 1), "GeoAnycastRect"}, + {HT_HST(3, 2), "GeoAnycastElipse"}, + + {HT_HST(4, 0), "GeoBroadcastCircle"}, + {HT_HST(4, 1), "GeoBroadcastRect"}, + {HT_HST(4, 2), "GeoBroadcastElipse"}, + + {HT_HST(5, 0), "TopoScopeBcast-SH"}, + {HT_HST(5, 1), "TopoScopeBcast-MH"}, + + {HT_HST(6, 0), "LocService-Request"}, + {HT_HST(6, 1), "LocService-Reply"}, + {0, NULL}}; + +static const struct tok flags_text_from_bytes[] = { + {0, "Stationary"}, + {1, "Mobile"}, + {0, NULL}}; + +static const struct tok st_text_from_bytes[] = { + {1, "Pedestrian"}, + {2, "Cyclist"}, + {3, "Moped"}, + {4, "Motorcycle"}, + {5, "Passenger Car"}, + {6, "Bus"}, + {7, "Light Truck"}, + {8, "Heavy Truck"}, + {9, "Trailer"}, + {10, "Special Vehicle"}, + {11, "Tram"}, + {12, "Road Side Unit"}, + {0, NULL}}; + +/* GeoNetworking Long Position Vector*/ +#define CONVERT_CORD_TO_DEGREES 1e7 +#define CONVERT_HEADING_TO_DEGREES 1e1 +#define CONVERT_SPEED_TO_METERS_PER_SECOND 1e2 + +/* BasicTransportProtocol Definitions*/ +static const struct tok btp_port_values[] = { + {2001, "CAM"}, + {2002, "DENM"}, + {2003, "MAPEM"}, + {2004, "SPATEM"}, + {2005, "SAEM"}, + {2006, "IVIM"}, + {2007, "SREM"}, + {2008, "SSEM"}, + {2009, "CPM"}, + {2010, "EVCSN_POI"}, + {2011, "TPG"}, + {2012, "EV_RSR"}, + {2013, "RTCMEM"}, + {2014, "CTLM"}, + {2015, "CRLM"}, + {2016, "EC_AT_REQ"}, + {2017, "MCDM"}, + {2018, "VAM"}, + {2019, "IMZM"}, + {2020, "DSM"}, + {2021, "P2P_CRLM"}, + {2022, "P2P_CTLM"}, + {2023, "MRS"}, + {2024, "P2P_FULL_CTLM"}, + {0, NULL}}; + +static int is_value_in_list(u_int value, const u_int *list, u_int length_of_list) +{ + for (u_int i = 0; i < length_of_list; i++) + { + if (value == list[i]) + { + return 1; + } + } + return 0; +} + +static float convert_lt_to_seconds(uint8_t lt_base, uint8_t lt_multiplier) { - u_int msg_type; + float base_seconds; + switch (lt_base) + { + case 0: + base_seconds = LT_BASE_FIFTY_MILLISECONDS; + break; + case 1: + base_seconds = LT_BASE_ONE_SECOND; + break; + case 2: + base_seconds = LT_BASE_TEN_SECONDS; + break; + case 3: + base_seconds = LT_BASE_ONE_HUNDRED_SECONDS; + break; + } + return (float)(base_seconds * lt_multiplier); +} - /* Assuming ItsPduHeader */ - ND_PRINT("; ItsPduHeader v:%u", GET_U_1(bp)); +/* Process GN Basic Header as per Section 9.6 (ETSI EN 302 636-4-1 V1.4.1 (2020-01))*/ +static void gn_basic_header_decode_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length, uint8_t *next_header) +{ + uint8_t version; + uint8_t reserved; + uint8_t lt; + uint8_t lt_multiplier; + uint8_t lt_base; + uint8_t rhl; - msg_type = GET_U_1(bp + 1); - ND_PRINT(" t:%u-%s", msg_type, - tok2str(msg_type_values, "unknown (%u)", msg_type)); + uint8_t value = GET_U_1(*bp); + (*bp)++; + (*length)--; + version = (value >> 4) & FOUR_BITS_MASK; + if (!is_value_in_list(version, implemented_gn_versions, IMPLEMENTED_GN_VERSIONS_NUM)) + { + ND_PRINT(" (Unsupported GeoNetworking Basic Header version %u)", version); + *next_header = 0; // Indicates an error. + return; + } + *next_header = value & FOUR_BITS_MASK; + + reserved = GET_U_1(*bp); + (*bp)++; + (*length)--; + + lt = GET_U_1(*bp); + (*bp)++; + (*length)--; + lt_multiplier = (lt >> 2) & SIX_BITS_MASK; + lt_base = lt & TWO_BITS_MASK; + + rhl = GET_U_1(*bp); + (*bp)++; + (*length)--; + + const char *next_header_text = tok2str(basic_header_next_header_values, "Unknown", *next_header); + float lt_product = convert_lt_to_seconds(lt_base, lt_multiplier); + + if (ndo->ndo_vflag == NDO_V_FLAG_FIRST_DEBUG_LEVEL) + { + ND_PRINT("ver:%u nh:%s lt:%.2fs rhl:%u; ", + version, next_header_text, lt_product, rhl); + } + else if (ndo->ndo_vflag > NDO_V_FLAG_FIRST_DEBUG_LEVEL) + { + ND_PRINT("ver:%u nh:%s reserved:%u lt:[base:%u mult:%u = %.2fs] rhl:%u; ", + version, next_header_text, reserved, + lt_base, lt_multiplier, lt_product, rhl); + } } -/* EN 302 636-5-1 V2.2.1 Section 7.2: BTP-A header */ -static void -print_btp(netdissect_options *ndo, - const u_char *bp) +/* Process GN Common Header as per Section 9.7 (ETSI EN 302 636-4-1 V1.4.1 (2020-01))*/ +static void gn_common_header_decode_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length, uint8_t *header_type, uint8_t *header_subtype, uint8_t *next_header) { - ND_PRINT("; BTP Dst:%u", GET_BE_U_2(bp + 0)); - ND_PRINT(" Src:%u", GET_BE_U_2(bp + 2)); + uint8_t reserved; + uint8_t tc_encoded; + uint8_t tc_scf; + uint8_t tc_channel_offload; + uint8_t tc_id; + uint8_t flags; + uint16_t pl; + uint8_t mhl; + uint8_t reserved2; + + uint8_t value = GET_U_1(*bp); + (*bp)++; + (*length)--; + *next_header = (value >> 4) & FOUR_BITS_MASK; + reserved = value & FOUR_BITS_MASK; + + value = GET_U_1(*bp); + (*bp)++; + (*length)--; + *header_type = (value >> 4) & FOUR_BITS_MASK; + *header_subtype = value & FOUR_BITS_MASK; + + tc_encoded = GET_U_1(*bp); + (*bp)++; + (*length)--; + tc_scf = (tc_encoded >> 7) & ONE_BIT_MASK; + tc_channel_offload = (tc_encoded >> 6) & ONE_BIT_MASK; + tc_id = tc_encoded & SIX_BITS_MASK; + + flags = GET_U_1(*bp); + (*bp)++; + (*length)--; + + pl = GET_BE_U_2(*bp); + *bp += 2; + *length -= 2; + + mhl = GET_U_1(*bp); + (*bp)++; + (*length)--; + + reserved2 = GET_U_1(*bp); + (*bp)++; + (*length)--; + + const char *next_header_text = tok2str(common_header_next_header_values, "Unknown", *next_header); + const char *header_type_text = tok2str(header_type_tok, "Unknown", HT_HST(*header_type, *header_subtype)); + const char *flags_text = tok2str(flags_text_from_bytes, "Unknown", flags); + if (ndo->ndo_vflag == 1) + { + ND_PRINT("nh:%s ht:%s f:%s pl:%u mhl:%u; ", + next_header_text, header_type_text, flags_text, pl, mhl); + } + else if (ndo->ndo_vflag >= 2) + { + ND_PRINT("nh:%s reserved:%u ht:%s hst:%u tc:[scf:%u co:%u id:%u] f:%s pl:%u mhl:%u reserved2:%u; ", + next_header_text, reserved, header_type_text, *header_subtype, + tc_scf, tc_channel_offload, tc_id, + flags_text, pl, mhl, reserved2); + } + else + { + ND_PRINT("nh:%s nt:%s; ", + next_header_text, header_type_text); + } } -static void -print_long_pos_vector(netdissect_options *ndo, - const u_char *bp) +static const char *process_gn_addr(netdissect_options *ndo, uint64_t gn_addr) { - ND_PRINT("GN_ADDR:%s ", GET_LINKADDR_STRING(bp, LINKADDR_OTHER, GEONET_ADDR_LEN)); - ND_PRINT("lat:%u ", GET_BE_U_4(bp + 12)); - ND_PRINT("lon:%u", GET_BE_U_4(bp + 16)); + uint8_t m = (gn_addr >> (7 + SEVEN_BYTES)) & ONE_BIT_MASK; + uint8_t st = (gn_addr >> (2 + SEVEN_BYTES)) & FIVE_BITS_MASK; + uint16_t reserved = (gn_addr >> SIX_BYTES) & TEN_BITS_MASK; + uint64_t mib = gn_addr & FORTY_EIGHT_BITS_MASK; + static char buffer[128]; + if (ndo->ndo_vflag >= NDO_V_FLAG_FIRST_DEBUG_LEVEL) + { + snprintf(buffer, sizeof(buffer), "[m:%u st:%s reserved:%u mib:0x%llx]", m, tok2str(st_text_from_bytes, "Unknown", st), reserved, (unsigned long long)mib); + } + else + { + snprintf(buffer, sizeof(buffer), "0x%llx", (unsigned long long)mib); + } + + return buffer; } +static const char *process_lat(int32_t lat) +{ + static char buffer[24]; + if (lat > 0) + { + snprintf(buffer, sizeof(buffer), "%.6f N", (double)lat / CONVERT_CORD_TO_DEGREES); + } + else + { + snprintf(buffer, sizeof(buffer), "%.6f S", -(double)lat / CONVERT_CORD_TO_DEGREES); + } + return buffer; +} -/* - * This is the top level routine of the printer. 'p' points - * to the geonet header of the packet. - */ -void -geonet_print(netdissect_options *ndo, const u_char *bp, u_int length, - const struct lladdr_info *src) +static const char *process_lon(int32_t lon) { - u_int version; - u_int next_hdr; - u_int hdr_type; - u_int hdr_subtype; - uint16_t payload_length; - u_int hop_limit; - const char *next_hdr_txt = "Unknown"; - const char *hdr_type_txt = "Unknown"; - int hdr_size = -1; + static char buffer[24]; + if (lon > 0) + { + snprintf(buffer, sizeof(buffer), "%.6f E", (double)lon / CONVERT_CORD_TO_DEGREES); + } + else + { + snprintf(buffer, sizeof(buffer), "%.6f W", -(double)lon / CONVERT_CORD_TO_DEGREES); + } + return buffer; +} - ndo->ndo_protocol = "geonet"; - ND_PRINT("GeoNet "); - if (src != NULL) - ND_PRINT("src:%s", (src->addr_string)(ndo, src->addr)); - ND_PRINT("; "); +static const char *process_heading(u_int heading) +{ + static char buffer[16]; - /* Process Common Header */ - if (length < 36) { - ND_PRINT(" (common header length %u < 36)", length); - goto invalid; + snprintf(buffer, sizeof(buffer), + "%.1f°", (double)heading / CONVERT_HEADING_TO_DEGREES); + + return buffer; +} + +static const char *process_speed(int16_t speed) +{ + static char buffer[16]; + + snprintf(buffer, sizeof buffer, + "%.2f m/s", (double)speed / CONVERT_SPEED_TO_METERS_PER_SECOND); + + return buffer; +} + +static const char *process_pai(u_int pai) +{ + if (pai == 0) + { + return "True"; + } + else + { + return "False"; } +} + +/* Process Long Position Vector as per Section 9.5.2 of ETSI EN 302 636-4-1 V1.4.1 (2020-01)*/ +static void process_long_position_vector_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length) +{ + uint64_t gn_addr; + u_int tst; + int32_t lat; + int32_t lon; + u_int pai; + int16_t s; + u_int h; - version = GET_U_1(bp) >> 4; - next_hdr = GET_U_1(bp) & 0x0f; - hdr_type = GET_U_1(bp + 1) >> 4; - hdr_subtype = GET_U_1(bp + 1) & 0x0f; - payload_length = GET_BE_U_2(bp + 4); - hop_limit = GET_U_1(bp + 7); - - switch (next_hdr) { - case 0: next_hdr_txt = "Any"; break; - case 1: next_hdr_txt = "BTP-A"; break; - case 2: next_hdr_txt = "BTP-B"; break; - case 3: next_hdr_txt = "IPv6"; break; + gn_addr = GET_BE_U_8(*bp); + *bp += 8; + *length -= 8; + tst = GET_BE_U_4(*bp); + *bp += 4; + *length -= 4; + lat = GET_BE_S_4(*bp); + *bp += 4; + *length -= 4; + lon = GET_BE_S_4(*bp); + *bp += 4; + *length -= 4; + uint32_t value = GET_BE_U_4(*bp); + *bp += 4; + *length -= 4; + pai = (value >> (7 + THREE_BYTES)) & ONE_BIT_MASK; + s = (value >> TWO_BYTES) / SEVEN_BITS_MASK; + h = value & EIGHT_BITS_MASK; + if (ndo->ndo_vflag > NDO_V_FLAG_FIRST_DEBUG_LEVEL) + { + ND_PRINT("GN_ADDR:%s tst:%u lat:%s lon:%s pai:%s, s:%s, h:%s; ", process_gn_addr(ndo, gn_addr), tst, process_lat(lat), process_lon(lon), process_pai(pai), process_speed(s), process_heading(h)); + } + else + { + ND_PRINT("GN_ADDR:%s lat:%s, lon:%s; ", process_gn_addr(ndo, gn_addr), process_lat(lat), process_lon(lon)); } +} - switch (hdr_type) { - case 0: hdr_type_txt = "Any"; break; - case 1: hdr_type_txt = "Beacon"; break; - case 2: hdr_type_txt = "GeoUnicast"; break; - case 3: switch (hdr_subtype) { - case 0: hdr_type_txt = "GeoAnycastCircle"; break; - case 1: hdr_type_txt = "GeoAnycastRect"; break; - case 2: hdr_type_txt = "GeoAnycastElipse"; break; - } - break; - case 4: switch (hdr_subtype) { - case 0: hdr_type_txt = "GeoBroadcastCircle"; break; - case 1: hdr_type_txt = "GeoBroadcastRect"; break; - case 2: hdr_type_txt = "GeoBroadcastElipse"; break; - } - break; - case 5: switch (hdr_subtype) { - case 0: hdr_type_txt = "TopoScopeBcast-SH"; break; - case 1: hdr_type_txt = "TopoScopeBcast-MH"; break; - } - break; - case 6: switch (hdr_subtype) { - case 0: hdr_type_txt = "LocService-Request"; break; - case 1: hdr_type_txt = "LocService-Reply"; break; - } - break; +static void process_beacon_header_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length) +{ + process_long_position_vector_from_bytes(ndo, bp, length); +} + +static void process_tsb_shb_header_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length) +{ + + process_long_position_vector_from_bytes(ndo, bp, length); + u_int media_indpendenet_data = GET_BE_U_4(*bp); + *bp += 4; + *length -= 4; + if (ndo->ndo_vflag > NDO_V_FLAG_SECOND_DEBUG_LEVEL) + { + ND_PRINT("Media-Independent Data: %u; ", media_indpendenet_data); } +} - ND_PRINT("v:%u ", version); - ND_PRINT("NH:%u-%s ", next_hdr, next_hdr_txt); - ND_PRINT("HT:%u-%u-%s ", hdr_type, hdr_subtype, hdr_type_txt); - ND_PRINT("HopLim:%u ", hop_limit); - ND_PRINT("Payload:%u ", payload_length); - print_long_pos_vector(ndo, bp + 8); - - /* Skip Common Header */ - ND_TCHECK_LEN(bp, 36); - length -= 36; - bp += 36; - - /* Process Extended Headers */ - switch (hdr_type) { - case 0: /* Any */ - hdr_size = 0; - break; - case 1: /* Beacon */ - hdr_size = 0; - break; - case 2: /* GeoUnicast */ - break; - case 3: switch (hdr_subtype) { - case 0: /* GeoAnycastCircle */ - break; - case 1: /* GeoAnycastRect */ - break; - case 2: /* GeoAnycastElipse */ - break; - } - break; - case 4: switch (hdr_subtype) { - case 0: /* GeoBroadcastCircle */ - break; - case 1: /* GeoBroadcastRect */ - break; - case 2: /* GeoBroadcastElipse */ - break; - } +static void process_tsb_header_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length) +{ + u_int sn; + u_int reseved; + sn = GET_BE_U_2(bp); + *bp += 2; + *length -= 2; + reseved = GET_BE_U_2(bp); + *bp += 2; + *length -= 2; + if (ndo->ndo_vflag > 2) + { + ND_PRINT("sn:%u reserved:%u; ", sn, reseved); + } + process_long_position_vector_from_bytes(ndo, bp, length); +} + +static void process_optional_extended_header(netdissect_options *ndo, const u_char **bp, u_int *length, uint8_t header_type, uint8_t header_subtype) +{ + switch (header_type) + { + case HT_BEACON: + process_beacon_header_from_bytes(ndo, bp, length); + return; + break; + case HT_TSB: + switch (header_subtype) + { + case 0: + process_tsb_shb_header_from_bytes(ndo, bp, length); break; - case 5: switch (hdr_subtype) { - case 0: /* TopoScopeBcast-SH */ - hdr_size = 0; - break; - case 1: /* TopoScopeBcast-MH */ - hdr_size = 68 - 36; - break; - } + case 1: + process_tsb_header_from_bytes(ndo, bp, length); break; - case 6: switch (hdr_subtype) { - case 0: /* LocService-Request */ - break; - case 1: /* LocService-Reply */ - break; - } + default: + ND_PRINT(" (TSB Header-Subtype not supported)"); break; + } + break; + default: + ND_PRINT(" (Header-Type not supported)"); + break; } +} - /* Skip Extended headers */ - if (hdr_size >= 0) { - if (length < (u_int)hdr_size) { - ND_PRINT(" (header size %d > %u)", hdr_size, length); - goto invalid; +/* Process BTP Header as per Section 7.2 (ETSI EN 302 636-5-1 V2.2.1 (2019-05))*/ +static void process_btp_header_from_bytes(netdissect_options *ndo, const u_char **bp, u_int *length, u_int common_header_next_header) +{ + u_int dst_port; + u_int src_port; + u_int dst_port_info; + + dst_port = GET_BE_U_2(*bp); + *bp += 2; + *length -= 2; + + switch (common_header_next_header) + { + case BTP_A: + src_port = GET_BE_U_2(*bp); + *bp += 2; + *length -= 2; + ND_PRINT("BTP-A dst:%s src:%s; ", tok2str(btp_port_values, "Unknown", dst_port), tok2str(btp_port_values, "Unknown", src_port)); + break; + + case BTP_B: + dst_port_info = GET_BE_U_2(*bp); + *bp += 2; + *length -= 2; + if (ndo->ndo_vflag > NDO_V_FLAG_SECOND_DEBUG_LEVEL) + { + ND_PRINT("BTP-B dst:%s dpi:%u; ", tok2str(btp_port_values, "Unknown", dst_port), dst_port_info); } - ND_TCHECK_LEN(bp, hdr_size); - length -= hdr_size; - bp += hdr_size; - switch (next_hdr) { - case 0: /* Any */ - break; - case 1: - case 2: /* BTP A/B */ - if (length < 4) { - ND_PRINT(" (BTP length %u < 4)", length); - goto invalid; - } - print_btp(ndo, bp); - length -= 4; - bp += 4; - if (length >= 2) { - /* - * XXX - did print_btp_body() - * return if length < 2 - * because this is optional, - * or was that just not - * reporting genuine errors? - */ - print_btp_body(ndo, bp); - } - break; - case 3: /* IPv6 */ - break; + else + { + ND_PRINT("BTP-B dst:%s; ", tok2str(btp_port_values, "Unknown", dst_port)); } + break; + + default: + break; + } +} + +void geonet_print(netdissect_options *ndo, const u_char *bp, u_int length) +{ + ndo->ndo_protocol = "geonet"; + ND_PRINT("GeoNet "); + + if (length < GN_BASIC_HEADER_MINIMUM_PACKET_LENGTH) + { + ND_PRINT(" (length %u < %u)", length, GN_BASIC_HEADER_MINIMUM_PACKET_LENGTH); + goto invalid; + } + + /* Process Basic Header */ + uint8_t basic_header_next_header; + gn_basic_header_decode_from_bytes(ndo, &bp, &length, &basic_header_next_header); + + if (!is_value_in_list(basic_header_next_header, implemented_gn_nh_headers, IMPLEMENTED_GN_NEXT_HEADERS_NUM)) + { + ND_PRINT(" (Next-Header not supported: %s)", tok2str(basic_header_next_header_values, "Unknown", basic_header_next_header)); + goto invalid; + } + + /* Process Common Header */ + uint8_t header_type; + uint8_t header_subtype; + uint8_t common_header_next_header; + gn_common_header_decode_from_bytes(ndo, &bp, &length, &header_type, &header_subtype, &common_header_next_header); + if (!is_value_in_list(header_type, implemented_gn_header_types, IMPLEMENTED_GN_HEADER_TYPES_NUM)) + { + ND_PRINT(" (GeoNetworking Header-Type %s not supported)", tok2str(header_type_tok, "Unknown", HT_HST(header_type, header_subtype))); + goto invalid; + } + + /* Process Optional Extended Header*/ + process_optional_extended_header(ndo, &bp, &length, header_type, header_subtype); + if (common_header_next_header == BTP_A || common_header_next_header == BTP_B) + { + /* Print Basic Transport Header */ + process_btp_header_from_bytes(ndo, &bp, &length, common_header_next_header); } /* Print user data part */ @@ -261,5 +614,4 @@ geonet_print(netdissect_options *ndo, const u_char *bp, u_int length, invalid: nd_print_invalid(ndo); - /* XXX - print the remaining data as hex? */ } diff --git a/tests/TESTLIST b/tests/TESTLIST index 36c4c08d06..06edcce02e 100644 --- a/tests/TESTLIST +++ b/tests/TESTLIST @@ -354,8 +354,12 @@ of13_ericsson-vv of13_ericsson.pcapng of13_ericsson-vv.out -vv of10_inv_OFPST_FLOW-v of10_inv_OFPST_FLOW.pcap of10_inv_OFPST_FLOW-v.out -v of10_inv_QUEUE_GET_CONFIG_REPLY-vv of10_inv_QUEUE_GET_CONFIG_REPLY.pcap of10_inv_QUEUE_GET_CONFIG_REPLY-vv.out -vv -# GeoNetworking and CALM FAST tests -geonet_v0_and_calm_fast geonet_v0_and_calm_fast.pcap geonet_v0_and_calm_fast.out -vv + +# GeoNetworking +geonet_v1 geonet_v1.pcap geonet_v1.out +geonet_v1-v geonet_v1.pcap geonet_v1-v.out -v +geonet_v1-vv geonet_v1.pcap geonet_v1-vv.out -vv +geonet_v1-vvv geonet_v1.pcap geonet_v1-vvv.out -vvv # M3UA tests m3ua isup.pcap isup.out @@ -549,7 +553,6 @@ pptp-v pptp.pcap pptp-v.out -v # CVEs 2014 malformed packets from Steffen Bauch cve-2014-8767-OLSR cve-2014-8767-OLSR.pcap cve-2014-8767-OLSR.out -v -cve-2014-8768-Geonet cve-2014-8768-Geonet.pcap cve-2014-8768-Geonet.out -v cve-2014-8769-AODV cve-2014-8769-AODV.pcap cve-2014-8769-AODV.out -v # bad packets from Kevin Day @@ -651,8 +654,6 @@ heapoverflow-in_checksum heapoverflow-in_checksum.pcap heapoverflow-in_checksum. heapoverflow-tcp_print heapoverflow-tcp_print.pcap heapoverflow-tcp_print.out -v gre-heapoverflow-1 gre-heapoverflow-1.pcap gre-heapoverflow-1.out -v gre-heapoverflow-2 gre-heapoverflow-2.pcap gre-heapoverflow-2.out -v -calm-fast-mac-lookup-heapoverflow calm-fast-mac-lookup-heapoverflow.pcap calm-fast-mac-lookup-heapoverflow.out -v -geonet-mac-lookup-heapoverflow geonet-mac-lookup-heapoverflow.pcap geonet-mac-lookup-heapoverflow.out -v radiotap-heapoverflow radiotap-heapoverflow.pcap radiotap-heapoverflow.out -v isoclns-heapoverflow isoclns-heapoverflow.pcap isoclns-heapoverflow.out -v tcp-auth-heapoverflow tcp-auth-heapoverflow.pcap tcp-auth-heapoverflow.out -v diff --git a/tests/geonet_v1-v.out b/tests/geonet_v1-v.out new file mode 100644 index 0000000000..1107dc760f --- /dev/null +++ b/tests/geonet_v1-v.out @@ -0,0 +1,113 @@ + 1 2025-12-11 17:47:17.016823 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 981f 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 2 2025-12-11 17:47:17.158256 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 98ad 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 3 2025-12-11 17:47:17.911431 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; + 4 2025-12-11 17:47:18.018623 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 9c09 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 5 2025-12-11 17:47:18.159958 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 9c97 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 6 2025-12-11 17:47:19.020634 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 9ff3 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 7 2025-12-11 17:47:19.092231 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; + 8 2025-12-11 17:47:19.161822 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 a081 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 9 2025-12-11 17:47:20.022409 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 a3dd 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 10 2025-12-11 17:47:20.163689 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 a46b 0002 7280 e483 6461 .......k..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 11 2025-12-11 17:47:20.914646 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; + 12 2025-12-11 17:47:21.024755 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 a7c7 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 13 2025-12-11 17:47:21.165463 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 a854 0002 7280 e483 6461 .......T..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 14 2025-12-11 17:47:22.026529 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 abb1 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 15 2025-12-11 17:47:22.093005 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; + 16 2025-12-11 17:47:22.166871 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 ac3e 0002 7280 e483 6461 .......>..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 17 2025-12-11 17:47:23.028469 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 af9b 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 18 2025-12-11 17:47:23.168647 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 b028 0002 7280 e483 6461 .......(..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 19 2025-12-11 17:47:23.917925 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; + 20 2025-12-11 17:47:24.030202 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 b385 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 21 2025-12-11 17:47:24.170273 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 b411 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 22 2025-12-11 17:47:25.032156 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 b76f 0009 ca03 920d 9185 .......o........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 23 2025-12-11 17:47:25.096244 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; + 24 2025-12-11 17:47:25.172470 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 b7fb 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 25 2025-12-11 17:47:26.033928 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 bb58 0009 ca03 920d 9185 .......X........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 26 2025-12-11 17:47:26.174926 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 bbe5 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 27 2025-12-11 17:47:26.918397 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; + 28 2025-12-11 17:47:27.035930 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 bf43 0009 ca03 920d 9185 .......C........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 29 2025-12-11 17:47:27.176339 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 bfcf 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 30 2025-12-11 17:47:28.037971 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 c32d 0009 ca03 920d 9185 .......-........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 31 2025-12-11 17:47:28.099650 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; + 32 2025-12-11 17:47:28.177505 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 c3b8 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 33 2025-12-11 17:47:29.039191 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:45 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 c716 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 34 2025-12-11 17:47:29.178795 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:BTP-B ht:TopoScopeBcast-SH f:Stationary pl:38 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 c7a2 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 35 2025-12-11 17:47:29.919228 GeoNet ver:1 nh:CommonHeader lt:60.00s rhl:1; nh:Any ht:Beacon f:Stationary pl:0 mhl:1; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] lat:41.387304 N, lon:2.112485 E; diff --git a/tests/geonet_v1-vv.out b/tests/geonet_v1-vv.out new file mode 100644 index 0000000000..0888f85ea5 --- /dev/null +++ b/tests/geonet_v1-vv.out @@ -0,0 +1,113 @@ + 1 2025-12-11 17:47:17.016823 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070307344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 981f 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 2 2025-12-11 17:47:17.158256 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070307344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 98ad 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 3 2025-12-11 17:47:17.911431 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070307344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 4 2025-12-11 17:47:18.018623 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070308344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 9c09 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 5 2025-12-11 17:47:18.159958 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070308344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 9c97 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 6 2025-12-11 17:47:19.020634 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070309344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 9ff3 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 7 2025-12-11 17:47:19.092231 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070308344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 8 2025-12-11 17:47:19.161822 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070309344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 a081 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 9 2025-12-11 17:47:20.022409 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070310344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 a3dd 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 10 2025-12-11 17:47:20.163689 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070310344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 a46b 0002 7280 e483 6461 .......k..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 11 2025-12-11 17:47:20.914646 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070310344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 12 2025-12-11 17:47:21.024755 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070311344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 a7c7 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 13 2025-12-11 17:47:21.165463 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070311344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 a854 0002 7280 e483 6461 .......T..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 14 2025-12-11 17:47:22.026529 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070312344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 abb1 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 15 2025-12-11 17:47:22.093005 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070311344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 16 2025-12-11 17:47:22.166871 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070312344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 ac3e 0002 7280 e483 6461 .......>..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 17 2025-12-11 17:47:23.028469 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070313344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 af9b 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 18 2025-12-11 17:47:23.168647 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070313344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 b028 0002 7280 e483 6461 .......(..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 19 2025-12-11 17:47:23.917925 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070313344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 20 2025-12-11 17:47:24.030202 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070314344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 b385 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 21 2025-12-11 17:47:24.170273 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070314344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 b411 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 22 2025-12-11 17:47:25.032156 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070315344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 b76f 0009 ca03 920d 9185 .......o........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 23 2025-12-11 17:47:25.096244 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070314344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 24 2025-12-11 17:47:25.172470 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070315344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 b7fb 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 25 2025-12-11 17:47:26.033928 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070316344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 bb58 0009 ca03 920d 9185 .......X........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 26 2025-12-11 17:47:26.174926 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070316344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 bbe5 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 27 2025-12-11 17:47:26.918397 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070316344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 28 2025-12-11 17:47:27.035930 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070317344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 bf43 0009 ca03 920d 9185 .......C........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 29 2025-12-11 17:47:27.176339 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070317344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 bfcf 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 30 2025-12-11 17:47:28.037971 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070318344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 c32d 0009 ca03 920d 9185 .......-........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 31 2025-12-11 17:47:28.099650 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070317344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 32 2025-12-11 17:47:28.177505 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070318344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 c3b8 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 33 2025-12-11 17:47:29.039191 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070319344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:CAM; + 0x0000: 0202 0000 0001 c716 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 34 2025-12-11 17:47:29.178795 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070319344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; BTP-B dst:VAM; + 0x0000: 0310 0000 0002 c7a2 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 35 2025-12-11 17:47:29.919228 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070319344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; diff --git a/tests/geonet_v1-vvv.out b/tests/geonet_v1-vvv.out new file mode 100644 index 0000000000..68abe54b65 --- /dev/null +++ b/tests/geonet_v1-vvv.out @@ -0,0 +1,113 @@ + 1 2025-12-11 17:47:17.016823 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070307344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 981f 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 2 2025-12-11 17:47:17.158256 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070307344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 98ad 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 3 2025-12-11 17:47:17.911431 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070307344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 4 2025-12-11 17:47:18.018623 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070308344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 9c09 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 5 2025-12-11 17:47:18.159958 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070308344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 9c97 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 6 2025-12-11 17:47:19.020634 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070309344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 9ff3 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 7 2025-12-11 17:47:19.092231 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070308344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 8 2025-12-11 17:47:19.161822 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070309344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 a081 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 9 2025-12-11 17:47:20.022409 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070310344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 a3dd 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 10 2025-12-11 17:47:20.163689 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070310344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 a46b 0002 7280 e483 6461 .......k..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 11 2025-12-11 17:47:20.914646 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070310344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 12 2025-12-11 17:47:21.024755 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070311344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 a7c7 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 13 2025-12-11 17:47:21.165463 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070311344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 a854 0002 7280 e483 6461 .......T..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 14 2025-12-11 17:47:22.026529 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070312344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 abb1 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 15 2025-12-11 17:47:22.093005 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070311344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 16 2025-12-11 17:47:22.166871 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070312344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 ac3e 0002 7280 e483 6461 .......>..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 17 2025-12-11 17:47:23.028469 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070313344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 af9b 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 18 2025-12-11 17:47:23.168647 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070313344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 b028 0002 7280 e483 6461 .......(..r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 19 2025-12-11 17:47:23.917925 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070313344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 20 2025-12-11 17:47:24.030202 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070314344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 b385 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 21 2025-12-11 17:47:24.170273 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070314344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 b411 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 22 2025-12-11 17:47:25.032156 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070315344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 b76f 0009 ca03 920d 9185 .......o........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 23 2025-12-11 17:47:25.096244 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070314344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 24 2025-12-11 17:47:25.172470 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070315344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 b7fb 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 25 2025-12-11 17:47:26.033928 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070316344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 bb58 0009 ca03 920d 9185 .......X........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 26 2025-12-11 17:47:26.174926 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070316344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 bbe5 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 27 2025-12-11 17:47:26.918397 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070316344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 28 2025-12-11 17:47:27.035930 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070317344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 bf43 0009 ca03 920d 9185 .......C........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 29 2025-12-11 17:47:27.176339 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070317344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 bfcf 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 30 2025-12-11 17:47:28.037971 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070318344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 c32d 0009 ca03 920d 9185 .......-........ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 31 2025-12-11 17:47:28.099650 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070317344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; + 32 2025-12-11 17:47:28.177505 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070318344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 c3b8 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 33 2025-12-11 17:47:29.039191 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:45 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070319344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:CAM dpi:0; + 0x0000: 0202 0000 0001 c716 0009 ca03 920d 9185 ................ + 0x0010: 1e47 d07d 0001 b774 3400 000f c000 7ebf .G.}...t4.....~. + 0x0020: e9ed 0737 feeb fff6 00 ...7..... + 34 2025-12-11 17:47:29.178795 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:BTP-B reserved:0 ht:TopoScopeBcast-SH hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:38 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c002] tst:1070319344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; Media-Independent Data: 0; BTP-B dst:VAM dpi:0; + 0x0000: 0310 0000 0002 c7a2 0002 7280 e483 6461 ..........r...da + 0x0010: 4791 f41f 4000 6ddd 0d00 0708 fe00 03f5 G...@.m......... + 0x0020: 0730 .0 + 35 2025-12-11 17:47:29.919228 GeoNet ver:1 nh:CommonHeader reserved:0 lt:[base:2 mult:6 = 60.00s] rhl:1; nh:Any reserved:0 ht:Beacon hst:0 tc:[scf:0 co:0 id:0] f:Stationary pl:0 mhl:1 reserved2:0; GN_ADDR:[m:1 st:Cyclist reserved:0 mib:0xdd1408c7c001] tst:1070319344 lat:41.387304 N lon:2.112485 E pai:True, s:0.00 m/s, h:0.0°; diff --git a/tests/geonet_v1.out b/tests/geonet_v1.out new file mode 100644 index 0000000000..8d34522449 --- /dev/null +++ b/tests/geonet_v1.out @@ -0,0 +1,35 @@ + 1 2025-12-11 17:47:17.016823 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 2 2025-12-11 17:47:17.158256 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 3 2025-12-11 17:47:17.911431 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; + 4 2025-12-11 17:47:18.018623 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 5 2025-12-11 17:47:18.159958 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 6 2025-12-11 17:47:19.020634 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 7 2025-12-11 17:47:19.092231 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; + 8 2025-12-11 17:47:19.161822 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 9 2025-12-11 17:47:20.022409 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 10 2025-12-11 17:47:20.163689 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 11 2025-12-11 17:47:20.914646 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; + 12 2025-12-11 17:47:21.024755 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 13 2025-12-11 17:47:21.165463 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 14 2025-12-11 17:47:22.026529 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 15 2025-12-11 17:47:22.093005 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; + 16 2025-12-11 17:47:22.166871 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 17 2025-12-11 17:47:23.028469 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 18 2025-12-11 17:47:23.168647 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 19 2025-12-11 17:47:23.917925 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; + 20 2025-12-11 17:47:24.030202 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 21 2025-12-11 17:47:24.170273 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 22 2025-12-11 17:47:25.032156 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 23 2025-12-11 17:47:25.096244 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; + 24 2025-12-11 17:47:25.172470 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 25 2025-12-11 17:47:26.033928 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 26 2025-12-11 17:47:26.174926 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 27 2025-12-11 17:47:26.918397 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; + 28 2025-12-11 17:47:27.035930 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 29 2025-12-11 17:47:27.176339 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 30 2025-12-11 17:47:28.037971 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 31 2025-12-11 17:47:28.099650 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; + 32 2025-12-11 17:47:28.177505 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 33 2025-12-11 17:47:29.039191 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; BTP-B dst:CAM; + 34 2025-12-11 17:47:29.178795 GeoNet nh:BTP-B nt:TopoScopeBcast-SH; GN_ADDR:0xdd1408c7c002 lat:41.387304 N, lon:2.112485 E; BTP-B dst:VAM; + 35 2025-12-11 17:47:29.919228 GeoNet nh:Any nt:Beacon; GN_ADDR:0xdd1408c7c001 lat:41.387304 N, lon:2.112485 E; diff --git a/tests/geonet_v1.pcap b/tests/geonet_v1.pcap new file mode 100644 index 0000000000000000000000000000000000000000..8f9ae8136ddfe9d824eed3b41cb55eeb53e18862 GIT binary patch literal 3517 zcmb7`O=uHA6oB7uib)UA7DUBETQB0JQ2aqb@TVT)MJXs&#Dhh_)*uy8^b)OTq(u+5 z2&OhrYptnnYf_`G7$Jp#5k06V^%M|MP(%=oA_}eV#WH4PUWT`@u-PQ@&G!wH?5o`E zAsedT-%$k?z8LYX?Qk~&?8R$3XG%w5ejq<-^@M6+vDMImw;L_!hQD{$KaJHaa#mch znsLyVLvHLcPWM4REj!1b<)}eBb>|q!;=Sgyr}_ zI?GtIdO%}f3Qq4jj*#6f3pDVP4-~I91|sCtAz2^|QU!`%;sYg+bs1M!vi^f_c)h`I zMm<7?+AZCh%&z}`Yl7?V)uR#Wj>`gRCanTpImHJWMOII%EYR>{KG1N%7>JM^CuMpX zq|&<jus?y+;-(k>Ud-^2R`fY&|Orq(Q1cqucpFH<2~8U#928cs*yr zs7J^xVc7=p>d^?V&&dL5CanUEt>XhZ$XeAY3zY2Q10@HHfe4xJlj&)YN-wpnvfhX_ zSNChh{)2c~V>sJiM`eN1?R=ng)EJ16OZsJjG)NWbPAwm399i**OwVoM_1sRQ9wCdz zWE;e*M