]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_evpn_mh.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / bgpd / bgp_evpn_mh.c
index bd32b4772b971ce00a17be64da4d1d358154314c..2f95023aa9773905472483278f12697858f9e08c 100644 (file)
@@ -1,20 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /* EVPN Multihoming procedures
  *
  * Copyright (C) 2019 Cumulus Networks, Inc.
  * Anuradha Karuppiah
  *
- * This file is part of FRR.
- *
- * FRRouting is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * FRRouting is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
  */
 
 #include <zebra.h>
@@ -753,9 +742,9 @@ int bgp_evpn_type4_route_process(struct peer *peer, afi_t afi, safi_t safi,
                           safi, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL,
                           0, 0, NULL);
        } else {
-               bgp_withdraw(peer, (struct prefix *)&p, addpath_id, attr, afi,
-                            safi, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd,
-                            NULL, 0, NULL);
+               bgp_withdraw(peer, (struct prefix *)&p, addpath_id, afi, safi,
+                            ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL, 0,
+                            NULL);
        }
        return 0;
 }
@@ -1221,9 +1210,9 @@ int bgp_evpn_type1_route_process(struct peer *peer, afi_t afi, safi_t safi,
                           safi, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL,
                           0, 0, NULL);
        } else {
-               bgp_withdraw(peer, (struct prefix *)&p, addpath_id, attr, afi,
-                            safi, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd,
-                            NULL, 0, NULL);
+               bgp_withdraw(peer, (struct prefix *)&p, addpath_id, afi, safi,
+                            ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL, 0,
+                            NULL);
        }
        return 0;
 }
@@ -2406,7 +2395,8 @@ static void bgp_evpn_es_json_frag_fill(json_object *json_frags,
        for (ALL_LIST_ELEMENTS_RO(es->es_frag_list, node, es_frag)) {
                json_frag = json_object_new_object();
 
-               json_object_string_addf(json_frag, "rd", "%pRD", &es_frag->prd);
+               json_object_string_addf(json_frag, "rd", "%pRDP",
+                                       &es_frag->prd);
                json_object_int_add(json_frag, "eviCount",
                                    listcount(es_frag->es_evi_frag_list));
 
@@ -2421,7 +2411,7 @@ static void bgp_evpn_es_frag_show_detail(struct vty *vty,
        struct bgp_evpn_es_frag *es_frag;
 
        for (ALL_LIST_ELEMENTS_RO(es->es_frag_list, node, es_frag)) {
-               vty_out(vty, "  %pRD EVIs: %d\n", &es_frag->prd,
+               vty_out(vty, "  %pRDP EVIs: %d\n", &es_frag->prd,
                        listcount(es_frag->es_evi_frag_list));
        }
 }
@@ -2535,7 +2525,7 @@ static void bgp_evpn_es_show_entry(struct vty *vty,
 
                json_object_string_add(json, "esi", es->esi_str);
                if (es->es_base_frag)
-                       json_object_string_addf(json, "rd", "%pRD",
+                       json_object_string_addf(json, "rd", "%pRDP",
                                                &es->es_base_frag->prd);
 
                if (es->flags & (BGP_EVPNES_LOCAL | BGP_EVPNES_REMOTE)) {
@@ -2573,7 +2563,7 @@ static void bgp_evpn_es_show_entry(struct vty *vty,
 
                bgp_evpn_es_vteps_str(vtep_str, es, sizeof(vtep_str));
 
-               vty_out(vty, "%-30s %-5s %-21pRD %-8d %s\n", es->esi_str,
+               vty_out(vty, "%-30s %-5s %-21pRDP %-8d %s\n", es->esi_str,
                        type_str, &es->es_base_frag->prd,
                        listcount(es->es_evi_list), vtep_str);
        }
@@ -2650,7 +2640,7 @@ static void bgp_evpn_es_show_entry_detail(struct vty *vty,
 
                vty_out(vty, "ESI: %s\n", es->esi_str);
                vty_out(vty, " Type: %s\n", type_str);
-               vty_out(vty, " RD: %pRD\n", &es->es_base_frag->prd);
+               vty_out(vty, " RD: %pRDP\n", &es->es_base_frag->prd);
                vty_out(vty, " Originator-IP: %pI4\n", &es->originator_ip);
                if (es->flags & BGP_EVPNES_LOCAL)
                        vty_out(vty, " Local ES DF preference: %u\n",
@@ -3969,7 +3959,8 @@ static void bgp_evpn_es_evi_show_entry(struct vty *vty,
                json_object *json_types;
 
                json_object_string_add(json, "esi", es_evi->es->esi_str);
-               json_object_int_add(json, "vni", es_evi->vpn->vni);
+               if (es_evi->vpn)
+                       json_object_int_add(json, "vni", es_evi->vpn->vni);
 
                if (es_evi->flags & (BGP_EVPNES_EVI_LOCAL |
                                        BGP_EVPNES_EVI_REMOTE)) {
@@ -4013,13 +4004,18 @@ static void bgp_evpn_es_evi_show_entry(struct vty *vty,
 static void bgp_evpn_es_evi_show_entry_detail(struct vty *vty,
                struct bgp_evpn_es_evi *es_evi, json_object *json)
 {
+       enum asnotation_mode mode;
+
+       mode = bgp_get_asnotation(es_evi->vpn->bgp_vrf);
+
        if (json) {
                json_object *json_flags;
 
                /* Add the "brief" info first */
                bgp_evpn_es_evi_show_entry(vty, es_evi, json);
                if (es_evi->es_frag)
-                       json_object_string_addf(json, "esFragmentRd", "%pRD",
+                       json_object_string_addf(json, "esFragmentRd",
+                                               BGP_RD_AS_FORMAT(mode),
                                                &es_evi->es_frag->prd);
                if (es_evi->flags & BGP_EVPNES_EVI_INCONS_VTEP_LIST) {
                        json_flags = json_object_new_array();
@@ -4043,9 +4039,12 @@ static void bgp_evpn_es_evi_show_entry_detail(struct vty *vty,
                vty_out(vty, "VNI: %d ESI: %s\n",
                                es_evi->vpn->vni, es_evi->es->esi_str);
                vty_out(vty, " Type: %s\n", type_str);
-               if (es_evi->es_frag)
-                       vty_out(vty, " ES fragment RD: %pRD\n",
+               if (es_evi->es_frag) {
+                       vty_out(vty, " ES fragment RD: ");
+                       vty_out(vty, BGP_RD_AS_FORMAT(mode),
                                &es_evi->es_frag->prd);
+                       vty_out(vty, "\n");
+               }
                vty_out(vty, " Inconsistencies: %s\n",
                        (es_evi->flags & BGP_EVPNES_EVI_INCONS_VTEP_LIST) ?
                        "es-vtep-mismatch":"-");