[spp] [PATCH 7/7] spp/shared: refactor printing port status
ogawa.yasufumi at lab.ntt.co.jp
ogawa.yasufumi at lab.ntt.co.jp
Wed Dec 6 09:18:26 CET 2017
From: Yasufumi Ogawa <ogawa.yasufumi at lab.ntt.co.jp>
Port status of each of clients is printed with print_active_ports().
It is defined in both of spp_nfv and spp_vm. It is redundant and should
be changed to be a common library function.
This update is to move print_active_ports() in shared/common.c as common
library. This update also following changes.
* client_id, ports_fwd_array and port_map are added as arguments
of this function to be enable them referred.
* Print 'none' instead of port_id if port is unassigned.
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi at lab.ntt.co.jp>
---
src/nfv/nfv.c | 53 +-------------------------------------------
src/shared/common.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
src/shared/common.h | 4 ++++
src/vm/main.c | 52 +------------------------------------------
4 files changed, 69 insertions(+), 103 deletions(-)
diff --git a/src/nfv/nfv.c b/src/nfv/nfv.c
index 9edf06d..5972657 100644
--- a/src/nfv/nfv.c
+++ b/src/nfv/nfv.c
@@ -232,57 +232,6 @@ forward_array_reset(void)
}
}
-/* print forward array active port*/
-static void
-print_active_ports(char *str)
-{
- unsigned int i;
-
- sprintf(str, "%d\n", client_id);
-
- /* every elements value*/
- for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
- if (ports_fwd_array[i].in_port_id == PORT_RESET)
- continue;
-
- RTE_LOG(INFO, APP, "Port ID %d\n", i);
- RTE_LOG(INFO, APP, "Status %d\n",
- ports_fwd_array[i].in_port_id);
-
- sprintf(str + strlen(str), "port id: %d,", i);
- if (ports_fwd_array[i].in_port_id != PORT_RESET)
- sprintf(str + strlen(str), "on,");
- else
- sprintf(str + strlen(str), "off,");
-
- switch (port_map[i].port_type) {
- case PHY:
- RTE_LOG(INFO, APP, "Type: PHY\n");
- sprintf(str + strlen(str), "PHY,");
- break;
- case RING:
- RTE_LOG(INFO, APP, "Type: RING\n");
- sprintf(str + strlen(str), "RING(%u),",
- port_map[i].id);
- break;
- case VHOST:
- RTE_LOG(INFO, APP, "Type: VHOST\n");
- sprintf(str + strlen(str), "VHOST(%u),",
- port_map[i].id);
- break;
- case UNDEF:
- RTE_LOG(INFO, APP, "Type: UDF\n");
- sprintf(str + strlen(str), "UDF,");
- break;
- }
-
- RTE_LOG(INFO, APP, "Out Port ID %d\n",
- ports_fwd_array[i].out_port_id);
- sprintf(str + strlen(str), "outport: %d\n",
- ports_fwd_array[i].out_port_id);
- }
-}
-
static int
do_send(int *connected, int *sock, char *str)
{
@@ -560,7 +509,7 @@ parse_command(char *str)
i = sprintf(str, "Client ID %d Running\n", client_id);
else
i = sprintf(str, "Client ID %d Idling\n", client_id);
- print_active_ports(str + i);
+ print_active_ports(str + i, client_id, ports_fwd_array, port_map);
} else if (!strcmp(token_list[0], "_get_client_id")) {
memset(str, '\0', MSG_SIZE);
diff --git a/src/shared/common.c b/src/shared/common.c
index dd1f88c..5b87385 100644
--- a/src/shared/common.c
+++ b/src/shared/common.c
@@ -250,3 +250,66 @@ spp_atoi(const char *str, int *val)
return 0;
}
+
+/*
+ * Print port status in forward array
+ *
+ * Each of port status is formatted as
+ * "port_id:[PORT_ID],[IN_PORT_STAT],[TYPE],output:[OUTPORT_STAT]"
+ */
+void
+print_active_ports(char *str, uint16_t client_id,
+ struct port *ports_fwd_array,
+ struct port_map *port_map)
+{
+ unsigned int i;
+
+ sprintf(str, "clinet_id:%d\n", client_id);
+
+ /* Every elements value */
+ for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
+ if (ports_fwd_array[i].in_port_id == PORT_RESET)
+ continue;
+
+ RTE_LOG(INFO, APP, "Port ID %d\n", i);
+ RTE_LOG(INFO, APP, "Status %d\n",
+ ports_fwd_array[i].in_port_id);
+
+ sprintf(str + strlen(str), "port_id:%d,", i);
+ /* in_port_id is same value as port_id */
+ if (ports_fwd_array[i].in_port_id != PORT_RESET)
+ sprintf(str + strlen(str), "on,");
+ else
+ sprintf(str + strlen(str), "off,");
+
+ switch (port_map[i].port_type) {
+ case PHY:
+ RTE_LOG(INFO, APP, "Type: PHY\n");
+ sprintf(str + strlen(str), "PHY,");
+ break;
+ case RING:
+ RTE_LOG(INFO, APP, "Type: RING\n");
+ sprintf(str + strlen(str), "RING(%u),",
+ port_map[i].id);
+ break;
+ case VHOST:
+ RTE_LOG(INFO, APP, "Type: VHOST\n");
+ sprintf(str + strlen(str), "VHOST(%u),",
+ port_map[i].id);
+ break;
+ case UNDEF:
+ RTE_LOG(INFO, APP, "Type: UDF\n");
+ sprintf(str + strlen(str), "UDF,");
+ break;
+ }
+
+ RTE_LOG(INFO, APP, "Out Port ID %d\n",
+ ports_fwd_array[i].out_port_id);
+ if (ports_fwd_array[i].out_port_id == PORT_RESET) {
+ sprintf(str + strlen(str), "outport:%s\n", "none");
+ } else {
+ sprintf(str + strlen(str), "outport:%d\n",
+ ports_fwd_array[i].out_port_id);
+ }
+ }
+}
diff --git a/src/shared/common.h b/src/shared/common.h
index e29c7b9..5defbb0 100644
--- a/src/shared/common.h
+++ b/src/shared/common.h
@@ -196,6 +196,10 @@ int parse_portmask(struct port_info *ports, uint16_t max_ports,
int parse_num_clients(uint16_t *num_clients, const char *clients);
int parse_server(char **server_ip, int *server_port, char *server_addr);
+void print_active_ports(char *str, uint16_t client_id,
+ struct port *ports_fwd_array,
+ struct port_map *port_map);
+
int spp_atoi(const char *str, int *val);
#define RTE_LOGTYPE_APP RTE_LOGTYPE_USER1
diff --git a/src/vm/main.c b/src/vm/main.c
index 7095446..c9f1571 100644
--- a/src/vm/main.c
+++ b/src/vm/main.c
@@ -191,56 +191,6 @@ forward_array_reset(void)
}
}
-/* print forward array active port */
-static void
-print_active_ports(char *str)
-{
- unsigned int i;
-
- sprintf(str, "%d\n", client_id);
- /* every elements value */
- for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
- if (ports_fwd_array[i].in_port_id == PORT_RESET)
- continue;
-
- RTE_LOG(INFO, APP, "Port ID %d\n", i);
- RTE_LOG(INFO, APP, "Status %d\n",
- ports_fwd_array[i].in_port_id);
-
- sprintf(str + strlen(str), "port id: %d,", i);
- if (ports_fwd_array[i].in_port_id != PORT_RESET)
- sprintf(str + strlen(str), "on,");
- else
- sprintf(str + strlen(str), "off,");
-
- switch (port_map[i].port_type) {
- case PHY:
- RTE_LOG(INFO, APP, "Type: PHY\n");
- sprintf(str + strlen(str), "PHY,");
- break;
- case RING:
- RTE_LOG(INFO, APP, "Type: RING\n");
- sprintf(str + strlen(str), "RING(%u),",
- port_map[i].id);
- break;
- case VHOST:
- RTE_LOG(INFO, APP, "Type: VHOST\n");
- sprintf(str + strlen(str), "VHOST(%u),",
- port_map[i].id);
- break;
- case UNDEF:
- RTE_LOG(INFO, APP, "Type: UDF\n");
- sprintf(str + strlen(str), "UDF,");
- break;
- }
-
- RTE_LOG(INFO, APP, "Out Port ID %d\n",
- ports_fwd_array[i].out_port_id);
- sprintf(str + strlen(str), "outport: %d\n",
- ports_fwd_array[i].out_port_id);
- }
-}
-
static void
forward_array_remove(int port_id)
{
@@ -456,7 +406,7 @@ parse_command(char *str)
i = sprintf(str, "Client ID %d Running\n", client_id);
else
i = sprintf(str, "Client ID %d Idling\n", client_id);
- print_active_ports(str + i);
+ print_active_ports(str + i, client_id, ports_fwd_array, port_map);
} else if (!strcmp(token_list[0], "_get_client_id")) {
memset(str, '\0', MSG_SIZE);
--
2.13.1
More information about the spp
mailing list