anchor.diff:              opts = ConnectOpts}} ->
               %%
               %% ?DBG({Domain, BindIP}),
  -            BindAddr = bind_addr(Domain, BindIP, BindPort),
  +            BindAddr = bind_addr(Domain, BindIP, BindPort, Fd),
  +            ExtraOpts = extra_opts(Fd),
               connect_open(
  -              Addrs, Domain, ConnectOpts, StartOpts, Fd, Timer, BindAddr)
  +              Addrs, Domain, ConnectOpts, StartOpts, ExtraOpts,
  +              Timer, BindAddr)
       catch
           throw : {ErrRef, Reason} ->
               ?badarg_exit({error, Reason})
       end.
   
  -connect_open(Addrs, Domain, ConnectOpts, Opts, Fd, Timer, BindAddr) ->
  -    %% ?DBG({Addrs, Domain, ConnectOpts, Opts, Fd, Timer, BindAddr}),
  +connect_open(Addrs, Domain, ConnectOpts, Opts, ExtraOpts, Timer, BindAddr) ->
  +    %% ?DBG({Addrs, Domain, ConnectOpts, Opts, ExtraOpts, Timer, BindAddr}),
   
       %%
  -    %% The {netns, File} option is passed in Fd by inet:connect_options/2.
  +    %% The {netns, File} option is passed in Fd by inet:connect_options/2,
  +    %% and then over to ExtraOpts.
       %% The {debug, Bool} option is passed in Opts since it is
       %% subversively classified as both start and socket option.
       %%
  -
  -    ExtraOpts =
  -        if
  -            Fd =:= -1      -> #{};
  -            is_integer(Fd) -> #{fd => Fd};
  -            %% This is an **ugly** hack.
  -            %% inet:connect_options/2 has the bad taste to use this
  -            %% for [{netns,NS}] if that option is used...
  -            is_list(Fd)    -> #{netns => Fd}
  -        end,
   
       {SocketOpts, StartOpts} = setopts_split(socket, Opts),
       %% ?DBG([{socket, SocketOpts}, {start, StartOpts}]),
  
positive.code:     end.
  
  
  bind_addr(_Domain, undefined = _BindIP, _BindPort) ->
      %% Do not bind!
      undefined;
  bind_addr(Domain, BindIP, BindPort) ->
      case Domain of
          local ->
              case BindIP of
  
negative.code:     error(badarg, [Arg]).
  
  
  socket_open(Domain, Proto, #{fd := FD} = ExtraOpts, Extra) ->
      Opts =
          (maps:merge(Extra, maps:remove(fd, ExtraOpts)))
          #{dup      => false,
            domain   => Domain,
            type     => stream,
            protocol => Proto},
      %% ?DBG([{fd, FD}, {opts, Opts}]),
      socket:open(FD, Opts);
  socket_open(Domain, Proto, ExtraOpts, Extra) ->
      Opts = maps:merge(Extra, ExtraOpts),
      %% ?DBG([{netns, NS}, {opts, Opts}]),
      socket:open(Domain, stream, Proto, Opts).
  
  
  terminate(_Reason, State, {_P, _} = P_D) ->
  