]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospfd: fix display of plain-text data on "show ... json" commands
authorRenato Westphal <renato@opensourcerouting.org>
Fri, 8 Oct 2021 00:06:01 +0000 (21:06 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Fri, 8 Oct 2021 13:03:01 +0000 (10:03 -0300)
Add a 'json' parameter to the 'show_opaque_info' callback definition,
and update all instances of that callback to not display plain-text
data when the user requested JSON data.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
ospfd/ospf_apiserver.c
ospfd/ospf_apiserver.h
ospfd/ospf_ext.c
ospfd/ospf_gr_helper.c
ospfd/ospf_opaque.c
ospfd/ospf_opaque.h
ospfd/ospf_ri.c
ospfd/ospf_te.c

index cbd03441ef9415bdd8036161be336cf1ee81859c..a33ca957775d5d76134aabd94f9c4b90d2004179 100644 (file)
@@ -2059,7 +2059,8 @@ void ospf_apiserver_nsm_change(struct ospf_neighbor *nbr, int old_status)
        }
 }
 
-void ospf_apiserver_show_info(struct vty *vty, struct ospf_lsa *lsa)
+void ospf_apiserver_show_info(struct vty *vty, struct json_object *json,
+                             struct ospf_lsa *lsa)
 {
        struct opaque_lsa {
                struct lsa_header header;
@@ -2070,6 +2071,9 @@ void ospf_apiserver_show_info(struct vty *vty, struct ospf_lsa *lsa)
        struct opaque_lsa *olsa;
        int opaquelen;
 
+       if (json)
+               return;
+
        olsa = (struct opaque_lsa *)lsa->data;
 
        if (VALID_OPAQUE_INFO_LEN(lsa->data))
index 89a94749726c286044715f96546a034449a49490..544a32a28ce193e29cc897097072d69557270dde 100644 (file)
@@ -182,7 +182,8 @@ extern void ospf_apiserver_nsm_change(struct ospf_neighbor *nbr,
 extern void ospf_apiserver_config_write_router(struct vty *vty);
 extern void ospf_apiserver_config_write_if(struct vty *vty,
                                           struct interface *ifp);
-extern void ospf_apiserver_show_info(struct vty *vty, struct ospf_lsa *lsa);
+extern void ospf_apiserver_show_info(struct vty *vty, struct json_object *json,
+                                    struct ospf_lsa *lsa);
 extern int ospf_ospf_apiserver_lsa_originator(void *arg);
 extern struct ospf_lsa *ospf_apiserver_lsa_refresher(struct ospf_lsa *lsa);
 extern void ospf_apiserver_flush_opaque_lsa(struct ospf_apiserver *apiserv,
index 2d08eeece23427f715a674e24a366baf973198fb..ea1506ea277dbf38ce3ee7ba27c5ea377e03c2d9 100644 (file)
@@ -80,7 +80,8 @@ static struct ospf_ext_lp OspfEXT;
  */
 
 /* Extended Prefix Opaque LSA related callback functions */
-static void ospf_ext_pref_show_info(struct vty *vty, struct ospf_lsa *lsa);
+static void ospf_ext_pref_show_info(struct vty *vty, struct json_object *json,
+                                   struct ospf_lsa *lsa);
 static int ospf_ext_pref_lsa_originate(void *arg);
 static struct ospf_lsa *ospf_ext_pref_lsa_refresh(struct ospf_lsa *lsa);
 static void ospf_ext_pref_lsa_schedule(struct ext_itf *exti,
@@ -90,7 +91,8 @@ static int ospf_ext_link_new_if(struct interface *ifp);
 static int ospf_ext_link_del_if(struct interface *ifp);
 static void ospf_ext_ism_change(struct ospf_interface *oi, int old_status);
 static void ospf_ext_link_nsm_change(struct ospf_neighbor *nbr, int old_status);
-static void ospf_ext_link_show_info(struct vty *vty, struct ospf_lsa *lsa);
+static void ospf_ext_link_show_info(struct vty *vty, struct json_object *json,
+                                   struct ospf_lsa *lsa);
 static int ospf_ext_link_lsa_originate(void *arg);
 static struct ospf_lsa *ospf_ext_link_lsa_refresh(struct ospf_lsa *lsa);
 static void ospf_ext_link_lsa_schedule(struct ext_itf *exti,
@@ -1846,12 +1848,16 @@ static uint16_t show_vty_link_info(struct vty *vty, struct tlv_header *ext,
 }
 
 /* Extended Link TLVs */
-static void ospf_ext_link_show_info(struct vty *vty, struct ospf_lsa *lsa)
+static void ospf_ext_link_show_info(struct vty *vty, struct json_object *json,
+                                   struct ospf_lsa *lsa)
 {
        struct lsa_header *lsah = lsa->data;
        struct tlv_header *tlvh;
        uint16_t length = 0, sum = 0;
 
+       if (json)
+               return;
+
        /* Initialize TLV browsing */
        length = lsa->size - OSPF_LSA_HEADER_SIZE;
 
@@ -1932,12 +1938,16 @@ static uint16_t show_vty_pref_info(struct vty *vty, struct tlv_header *ext,
 }
 
 /* Extended Prefix TLVs */
-static void ospf_ext_pref_show_info(struct vty *vty, struct ospf_lsa *lsa)
+static void ospf_ext_pref_show_info(struct vty *vty, struct json_object *json,
+                                   struct ospf_lsa *lsa)
 {
        struct lsa_header *lsah = lsa->data;
        struct tlv_header *tlvh;
        uint16_t length = 0, sum = 0;
 
+       if (json)
+               return;
+
        /* Initialize TLV browsing */
        length = lsa->size - OSPF_LSA_HEADER_SIZE;
 
index b3eaf7bbdbb69137b0b7343ec64f6ec3b6b1d2d9..a58a120b6bab72c9f861823fa1d228778b4cc187 100644 (file)
@@ -75,7 +75,8 @@ static const char * const ospf_rejected_reason_desc[] = {
        "Router is in the process of graceful restart",
 };
 
-static void show_ospf_grace_lsa_info(struct vty *vty, struct ospf_lsa *lsa);
+static void show_ospf_grace_lsa_info(struct vty *vty, struct json_object *json,
+                                    struct ospf_lsa *lsa);
 static bool ospf_check_change_in_rxmt_list(struct ospf_neighbor *nbr);
 
 static unsigned int ospf_enable_rtr_hash_key(const void *data)
@@ -1012,7 +1013,8 @@ void ospf_gr_helper_set_supported_planned_only_restart(struct ospf *ospf,
  * Returns:
  *    Nothing.
  */
-static void show_ospf_grace_lsa_info(struct vty *vty, struct ospf_lsa *lsa)
+static void show_ospf_grace_lsa_info(struct vty *vty, struct json_object *json,
+                                    struct ospf_lsa *lsa)
 {
        struct lsa_header *lsah = NULL;
        struct tlv_header *tlvh = NULL;
@@ -1022,6 +1024,9 @@ static void show_ospf_grace_lsa_info(struct vty *vty, struct ospf_lsa *lsa)
        uint16_t length = 0;
        int sum = 0;
 
+       if (json)
+               return;
+
        lsah = (struct lsa_header *)lsa->data;
 
        if (lsa->size <= OSPF_LSA_HEADER_SIZE) {
index 955d9168c4c7e5f62e93bcd7503c98852d127104..a89e90bf70b424e32d37dcbe3c1bcaeac06a8595 100644 (file)
@@ -274,7 +274,8 @@ struct ospf_opaque_functab {
        void (*config_write_router)(struct vty *vty);
        void (*config_write_if)(struct vty *vty, struct interface *ifp);
        void (*config_write_debug)(struct vty *vty);
-       void (*show_opaque_info)(struct vty *vty, struct ospf_lsa *lsa);
+       void (*show_opaque_info)(struct vty *vty, struct json_object *json,
+                                struct ospf_lsa *lsa);
        int (*lsa_originator)(void *arg);
        struct ospf_lsa *(*lsa_refresher)(struct ospf_lsa *lsa);
        int (*new_lsa_hook)(struct ospf_lsa *lsa);
@@ -373,7 +374,8 @@ int ospf_register_opaque_functab(
        void (*config_write_router)(struct vty *vty),
        void (*config_write_if)(struct vty *vty, struct interface *ifp),
        void (*config_write_debug)(struct vty *vty),
-       void (*show_opaque_info)(struct vty *vty, struct ospf_lsa *lsa),
+       void (*show_opaque_info)(struct vty *vty, struct json_object *json,
+                                struct ospf_lsa *lsa),
        int (*lsa_originator)(void *arg),
        struct ospf_lsa *(*lsa_refresher)(struct ospf_lsa *lsa),
        int (*new_lsa_hook)(struct ospf_lsa *lsa),
@@ -1207,7 +1209,7 @@ void show_opaque_info_detail(struct vty *vty, struct ospf_lsa *lsa,
        /* Call individual output functions. */
        if ((functab = ospf_opaque_functab_lookup(lsa)) != NULL)
                if (functab->show_opaque_info != NULL)
-                       (*functab->show_opaque_info)(vty, lsa);
+                       (*functab->show_opaque_info)(vty, json, lsa);
 
        return;
 }
index 7d401c3dcc18a5adf074af0a602672caf74a29d0..bded32215b0d725c752ffc62e5006ea5b2dafe73 100644 (file)
@@ -136,7 +136,8 @@ extern int ospf_register_opaque_functab(
        void (*config_write_router)(struct vty *vty),
        void (*config_write_if)(struct vty *vty, struct interface *ifp),
        void (*config_write_debug)(struct vty *vty),
-       void (*show_opaque_info)(struct vty *vty, struct ospf_lsa *lsa),
+       void (*show_opaque_info)(struct vty *vty, struct json_object *json,
+                                struct ospf_lsa *lsa),
        int (*lsa_originator)(void *arg),
        struct ospf_lsa *(*lsa_refresher)(struct ospf_lsa *lsa),
        int (*new_lsa_hook)(struct ospf_lsa *lsa),
index 602f98d14179c4ef77c5afe5ccf17790cbbdf7dd..0efa6ca4d52abb84d9a56e19af2977021d2da23e 100644 (file)
@@ -73,7 +73,9 @@ static struct ospf_router_info OspfRI;
 static void ospf_router_info_ism_change(struct ospf_interface *oi,
                                        int old_status);
 static void ospf_router_info_config_write_router(struct vty *vty);
-static void ospf_router_info_show_info(struct vty *vty, struct ospf_lsa *lsa);
+static void ospf_router_info_show_info(struct vty *vty,
+                                      struct json_object *json,
+                                      struct ospf_lsa *lsa);
 static int ospf_router_info_lsa_originate(void *arg);
 static struct ospf_lsa *ospf_router_info_lsa_refresh(struct ospf_lsa *lsa);
 static void ospf_router_info_lsa_schedule(struct ospf_ri_area_info *ai,
@@ -1552,12 +1554,17 @@ static uint16_t show_vty_sr_msd(struct vty *vty, struct tlv_header *tlvh)
        return TLV_SIZE(tlvh);
 }
 
-static void ospf_router_info_show_info(struct vty *vty, struct ospf_lsa *lsa)
+static void ospf_router_info_show_info(struct vty *vty,
+                                      struct json_object *json,
+                                      struct ospf_lsa *lsa)
 {
        struct lsa_header *lsah = lsa->data;
        struct tlv_header *tlvh;
        uint16_t length = 0, sum = 0;
 
+       if (json)
+               return;
+
        /* Initialize TLV browsing */
        length = lsa->size - OSPF_LSA_HEADER_SIZE;
 
index d95e677f6f2bdb20d5d18930a0431dec3c95f128..03fa572859dd64ff08a68f1e68367f7e55ec4f06 100644 (file)
@@ -87,7 +87,8 @@ static int ospf_mpls_te_del_if(struct interface *ifp);
 static void ospf_mpls_te_ism_change(struct ospf_interface *oi, int old_status);
 static void ospf_mpls_te_nsm_change(struct ospf_neighbor *nbr, int old_status);
 static void ospf_mpls_te_config_write_router(struct vty *vty);
-static void ospf_mpls_te_show_info(struct vty *vty, struct ospf_lsa *lsa);
+static void ospf_mpls_te_show_info(struct vty *vty, struct json_object *json,
+                                  struct ospf_lsa *lsa);
 static int ospf_mpls_te_lsa_originate_area(void *arg);
 static int ospf_mpls_te_lsa_inter_as_as(void *arg);
 static int ospf_mpls_te_lsa_inter_as_area(void *arg);
@@ -3783,7 +3784,8 @@ static uint16_t ospf_mpls_te_show_link_subtlv(struct vty *vty,
        return sum;
 }
 
-static void ospf_mpls_te_show_info(struct vty *vty, struct ospf_lsa *lsa)
+static void ospf_mpls_te_show_info(struct vty *vty, struct json_object *json,
+                                  struct ospf_lsa *lsa)
 {
        struct lsa_header *lsah = lsa->data;
        struct tlv_header *tlvh, *next;
@@ -3791,6 +3793,9 @@ static void ospf_mpls_te_show_info(struct vty *vty, struct ospf_lsa *lsa)
        uint16_t (*subfunc)(struct vty * vty, struct tlv_header * tlvh,
                            uint16_t subtotal, uint16_t total) = NULL;
 
+       if (json)
+               return;
+
        sum = 0;
        total = lsa->size - OSPF_LSA_HEADER_SIZE;