anchor.diff:      end;
   verify_vacmViewTreeFamilyTable_col(_, Val) ->
       Val.
  -	    
  +
  +
  +check_mask([]) ->
  +    ok;
  +check_mask([Head | Tail]) when is_integer(Head) ->
  +% we can cause exception here because the caller catches
  +    if
  +        Head > -1 andalso Head < 256 ->
  +            check_mask(Tail)
  +    end.
  +
  +% internally (for easier computations), the mask is stored
  +% as OID and not as bit-field. Therefore, we have to convert
  +% the bitstring to a list of integers before storing it.
  +mask2oid(Mask) ->
  +    Func = fun(Byte) ->
  +            % what's a nice syntax for extracting bits
  +            % from a byte???
  +            <<A:1, B:1, C:1, D:1, E:1, F:1, G:1, H:1>> = <<Byte>>,
  +            [A, B, C, D, E, F, G, H]
  +    end,
  +    lists:flatten(lists:map(Func, Mask)).
  +
  +oid2mask(Oid) ->
  +    % convert all suboids to either 1 or 0 for sure
  +    Func = fun
  +        (0) -> 0;
  +        (_) -> 1
  +    end,
  +    oid2mask(lists:map(Func, Oid), []).
  +
  +oid2mask([], Mask) ->
  +    % end-of-list, return bitstring
  +    lists:reverse(Mask);
  +oid2mask(Oid, Mask) ->
  +    % check whether we've got at least 8 sub-identifiers. if not,
  +    % extend with 1's until there are enough to fill a byte
  +    NOid = case length(Oid) of
  +        Small when Small < 8 ->
  +            Oid ++ lists:duplicate(8-Small, 1);
  +        _ ->
  +            Oid
  +    end,
  +    % extract sufficient suboids for 8 bits
  +    [A, B, C, D, E, F, G, H | Tail] = NOid,
  +    <<Byte:8>> = <<A:1, B:1, C:1, D:1, E:1, F:1, G:1, H:1>>,
  +    oid2mask(Tail, [Byte | Mask]).
  +
   
   table_next(Name, RestOid) ->
       snmp_generic:table_next(db(Name), RestOid).
  
positive.code: stc(vacmViewTreeFamilyTable) -> ?vacmViewTreeFamilyStorageType.
   
  next(Name, RowIndex, Cols) ->
      snmp_generic:handle_table_next(db(Name), RowIndex, Cols,
                                     fa(Name), foi(Name), noc(Name)).
   
  get(Name, RowIndex, Cols) ->
      snmp_generic:handle_table_get(db(Name), RowIndex, Cols, foi(Name)).
  
  wrongValue(V) -> throw({wrongValue, V}).
  
  
negative.code: 	null -> [];
  	[]   -> [];
  	_ ->
  	    case (catch check_mask(Mask)) of
  		ok ->
  		    mask2oid(Mask);
  	        _ ->
  		    wrongValue(?vacmViewTreeFamilyMask)
  	    end
  