DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/3] rib: minor fixes
@ 2020-06-25 20:32 Stephen Hemminger
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 1/3] rib: constify arguments Stephen Hemminger
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Stephen Hemminger @ 2020-06-25 20:32 UTC (permalink / raw)
  To: Medvedkin, Vladimir; +Cc: dev, Stephen Hemminger

Some minor updates to the RIB library to fix issues found
while reviewing and trying it out.

Stephen Hemminger (3):
  rib: constify arguments
  rib: check for invalid max_nodes
  rib: add C++ include guard

 lib/librte_rib/rte_rib.c  | 11 +++++------
 lib/librte_rib/rte_rib.h  | 17 +++++++++++++----
 lib/librte_rib/rte_rib6.c | 13 +++++++------
 lib/librte_rib/rte_rib6.h | 23 ++++++++++++++++-------
 4 files changed, 41 insertions(+), 23 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [dpdk-dev] [PATCH 1/3] rib: constify arguments
  2020-06-25 20:32 [dpdk-dev] [PATCH 0/3] rib: minor fixes Stephen Hemminger
@ 2020-06-25 20:32 ` Stephen Hemminger
  2020-06-26 14:03   ` Medvedkin, Vladimir
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 2/3] rib: check for invalid max_nodes Stephen Hemminger
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2020-06-25 20:32 UTC (permalink / raw)
  To: Medvedkin, Vladimir; +Cc: dev, Stephen Hemminger

The getter functions should take a constant pointer
to make it clear that node is not modified.

The rib create functions do not modify their config structure.
Mark the config as constant so that programs can pass
simple constant data.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_rib/rte_rib.c  |  8 ++++----
 lib/librte_rib/rte_rib.h  |  9 +++++----
 lib/librte_rib/rte_rib6.c | 10 ++++++----
 lib/librte_rib/rte_rib6.h | 13 +++++++------
 4 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/lib/librte_rib/rte_rib.c b/lib/librte_rib/rte_rib.c
index 55d612dc2e27..e40cf715c099 100644
--- a/lib/librte_rib/rte_rib.c
+++ b/lib/librte_rib/rte_rib.c
@@ -342,7 +342,7 @@ rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth)
 }
 
 int
-rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip)
+rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip)
 {
 	if ((node == NULL) || (ip == NULL)) {
 		rte_errno = EINVAL;
@@ -353,7 +353,7 @@ rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip)
 }
 
 int
-rte_rib_get_depth(struct rte_rib_node *node, uint8_t *depth)
+rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth)
 {
 	if ((node == NULL) || (depth == NULL)) {
 		rte_errno = EINVAL;
@@ -370,7 +370,7 @@ rte_rib_get_ext(struct rte_rib_node *node)
 }
 
 int
-rte_rib_get_nh(struct rte_rib_node *node, uint64_t *nh)
+rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh)
 {
 	if ((node == NULL) || (nh == NULL)) {
 		rte_errno = EINVAL;
@@ -392,7 +392,7 @@ rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh)
 }
 
 struct rte_rib *
-rte_rib_create(const char *name, int socket_id, struct rte_rib_conf *conf)
+rte_rib_create(const char *name, int socket_id, const struct rte_rib_conf *conf)
 {
 	char mem_name[RTE_RIB_NAMESIZE];
 	struct rte_rib *rib = NULL;
diff --git a/lib/librte_rib/rte_rib.h b/lib/librte_rib/rte_rib.h
index 6b70de980a2c..a7daa9d8a76e 100644
--- a/lib/librte_rib/rte_rib.h
+++ b/lib/librte_rib/rte_rib.h
@@ -171,7 +171,7 @@ rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
  */
 __rte_experimental
 int
-rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip);
+rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
 
 /**
  * Get a depth from rte_rib_node
@@ -186,7 +186,7 @@ rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip);
  */
 __rte_experimental
 int
