anchor.diff:  attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikAddressList, List}}} | T], Acc) when is_list(List) ->
   	Bin = list_to_binary(List),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikAddressList, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikAddressList, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikWirelessMpKey, Key}}} | T], Acc) when is_list(Key) ->
   	Bin = list_to_binary(Key),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikWirelessMpKey, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikWirelessMpKey, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikWirelessComment, Comment}}} | T], Acc) when is_list(Comment) ->
   	Bin = list_to_binary(Comment),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikWirelessComment, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikWirelessComment, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikDelegatedIpv6Pool, Pool}}} | T], Acc) when is_list(Pool) ->
   	Bin = list_to_binary(Pool),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikDelegatedIpv6Pool, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikDelegatedIpv6Pool, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikDhcpOptionSet, Set}}} | T], Acc) when is_list(Set) ->
   	Bin = list_to_binary(Set),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikDhcpOptionSet, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikDhcpOptionSet, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikDhcpOptionParamStr1, Str1}}} | T], Acc) when is_list(Str1) ->
   	Bin = list_to_binary(Str1),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikDhcpOptionParamStr1, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikDhcpOptionParamStr1, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikDhcpOptionParamStr2, Str2}}} | T], Acc) when is_list(Str2) ->
   	Bin = list_to_binary(Str2),
  -	Length = size(Bin) + 6,
  -	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  -			?MikrotikDhcpOptionParamStr2, Length, Bin/binary>>);
  +	VendorLength = size(Bin) + 2,
  +	Length = VendorLength + 6,
  +	attributes(T, <<Acc/binary, ?VendorSpecific, Length, 0, ?Mikrotik:24,
  +			?MikrotikDhcpOptionParamStr2, VendorLength, Bin/binary>>);
   attributes([{?VendorSpecific, {?Mikrotik,
   		{?MikrotikWirelessVlanId, ID}}} | T], Acc) when is_integer(ID) ->
   	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  
positive.code: attributes([{?VendorSpecific, {?Mikrotik,
  		{?MikrotikWirelessEncKey, Key}}} | T], Acc) when is_list(Key) ->
  	Bin = list_to_binary(Key),
  	Length = size(Bin) + 6,
  	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  			?MikrotikWirelessEncAlgo, Length, Bin/binary>>);
  attributes([{?VendorSpecific, {?Mikrotik,
  		{?MikrotikRateLimit, Limit}}} | T], Acc) when is_list(Limit) ->
  	Bin = list_to_binary(Limit),
  	Length = size(Bin) + 6,
  	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  			?MikrotikRateLimit, Length, Bin/binary>>);
  attributes([{?VendorSpecific, {?Mikrotik,
  		{?MikrotikRealm, Realm}}} | T], Acc) when is_list(Realm) ->
  	Bin = list_to_binary(Realm),
  	Length = size(Bin) + 6,
  	attributes(T, <<Acc/binary, ?VendorSpecific, 12, 0, ?Mikrotik:24,
  			?MikrotikRealm, Length, Bin/binary>>);
  attributes([{?VendorSpecific, {?Mikrotik,
  		{?MikrotikHostIp, {A, B, C, D}}}} | T], Acc)
  		when is_integer(A), is_integer(B), is_integer(C), is_integer(D) ->
  
negative.code: 		VendorLength, String/binary>>, Acc) when VendorLength > 2 ->
  	Rate = binary_to_list(String),
  	[{?VendorSpecific, {?Mikrotik, {?MikrotikRateLimit, Rate}}} | Acc];
  attribute(?VendorSpecific, <<0, ?Mikrotik:24, ?MikrotikRealm,
  		VendorLength, String/binary>>, Acc) when VendorLength > 2 ->
  	Realm = binary_to_list(String),
  