.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Radius::Dictionary 3pm" .TH Radius::Dictionary 3pm "2015-05-05" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Net::Radius::Dictionary \- RADIUS dictionary parser .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Net::Radius::Dictionary; \& \& my $dict = new Net::Radius::Dictionary "/etc/radius/dictionary"; \& $dict\->readfile("/some/other/file"); \& my $num = $dict\->attr_num(\*(AqUser\-Name\*(Aq); \& my $name = $dict\->attr_name(1); \& my $vsa_num = $dict\->vsattr_num(9, \*(Aqcisco\-avpair\*(Aq); \& my $vsa_name = $dict\->vsattr_name(9, 1); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This is a simple module that reads a \s-1RADIUS\s0 dictionary file and parses it, allowing conversion between dictionary names and numbers. Vendor-Specific attributes are supported in a way consistent to the standards. .PP A few earlier versions of this module attempted to make dictionaries case-insensitive. This proved to be a very bad decision. From this version on, this tendency is reverted: Dictionaries and its contents are to be case-sensitive to prevent random, hard to debug failures in production code. .SS "\s-1METHODS\s0" .IX Subsection "METHODS" .IP "\fBnew($dict_file, ...)\fR" 4 .IX Item "new($dict_file, ...)" Returns a new instance of a Net::Radius::Dictionary object. This object will have no attributes defined, as expected. .Sp If given an (optional) list of filenames, it calls \fIreadfile\fR for you for all of them, in the given order. .IP "\fB\->readfile($dict_file)\fR" 4 .IX Item "->readfile($dict_file)" Parses a dictionary file and learns the mappings to use. It can be called multiple times for the same object. The result will be that new entries will override older ones, thus you could load a default dictionary and then have a smaller dictionary that override specific entries. .IP "\fB\->vendor_num($vendorname)\fR" 4 .IX Item "->vendor_num($vendorname)" Return the vendor number for the given vendor name. .IP "\fB\->attr_num($attrname)\fR" 4 .IX Item "->attr_num($attrname)" Returns the number of the named attribute. .IP "\fB\->attr_type($attrname)\fR" 4 .IX Item "->attr_type($attrname)" Returns the type (\fIstring\fR, \fIinteger\fR, \fIipaddr\fR, or \fItime\fR) of the named attribute. .IP "\fB\->attr_name($attrnum)\fR" 4 .IX Item "->attr_name($attrnum)" Returns the name of the attribute with the given number. .IP "\fB\->attr_numtype($attrnum)\fR" 4 .IX Item "->attr_numtype($attrnum)" Returns the type of the attribute with the given number. .IP "\fB\->attr_has_val($attrnum)\fR" 4 .IX Item "->attr_has_val($attrnum)" Returns a true or false value, depending on whether or not the numbered attribute has any known value constants. .IP "\fB\->val_has_name($attrnum)\fR" 4 .IX Item "->val_has_name($attrnum)" Alternate (bad) name for \fIattr_has_val\fR. .ie n .IP "\fB\->val_num($attrnum, \fB$valname\fB)\fR" 4 .el .IP "\fB\->val_num($attrnum, \f(CB$valname\fB)\fR" 4 .IX Item "->val_num($attrnum, $valname)" Returns the number of the named value for the attribute number supplied. .ie n .IP "\fB\->val_name($attrnum, \fB$valnumber\fB)\fR" 4 .el .IP "\fB\->val_name($attrnum, \f(CB$valnumber\fB)\fR" 4 .IX Item "->val_name($attrnum, $valnumber)" Returns the name of the numbered value for the attribute number supplied. .PP There is an equivalent family of accessor methods for Vendor-Specific attributes and its values. Those methods are identical to their standard attributes counterparts with two exceptions. Their names have a \&\fIvsa\fR prepended to the accessor name and the first argument to each one is the vendor code on which they apply. .SH "CAVEATS" .IX Header "CAVEATS" This module is mostly for the internal use of Net::Radius::Packet, and may otherwise cause insanity and/or blindness if studied. .SH "AUTHOR" .IX Header "AUTHOR" Christopher Masto , Luis E. Mun\*~oz contributed the \s-1VSA\s0 code. .SH "SEE ALSO" .IX Header "SEE ALSO" Net::Radius::Packet