mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 00:41:20 +00:00
bgpd: reduce cut-n-paste code in bgp_pbr.c
Create a function bgp_bpr_bpa_remove that is this cut-n-paste code: if (bpa->refcnt == 0) { if (bpa->installed && bpa->table_id != 0) { bgp_send_pbr_rule_action(bpa, NULL, false); bgp_zebra_announce_default(bpa->bgp, &(bpa->nh), AFI_IP, bpa->table_id, false); bpa->installed = false; } } Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
03b682be62
commit
ebd1a47c95
@ -1072,22 +1072,22 @@ static void *bgp_pbr_rule_alloc_intern(void *arg)
|
|||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void bgp_pbr_bpa_remove(struct bgp_pbr_action *bpa)
|
||||||
|
{
|
||||||
|
if ((bpa->refcnt == 0) && bpa->installed && bpa->table_id != 0) {
|
||||||
|
bgp_send_pbr_rule_action(bpa, NULL, false);
|
||||||
|
bgp_zebra_announce_default(bpa->bgp, &bpa->nh, bpa->afi,
|
||||||
|
bpa->table_id, false);
|
||||||
|
bpa->installed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void bgp_pbr_action_free(void *arg)
|
static void bgp_pbr_action_free(void *arg)
|
||||||
{
|
{
|
||||||
struct bgp_pbr_action *bpa;
|
struct bgp_pbr_action *bpa = arg;
|
||||||
|
|
||||||
bpa = (struct bgp_pbr_action *)arg;
|
bgp_pbr_bpa_remove(bpa);
|
||||||
|
|
||||||
if (bpa->refcnt == 0) {
|
|
||||||
if (bpa->installed && bpa->table_id != 0) {
|
|
||||||
bgp_send_pbr_rule_action(bpa, NULL, false);
|
|
||||||
bgp_zebra_announce_default(bpa->bgp, &(bpa->nh),
|
|
||||||
AFI_IP,
|
|
||||||
bpa->table_id,
|
|
||||||
false);
|
|
||||||
bpa->installed = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
XFREE(MTYPE_PBR_ACTION, bpa);
|
XFREE(MTYPE_PBR_ACTION, bpa);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1691,16 +1691,7 @@ static void bgp_pbr_flush_iprule(struct bgp *bgp, struct bgp_pbr_action *bpa,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
hash_release(bgp->pbr_rule_hash, bpr);
|
hash_release(bgp->pbr_rule_hash, bpr);
|
||||||
if (bpa->refcnt == 0) {
|
bgp_pbr_bpa_remove(bpa);
|
||||||
if (bpa->installed && bpa->table_id != 0) {
|
|
||||||
bgp_send_pbr_rule_action(bpa, NULL, false);
|
|
||||||
bgp_zebra_announce_default(bpa->bgp, &(bpa->nh),
|
|
||||||
AFI_IP,
|
|
||||||
bpa->table_id,
|
|
||||||
false);
|
|
||||||
bpa->installed = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bgp_pbr_flush_entry(struct bgp *bgp, struct bgp_pbr_action *bpa,
|
static void bgp_pbr_flush_entry(struct bgp *bgp, struct bgp_pbr_action *bpa,
|
||||||
@ -1748,16 +1739,7 @@ static void bgp_pbr_flush_entry(struct bgp *bgp, struct bgp_pbr_action *bpa,
|
|||||||
* note that drop does not need to call send_pbr_action
|
* note that drop does not need to call send_pbr_action
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
if (bpa->refcnt == 0) {
|
bgp_pbr_bpa_remove(bpa);
|
||||||
if (bpa->installed && bpa->table_id != 0) {
|
|
||||||
bgp_send_pbr_rule_action(bpa, NULL, false);
|
|
||||||
bgp_zebra_announce_default(bpa->bgp, &(bpa->nh),
|
|
||||||
bpa->afi,
|
|
||||||
bpa->table_id,
|
|
||||||
false);
|
|
||||||
bpa->installed = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct bgp_pbr_match_entry_remain {
|
struct bgp_pbr_match_entry_remain {
|
||||||
|
Loading…
Reference in New Issue
Block a user