[v4,3/3] eal/windows: librte_net build on Windows

Message ID 20200723070825.6448-4-fady@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series compile librte_net for windows |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed

Commit Message

Fady Bader July 23, 2020, 7:08 a.m. UTC
  librte_net wasn't compiling under Windows.
To solve this, needed header files were added.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/windows/include/netinet/in.h | 23 +++++++++++++++++++++++
 lib/librte_eal/windows/include/netinet/ip.h | 10 ++++++++++
 lib/librte_net/rte_ether.c                  |  4 ++++
 lib/meson.build                             |  2 +-
 4 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 lib/librte_eal/windows/include/netinet/in.h
 create mode 100644 lib/librte_eal/windows/include/netinet/ip.h
  

Comments

Ophir Munk Sept. 8, 2020, 8:14 a.m. UTC | #1
Please add IPPROTO_ICMP and IPPROTO_ICMPV6 definitions:

#define IPPROTO_IP 0
+#define IPPROTO_ICMP 1             /* Internet Ctrl Message Protocol */
 #define IPPROTO_HOPOPTS 0
@@ -17,6 +18,7 @@
#define IPPROTO_AH 51              /* IP6 Auth Header */
+#define IPPROTO_ICMPV6 58          /* Internet Ctrl Message Protocol V6 */
 #define IPPROTO_NONE 59            /* IPv6 no next header */

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Fady Bader
> Sent: Thursday, July 23, 2020 10:08 AM
> To: dev@dpdk.org
> Cc: Thomas Monjalon <thomas@monjalon.net>; Tasnim Bashar
> <tbashar@mellanox.com>; Tal Shnaiderman <talshn@mellanox.com>;
> Yohad Tor <yohadt@mellanox.com>; dmitry.kozliuk@gmail.com;
> harini.ramakrishnan@microsoft.com; ocardona@microsoft.com;
> pallavi.kadam@intel.com; ranjit.menon@intel.com;
> olivier.matz@6wind.com
> Subject: [dpdk-dev] [PATCH v4 3/3] eal/windows: librte_net build on
> Windows
> 
> librte_net wasn't compiling under Windows.
> To solve this, needed header files were added.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>
> ---
>  lib/librte_eal/windows/include/netinet/in.h | 23
> +++++++++++++++++++++++  lib/librte_eal/windows/include/netinet/ip.h |
> 10 ++++++++++
>  lib/librte_net/rte_ether.c                  |  4 ++++
>  lib/meson.build                             |  2 +-
>  4 files changed, 38 insertions(+), 1 deletion(-)  create mode 100644
> lib/librte_eal/windows/include/netinet/in.h
>  create mode 100644 lib/librte_eal/windows/include/netinet/ip.h
> 
> diff --git a/lib/librte_eal/windows/include/netinet/in.h
> b/lib/librte_eal/windows/include/netinet/in.h
> new file mode 100644
> index 0000000000..2be25c8bea
> --- /dev/null
> +++ b/lib/librte_eal/windows/include/netinet/in.h
> @@ -0,0 +1,23 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2020 Mellanox Technologies, Ltd  */
> +
> +#ifndef _IN_H_
> +#define _IN_H_
> +
> +#define IPPROTO_IP 0               /* Dummy for IP */
> +#define IPPROTO_HOPOPTS 0          /* IPv6 Hop-by-Hop options */
> +#define IPPROTO_IPIP 4             /* IPIP tunnels (for compatibility) */
> +#define IPPROTO_TCP 6              /* Transmission Control Protocol */
> +#define IPPROTO_UDP 17             /* User Datagram Protocol */
> +#define IPPROTO_IPV6 41            /* IPv6 header */
> +#define IPPROTO_ROUTING 43         /* IPv6 routing header */
> +#define IPPROTO_FRAGMENT 44        /* IPv6 fragmentation header */
> +#define IPPROTO_GRE 47             /* General Routing Encap */
> +#define IPPROTO_ESP 50             /* IPsec Encap Sec. Payload */
> +#define IPPROTO_AH 51              /* IPsec Auth Header */
> +#define IPPROTO_NONE 59            /* IPv6 no next header */
> +#define IPPROTO_DSTOPTS 60         /* IPv6 destination option */
> +#define IPPROTO_SCTP 132           /* Stream Control Transmission Protocol
> */
> +
> +#endif
> diff --git a/lib/librte_eal/windows/include/netinet/ip.h
> b/lib/librte_eal/windows/include/netinet/ip.h
> new file mode 100644
> index 0000000000..2126498797
> --- /dev/null
> +++ b/lib/librte_eal/windows/include/netinet/ip.h
> @@ -0,0 +1,10 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2020 Mellanox Technologies, Ltd  */
> +
> +#ifndef _IP_H_
> +#define _IP_H_
> +
> +#define IPVERSION 4
> +
> +#endif
> diff --git a/lib/librte_net/rte_ether.c b/lib/librte_net/rte_ether.c index
> ced65ed9f3..6055ae1463 100644
> --- a/lib/librte_net/rte_ether.c
> +++ b/lib/librte_net/rte_ether.c
> @@ -10,12 +10,16 @@
>  void
>  rte_eth_random_addr(uint8_t *addr)
>  {
> +#ifdef RTE_EXEC_ENV_WINDOWS
> +	RTE_SET_USED(addr); /* random is not supported yet */ #else
>  	uint64_t rand = rte_rand();
>  	uint8_t *p = (uint8_t *)&rand;
> 
>  	rte_memcpy(addr, p, RTE_ETHER_ADDR_LEN);
>  	addr[0] &= (uint8_t)~RTE_ETHER_GROUP_ADDR;	/* clear
> multicast bit */
>  	addr[0] |= RTE_ETHER_LOCAL_ADMIN_ADDR;	/* set local
> assignment bit */
> +#endif
>  }
> 
>  void
> diff --git a/lib/meson.build b/lib/meson.build index 3852c01564..6bbaf242a9
> 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -40,7 +40,7 @@ if is_windows
>  		'kvargs',
>  		'eal',
>  		'ring',
> -		'mempool', 'mbuf', 'pci',
> +		'mempool', 'mbuf', 'pci', 'net',
>  	] # only supported libraries for windows  endif
> 
> --
> 2.16.1.windows.4
  

