anchor.diff:  
   -record(state, {}).
   
  --define(EPOCH_OFFSET, 2208988800).
   -define(S6a_APPLICATION_ID, 16777251).
  +-define(IANA_PEN_3GPP, 10415).
  +-define(DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE,  4181).
  +-define(DIAMETER_ERROR_CAMEL_SUBSCRIPTION_PRESENT, 4182).
  +-define(DIAMETER_ERROR_USER_UNKNOWN,               5001).
  +-define(DIAMETER_ERROR_ROAMING_NOT_ALLOWED,        5004).
  +-define(DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION,   5420).
  +-define(DIAMETER_ERROR_RAT_NOT_ALLOWED,            5421).
  +-define(DIAMETER_ERROR_EQUIPMENT_UNKNOWN,          5422).
  +-define(DIAMETER_ERROR_UNKOWN_SERVING_NODE,        5423).
  +
  +%% support deprecated_time_unit()
  +-define(MILLISECOND, milli_seconds).
  +%-define(MILLISECOND, millisecond).
   
   -type state() :: #state{}.
   -type capabilities() :: #diameter_caps{}.
  
positive.code: 			[?'DIAMETER_BASE_RESULT-CODE_UNKNOWN_PEER']),
  	{answer_message, Error}.
  
  -spec process_request(ServiceName, Capabilities, Request,
  		Address, Port, PasswordReq, Trusted) -> Result
  	when
  		ServiceName :: term(),
  		Capabilities :: capabilities(),
  		Request :: term(),
  		Address :: inet:ip_address(),
  		Port :: inet:port(),
  		PasswordReq :: boolean(),
  		Trusted :: boolean(),
  		Result :: {reply, packet()} | discard.
  %% @doc Process a received DIAMETER packet.
  %% @private
  %% @todo Handle S6a/S6d requests.
  process_request(ServiceName, _Capabilities, Request,
  		Address, Port, PasswordReq, Trusted) ->
  erlang:display({?MODULE, ?LINE, Request}), discard;
  process_request(ServiceName, #diameter_caps{origin_host = {OHost, _DHost},
  		origin_realm = {ORealm, _DRealm}} = Capabilities,
  		#'3gpp_s6a_AIR'{'Session-Id' = SId} = Request,
  		Address, Port, PasswordReq, Trusted) ->
  	try
  		process_request1(ServiceName, Capabilities,
  				Request, Address, Port, PasswordReq, Trusted)
  	catch
  		_:_Reason ->
  			{reply, #'3gpp_s6a_AIA'{'Session-Id' = SId,
  					'Result-Code' = ?'DIAMETER_BASE_RESULT-CODE_INVALID_AVP_BITS',
  					'Origin-Host' = OHost, 'Origin-Realm' = ORealm}}
  	end.
  %% @hidden
  process_request1(ServiceName, Capabilities,
  		Request, Address, Port, PasswordReq, Trusted) ->
  	[Info] = diameter:service_info(ServiceName, transport),
  	case lists:keyfind(options, 1, Info) of
  		{options, Options} ->
  			case lists:keyfind(transport_config, 1, Options) of
  				{transport_config, TC} ->
  					{ip, Sip} = lists:keyfind(ip, 1, TC),
  					{port, Sport} = lists:keyfind(port, 1, TC),
  					case global:whereis_name({ocs_diameter_auth, Sip, Sport}) of
  						undefined ->
  							discard;
  						PortServer ->
  							Answer = gen_server:call(PortServer,
  									{diameter_request, Capabilities,
  											Address, Port, PasswordReq, Trusted,
  											Request, none}),
  							{reply, Answer}
  					end;
  				false ->
  					discard
  			end;
  		false ->
  			discard
  	end.
  
  -spec errors(ServiceName, Capabilities, Request, Errors) -> Result
  	when
  
negative.code: %% @hidden
  request(ServiceName, Capabilities, Request, [H | T]) ->
  	case ocs:find_client(H) of
  		{ok, #client{protocol = diameter}} ->
  			process_request(ServiceName, Capabilities, Request);
  		{error, not_found} ->
  			request(ServiceName, Capabilities, Request, T)
  	end;
  