anchor.diff:  		radius_fsm :: pid(),
   		session_id:: {NAS :: inet:ip_address() | string(),
   				Port :: string(), Peer :: string()},
  -		radius_id :: byte(),
  -		req_auth :: binary(),
  -		req_attr :: radius_attributes:attributes(),
  +		start :: #radius{},
   		eap_id = 0 :: byte(),
   		group_desc  = 19 :: byte(),
   		rand_func = 1 :: byte(),
  
positive.code: -export([]).
  
  %% export the ocs_eap_pwd_fsm state callbacks
  -export([identity/2, commit/2, confirm/2]).
  
  %% export the call backs needed for gen_fsm behaviour
  -export([init/1, handle_event/3, handle_sync_event/4, handle_info/3,
  
negative.code: %% @see //stdlib/gen_fsm:init/1
  %% @private
  %%
  init([Address, Port, RadiusFsm, Secret, SessionID, AccessRequest] = _Args) ->
  	{ok, Hostname} = inet:gethostname(),
  	StateData = #statedata{address = Address, port = Port,
  			radius_fsm = RadiusFsm, secret = Secret, session_id = SessionID,
  			server_id = list_to_binary(Hostname), start = AccessRequest},
  	process_flag(trap_exit, true),
  	{ok, eap_start, StateData, 0}.
  
  -spec eap_start(Event :: timeout | term(), StateData :: #statedata{}) ->
  	Result :: {next_state, NextStateName :: atom(), NewStateData :: #statedata{}}
  		| {next_state, NextStateName :: atom(), NewStateData :: #statedata{},
  		Timeout :: non_neg_integer() | infinity}
  