# Array of 1-uint8 numbers indicating which options the client
# would like to see in the response.
-ATTRIBUTE Parameter-Request-List 55 uint8 array
+ATTRIBUTE Parameter-Request-List 55 attribute array
ATTRIBUTE Error-Message 56 string
ATTRIBUTE Maximum-Msg-Size 57 uint16
ATTRIBUTE Renewal-Time 58 uint32
ATTRIBUTE Site-specific-30 254 octets
ATTRIBUTE End-Of-Options 255 uint8
-
-VALUE Parameter-Request-List Subnet-Mask 1
-VALUE Parameter-Request-List Time-Offset 2
-VALUE Parameter-Request-List Router-Address 3
-VALUE Parameter-Request-List Time-Server 4
-VALUE Parameter-Request-List IEN-116-Name-Server 5
-VALUE Parameter-Request-List Domain-Name-Server 6
-VALUE Parameter-Request-List Log-Server 7
-VALUE Parameter-Request-List Quotes-Server 8
-VALUE Parameter-Request-List LPR-Server 9
-VALUE Parameter-Request-List Impress-Server 10
-VALUE Parameter-Request-List RLP-Server 11
-VALUE Parameter-Request-List Hostname 12
-VALUE Parameter-Request-List Boot-File-Size 13
-VALUE Parameter-Request-List Merit-Dump-File 14
-VALUE Parameter-Request-List Domain-Name 15
-VALUE Parameter-Request-List Swap-Server 16
-VALUE Parameter-Request-List Root-Path 17
-VALUE Parameter-Request-List Bootp-Extensions-Path 18
-VALUE Parameter-Request-List IP-Forward-Enable 19
-VALUE Parameter-Request-List Source-Route-Enable 20
-VALUE Parameter-Request-List Policy-Filter 21
-VALUE Parameter-Request-List Max-Datagram-Reassembly-Sz 22
-VALUE Parameter-Request-List Default-IP-TTL 23
-VALUE Parameter-Request-List Path-MTU-Aging-Timeout 24
-VALUE Parameter-Request-List Path-MTU-Plateau-Table 25
-VALUE Parameter-Request-List Interface-MTU-Size 26
-VALUE Parameter-Request-List All-Subnets-Are-Local 27
-VALUE Parameter-Request-List Broadcast-Address 28
-VALUE Parameter-Request-List Perform-Mask-Discovery 29
-VALUE Parameter-Request-List Provide-Mask-To-Others 30
-VALUE Parameter-Request-List Perform-Router-Discovery 31
-VALUE Parameter-Request-List Router-Solicitation-Address 32
-VALUE Parameter-Request-List Static-Routes 33
-VALUE Parameter-Request-List Trailer-Encapsulation 34
-VALUE Parameter-Request-List ARP-Cache-Timeout 35
-VALUE Parameter-Request-List Ethernet-Encapsulation 36
-VALUE Parameter-Request-List Default-TCP-TTL 37
-VALUE Parameter-Request-List Keep-Alive-Interval 38
-VALUE Parameter-Request-List Keep-Alive-Garbage 39
-VALUE Parameter-Request-List NIS-Domain-Name 40
-VALUE Parameter-Request-List NIS-Servers 41
-VALUE Parameter-Request-List NTP-Servers 42
-VALUE Parameter-Request-List Vendor 43
-VALUE Parameter-Request-List NETBIOS-Name-Servers 44
-VALUE Parameter-Request-List NETBIOS-Dgm-Dist-Servers 45
-VALUE Parameter-Request-List NETBIOS-Node-Type 46
-VALUE Parameter-Request-List NETBIOS 47
-VALUE Parameter-Request-List X-Window-Font-Server 48
-VALUE Parameter-Request-List X-Window-Display-Mgr 49
-VALUE Parameter-Request-List Requested-IP-Address 50
-VALUE Parameter-Request-List IP-Address-Lease-Time 51
-VALUE Parameter-Request-List Overload 52
-VALUE Parameter-Request-List Message-Type 53
-VALUE Parameter-Request-List Server-Identifier 54
-VALUE Parameter-Request-List Parameter-Request-List 55
-VALUE Parameter-Request-List Error-Message 56
-VALUE Parameter-Request-List Maximum-Msg-Size 57
-VALUE Parameter-Request-List Renewal-Time 58
-VALUE Parameter-Request-List Rebinding-Time 59
-VALUE Parameter-Request-List Class-Identifier 60
-VALUE Parameter-Request-List Client-Identifier 61
-VALUE Parameter-Request-List Netware-Domain-Name 62
-VALUE Parameter-Request-List Netware-Sub-Options 63
-VALUE Parameter-Request-List NIS-Client-Domain-Name 64
-VALUE Parameter-Request-List NIS-Server-Address 65
-VALUE Parameter-Request-List TFTP-Server-Name 66
-VALUE Parameter-Request-List Boot-File-Name 67
-VALUE Parameter-Request-List Home-Agent-Address 68
-VALUE Parameter-Request-List SMTP-Server-Address 69
-VALUE Parameter-Request-List POP3-Server-Address 70
-VALUE Parameter-Request-List NNTP-Server-Address 71
-VALUE Parameter-Request-List WWW-Server-Address 72
-VALUE Parameter-Request-List Finger-Server-Address 73
-VALUE Parameter-Request-List IRC-Server-Address 74
-VALUE Parameter-Request-List StreetTalk-Server-Address 75
-VALUE Parameter-Request-List STDA-Server-Address 76
-VALUE Parameter-Request-List User-Class 77
-VALUE Parameter-Request-List Directory-Agent 78
-VALUE Parameter-Request-List Service-Scope 79
-VALUE Parameter-Request-List Rapid-Commit 80
-VALUE Parameter-Request-List Client-FQDN 81
-VALUE Parameter-Request-List Relay-Agent-Information 82
-VALUE Parameter-Request-List iSNS 83
-VALUE Parameter-Request-List NDS-Servers 85
-VALUE Parameter-Request-List NDS-Tree-Name 86
-VALUE Parameter-Request-List NDS-Context 87
-VALUE Parameter-Request-List Authentication 90
-VALUE Parameter-Request-List Client-Last-Transaction-Time 91
-VALUE Parameter-Request-List associated-ip 92
-VALUE Parameter-Request-List Client-System 93
-VALUE Parameter-Request-List Client-NDI 94
-VALUE Parameter-Request-List LDAP 95
-VALUE Parameter-Request-List UUID/GUID 97
-VALUE Parameter-Request-List User-Auth 98
-VALUE Parameter-Request-List Netinfo-Address 112
-VALUE Parameter-Request-List Netinfo-Tag 113
-VALUE Parameter-Request-List URL 114
-VALUE Parameter-Request-List Auto-Config 116
-VALUE Parameter-Request-List Name-Service-Search 117
-VALUE Parameter-Request-List Subnet-Selection-Option 118
-VALUE Parameter-Request-List Domain-Search 119
-VALUE Parameter-Request-List SIP-Servers-Option 120
-VALUE Parameter-Request-List Classless-Static-Route 121
-VALUE Parameter-Request-List CCC 122
-VALUE Parameter-Request-List GeoConf-Option 123
-VALUE Parameter-Request-List V-I-Vendor-Class 124
-VALUE Parameter-Request-List V-I-Vendor-Specific 125
-VALUE Parameter-Request-List Etherboot 128
-VALUE Parameter-Request-List TFTP-Server-IP-Address 128
-VALUE Parameter-Request-List Call-Server-IP-address 129
-VALUE Parameter-Request-List Ethernet-Interface 130
-VALUE Parameter-Request-List Vendor-Discrimination-Str 130
-VALUE Parameter-Request-List Remote-Stats-Svr-IP-Address 131
-VALUE Parameter-Request-List IEEE-802dot1P-VLAN-ID 132
-VALUE Parameter-Request-List IEEE-802dot1Q-L2-Priority 133
-VALUE Parameter-Request-List Diffserv-Code-Point 134
-VALUE Parameter-Request-List HTTP-Proxy 135
{ .out = &attr_dhcp_dhcp_maximum_msg_size, .name = "Maximum-Msg-Size", .type = FR_TYPE_UINT16, .dict = &dict_dhcpv4 },
{ .out = &attr_dhcp_interface_mtu_size, .name = "Interface-MTU-Size", .type = FR_TYPE_UINT16, .dict = &dict_dhcpv4 },
{ .out = &attr_dhcp_message_type, .name = "Message-Type", .type = FR_TYPE_UINT8, .dict = &dict_dhcpv4 },
- { .out = &attr_dhcp_parameter_request_list, .name = "Parameter-Request-List", .type = FR_TYPE_UINT8, .dict = &dict_dhcpv4 },
+ { .out = &attr_dhcp_parameter_request_list, .name = "Parameter-Request-List", .type = FR_TYPE_ATTR, .dict = &dict_dhcpv4 },
{ .out = &attr_dhcp_overload, .name = "Overload", .type = FR_TYPE_UINT8, .dict = &dict_dhcpv4 },
{ .out = &attr_dhcp_vendor_class_identifier, .name = "Vendor-Class-Identifier", .type = FR_TYPE_OCTETS, .dict = &dict_dhcpv4 },
{ .out = &attr_dhcp_relay_link_selection, .name = "Relay-Agent-Information.Relay-Link-Selection", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4 },
*/
int fr_dhcpv4_global_init(void)
{
- fr_value_box_t value = *fr_box_uint8(0);
- uint8_t i;
-
if (instance_count > 0) {
instance_count++;
return 0;
goto fail;
}
- /*
- * Fixup dictionary entry for Paramter-Request-List adding all the options
- */
- for (i = 1; i < 255; i++) {
- fr_dict_attr_t const *attr;
-
- attr = fr_dict_attr_child_by_num(fr_dict_root(dict_dhcpv4), i);
- if (!attr) {
- continue;
- }
- value.vb_uint8 = i;
-
- if (fr_dict_enum_add_name(fr_dict_attr_unconst(attr_dhcp_parameter_request_list),
- attr->name, &value, true, false) < 0) {
- goto fail;
- }
- }
-
instantiated = true;
return 0;
}
return false;
}
+ if ((da->type == FR_TYPE_ATTR) && !da->parent->flags.is_root) {
+ fr_strerror_const("Data type 'attr' can only exist at the dictionary root");
+ return false;
+ }
+
return true;
}
# options = [message-type=discover max_dhcp_size=590 param_req_list=[1, 28, 3, 43] lease_time=3600 dhcp-option-overload=3 error_message=b'Padding' pad client_id='\x01\x00\x00l\\x82\\xdcN' end]
#
decode-proto 01 01 06 00 ac 2e ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6c 82 dc 4e 00 00 00 00 00 00 00 00 00 00 38 14 73 6e 61 6d 65 20 66 69 65 6c 64 20 6f 76 65 72 6c 6f 61 64 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38 18 66 69 6c 65 20 6e 61 6d 65 20 66 69 65 6c 64 20 6f 76 65 72 6c 6f 61 64 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 02 4e 37 04 01 1c 03 2b 33 04 00 00 0e 10 34 01 03 38 07 50 61 64 64 69 6e 67 00 3d 07 01 00 00 6c 82 dc 4e ff
-match Opcode = ::Client-Message, Hardware-Type = ::Ethernet, Hardware-Address-Length = 6, Hop-Count = 0, Transaction-Id = 2888761343, Number-of-Seconds = 0, Flags = 0, Client-IP-Address = 0.0.0.0, Your-IP-Address = 0.0.0.0, Server-IP-Address = 0.0.0.0, Gateway-IP-Address = 0.0.0.0, Client-Hardware-Address = 00:00:6c:82:dc:4e, Message-Type = ::Discover, Maximum-Msg-Size = 590, Parameter-Request-List = ::Subnet-Mask, Parameter-Request-List = ::Broadcast-Address, Parameter-Request-List = ::Router-Address, Parameter-Request-List = ::Vendor, IP-Address-Lease-Time = 3600, Overload = 3, Error-Message = "Padding", Client-Identifier = 0x0100006c82dc4e, Error-Message = "sname field overload", Error-Message = "file name field overload", Network-Subnet = 0.0.0.0/32
+match Opcode = ::Client-Message, Hardware-Type = ::Ethernet, Hardware-Address-Length = 6, Hop-Count = 0, Transaction-Id = 2888761343, Number-of-Seconds = 0, Flags = 0, Client-IP-Address = 0.0.0.0, Your-IP-Address = 0.0.0.0, Server-IP-Address = 0.0.0.0, Gateway-IP-Address = 0.0.0.0, Client-Hardware-Address = 00:00:6c:82:dc:4e, Message-Type = ::Discover, Maximum-Msg-Size = 590, Parameter-Request-List = ::Subnet-Mask, Parameter-Request-List = ::Broadcast-Address, Parameter-Request-List = ::Router-Address, Parameter-Request-List = ::Vendor-Specific-Options, IP-Address-Lease-Time = 3600, Overload = 3, Error-Message = "Padding", Client-Identifier = 0x0100006c82dc4e, Error-Message = "sname field overload", Error-Message = "file name field overload", Network-Subnet = 0.0.0.0/32
count
match 4
# options = [message-type=discover max_dhcp_size=590 param_req_list=[1, 28, 3, 43] lease_time=3600 dhcp-option-overload=3 error_message=b'Padding' pad client_id='\x01\x00\x00l\\x82\\xdcN' pad]
#
decode-proto 01 01 06 00 ac 2e ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6c 82 dc 4e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 02 4e 37 04 01 1c 03 2b 33 04 00 00 0e 10 34 01 03 38 07 50 61 64 64 69 6e 67 00 3d 07 01 00 00 6c 82 dc 4e 00
-match Opcode = ::Client-Message, Hardware-Type = ::Ethernet, Hardware-Address-Length = 6, Hop-Count = 0, Transaction-Id = 2888761343, Number-of-Seconds = 0, Flags = 0, Client-IP-Address = 0.0.0.0, Your-IP-Address = 0.0.0.0, Server-IP-Address = 0.0.0.0, Gateway-IP-Address = 0.0.0.0, Client-Hardware-Address = 00:00:6c:82:dc:4e, Message-Type = ::Discover, Maximum-Msg-Size = 590, Parameter-Request-List = ::Subnet-Mask, Parameter-Request-List = ::Broadcast-Address, Parameter-Request-List = ::Router-Address, Parameter-Request-List = ::Vendor, IP-Address-Lease-Time = 3600, Overload = 3, Error-Message = "Padding", Client-Identifier = 0x0100006c82dc4e, Network-Subnet = 0.0.0.0/32
+match Opcode = ::Client-Message, Hardware-Type = ::Ethernet, Hardware-Address-Length = 6, Hop-Count = 0, Transaction-Id = 2888761343, Number-of-Seconds = 0, Flags = 0, Client-IP-Address = 0.0.0.0, Your-IP-Address = 0.0.0.0, Server-IP-Address = 0.0.0.0, Gateway-IP-Address = 0.0.0.0, Client-Hardware-Address = 00:00:6c:82:dc:4e, Message-Type = ::Discover, Maximum-Msg-Size = 590, Parameter-Request-List = ::Subnet-Mask, Parameter-Request-List = ::Broadcast-Address, Parameter-Request-List = ::Router-Address, Parameter-Request-List = ::Vendor-Specific-Options, IP-Address-Lease-Time = 3600, Overload = 3, Error-Message = "Padding", Client-Identifier = 0x0100006c82dc4e, Network-Subnet = 0.0.0.0/32
count
match 4