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

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

$add space 0 UDP-PKT atr_size=0
$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
	     single=1

$add space 4 RAD-VSA-STD		# Space that applies inside std VSAs
$add space 5 RAD-VSA-MULTI single=0	 # 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
$add space 8 RAD-VSA-NMC atr_size=4 	# Space inside USR's "NMC" VSAs

# The space for internal attributes. These never appear in actual packets.
# 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 still need them.

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

# Another internal space, designated for use by RadLDAP. 
# See subdicts/dict.str-ldap for details.

$add space 102 STR-LDAP 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 #
##########################################

#
# Attributes in space 100: internal attributes. Don't need encoding
# properties.
#

$set default space=INTERNAL

$include subdicts/dict.internal


#
# Attributes in space 102: string versions of standard attributes for use with 
# RadLDAP. Don't need encoding properties, just for use in the behaviour file.
#

$set default space=STR-LDAP

$include subdicts/dict.str-ldap


#
# Fields in space 0: the received UDP packet
#

$set default space=UDP-PKT 

$add field 0 RAD-Packet		len_ofs=2 len_size=2 len_adj=0 
				val_ofs=0 val_size=0 val_type=String
				vendor=x noenc=1 nodec=0 subspace=RAD-PKT

#
# Fields in space 1: the radius packet
#

$set default space=RAD-PKT vendor=0 noenc=0 nodec=0

$add field 4 RAD-Attributes	val_ofs=20 val_size=-20 val_type=String
				vendor=x noenc=1 nodec=1 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 noenc=1
$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

$include subdicts/dict.rfc2869


#
# 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 noenc=0

# Basically, this says which subspace applies inside the VSAs of particular 
# vendors. Eg. If a vendor uses 2-octet attributes inside their VSAs, you'd use 
# $add attribute 26 VND-2-Octet-VSA vendor=VND 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 NMC-VSA	vendor=USR	 subspace=RAD-VSA-NMC
$add attribute 26 Normal-VSA	vendor=Cisco	 subspace=RAD-VSA-STD
$add attribute 26 Normal-VSA	vendor=Microsoft 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 noenc=0

$include subdicts/dict.cisco
$include subdicts/dict.ascend
#$include subdicts/dict.microsoft

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


# 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
	     nodec=0 noenc=0

#$include subdicts/dict.vendor-with-multiattr-vsas

$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
	     nodec=0 noenc=0


# 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
	     nodec=0 noenc=0

#$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
	     nodec=0 noenc=0


# 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
	     nodec=0 noenc=0

#$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
	     nodec=0 noenc=0


# Space 8: (USR's) NMC VSAs

$set default space=RAD-VSA-NMC
	     len_ofs=0 len_size=0 len_adj=0
	     val_ofs=4 val_size=-4 val_type=String
	     nodec=0 noenc=0

#$include subdicts/dict.usr

$add attribute x Unknown-USR-VSA vendor=USR

$add attribute x Unknown-NMC-VSA vendor=x

#	     len_ofs=0 len_size=0 len_adj=0
#	     val_ofs=4 val_size=-4 val_type=String
#	     nodec=0 noenc=0

