line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
#!/bin/false |
2
|
|
|
|
|
|
|
# PODNAME: Net::DHCP::Constants |
3
|
|
|
|
|
|
|
# Author: Dean Hamstead, Stephan Hadinger |
4
|
|
|
|
|
|
|
# ABSTRACT: Constants for DHCP codes and options |
5
|
13
|
|
|
13
|
|
15669
|
use strict; |
|
13
|
|
|
|
|
16
|
|
|
13
|
|
|
|
|
274
|
|
6
|
13
|
|
|
13
|
|
36
|
use warnings; |
|
13
|
|
|
|
|
13
|
|
|
13
|
|
|
|
|
254
|
|
7
|
13
|
|
|
13
|
|
91
|
use 5.8.0; |
|
13
|
|
|
|
|
27
|
|
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
package Net::DHCP::Constants; |
10
|
|
|
|
|
|
|
$Net::DHCP::Constants::VERSION = '0.7_007'; # TRIAL |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
$Net::DHCP::Constants::VERSION = '0.7007';# standard module declaration |
13
|
|
|
|
|
|
|
our ( @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS ); |
14
|
13
|
|
|
13
|
|
43
|
use Exporter; |
|
13
|
|
|
|
|
21
|
|
|
13
|
|
|
|
|
3384
|
|
15
|
|
|
|
|
|
|
@ISA = qw(Exporter); |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
@EXPORT = qw(MAGIC_COOKIE); |
18
|
|
|
|
|
|
|
|
19
|
|
|
|
|
|
|
# Constants |
20
|
|
|
|
|
|
|
our ( %DHO_CODES, %REV_DHO_CODES ); |
21
|
|
|
|
|
|
|
our ( %DHCP_MESSAGE, %REV_DHCP_MESSAGE ); |
22
|
|
|
|
|
|
|
our ( %BOOTP_CODES, %REV_BOOTP_CODES ); |
23
|
|
|
|
|
|
|
our ( %HTYPE_CODES, %REV_HTYPE_CODES ); |
24
|
|
|
|
|
|
|
our ( %NWIP_CODES, %REV_NWIP_CODES ); |
25
|
|
|
|
|
|
|
our ( %CCC_CODES, %REV_CCC_CODES ); |
26
|
|
|
|
|
|
|
our ( %GEOCONF_CODES, %REV_GEOCONF_CODES ); |
27
|
|
|
|
|
|
|
our ( %RELAYAGENT_CODES, %REV_RELAYAGENT_CODES ); |
28
|
|
|
|
|
|
|
our ( %RELAYAGENT_FORMATS, %REV_RELAYAGENT_FORMATS ); |
29
|
|
|
|
|
|
|
our ( %SUBOPTION_CODES, %REV_SUBOPTION_CODES ); |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
%EXPORT_TAGS = ( |
32
|
|
|
|
|
|
|
dho_codes => [ keys %DHO_CODES ], |
33
|
|
|
|
|
|
|
dhcp_message => [ keys %DHCP_MESSAGE ], |
34
|
|
|
|
|
|
|
bootp_codes => [ keys %BOOTP_CODES ], |
35
|
|
|
|
|
|
|
htype_codes => [ keys %HTYPE_CODES ], |
36
|
|
|
|
|
|
|
nwip_codes => [ keys %NWIP_CODES ], |
37
|
|
|
|
|
|
|
ccc_codes => [ keys %CCC_CODES ], |
38
|
|
|
|
|
|
|
geoconf_codes => [ keys %GEOCONF_CODES ], |
39
|
|
|
|
|
|
|
ra_codes => [ keys %RELAYAGENT_CODES ], |
40
|
|
|
|
|
|
|
dhcp_hashes => [ |
41
|
|
|
|
|
|
|
qw( |
42
|
|
|
|
|
|
|
%DHO_CODES %REV_DHO_CODES |
43
|
|
|
|
|
|
|
%DHCP_MESSAGE %REV_DHCP_MESSAGE |
44
|
|
|
|
|
|
|
%BOOTP_CODES %REV_BOOTP_CODES |
45
|
|
|
|
|
|
|
%NWIP_CODES %REV_NWIP_CODES |
46
|
|
|
|
|
|
|
%CCC_CODES %REV_CCC_CODES |
47
|
|
|
|
|
|
|
%HTYPE_CODES %REV_HTYPE_CODES |
48
|
|
|
|
|
|
|
%GEOCONF_CODES %REV_GEOCONF_CODES |
49
|
|
|
|
|
|
|
%RELAYAGENT_CODES %REV_RELAYAGENT_CODES |
50
|
|
|
|
|
|
|
%SUBOPTION_CODES %REV_SUBOPTION_CODES |
51
|
|
|
|
|
|
|
) |
52
|
|
|
|
|
|
|
], |
53
|
|
|
|
|
|
|
dhcp_other => [ |
54
|
|
|
|
|
|
|
qw(MAGIC_COOKIE DHCP_UDP_OVERHEAD DHCP_MAX_MTU BOOTP_MIN_LEN BOOTP_ABSOLUTE_MIN_LEN DHCP_MIN_LEN) |
55
|
|
|
|
|
|
|
] |
56
|
|
|
|
|
|
|
); |
57
|
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
@EXPORT_OK = qw( |
59
|
|
|
|
|
|
|
%DHO_CODES %REV_DHO_CODES |
60
|
|
|
|
|
|
|
%DHCP_MESSAGE %REV_DHCP_MESSAGE |
61
|
|
|
|
|
|
|
%BOOTP_CODES %REV_BOOTP_CODES |
62
|
|
|
|
|
|
|
%NWIP_CODES %REV_NWIP_CODES |
63
|
|
|
|
|
|
|
%HTYPE_CODES %REV_HTYPE_CODES |
64
|
|
|
|
|
|
|
%CCC_CODES %REV_CCC_CODES |
65
|
|
|
|
|
|
|
%DHO_FORMATS |
66
|
|
|
|
|
|
|
%SUBOPTION_FORMATS |
67
|
|
|
|
|
|
|
%GEOCONF_CODES %REV_GEOCONF_CODES |
68
|
|
|
|
|
|
|
%RELAYAGENT_CODES %REV_RELAYAGENT_CODES |
69
|
|
|
|
|
|
|
%SUBOPTION_CODES %REV_SUBOPTION_CODES |
70
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
); |
72
|
|
|
|
|
|
|
Exporter::export_tags('dho_codes'); |
73
|
|
|
|
|
|
|
Exporter::export_tags('dhcp_message'); |
74
|
|
|
|
|
|
|
Exporter::export_tags('bootp_codes'); |
75
|
|
|
|
|
|
|
Exporter::export_tags('htype_codes'); |
76
|
|
|
|
|
|
|
Exporter::export_tags('nwip_codes'); |
77
|
|
|
|
|
|
|
Exporter::export_tags('ccc_codes'); |
78
|
|
|
|
|
|
|
Exporter::export_tags('geoconf_codes'); |
79
|
|
|
|
|
|
|
Exporter::export_ok_tags('dhcp_other'); |
80
|
|
|
|
|
|
|
Exporter::export_ok_tags('ra_codes'); |
81
|
|
|
|
|
|
|
|
82
|
|
|
|
|
|
|
# MAGIC_COOKIE for DHCP (otherwise it is BOOTP) |
83
|
13
|
|
|
13
|
|
51
|
use constant MAGIC_COOKIE => "\x63\x82\x53\x63"; |
|
13
|
|
|
|
|
13
|
|
|
13
|
|
|
|
|
814
|
|
84
|
|
|
|
|
|
|
|
85
|
13
|
|
|
13
|
|
42
|
use constant DHCP_UDP_OVERHEAD => ( 14 + 20 + 8 ); # Ethernet + IP + UDP |
|
13
|
|
|
|
|
13
|
|
|
13
|
|
|
|
|
525
|
|
86
|
13
|
|
|
13
|
|
45
|
use constant DHCP_MAX_MTU => 1500; |
|
13
|
|
|
|
|
15
|
|
|
13
|
|
|
|
|
472
|
|
87
|
13
|
|
|
13
|
|
83
|
use constant BOOTP_ABSOLUTE_MIN_LEN => 236; |
|
13
|
|
|
|
|
13
|
|
|
13
|
|
|
|
|
469
|
|
88
|
13
|
|
|
13
|
|
37
|
use constant BOOTP_MIN_LEN => 300; |
|
13
|
|
|
|
|
11
|
|
|
13
|
|
|
|
|
443
|
|
89
|
13
|
|
|
13
|
|
48
|
use constant DHCP_MIN_LEN => 548; |
|
13
|
|
|
|
|
13
|
|
|
13
|
|
|
|
|
4616
|
|
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
BEGIN { |
92
|
13
|
|
|
13
|
|
41
|
%BOOTP_CODES = ( |
93
|
|
|
|
|
|
|
'BOOTREQUEST' => 1, |
94
|
|
|
|
|
|
|
'BOOTREPLY' => 2, |
95
|
|
|
|
|
|
|
); |
96
|
|
|
|
|
|
|
|
97
|
13
|
|
|
|
|
34
|
%HTYPE_CODES = ( |
98
|
|
|
|
|
|
|
'HTYPE_ETHER' => 1, |
99
|
|
|
|
|
|
|
'HTYPE_IEEE802' => 6, |
100
|
|
|
|
|
|
|
'HTYPE_FDDI' => 8, |
101
|
|
|
|
|
|
|
'HTYPE_INFINIBAND' => 32, |
102
|
|
|
|
|
|
|
); |
103
|
|
|
|
|
|
|
|
104
|
13
|
|
|
|
|
1339
|
%DHO_CODES = ( # RFC 2132 |
105
|
|
|
|
|
|
|
'DHO_PAD' => 0, |
106
|
|
|
|
|
|
|
'DHO_SUBNET_MASK' => 1, |
107
|
|
|
|
|
|
|
'DHO_TIME_OFFSET' => 2, |
108
|
|
|
|
|
|
|
'DHO_ROUTERS' => 3, |
109
|
|
|
|
|
|
|
'DHO_TIME_SERVERS' => 4, |
110
|
|
|
|
|
|
|
'DHO_NAME_SERVERS' => 5, |
111
|
|
|
|
|
|
|
'DHO_DOMAIN_NAME_SERVERS' => 6, |
112
|
|
|
|
|
|
|
'DHO_LOG_SERVERS' => 7, |
113
|
|
|
|
|
|
|
'DHO_COOKIE_SERVERS' => 8, |
114
|
|
|
|
|
|
|
'DHO_LPR_SERVERS' => 9, |
115
|
|
|
|
|
|
|
'DHO_IMPRESS_SERVERS' => 10, |
116
|
|
|
|
|
|
|
'DHO_RESOURCE_LOCATION_SERVERS' => 11, |
117
|
|
|
|
|
|
|
'DHO_HOST_NAME' => 12, |
118
|
|
|
|
|
|
|
'DHO_BOOT_SIZE' => 13, |
119
|
|
|
|
|
|
|
'DHO_MERIT_DUMP' => 14, |
120
|
|
|
|
|
|
|
'DHO_DOMAIN_NAME' => 15, |
121
|
|
|
|
|
|
|
'DHO_SWAP_SERVER' => 16, |
122
|
|
|
|
|
|
|
'DHO_ROOT_PATH' => 17, |
123
|
|
|
|
|
|
|
'DHO_EXTENSIONS_PATH' => 18, |
124
|
|
|
|
|
|
|
'DHO_IP_FORWARDING' => 19, |
125
|
|
|
|
|
|
|
'DHO_NON_LOCAL_SOURCE_ROUTING' => 20, |
126
|
|
|
|
|
|
|
'DHO_POLICY_FILTER' => 21, |
127
|
|
|
|
|
|
|
'DHO_MAX_DGRAM_REASSEMBLY' => 22, |
128
|
|
|
|
|
|
|
'DHO_DEFAULT_IP_TTL' => 23, |
129
|
|
|
|
|
|
|
'DHO_PATH_MTU_AGING_TIMEOUT' => 24, |
130
|
|
|
|
|
|
|
'DHO_PATH_MTU_PLATEAU_TABLE' => 25, |
131
|
|
|
|
|
|
|
'DHO_INTERFACE_MTU' => 26, |
132
|
|
|
|
|
|
|
'DHO_ALL_SUBNETS_LOCAL' => 27, |
133
|
|
|
|
|
|
|
'DHO_BROADCAST_ADDRESS' => 28, |
134
|
|
|
|
|
|
|
'DHO_PERFORM_MASK_DISCOVERY' => 29, |
135
|
|
|
|
|
|
|
'DHO_MASK_SUPPLIER' => 30, |
136
|
|
|
|
|
|
|
'DHO_ROUTER_DISCOVERY' => 31, |
137
|
|
|
|
|
|
|
'DHO_ROUTER_SOLICITATION_ADDRESS' => 32, |
138
|
|
|
|
|
|
|
'DHO_STATIC_ROUTES' => 33, |
139
|
|
|
|
|
|
|
'DHO_TRAILER_ENCAPSULATION' => 34, |
140
|
|
|
|
|
|
|
'DHO_ARP_CACHE_TIMEOUT' => 35, |
141
|
|
|
|
|
|
|
'DHO_IEEE802_3_ENCAPSULATION' => 36, |
142
|
|
|
|
|
|
|
'DHO_DEFAULT_TCP_TTL' => 37, |
143
|
|
|
|
|
|
|
'DHO_TCP_KEEPALIVE_INTERVAL' => 38, |
144
|
|
|
|
|
|
|
'DHO_TCP_KEEPALIVE_GARBAGE' => 39, |
145
|
|
|
|
|
|
|
'DHO_NIS_DOMAIN' => 40, |
146
|
|
|
|
|
|
|
'DHO_NIS_SERVERS' => 41, |
147
|
|
|
|
|
|
|
'DHO_NTP_SERVERS' => 42, |
148
|
|
|
|
|
|
|
'DHO_VENDOR_ENCAPSULATED_OPTIONS' => 43, |
149
|
|
|
|
|
|
|
'DHO_NETBIOS_NAME_SERVERS' => 44, |
150
|
|
|
|
|
|
|
'DHO_NETBIOS_DD_SERVER' => 45, |
151
|
|
|
|
|
|
|
'DHO_NETBIOS_NODE_TYPE' => 46, |
152
|
|
|
|
|
|
|
'DHO_NETBIOS_SCOPE' => 47, |
153
|
|
|
|
|
|
|
'DHO_FONT_SERVERS' => 48, |
154
|
|
|
|
|
|
|
'DHO_X_DISPLAY_MANAGER' => 49, |
155
|
|
|
|
|
|
|
'DHO_DHCP_REQUESTED_ADDRESS' => 50, |
156
|
|
|
|
|
|
|
'DHO_DHCP_LEASE_TIME' => 51, |
157
|
|
|
|
|
|
|
'DHO_DHCP_OPTION_OVERLOAD' => 52, |
158
|
|
|
|
|
|
|
'DHO_DHCP_MESSAGE_TYPE' => 53, |
159
|
|
|
|
|
|
|
'DHO_DHCP_SERVER_IDENTIFIER' => 54, |
160
|
|
|
|
|
|
|
'DHO_DHCP_PARAMETER_REQUEST_LIST' => 55, |
161
|
|
|
|
|
|
|
'DHO_DHCP_MESSAGE' => 56, |
162
|
|
|
|
|
|
|
'DHO_DHCP_MAX_MESSAGE_SIZE' => 57, |
163
|
|
|
|
|
|
|
'DHO_DHCP_RENEWAL_TIME' => 58, |
164
|
|
|
|
|
|
|
'DHO_DHCP_REBINDING_TIME' => 59, |
165
|
|
|
|
|
|
|
'DHO_VENDOR_CLASS_IDENTIFIER' => 60, |
166
|
|
|
|
|
|
|
'DHO_DHCP_CLIENT_IDENTIFIER' => 61, |
167
|
|
|
|
|
|
|
'DHO_NWIP_DOMAIN_NAME' => 62, |
168
|
|
|
|
|
|
|
'DHO_NWIP_SUBOPTIONS' => 63, |
169
|
|
|
|
|
|
|
'DHO_NISV3_DOMAIN' => 64, |
170
|
|
|
|
|
|
|
'DHO_NISV3_SERVER' => 65, |
171
|
|
|
|
|
|
|
'DHO_TFTP_SERVER' => 66, # actually named 'server name' by IANA |
172
|
|
|
|
|
|
|
'DHO_BOOTFILE' => 67, |
173
|
|
|
|
|
|
|
'DHO_MOBILE_IP_HOME_AGENT' => 68, |
174
|
|
|
|
|
|
|
'DHO_SMTP_SERVER' => 69, |
175
|
|
|
|
|
|
|
'DHO_POP3_SERVER' => 70, |
176
|
|
|
|
|
|
|
'DHO_NNTP_SERVER' => 71, |
177
|
|
|
|
|
|
|
'DHO_WWW_SERVER' => 72, |
178
|
|
|
|
|
|
|
'DHO_FINGER_SERVER' => 73, |
179
|
|
|
|
|
|
|
'DHO_IRC_SERVER' => 74, |
180
|
|
|
|
|
|
|
'DHO_STREETTALK_SERVER' => 75, |
181
|
|
|
|
|
|
|
'DHO_STDA_SERVER' => 76, |
182
|
|
|
|
|
|
|
'DHO_USER_CLASS' => 77, |
183
|
|
|
|
|
|
|
'DHO_DIRECTORY_AGENT' => 78, |
184
|
|
|
|
|
|
|
'DHO_SERVICE_SCOPE' => 79, |
185
|
|
|
|
|
|
|
'DHO_RAPID_COMMIT' => 80, |
186
|
|
|
|
|
|
|
'DHO_FQDN' => 81, |
187
|
|
|
|
|
|
|
'DHO_DHCP_AGENT_OPTIONS' => 82, |
188
|
|
|
|
|
|
|
'DHO_ISNS' => 83, |
189
|
|
|
|
|
|
|
'DHO_NDS_SERVERS' => 85, |
190
|
|
|
|
|
|
|
'DHO_NDS_TREE_NAME' => 86, |
191
|
|
|
|
|
|
|
'DHO_NDS_CONTEXT' => 87, |
192
|
|
|
|
|
|
|
'DHO_BCMCS_CONTROLLER_DOMAIN_NAME_LIST' => 88, |
193
|
|
|
|
|
|
|
'DHO_BCMCS_CONTROLLER_IPV4_ADDRESS' => 89, |
194
|
|
|
|
|
|
|
'DHO_AUTHENTICATION' => 90, |
195
|
|
|
|
|
|
|
'DHO_CLIENT_LAST_TRANSACTION_TIME' => 91, |
196
|
|
|
|
|
|
|
'DHO_ASSOCIATED_IP' => 92, |
197
|
|
|
|
|
|
|
'DHO_CLIENT_SYSTEM' => 93, |
198
|
|
|
|
|
|
|
'DHO_CLIENT_NDI' => 94, |
199
|
|
|
|
|
|
|
'DHO_LDAP' => 95, |
200
|
|
|
|
|
|
|
'DHO_UUID_GUID' => 97, |
201
|
|
|
|
|
|
|
'DHO_USER_AUTHENTICATION_PROTOCOL' => 98, |
202
|
|
|
|
|
|
|
'DHO_GEOCONF_CIVIC' => 99, |
203
|
|
|
|
|
|
|
'DHO_PCODE' => 100, |
204
|
|
|
|
|
|
|
'DHO_TCODE' => 101, |
205
|
|
|
|
|
|
|
'DHO_NETINFO_ADDRESS' => 112, |
206
|
|
|
|
|
|
|
'DHO_NETINFO_TAG' => 113, |
207
|
|
|
|
|
|
|
'DHO_URL' => 114, |
208
|
|
|
|
|
|
|
'DHO_AUTO_CONFIGURE' => 116, |
209
|
|
|
|
|
|
|
'DHO_NAME_SERVICE_SEARCH' => 117, |
210
|
|
|
|
|
|
|
'DHO_SUBNET_SELECTION' => 118, |
211
|
|
|
|
|
|
|
'DHO_DOMAIN_SEARCH' => 119, |
212
|
|
|
|
|
|
|
'DHO_SIP_SERVERS' => 120, |
213
|
|
|
|
|
|
|
'DHO_CLASSLESS_STATIC_ROUTE' => 121, |
214
|
|
|
|
|
|
|
'DHO_CCC' => 122, |
215
|
|
|
|
|
|
|
'DHO_GEOCONF' => 123, |
216
|
|
|
|
|
|
|
'DHO_VI_VENDOR_CLASS' => 124, |
217
|
|
|
|
|
|
|
'DHO_VI_VENDOR_SPECIFIC_INFOMATION' => 125, |
218
|
|
|
|
|
|
|
'DHO_DOCSIS_FULL_SECURITY_SERVER_ADDRESS' => 128, |
219
|
|
|
|
|
|
|
'DHO_TFTP_SERVER_IPPHONE' => 128, |
220
|
|
|
|
|
|
|
'DHO_ETHERBOOT_SIGNATURE' => 128, |
221
|
|
|
|
|
|
|
'DHO_CALL_SERVER_ADDRESS' => 129, |
222
|
|
|
|
|
|
|
'DHO_KERNEL_OPTIONS' => 129, |
223
|
|
|
|
|
|
|
'DHO_DISCRIMINATION_STRING' => 130, |
224
|
|
|
|
|
|
|
'DHO_ETHERNET_INTERFACE' => 130, |
225
|
|
|
|
|
|
|
'DHO_REMOTE_STATISTICS_SERVER' => 131, |
226
|
|
|
|
|
|
|
'DHO_VLAN_ID' => 132, |
227
|
|
|
|
|
|
|
'DHO_L2_PRIORITY' => 133, |
228
|
|
|
|
|
|
|
'DHO_DSCP' => 134, |
229
|
|
|
|
|
|
|
'DHO_PXE' => 135, |
230
|
|
|
|
|
|
|
'DHO_HTTP_PROXY_FORPHONES' => 135, |
231
|
|
|
|
|
|
|
|
232
|
|
|
|
|
|
|
'DHO_OPTION_PANA_AGENT' => 136, |
233
|
|
|
|
|
|
|
'DHO_OPTION_PANA_V4_LOST' => 137, |
234
|
|
|
|
|
|
|
'DHO_OPTION_CAPWAP_AC_V4' => 138, |
235
|
|
|
|
|
|
|
'DHO_OPTION_IPV4_ADDRESS_MOS' => 139, |
236
|
|
|
|
|
|
|
'DHO_OPTION_IPV4_FQDN_MOS' => 140, |
237
|
|
|
|
|
|
|
'DHO_SIP_UA_CONFIGURATION_SERVICE_DOMAINS' => 141, |
238
|
|
|
|
|
|
|
'DHO_GRUB_CONF_PATH' => 150, |
239
|
|
|
|
|
|
|
'DHO_TFTP_SERVER_ADDRESS' => 150, # not to be confused with 66 |
240
|
|
|
|
|
|
|
'DHO_ETHERBOOT' => 150, |
241
|
|
|
|
|
|
|
'DHO_IP_TELEPHONE' => 176, |
242
|
|
|
|
|
|
|
'DHO_PACKETCABLE_DEPRECATED' => 177, |
243
|
|
|
|
|
|
|
'DHO_ETHERBOOT_TENTATIVE' => 177, |
244
|
|
|
|
|
|
|
'DHO_PXELINUX_MAGIC' => 208, |
245
|
|
|
|
|
|
|
'DHO_CONFIGURATION_FILE' => 209, |
246
|
|
|
|
|
|
|
'DHO_PATH_PREFIX' => 210, |
247
|
|
|
|
|
|
|
'DHO_REBOOT_TIME' => 211, |
248
|
|
|
|
|
|
|
'DHO_OPTION_6RD' => 212, |
249
|
|
|
|
|
|
|
'DHO_OPTION_V4_ACCESS_DOMAIN' => 213, |
250
|
|
|
|
|
|
|
'DHO_SUBNET_ALLOCATION' => 220, |
251
|
|
|
|
|
|
|
'DHO_VIRTUAL_SUBNET' => 221, |
252
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
'DHO_CLASSLESS_STATIC_ROUTE_MS' => 249, |
254
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
'DHO_END' => 255 |
256
|
|
|
|
|
|
|
); |
257
|
|
|
|
|
|
|
|
258
|
|
|
|
|
|
|
# Type 53 codes... |
259
|
13
|
|
|
|
|
1597
|
%DHCP_MESSAGE = ( |
260
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
# RFC2132 |
262
|
|
|
|
|
|
|
'DHCPDISCOVER' => 1, |
263
|
|
|
|
|
|
|
'DHCPOFFER' => 2, |
264
|
|
|
|
|
|
|
'DHCPREQUEST' => 3, |
265
|
|
|
|
|
|
|
'DHCPDECLINE' => 4, |
266
|
|
|
|
|
|
|
'DHCPACK' => 5, |
267
|
|
|
|
|
|
|
'DHCPNAK' => 6, |
268
|
|
|
|
|
|
|
'DHCPRELEASE' => 7, |
269
|
|
|
|
|
|
|
'DHCPINFORM' => 8, |
270
|
|
|
|
|
|
|
'DHCPFORCERENEW' => 9, |
271
|
|
|
|
|
|
|
|
272
|
|
|
|
|
|
|
# RFC4388 |
273
|
|
|
|
|
|
|
'DHCPLEASEQUERY' => 10 |
274
|
|
|
|
|
|
|
, # This is now ratified in RFC4388. If you have an old crappy CMTS you might need to change it with 13 |
275
|
|
|
|
|
|
|
'DHCPLEASEUNASSIGNED' => 11, |
276
|
|
|
|
|
|
|
'DHCPLEASEUNKNOWN' => 12, |
277
|
|
|
|
|
|
|
'DHCPLEASEACTIVE' => 13, |
278
|
|
|
|
|
|
|
|
279
|
|
|
|
|
|
|
); |
280
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
# Type 63 sub-option codes... |
282
|
13
|
|
|
|
|
68
|
%NWIP_CODES = ( |
283
|
|
|
|
|
|
|
'NWIP_DOES_NOT_EXIST' => 1, |
284
|
|
|
|
|
|
|
'NWIP_EXIST_IN_OPTIONS_AREA' => 2, |
285
|
|
|
|
|
|
|
'NWIP_EXIST_IN_SNAME_FILE' => 3, |
286
|
|
|
|
|
|
|
'NWIP_EXIST_BUT_TOO_BIG' => 4, |
287
|
|
|
|
|
|
|
'NWIP_NSQ_BROADCAST' => 5, |
288
|
|
|
|
|
|
|
'NWIP_PREFERRED_DSS' => 6, |
289
|
|
|
|
|
|
|
'NWIP_NEAREST_NWIP_SERVER' => 7, |
290
|
|
|
|
|
|
|
'NWIP_AUTORETRIES' => 8, |
291
|
|
|
|
|
|
|
'NWIP_AUTORETRY_SECS' => 9, |
292
|
|
|
|
|
|
|
'NWIP_1_1' => 10, |
293
|
|
|
|
|
|
|
'NWIP_PRIMARY_DSS' => 11, |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
#'Unassigned' => '12-255' |
296
|
|
|
|
|
|
|
); |
297
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
# Type 122 sub option codes |
299
|
13
|
|
|
|
|
355
|
%CCC_CODES = ( |
300
|
|
|
|
|
|
|
'CCC_PRIMARY_DHCP_SERVER' => 1, |
301
|
|
|
|
|
|
|
'CCC_SECONDARY_DHCP_SERVER' => 2, |
302
|
|
|
|
|
|
|
'CCC_PROVISIONING_SERVER' => 3, |
303
|
|
|
|
|
|
|
'CCC_AS_REQ_AS_REP_BACKOFFRETRY' => 4, |
304
|
|
|
|
|
|
|
'CCC_AP_REQ_AS_REP_BACKOFFRETRY' => 5, |
305
|
|
|
|
|
|
|
'CCC_KERBEROS_REALM' => 6, |
306
|
|
|
|
|
|
|
'CCC_TICKET_SERVER_UTILIZATION' => 7, |
307
|
|
|
|
|
|
|
'CCC_PROVISIONING_TIMER' => 8, |
308
|
|
|
|
|
|
|
'CCC_SECURITY_TICKET_CONTROL' => 9, |
309
|
|
|
|
|
|
|
'CCC_KDC_SERVER' => 10, |
310
|
|
|
|
|
|
|
); |
311
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
# Type 123 sub option codes (there are more, but im not sure how to deal with them) |
313
|
13
|
|
|
|
|
24
|
%GEOCONF_CODES = ( |
314
|
|
|
|
|
|
|
'GEO_METERS' => 1, |
315
|
|
|
|
|
|
|
'GEO_FLOORS' => 2, |
316
|
|
|
|
|
|
|
); |
317
|
|
|
|
|
|
|
|
318
|
|
|
|
|
|
|
# Type 82 sub option codes |
319
|
13
|
|
|
|
|
649
|
%RELAYAGENT_CODES = ( |
320
|
|
|
|
|
|
|
'RAI_CIRCUIT_ID' => 1, |
321
|
|
|
|
|
|
|
'RAI_REMOTE_ID' => 2, |
322
|
|
|
|
|
|
|
'RAI_AGENT_ID' => 3, |
323
|
|
|
|
|
|
|
'RAI_DOCSIS_CLASS' => 4, |
324
|
|
|
|
|
|
|
'RAI_LINK_SELECTION' => 5, |
325
|
|
|
|
|
|
|
'RAI_SUBSCRIBER_ID' => 6, |
326
|
|
|
|
|
|
|
'RAI_RADIUS_ATTRIBUTES' => 7, |
327
|
|
|
|
|
|
|
'RAI_AUTHENTICATION' => 8, |
328
|
|
|
|
|
|
|
'RAI_VENDOR_INFO' => 9, |
329
|
|
|
|
|
|
|
'RAI_FLAGS' => 10, |
330
|
|
|
|
|
|
|
'RAI_SERVER_ID_OVERRIDE' => 11, |
331
|
|
|
|
|
|
|
'RAI_DHCPV4_VIRTUAL_SUBNET_SELECTION' => 151, # rfc 6607 |
332
|
|
|
|
|
|
|
'RAI_DHCPV4_VIRTUAL_SUBNET_SELECTION_CONTROL' => 152, # rfc 6607 |
333
|
|
|
|
|
|
|
); |
334
|
|
|
|
|
|
|
} |
335
|
|
|
|
|
|
|
|
336
|
13
|
|
|
13
|
|
51
|
use constant \%DHO_CODES; |
|
13
|
|
|
|
|
10
|
|
|
13
|
|
|
|
|
13189
|
|
337
|
|
|
|
|
|
|
%REV_DHO_CODES = reverse %DHO_CODES; |
338
|
|
|
|
|
|
|
|
339
|
13
|
|
|
13
|
|
51
|
use constant \%DHCP_MESSAGE; |
|
13
|
|
|
|
|
12
|
|
|
13
|
|
|
|
|
1451
|
|
340
|
|
|
|
|
|
|
%REV_DHCP_MESSAGE = reverse %DHCP_MESSAGE; |
341
|
|
|
|
|
|
|
|
342
|
13
|
|
|
13
|
|
49
|
use constant \%BOOTP_CODES; |
|
13
|
|
|
|
|
12
|
|
|
13
|
|
|
|
|
634
|
|
343
|
|
|
|
|
|
|
%REV_BOOTP_CODES = reverse %BOOTP_CODES; # for reverse lookup |
344
|
|
|
|
|
|
|
|
345
|
13
|
|
|
13
|
|
42
|
use constant \%HTYPE_CODES; |
|
13
|
|
|
|
|
8
|
|
|
13
|
|
|
|
|
722
|
|
346
|
|
|
|
|
|
|
%REV_HTYPE_CODES = reverse %HTYPE_CODES; # for reverse lookup |
347
|
|
|
|
|
|
|
|
348
|
13
|
|
|
13
|
|
39
|
use constant \%NWIP_CODES; |
|
13
|
|
|
|
|
13
|
|
|
13
|
|
|
|
|
1283
|
|
349
|
|
|
|
|
|
|
%REV_NWIP_CODES = reverse %NWIP_CODES; |
350
|
|
|
|
|
|
|
|
351
|
13
|
|
|
13
|
|
40
|
use constant \%CCC_CODES; |
|
13
|
|
|
|
|
12
|
|
|
13
|
|
|
|
|
1226
|
|
352
|
|
|
|
|
|
|
%REV_CCC_CODES = reverse %CCC_CODES; |
353
|
|
|
|
|
|
|
|
354
|
13
|
|
|
13
|
|
41
|
use constant \%GEOCONF_CODES; |
|
13
|
|
|
|
|
11
|
|
|
13
|
|
|
|
|
627
|
|
355
|
|
|
|
|
|
|
%REV_GEOCONF_CODES = reverse %GEOCONF_CODES; |
356
|
|
|
|
|
|
|
|
357
|
13
|
|
|
13
|
|
40
|
use constant \%RELAYAGENT_CODES; |
|
13
|
|
|
|
|
11
|
|
|
13
|
|
|
|
|
1457
|
|
358
|
|
|
|
|
|
|
%REV_RELAYAGENT_CODES = reverse %RELAYAGENT_CODES; |
359
|
|
|
|
|
|
|
|
360
|
13
|
|
|
13
|
|
50
|
use constant \%RELAYAGENT_FORMATS; |
|
13
|
|
|
|
|
11
|
|
|
13
|
|
|
|
|
4934
|
|
361
|
|
|
|
|
|
|
%REV_RELAYAGENT_FORMATS = reverse %RELAYAGENT_FORMATS; |
362
|
|
|
|
|
|
|
|
363
|
|
|
|
|
|
|
# |
364
|
|
|
|
|
|
|
# Format of DHCP options : for pretty-printing |
365
|
|
|
|
|
|
|
# void : no parameter |
366
|
|
|
|
|
|
|
# inet : 4 bytes IP address |
367
|
|
|
|
|
|
|
# inets : list of 4 bytes IP addresses |
368
|
|
|
|
|
|
|
# inets2 : list of 4 bytes IP addresses pairs (multiple of 8 bytes) |
369
|
|
|
|
|
|
|
# int : 4 bytes integer |
370
|
|
|
|
|
|
|
# short : 2 bytes integer |
371
|
|
|
|
|
|
|
# shorts : list of 2 bytes integers |
372
|
|
|
|
|
|
|
# byte : 1 byte int |
373
|
|
|
|
|
|
|
# bytes : list of 1 byte code |
374
|
|
|
|
|
|
|
# string : char* (just kidding) |
375
|
|
|
|
|
|
|
# relays : DHCP sub-options (rfc 3046) |
376
|
|
|
|
|
|
|
# ids : client identifier : byte (htype) + string (chaddr) |
377
|
|
|
|
|
|
|
# csr : classless static routes (rfc 3442) |
378
|
|
|
|
|
|
|
# suboptions : hex encoded sub options |
379
|
|
|
|
|
|
|
# |
380
|
|
|
|
|
|
|
our %DHO_FORMATS = ( |
381
|
|
|
|
|
|
|
DHO_PAD() => 'void', |
382
|
|
|
|
|
|
|
DHO_SUBNET_MASK() => 'inet', |
383
|
|
|
|
|
|
|
DHO_TIME_OFFSET() => 'int', |
384
|
|
|
|
|
|
|
DHO_ROUTERS() => 'inets', |
385
|
|
|
|
|
|
|
DHO_TIME_SERVERS() => 'inets', |
386
|
|
|
|
|
|
|
DHO_NAME_SERVERS() => 'inets', |
387
|
|
|
|
|
|
|
DHO_DOMAIN_NAME_SERVERS() => 'inets', |
388
|
|
|
|
|
|
|
DHO_LOG_SERVERS() => 'inets', |
389
|
|
|
|
|
|
|
DHO_COOKIE_SERVERS() => 'inets', |
390
|
|
|
|
|
|
|
DHO_LPR_SERVERS() => 'inets', |
391
|
|
|
|
|
|
|
DHO_IMPRESS_SERVERS() => 'inets', |
392
|
|
|
|
|
|
|
DHO_RESOURCE_LOCATION_SERVERS() => 'inets', |
393
|
|
|
|
|
|
|
DHO_HOST_NAME() => 'string', |
394
|
|
|
|
|
|
|
DHO_BOOT_SIZE() => 'short', |
395
|
|
|
|
|
|
|
DHO_MERIT_DUMP() => 'string', |
396
|
|
|
|
|
|
|
DHO_DOMAIN_NAME() => 'string', |
397
|
|
|
|
|
|
|
DHO_SWAP_SERVER() => 'inet', |
398
|
|
|
|
|
|
|
DHO_ROOT_PATH() => 'string', |
399
|
|
|
|
|
|
|
DHO_EXTENSIONS_PATH() => 'string', |
400
|
|
|
|
|
|
|
DHO_IP_FORWARDING() => 'byte', |
401
|
|
|
|
|
|
|
DHO_NON_LOCAL_SOURCE_ROUTING() => 'byte', |
402
|
|
|
|
|
|
|
DHO_POLICY_FILTER() => 'inets2', |
403
|
|
|
|
|
|
|
DHO_MAX_DGRAM_REASSEMBLY() => 'short', |
404
|
|
|
|
|
|
|
DHO_DEFAULT_IP_TTL() => 'byte', |
405
|
|
|
|
|
|
|
DHO_PATH_MTU_AGING_TIMEOUT() => 'int', |
406
|
|
|
|
|
|
|
DHO_PATH_MTU_PLATEAU_TABLE() => 'shorts', |
407
|
|
|
|
|
|
|
DHO_INTERFACE_MTU() => 'short', |
408
|
|
|
|
|
|
|
DHO_ALL_SUBNETS_LOCAL() => 'byte', |
409
|
|
|
|
|
|
|
DHO_BROADCAST_ADDRESS() => 'inet', |
410
|
|
|
|
|
|
|
DHO_PERFORM_MASK_DISCOVERY() => 'byte', |
411
|
|
|
|
|
|
|
DHO_MASK_SUPPLIER() => 'byte', |
412
|
|
|
|
|
|
|
DHO_ROUTER_DISCOVERY() => 'byte', |
413
|
|
|
|
|
|
|
DHO_ROUTER_SOLICITATION_ADDRESS() => 'inet', |
414
|
|
|
|
|
|
|
DHO_STATIC_ROUTES() => 'inets2', |
415
|
|
|
|
|
|
|
DHO_TRAILER_ENCAPSULATION() => 'byte', |
416
|
|
|
|
|
|
|
DHO_ARP_CACHE_TIMEOUT() => 'int', |
417
|
|
|
|
|
|
|
DHO_IEEE802_3_ENCAPSULATION() => 'byte', |
418
|
|
|
|
|
|
|
DHO_DEFAULT_TCP_TTL() => 'byte', |
419
|
|
|
|
|
|
|
DHO_TCP_KEEPALIVE_INTERVAL() => 'int', |
420
|
|
|
|
|
|
|
DHO_TCP_KEEPALIVE_GARBAGE() => 'byte', |
421
|
|
|
|
|
|
|
DHO_NIS_DOMAIN() => 'string', |
422
|
|
|
|
|
|
|
DHO_NIS_SERVERS() => 'inets', |
423
|
|
|
|
|
|
|
DHO_NTP_SERVERS() => 'inets', |
424
|
|
|
|
|
|
|
|
425
|
|
|
|
|
|
|
DHO_VENDOR_ENCAPSULATED_OPTIONS() => 'suboptions', |
426
|
|
|
|
|
|
|
DHO_NETBIOS_NAME_SERVERS() => 'inets', |
427
|
|
|
|
|
|
|
DHO_NETBIOS_DD_SERVER() => 'inets', |
428
|
|
|
|
|
|
|
DHO_NETBIOS_NODE_TYPE() => 'byte', |
429
|
|
|
|
|
|
|
DHO_NETBIOS_SCOPE() => 'string', |
430
|
|
|
|
|
|
|
DHO_FONT_SERVERS() => 'inets', |
431
|
|
|
|
|
|
|
DHO_X_DISPLAY_MANAGER() => 'inets', |
432
|
|
|
|
|
|
|
DHO_DHCP_REQUESTED_ADDRESS() => 'inet', |
433
|
|
|
|
|
|
|
DHO_DHCP_LEASE_TIME() => 'int', |
434
|
|
|
|
|
|
|
DHO_DHCP_OPTION_OVERLOAD() => 'byte', |
435
|
|
|
|
|
|
|
DHO_DHCP_MESSAGE_TYPE() => 'byte', |
436
|
|
|
|
|
|
|
DHO_DHCP_SERVER_IDENTIFIER() => 'inet', |
437
|
|
|
|
|
|
|
DHO_DHCP_PARAMETER_REQUEST_LIST() => 'bytes', |
438
|
|
|
|
|
|
|
DHO_DHCP_MESSAGE() => 'string', |
439
|
|
|
|
|
|
|
DHO_DHCP_MAX_MESSAGE_SIZE() => 'short', |
440
|
|
|
|
|
|
|
DHO_DHCP_RENEWAL_TIME() => 'int', |
441
|
|
|
|
|
|
|
DHO_DHCP_REBINDING_TIME() => 'int', |
442
|
|
|
|
|
|
|
DHO_VENDOR_CLASS_IDENTIFIER() => 'string', |
443
|
|
|
|
|
|
|
|
444
|
|
|
|
|
|
|
DHO_DHCP_CLIENT_IDENTIFIER() => 'clientid', |
445
|
|
|
|
|
|
|
DHO_NWIP_DOMAIN_NAME() => 'string', # rfc 2242 |
446
|
|
|
|
|
|
|
|
447
|
|
|
|
|
|
|
DHO_NWIP_SUBOPTIONS() => 'suboptions', # rfc 2242 |
448
|
|
|
|
|
|
|
DHO_NISV3_DOMAIN() => 'string', |
449
|
|
|
|
|
|
|
DHO_NISV3_SERVER() => 'string', |
450
|
|
|
|
|
|
|
DHO_TFTP_SERVER() => 'string', |
451
|
|
|
|
|
|
|
DHO_BOOTFILE() => 'string', # 67 |
452
|
|
|
|
|
|
|
DHO_MOBILE_IP_HOME_AGENT() => 'inets', |
453
|
|
|
|
|
|
|
DHO_SMTP_SERVER() => 'inets', |
454
|
|
|
|
|
|
|
DHO_POP3_SERVER() => 'inets', |
455
|
|
|
|
|
|
|
DHO_NNTP_SERVER() => 'inets', |
456
|
|
|
|
|
|
|
DHO_WWW_SERVER() => 'inets', |
457
|
|
|
|
|
|
|
DHO_FINGER_SERVER() => 'inets', |
458
|
|
|
|
|
|
|
DHO_IRC_SERVER() => 'inets', |
459
|
|
|
|
|
|
|
DHO_STREETTALK_SERVER() => 'inets', |
460
|
|
|
|
|
|
|
DHO_STDA_SERVER() => 'inets', |
461
|
|
|
|
|
|
|
|
462
|
|
|
|
|
|
|
DHO_SIP_SERVERS() => 'sipserv', |
463
|
|
|
|
|
|
|
DHO_CLASSLESS_STATIC_ROUTE() => 'csr', # rfc 3442 |
464
|
|
|
|
|
|
|
DHO_CCC => 'suboptions', # 122 |
465
|
|
|
|
|
|
|
|
466
|
|
|
|
|
|
|
# While not perfect, usage is primarily as a string. iPXE is |
467
|
|
|
|
|
|
|
# a common use case for this option. |
468
|
|
|
|
|
|
|
DHO_USER_CLASS() => 'string', # rfc 3004 |
469
|
|
|
|
|
|
|
# DHO_FQDN() => '', # draft-ietf-dhc-fqdn-option-10.txt |
470
|
|
|
|
|
|
|
DHO_DHCP_AGENT_OPTIONS() => 'suboptions', # rfc 3046 |
471
|
|
|
|
|
|
|
# DHO_DHCP_AGENT_OPTIONS() => 'string', # rfc 3046 |
472
|
|
|
|
|
|
|
DHO_NDS_SERVERS() => 'inets', # rfc 2241 |
473
|
|
|
|
|
|
|
DHO_NDS_TREE_NAME() => 'string', # rfc 2241 |
474
|
|
|
|
|
|
|
DHO_USER_AUTHENTICATION_PROTOCOL() => 'string', # rfc 2485 |
475
|
|
|
|
|
|
|
DHO_AUTO_CONFIGURE() => 'byte', # rfc 2563 |
476
|
|
|
|
|
|
|
DHO_NAME_SERVICE_SEARCH() => 'shorts', # rfc 2937 |
477
|
|
|
|
|
|
|
DHO_SUBNET_SELECTION() => 'inet', # rfc 3011 |
478
|
|
|
|
|
|
|
|
479
|
|
|
|
|
|
|
DHO_CLASSLESS_STATIC_ROUTE_MS() => 'csr', |
480
|
|
|
|
|
|
|
); |
481
|
|
|
|
|
|
|
|
482
|
|
|
|
|
|
|
%RELAYAGENT_FORMATS = ( |
483
|
|
|
|
|
|
|
RAI_CIRCUIT_ID() => 'hexa', |
484
|
|
|
|
|
|
|
RAI_REMOTE_ID() => 'hexa', |
485
|
|
|
|
|
|
|
# RAI_AGENT_ID() => 'hexa', |
486
|
|
|
|
|
|
|
# RAI_DOCSIS_CLASS() => 'hexa', |
487
|
|
|
|
|
|
|
# RAI_LINK_SELECTION() => 'hexa', |
488
|
|
|
|
|
|
|
# RAI_SUBSCRIBER_ID() => 'hexa', |
489
|
|
|
|
|
|
|
# RAI_RADIUS_ATTRIBUTES() => 'hexa', |
490
|
|
|
|
|
|
|
# RAI_AUTHENTICATION() => 'hexa', |
491
|
|
|
|
|
|
|
RAI_VENDOR_INFO() => 'hexa', |
492
|
|
|
|
|
|
|
# RAI_FLAGS() => 'hexa', |
493
|
|
|
|
|
|
|
# RAI_SERVER_ID_OVERRIDE() => 'hexa', |
494
|
|
|
|
|
|
|
# RAI_DHCPV4_VIRTUAL_SUBNET_SELECTION() => 'hexa', |
495
|
|
|
|
|
|
|
# RAI_DHCPV4_VIRTUAL_SUBNET_SELECTION_CONTROL() => 'hexa', |
496
|
|
|
|
|
|
|
), |
497
|
|
|
|
|
|
|
|
498
|
|
|
|
|
|
|
our %SUBOPTION_FORMATS = ( |
499
|
|
|
|
|
|
|
$DHO_CODES{'DHO_DHCP_AGENT_OPTIONS'} => \%RELAYAGENT_FORMATS, |
500
|
|
|
|
|
|
|
); |
501
|
|
|
|
|
|
|
|
502
|
|
|
|
|
|
|
our %REV_SUBOPTION_FORMATS = ( |
503
|
|
|
|
|
|
|
$DHO_CODES{'DHO_DHCP_AGENT_OPTIONS'} => \%REV_RELAYAGENT_FORMATS, |
504
|
|
|
|
|
|
|
); |
505
|
|
|
|
|
|
|
|
506
|
|
|
|
|
|
|
# Links option codes with their suboption values |
507
|
|
|
|
|
|
|
%SUBOPTION_CODES = ( |
508
|
|
|
|
|
|
|
$DHO_CODES{'DHO_NWIP_SUBOPTIONS'} => \%NWIP_CODES, # option 63 |
509
|
|
|
|
|
|
|
$DHO_CODES{'DHO_DHCP_AGENT_OPTIONS'} => \%RELAYAGENT_CODES, # option 82 |
510
|
|
|
|
|
|
|
$DHO_CODES{'DHO_CCC'} => \%CCC_CODES, # option 122 |
511
|
|
|
|
|
|
|
$DHO_CODES{'DHO_GEOCONF'} => \%GEOCONF_CODES, # option 123 |
512
|
|
|
|
|
|
|
); |
513
|
|
|
|
|
|
|
|
514
|
|
|
|
|
|
|
# Links option codes with their reverse suboption values |
515
|
|
|
|
|
|
|
%REV_SUBOPTION_CODES = ( |
516
|
|
|
|
|
|
|
$DHO_CODES{'DHO_NWIP_SUBOPTIONS'} => \%REV_NWIP_CODES, # option 63 |
517
|
|
|
|
|
|
|
$DHO_CODES{'DHO_DHCP_AGENT_OPTIONS'} => \%REV_RELAYAGENT_CODES, # option 82 |
518
|
|
|
|
|
|
|
$DHO_CODES{'DHO_CCC'} => \%REV_CCC_CODES, # option 122 |
519
|
|
|
|
|
|
|
$DHO_CODES{'DHO_GEOCONF'} => \%REV_GEOCONF_CODES, # option 123 |
520
|
|
|
|
|
|
|
); |
521
|
|
|
|
|
|
|
|
522
|
|
|
|
|
|
|
1; |
523
|
|
|
|
|
|
|
|
524
|
|
|
|
|
|
|
__END__ |