]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
IA-PD-Prefix-IPv6-Prefix should be a prefix type
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 16 Nov 2020 17:04:14 +0000 (11:04 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 16 Nov 2020 17:04:14 +0000 (11:04 -0600)
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

share/dictionary/dhcpv6/dictionary.rfc3633
src/protocols/dhcpv6/decode.c
src/protocols/dhcpv6/encode.c
src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt
src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt
src/tests/unit/protocols/dhcpv6/rfc8415.txt

index f1b7dc2036b87354c0f668bd021b0b9278b0f38d..82401a33f7a1cb398527edc646d84dedbf1e9025 100644 (file)
@@ -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
 
index 791f6026bc672caced1a5f6435f9b879566c94e3..c283619bd2117e4cb0e335302139c82baba7d600 100644 (file)
@@ -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.
                 */
index 606b7db5bebf2f0e2ef9e838053299ff5c1dbeeb..d7ff7b0be4442439c66ee79c40e0187cfc04227e 100644 (file)
@@ -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 */
index f5e1682dc7dd787c8d104b348e4e11f5deadee18..71a4aafb3899a1dab565f1e2afba6b676c77137e 100644 (file)
@@ -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
index 26c75d69d7125671febe6fee7bbc74119a661116..e3df4bca907430d4af4dcd32d38b4e5ea7f4886f 100644 (file)
@@ -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
index 326630c436f75adabcdc8c4ea1e2673073bba53b..b8f8044c66caf909b74bb21fe2905265ef41d530 100644 (file)
@@ -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