
##################################
# Define the various data spaces #
##################################

$set default atr_ofs=0 atr_size=1	# Defaults for the space(s) that follow

$add space 1 RAD-PKT atr_size=0		 # The fixed field space 'radius pkt'
$add space 2 RAD-ATR			 # The attribute space 'radius attrs'

$set default vnd_ofs=2 vnd_size=4	# Defaults for the following spaces

$add space 3 RAD-EXT-VSA single=1	 # Space for VSAs as seen from 'outside'

$set default vnd_ofs=0 vnd_size=0	# Defaults for the following spaces

$add space 4 RAD-VSA-STD single=1	 # Space that applies inside std VSAs
$add space 5 RAD-VSA-MULTI 		 # Space inside multiple-attr VSAs
$add space 6 RAD-VSA-NONSTD-2 atr_size=2 # Space inside 2-octet attr. VSAs
$add space 7 RAD-VSA-NONSTD-4 atr_size=4 # Space inside 4-octet attr. VSAs

# The space for internal attributes - not for encoding / decoding.
# This space's number is constant; update constants.h as well if you change it!
# The same goes for space nrs. 1 and 2 (RAD-PKT and RAD-ATR, resp.), since
# modules that don't read the dictionary may want to use them.

$add space 100 INTERNAL atr_ofs=0 atr_size=0 vnd_ofs=0 vnd_size=0


#########################################
# Include the table of IANA Vendor PECs #
#########################################

$include subdicts/dict.vendors


##########################################
# Define the fixed fields and attributes #
##########################################

#
# Fields in space 1: the radius packet
#

$set default space=RAD-PKT vendor=0

$add field 4 RAD-Attributes	val_ofs=20 val_size=-20 val_type=String
				len_ofs=2  len_size=2
				vendor=x   noenc=1	# both really needed!
				subspace=RAD-ATR
$add field 3 RAD-Authenticator	val_ofs=4  val_size=16  val_type=String
$add field 2 RAD-Length		val_ofs=2  val_size=2	val_type=Integer
$add field 1 RAD-Identifier	val_ofs=1  val_size=1	val_type=Integer
$add field 0 RAD-Code		val_ofs=0  val_size=1	val_type=Integer

# Values

$set default item=RAD-Code

$add value 1 Access-Request
$add value 2 Access-Accept
$add value 3 Access-Reject
$add value 4 Accounting-Request
$add value 5 Accounting-Response


#
# Attributes in space 2: standard IETF radius attributes
#

$set default space=RAD-ATR

$include subdicts/dict.stdauth
$include subdicts/dict.stdacct


#
# Attributes in space 3: different variations of attribute 26 that
#			 select particular subspaces
#

$set default space=RAD-EXT-VSA
	     len_ofs=1 len_size=1 len_adj=0
	     val_ofs=6 val_size=-6 val_type=String nodec=1

# Basically, this says which subspace applies inside the VSAs of particular 
# vendors. Eg. If USR uses 2-octet attributes inside VSAs, you'd use 
# $add attribute 26 USR-2-Octet-VSA vendor=USR subspace=RAD-VSA-NONSTD-2

$add attribute 26 Strange-VSA	vendor=Strange	subspace=RAD-VSA-NONSTD-2
$add attribute 26 Stupid-VSA	vendor=Stupid	subspace=RAD-VSA-NONSTD-2
$add attribute 26 Worse-VSA	vendor=Worse	subspace=RAD-VSA-NONSTD-4
$add attribute 26 Multi-VSA	vendor=Another	subspace=RAD-VSA-MULTI
$add attribute 26 Normal-VSA	vendor=Cisco	subspace=RAD-VSA-STD
$add attribute 26 Normal-VSA	vendor=x	subspace=RAD-VSA-STD


#
# Attributes in the vendor specific attribute spaces
#
#

# Space 4: Standard VSAs

$set default space=RAD-VSA-STD
	     len_ofs=1 len_size=1 len_adj=0
	     val_ofs=2 val_size=-2 val_type=String nodec=0

#$include subdicts/dict.anothervendorthatusesstdvsas
$include subdicts/dict.cisco

$add attribute x Unknown-Std-VSA vendor=x
     len_ofs=1 len_size=1 len_adj=0 val_ofs=2 val_size=-2 val_type=String


# Space 5: Nonstandard multiple-attribute VSAs

$set default space=RAD-VSA-MULTI
	     len_ofs=1 len_size=1 len_adj=0
	     val_ofs=2 val_size=-2 val_type=String

#$include subdicts/dict.vendorthatsupportsmultipleattrsinsideonevsa

$add attribute x Unknown-Multi-VSA vendor=x
     len_ofs=1 len_size=1 len_adj=0 val_ofs=2 val_size=-2 val_type=String


# Space 6: Nonstandard 2-octet VSAs

$set default space=RAD-VSA-NONSTD-2
	     len_ofs=2 len_size=1 len_adj=0
	     val_ofs=3 val_size=-3 val_type=String

#$include subdicts/dict.usr
#$include subdicts/dict.strange
#$include subdicts/dict.stupid

$add attribute x Unknown-Nonstd-2-VSA vendor=x
     len_ofs=2 len_size=1 len_adj=0 val_ofs=3 val_size=-3 val_type=String


# Space 7: Nonstandard 4-octet VSAs

$set default space=RAD-VSA-NONSTD-4
	     len_ofs=4 len_size=1 len_adj=0
	     val_ofs=5 val_size=-5 val_type=String

#$include subdicts/dict.worse

$add attribute x Unknown-Nonstd-4-VSA vendor=x
     len_ofs=4 len_size=1 len_adj=0 val_ofs=5 val_size=-5 val_type=String


#
# Attributes in space 100: internal attributes
#

$set default space=INTERNAL

$include subdicts/dict.internal

