anchor.diff:              {'CAPWAP-WWAN-LAC',       LAC},
               {'CAPWAP-WWAN-Cell-Id',   CellId}],
       lager:debug("WTP Event Opts: ~p", [Opts]),
  -    [ctld_session:to_session(Opts) | SOptsList];
  +    [to_session(Opts) | SOptsList];
   handle_wtp_stats_event(#tp_wtp_wwan_statistics{timestamp = Timestamp, wwan_id = WWanId, rat = RAT,
   					 rssi = RSSi, creg = CREG, lac = LAC, latency = Latency,
   					 mcc = MCC, mnc = MNC, cell_id = CellId},
  
positive.code:     State = send_response(Header, join_response, Seq, RespElements, State1),
      SessionOpts = wtp_accounting_infos(Elements, [{'CAPWAP-Radio-Id', RadioId}]),
      lager:info("WTP Session Start Opts: ~p", [SessionOpts]),
      ctld_session:start(Session, SessionOpts),
      next_state(join, State);
  
  idle(Event, State) when ?IS_RUN_CONTROL_EVENT(Event) ->
  
negative.code: tunnel_medium({_,_,_,_,_,_,_,_}) ->
      'IPv6'.
  
  accounting_update(WTP, SessionOpts) ->
      case get_data_channel_address(WTP) of
  	{ok, WTPDataChannelAddress} ->
  	    WTPStats = capwap_dp:get_wtp(WTPDataChannelAddress),
  	    lager:debug("WTP: ~p, ~p, ~p", [WTP, WTPDataChannelAddress, WTPStats]),
  	    {_, _STAs, _RefCnt, _MTU, Stats} = WTPStats,
  	    {RcvdPkts, SendPkts, RcvdBytes, SendBytes,
  	     _RcvdFragments, _SendFragments,
  	     _ErrInvalidStation, _ErrFragmentInvalid, _ErrFragmentTooOld} = Stats,
  	    Acc = [{'InPackets',  RcvdPkts},
  		   {'OutPackets', SendPkts},
  		   {'InOctets',   RcvdBytes},
  		   {'OutOctets',  SendBytes}],
  	    ctld_session:merge(SessionOpts, to_session(Acc));
  	_ ->
  	    SessionOpts
      end.
  
  start_session(Socket, _State) ->
      AccUpd = {'Accouting-Update-Fun', fun accounting_update/2},
      SessionData = session_info(Socket),
      ctld_session_sup:new_session(self(), to_session([AccUpd | SessionData])).
  
  session_info(Socket) ->
      {ok, {Address, _Port}} = capwap_udp:peername(Socket),
  