anchor.diff:  %% @doc Cast message handler callbacks
   %% @end
   %%--------------------------------------------------------------------
  -handle_cast({send, Data}, S = #state{port=P}) when is_port(P) ->
  -    case Data of
  -        Frame when is_binary(Frame) ->
  -            port_command(P, Frame);
  -        BadPacket ->
  -            ?WARN("Couldn't send bad packet: ~p", [BadPacket])
  -    end,
  +handle_cast({send, #raw{data=Frame}}, S = #state{port=P})
  +  when is_port(P), is_binary(Frame) ->
  +    publish_tx(Frame, unknown, S),
  +    port_command(P, Frame),
       {noreply, S};
   handle_cast(Msg, State) ->
       ?WARN("Unexpected cast ~p", [Msg]),
  
positive.code:     Port = enet_tap:open(Device),
      {ok, S#state{port=Port
                   ,osifconfig=IfConfig
                   ,pubsub=pubsub:publish()}}.
  
  %%--------------------------------------------------------------------
  %% @private
  
negative.code: %% @end
  %%--------------------------------------------------------------------
  start_link(Device, IfConfig) when is_list(Device), is_list(IfConfig) ->
      gen_server:start_link(?MODULE, [#state{dev=Device,
                                             mac=?DEFAULT_MAC}, IfConfig], []).
  
  start(Device, IfConfig) when is_list(Device), is_list(IfConfig) ->
      gen_server:start(?MODULE, [#state{dev=Device}, IfConfig], []).
  