stream_free(s);
}
+static void bmp_send_peerdown_vrf_per_instance(struct bmp_targets *bt, struct bgp *bgp)
+{
+ struct stream *s;
+
+ s = bmp_peerstate(bgp->peer_self, true);
+ if (!s)
+ return;
+ bmp_send_bt(bt, s);
+ stream_free(s);
+}
+
/* send a stream to all bmp sessions configured in a bgp instance */
/* XXX: kludge - filling the pullwr's buffer */
static void bmp_send_all(struct bmp_bgp *bmpbgp, struct stream *s)
vty_out(vty, "%% BMP imported BGP instance not found\n");
return CMD_WARNING;
}
- /* TODO: handle loc-rib peer down change */
+ bgp = bgp_lookup_by_name(bib->name);
+ if (!bgp)
+ return CMD_WARNING;
+ bmp_send_peerdown_vrf_per_instance(bt, bgp);
bmp_imported_bgp_put(bt, bib);
return CMD_SUCCESS;
}
assert success, "Checking the updated prefixes has failed ! %s" % res
-def test_bmp_server_logging():
- """
- Assert the logging of the bmp server.
- """
-
- def check_for_log_file():
- tgen = get_topogen()
- output = tgen.gears["bmp1import"].run(
- "ls {}".format(os.path.join(tgen.logdir, "bmp1import"))
- )
- if "bmp.log" not in output:
- return False
- return True
-
- success, _ = topotest.run_and_expect(check_for_log_file, True, count=30, wait=1)
- assert success, "The BMP server is not logging"
-
-
-def test_peer_up():
+def _test_peer_up(check_locrib=True):
"""
Checking for BMP peers up messages
"""
tgen = get_topogen()
- peers = ["0.0.0.0", "192.168.1.3", "192:167::3"]
+ if check_locrib:
+ peers = ["0.0.0.0", "192.168.1.3", "192:167::3"]
+ else:
+ peers = ["192.168.1.3", "192:167::3"]
logger.info("checking for BMP peers up messages")
assert success, "Checking the updated prefixes has been failed !."
+def test_bmp_server_logging():
+ """
+ Assert the logging of the bmp server.
+ """
+
+ def check_for_log_file():
+ tgen = get_topogen()
+ output = tgen.gears["bmp1import"].run(
+ "ls {}".format(os.path.join(tgen.logdir, "bmp1import"))
+ )
+ if "bmp.log" not in output:
+ return False
+ return True
+
+ success, _ = topotest.run_and_expect(check_for_log_file, True, count=30, wait=1)
+ assert success, "The BMP server is not logging"
+
+
+def test_bmp_peer_up_start():
+ _test_peer_up()
+
+
def test_bmp_bgp_unicast():
"""
Add/withdraw bgp unicast prefixes and check the bmp logs.
assert success, "Checking the BMP peer up LOC-RIB message failed !."
+def test_peer_up_after_flush():
+ """
+ Checking for BMP peers down messages
+ """
+ _test_peer_up(check_locrib=False)
+
+
+def test_peer_down_locrib():
+ """
+ Checking for BMP peers down loc-rib messages
+ """
+ tgen = get_topogen()
+
+ tgen.gears["r1import"].vtysh_cmd(
+ """
+ configure terminal
+ router bgp 65501
+ bmp targets bmp1
+ no bmp import-vrf-view vrf1
+ """
+ )
+
+ peers = ["0.0.0.0"]
+
+ logger.info("checking for BMP peers down messages")
+
+ test_func = partial(
+ bmp_check_for_peer_message,
+ peers,
+ "peer down",
+ tgen.gears["bmp1import"],
+ os.path.join(tgen.logdir, "bmp1import", "bmp.log"),
+ )
+ success, _ = topotest.run_and_expect(test_func, True, count=30, wait=1)
+ assert success, "Checking the BMP peer down message has failed !."
+
+
if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
sys.exit(pytest.main(args))