anchor.diff:    end.
   basic_test_real() ->
     {ok, State} = init([]),
  -  {ok, Response} = handle_get_route({8, 8, 8, 8}, State#state.socket),
  +  {ok, Response} = handle_get_route({8, 8, 8, 8}, State#state.socket, State#state.table_id),
     ?assertNotEqual(proplists:get_value(prefsrc, Response, undefined), undefined),
     ?assertNotEqual(proplists:get_value(gateway, Response, undefined), undefined).
   
  --endif.
  -
  -
  -
  -
  -
  -
  -
  -
  +cache_test() ->
  +  case os:type() of
  +    {unix, linux} ->
  +      cache_test_real();
  +    _ ->
  +      ?debugMsg("Unsupported OS")
  +  end.
  +cache_test_real() ->
  +  {ok, State} = init([]),
  +  {ok, Response1} = handle_get_route({8, 8, 8, 8}, State#state.socket, State#state.table_id),
  +  {ok, Response2} = handle_get_route({8, 8, 8, 8}, State#state.socket, State#state.table_id),
  +  ?assertEqual(Response1, Response2),
  +  ?assertNotEqual(proplists:get_value(route_cache_timestamp, Response1, undefined), undefined),
  +  ?assertNotEqual(proplists:get_value(route_cache_timestamp, Response2, undefined), undefined).
  +
  +  -endif.
  +
  +
  +
  +
  +
  +
  +
  +
  
positive.code:   {ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} |
    {stop, Reason :: term()} | ignore).
  init([]) ->
    %% TODO: Return error, don't just bail
    {unix, linux} = os:type(),
    {ok, Socket} = gen_socket:socket(netlink, raw, ?NETLINK_ROUTE),
  
negative.code:   {gen_socket, RealPort, _, _, _, _} = Socket,
    erlang:link(RealPort),
    ok = gen_socket:bind(Socket, netlink:sockaddr_nl(netlink, 0, 0)),
    {ok, #state{socket = Socket, table_id = TableID}}.
  
  %%--------------------------------------------------------------------
  %% @private
  