summaryrefslogtreecommitdiff
path: root/pimd/pim_msdp.c
diff options
context:
space:
mode:
authorRafael Zalamena <rzalamena@opensourcerouting.org>2022-05-10 08:23:40 -0300
committerRafael Zalamena <rzalamena@opensourcerouting.org>2024-12-05 10:38:52 -0300
commita38ed18a4ed77a31584f2692da6f40fb53cd47fe (patch)
tree28dbdb64a24f77f021507dfafe00e74119cbcd3b /pimd/pim_msdp.c
parentc8ded86e9ef9aa4182f2b6f86a1467532e06f29e (diff)
pimd: implement MSDP peer SA limiting
Implement a command to enable/disable per peer MSDP SA limiting. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_msdp.c')
-rw-r--r--pimd/pim_msdp.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c
index ae887b2482..bd86ca502d 100644
--- a/pimd/pim_msdp.c
+++ b/pimd/pim_msdp.c
@@ -359,6 +359,15 @@ void pim_msdp_sa_ref(struct pim_instance *pim, struct pim_msdp_peer *mp,
struct rp_info *rp_info;
struct prefix grp;
+ /* Check peer SA limit. */
+ if (mp && mp->sa_limit && mp->sa_cnt >= mp->sa_limit) {
+ if (pim_msdp_log_sa_events(pim))
+ zlog_debug("MSDP peer %pI4 reject SA (%pI4, %pI4): SA limit %u of %u",
+ &mp->peer, &sg->src, &sg->grp, mp->sa_cnt, mp->sa_limit);
+
+ return;
+ }
+
sa = pim_msdp_sa_add(pim, sg, rp);
if (!sa) {
return;
@@ -1316,6 +1325,9 @@ bool pim_msdp_peer_config_write(struct vty *vty, struct pim_instance *pim)
vty_out(vty, " msdp peer %pI4 sa-filter %s out\n",
&mp->peer, mp->acl_out);
+ if (mp->sa_limit)
+ vty_out(vty, " msdp peer %pI4 sa-limit %u\n", &mp->peer, mp->sa_limit);
+
written = true;
}