anchor.diff:    when is_integer(HLen), is_integer(DiffServ),
          is_integer(TotLen), is_integer(ID),
          is_bitstring(Flags), is_integer(FragOff), is_integer(TTL),
  +       is_integer(Proto),
          is_integer(HdrChkSum), is_binary(SrcIP), is_binary(DestIP),
          is_binary(Data), is_binary(Options) ->
       OptsLen = byte_size(Options),
  
positive.code: -module(enet_ipv4).
  
  %% 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").
  -define(IP_VERSION, 4).
  
negative.code:     Header = <<?IP_VERSION:4, HLen:4, DiffServ:8, TotLen:16,
                ID:16, Flags:3/bits, FragOff:13, TTL:8, Proto:8, 0:16,
                SrcIP:4/binary, DestIP:4/binary, RestDgram/binary>>,
      enet_checksum:oc16_sum(Header).
  
  decode_option_type(0,  0) -> eool;
  decode_option_type(0,  1) -> nop;
  