Do not allow the use of the loopback interface in netmap.
The generic support in netmap send the packets using if_transmit() and the loopback do not support packets coming from if_transmit()/if_start(). This avoids the use of the loopback interface and the subsequent crash that happens when the application send packets to the loopback interface. Details in: https://github.com/luigirizzo/netmap/issues/322 Reported by: Vincenzo Maffione <v.maffione@gmail.com> Sponsored by: Rubicon Communications, LLC (Netgate)
This commit is contained in:
parent
5742973cc8
commit
8080cd3d5c
@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/socket.h> /* sockaddrs */
|
||||
#include <sys/selinfo.h>
|
||||
#include <net/if.h>
|
||||
#include <net/if_types.h>
|
||||
#include <net/if_var.h>
|
||||
#include <machine/bus.h> /* bus_dmamap_* in netmap_kern.h */
|
||||
|
||||
@ -1198,6 +1199,13 @@ generic_netmap_attach(struct ifnet *ifp)
|
||||
int retval;
|
||||
u_int num_tx_desc, num_rx_desc;
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
if (ifp->if_type == IFT_LOOP) {
|
||||
D("if_loop is not supported by %s", __func__);
|
||||
return EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
num_tx_desc = num_rx_desc = netmap_generic_ringsize; /* starting point */
|
||||
|
||||
nm_os_generic_find_num_desc(ifp, &num_tx_desc, &num_rx_desc); /* ignore errors */
|
||||
|
Loading…
Reference in New Issue
Block a user