Você cria interfaces de rede que podem enviar e receber pacotes apoiados por algum programa (que, no seu caso, seria conectado ao GNU Radio de alguma forma) usando a interface tun / tap .
Para citar Documentation/networking/tuntap.txt
na fonte do kernel:
TUN/TAP provides packet reception and transmission for user space programs. It can be seen as a simple Point-to-Point or Ethernet device, which, instead of receiving packets from physical media, receives them from user space program and instead of sending packets via physical media writes them to the user space program.
In order to use the driver a program has to open
/dev/net/tun
and issue a corresponding ioctl() to register a network device with the kernel. A network device will appear astunXX
ortapXX
, depending on the options chosen. When the program closes the file descriptor, the network device and all corresponding routes will disappear.Depending on the type of device chosen the userspace program has to read/write IP packets (with tun) or ethernet frames (with tap). Which one is being used depends on the flags given with the ioctl().
The package from http://vtun.sourceforge.net/tun contains two simple examples for how to use tun and tap devices. Both programs work like a bridge between two network interfaces.
br_select.c
- bridge based on select system call.
br_sigio.c
- bridge based on async io and SIGIO signal.However, the best example is VTun http://vtun.sourceforge.net
Veja também esta pergunta do stackoverflow. Muitos tutoriais podem ser encontrados no google.