anchor.diff:  	false -> {stop, normal, State};
   	true -> tcp_data1(Len, Frag, Bin, State#s{fd = FD})
       end;
  +tcp_data(<< 6:4, _Class:8, _Flow:20, Len:16, _Next:8, _Hop:8, _Src:128,
  +	    _Dst:128, _Data:Len/binary, _Frag/binary >>,
  +	 wait_1st_from_socket, State) -> % Prefix mismatch: die
  +    {stop, normal, State};
   tcp_data(Frag, StateName, #s{} = State) ->
       next_state(StateName, State#s{frag = Frag}).
   
  
positive.code: 
  -define(IPv6_HEADER_SIZE, 40).
  
  -record(s, {socket, frag = <<>>, fd}).
  
  accepted(Socket) ->
  
negative.code: code_change(_OldVsn, StateName, State, _Extra) -> {ok, StateName, State}.
  
  tcp_data(<< 16#6:4, _Class:8, _Flow:20, Len:16, _Next:8, _Hop:8,
  	    ?Prefix:48, _Src:80, ?Prefix:48, _Dst:80, _Data:Len/binary,
  	    Frag/binary >> = Bin,
  	 forward, #s{} = State) ->
      tcp_data1(Len, Frag, Bin, State);
  tcp_data(<< 6:4, _Class:8, _Flow:20, Len:16, _Next:8, _Hop:8, _Src:128,
  	    _Dst:128, _Data:Len/binary, Frag/binary >>,
  	 forward, State) -> % Prefix mismatch: drop
      next_state(forward, State#s{frag = Frag});
  tcp_data(<< 6:4, _Class:8, _Flow:20, Len:16, _Next:8, _Hop:8,
  	    ?Prefix:48, Src:80, ?Prefix:48, _Dst:80, _Data:Len/binary,
  	    Frag/binary >> = Bin,
  	 wait_1st_from_socket, #s{} = State) ->
      {ok, FD} = erl_ocat_tun:fd(),
  