Patch

diff --git a/lib/librte_eal/windows/include/netinet/in.h b/lib/librte_eal/windows/include/netinet/in.h
new file mode 100644
index 0000000000..2be25c8bea
--- /dev/null
+++ b/lib/librte_eal/windows/include/netinet/in.h
@@ -0,0 +1,23 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright 2020 Mellanox Technologies, Ltd
+ */
+
+#ifndef _IN_H_
+#define _IN_H_
+
+#define IPPROTO_IP 0               /* Dummy for IP */
+#define IPPROTO_HOPOPTS 0          /* IPv6 Hop-by-Hop options */
+#define IPPROTO_IPIP 4             /* IPIP tunnels (for compatibility) */
+#define IPPROTO_TCP 6              /* Transmission Control Protocol */
+#define IPPROTO_UDP 17             /* User Datagram Protocol */
+#define IPPROTO_IPV6 41            /* IPv6 header */
+#define IPPROTO_ROUTING 43         /* IPv6 routing header */
+#define IPPROTO_FRAGMENT 44        /* IPv6 fragmentation header */
+#define IPPROTO_GRE 47             /* General Routing Encap */
+#define IPPROTO_ESP 50             /* IPsec Encap Sec. Payload */
+#define IPPROTO_AH 51              /* IPsec Auth Header */
+#define IPPROTO_NONE 59            /* IPv6 no next header */
+#define IPPROTO_DSTOPTS 60         /* IPv6 destination option */
+#define IPPROTO_SCTP 132           /* Stream Control Transmission Protocol */
+
+#endif
diff --git a/lib/librte_eal/windows/include/netinet/ip.h b/lib/librte_eal/windows/include/netinet/ip.h
new file mode 100644
index 0000000000..2126498797
--- /dev/null
+++ b/lib/librte_eal/windows/include/netinet/ip.h
@@ -0,0 +1,10 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright 2020 Mellanox Technologies, Ltd
+ */
+
+#ifndef _IP_H_
+#define _IP_H_
+
+#define IPVERSION 4
+
+#endif
diff --git a/lib/librte_net/rte_ether.c b/lib/librte_net/rte_ether.c
index ced65ed9f3..6055ae1463 100644
--- a/lib/librte_net/rte_ether.c
+++ b/lib/librte_net/rte_ether.c
@@ -10,12 +10,16 @@ 
 void
 rte_eth_random_addr(uint8_t *addr)
 {
+#ifdef RTE_EXEC_ENV_WINDOWS
+	RTE_SET_USED(addr); /* random is not supported yet */
+#else
 	uint64_t rand = rte_rand();
 	uint8_t *p = (uint8_t *)&rand;
 
 	rte_memcpy(addr, p, RTE_ETHER_ADDR_LEN);
 	addr[0] &= (uint8_t)~RTE_ETHER_GROUP_ADDR;	/* clear multicast bit */
 	addr[0] |= RTE_ETHER_LOCAL_ADMIN_ADDR;	/* set local assignment bit */
+#endif
 }
 
 void
diff --git a/lib/meson.build b/lib/meson.build
index 3852c01564..6bbaf242a9 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -40,7 +40,7 @@  if is_windows
 		'kvargs',
 		'eal',
 		'ring',
-		'mempool', 'mbuf', 'pci',
+		'mempool', 'mbuf', 'pci', 'net',
 	] # only supported libraries for windows
 endif