diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-01-20 15:14:29 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-01-20 15:14:29 -0600 |
commit | e1d8c89b89c93e5ff71f276c6ec7035a80766a09 (patch) | |
tree | be6ffa4cb6f6c31e6122160effdff06155b5bb62 /nuttx/drivers/net/vnet.c | |
parent | 8f957faf84b9aa8de2881361e116943b78ec2dd4 (diff) | |
download | px4-nuttx-e1d8c89b89c93e5ff71f276c6ec7035a80766a09.tar.gz px4-nuttx-e1d8c89b89c93e5ff71f276c6ec7035a80766a09.tar.bz2 px4-nuttx-e1d8c89b89c93e5ff71f276c6ec7035a80766a09.zip |
Networking: Add missing raw/packet socket support to all Ethernet drivers
Diffstat (limited to 'nuttx/drivers/net/vnet.c')
-rw-r--r-- | nuttx/drivers/net/vnet.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/nuttx/drivers/net/vnet.c b/nuttx/drivers/net/vnet.c index 02f348d74..db1665897 100644 --- a/nuttx/drivers/net/vnet.c +++ b/nuttx/drivers/net/vnet.c @@ -59,6 +59,10 @@ #include <nuttx/net/arp.h> #include <nuttx/net/netdev.h> +#ifdef CONFIG_NET_PKT +# include <nuttx/net/pkt.h> +#endif + #include <rgmp/vnet.h> #include <rgmp/stdio.h> @@ -301,6 +305,12 @@ void rtos_vnet_recv(struct rgmp_vnet *rgmp_vnet, char *data, int len) memcpy(vnet->sk_dev.d_buf, data, len); vnet->sk_dev.d_len = len; +#ifdef CONFIG_NET_PKT + /* When packet sockets are enabled, feed the frame into the packet tap */ + + pkt_input(&vnet->sk_dev); +#endif + /* We only accept IP packets of the configured type and ARP packets */ #ifdef CONFIG_NET_IPv4 @@ -324,7 +334,7 @@ void rtos_vnet_recv(struct rgmp_vnet *rgmp_vnet, char *data, int len) /* Update the Ethernet header with the correct MAC address */ #ifdef CONFIG_NET_IPv6 - if (BUF->type == HTONS(ETHTYPE_IP)) + if (IFF_IS_IPv4(vnet->sk_dev.d_flags)) #endif { arp_out(&vnet->sk_dev); @@ -355,7 +365,7 @@ void rtos_vnet_recv(struct rgmp_vnet *rgmp_vnet, char *data, int len) #ifdef CONFIG_NET_IPv4 /* Update the Ethernet header with the correct MAC address */ - if (BUF->type == HTONS(ETHTYPE_IP)) + if (IFF_IS_IPv4(vnet->sk_dev.d_flags)) { arp_out(&vnet->sk_dev); } |