1 # All attribute lengths are implicit, and are calculated automatically
3 # Input is of the form:
7 # The WORD is a keyword which indicates the format of the following text.
10 # raw - read the grammar defined below, and encode an attribute.
11 # The grammar supports a trivial way of describing RADIUS
12 # attributes, without reference to dictionaries or fancy
15 # encode - reads "Attribute-Name = value", encodes it, and prints
17 # use "-" to encode the output of the last command
19 # decode - reads hex, and decodes it "Attribute-Name = value"
20 # use "-" to decode the output of the last command
22 # data - the expected output of the previous command, in ASCII form.
23 # if the actual command output is different, an error message
24 # is produced, and the program terminates.
27 # The "raw" input satisfies the following grammar:
29 # Identifier = 1*DIGIT *( "." 1*DIGIT )
31 # HEXCHAR = HEXDIG HEXDIG
33 # STRING = DQUOTE *CHAR DQUOTE
35 # TLV = "{" 1*DIGIT DATA "}"
37 # DATA = 1*HEXCHAR / 1*TLV / STRING
39 # LINE = Identifier DATA
41 # The "Identifier" is a RADIUS attribute identifier, as given in the draft.
43 # e.g. 1 for User-Name
44 # 26.9.1 Vendor-Specific, Cisco, Cisco-AVPAir
45 # 241.1 Extended Attribute, number 1
46 # 241.2.3 Extended Attribute 2, data type TLV, TLV type 3
49 # The "DATA" portion is the contents of the RADIUS Attribute.
51 # 123456789abcdef hex string
52 # 12 34 56 ab with spaces for clarity
54 # { 1 abcdef } TLV, TLV-Type 1, data "abcdef"
58 # { tlv-type { tlv-type data } } { 3 { 4 01020304 } }
60 # TLVs can be concatencated
62 # {tlv-type data } { tlv-type data} { 3 040506 } { 8 aabbcc }
64 # The "raw" data is encoded without reference to dictionaries. Any
65 # valid string is parsed to a RADIUS attribute. The resulting RADIUS
66 # attribute *may not* be correctly formatted to the relevant RADIUS
67 # specifications. i.e. you can use this tool to create attribute 1
68 # (User-Name), which is encoded as a series of TLVs. That's up to you.
70 # The purpose of the "raw" command is to have a simple way of encoding
71 # attributes which is independent of any dictionaries or packet processing
74 # The output data is the hex version of the encoded attribute.
77 encode User-Name = "bob"
81 data User-Name = "bob"
84 data User-Name = "bob"
87 # The Type/Length is OK, but the attribute data is of the wrong size.
92 # Zero-length attributes
96 # don't encode zero-length attributes
100 # except for CUI. Thank you, WiMAX!
102 data Chargeable-User-Identity = 0x
104 # Hah! Thought you had it figured out, didn't you?
108 attribute Framed-IP-Address = 127.0.0.1/32
109 data Framed-IP-Address = 127.0.0.1
111 attribute Framed-IP-Address = 127.0.0.1/323
112 data Invalid IPv4 mask length "/323". Should be between 0-32
114 attribute Framed-IP-Address = 127.0.0.1/30
115 data Invalid IPv4 mask length "/30". Only "/32" permitted for non-prefix types
117 attribute Framed-IP-Address = *
118 data Framed-IP-Address = 0.0.0.0
120 attribute Framed-IP-Address = 127
121 data Framed-IP-Address = 0.0.0.127
123 attribute Framed-IP-Address = 127.0
124 data Framed-IP-Address = 127.0.0.0
126 attribute Framed-IPv6-Prefix = ::1
127 data Framed-IPv6-Prefix = ::1/128
129 attribute Framed-IPv6-Prefix = ::1/200
130 data Invalid IPv6 mask length "/200". Should be between 0-128
132 attribute Framed-IPv6-Prefix = ::1/200
133 data Invalid IPv6 mask length "/200". Should be between 0-128
135 attribute Framed-IPv6-Prefix = 11:22:33:44:55:66:77:88/128
136 data Framed-IPv6-Prefix = 11:22:33:44:55:66:77:88/128
138 attribute Framed-IPv6-Prefix = *
139 data Framed-IPv6-Prefix = ::/128
141 attribute PMIP6-Home-IPv4-HoA = 127/8
142 data PMIP6-Home-IPv4-HoA = 127.0.0.0/8
144 attribute PMIP6-Home-IPv4-HoA = 127/8
145 data PMIP6-Home-IPv4-HoA = 127.0.0.0/8
148 # Octets outside of the mask are OK, but
149 # are mashed to zero.
151 attribute PMIP6-Home-IPv4-HoA = 127.63/8
152 data PMIP6-Home-IPv4-HoA = 127.0.0.0/8
155 # Unless you give a good mask.
157 attribute PMIP6-Home-IPv4-HoA = 127.63/16
158 data PMIP6-Home-IPv4-HoA = 127.63.0.0/16
160 attribute PMIP6-Home-IPv4-HoA = 127.999/16
161 data Failed to parse IPv4 address string "127.999/16"
163 attribute PMIP6-Home-IPv4-HoA = 127.bob/16
164 data Failed to parse IPv4 address string "127.bob/16"
166 attribute PMIP6-Home-IPv4-HoA = 127.63/15
167 data PMIP6-Home-IPv4-HoA = 127.62.0.0/15
169 attribute PMIP6-Home-IPv4-HoA = 127.63.1/24
170 data PMIP6-Home-IPv4-HoA = 127.63.1.0/24
172 attribute PMIP6-Home-IPv4-HoA = 127.63.1.6
173 data PMIP6-Home-IPv4-HoA = 127.63.1.6/32
175 attribute PMIP6-Home-IPv4-HoA = 256/8
176 data Failed to parse IPv4 address string "256/8"
178 attribute PMIP6-Home-IPv4-HoA = bob/8
179 data Failed to parse IPv4 address string "bob/8"
183 $INCLUDE extended.txt