From: Alan T. DeKok Date: Tue, 5 Sep 2023 17:18:29 +0000 (-0400) Subject: decode DHCPv6 structs as nested X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e151d5a02452899ed8024e4cf61826eb156ebd19;p=thirdparty%2Ffreeradius-server.git decode DHCPv6 structs as nested --- diff --git a/src/protocols/dhcpv6/decode.c b/src/protocols/dhcpv6/decode.c index 3dec19940a8..820a47fcd5b 100644 --- a/src/protocols/dhcpv6/decode.c +++ b/src/protocols/dhcpv6/decode.c @@ -73,7 +73,6 @@ static ssize_t decode_value(TALLOC_CTX *ctx, fr_pair_list_t *out, ssize_t slen; fr_pair_t *vp = NULL; uint8_t prefix_len; - fr_dhcpv6_decode_ctx_t *packet_ctx = decode_ctx; FR_PROTO_HEX_DUMP(data, data_len, "decode_value"); @@ -176,7 +175,7 @@ static ssize_t decode_value(TALLOC_CTX *ctx, fr_pair_list_t *out, break; case FR_TYPE_STRUCT: - slen = fr_struct_from_network(ctx, out, parent, data, data_len, packet_ctx->struct_nested, + slen = fr_struct_from_network(ctx, out, parent, data, data_len, true, decode_ctx, decode_value_trampoline, decode_tlv_trampoline); if (slen < 0) goto raw; diff --git a/src/protocols/dhcpv6/dhcpv6.h b/src/protocols/dhcpv6/dhcpv6.h index cce442f2b82..2b880655f07 100644 --- a/src/protocols/dhcpv6/dhcpv6.h +++ b/src/protocols/dhcpv6/dhcpv6.h @@ -142,7 +142,6 @@ typedef struct { uint32_t transaction_id; //!< previous transaction ID uint8_t *duid; //!< the expected DUID, in wire format size_t duid_len; //!< length of the expected DUID - bool struct_nested; //!< decode structs as nested } fr_dhcpv6_decode_ctx_t; /* diff --git a/src/tests/unit/protocols/dhcpv6/packet.txt b/src/tests/unit/protocols/dhcpv6/packet.txt index dd2a9fd189d..e9a45cd089d 100644 --- a/src/tests/unit/protocols/dhcpv6/packet.txt +++ b/src/tests/unit/protocols/dhcpv6/packet.txt @@ -15,7 +15,7 @@ match 00 05 00 18 20 01 0d b8 00 00 00 00 00 00 00 00 00 0c 78 eb 00 00 00 00 00 # Decode ALL fields. # decode-pair - -match IA-Addr.IPv6-Address = 2001:db8::c:78eb, IA-Addr.Preferred-Lifetime = 0, IA-Addr.Valid-Lifetime = 3600 +match IA-Addr = { IPv6-Address = 2001:db8::c:78eb, Preferred-Lifetime = 0, Valid-Lifetime = 3600 } # # Allow structs as groups, in which case they are encoded properly. @@ -23,12 +23,6 @@ match IA-Addr.IPv6-Address = 2001:db8::c:78eb, IA-Addr.Preferred-Lifetime = 0, I encode-pair IA-Addr = { IPv6-Address = 2001:db8::c:78eb, Valid-Lifetime = 3600 } match 00 05 00 18 20 01 0d b8 00 00 00 00 00 00 00 00 00 0c 78 eb 00 00 00 00 00 00 0e 10 -# -# But the decoding portion isn't done yet. -# -decode-pair - -match IA-Addr.IPv6-Address = 2001:db8::c:78eb, IA-Addr.Preferred-Lifetime = 0, IA-Addr.Valid-Lifetime = 3600 - # # BUT if we are given the children out of order, we sort them, and put them in place properly. # @@ -44,7 +38,7 @@ encode-proto Packet-Type = Request, Transaction-ID = 0xabcdef, Client-ID.DUID = match 03 ab cd ef 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f decode-proto - -match Packet-Type = Request, Transaction-ID = 0xabcdef, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Packet-Type = Request, Transaction-ID = 0xabcdef, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } count -match 19 +match 17 diff --git a/src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt b/src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt index c022c3d9f33..2ca48cbaf51 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt @@ -44,7 +44,7 @@ fuzzer-out dhcpv6 # \iapdopt \ # decode-proto 01 d8 1e b8 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 40 00 08 00 02 00 00 00 19 00 0c 02 03 04 05 00 00 0e 10 00 00 15 18 -match Packet-Type = Solicit, Transaction-ID = 0xd81eb8, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Option-Request = DNS-Servers, Option-Request = AFTR-Name, Elapsed-Time = 0, IA-PD.IAID = 33752069, IA-PD.T1 = 3600, IA-PD.T2 = 5400 +match Packet-Type = Solicit, Transaction-ID = 0xd81eb8, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Option-Request = DNS-Servers, Option-Request = AFTR-Name, Elapsed-Time = 0, IA-PD = { IAID = 33752069, T1 = 3600, T2 = 5400 } encode-proto - match 01 d8 1e b8 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 40 00 08 00 02 00 00 00 19 00 0c 02 03 04 05 00 00 0e 10 00 00 15 18 @@ -101,7 +101,7 @@ match 01 d8 1e b8 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 # data = '\taftr-name\x08mydomain\x03net\x00' # decode-proto 02 d8 1e b8 00 19 00 29 02 03 04 05 00 00 00 96 00 00 00 fa 00 1a 00 19 00 00 00 fa 00 00 01 2c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 07 00 01 0a 00 17 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 40 00 18 09 61 66 74 72 2d 6e 61 6d 65 08 6d 79 64 6f 6d 61 69 6e 03 6e 65 74 00 -match Packet-Type = Advertise, Transaction-ID = 0xd81eb8, IA-PD.IAID = 33752069, IA-PD.T1 = 150, IA-PD.T2 = 250, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 250, IA-PD-Prefix.Valid-Lifetime = 300, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 21 2012 08:36:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55, Preference = 10, DNS-Servers = 2a01::1, AFTR-Name = "aftr-name.mydomain.net" +match Packet-Type = Advertise, Transaction-ID = 0xd81eb8, IA-PD = { IAID = 33752069, T1 = 150, T2 = 250, Options = { IA-PD-Prefix = { Preferred-Lifetime = 250, Valid-Lifetime = 300, IPv6-Prefix = 2a00:1:1:100::/56 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 21 2012 08:36:00 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } }, Preference = 10, DNS-Servers = 2a01::1, AFTR-Name = "aftr-name.mydomain.net" encode-proto - match 02 d8 1e b8 00 19 00 29 02 03 04 05 00 00 00 96 00 00 00 fa 00 1a 00 19 00 00 00 fa 00 00 01 2c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 07 00 01 0a 00 17 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 40 00 18 09 61 66 74 72 2d 6e 61 6d 65 08 6d 79 64 6f 6d 61 69 6e 03 6e 65 74 00 @@ -154,7 +154,7 @@ match 02 d8 1e b8 00 19 00 29 02 03 04 05 00 00 00 96 00 00 00 fa 00 1a 00 19 00 # | iaprefopts= '' # decode-proto 03 1e 29 1d 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 06 00 04 00 17 00 40 00 08 00 02 00 00 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 1c 20 00 00 1d 4c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 -match Packet-Type = Request, Transaction-ID = 0x1e291d, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 21 2012 08:36:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55, Option-Request = DNS-Servers, Option-Request = AFTR-Name, Elapsed-Time = 0, IA-PD.IAID = 33752069, IA-PD.T1 = 3600, IA-PD.T2 = 5400, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 7200, IA-PD-Prefix.Valid-Lifetime = 7500, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 } +match Packet-Type = Request, Transaction-ID = 0x1e291d, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 21 2012 08:36:00 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } }, Option-Request = DNS-Servers, Option-Request = AFTR-Name, Elapsed-Time = 0, IA-PD = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-PD-Prefix = { Preferred-Lifetime = 7200, Valid-Lifetime = 7500, IPv6-Prefix = 2a00:1:1:100::/56 } } } encode-proto - match 03 1e 29 1d 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 06 00 04 00 17 00 40 00 08 00 02 00 00 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 1c 20 00 00 1d 4c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 @@ -211,7 +211,7 @@ match 03 1e 29 1d 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 # data = '\taftr-name\x08mydomain\x03net\x00' # decode-proto 07 1e 29 1d 00 19 00 29 02 03 04 05 00 00 00 96 00 00 00 fa 00 1a 00 19 00 00 00 fa 00 00 01 2c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 07 00 01 0a 00 17 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 40 00 18 09 61 66 74 72 2d 6e 61 6d 65 08 6d 79 64 6f 6d 61 69 6e 03 6e 65 74 00 -match Packet-Type = Reply, Transaction-ID = 0x1e291d, IA-PD.IAID = 33752069, IA-PD.T1 = 150, IA-PD.T2 = 250, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 250, IA-PD-Prefix.Valid-Lifetime = 300, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 21 2012 08:36:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55, Preference = 10, DNS-Servers = 2a01::1, AFTR-Name = "aftr-name.mydomain.net" +match Packet-Type = Reply, Transaction-ID = 0x1e291d, IA-PD = { IAID = 33752069, T1 = 150, T2 = 250, Options = { IA-PD-Prefix = { Preferred-Lifetime = 250, Valid-Lifetime = 300, IPv6-Prefix = 2a00:1:1:100::/56 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 21 2012 08:36:00 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } }, Preference = 10, DNS-Servers = 2a01::1, AFTR-Name = "aftr-name.mydomain.net" encode-proto - match 07 1e 29 1d 00 19 00 29 02 03 04 05 00 00 00 96 00 00 00 fa 00 1a 00 19 00 00 00 fa 00 00 01 2c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 07 00 01 0a 00 17 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 40 00 18 09 61 66 74 72 2d 6e 61 6d 65 08 6d 79 64 6f 6d 61 69 6e 03 6e 65 74 00 diff --git a/src/tests/unit/protocols/dhcpv6/packet_client_server.txt b/src/tests/unit/protocols/dhcpv6/packet_client_server.txt index 8481726c468..97914175baa 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_client_server.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_client_server.txt @@ -31,7 +31,10 @@ encode-proto Packet-Type = Solicit, Transaction-ID = 0xabcdef, Rapid-Commit = ye match 01 ab cd ef 00 0e 00 00 00 03 00 12 0a bc de f0 00 00 d3 4d 00 00 b3 3f 00 06 00 02 00 ad 00 27 00 0b 04 09 74 61 70 69 6f 63 61 30 31 00 06 00 0a 00 17 00 18 00 38 00 1f 00 0e 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 08 00 02 b3 3f decode-proto - -match Packet-Type = Solicit, Transaction-ID = 0xabcdef, Rapid-Commit = yes, IA-NA.IAID = 180150000, IA-NA.T1 = 54093, IA-NA.T2 = 45887, IA-NA.Options = { Option-Request = 173 }, Client-FQDN.Reserved = 0, Client-FQDN.No-Server-Update = yes, Client-FQDN.Server-Override = no, Client-FQDN.Server-Update = no, Client-FQDN.Domain-Name = "tapioca01", Option-Request = DNS-Servers, Option-Request = Domain-List, Option-Request = NTP-Server, Option-Request = SNTP-Servers, Option-Request = Rapid-Commit, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Elapsed-Time = 45887 +match Packet-Type = Solicit, Transaction-ID = 0xabcdef, Rapid-Commit = yes, IA-NA = { IAID = 180150000, T1 = 54093, T2 = 45887, Options = { Option-Request = 173 } }, Client-FQDN = { Reserved = 0, No-Server-Update = yes, Server-Override = no, Server-Update = no, Domain-Name = "tapioca01" }, Option-Request = DNS-Servers, Option-Request = Domain-List, Option-Request = NTP-Server, Option-Request = SNTP-Servers, Option-Request = Rapid-Commit, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Elapsed-Time = 45887 + +encode-proto - +match 01 ab cd ef 00 0e 00 00 00 03 00 12 0a bc de f0 00 00 d3 4d 00 00 b3 3f 00 06 00 02 00 ad 00 27 00 0b 04 09 74 61 70 69 6f 63 61 30 31 00 06 00 0a 00 17 00 18 00 38 00 1f 00 0e 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 08 00 02 b3 3f # # 2. Advertise (Server -> Client) @@ -50,7 +53,10 @@ encode-proto Packet-Type = Advertise, Transaction-ID = 0xabcdef, Rapid-Commit = match 02 ab cd ef 00 0e 00 00 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 52 00 04 dd cc bb aa 00 17 00 20 28 04 01 4d 2a 73 44 ab 00 00 00 00 00 00 01 23 28 04 01 4d 2a 73 44 ab 00 00 00 00 00 00 04 56 00 18 00 31 09 6d 79 64 6f 6d 61 69 6e 31 03 63 6f 6d 00 09 6d 79 64 6f 6d 61 69 6e 32 03 6c 61 6e 00 04 63 6f 72 70 09 6d 79 64 6f 6d 61 69 6e 33 02 63 6f 00 00 03 00 12 0a bc de f0 00 00 d3 4d 00 00 b3 3f 00 06 00 02 00 ad 00 05 00 1e fd 85 d2 bb 09 2c 00 01 74 ae 28 71 f5 6c 8d 94 00 00 00 78 00 01 51 80 00 06 00 02 00 ad decode-proto - -match Packet-Type = Advertise, Transaction-ID = 0xabcdef, Rapid-Commit = yes, Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, SOL-Max-RT = 3721182122, DNS-Servers = 2804:14d:2a73:44ab::123, DNS-Servers = 2804:14d:2a73:44ab::456, Domain-List = "mydomain1.com", Domain-List = "mydomain2.lan", Domain-List = "corp.mydomain3.co", IA-NA.IAID = 180150000, IA-NA.T1 = 54093, IA-NA.T2 = 45887, IA-NA.Options = { Option-Request = 173 }, IA-Addr.IPv6-Address = fd85:d2bb:92c:1:74ae:2871:f56c:8d94, IA-Addr.Preferred-Lifetime = 120, IA-Addr.Valid-Lifetime = 86400, IA-Addr.Options = { Option-Request = 173 } +match Packet-Type = Advertise, Transaction-ID = 0xabcdef, Rapid-Commit = yes, Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, SOL-Max-RT = 3721182122, DNS-Servers = 2804:14d:2a73:44ab::123, DNS-Servers = 2804:14d:2a73:44ab::456, Domain-List = "mydomain1.com", Domain-List = "mydomain2.lan", Domain-List = "corp.mydomain3.co", IA-NA = { IAID = 180150000, T1 = 54093, T2 = 45887, Options = { Option-Request = 173 } }, IA-Addr = { IPv6-Address = fd85:d2bb:92c:1:74ae:2871:f56c:8d94, Preferred-Lifetime = 120, Valid-Lifetime = 86400, Options = { Option-Request = 173 } } + +encode-proto - +match 02 ab cd ef 00 0e 00 00 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 52 00 04 dd cc bb aa 00 17 00 20 28 04 01 4d 2a 73 44 ab 00 00 00 00 00 00 01 23 28 04 01 4d 2a 73 44 ab 00 00 00 00 00 00 04 56 00 18 00 31 09 6d 79 64 6f 6d 61 69 6e 31 03 63 6f 6d 00 09 6d 79 64 6f 6d 61 69 6e 32 03 6c 61 6e 00 04 63 6f 72 70 09 6d 79 64 6f 6d 61 69 6e 33 02 63 6f 00 00 03 00 12 0a bc de f0 00 00 d3 4d 00 00 b3 3f 00 06 00 02 00 ad 00 05 00 1e fd 85 d2 bb 09 2c 00 01 74 ae 28 71 f5 6c 8d 94 00 00 00 78 00 01 51 80 00 06 00 02 00 ad # # 3. Request (Client -> Broadcast) @@ -69,7 +75,7 @@ encode-proto Packet-Type = Request, Transaction-ID = 0xc0ffee, Server-ID.DUID = match 03 c0 ff ee 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 03 00 12 0a bc de f0 00 00 d3 4d 00 00 b3 3f 00 06 00 02 00 ad 00 05 00 1e fd 85 d2 bb 09 2c 00 01 74 ae 28 71 f5 6c 8d 94 00 00 00 78 00 01 51 80 00 06 00 02 00 ad 00 27 00 0b 04 09 74 61 70 69 6f 63 61 30 31 00 06 00 0a 00 17 00 18 00 38 00 1f 00 0e 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 08 00 02 b3 3f decode-proto - -match Packet-Type = Request, Transaction-ID = 0xc0ffee, Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, IA-NA.IAID = 180150000, IA-NA.T1 = 54093, IA-NA.T2 = 45887, IA-NA.Options = { Option-Request = 173 }, IA-Addr.IPv6-Address = fd85:d2bb:92c:1:74ae:2871:f56c:8d94, IA-Addr.Preferred-Lifetime = 120, IA-Addr.Valid-Lifetime = 86400, IA-Addr.Options = { Option-Request = 173 }, Client-FQDN.Reserved = 0, Client-FQDN.No-Server-Update = yes, Client-FQDN.Server-Override = no, Client-FQDN.Server-Update = no, Client-FQDN.Domain-Name = "tapioca01", Option-Request = DNS-Servers, Option-Request = Domain-List, Option-Request = NTP-Server, Option-Request = SNTP-Servers, Option-Request = Rapid-Commit, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Elapsed-Time = 45887 +match Packet-Type = Request, Transaction-ID = 0xc0ffee, Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, IA-NA = { IAID = 180150000, T1 = 54093, T2 = 45887, Options = { Option-Request = 173 } }, IA-Addr = { IPv6-Address = fd85:d2bb:92c:1:74ae:2871:f56c:8d94, Preferred-Lifetime = 120, Valid-Lifetime = 86400, Options = { Option-Request = 173 } }, Client-FQDN = { Reserved = 0, No-Server-Update = yes, Server-Override = no, Server-Update = no, Domain-Name = "tapioca01" }, Option-Request = DNS-Servers, Option-Request = Domain-List, Option-Request = NTP-Server, Option-Request = SNTP-Servers, Option-Request = Rapid-Commit, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Elapsed-Time = 45887 # # 4. Reply (Server -> Client) @@ -88,7 +94,7 @@ encode-proto Packet-Type = Reply, Transaction-ID = 0xc0ffee, Server-ID.DUID = UU match 07 c0 ff ee 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 52 00 04 00 00 00 3c 00 17 00 20 fd 85 d2 bb 09 2c 00 00 00 00 00 00 00 00 00 01 fd 85 d2 bb 09 2c 00 00 00 00 00 00 00 00 00 02 decode-proto - -match Packet-Type = Reply, Transaction-ID = 0xc0ffee, Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, SOL-Max-RT = 60, DNS-Servers = fd85:d2bb:92c::1, DNS-Servers = fd85:d2bb:92c::2 +match Packet-Type = Reply, Transaction-ID = 0xc0ffee, Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, SOL-Max-RT = 60, DNS-Servers = fd85:d2bb:92c::1, DNS-Servers = fd85:d2bb:92c::2 # # 5. Release (Client -> Broadcast) @@ -106,7 +112,7 @@ encode-proto Packet-Type = Release, Transaction-ID = 0x00b33f, Client-ID.DUID = match 08 00 b3 3f 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 06 00 04 00 17 00 18 00 08 00 02 b3 3f 00 19 00 11 aa bb cc dd 00 00 d3 4d 00 00 b3 3f 00 07 00 01 01 decode-proto - -match Packet-Type = Release, Transaction-ID = 0x00b33f, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 45887, IA-PD.IAID = 2864434397, IA-PD.T1 = 54093, IA-PD.T2 = 45887, IA-PD.Options = { Preference = 1 } +match Packet-Type = Release, Transaction-ID = 0x00b33f, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 45887, IA-PD = { IAID = 2864434397, T1 = 54093, T2 = 45887, Options = { Preference = 1 } } # # 6. Reply (Server -> Client) @@ -122,7 +128,7 @@ encode-proto Packet-Type = Reply, Transaction-ID = 0x00b33f, Client-ID.DUID = UU match 07 00 b3 3f 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 0d 00 13 00 00 52 65 6c 65 61 73 65 20 72 65 63 65 69 76 65 64 2e decode-proto - -match Packet-Type = Reply, Transaction-ID = 0x00b33f, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Status-Code.Value = Success, Status-Code.Message = "Release received." +match Packet-Type = Reply, Transaction-ID = 0x00b33f, Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } }, Status-Code = { Value = Success, Message = "Release received." } count -match 27 +match 31 diff --git a/src/tests/unit/protocols/dhcpv6/packet_domain-list.txt b/src/tests/unit/protocols/dhcpv6/packet_domain-list.txt index 7fa9ee98c6f..e5b8815440f 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_domain-list.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_domain-list.txt @@ -43,7 +43,7 @@ fuzzer-out dhcpv6 # dnsdomains= ['example.com.', 'sales.example.com.', 'eng.example.com.'] # decode-proto 07 aa 56 ce 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 18 00 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 05 73 61 6c 65 73 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 03 65 6e 67 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 -match Packet-Type = Reply, Transaction-ID = 0xaa56ce, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Apr 4 2013 09:58:23 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:0c:29:38:f3:68, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Apr 4 2013 01:34:19 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:0c:29:9b:a1:53, Domain-List = "example.com", Domain-List = "sales.example.com", Domain-List = "eng.example.com" +match Packet-Type = Reply, Transaction-ID = 0xaa56ce, Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Apr 4 2013 09:58:23 UTC", Hardware-Type.Ethernet = { Address = 00:0c:29:38:f3:68 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Apr 4 2013 01:34:19 UTC", Hardware-Type.Ethernet = { Address = 00:0c:29:9b:a1:53 } } }, Domain-List = "example.com", Domain-List = "sales.example.com", Domain-List = "eng.example.com" encode-proto - match 07 aa 56 ce 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 18 00 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 05 73 61 6c 65 73 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 03 65 6e 67 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 diff --git a/src/tests/unit/protocols/dhcpv6/packet_ia-na.txt b/src/tests/unit/protocols/dhcpv6/packet_ia-na.txt index 87cda6fecba..1c347ff0f9c 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_ia-na.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_ia-na.txt @@ -44,7 +44,7 @@ fuzzer-out dhcpv6 # \ianaopts \ # decode-proto 01 90 b4 5c 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 03 00 0c 02 03 04 05 00 00 0e 10 00 00 15 18 -match Packet-Type = Solicit, Transaction-ID = 0x90b45c, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA.IAID = 33752069, IA-NA.T1 = 3600, IA-NA.T2 = 5400 +match Packet-Type = Solicit, Transaction-ID = 0x90b45c, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA = { IAID = 33752069, T1 = 3600, T2 = 5400 } # # 2. @@ -85,7 +85,7 @@ match Packet-Type = Solicit, Transaction-ID = 0x90b45c, Client-ID.DUID = LL, Cli # | lladdr = 00:11:22:33:44:55 # decode-proto 02 90 b4 5c 00 03 00 28 02 03 04 05 00 00 0e 10 00 00 15 18 00 05 00 18 2a 00 00 01 00 01 02 00 38 e6 b2 2e c4 40 ac df 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 48 8c 00 11 22 33 44 55 -match Packet-Type = Advertise, Transaction-ID = 0x90b45c, IA-NA.IAID = 33752069, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, IA-Addr.Preferred-Lifetime = 4500, IA-Addr.Valid-Lifetime = 7200 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:34:36 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55 +match Packet-Type = Advertise, Transaction-ID = 0x90b45c, IA-NA = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-Addr = { IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, Preferred-Lifetime = 4500, Valid-Lifetime = 7200 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:34:36 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } } # # 3. @@ -134,7 +134,7 @@ match Packet-Type = Advertise, Transaction-ID = 0x90b45c, IA-NA.IAID = 33752069, # | iaaddropts= '' # decode-proto 03 2f fd d1 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 48 8c 00 11 22 33 44 55 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 03 00 28 02 03 04 05 00 00 0e 10 00 00 15 18 00 05 00 18 2a 00 00 01 00 01 02 00 38 e6 b2 2e c4 40 ac df 00 00 1c 20 00 00 1d 4c -match Packet-Type = Request, Transaction-ID = 0x2ffdd1, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:34:36 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA.IAID = 33752069, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, IA-Addr.Preferred-Lifetime = 7200, IA-Addr.Valid-Lifetime = 7500 } +match Packet-Type = Request, Transaction-ID = 0x2ffdd1, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:34:36 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-Addr = { IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, Preferred-Lifetime = 7200, Valid-Lifetime = 7500 } } } # # 4. @@ -175,7 +175,7 @@ match Packet-Type = Request, Transaction-ID = 0x2ffdd1, Client-ID.DUID = LL, Cli # | lladdr = 00:11:22:33:44:55 # decode-proto 07 2f fd d1 00 03 00 28 02 03 04 05 00 00 0e 10 00 00 15 18 00 05 00 18 2a 00 00 01 00 01 02 00 38 e6 b2 2e c4 40 ac df 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 48 8c 00 11 22 33 44 55 -match Packet-Type = Reply, Transaction-ID = 0x2ffdd1, IA-NA.IAID = 33752069, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, IA-Addr.Preferred-Lifetime = 4500, IA-Addr.Valid-Lifetime = 7200 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:34:36 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55 +match Packet-Type = Reply, Transaction-ID = 0x2ffdd1, IA-NA = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-Addr = { IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, Preferred-Lifetime = 4500, Valid-Lifetime = 7200 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:34:36 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } } count match 11 diff --git a/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt b/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt index 116bcf3b881..9f4f3d485fc 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt @@ -44,7 +44,7 @@ fuzzer-out dhcpv6 # \iapdopt \ # decode-proto 01 e1 e0 93 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 19 00 0c 02 03 04 05 00 00 0e 10 00 00 15 18 -match Packet-Type = Solicit, Transaction-ID = 0xe1e093, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-PD.IAID = 33752069, IA-PD.T1 = 3600, IA-PD.T2 = 5400 +match Packet-Type = Solicit, Transaction-ID = 0xe1e093, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-PD = { IAID = 33752069, T1 = 3600, T2 = 5400 } encode-proto - match 01 e1 e0 93 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 19 00 0c 02 03 04 05 00 00 0e 10 00 00 15 18 @@ -89,7 +89,7 @@ match 01 e1 e0 93 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 # | lladdr = 00:11:22:33:44:55 # decode-proto 02 e1 e0 93 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 11 94 00 00 1c 20 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55 -match Packet-Type = Advertise, Transaction-ID = 0xe1e093, IA-PD.IAID = 33752069, IA-PD.T1 = 3600, IA-PD.T2 = 5400, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 4500, IA-PD-Prefix.Valid-Lifetime = 7200, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:39:05 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55 +match Packet-Type = Advertise, Transaction-ID = 0xe1e093, IA-PD = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-PD-Prefix = { Preferred-Lifetime = 4500, Valid-Lifetime = 7200, IPv6-Prefix = 2a00:1:1:100::/56 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:39:05 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } } encode-proto - match 02 e1 e0 93 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 11 94 00 00 1c 20 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55 @@ -143,7 +143,7 @@ match 02 e1 e0 93 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 # | iaprefopts= '' # decode-proto 03 12 b0 8a 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 1c 20 00 00 1d 4c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 -match Packet-Type = Request, Transaction-ID = 0x12b08a, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:39:05 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-PD.IAID = 33752069, IA-PD.T1 = 3600, IA-PD.T2 = 5400, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 7200, IA-PD-Prefix.Valid-Lifetime = 7500, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 } +match Packet-Type = Request, Transaction-ID = 0x12b08a, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:39:05 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-PD = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-PD-Prefix = { Preferred-Lifetime = 7200, Valid-Lifetime = 7500, IPv6-Prefix = 2a00:1:1:100::/56 } } } encode-proto - match 03 12 b0 8a 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 1c 20 00 00 1d 4c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 @@ -188,7 +188,7 @@ match 03 12 b0 8a 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 # | lladdr = 00:11:22:33:44:55 # decode-proto 07 12 b0 8a 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 11 94 00 00 1c 20 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55 -match Packet-Type = Reply, Transaction-ID = 0x12b08a, IA-PD.IAID = 33752069, IA-PD.T1 = 3600, IA-PD.T2 = 5400, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 4500, IA-PD-Prefix.Valid-Lifetime = 7200, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:39:05 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55 +match Packet-Type = Reply, Transaction-ID = 0x12b08a, IA-PD = { IAID = 33752069, T1 = 3600, T2 = 5400, Options = { IA-PD-Prefix = { Preferred-Lifetime = 4500, Valid-Lifetime = 7200, IPv6-Prefix = 2a00:1:1:100::/56 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:39:05 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } } encode-proto - match 07 12 b0 8a 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 11 94 00 00 1c 20 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55 diff --git a/src/tests/unit/protocols/dhcpv6/packet_ia-ta.txt b/src/tests/unit/protocols/dhcpv6/packet_ia-ta.txt index eaa8d5f415d..bc288d96116 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_ia-ta.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_ia-ta.txt @@ -42,7 +42,7 @@ fuzzer-out dhcpv6 # \iataopts \ # decode-proto 01 28 b0 40 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 04 00 04 02 03 04 05 -match Packet-Type = Solicit, Transaction-ID = 0x28b040, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-TA.IAID = 33752069 +match Packet-Type = Solicit, Transaction-ID = 0x28b040, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-TA = { IAID = 33752069 } encode-proto - match 01 28 b0 40 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 04 00 04 02 03 04 05 @@ -84,7 +84,7 @@ match 01 28 b0 40 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 06 00 04 00 17 00 # | lladdr = 00:11:22:33:44:55 # decode-proto 02 28 b0 40 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55 -match Packet-Type = Advertise, Transaction-ID = 0x28b040, IA-TA.IAID = 33752069, IA-TA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:5da2:f920:84c4:88cc, IA-Addr.Preferred-Lifetime = 4500, IA-Addr.Valid-Lifetime = 7200 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:32:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55 +match Packet-Type = Advertise, Transaction-ID = 0x28b040, IA-TA = { IAID = 33752069, Options = { IA-Addr = { IPv6-Address = 2a00:1:1:200:5da2:f920:84c4:88cc, Preferred-Lifetime = 4500, Valid-Lifetime = 7200 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:32:00 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } } encode-proto - match 02 28 b0 40 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55 @@ -134,7 +134,7 @@ match 02 28 b0 40 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d # | iaaddropts= '' # decode-proto 03 2b 0e 45 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 1c 20 00 00 1d 4c -match Packet-Type = Request, Transaction-ID = 0x2b0e45, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:32:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-TA.IAID = 33752069, IA-TA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:5da2:f920:84c4:88cc, IA-Addr.Preferred-Lifetime = 7200, IA-Addr.Valid-Lifetime = 7500 } +match Packet-Type = Request, Transaction-ID = 0x2b0e45, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:32:00 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } }, Option-Request = DNS-Servers, Option-Request = Domain-List, Elapsed-Time = 0, IA-TA = { IAID = 33752069, Options = { IA-Addr = { IPv6-Address = 2a00:1:1:200:5da2:f920:84c4:88cc, Preferred-Lifetime = 7200, Valid-Lifetime = 7500 } } } encode-proto - match 03 2b 0e 45 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55 00 06 00 04 00 17 00 18 00 08 00 02 00 00 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 1c 20 00 00 1d 4c @@ -176,7 +176,7 @@ match 03 2b 0e 45 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 # | lladdr = 00:11:22:33:44:55 # decode-proto 07 2b 0e 45 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55 -match Packet-Type = Reply, Transaction-ID = 0x2b0e45, IA-TA.IAID = 33752069, IA-TA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:5da2:f920:84c4:88cc, IA-Addr.Preferred-Lifetime = 4500, IA-Addr.Valid-Lifetime = 7200 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:32:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55 +match Packet-Type = Reply, Transaction-ID = 0x2b0e45, IA-TA = { IAID = 33752069, Options = { IA-Addr = { IPv6-Address = 2a00:1:1:200:5da2:f920:84c4:88cc, Preferred-Lifetime = 4500, Valid-Lifetime = 7200 } } }, Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Nov 26 2012 15:32:00 UTC", Hardware-Type.Ethernet = { Address = 00:11:22:33:44:55 } } } encode-proto - match 07 2b 0e 45 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55 diff --git a/src/tests/unit/protocols/dhcpv6/packet_ntp-server.txt b/src/tests/unit/protocols/dhcpv6/packet_ntp-server.txt index 12beec41de4..87950bb7a47 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_ntp-server.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_ntp-server.txt @@ -43,7 +43,7 @@ fuzzer-out dhcpv6 # data = '\x00\x01\x00\x10*\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x10\xff\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x03\x00\x11\x03ntp\x07example\x03com\x00' # decode-proto 07 f6 9b 57 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 38 00 3d 00 01 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 10 ff 05 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 03 00 11 03 6e 74 70 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 -match Packet-Type = Reply, Transaction-ID = 0xf69b57, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Apr 4 2013 09:58:23 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:0c:29:38:f3:68, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Apr 4 2013 01:34:19 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:0c:29:9b:a1:53, NTP-Server.Address = 2a01::1, NTP-Server.Multicast-Address = ff05::101, NTP-Server.FQDN = "ntp.example.com" +match Packet-Type = Reply, Transaction-ID = 0xf69b57, Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Apr 4 2013 09:58:23 UTC", Hardware-Type.Ethernet = { Address = 00:0c:29:38:f3:68 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Apr 4 2013 01:34:19 UTC", Hardware-Type.Ethernet = { Address = 00:0c:29:9b:a1:53 } } }, NTP-Server.Address = 2a01::1, NTP-Server.Multicast-Address = ff05::101, NTP-Server.FQDN = "ntp.example.com" encode-proto - match 07 f6 9b 57 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 38 00 3d 00 01 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 10 ff 05 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 03 00 11 03 6e 74 70 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 diff --git a/src/tests/unit/protocols/dhcpv6/packet_sip-server-d.txt b/src/tests/unit/protocols/dhcpv6/packet_sip-server-d.txt index 0869e786c38..77c35c85810 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_sip-server-d.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_sip-server-d.txt @@ -43,7 +43,7 @@ fuzzer-out dhcpv6 # sipdomains= ['sip1.my-domain.net.', 'sip2.example.com.', 'sip3.sub.my-domain.org.'] # decode-proto 07 68 90 d8 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 15 00 3e 04 73 69 70 31 09 6d 79 2d 64 6f 6d 61 69 6e 03 6e 65 74 00 04 73 69 70 32 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 04 73 69 70 33 03 73 75 62 09 6d 79 2d 64 6f 6d 61 69 6e 03 6f 72 67 00 -match Packet-Type = Reply, Transaction-ID = 0x6890d8, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Apr 4 2013 09:58:23 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:0c:29:38:f3:68, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Apr 4 2013 01:34:19 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:0c:29:9b:a1:53, SIP-Server-Domain-Name-List = "sip1.my-domain.net", SIP-Server-Domain-Name-List = "sip2.example.com", SIP-Server-Domain-Name-List = "sip3.sub.my-domain.org" +match Packet-Type = Reply, Transaction-ID = 0x6890d8, Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Apr 4 2013 09:58:23 UTC", Hardware-Type.Ethernet = { Address = 00:0c:29:38:f3:68 } } }, Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Apr 4 2013 01:34:19 UTC", Hardware-Type.Ethernet = { Address = 00:0c:29:9b:a1:53 } } }, SIP-Server-Domain-Name-List = "sip1.my-domain.net", SIP-Server-Domain-Name-List = "sip2.example.com", SIP-Server-Domain-Name-List = "sip3.sub.my-domain.org" encode-proto - match 07 68 90 d8 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 15 00 3e 04 73 69 70 31 09 6d 79 2d 64 6f 6d 61 69 6e 03 6e 65 74 00 04 73 69 70 32 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 04 73 69 70 33 03 73 75 62 09 6d 79 2d 64 6f 6d 61 69 6e 03 6f 72 67 00 diff --git a/src/tests/unit/protocols/dhcpv6/relay_forward.txt b/src/tests/unit/protocols/dhcpv6/relay_forward.txt index a958b24b12a..e26575a9abe 100644 --- a/src/tests/unit/protocols/dhcpv6/relay_forward.txt +++ b/src/tests/unit/protocols/dhcpv6/relay_forward.txt @@ -12,7 +12,7 @@ proto-dictionary dhcpv6 fuzzer-out dhcpv6 decode-proto 0c0126058600000680000000000000000000fe80000000000000025056fffea353fe000900c40c0000000000000000000000000000000000fe80000000000000025056fffea353fe0012001c4c41424f4c54322065746820312f312f30352f30312f32382f312f310009007e011141d70001000e0001000126b1b7f1005056a353fe0012001c4c41424f4c54322065746820312f312f30352f30312f32382f312f310006000200180008000200000003002856a353fe00000e1000001518000500182605860000064000000000000000000100001c2000002a300019000c56a353fe00000e1000001518002500120000197f0001000126b1b7f1005056a353fe0011002a0000197f0001000a4c41424f4c54322d6e610002000a4c41424f4c54322d7064000300013f0004000140 -match Packet-Type = Relay-Forward, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Relay-Message = { Packet-Type = Relay-Forward, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Solicit, Transaction-ID = 0x1141d7, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA.IAID = 1453544446, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2605:8600:6:4000::1, IA-Addr.Preferred-Lifetime = 7200, IA-Addr.Valid-Lifetime = 10800 }, IA-PD.IAID = 1453544446, IA-PD.T1 = 3600, IA-PD.T2 = 5400 } }, Relay-Agent-Remote-ID.Vendor = 6527, Relay-Agent-Remote-ID.Value = 0x0001000126b1b7f1005056a353fe, Vendor-Opts.Nokia-SR.WAN-Pool = "LABOLT2-na", Vendor-Opts.Nokia-SR.PFX-Pool = "LABOLT2-pd", Vendor-Opts.Nokia-SR.PFX-Len = 63, Vendor-Opts.Nokia-SR.Reserved-NA-Len = 64 +match Packet-Type = Relay-Forward, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Relay-Message = { Packet-Type = Relay-Forward, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Solicit, Transaction-ID = 0x1141d7, Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Jul 27 2020 16:06:09 UTC", Hardware-Type.Ethernet = { Address = 00:50:56:a3:53:fe } } }, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA = { IAID = 1453544446, T1 = 3600, T2 = 5400, Options = { IA-Addr = { IPv6-Address = 2605:8600:6:4000::1, Preferred-Lifetime = 7200, Valid-Lifetime = 10800 } } }, IA-PD = { IAID = 1453544446, T1 = 3600, T2 = 5400 } } }, Relay-Agent-Remote-ID = { Vendor = 6527, Value = 0x0001000126b1b7f1005056a353fe }, Vendor-Opts.Nokia-SR.WAN-Pool = "LABOLT2-na", Vendor-Opts.Nokia-SR.PFX-Pool = "LABOLT2-pd", Vendor-Opts.Nokia-SR.PFX-Len = 63, Vendor-Opts.Nokia-SR.Reserved-NA-Len = 64 encode-proto - match 0c 01 26 05 86 00 00 06 80 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 00 02 50 56 ff fe a3 53 fe 00 09 00 c4 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 00 02 50 56 ff fe a3 53 fe 00 12 00 1c 4c 41 42 4f 4c 54 32 20 65 74 68 20 31 2f 31 2f 30 35 2f 30 31 2f 32 38 2f 31 2f 31 00 09 00 7e 01 11 41 d7 00 01 00 0e 00 01 00 01 26 b1 b7 f1 00 50 56 a3 53 fe 00 12 00 1c 4c 41 42 4f 4c 54 32 20 65 74 68 20 31 2f 31 2f 30 35 2f 30 31 2f 32 38 2f 31 2f 31 00 06 00 02 00 18 00 08 00 02 00 00 00 03 00 28 56 a3 53 fe 00 00 0e 10 00 00 15 18 00 05 00 18 26 05 86 00 00 06 40 00 00 00 00 00 00 00 00 01 00 00 1c 20 00 00 2a 30 00 19 00 0c 56 a3 53 fe 00 00 0e 10 00 00 15 18 00 25 00 12 00 00 19 7f 00 01 00 01 26 b1 b7 f1 00 50 56 a3 53 fe 00 11 00 12 00 00 19 7f 00 01 00 0a 4c 41 42 4f 4c 54 32 2d 6e 61 00 11 00 12 00 00 19 7f 00 02 00 0a 4c 41 42 4f 4c 54 32 2d 70 64 00 11 00 09 00 00 19 7f 00 03 00 01 3f 00 11 00 09 00 00 19 7f 00 04 00 01 40 @@ -21,7 +21,7 @@ match 0c 01 26 05 86 00 00 06 80 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 # Yes, this is exactly the same massive text blob as above. :) # decode-proto - -match Packet-Type = Relay-Forward, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Relay-Message = { Packet-Type = Relay-Forward, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Solicit, Transaction-ID = 0x1141d7, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA.IAID = 1453544446, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2605:8600:6:4000::1, IA-Addr.Preferred-Lifetime = 7200, IA-Addr.Valid-Lifetime = 10800 }, IA-PD.IAID = 1453544446, IA-PD.T1 = 3600, IA-PD.T2 = 5400 } }, Relay-Agent-Remote-ID.Vendor = 6527, Relay-Agent-Remote-ID.Value = 0x0001000126b1b7f1005056a353fe, Vendor-Opts.Nokia-SR.WAN-Pool = "LABOLT2-na", Vendor-Opts.Nokia-SR.PFX-Pool = "LABOLT2-pd", Vendor-Opts.Nokia-SR.PFX-Len = 63, Vendor-Opts.Nokia-SR.Reserved-NA-Len = 64 +match Packet-Type = Relay-Forward, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Relay-Message = { Packet-Type = Relay-Forward, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Solicit, Transaction-ID = 0x1141d7, Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Jul 27 2020 16:06:09 UTC", Hardware-Type.Ethernet = { Address = 00:50:56:a3:53:fe } } }, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA = { IAID = 1453544446, T1 = 3600, T2 = 5400, Options = { IA-Addr = { IPv6-Address = 2605:8600:6:4000::1, Preferred-Lifetime = 7200, Valid-Lifetime = 10800 } } }, IA-PD = { IAID = 1453544446, T1 = 3600, T2 = 5400 } } }, Relay-Agent-Remote-ID = { Vendor = 6527, Value = 0x0001000126b1b7f1005056a353fe }, Vendor-Opts.Nokia-SR.WAN-Pool = "LABOLT2-na", Vendor-Opts.Nokia-SR.PFX-Pool = "LABOLT2-pd", Vendor-Opts.Nokia-SR.PFX-Len = 63, Vendor-Opts.Nokia-SR.Reserved-NA-Len = 64 count match 9 diff --git a/src/tests/unit/protocols/dhcpv6/relay_reply.txt b/src/tests/unit/protocols/dhcpv6/relay_reply.txt index 8eef590f752..320fb867caa 100644 --- a/src/tests/unit/protocols/dhcpv6/relay_reply.txt +++ b/src/tests/unit/protocols/dhcpv6/relay_reply.txt @@ -15,7 +15,7 @@ encode-proto Packet-Type = Relay-Reply, Hop-Count = 1, Relay-Link-Address = 2605 match 0d 01 26 05 86 00 00 06 80 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 00 02 50 56 ff fe a3 53 fe 00 12 00 0d 6c 61 67 2d 37 3a 31 30 35 2e 31 32 38 00 09 00 5c 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 00 02 50 56 ff fe a3 53 fe 00 12 00 1c 4c 41 42 4f 4c 54 32 20 65 74 68 20 31 2f 31 2f 30 35 2f 30 31 2f 32 38 2f 31 2f 31 00 09 00 16 02 95 08 06 00 01 00 0e 00 01 00 01 26 b1 b7 f1 00 50 56 a3 53 fe decode-proto - -match Packet-Type = Relay-Reply, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x6c61672d373a3130352e313238, Relay-Message = { Packet-Type = Relay-Reply, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Advertise, Transaction-ID = 0x950806, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe } } +match Packet-Type = Relay-Reply, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x6c61672d373a3130352e313238, Relay-Message = { Packet-Type = Relay-Reply, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Advertise, Transaction-ID = 0x950806, Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Jul 27 2020 16:06:09 UTC", Hardware-Type.Ethernet = { Address = 00:50:56:a3:53:fe } } } } } count match 7 diff --git a/src/tests/unit/protocols/dhcpv6/rfc3315.txt b/src/tests/unit/protocols/dhcpv6/rfc3315.txt index aee1f0c4f88..123948376a5 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc3315.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc3315.txt @@ -47,7 +47,7 @@ encode-pair Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = 1, Client-I match 00 01 00 0e 00 01 00 01 00 00 a8 c0 aa bb cc dd ee ff decode-pair - -match Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jan 1 2000 12:00:00 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = aa:bb:cc:dd:ee:ff +match Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Jan 1 2000 12:00:00 UTC", Hardware-Type.Ethernet = { Address = aa:bb:cc:dd:ee:ff } } } # # Server Identifier @@ -58,7 +58,7 @@ encode-pair Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, S match 00 02 00 0e 00 01 00 01 00 00 a8 c0 c0 ff ee c0 ff ee decode-pair - -match Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Jan 1 2000 12:00:00 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = c0:ff:ee:c0:ff:ee +match Server-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Jan 1 2000 12:00:00 UTC", Hardware-Type.Ethernet = { Address = c0:ff:ee:c0:ff:ee } } } # # 9.3. DUID Assigned by Vendor Based on Enterprise Number [DUID-EN] @@ -85,7 +85,7 @@ encode-pair Client-ID.DUID = EN, Client-ID.DUID.EN.Enterprise-Number = 11344, Cl match 00 01 00 0c 00 02 00 00 2c 50 aa bb cc dd ee ff decode-pair - -match Client-ID.DUID = EN, Client-ID.DUID.EN.Enterprise-Number = 11344, Client-ID.DUID.EN.Identifier = 0xaabbccddeeff +match Client-ID = { DUID = EN, DUID.EN = { Enterprise-Number = 11344, Identifier = 0xaabbccddeeff } } # # Server Identifier @@ -96,7 +96,7 @@ encode-pair Server-ID.DUID = EN, Server-ID.DUID.EN.Enterprise-Number = 11344, Se match 00 02 00 0c 00 02 00 00 2c 50 c0 ff ee c0 ff ee decode-pair - -match Server-ID.DUID = EN, Server-ID.DUID.EN.Enterprise-Number = 11344, Server-ID.DUID.EN.Identifier = 0xc0ffeec0ffee +match Server-ID = { DUID = EN, DUID.EN = { Enterprise-Number = 11344, Identifier = 0xc0ffeec0ffee } } # # 9.4. DUID Based on Link-layer Address [DUID-LL] @@ -121,7 +121,7 @@ encode-pair Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Cli match 00 01 00 0a 00 03 00 01 aa bb cc dd ee ff decode-pair - -match Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = aa:bb:cc:dd:ee:ff +match Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = aa:bb:cc:dd:ee:ff } } } # # Server Identifier @@ -132,7 +132,7 @@ encode-pair Server-ID.DUID = LL, Server-ID.DUID.LL.Hardware-Type = Ethernet, Ser match 00 02 00 0a 00 03 00 01 d3 4d 00 c0 ff ee decode-pair - -match Server-ID.DUID = LL, Server-ID.DUID.LL.Hardware-Type = Ethernet, Server-ID.DUID.LL.Hardware-Type.Ethernet.Address = d3:4d:00:c0:ff:ee +match Server-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = d3:4d:00:c0:ff:ee } } } # # And unknown hardware types: hardware type 255 is unassigned @@ -143,7 +143,7 @@ match Server-ID.DUID = LL, Server-ID.DUID.LL.Hardware-Type = Ethernet, Server-ID # this will likely be easier to do once we have real nested TLVs / groups # decode-pair 00 02 00 0a 00 03 00 ff d3 4d 00 c0 ff ee -match Server-ID.DUID = LL, raw.Server-ID.DUID.LL = 0x00ffd34d00c0ffee +match Server-ID = { DUID = LL, raw.DUID.LL = 0x00ffd34d00c0ffee } count match 29 diff --git a/src/tests/unit/protocols/dhcpv6/rfc3633.txt b/src/tests/unit/protocols/dhcpv6/rfc3633.txt index 14d647dd8cc..3acf7b05d86 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc3633.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc3633.txt @@ -13,13 +13,13 @@ encode-pair IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { Prefer match 00 19 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 01 01 decode-pair - -match IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { Preference = 1 } +match IA-PD = { IAID = 0, T1 = 0, T2 = 0, Options = { Preference = 1 } } encode-pair IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 4500, IA-PD-Prefix.Valid-Lifetime = 7200, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 } match 00 19 00 29 00 00 00 00 00 00 00 00 00 00 00 00 00 1a 00 19 00 00 11 94 00 00 1c 20 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 decode-pair - -match IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 4500, IA-PD-Prefix.Valid-Lifetime = 7200, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 } +match IA-PD = { IAID = 0, T1 = 0, T2 = 0, Options = { IA-PD-Prefix = { Preferred-Lifetime = 4500, Valid-Lifetime = 7200, IPv6-Prefix = 2a00:1:1:100::/56 } } } count match 11 diff --git a/src/tests/unit/protocols/dhcpv6/rfc4704.txt b/src/tests/unit/protocols/dhcpv6/rfc4704.txt index 60e75675745..1b80eab98e6 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc4704.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc4704.txt @@ -44,14 +44,14 @@ encode-pair Client-FQDN.No-Server-Update = no, Client-FQDN.Server-Override = yes match 00 27 00 0b 03 09 74 61 70 69 6f 63 61 30 31 decode-pair - -match Client-FQDN.Reserved = 0, Client-FQDN.No-Server-Update = no, Client-FQDN.Server-Override = yes, Client-FQDN.Server-Update = yes, Client-FQDN.Domain-Name = "tapioca01" +match Client-FQDN = { Reserved = 0, No-Server-Update = no, Server-Override = yes, Server-Update = yes, Domain-Name = "tapioca01" } # let's try another combination encode-pair Client-FQDN.No-Server-Update = yes, Client-FQDN.Server-Override = no, Client-FQDN.Server-Update = no, Client-FQDN.Domain-Name = "tapioca01" match 00 27 00 0b 04 09 74 61 70 69 6f 63 61 30 31 decode-pair - -match Client-FQDN.Reserved = 0, Client-FQDN.No-Server-Update = yes, Client-FQDN.Server-Override = no, Client-FQDN.Server-Update = no, Client-FQDN.Domain-Name = "tapioca01" +match Client-FQDN = { Reserved = 0, No-Server-Update = yes, Server-Override = no, Server-Update = no, Domain-Name = "tapioca01" } count match 11 diff --git a/src/tests/unit/protocols/dhcpv6/rfc4776.txt b/src/tests/unit/protocols/dhcpv6/rfc4776.txt index ec226776337..1b7e5b54bef 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc4776.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc4776.txt @@ -16,8 +16,7 @@ encode-pair Geoconf-Civic = { What = Client-Location, Country-Code = "CA", Civic match 00 24 00 07 02 43 41 01 02 4f 4e decode-pair - -match Geoconf-Civic.What = Client-Location, Geoconf-Civic.Country-Code = "CA", Geoconf-Civic.Civic-Address-Elements = 0x01024f4e -#match Geoconf-Civic = { What = Client-Location, Country-Code = "CA", Civic-Address-Elements = 0x01024f4e } +match Geoconf-Civic = { What = Client-Location, Country-Code = "CA", Civic-Address-Elements = 0x01024f4e } count match 7 diff --git a/src/tests/unit/protocols/dhcpv6/rfc6225.txt b/src/tests/unit/protocols/dhcpv6/rfc6225.txt index 0913ce3744d..8e02a39a3ea 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc6225.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc6225.txt @@ -88,6 +88,6 @@ encode-pair GeoLocation.Latitude-Uncertainty = 1, GeoLocation.Latitude = 0x4235a match 00 3f 00 10 04 42 35 af a6 04 c2 97 64 f6 10 40 00 00 63 42 decode-pair - -match Geolocation.Latitude-Uncertainty = 1, Geolocation.Latitude = 1110814630, Geolocation.Longitude-Uncertainty = 1, Geolocation.Longitude = 3264701686, Geolocation.Altitude-Type = Meters, Geolocation.Altitude-Uncertainty = 1, Geolocation.Altitude = 99, Geolocation.Version = 1, Geolocation.Reserved = 0, Geolocation.Datum = NAD83-NAVD88 +match Geolocation = { Latitude-Uncertainty = 1, Latitude = 1110814630, Longitude-Uncertainty = 1, Longitude = 3264701686, Altitude-Type = Meters, Altitude-Uncertainty = 1, Altitude = 99, Version = 1, Reserved = 0, Datum = NAD83-NAVD88 } count match 7 diff --git a/src/tests/unit/protocols/dhcpv6/rfc6355.txt b/src/tests/unit/protocols/dhcpv6/rfc6355.txt index e56c08dc210..bbe0dcfdef4 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc6355.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc6355.txt @@ -51,14 +51,14 @@ encode-pair Client-ID.DUID = UUID match 00 01 00 02 00 04 decode-pair - -match Client-ID.DUID = UUID +match Client-ID = { DUID = UUID } # Encode a 16-octet UUID encode-pair Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f match 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f decode-pair - -match Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } # UUID-Value field is 16 octets. So we truncate if if it's too long, and pad it with zeros if it's too short. encode-pair Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f1112 @@ -66,7 +66,7 @@ match 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f # But if we decode something that's too long, we ignore the extra data decode-pair - -match Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } # Or we pad the UUID to 16 octets if it's too short encode-pair Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d @@ -74,7 +74,7 @@ match 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 00 00 # And if we see something that's too short, we get a bad attribute. decode-pair 00 01 00 10 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d -match Client-ID.DUID = UUID, raw.Client-ID.DUID.UUID = 0x000102030405060708090a0b0c0d +match Client-ID = { DUID = UUID, raw.DUID.UUID = 0x000102030405060708090a0b0c0d } # # Server Identifier @@ -85,14 +85,14 @@ encode-pair Server-ID.DUID = UUID match 00 02 00 02 00 04 decode-pair - -match Server-ID.DUID = UUID +match Server-ID = { DUID = UUID } # Encode a 16-octet UUID encode-pair Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f match 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f decode-pair - -match Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } # UUID-Value field is 16 octets. So we truncate if if it's too long, and pad it with zeros if it's too short. encode-pair Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f1112 @@ -100,18 +100,18 @@ match 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f # But if we decode something that's too long, we ignore the extra data decode-pair - -match Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } # Or we pad the UUID to 16 octets if it's too short encode-pair Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d match 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 00 00 decode-pair - -match Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0000 +match Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0000 } } # And if we see something that's too short, we get a bad attribute. decode-pair 00 02 00 10 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d -match Server-ID.DUID = UUID, raw.Server-ID.DUID.UUID = 0x000102030405060708090a0b0c0d +match Server-ID = { DUID = UUID, raw.DUID.UUID = 0x000102030405060708090a0b0c0d } count match 37 diff --git a/src/tests/unit/protocols/dhcpv6/rfc6731.txt b/src/tests/unit/protocols/dhcpv6/rfc6731.txt index b8820bb30f7..fdbe9ddfb05 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc6731.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc6731.txt @@ -32,7 +32,7 @@ encode-pair RDNSS-Selection = { DNS-Recursive-Name-Server = ::1, Preference = Hi match 00 4a 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 03 6e 73 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 decode-pair - -match RDNSS-Selection.DNS-Recursive-Name-Server = ::1, RDNSS-Selection.Preference = High, RDNSS-Selection.FQDN = "ns1.example.com" +match RDNSS-Selection = { DNS-Recursive-Name-Server = ::1, Preference = High, FQDN = "ns1.example.com" } # # RFC 8415 Section 10 says that DNS labels MUST NOT be stored in compressed form. @@ -41,7 +41,7 @@ encode-pair RDNSS-Selection = { DNS-Recursive-Name-Server = ::1, Preference = Hi match 00 4a 00 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 03 6e 73 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 03 6e 73 32 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 decode-pair - -match RDNSS-Selection.DNS-Recursive-Name-Server = ::1, RDNSS-Selection.Preference = High, RDNSS-Selection.FQDN = "ns1.example.com", RDNSS-Selection.FQDN = "ns2.example.com" +match RDNSS-Selection = { DNS-Recursive-Name-Server = ::1, Preference = High, FQDN = "ns1.example.com", FQDN = "ns2.example.com" } count match 11 diff --git a/src/tests/unit/protocols/dhcpv6/rfc6939.txt b/src/tests/unit/protocols/dhcpv6/rfc6939.txt index 2cfee17f6f4..8ac1a871484 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc6939.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc6939.txt @@ -43,14 +43,14 @@ encode-pair Client-Link-Layer.Type = Ethernet, Client-Link-Layer.Type.Ethernet.A match 00 4f 00 08 00 01 c0 ff ee c0 ff ee decode-pair 00 4f 00 08 00 01 c0 ff ee c0 ff ee -match Client-Link-Layer.Type = Ethernet, Client-Link-Layer.Type.Ethernet.Address = c0:ff:ee:c0:ff:ee +match Client-Link-Layer = { Type = Ethernet, Type.Ethernet = { Address = c0:ff:ee:c0:ff:ee } } # type: Lanstar encode-pair Client-Link-Layer.Type = Lanstar, Client-Link-Layer.Type.Lanstar.Address = 0xc0ffeec0ffee match 00 4f 00 08 00 09 c0 ff ee c0 ff ee decode-pair - -match Client-Link-Layer.Type = Lanstar, Client-Link-Layer.Type.Lanstar.Address = 0xc0ffeec0ffee +match Client-Link-Layer = { Type = Lanstar, Type.Lanstar = { Address = 0xc0ffeec0ffee } } count match 11 diff --git a/src/tests/unit/protocols/dhcpv6/rfc7078.txt b/src/tests/unit/protocols/dhcpv6/rfc7078.txt index 7b31fadd9da..b406a13c8aa 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc7078.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc7078.txt @@ -98,7 +98,7 @@ encode-pair Address-Selection.Privacy-Reference = yes, Address-Selection.Table-R match 00 54 00 18 01 00 55 00 13 11 08 80 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 10 decode-pair - -match Address-Selection.Reserved = 0, Address-Selection.Automatic-Row-Addition = no, Address-Selection.Privacy-Reference = yes, Address-Selection.Table-Rows = { Address-Selection-Table.Label = 17, Address-Selection-Table.Precedence = 8, Address-Selection-Table.Prefix = ::ffff:0.0.0.16/128 } +match Address-Selection = { Reserved = 0, Automatic-Row-Addition = no, Privacy-Reference = yes, Table-Rows = { Address-Selection-Table = { Label = 17, Precedence = 8, Prefix = ::ffff:0.0.0.16/128 } } } count match 7 diff --git a/src/tests/unit/protocols/dhcpv6/rfc7600.txt b/src/tests/unit/protocols/dhcpv6/rfc7600.txt index bf74a298e6f..85dba0de86e 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc7600.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc7600.txt @@ -45,7 +45,8 @@ match 00 61 00 18 00 62 00 14 10 80 04 01 01 02 03 04 00 00 00 00 00 00 00 00 00 # The same as the input, with an added IP4RD-Map-Rule.IPv6-Prefix = 0x00.. # decode-pair - -match IP4RD = { IP4RD-Map-Rule.IPv4-Prefix-Len = 16, IP4RD-Map-Rule.IPv6-Prefix-Len = 128, IP4RD-Map-Rule.EA-Len = 4, IP4RD-Map-Rule.WPK-Authorized = 1, IP4RD-Map-Rule.IPv4-Prefix = 0x01020304, IP4RD-Map-Rule.IPv6-Prefix = 0x000000000000000000000000 } +match IP4RD = { IP4RD-Map-Rule = { IPv4-Prefix-Len = 16, IPv6-Prefix-Len = 128, EA-Len = 4, WPK-Authorized = 1, IPv4-Prefix = 0x01020304, IPv6-Prefix = 0x000000000000000000000000 } } + # # Multiple rules # @@ -53,7 +54,7 @@ encode-pair IP4RD = { IP4RD-Map-Rule.IPv4-Prefix-Len = 16, IP4RD-Map-Rule.IPv6-P match 00 61 00 30 00 62 00 14 10 80 04 01 01 02 03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 62 00 14 08 00 04 01 7f 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 decode-pair - -match IP4RD = { IP4RD-Map-Rule.IPv4-Prefix-Len = 16, IP4RD-Map-Rule.IPv6-Prefix-Len = 128, IP4RD-Map-Rule.EA-Len = 4, IP4RD-Map-Rule.WPK-Authorized = 1, IP4RD-Map-Rule.IPv4-Prefix = 0x01020304, IP4RD-Map-Rule.IPv6-Prefix = 0x000000000000000000000000, IP4RD-Map-Rule.IPv4-Prefix-Len = 8, IP4RD-Map-Rule.IPv6-Prefix-Len = 0, IP4RD-Map-Rule.EA-Len = 4, IP4RD-Map-Rule.WPK-Authorized = 1, IP4RD-Map-Rule.IPv4-Prefix = 0x7f000001, IP4RD-Map-Rule.IPv6-Prefix = 0x000000000000000000000000 } +match IP4RD = { IP4RD-Map-Rule = { IPv4-Prefix-Len = 16, IPv6-Prefix-Len = 128, EA-Len = 4, WPK-Authorized = 1, IPv4-Prefix = 0x01020304, IPv6-Prefix = 0x000000000000000000000000 }, IP4RD-Map-Rule = { IPv4-Prefix-Len = 8, IPv6-Prefix-Len = 0, EA-Len = 4, WPK-Authorized = 1, IPv4-Prefix = 0x7f000001, IPv6-Prefix = 0x000000000000000000000000 } } # # 0 1 2 3 @@ -82,7 +83,7 @@ encode-pair IP4RD-Non-Map-Rule.Traffic-Class-Provided = yes, IP4RD-Non-Map-Rule. match 00 63 00 02 81 1f decode-pair - -match IP4RD-Non-Map-Rule.Traffic-Class-Provided = yes, IP4RD-Non-Map-Rule.Reserved = 0, IP4RD-Non-Map-Rule.Hub-And-Spoke = yes, IP4RD-Non-Map-Rule.Domain-PMTU = 31 +match IP4RD-Non-Map-Rule = { Traffic-Class-Provided = yes, Reserved = 0, Hub-And-Spoke = yes, Domain-PMTU = 31 } count match 15 diff --git a/src/tests/unit/protocols/dhcpv6/rfc8415.txt b/src/tests/unit/protocols/dhcpv6/rfc8415.txt index 8da38658a77..96fc064eacd 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc8415.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc8415.txt @@ -109,7 +109,7 @@ encode-pair Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060 match 00 01 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f decode-pair - -match Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } # # 21.3. Server Identifier Option @@ -141,7 +141,7 @@ encode-pair Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060 match 00 02 00 12 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f decode-pair - -match Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f +match Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000102030405060708090a0b0c0d0e0f } } # # 21.4. Identity Association for Non-temporary Addresses Option @@ -197,7 +197,7 @@ encode-pair IA-NA.IAID = 180150000, IA-NA.T1 = 54093, IA-NA.T2 = 45887, IA-NA.Op match 00 03 00 12 0a bc de f0 00 00 d3 4d 00 00 b3 3f 00 06 00 02 00 ad decode-pair - -match IA-NA.IAID = 180150000, IA-NA.T1 = 54093, IA-NA.T2 = 45887, IA-NA.Options = { Option-Request = 173 } +match IA-NA = { IAID = 180150000, T1 = 54093, T2 = 45887, Options = { Option-Request = 173 } } # # 21.5. Identity Association for Temporary Addresses Option @@ -236,7 +236,7 @@ encode-pair IA-TA.IAID = 3237998080, IA-TA.Options = { Option-Request = 173 } match 00 04 00 0a c0 ff ee 00 00 06 00 02 00 ad decode-pair - -match IA-TA.IAID = 3237998080, IA-TA.Options = { Option-Request = 173 } +match IA-TA = { IAID = 3237998080, Options = { Option-Request = 173 } } # # 21.6. IA Address Option @@ -296,12 +296,12 @@ match 00 05 00 1e fd 85 d2 bb 09 2c 00 00 74 ae 28 71 f5 6c 8d 94 00 00 00 78 00 # # inet_pton() on Linux represents fields consisting of only zeros -# as a single 0. macOS ommits the value entirely. +# as a single 0. macOS omits the value entirely. # # We use a regex match to deal with the inconsistency. # decode-pair - -match-regex IA-Addr.IPv6-Address = fd85:d2bb:92c:0{0,4}:74ae:2871:f56c:8d94, IA-Addr.Preferred-Lifetime = 120, IA-Addr.Valid-Lifetime = 86400, IA-Addr.Options = \{ Option-Request = 173 \} +match-regex IA-Addr = \{ IPv6-Address = fd85:d2bb:92c:0{0,4}:74ae:2871:f56c:8d94, Preferred-Lifetime = 120, Valid-Lifetime = 86400, Options = \{ Option-Request = 173 \} \} # # 21.7. Option Request Option @@ -456,7 +456,7 @@ encode-pair Auth.Protocol = Reconfigure-Key, Auth.Algorithm = HMAC-MD5, Auth.Rep match 00 0b 00 1a 03 01 00 00 00 00 00 49 96 02 d2 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 decode-pair - -match Auth.Protocol = Reconfigure-Key, Auth.Algorithm = HMAC-MD5, Auth.Replay-Detection-Method = Monotonicly-Increasing-Value, Auth.Replay-Detection = 1234567890, Auth.Information = 0x010203040506070809101112131415 +match Auth = { Protocol = Reconfigure-Key, Algorithm = HMAC-MD5, Replay-Detection-Method = Monotonicly-Increasing-Value, Replay-Detection = 1234567890, Information = 0x010203040506070809101112131415 } # # 21.12. Server Unicast Option @@ -530,7 +530,7 @@ encode-pair Status-Code.Value = NoPrefixAvail, Status-Code.Message = "Tapioca co match 00 0d 00 14 00 06 54 61 70 69 6f 63 61 20 63 6f 6d 20 71 75 65 69 6a 6f decode-pair - -match Status-Code.Value = NoPrefixAvail, Status-Code.Message = "Tapioca com queijo" +match Status-Code = { Value = NoPrefixAvail, Message = "Tapioca com queijo" } # # 21.14. Rapid Commit Option @@ -632,7 +632,7 @@ encode-pair Vendor-Class.PEN = 11344, Vendor-Class.Data = 0xb33f match 00 10 00 08 00 00 2c 50 00 02 b3 3f decode-pair - -match Vendor-Class.PEN = 11344, Vendor-Class.Data = 0xb33f +match Vendor-Class = { PEN = 11344, Data = 0xb33f } # # 21.17. Vendor-specific Information Option @@ -836,7 +836,7 @@ encode-pair IA-PD.IAID = 2864434397, IA-PD.T1 = 54093, IA-PD.T2 = 45887, IA-PD.O match 00 19 00 11 aa bb cc dd 00 00 d3 4d 00 00 b3 3f 00 07 00 01 01 decode-pair - -match IA-PD.IAID = 2864434397, IA-PD.T1 = 54093, IA-PD.T2 = 45887, IA-PD.Options = { Preference = 1 } +match IA-PD = { IAID = 2864434397, T1 = 54093, T2 = 45887, Options = { Preference = 1 } } # # 21.22. IA Prefix Option @@ -897,7 +897,7 @@ encode-pair IA-PD-Prefix.Preferred-Lifetime = 29425646, IA-PD-Prefix.Valid-Lifet match 00 1a 00 19 01 c0 ff ee 02 c0 ff ee 80 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 19 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 01 01 decode-pair - -match IA-PD-Prefix.Preferred-Lifetime = 29425646, IA-PD-Prefix.Valid-Lifetime = 46202862, IA-PD-Prefix.IPv6-Prefix = ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128, IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { Preference = 1 } +match IA-PD-Prefix = { Preferred-Lifetime = 29425646, Valid-Lifetime = 46202862, IPv6-Prefix = ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128 }, IA-PD = { IAID = 0, T1 = 0, T2 = 0, Options = { Preference = 1 } } # # 21.23. Information Refresh Time Option diff --git a/src/tests/unit/protocols/dhcpv6/server.txt b/src/tests/unit/protocols/dhcpv6/server.txt index adbe62cf3f7..ef278833156 100644 --- a/src/tests/unit/protocols/dhcpv6/server.txt +++ b/src/tests/unit/protocols/dhcpv6/server.txt @@ -16,13 +16,14 @@ encode-pair Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000100012750f52 match 00 01 00 12 00 04 00 01 00 01 27 50 f5 27 02 42 0a 00 00 09 00 00 decode-pair - -match Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000100012750f52702420a0000090000 +match Client-ID = { DUID = UUID, DUID.UUID = { Value = 0x000100012750f52702420a0000090000 } } + encode-pair Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000100012750f52702420a0000090000 match 00 02 00 12 00 04 00 01 00 01 27 50 f5 27 02 42 0a 00 00 09 00 00 decode-pair - -match Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000100012750f52702420a0000090000 +match Server-ID = { DUID = UUID, DUID.UUID = { Value = 0x000100012750f52702420a0000090000 } } # # We SHOULD be adding a sub-struct with Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address, @@ -35,7 +36,7 @@ encode-pair Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, C match 00 01 00 0e 00 01 00 01 00 00 00 02 00 01 02 03 04 05 decode-pair - -match Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jan 1 2000 00:00:02 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05 +match Client-ID = { DUID = LLT, DUID.LLT = { Hardware-Type = Ethernet, Time = "Jan 1 2000 00:00:02 UTC", Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } } # # sub-struct LL is LLT, but without the T @@ -46,7 +47,7 @@ encode-pair Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Cli match 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 decode-pair - -match Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05 +match Client-ID = { DUID = LL, DUID.LL = { Hardware-Type = Ethernet, Hardware-Type.Ethernet = { Address = 00:01:02:03:04:05 } } } count match 21