$INCLUDE dictionary.rfc6153
$INCLUDE dictionary.rfc6656
$INCLUDE dictionary.rfc6926
+$INCLUDE dictionary.rfc7291
$INCLUDE dictionary.rfc8925
$INCLUDE dictionary.adsl_forum
ATTRIBUTE TFTP-Server-IPv4-Address 150 ipaddr array
-# RFC draft-ietf-pcp-13
-ATTRIBUTE PCP-IPv4-Server-Address 158 octets # Complex format (not just ipaddr array)
-
# RFC 3942 - 159-174 - Unassigned
# RFC 3942 - 178-207 - Unassigned
# RFC 3942 - 214-219 - Unassigned
--- /dev/null
+# -*- text -*-
+# Copyright (C) 2022 The FreeRADIUS Server project and contributors
+# This work is licensed under CC-BY version 4.0 https://creativecommons.org/licenses/by/4.0
+# Version $Id$
+##############################################################################
+#
+# RFC7291 - DHCP Options for the Port Control Protocol
+#
+# $Id$
+#
+##############################################################################
+
+
+ATTRIBUTE PCP-IPv4-Server-Addresses 158 struct
+MEMBER server struct length=uint8,array
+MEMBER ip-address ipv4addr array
--- /dev/null
+proto dhcpv4
+proto-dictionary dhcpv4
+fuzzer-out dhcpv4
+
+decode-pair 9e 05 04 7f 00 00 01
+match PCP-IPv4-Server-Addresses = { server = { ip-address = 127.0.0.1 } }
+
+encode-pair -
+match 9e 05 04 7f 00 00 01
+
+# multiple in one struct
+encode-pair PCP-IPv4-Server-Addresses = { server = { ip-address = 127.0.0.1, ip-address = 127.0.0.2 } }
+match 9e 09 08 7f 00 00 01 7f 00 00 02
+
+decode-pair -
+match PCP-IPv4-Server-Addresses = { server = { ip-address = 127.0.0.1, ip-address = 127.0.0.2 } }
+
+# multiple structs
+encode-pair PCP-IPv4-Server-Addresses = { server = { ip-address = 127.0.0.1, ip-address = 127.0.0.2 }, server = { ip-address = 192.168.0.1, ip-address = 192.168.0.2 } }
+match 9e 12 08 7f 00 00 01 7f 00 00 02 08 c0 a8 00 01 c0 a8 00 02
+
+decode-pair -
+match PCP-IPv4-Server-Addresses = { server = { ip-address = 127.0.0.1, ip-address = 127.0.0.2 }, server = { ip-address = 192.168.0.1, ip-address = 192.168.0.2 } }
+
+count
+match 15