From: Arran Cudbard-Bell Date: Mon, 16 Nov 2020 17:04:14 +0000 (-0600) Subject: IA-PD-Prefix-IPv6-Prefix should be a prefix type X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb807ffaf0ed1b7b7ef9e5e2192f11b4e9f41d63;p=thirdparty%2Ffreeradius-server.git IA-PD-Prefix-IPv6-Prefix should be a prefix type The DHCPv6 standard changes the encoding based on whether it's a struct field or an option, which is why it was a fixed length v6 address before. Unfortunately none of the modules in FreeRADIUS will work with a prefix value split into its components --- diff --git a/share/dictionary/dhcpv6/dictionary.rfc3633 b/share/dictionary/dhcpv6/dictionary.rfc3633 index f1b7dc2036b..82401a33f7a 100644 --- a/share/dictionary/dhcpv6/dictionary.rfc3633 +++ b/share/dictionary/dhcpv6/dictionary.rfc3633 @@ -19,7 +19,6 @@ MEMBER IA-PD-Options group # of IA-PD-Prefix and other options ATTRIBUTE IA-PD-Prefix 26 struct MEMBER IA-PD-Prefix-Preferred-Lifetime time_delta # time delta from "now" in seconds MEMBER IA-PD-Prefix-Valid-Lifetime time_delta # time delta from "now" in seconds -MEMBER IA-PD-Prefix-IPv6-Prefix-Length uint8 -MEMBER IA-PD-Prefix-IPv6-Prefix ipv6addr # MUST be 16 bytes +MEMBER IA-PD-Prefix-IPv6-Prefix ipv6prefix MEMBER IA-PD-Prefix-Options group # of other options associated with this prefix diff --git a/src/protocols/dhcpv6/decode.c b/src/protocols/dhcpv6/decode.c index 791f6026bc6..c283619bd21 100644 --- a/src/protocols/dhcpv6/decode.c +++ b/src/protocols/dhcpv6/decode.c @@ -134,12 +134,28 @@ static ssize_t decode_value(TALLOC_CTX *ctx, fr_cursor_t *cursor, fr_dict_t cons * Address MAY be shorter than 16 bytes. */ case FR_TYPE_IPV6_PREFIX: - if ((data_len == 0) || (data_len > 17)) { + if ((data_len == 0) || (data_len > (1 + sizeof(vp->vp_ipv6addr)))) { raw: return decode_raw(ctx, cursor, dict, parent, data, data_len, decoder_ctx); }; + /* + * Structs used fixed length fields + */ + if (parent->parent->type == FR_TYPE_STRUCT) { + if (data_len != (1 + sizeof(vp->vp_ipv6addr))) goto raw; + + vp = fr_pair_afrom_da(ctx, parent); + if (!vp) return PAIR_DECODE_OOM; + + vp->vp_ip.af = AF_INET6; + vp->vp_ip.scope_id = 0; + vp->vp_ip.prefix = data[0]; + memcpy(&vp->vp_ipv6addr, data + 1, data_len - 1); + break; + } + /* * No address, the prefix length MUST be zero. */ diff --git a/src/protocols/dhcpv6/encode.c b/src/protocols/dhcpv6/encode.c index 606b7db5beb..d7ff7b0be44 100644 --- a/src/protocols/dhcpv6/encode.c +++ b/src/protocols/dhcpv6/encode.c @@ -255,7 +255,14 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, { size_t prefix_len; - prefix_len = vp->vp_ip.prefix >> 3; /* Convert bits to whole bytes */ + /* + * Structs have fixed length value fields. + */ + if (da->parent->type == FR_TYPE_STRUCT) { + prefix_len = sizeof(vp->vp_ipv6addr); + } else { + prefix_len = vp->vp_ip.prefix >> 3; /* Convert bits to whole bytes */ + } FR_DBUFF_IN_BYTES_RETURN(&work_dbuff, vp->vp_ip.prefix); FR_DBUFF_IN_MEMCPY_RETURN(&work_dbuff, (uint8_t const *)&vp->vp_ipv6addr, prefix_len); /* Only copy the minimum address bytes required */ @@ -269,7 +276,16 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, */ case FR_TYPE_IPV4_PREFIX: { - size_t prefix_len = vp->vp_ip.prefix >> 3; /* Convert bits to whole bytes */ + size_t prefix_len; + + /* + * Structs have fixed length value fields. + */ + if (da->parent->type == FR_TYPE_STRUCT) { + prefix_len = sizeof(vp->vp_ipv4addr); + } else { + prefix_len = vp->vp_ip.prefix >> 3; /* Convert bits to whole bytes */ + } FR_DBUFF_IN_BYTES_RETURN(&work_dbuff, vp->vp_ip.prefix); FR_DBUFF_IN_MEMCPY_RETURN(&work_dbuff, (uint8_t const *)&vp->vp_ipv4addr, prefix_len); /* Only copy the minimum address bytes required */ 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 f5e1682dc7d..71a4aafb389 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt @@ -100,7 +100,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-Length = 56, IA-PD-Prefix-IPv6-Prefix = 2a00:1:1:100:: }, Client-ID-DUID = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 21 2012 08:36:00 UTC", Server-ID-DUID-LLT-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, 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 = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 21 2012 08:36:00 UTC", Server-ID-DUID-LLT-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 @@ -153,7 +153,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 = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 21 2012 08:36:00 UTC", Server-ID-DUID-LLT-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-Length = 56, IA-PD-Prefix-IPv6-Prefix = 2a00:1:1:100:: } +match Packet-Type = Request, Transaction-ID = 0x1e291d, Client-ID-DUID = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 21 2012 08:36:00 UTC", Server-ID-DUID-LLT-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 } 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 @@ -210,7 +210,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-Length = 56, IA-PD-Prefix-IPv6-Prefix = 2a00:1:1:100:: }, Client-ID-DUID = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 21 2012 08:36:00 UTC", Server-ID-DUID-LLT-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, 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 = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 21 2012 08:36:00 UTC", Server-ID-DUID-LLT-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_ia-pd.txt b/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt index 26c75d69d71..e3df4bca907 100644 --- a/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt +++ b/src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt @@ -85,7 +85,7 @@ match Packet-Type = Solicit, Transaction-ID = 0xe1e093, Client-ID-DUID = Client- # | 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-Length = 56, IA-PD-Prefix-IPv6-Prefix = 2a00:1:1:100:: }, Client-ID-DUID = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 26 2012 15:39:05 UTC", Server-ID-DUID-LLT-Ethernet-Address = 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 = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 26 2012 15:39:05 UTC", Server-ID-DUID-LLT-Ethernet-Address = 00:11:22:33:44:55 # # 3. @@ -135,7 +135,7 @@ match Packet-Type = Advertise, Transaction-ID = 0xe1e093, IA-PD-IAID = 33752069, # | 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 = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 26 2012 15:39:05 UTC", Server-ID-DUID-LLT-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-Length = 56, IA-PD-Prefix-IPv6-Prefix = 2a00:1:1:100:: } +match Packet-Type = Request, Transaction-ID = 0x12b08a, Client-ID-DUID = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 26 2012 15:39:05 UTC", Server-ID-DUID-LLT-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 } # # 4. @@ -177,7 +177,7 @@ match Packet-Type = Request, Transaction-ID = 0x12b08a, Client-ID-DUID = Client- # | 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-Length = 56, IA-PD-Prefix-IPv6-Prefix = 2a00:1:1:100:: }, Client-ID-DUID = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 26 2012 15:39:05 UTC", Server-ID-DUID-LLT-Ethernet-Address = 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 = Client-ID-DUID-LL, Client-ID-DUID-LL-Hardware-Type = Client-ID-DUID-LL-Ethernet, Client-ID-DUID-LL-Ethernet-Address = 00:01:02:03:04:05, Server-ID-DUID = Server-ID-DUID-LLT, Server-ID-DUID-LLT-Hardware-Type = Server-ID-DUID-LLT-Ethernet, Server-ID-DUID-LLT-Time = "Nov 26 2012 15:39:05 UTC", Server-ID-DUID-LLT-Ethernet-Address = 00:11:22:33:44:55 count match 10 diff --git a/src/tests/unit/protocols/dhcpv6/rfc8415.txt b/src/tests/unit/protocols/dhcpv6/rfc8415.txt index 326630c436f..b8f8044c66c 100644 --- a/src/tests/unit/protocols/dhcpv6/rfc8415.txt +++ b/src/tests/unit/protocols/dhcpv6/rfc8415.txt @@ -892,11 +892,11 @@ match IA-PD-IAID = 2864434397, IA-PD-T1 = 54093, IA-PD-T2 = 45887, IA-PD-Options # variable-length field (25 octets less than # the value in the option-len field). # -encode-pair IA-PD-Prefix-Preferred-Lifetime = 29425646, IA-PD-Prefix-Valid-Lifetime = 46202862, IA-PD-Prefix-IPv6-Prefix-Length = 128, IA-PD-Prefix-IPv6-Prefix = ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff, IA-PD-Options = { Preference = 1 } +encode-pair 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-Options = { Preference = 1 } 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-Length = 128, IA-PD-Prefix-IPv6-Prefix = ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff, IA-PD-IAID = 0, IA-PD-T1 = 0, IA-PD-T2 = 0, IA-PD-Options = { Preference = 1 } +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 } # # 21.23. Information Refresh Time Option