]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: advertise svi ip as macip zebra parse api
authorChirag Shah <chirag@cumulusnetworks.com>
Mon, 4 Feb 2019 01:29:59 +0000 (17:29 -0800)
committerChirag Shah <chirag@cumulusnetworks.com>
Thu, 7 Feb 2019 03:57:40 +0000 (19:57 -0800)
Ticket:CM-23782

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
bgpd/bgp_zebra.c
bgpd/bgp_zebra.h

index a477c3d34e58054bec9a6e04577a5e7f15b9fe25..3f18d69a2d6a5333b71f74960148e3be0c45805d 100644 (file)
@@ -1936,6 +1936,29 @@ int bgp_zebra_advertise_subnet(struct bgp *bgp, int advertise, vni_t vni)
        return zclient_send_message(zclient);
 }
 
+int bgp_zebra_advertise_svi_macip(struct bgp *bgp, int advertise, vni_t vni)
+{
+       struct stream *s = NULL;
+
+       /* Check socket. */
+       if (!zclient || zclient->sock < 0)
+               return 0;
+
+       /* Don't try to register if Zebra doesn't know of this instance. */
+       if (!IS_BGP_INST_KNOWN_TO_ZEBRA(bgp))
+               return 0;
+
+       s = zclient->obuf;
+       stream_reset(s);
+
+       zclient_create_header(s, ZEBRA_ADVERTISE_SVI_MACIP, bgp->vrf_id);
+       stream_putc(s, advertise);
+       stream_putl(s, vni);
+       stream_putw_at(s, 0, stream_get_endp(s));
+
+       return zclient_send_message(zclient);
+}
+
 int bgp_zebra_advertise_gw_macip(struct bgp *bgp, int advertise, vni_t vni)
 {
        struct stream *s = NULL;
index c6520c43e4e16583f38d3f498e4cfaa4ffde1f0a..fc19c5e17f5c6bd3ab1ecd79418b051cc42b18f6 100644 (file)
@@ -72,6 +72,8 @@ extern struct interface *if_lookup_by_ipv6_exact(struct in6_addr *, ifindex_t,
 extern int bgp_zebra_advertise_subnet(struct bgp *bgp, int advertise,
                                      vni_t vni);
 extern int bgp_zebra_advertise_gw_macip(struct bgp *, int, vni_t);
+extern int bgp_zebra_advertise_svi_macip(struct bgp *bgp, int advertise,
+                                        vni_t vni);
 extern int bgp_zebra_advertise_all_vni(struct bgp *, int);
 extern int bgp_zebra_dup_addr_detection(struct bgp *bgp);
 extern int bgp_zebra_vxlan_flood_control(struct bgp *bgp,