I got the semaphore problem settled but now I am having a problem where the
packet is going back and forth from the interface, the driver, and the
application, however, the application that sent a packet through the
interface is not receiving the packet. Through some debugging, I found out
that the interface, when it goes into device_consumer_thread for getting
the receive function, it fails here
<https://cgit.haiku-os.org/haiku/tree/src/add-ons/kernel/network/stack/device_interfaces.cpp#n119>.
Looking deeper into when that interface->receive_funcs element gets
assigned I found the function here
<https://cgit.haiku-os.org/haiku/tree/src/add-ons/kernel/network/stack/device_interfaces.cpp#n648>
which I realized is never called when I call ifconfig to set up the
interface. I was wondering if anyone had a way to get that function to call
on the setup of the tun interface? I was thinking it's possibly a use of
`get_module` in the driver but I don't really know where to start with
solving this after I've debugged it. I debugged it through dprintf's that I
put in both functions. One last thing is that on Wireshark and tcpdump both
show the packet being sent and received on the interface if that means much
of anything.