anchor.diff:      As1 = [{index,Index},{flags,Fs},{change,Cs}|As],
       case lists:keytake(Index, #link.index, State#state.link_list) of
   	false ->
  -	    Attr = update_attrs(Name, As1, dict:new(), State#state.sub_list),
  +	    Attr = update_attrs(Name, link, As1, dict:new(), State#state.sub_list),
   	    L = #link { index = Index, name = Name, attr = Attr },
   	    Ls = [L|State#state.link_list],
   	    State#state { link_list = Ls };
   	{value,L,Ls} ->
  -	    Attr = update_attrs(Name, As1, L#link.attr, State#state.sub_list),
  +	    Attr = update_attrs(Name, link, As1, L#link.attr, State#state.sub_list),
   	    L1 = L#link { name = Name, attr = Attr },
   	    State#state { link_list = [L1|Ls] }
       end;
  
positive.code:     State.
  
  %% update attributes form interface "Name"
  %% From to To
  update_attrs(Name, As, undefined, Subs) ->
      lists:foreach(
        fun({K,Vold}) ->
  	      send_event(Name,K,Vold,undefined,Subs)
        end, As),
      undefined;
  update_attrs(Name, As, To, Subs) ->
      lists:foldl(
        fun({K,Vnew},D) ->
  	      case dict:find(K,D) of
  		  error -> 
  		      send_event(Name,K,undefined,Vnew,Subs),
  		      dict:store(K,Vnew,D);
  		  {ok,Vnew} -> D;  %% already exist
  		  {ok,Vold} ->
  		      send_event(Name,K,Vold,Vnew,Subs),
  		      dict:store(K,Vnew,D)
  	      end
        end, To, As).
  
  
  send_event(Name,Field,Old,New,[S|SList]) when 
        S#subscription.name =:= Name; S#subscription.name =:= "" ->
      case S#subscription.fields =:= all orelse
  	lists:member(Field,S#subscription.fields) of
  	true ->
  	    S#subscription.pid ! {netlink,S#subscription.mon,
  				  Name,Field,Old,New},
  	    send_event(Name,Field,Old,New,SList);
  	false ->
  	    send_event(Name,Field,Old,New,SList)
      end;
  send_event(Name,Field,Old,New,[_|SList]) ->
      send_event(Name,Field,Old,New,SList);
  send_event(_Name,_Field,_Old,_New,[]) ->
      ok.
  	    
  
  
negative.code:     end,
      case lists:keytake(Name, #addr.name, State#state.addr_list) of
  	false ->
  	    Attrs = update_attrs(Name, addr, As1, dict:new(), State#state.sub_list),
  	    Y = #addr { name = Name, index=Index, attr=Attrs },
  	    Ys = [Y|State#state.addr_list],
  	    State#state { addr_list = Ys };
  	{value,Y,Ys} ->
  	    Attr = update_attrs(Name, addr, As1, Y#addr.attr, State#state.sub_list),
  	    Y1 = Y#addr { index=Index, attr = Attr },
  	    State#state { addr_list = [Y1|Ys] }
      end;
  