anchor.diff:  format_peer(IP) ->
       io_lib:format("~p", [IP]).
   
  -peer_log_str(#state{id = undefined, ctrl_channel_address = WTPControlChannelAddress}) ->
  -    io_lib:format("~p", [WTPControlChannelAddress]);
  -peer_log_str(#state{id = Id, ctrl_channel_address = WTPControlChannelAddress}) ->
  -    io_lib:format("~s[~s]", [Id, format_peer(WTPControlChannelAddress)]).
  +peer_log_str(State = #state{ctrl_channel_address = WTPControlChannelAddress}) ->
  +    peer_log_str(WTPControlChannelAddress, State).
  +
  +peer_log_str(Address, #state{id = undefined}) ->
  +    io_lib:format("~p", [Address]);
  +peer_log_str(Address, #state{id = Id}) ->
  +    io_lib:format("~s[~s]", [Id, format_peer(Address)]).
   
   next_state(NextStateName, State)
     when NextStateName == idle; NextStateName == run ->
  
positive.code: %%--------------------------------------------------------------------
  init([WTPControlChannelAddress]) ->
      process_flag(trap_exit, true),
      capwap_wtp_reg:register(WTPControlChannelAddress),
      {ok, listen, #state{ctrl_channel_address = WTPControlChannelAddress,
  			request_queue = queue:new(),
  
negative.code: 
  data_check({keep_alive, DataPath, WTPDataChannelAddress, Header, PayLoad}, _From,
  	   State = #state{ctrl_stream = CtrlStreamState}) ->
      lager:md([{data_channel_address, WTPDataChannelAddress}]),
      ?log_capwap_keep_alive(peer_log_str(WTPDataChannelAddress, State), PayLoad, Header),
  
      capwap_wtp_reg:register(WTPDataChannelAddress),
      MTU = capwap_stream:get_mtu(CtrlStreamState),
      capwap_dp:add_wtp(WTPDataChannelAddress, MTU),
  