-rte_rib_get_depth(struct rte_rib_node *node, uint8_t *depth);
+rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
 
 /**
  * Get ext field from the rib node
@@ -215,7 +215,7 @@ rte_rib_get_ext(struct rte_rib_node *node);
  */
 __rte_experimental
 int
-rte_rib_get_nh(struct rte_rib_node *node, uint64_t *nh);
+rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
 
 /**
  * Set nexthop into the rib node
@@ -247,7 +247,8 @@ rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
  */
 __rte_experimental
 struct rte_rib *
-rte_rib_create(const char *name, int socket_id, struct rte_rib_conf *conf);
+rte_rib_create(const char *name, int socket_id,
+	       const struct rte_rib_conf *conf);
 
 /**
  * Find an existing RIB object and return a pointer to it.
diff --git a/lib/librte_rib/rte_rib6.c b/lib/librte_rib/rte_rib6.c
index 78b8dcfd94a9..02563b951620 100644
--- a/lib/librte_rib/rte_rib6.c
+++ b/lib/librte_rib/rte_rib6.c
@@ -399,7 +399,8 @@ rte_rib6_insert(struct rte_rib6 *rib,
 }
 
 int
-rte_rib6_get_ip(struct rte_rib6_node *node, uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
+rte_rib6_get_ip(const struct rte_rib6_node *node,
+		uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
 {
 	if ((node == NULL) || (ip == NULL)) {
 		rte_errno = EINVAL;
@@ -410,7 +411,7 @@ rte_rib6_get_ip(struct rte_rib6_node *node, uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
 }
 
 int
-rte_rib6_get_depth(struct rte_rib6_node *node, uint8_t *depth)
+rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth)
 {
 	if ((node == NULL) || (depth == NULL)) {
 		rte_errno = EINVAL;
@@ -427,7 +428,7 @@ rte_rib6_get_ext(struct rte_rib6_node *node)
 }
 
 int
-rte_rib6_get_nh(struct rte_rib6_node *node, uint64_t *nh)
+rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh)
 {
 	if ((node == NULL) || (nh == NULL)) {
 		rte_errno = EINVAL;
@@ -449,7 +450,8 @@ rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh)
 }
 
 struct rte_rib6 *
-rte_rib6_create(const char *name, int socket_id, struct rte_rib6_conf *conf)
+rte_rib6_create(const char *name, int socket_id,
+		const struct rte_rib6_conf *conf)
 {
 	char mem_name[RTE_RIB6_NAMESIZE];
 	struct rte_rib6 *rib = NULL;
diff --git a/lib/librte_rib/rte_rib6.h b/lib/librte_rib/rte_rib6.h
index 871457138d7b..e6b4b7fff98c 100644
--- a/lib/librte_rib/rte_rib6.h
+++ b/lib/librte_rib/rte_rib6.h
@@ -70,7 +70,7 @@ rte_rib6_copy_addr(uint8_t *dst, const uint8_t *src)
  *  0 otherwise
  */
 static inline int
