anchor.diff:  				#eap_packet{code = response, type = ?Identity,
   						identifier = NewEapID} ->
   					NextEapID = NewEapID + 1,
  -					send_response(request, NextEapID, EapData, ?AccessChallenge,
  +					EapPacket = #eap_packet{code = request,
  +							type = ?PWD, identifier = NextEapID, data = EapData},
  +					send_response(EapPacket, ?AccessChallenge,
   							RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
   					NextStateData = NewStateData#statedata{eap_id = NextEapID},
   					{next_state, id, NextStateData, ?TIMEOUT};
  +				#eap_packet{code = request, identifier = NewEapID} ->
  +					EapPacket = #eap_packet{code = response, type = ?LegacyNak,
  +							identifier = NewEapID, data = <<0>>},
  +					send_response(EapPacket, ?AccessReject,
  +							RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
  +					{stop, {shutdown, SessionID}, StateData};
   				#eap_packet{code = Code, type = EapType,
   						identifier = NewEapID, data = Data} ->
   					error_logger:warning_report(["Unknown EAP received",
   							{pid, self()}, {session_id, SessionID}, {code, Code},
   							{type, EapType}, {identifier, NewEapID}, {data, Data}]),
  -					radius:response(RadiusFsm, {error, ignore}),
  +					EapPacket = #eap_packet{code = failure, identifier = NewEapID},
  +					send_response(EapPacket, ?AccessReject,
  +							RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
   					{stop, {shutdown, SessionID}, StateData};
   				{'EXIT', _Reason} ->
   					radius:response(RadiusFsm, {error, ignore}),
   					{stop, {shutdown, SessionID}, StateData}
   			end;
   		{error, not_found} ->
  -			send_response(request, EapID, EapData, ?AccessChallenge,
  +			EapPacket = #eap_packet{code = request,
  +					type = ?PWD, identifier = EapID, data = EapData},
  +			send_response(EapPacket, ?AccessChallenge,
   					RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
   			{next_state, id, NewStateData, ?TIMEOUT}
   	end.
  
positive.code: 				CommitReqHeader = #eap_pwd{length = false,
  					more = false, pwd_exch = commit, data = CommitReqBody},
  				CommitEapData = ocs_eap_codec:eap_pwd(CommitReqHeader),
  				send_response(request, NewEapID, CommitEapData,
  						?AccessChallenge, RadiusID, [], RequestAuthenticator,
  						Secret, RadiusFsm),
  				NewStateData = StateData#statedata{pwe = PWE, s_rand = S_rand,
  					peer_id = PeerID, eap_id = NewEapID, scalar_s = ScalarS,
  					element_s = ElementS},
  				{next_state, commit, NewStateData, ?TIMEOUT};
  			{error, _Reason} ->
  				send_response(failure, EapID, <<>>, ?AccessReject,
  					RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
  				{stop, {shutdown, SessionID}, StateData}
  		end
  
negative.code: 	NewStateData = StateData#statedata{token = Token, start = undefined},
  	case radius_attributes:find(?EAPMessage, RequestAttributes) of
  		{ok, <<>>} ->
  			EapPacket = #eap_packet{code = request,
  					type = ?PWD, identifier = EapID, data = EapData},
  			send_response(EapPacket, ?AccessChallenge,
  					RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
  			{next_state, id, NewStateData, ?TIMEOUT};
  		{ok, EAPMessage} ->
  