anchor.diff:  %% API
   %%====================================================================
   
  +decode(Data) -> decode(Data, []).
  +
   decode(Dgram = <<?IP_VERSION:4, HLen:4, DiffServ:8, TotLen:16,
                   ID:16, Flgs:3/bits, FragOff:13, TTL:8, Proto:8, HdrChkSum:16,
  -                SrcIP:4/binary, DestIP:4/binary, RestDgram/binary>>)
  +                SrcIP:4/binary, DestIP:4/binary, RestDgram/binary>>,
  +      DecodeOptions)
     when HLen >= 5, 4*HLen =< byte_size(Dgram) ->
  -    OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),
  +    OptsLen = 4 * (HLen - ?IP_MIN_HDR_LEN),
       <<Opts:OptsLen/binary, Data/binary>> = RestDgram,
       Protocol = decode_protocol(Proto),
       #ipv4{vsn=?IP_VERSION,
  
positive.code:                     (_, Acc) -> Acc
                  end,
                  [],
                  [{dont_fragmet, DF}, {more_fragments, MF},
                   {evil, Evil}]).
  
  decode_options(Blob) ->
      decode_options(Blob, []).
  
negative.code: 
  %% API
  -export([decode_addr/1, encode_addr/1,
           decode/1, decode/2, encode/1,
           decode_protocol/1, encode_protocol/1,
           header_checksum/1,
           addr_len/0]).
  
  -include("types.hrl").
  