anchor.diff:  extract_ring_info([]) ->
       [];
   extract_ring_info([RingE]) ->
  -    MyId = node:id(node_details:get(RingE, node)),
  +    Node = node_details:get(RingE, node),
  +    MyId = node:id(Node),
       PredId = node:id(node_details:get(RingE, pred)),
       MyIndexStr = case get_indexed_id_by_id(MyId) of
                        undefined -> "";
                        MyIndex -> integer_to_list(MyIndex) ++ ": "
                    end,
  -    Label = MyIndexStr ++ node_details:get(RingE, hostname) ++ " (" ++
  -                integer_to_list(node_details:get(RingE, load)) ++ ")",
  +    NodePid = node:pidX(Node),
  +    case comm:get_ip(NodePid) of
  +        {NodeIP1, NodeIP2, NodeIP3, NodeIP4} -> ok;
  +        _ -> NodeIP1 = NodeIP2 = NodeIP3 = NodeIP4 = 0
  +    end,
  +    NodePort = comm:get_port(NodePid),
  +    Label = lists:flatten(io_lib:format("~s~s / ~B.~B.~B.~B:~B (~B)",
  +                  [MyIndexStr, node_details:get(RingE, hostname),
  +                   NodeIP1, NodeIP2, NodeIP3, NodeIP4, NodePort,
  +                   node_details:get(RingE, load)])),
       case MyId =:= PredId of
           true -> [{Label, "100.00", true}];
           _ ->
  
positive.code:                      undefined -> dead_node();
                       MyIndex -> MyIndex
                   end,
      NodeListFun = fun(NodeX) ->
                            case get_indexed_id_by_node(NodeX) of
                                undefined -> node:id(NodeX);
                                X         -> "<b>" ++ integer_to_list(X) ++ "</b>"
                            end
                    end,
      {tr, [], 
        [
         {td, [], [get_flag(Hostname), io_lib:format("~p", [Hostname])]},
         {td, [], io_lib:format("~.100p", [[NodeListFun(N) || N <- PredList]])},
         {td, [], io_lib:format("~p:&nbsp;~p", [MyIndexStr, node:id(Node)])},
         {td, [], io_lib:format("~.100p", [[NodeListFun(N) || N <- SuccList]])},
  
negative.code: -spec extract_ring_info2(RingE1::node_details:node_details(), RingE2::node_details:node_details())
          -> [{Label::string(), Value::string(), Known::boolean()}].
  extract_ring_info2(RingE1, RingE2) ->
      E1_Node = node_details:get(RingE1, node),
      E1_MyId = node:id(E1_Node),
      E1_PredId = node:id(node_details:get(RingE1, pred)),
      E2_PredId = node:id(node_details:get(RingE2, pred)),
      E1_Diff = ?RT:get_range(E1_PredId, E1_MyId) * 100 / ?RT:n(),
  