/[pxelator]/lib/Net/DHCP/Constants.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/Net/DHCP/Constants.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 526 - (hide annotations)
Mon Sep 13 19:37:13 2010 UTC (13 years, 7 months ago) by dpavlin
File size: 14202 byte(s)
added DHO_DHCP_CLIENT_IDENTIFIER
1 dpavlin 25 # Net::DHCP::Constants.pm
2     # Author: Stephan Hadinger
3    
4     package Net::DHCP::Constants;
5    
6     # standard module declaration
7     use 5.8.0;
8     use strict;
9     our (@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
10     use Exporter;
11 dpavlin 27 $VERSION = 0.67;
12 dpavlin 25 @ISA = qw(Exporter);
13    
14     @EXPORT = qw(MAGIC_COOKIE);
15    
16     # Constants
17     our (%DHO_CODES, %REV_DHO_CODES);
18     our (%DHCP_MESSAGE, %REV_DHCP_MESSAGE);
19     our (%BOOTP_CODES, %REV_BOOTP_CODES);
20     our (%HTYPE_CODES, %REV_HTYPE_CODES);
21    
22     %EXPORT_TAGS = (
23     dho_codes => [keys %DHO_CODES],
24     dhcp_message => [keys %DHCP_MESSAGE],
25     bootp_codes => [keys %BOOTP_CODES],
26     htype_codes => [keys %HTYPE_CODES],
27     dhcp_hashes => [ qw(
28     %DHO_CODES %REV_DHO_CODES %DHCP_MESSAGE %REV_DHCP_MESSAGE
29     %BOOTP_CODES %REV_BOOTP_CODES
30     %HTYPE_CODES %REV_HTYPE_CODES
31     )],
32     dhcp_other => [ qw(MAGIC_COOKIE DHCP_UDP_OVERHEAD DHCP_MAX_MTU BOOTP_MIN_LEN BOOTP_ABSOLUTE_MIN_LEN DHCP_MIN_LEN)]
33     );
34    
35     @EXPORT_OK = qw(
36     %DHO_CODES %REV_DHO_CODES %DHCP_MESSAGE %REV_DHCP_MESSAGE
37     %BOOTP_CODES %REV_BOOTP_CODES
38     %HTYPE_CODES %REV_HTYPE_CODES
39     %DHO_FORMATS
40     );
41     Exporter::export_tags('dho_codes');
42     Exporter::export_tags('dhcp_message');
43     Exporter::export_tags('bootp_codes');
44     Exporter::export_tags('htype_codes');
45     Exporter::export_ok_tags('dhcp_other');
46    
47     # MAGIC_COOKIE for DHCP (oterhwise it is BOOTP)
48     use constant MAGIC_COOKIE => "\x63\x82\x53\x63";
49    
50     use constant DHCP_UDP_OVERHEAD => (14 + 20 + 8); # Ethernet + IP + UDP
51     use constant DHCP_MAX_MTU => 1500;
52     use constant BOOTP_ABSOLUTE_MIN_LEN => 236;
53 dpavlin 27 use constant BOOTP_MIN_LEN => 271; # dpavlin - Linux bootp is smaller than 300
54 dpavlin 25 use constant DHCP_MIN_LEN => 548;
55    
56     BEGIN {
57     %BOOTP_CODES = (
58     'BOOTREQUEST' => 1,
59     'BOOTREPLY' => 2
60     );
61    
62     %HTYPE_CODES = (
63     'HTYPE_ETHER' => 1,
64     'HTYPE_IEEE802' => 6,
65     'HTYPE_FDDI' => 8
66     );
67    
68     %DHO_CODES = ( # rfc 2132
69     'DHO_PAD' => 0,
70     'DHO_SUBNET_MASK' => 1,
71     'DHO_TIME_OFFSET' => 2,
72     'DHO_ROUTERS' => 3,
73     'DHO_TIME_SERVERS' => 4,
74     'DHO_NAME_SERVERS' => 5,
75     'DHO_DOMAIN_NAME_SERVERS' => 6,
76     'DHO_LOG_SERVERS' => 7,
77     'DHO_COOKIE_SERVERS' => 8,
78     'DHO_LPR_SERVERS' => 9,
79     'DHO_IMPRESS_SERVERS' => 10,
80     'DHO_RESOURCE_LOCATION_SERVERS' => 11,
81     'DHO_HOST_NAME' => 12,
82     'DHO_BOOT_SIZE' => 13,
83     'DHO_MERIT_DUMP' => 14,
84     'DHO_DOMAIN_NAME' => 15,
85     'DHO_SWAP_SERVER' => 16,
86     'DHO_ROOT_PATH' => 17,
87     'DHO_EXTENSIONS_PATH' => 18,
88     'DHO_IP_FORWARDING' => 19,
89     'DHO_NON_LOCAL_SOURCE_ROUTING' => 20,
90     'DHO_POLICY_FILTER' => 21,
91     'DHO_MAX_DGRAM_REASSEMBLY' => 22,
92     'DHO_DEFAULT_IP_TTL' => 23,
93     'DHO_PATH_MTU_AGING_TIMEOUT' => 24,
94     'DHO_PATH_MTU_PLATEAU_TABLE' => 25,
95     'DHO_INTERFACE_MTU' => 26,
96     'DHO_ALL_SUBNETS_LOCAL' => 27,
97     'DHO_BROADCAST_ADDRESS' => 28,
98     'DHO_PERFORM_MASK_DISCOVERY' => 29,
99     'DHO_MASK_SUPPLIER' => 30,
100     'DHO_ROUTER_DISCOVERY' => 31,
101     'DHO_ROUTER_SOLICITATION_ADDRESS' => 32,
102     'DHO_STATIC_ROUTES' => 33,
103     'DHO_TRAILER_ENCAPSULATION' => 34,
104     'DHO_ARP_CACHE_TIMEOUT' => 35,
105     'DHO_IEEE802_3_ENCAPSULATION' => 36,
106     'DHO_DEFAULT_TCP_TTL' => 37,
107     'DHO_TCP_KEEPALIVE_INTERVAL' => 38,
108     'DHO_TCP_KEEPALIVE_GARBAGE' => 39,
109     'DHO_NIS_DOMAIN' => 40,
110     'DHO_NIS_SERVERS' => 41,
111     'DHO_NTP_SERVERS' => 42,
112     'DHO_VENDOR_ENCAPSULATED_OPTIONS' => 43,
113     'DHO_NETBIOS_NAME_SERVERS' => 44,
114     'DHO_NETBIOS_DD_SERVER' => 45,
115     'DHO_NETBIOS_NODE_TYPE' => 46,
116     'DHO_NETBIOS_SCOPE' => 47,
117     'DHO_FONT_SERVERS' => 48,
118     'DHO_X_DISPLAY_MANAGER' => 49,
119     'DHO_DHCP_REQUESTED_ADDRESS' => 50,
120     'DHO_DHCP_LEASE_TIME' => 51,
121     'DHO_DHCP_OPTION_OVERLOAD' => 52,
122     'DHO_DHCP_MESSAGE_TYPE' => 53,
123     'DHO_DHCP_SERVER_IDENTIFIER' => 54,
124     'DHO_DHCP_PARAMETER_REQUEST_LIST' => 55,
125     'DHO_DHCP_MESSAGE' => 56,
126     'DHO_DHCP_MAX_MESSAGE_SIZE' => 57,
127     'DHO_DHCP_RENEWAL_TIME' => 58,
128     'DHO_DHCP_REBINDING_TIME' => 59,
129     'DHO_VENDOR_CLASS_IDENTIFIER' => 60,
130     'DHO_DHCP_CLIENT_IDENTIFIER' => 61,
131     'DHO_NWIP_DOMAIN_NAME' => 62,
132     'DHO_NWIP_SUBOPTIONS' => 63,
133     'DHO_NIS_DOMAIN' => 64,
134     'DHO_NIS_SERVER' => 65,
135     'DHO_TFTP_SERVER' => 66,
136     'DHO_BOOTFILE' => 67,
137     'DHO_MOBILE_IP_HOME_AGENT' => 68,
138     'DHO_SMTP_SERVER' => 69,
139     'DHO_POP3_SERVER' => 70,
140     'DHO_NNTP_SERVER' => 71,
141     'DHO_WWW_SERVER' => 72,
142     'DHO_FINGER_SERVER' => 73,
143     'DHO_IRC_SERVER' => 74,
144     'DHO_STREETTALK_SERVER' => 75,
145     'DHO_STDA_SERVER' => 76,
146     'DHO_USER_CLASS' => 77,
147     'DHO_FQDN' => 81,
148     'DHO_DHCP_AGENT_OPTIONS' => 82,
149     'DHO_NDS_SERVERS' => 85,
150     'DHO_NDS_TREE_NAME' => 86,
151     'DHO_USER_AUTHENTICATION_PROTOCOL' => 98,
152     'DHO_AUTO_CONFIGURE' => 116,
153     'DHO_NAME_SERVICE_SEARCH' => 117,
154     'DHO_SUBNET_SELECTION' => 118,
155 dpavlin 114
156     # http://tools.ietf.org/html/draft-ietf-dhc-pxelinux-03
157     'DHO_PXELINUX_MAGIC' => 208, # 0xF100747E
158     'DHO_PXELINUX_CONFIG_FILE' => 209,
159     'DHO_PXELINUX_PATH_PREFIX' => 210,
160     'DHO_PXELINUX_REBOOT_TIME' => 211, # default: 300 s
161    
162 dpavlin 25 'DHO_END' => 255
163     );
164    
165     %DHCP_MESSAGE = (
166     'DHCPDISCOVER' => 1,
167     'DHCPOFFER' => 2,
168     'DHCPREQUEST' => 3,
169     'DHCPDECLINE' => 4,
170     'DHCPACK' => 5,
171     'DHCPNAK' => 6,
172     'DHCPRELEASE' => 7,
173     'DHCPINFORM' => 8,
174     'DHCPFORCERENEW' => 9,
175    
176     'DHCPLEASEQUERY' => 13, # Cisco extension, draft-ietf-dhc-leasequery-08.txt
177     );
178     }
179    
180     use constant \%DHO_CODES;
181     %REV_DHO_CODES = reverse %DHO_CODES;
182    
183     use constant \%DHCP_MESSAGE;
184     %REV_DHCP_MESSAGE = reverse %DHCP_MESSAGE;
185    
186     use constant \%BOOTP_CODES;
187     %REV_BOOTP_CODES = reverse %BOOTP_CODES; # for reverse lookup
188    
189     use constant \%HTYPE_CODES;
190     %REV_HTYPE_CODES = reverse %HTYPE_CODES; # for reverse lookup
191    
192     #
193     # Format of DHCP options : for pretty-printing
194     # void : no parameter
195     # inet : 4 bytes IP address
196     # inets : list of 4 bytess IP addresses
197     # inets2 : liste of 4 bytes IP addresses pairs (multiple of 8 bytes)
198     # int : 4 bytes integer
199     # short : 2 bytes intteger
200     # shorts : list of 2 bytes integers
201     # byte : 1 byte int
202     # bytes : list of 1 byte code
203     # string : char* (just kidding)
204     # relays : DHCP sub-options (rfc 3046)
205     # id : client identifier : byte (htype) + string (chaddr)
206     #
207     our %DHO_FORMATS = (
208     DHO_PAD() => 'void',
209     DHO_SUBNET_MASK() => 'inet',
210     DHO_TIME_OFFSET() => 'int',
211     DHO_ROUTERS() => 'inets',
212     DHO_TIME_SERVERS() => 'inets',
213     DHO_NAME_SERVERS() => 'inets',
214     DHO_DOMAIN_NAME_SERVERS() => 'inets',
215     DHO_LOG_SERVERS() => 'inets',
216     DHO_COOKIE_SERVERS() => 'inets',
217     DHO_LPR_SERVERS() => 'inets',
218     DHO_IMPRESS_SERVERS() => 'inets',
219     DHO_RESOURCE_LOCATION_SERVERS() => 'inets',
220     DHO_HOST_NAME() => 'string',
221     DHO_BOOT_SIZE() => 'short',
222     DHO_MERIT_DUMP() => 'string',
223     DHO_DOMAIN_NAME() => 'string',
224     DHO_SWAP_SERVER() => 'inet',
225     DHO_ROOT_PATH() => 'string',
226     DHO_EXTENSIONS_PATH() => 'string',
227     DHO_IP_FORWARDING() => 'byte',
228     DHO_NON_LOCAL_SOURCE_ROUTING() => 'byte',
229     DHO_POLICY_FILTER() => 'inets2',
230     DHO_MAX_DGRAM_REASSEMBLY() => 'short',
231     DHO_DEFAULT_IP_TTL() => 'byte',
232     DHO_PATH_MTU_AGING_TIMEOUT() => 'int',
233     DHO_PATH_MTU_PLATEAU_TABLE() => 'shorts',
234     DHO_INTERFACE_MTU() => 'short',
235     DHO_ALL_SUBNETS_LOCAL() => 'byte',
236     DHO_BROADCAST_ADDRESS() => 'inet',
237     DHO_PERFORM_MASK_DISCOVERY() => 'byte',
238     DHO_MASK_SUPPLIER() => 'byte',
239     DHO_ROUTER_DISCOVERY() => 'byte',
240     DHO_ROUTER_SOLICITATION_ADDRESS() => 'inet',
241     DHO_STATIC_ROUTES() => 'inets2',
242     DHO_TRAILER_ENCAPSULATION() => 'byte',
243     DHO_ARP_CACHE_TIMEOUT() => 'int',
244     DHO_IEEE802_3_ENCAPSULATION() => 'byte',
245     DHO_DEFAULT_TCP_TTL() => 'byte',
246     DHO_TCP_KEEPALIVE_INTERVAL() => 'int',
247     DHO_TCP_KEEPALIVE_GARBAGE() => 'byte',
248     DHO_NIS_DOMAIN() => 'string',
249     DHO_NIS_SERVERS() => 'inets',
250     DHO_NTP_SERVERS() => 'inets',
251     # DHO_VENDOR_ENCAPSULATED_OPTIONS() => '',
252     DHO_NETBIOS_NAME_SERVERS() => 'inets',
253     DHO_NETBIOS_DD_SERVER() => 'inets',
254     DHO_NETBIOS_NODE_TYPE() => 'byte',
255     DHO_NETBIOS_SCOPE() => 'string',
256     DHO_FONT_SERVERS() => 'inets',
257     DHO_X_DISPLAY_MANAGER() => 'inets',
258     DHO_DHCP_REQUESTED_ADDRESS() => 'inet',
259     DHO_DHCP_LEASE_TIME() => 'int',
260     DHO_DHCP_OPTION_OVERLOAD() => 'byte',
261     DHO_DHCP_MESSAGE_TYPE() => 'byte',
262     DHO_DHCP_SERVER_IDENTIFIER() => 'inet',
263     DHO_DHCP_PARAMETER_REQUEST_LIST() => 'bytes',
264     DHO_DHCP_MESSAGE() => 'string',
265     DHO_DHCP_MAX_MESSAGE_SIZE() => 'short',
266     DHO_DHCP_RENEWAL_TIME() => 'int',
267     DHO_DHCP_REBINDING_TIME() => 'int',
268     DHO_VENDOR_CLASS_IDENTIFIER() => 'string',
269 dpavlin 526 DHO_DHCP_CLIENT_IDENTIFIER() => 'ids',
270 dpavlin 25 DHO_NWIP_DOMAIN_NAME() => 'string', # rfc 2242
271     # DHO_NWIP_SUBOPTIONS() => '', # rfc 2242
272     DHO_NIS_DOMAIN() => 'string',
273     DHO_NIS_SERVER() => 'string',
274     DHO_TFTP_SERVER() => 'string',
275     DHO_BOOTFILE() => 'string',
276     DHO_MOBILE_IP_HOME_AGENT() => 'inets',
277     DHO_SMTP_SERVER() => 'inets',
278     DHO_POP3_SERVER() => 'inets',
279     DHO_NNTP_SERVER() => 'inets',
280     DHO_WWW_SERVER() => 'inets',
281     DHO_FINGER_SERVER() => 'inets',
282     DHO_IRC_SERVER() => 'inets',
283     DHO_STREETTALK_SERVER() => 'inets',
284     DHO_STDA_SERVER() => 'inets',
285     # DHO_USER_CLASS() => '', # rfc 3004
286     # DHO_FQDN() => '', # draft-ietf-dhc-fqdn-option-10.txt
287     # DHO_DHCP_AGENT_OPTIONS() => 'relays', # rfc 3046
288     DHO_NDS_SERVERS() => 'inets', # rfc 2241
289     DHO_NDS_TREE_NAME() => 'string', # rfc 2241
290     DHO_USER_AUTHENTICATION_PROTOCOL() => 'string', # rfc 2485
291     DHO_AUTO_CONFIGURE() => 'byte', # rfc 2563
292     DHO_NAME_SERVICE_SEARCH() => 'shorts', # rfc 2937
293     DHO_SUBNET_SELECTION() => 'inet', # rfc 3011
294    
295 dpavlin 114 DHO_PXELINUX_MAGIC() => 'int', # draft-ietf-dhc-pxelinux-03
296     DHO_PXELINUX_CONFIG_FILE() => 'string',
297     DHO_PXELINUX_PATH_PREFIX() => 'string',
298     DHO_PXELINUX_REBOOT_TIME() => 'int', # 300 s
299    
300 dpavlin 25 );
301    
302     1;
303    
304     =pod
305    
306     =head1 NAME
307    
308     Net::DHCP::Constants - Constants for DHCP codes and options
309    
310     =head1 SYNOPSIS
311    
312     use Net::DHCP::Constants;
313     print "DHCP option SUBNET_MASK is ", DHO_SUBNET_MASK();
314    
315     =head1 DESCRIPTION
316    
317     Represents constants used in DHCP protocol, defined in RFC 1533, RFC 2132,
318     RFC 2241, RFC 2485, RFC 2563, RFC 2937, RFC 3004, RFC 3011, RFC 3046.
319    
320     =head1 TAGS
321    
322     As mentioned above, constants can either be imported individually
323     or in sets grouped by tag names. The tag names are:
324    
325     =over 4
326    
327     =item * bootp_codes
328    
329     Imports all of the basic I<BOOTP> constants.
330    
331     (01) BOOTREQUEST
332     (02) BOOTREPLY
333    
334     =item * htype_codes
335    
336     Imports all I<HTYPE> (hardware address type) codes.
337    
338     (01) HTYPE_ETHER
339     (06) HTYPE_IEEE802
340     (08) HTYPE_FDDI
341    
342     Most common value is HTYPE_ETHER for C<Ethernet>.
343    
344     =item * dhcp_message
345    
346     Import all DHCP Message codes.
347    
348     (01) DHCPDISCOVER
349     (02) DHCPOFFER
350     (03) DHCPREQUEST
351     (04) DHCPDECLINE
352     (05) DHCPACK
353     (06) DHCPNAK
354     (07) DHCPRELEASE
355     (08) DHCPINFORM
356     (09) DHCPFORCERENEW
357     (13) DHCPLEASEQUERY # draft-ietf-dhc-leasequery-08.txt
358    
359     =item * dho_codes
360    
361     Import all DHCP option codes.
362    
363     (000) DHO_PAD
364     (001) DHO_SUBNET_MASK
365     (002) DHO_TIME_OFFSET
366     (003) DHO_ROUTERS
367     (004) DHO_TIME_SERVERS
368     (005) DHO_NAME_SERVERS
369     (006) DHO_DOMAIN_NAME_SERVERS
370     (007) DHO_LOG_SERVERS
371     (008) DHO_COOKIE_SERVERS
372     (009) DHO_LPR_SERVERS
373     (010) DHO_IMPRESS_SERVERS
374     (011) DHO_RESOURCE_LOCATION_SERVERS
375     (012) DHO_HOST_NAME
376     (013) DHO_BOOT_SIZE
377     (014) DHO_MERIT_DUMP
378     (015) DHO_DOMAIN_NAME
379     (016) DHO_SWAP_SERVER
380     (017) DHO_ROOT_PATH
381     (018) DHO_EXTENSIONS_PATH
382     (019) DHO_IP_FORWARDING
383     (020) DHO_NON_LOCAL_SOURCE_ROUTING
384     (021) DHO_POLICY_FILTER
385     (022) DHO_MAX_DGRAM_REASSEMBLY
386     (023) DHO_DEFAULT_IP_TTL
387     (024) DHO_PATH_MTU_AGING_TIMEOUT
388     (025) DHO_PATH_MTU_PLATEAU_TABLE
389     (026) DHO_INTERFACE_MTU
390     (027) DHO_ALL_SUBNETS_LOCAL
391     (028) DHO_BROADCAST_ADDRESS
392     (029) DHO_PERFORM_MASK_DISCOVERY
393     (030) DHO_MASK_SUPPLIER
394     (031) DHO_ROUTER_DISCOVERY
395     (032) DHO_ROUTER_SOLICITATION_ADDRESS
396     (033) DHO_STATIC_ROUTES
397     (034) DHO_TRAILER_ENCAPSULATION
398     (035) DHO_ARP_CACHE_TIMEOUT
399     (036) DHO_IEEE802_3_ENCAPSULATION
400     (037) DHO_DEFAULT_TCP_TTL
401     (038) DHO_TCP_KEEPALIVE_INTERVAL
402     (039) DHO_TCP_KEEPALIVE_GARBAGE
403     (041) DHO_NIS_SERVERS
404     (042) DHO_NTP_SERVERS
405     (043) DHO_VENDOR_ENCAPSULATED_OPTIONS
406     (044) DHO_NETBIOS_NAME_SERVERS
407     (045) DHO_NETBIOS_DD_SERVER
408     (046) DHO_NETBIOS_NODE_TYPE
409     (047) DHO_NETBIOS_SCOPE
410     (048) DHO_FONT_SERVERS
411     (049) DHO_X_DISPLAY_MANAGER
412     (050) DHO_DHCP_REQUESTED_ADDRESS
413     (051) DHO_DHCP_LEASE_TIME
414     (052) DHO_DHCP_OPTION_OVERLOAD
415     (053) DHO_DHCP_MESSAGE_TYPE
416     (054) DHO_DHCP_SERVER_IDENTIFIER
417     (055) DHO_DHCP_PARAMETER_REQUEST_LIST
418     (056) DHO_DHCP_MESSAGE
419     (057) DHO_DHCP_MAX_MESSAGE_SIZE
420     (058) DHO_DHCP_RENEWAL_TIME
421     (059) DHO_DHCP_REBINDING_TIME
422     (060) DHO_VENDOR_CLASS_IDENTIFIER
423     (061) DHO_DHCP_CLIENT_IDENTIFIER
424     (062) DHO_NWIP_DOMAIN_NAME
425     (063) DHO_NWIP_SUBOPTIONS
426     (064) DHO_NIS_DOMAIN
427     (065) DHO_NIS_SERVER
428     (066) DHO_TFTP_SERVER
429     (067) DHO_BOOTFILE
430     (068) DHO_MOBILE_IP_HOME_AGENT
431     (069) DHO_SMTP_SERVER
432     (070) DHO_POP3_SERVER
433     (071) DHO_NNTP_SERVER
434     (072) DHO_WWW_SERVER
435     (073) DHO_FINGER_SERVER
436     (074) DHO_IRC_SERVER
437     (075) DHO_STREETTALK_SERVER
438     (076) DHO_STDA_SERVER
439     (077) DHO_USER_CLASS
440     (081) DHO_FQDN
441     (082) DHO_DHCP_AGENT_OPTIONS
442     (085) DHO_NDS_SERVERS
443     (086) DHO_NDS_TREE_NAME
444     (098) DHO_USER_AUTHENTICATION_PROTOCOL
445     (116) DHO_AUTO_CONFIGURE
446     (117) DHO_NAME_SERVICE_SEARCH
447     (118) DHO_SUBNET_SELECTION
448     (255) DHO_END
449    
450     =back
451    
452     =head1 TO DO, LIMITATIONS
453    
454     Automatic parsing of DHO_VENDOR_ENCAPSULATED_OPTIONS (code 43) is unsupported.
455    
456     Automatic parsing of DHO_NWIP_SUBOPTIONS (code 63 - rfc 2242) is unsupported.
457    
458     Automatic parsing of DHO_USER_CLASS (code 77 - rfc 3004) is unsupported.
459    
460     =head1 SEE ALSO
461    
462     L<Net::DHCP::Packet>, L<Net::DHCP::Options>
463    
464     =head1 AUTHOR
465    
466     Stephan Hadinger E<lt>shadinger@cpan.orgE<gt>.
467    
468     =head1 COPYRIGHT
469    
470     This program is free software; you can redistribute it and/or
471     modify it under the same terms as Perl itself.
472    
473     =cut

  ViewVC Help
Powered by ViewVC 1.1.26