This program allows to create a bridge between a physical network inteface and emulated virtual network. Originally I created the program to flash OpenWRT to the router, because Network Manager is always trying to prevent you from manual network configuration. But I hope it could be useful for other things too.
This program uses libslirp to emulate the virtual network.
Program creates RAW socket and binds it to the specified interface. Interface is turned into promiscuous mode, so we collect all the packets from the interface and can process them.
In the same time ifslirp creates slirp virtual network, with NAT, DNS, TFTP, and BOOTP support. So all devices connected to the interface will be able to use virtual network the same way they could use a simple router.
Use -h command line argument to read a help message. Typical usage is:
# ifslirp -i eth0 -b firmware.bin
If you want to specify the network you can use -n 192.168.0.0 or other address. When you finished, just press Ctrl+C.
Program is using PACKET mode of the RAW socket which is Linux specific. It is possible to make a *BSD/Darwin port using divert sockets. For Windows it is possible to use WinDivert project. If anyone is interested in this I'm ready to do it.