summaryrefslogtreecommitdiff
path: root/nuttx/drivers/net/vnet.c
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-01-20 15:14:29 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-01-20 15:14:29 -0600
commite1d8c89b89c93e5ff71f276c6ec7035a80766a09 (patch)
treebe6ffa4cb6f6c31e6122160effdff06155b5bb62 /nuttx/drivers/net/vnet.c
parent8f957faf84b9aa8de2881361e116943b78ec2dd4 (diff)
downloadpx4-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.c14
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);
}