Merge pull request #7454 from ranjanyash54/dev_8

ospf6d: Json support added for command "show ipv6 ospf6 interface traffic [json]"
This commit is contained in:
Donald Sharp 2020-11-18 18:37:30 -05:00 committed by GitHub
commit b84696e6c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 139 additions and 33 deletions

View File

@ -187,6 +187,13 @@ Showing OSPF6 information
Shows state and chosen (Backup) DR of neighbor. JSON output can be Shows state and chosen (Backup) DR of neighbor. JSON output can be
obtained by appending 'json' at the end. obtained by appending 'json' at the end.
.. index:: show ipv6 ospf6 interface traffic [json]
.. clicmd:: show ipv6 ospf6 interface traffic [json]
Shows counts of different packets that have been recieved and transmitted
by the interfaces. JSON output can be obtained by appending "json" at the
end.
.. index:: show ipv6 ospf6 request-list A.B.C.D .. index:: show ipv6 ospf6 request-list A.B.C.D
.. clicmd:: show ipv6 ospf6 request-list A.B.C.D .. clicmd:: show ipv6 ospf6 request-list A.B.C.D

View File

@ -1217,18 +1217,20 @@ DEFUN(show_ipv6_ospf6_interface,
static int ospf6_interface_show_traffic(struct vty *vty, static int ospf6_interface_show_traffic(struct vty *vty,
struct interface *intf_ifp, struct interface *intf_ifp,
int display_once) int display_once, json_object *json,
bool use_json)
{ {
struct interface *ifp; struct interface *ifp;
struct vrf *vrf = NULL; struct vrf *vrf = NULL;
struct ospf6_interface *oi = NULL; struct ospf6_interface *oi = NULL;
json_object *json_interface;
if (intf_ifp) if (intf_ifp)
vrf = vrf_lookup_by_id(intf_ifp->vrf_id); vrf = vrf_lookup_by_id(intf_ifp->vrf_id);
else else
vrf = vrf_lookup_by_id(VRF_DEFAULT); vrf = vrf_lookup_by_id(VRF_DEFAULT);
if (!display_once) { if (!display_once && !use_json) {
vty_out(vty, "\n"); vty_out(vty, "\n");
vty_out(vty, "%-12s%-17s%-17s%-17s%-17s%-17s\n", "Interface", vty_out(vty, "%-12s%-17s%-17s%-17s%-17s%-17s\n", "Interface",
" HELLO", " DB-Desc", " LS-Req", " LS-Update", " HELLO", " DB-Desc", " LS-Req", " LS-Update",
@ -1247,24 +1249,81 @@ static int ospf6_interface_show_traffic(struct vty *vty,
else else
continue; continue;
if (use_json) {
json_interface = json_object_new_object();
json_object_int_add(json_interface, "helloRx",
oi->hello_in);
json_object_int_add(json_interface, "helloTx",
oi->hello_out);
json_object_int_add(json_interface, "dbDescRx",
oi->db_desc_in);
json_object_int_add(json_interface, "dbDescTx",
oi->db_desc_out);
json_object_int_add(json_interface, "lsReqRx",
oi->ls_req_in);
json_object_int_add(json_interface, "lsReqTx",
oi->ls_req_out);
json_object_int_add(json_interface,
"lsUpdateRx",
oi->ls_upd_in);
json_object_int_add(json_interface,
"lsUpdateTx",
oi->ls_upd_out);
json_object_int_add(json_interface, "lsAckRx",
oi->ls_ack_in);
json_object_int_add(json_interface, "lsAckTx",
oi->ls_ack_out);
json_object_object_add(json,
oi->interface->name,
json_interface);
} else
vty_out(vty, vty_out(vty,
"%-10s %8u/%-8u %7u/%-7u %7u/%-7u %7u/%-7u %7u/%-7u\n", "%-10s %8u/%-8u %7u/%-7u %7u/%-7u %7u/%-7u %7u/%-7u\n",
oi->interface->name, oi->hello_in, oi->interface->name, oi->hello_in,
oi->hello_out, oi->db_desc_in, oi->db_desc_out, oi->hello_out, oi->db_desc_in,
oi->ls_req_in, oi->ls_req_out, oi->ls_upd_in, oi->db_desc_out, oi->ls_req_in,
oi->ls_upd_out, oi->ls_ack_in, oi->ls_ack_out); oi->ls_req_out, oi->ls_upd_in,
oi->ls_upd_out, oi->ls_ack_in,
oi->ls_ack_out);
} }
} else { } else {
oi = intf_ifp->info; oi = intf_ifp->info;
if (oi == NULL) if (oi == NULL)
return CMD_WARNING; return CMD_WARNING;
if (use_json) {
json_interface = json_object_new_object();
json_object_int_add(json_interface, "helloRx",
oi->hello_in);
json_object_int_add(json_interface, "helloTx",
oi->hello_out);
json_object_int_add(json_interface, "dbDescRx",
oi->db_desc_in);
json_object_int_add(json_interface, "dbDescTx",
oi->db_desc_out);
json_object_int_add(json_interface, "lsReqRx",
oi->ls_req_in);
json_object_int_add(json_interface, "lsReqTx",
oi->ls_req_out);
json_object_int_add(json_interface, "lsUpdateRx",
oi->ls_upd_in);
json_object_int_add(json_interface, "lsUpdateTx",
oi->ls_upd_out);
json_object_int_add(json_interface, "lsAckRx",
oi->ls_ack_in);
json_object_int_add(json_interface, "lsAckTx",
oi->ls_ack_out);
json_object_object_add(json, oi->interface->name,
json_interface);
} else
vty_out(vty, vty_out(vty,
"%-10s %8u/%-8u %7u/%-7u %7u/%-7u %7u/%-7u %7u/%-7u\n", "%-10s %8u/%-8u %7u/%-7u %7u/%-7u %7u/%-7u %7u/%-7u\n",
oi->interface->name, oi->hello_in, oi->hello_out, oi->interface->name, oi->hello_in,
oi->db_desc_in, oi->db_desc_out, oi->ls_req_in, oi->hello_out, oi->db_desc_in, oi->db_desc_out,
oi->ls_req_out, oi->ls_upd_in, oi->ls_upd_out, oi->ls_req_in, oi->ls_req_out, oi->ls_upd_in,
oi->ls_ack_in, oi->ls_ack_out); oi->ls_upd_out, oi->ls_ack_in, oi->ls_ack_out);
} }
return CMD_SUCCESS; return CMD_SUCCESS;
@ -1273,24 +1332,56 @@ static int ospf6_interface_show_traffic(struct vty *vty,
/* show interface */ /* show interface */
DEFUN(show_ipv6_ospf6_interface_traffic, DEFUN(show_ipv6_ospf6_interface_traffic,
show_ipv6_ospf6_interface_traffic_cmd, show_ipv6_ospf6_interface_traffic_cmd,
"show ipv6 ospf6 interface traffic [IFNAME]", "show ipv6 ospf6 interface traffic [IFNAME] [json]",
SHOW_STR SHOW_STR
IP6_STR IP6_STR
OSPF6_STR OSPF6_STR
INTERFACE_STR INTERFACE_STR
"Protocol Packet counters\n" "Protocol Packet counters\n"
IFNAME_STR) IFNAME_STR
JSON_STR)
{ {
int idx_ifname = 0; int idx_ifname = 0;
int display_once = 0; int display_once = 0;
char *intf_name = NULL; char *intf_name = NULL;
struct interface *ifp = NULL; struct interface *ifp = NULL;
json_object *json = NULL;
bool uj = use_json(argc, argv);
if (uj)
json = json_object_new_object();
if (argv_find(argv, argc, "IFNAME", &idx_ifname)) { if (argv_find(argv, argc, "IFNAME", &idx_ifname)) {
intf_name = argv[idx_ifname]->arg; intf_name = argv[idx_ifname]->arg;
ifp = if_lookup_by_name(intf_name, VRF_DEFAULT); ifp = if_lookup_by_name(intf_name, VRF_DEFAULT);
if (uj) {
if (ifp == NULL) { if (ifp == NULL) {
vty_out(vty, "No such Interface: %s\n", intf_name); json_object_string_add(json, "status",
"No Such Interface");
json_object_string_add(json, "interface",
intf_name);
vty_out(vty, "%s\n",
json_object_to_json_string_ext(
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json);
return CMD_WARNING;
}
if (ifp->info == NULL) {
json_object_string_add(
json, "status",
"OSPF not enabled on this interface");
json_object_string_add(json, "interface",
intf_name);
vty_out(vty, "%s\n",
json_object_to_json_string_ext(
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json);
return 0;
}
} else {
if (ifp == NULL) {
vty_out(vty, "No such Interface: %s\n",
intf_name);
return CMD_WARNING; return CMD_WARNING;
} }
if (ifp->info == NULL) { if (ifp->info == NULL) {
@ -1300,8 +1391,16 @@ DEFUN (show_ipv6_ospf6_interface_traffic,
return 0; return 0;
} }
} }
}
ospf6_interface_show_traffic(vty, ifp, display_once); ospf6_interface_show_traffic(vty, ifp, display_once, json, uj);
if (uj) {
vty_out(vty, "%s\n",
json_object_to_json_string_ext(
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json);
}
return CMD_SUCCESS; return CMD_SUCCESS;