mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 14:42:06 +00:00
pbrd: If changing policy on an interface be careful what you ask for
When changing policy on an interface, only delete the old_pbrm if it is different than the current, this covers the case: current config: int swp1 pbr-policy DONNA To a config entered of: int swp1 pbr-policy EVA Additionally there is no need to reinstall if we enter the same pbr-policy two times in a row. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
7e737f3d40
commit
6eb499b031
@ -349,6 +349,7 @@ DEFPY (pbr_policy,
|
||||
struct pbr_map *pbrm, *old_pbrm;
|
||||
struct pbr_interface *pbr_ifp = ifp->info;
|
||||
|
||||
old_pbrm = NULL;
|
||||
pbrm = pbrm_find(mapname);
|
||||
|
||||
if (!pbr_ifp) {
|
||||
@ -369,12 +370,23 @@ DEFPY (pbr_policy,
|
||||
} else {
|
||||
if (strcmp(pbr_ifp->mapname, "") != 0) {
|
||||
old_pbrm = pbrm_find(pbr_ifp->mapname);
|
||||
if (old_pbrm)
|
||||
|
||||
/*
|
||||
* So if we have an old pbrm we should only
|
||||
* delete it if we are actually deleting and
|
||||
* moving to a new pbrm
|
||||
*/
|
||||
if (old_pbrm && old_pbrm != pbrm)
|
||||
pbr_map_interface_delete(old_pbrm, ifp);
|
||||
}
|
||||
snprintf(pbr_ifp->mapname, sizeof(pbr_ifp->mapname),
|
||||
"%s", mapname);
|
||||
if (pbrm)
|
||||
|
||||
/*
|
||||
* So only reinstall if the old_pbrm and this pbrm are
|
||||
* different.
|
||||
*/
|
||||
if (pbrm && pbrm != old_pbrm)
|
||||
pbr_map_add_interface(pbrm, ifp);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user