33 lines
554 B
Elixir
33 lines
554 B
Elixir
defmodule P2pChat.Transport.TunTap do
|
|
use GenServer
|
|
|
|
defstruct [:tun_fd]
|
|
|
|
@impl true
|
|
def init(args) do
|
|
{:ok, io_device} = setup_tap_device()
|
|
{:ok, {}}
|
|
end
|
|
|
|
@impl true
|
|
def terminate(_reason, state) do
|
|
|
|
end
|
|
|
|
def setup_tap_device(name \\ "tunP2P") do
|
|
{:ok, io_device} = :file.open(~c"/dev/net/tun", [:read, :write, :raw])
|
|
:ok = :file.close(io_device)
|
|
:ok
|
|
end
|
|
|
|
def teardown_tap_device(io_device) do
|
|
end
|
|
|
|
#
|
|
# Client API
|
|
#
|
|
|
|
def start_link(args) do
|
|
GenServer.start_link(__MODULE__, args)
|
|
end
|
|
end
|