-rte_rib6_is_equal(uint8_t *ip1, uint8_t *ip2) {
+rte_rib6_is_equal(const uint8_t *ip1, const uint8_t *ip2) {
 	int i;
 
 	if ((ip1 == NULL) || (ip2 == NULL))
@@ -227,8 +227,8 @@ rte_rib6_insert(struct rte_rib6 *rib,
  */
 __rte_experimental
 int
-rte_rib6_get_ip(struct rte_rib6_node *node,
-	uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
+rte_rib6_get_ip(const struct rte_rib6_node *node,
+		uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
 
 /**
  * Get a depth from rte_rib6_node
@@ -243,7 +243,7 @@ rte_rib6_get_ip(struct rte_rib6_node *node,
  */
 __rte_experimental
 int
-rte_rib6_get_depth(struct rte_rib6_node *node, uint8_t *depth);
+rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
 
 /**
  * Get ext field from the rte_rib6_node
@@ -272,7 +272,7 @@ rte_rib6_get_ext(struct rte_rib6_node *node);
  */
 __rte_experimental
 int
-rte_rib6_get_nh(struct rte_rib6_node *node, uint64_t *nh);
+rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
 
 /**
  * Set nexthop into the rte_rib6_node
@@ -304,7 +304,8 @@ rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
  */
 __rte_experimental
 struct rte_rib6 *
-rte_rib6_create(const char *name, int socket_id, struct rte_rib6_conf *conf);
+rte_rib6_create(const char *name, int socket_id,
+		const struct rte_rib6_conf *conf);
 
 /**
  * Find an existing RIB object and return a pointer to it.
-- 
2.26.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [dpdk-dev] [PATCH 2/3] rib: check for invalid max_nodes
  2020-06-25 20:32 [dpdk-dev] [PATCH 0/3] rib: minor fixes Stephen Hemminger
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 1/3] rib: constify arguments Stephen Hemminger
@ 2020-06-25 20:32 ` Stephen Hemminger
  2020-06-26 14:03   ` Medvedkin, Vladimir
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 3/3] rib: add C++ include guard Stephen Hemminger
  2020-07-07 21:25 ` [dpdk-dev] [PATCH 0/3] rib: minor fixes Thomas Monjalon
  3 siblings, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2020-06-25 20:32 UTC (permalink / raw)
  To: Medvedkin, Vladimir; +Cc: dev, Stephen Hemminger

Max_nodes in config is signed, but a negative value makes
no sense. Get rid of extra BSD style parens.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_rib/rte_rib.c  | 3 +--
 lib/librte_rib/rte_rib6.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/lib/librte_rib/rte_rib.c b/lib/librte_rib/rte_rib.c
index e40cf715c099..2a370d7f8439 100644
--- a/lib/librte_rib/rte_rib.c
+++ b/lib/librte_rib/rte_rib.c
@@ -401,8 +401,7 @@ rte_rib_create(const char *name, int socket_id, const struct rte_rib_conf *conf)
 	struct rte_mempool *node_pool;
 
 	/* Check user arguments. */
-	if ((name == NULL) || (conf == NULL) ||
-			(conf->max_nodes == 0)) {
+	if (name == NULL || conf == NULL || conf->max_nodes <= 0) {
 		rte_errno = EINVAL;
 		return NULL;
 	}
diff --git a/lib/librte_rib/rte_rib6.c b/lib/librte_rib/rte_rib6.c
index 02563b951620..f6c55ee454be 100644
--- a/lib/librte_rib/rte_rib6.c
+++ b/lib/librte_rib/rte_rib6.c
@@ -460,8 +460,7 @@ rte_rib6_create(const char *name, int socket_id,
 	struct rte_mempool *node_pool;
 
 	/* Check user arguments. */
-	if ((name == NULL) || (conf == NULL) ||
-			(conf->max_nodes == 0)) {
+	if (name == NULL || conf == NULL || conf->max_nodes <= 0) {
 		rte_errno = EINVAL;
 		return NULL;
 	}
-- 
2.26.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [dpdk-dev] [PATCH 3/3] rib: add C++ include guard
  2020-06-25 20:32 [dpdk-dev] [PATCH 0/3] rib: minor fixes Stephen Hemminger
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 1/3] rib: constify arguments Stephen Hemminger
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 2/3] rib: check for invalid max_nodes Stephen Hemminger
@ 2020-06-25 20:32 ` Stephen Hemminger
  2020-06-26 14:04   ` Medvedkin, Vladimir
  2020-07-07 21:25 ` [dpdk-dev] [PATCH 0/3] rib: minor fixes Thomas Monjalon
  3 siblings, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2020-06-25 20:32 UTC (permalink / raw)
  To: Medvedkin, Vladimir; +Cc: dev, Stephen Hemminger

All include files should be safe from C++

Fixes: 5a5793a5ffa2 ("rib: add RIB library")
Fixes: f7e861e21c46 ("rib: support IPv6")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_rib/rte_rib.h  |  8 ++++++++
 lib/librte_rib/rte_rib6.h | 10 +++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/lib/librte_rib/rte_rib.h b/lib/librte_rib/rte_rib.h
index a7daa9d8a76e..e9ffefce6edd 100644
--- a/lib/librte_rib/rte_rib.h
+++ b/lib/librte_rib/rte_rib.h
@@ -13,6 +13,10 @@
 
 #include <rte_compat.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * rte_rib_get_nxt() flags
  */
@@ -275,4 +279,8 @@ __rte_experimental
 void
 rte_rib_free(struct rte_rib *rib);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _RTE_RIB_H_ */
diff --git a/lib/librte_rib/rte_rib6.h b/lib/librte_rib/rte_rib6.h
index e6b4b7fff98c..68eaa8aa4812 100644
--- a/lib/librte_rib/rte_rib6.h
+++ b/lib/librte_rib/rte_rib6.h
@@ -14,6 +14,10 @@
 #include <rte_memcpy.h>
 #include <rte_compat.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define RTE_RIB6_IPV6_ADDR_SIZE	16
 
 /**
@@ -332,4 +336,8 @@ __rte_experimental
 void
 rte_rib6_free(struct rte_rib6 *rib);
 
-#endif /* _RTE_RIB_H_ */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTE_RIB6_H_ */
-- 
2.26.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH 1/3] rib: constify arguments
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 1/3] rib: constify arguments Stephen Hemminger
@ 2020-06-26 14:03   ` Medvedkin, Vladimir
  0 siblings, 0 replies; 8+ messages in thread
From: Medvedkin, Vladimir @ 2020-06-26 14:03 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev


On 25/06/2020 21:32, Stephen Hemminger wrote:
> The getter functions should take a constant pointer
> to make it clear that node is not modified.
>
> The rib create functions do not modify their config structure.
> Mark the config as constant so that programs can pass
> simple constant data.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/librte_rib/rte_rib.c  |  8 ++++----
>   lib/librte_rib/rte_rib.h  |  9 +++++----
>   lib/librte_rib/rte_rib6.c | 10 ++++++----
>   lib/librte_rib/rte_rib6.h | 13 +++++++------
>   4 files changed, 22 insertions(+), 18 deletions(-)
>
> diff --git a/lib/librte_rib/rte_rib.c b/lib/librte_rib/rte_rib.c
> index 55d612dc2e27..e40cf715c099 100644
> --- a/lib/librte_rib/rte_rib.c
> +++ b/lib/librte_rib/rte_rib.c
> @@ -342,7 +342,7 @@ rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth)
>   }
>   
>   int
> -rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip)
> +rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip)
>   {
>   	if ((node == NULL) || (ip == NULL)) {
>   		rte_errno = EINVAL;
> @@ -353,7 +353,7 @@ rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip)
>   }
>   
>   int
> -rte_rib_get_depth(struct rte_rib_node *node, uint8_t *depth)
> +rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth)
>   {
>   	if ((node == NULL) || (depth == NULL)) {
>   		rte_errno = EINVAL;
> @@ -370,7 +370,7 @@ rte_rib_get_ext(struct rte_rib_node *node)
>   }
>   
>   int
> -rte_rib_get_nh(struct rte_rib_node *node, uint64_t *nh)
> +rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh)
>   {
>   	if ((node == NULL) || (nh == NULL)) {
>   		rte_errno = EINVAL;
> @@ -392,7 +392,7 @@ rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh)
>   }
>   
>   struct rte_rib *
> -rte_rib_create(const char *name, int socket_id, struct rte_rib_conf *conf)
> +rte_rib_create(const char *name, int socket_id, const struct rte_rib_conf *conf)
>   {
>   	char mem_name[RTE_RIB_NAMESIZE];
>   	struct rte_rib *rib = NULL;
> diff --git a/lib/librte_rib/rte_rib.h b/lib/librte_rib/rte_rib.h
> index 6b70de980a2c..a7daa9d8a76e 100644
> --- a/lib/librte_rib/rte_rib.h
> +++ b/lib/librte_rib/rte_rib.h
> @@ -171,7 +171,7 @@ rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>    */
>   __rte_experimental
>   int
> -rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip);
> +rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
>   
>   /**
>    * Get a depth from rte_rib_node
> @@ -186,7 +186,7 @@ rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip);
>    */
>   __rte_experimental
>   int
> -rte_rib_get_depth(struct rte_rib_node *node, uint8_t *depth);
> +rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
>   
>   /**
>    * Get ext field from the rib node
> @@ -215,7 +215,7 @@ rte_rib_get_ext(struct rte_rib_node *node);
>    */
>   __rte_experimental
>   int
> -rte_rib_get_nh(struct rte_rib_node *node, uint64_t *nh);
> +rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
>   
>   /**
>    * Set nexthop into the rib node
> @@ -247,7 +247,8 @@ rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
>    */
>   __rte_experimental
>   struct rte_rib *
> -rte_rib_create(const char *name, int socket_id, struct rte_rib_conf *conf);
> +rte_rib_create(const char *name, int socket_id,
> +	       const struct rte_rib_conf *conf);
>   
>   /**
>    * Find an existing RIB object and return a pointer to it.
> diff --git a/lib/librte_rib/rte_rib6.c b/lib/librte_rib/rte_rib6.c
> index 78b8dcfd94a9..02563b951620 100644
> --- a/lib/librte_rib/rte_rib6.c
> +++ b/lib/librte_rib/rte_rib6.c
> @@ -399,7 +399,8 @@ rte_rib6_insert(struct rte_rib6 *rib,
>   }
>   
>   int
> -rte_rib6_get_ip(struct rte_rib6_node *node, uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
> +rte_rib6_get_ip(const struct rte_rib6_node *node,
> +		uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
>   {
>   	if ((node == NULL) || (ip == NULL)) {
>   		rte_errno = EINVAL;
> @@ -410,7 +411,7 @@ rte_rib6_get_ip(struct rte_rib6_node *node, uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
>   }
>   
>   int
> -rte_rib6_get_depth(struct rte_rib6_node *node, uint8_t *depth)
> +rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth)
>   {
>   	if ((node == NULL) || (depth == NULL)) {
>   		rte_errno = EINVAL;
> @@ -427,7 +428,7 @@ rte_rib6_get_ext(struct rte_rib6_node *node)
>   }
>   
>   int
> -rte_rib6_get_nh(struct rte_rib6_node *node, uint64_t *nh)
> +rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh)
>   {
>   	if ((node == NULL) || (nh == NULL)) {
>   		rte_errno = EINVAL;
> @@ -449,7 +450,8 @@ rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh)
>   }
>   
>   struct rte_rib6 *
> -rte_rib6_create(const char *name, int socket_id, struct rte_rib6_conf *conf)
> +rte_rib6_create(const char *name, int socket_id,
> +		const struct rte_rib6_conf *conf)
>   {
>   	char mem_name[RTE_RIB6_NAMESIZE];
>   	struct rte_rib6 *rib = NULL;
> diff --git a/lib/librte_rib/rte_rib6.h b/lib/librte_rib/rte_rib6.h
> index 871457138d7b..e6b4b7fff98c 100644
> --- a/lib/librte_rib/rte_rib6.h
> +++ b/lib/librte_rib/rte_rib6.h
> @@ -70,7 +70,7 @@ rte_rib6_copy_addr(uint8_t *dst, const uint8_t *src)
>    *  0 otherwise
>    */
>   static inline int
> -rte_rib6_is_equal(uint8_t *ip1, uint8_t *ip2) {
> +rte_rib6_is_equal(const uint8_t *ip1, const uint8_t *ip2) {
>   	int i;
>   
>   	if ((ip1 == NULL) || (ip2 == NULL))
> @@ -227,8 +227,8 @@ rte_rib6_insert(struct rte_rib6 *rib,
>    */
>   __rte_experimental
>   int
> -rte_rib6_get_ip(struct rte_rib6_node *node,
> -	uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
> +rte_rib6_get_ip(const struct rte_rib6_node *node,
> +		uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
>   
>   /**
>    * Get a depth from rte_rib6_node
> @@ -243,7 +243,7 @@ rte_rib6_get_ip(struct rte_rib6_node *node,
>    */
>   __rte_experimental
>   int
> -rte_rib6_get_depth(struct rte_rib6_node *node, uint8_t *depth);
> +rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
>   
>   /**
>    * Get ext field from the rte_rib6_node
> @@ -272,7 +272,7 @@ rte_rib6_get_ext(struct rte_rib6_node *node);
>    */
>   __rte_experimental
>   int
> -rte_rib6_get_nh(struct rte_rib6_node *node, uint64_t *nh);
> +rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
>   
>   /**
>    * Set nexthop into the rte_rib6_node
> @@ -304,7 +304,8 @@ rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
>    */
>   __rte_experimental
>   struct rte_rib6 *
> -rte_rib6_create(const char *name, int socket_id, struct rte_rib6_conf *conf);
> +rte_rib6_create(const char *name, int socket_id,
> +		const struct rte_rib6_conf *conf);
>   
>   /**
>    * Find an existing RIB object and return a pointer to it.


Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>


-- 
Regards,
Vladimir


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH 2/3] rib: check for invalid max_nodes
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 2/3] rib: check for invalid max_nodes Stephen Hemminger
@ 2020-06-26 14:03   ` Medvedkin, Vladimir
  0 siblings, 0 replies; 8+ messages in thread
From: Medvedkin, Vladimir @ 2020-06-26 14:03 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev


On 25/06/2020 21:32, Stephen Hemminger wrote:
> Max_nodes in config is signed, but a negative value makes
> no sense. Get rid of extra BSD style parens.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/librte_rib/rte_rib.c  | 3 +--
>   lib/librte_rib/rte_rib6.c | 3 +--
>   2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/lib/librte_rib/rte_rib.c b/lib/librte_rib/rte_rib.c
> index e40cf715c099..2a370d7f8439 100644
> --- a/lib/librte_rib/rte_rib.c
> +++ b/lib/librte_rib/rte_rib.c
> @@ -401,8 +401,7 @@ rte_rib_create(const char *name, int socket_id, const struct rte_rib_conf *conf)
>   	struct rte_mempool *node_pool;
>   
>   	/* Check user arguments. */
> -	if ((name == NULL) || (conf == NULL) ||
> -			(conf->max_nodes == 0)) {
> +	if (name == NULL || conf == NULL || conf->max_nodes <= 0) {
>   		rte_errno = EINVAL;
>   		return NULL;
>   	}
> diff --git a/lib/librte_rib/rte_rib6.c b/lib/librte_rib/rte_rib6.c
> index 02563b951620..f6c55ee454be 100644
> --- a/lib/librte_rib/rte_rib6.c
> +++ b/lib/librte_rib/rte_rib6.c
> @@ -460,8 +460,7 @@ rte_rib6_create(const char *name, int socket_id,
>   	struct rte_mempool *node_pool;
>   
>   	/* Check user arguments. */
> -	if ((name == NULL) || (conf == NULL) ||
> -			(conf->max_nodes == 0)) {
> +	if (name == NULL || conf == NULL || conf->max_nodes <= 0) {
>   		rte_errno = EINVAL;
>   		return NULL;
>   	}

Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>


-- 
Regards,
Vladimir


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH 3/3] rib: add C++ include guard
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 3/3] rib: add C++ include guard Stephen Hemminger
@ 2020-06-26 14:04   ` Medvedkin, Vladimir
  0 siblings, 0 replies; 8+ messages in thread
From: Medvedkin, Vladimir @ 2020-06-26 14:04 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev


On 25/06/2020 21:32, Stephen Hemminger wrote:
> All include files should be safe from C++
>
> Fixes: 5a5793a5ffa2 ("rib: add RIB library")
> Fixes: f7e861e21c46 ("rib: support IPv6")
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/librte_rib/rte_rib.h  |  8 ++++++++
>   lib/librte_rib/rte_rib6.h | 10 +++++++++-
>   2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_rib/rte_rib.h b/lib/librte_rib/rte_rib.h
> index a7daa9d8a76e..e9ffefce6edd 100644
> --- a/lib/librte_rib/rte_rib.h
> +++ b/lib/librte_rib/rte_rib.h
> @@ -13,6 +13,10 @@
>   
>   #include <rte_compat.h>
>   
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
>   /**
>    * rte_rib_get_nxt() flags
>    */
> @@ -275,4 +279,8 @@ __rte_experimental
>   void
>   rte_rib_free(struct rte_rib *rib);
>   
> +#ifdef __cplusplus
> +}
> +#endif
> +
>   #endif /* _RTE_RIB_H_ */
> diff --git a/lib/librte_rib/rte_rib6.h b/lib/librte_rib/rte_rib6.h
> index e6b4b7fff98c..68eaa8aa4812 100644
> --- a/lib/librte_rib/rte_rib6.h
> +++ b/lib/librte_rib/rte_rib6.h
> @@ -14,6 +14,10 @@
>   #include <rte_memcpy.h>
>   #include <rte_compat.h>
>   
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
>   #define RTE_RIB6_IPV6_ADDR_SIZE	16
>   
>   /**
> @@ -332,4 +336,8 @@ __rte_experimental
>   void
>   rte_rib6_free(struct rte_rib6 *rib);
>   
> -#endif /* _RTE_RIB_H_ */
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* _RTE_RIB6_H_ */

Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>


-- 
Regards,
Vladimir


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH 0/3] rib: minor fixes
  2020-06-25 20:32 [dpdk-dev] [PATCH 0/3] rib: minor fixes Stephen Hemminger
                   ` (2 preceding siblings ...)
  2020-06-25 20:32 ` [dpdk-dev] [PATCH 3/3] rib: add C++ include guard Stephen Hemminger
@ 2020-07-07 21:25 ` Thomas Monjalon
  3 siblings, 0 replies; 8+ messages in thread
From: Thomas Monjalon @ 2020-07-07 21:25 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Medvedkin, Vladimir, dev

25/06/2020 22:32, Stephen Hemminger:
> Some minor updates to the RIB library to fix issues found
> while reviewing and trying it out.
> 
> Stephen Hemminger (3):
>   rib: constify arguments
>   rib: check for invalid max_nodes
>   rib: add C++ include guard

Applied, thanks



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-07-07 21:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-25 20:32 [dpdk-dev] [PATCH 0/3] rib: minor fixes Stephen Hemminger
2020-06-25 20:32 ` [dpdk-dev] [PATCH 1/3] rib: constify arguments Stephen Hemminger
2020-06-26 14:03   ` Medvedkin, Vladimir
2020-06-25 20:32 ` [dpdk-dev] [PATCH 2/3] rib: check for invalid max_nodes Stephen Hemminger
2020-06-26 14:03   ` Medvedkin, Vladimir
2020-06-25 20:32 ` [dpdk-dev] [PATCH 3/3] rib: add C++ include guard Stephen Hemminger
2020-06-26 14:04   ` Medvedkin, Vladimir
2020-07-07 21:25 ` [dpdk-dev] [PATCH 0/3] rib: minor fixes Thomas Monjalon

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git