# File radius/dictionary.rb, line 63 def read(fp) fp.each_line { |line| next if line =~ /^\#/ # discard comments next if (sl = line.split(/\s+/)) == [] case sl[0].upcase when "ATTRIBUTE" @attr[sl[1]] = [sl[2].to_i, sl[3]] if (@attr[sl[1]] == nil) @rattr[sl[2].to_i] = [sl[1], sl[3]] if (@rattr[sl[2].to_i] == nil) when "VALUE" if (@attr[sl[1]] == nil) $stderr.print("Warning: value given for unknown attribute #{sl[1]}"); else if (@val[@attr[sl[1]][0]] == nil) @val[@attr[sl[1]][0]] = {} end if (@rval[@attr[sl[1]][0]] == nil) @rval[@attr[sl[1]][0]] = [] end if (@val[@attr[sl[1]][0]][sl[2]] == nil) @val[@attr[sl[1]][0]][sl[2]] = sl[3].to_i end if (@rval[@attr[sl[1]][0]][sl[3].to_i] == nil) @rval[@attr[sl[1]][0]][sl[3].to_i] = sl[2] end end when "VENDORATTR" sl[3] = Kernel::Integer(sl[3]) # this gets hex and octal # values correctly @vsattr[sl[1].to_i] = {} if (@vsattr[sl[1].to_i] == nil) @rvsattr[sl[1].to_i] = {} if (@rvsattr[sl[1].to_i] == nil) if (@vsattr[sl[1].to_i][sl[2]] == nil) @vsattr[sl[1].to_i][sl[2]] = sl[3..4] end if (@rvsattr[sl[1].to_i][sl[3]] == nil) @rvsattr[sl[1].to_i][sl[3]] = [sl[2], sl[4]] end when "VENDORVALUE" sl[4] = Kernel::Integer(sl[4]) if (@vsattr[sl[1].to_i][sl[2]] == nil) $stderr.print "Warning: vendor value for unknown vendor attribute #{sl[1]} found - ignored\n" else sl[1] = sl[1].to_i @vsaval[sl[1]] = {} if @vsaval[sl[1].to_i] == nil @rvsaval[sl[1]] = {} if @rvsaval[sl[1].to_i] == nil if @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] == nil @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] = {} end if @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] == nil @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] = [] end if @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[3]] == nil @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[3]] = sl[4] end if @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[4]] == nil @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[4]] = sl[3] end end else $stderr.print "Warning: Weird dictionary line: #{line}\n" end } end