summaryrefslogtreecommitdiff
path: root/lib/command.c
diff options
context:
space:
mode:
authorTrey Aspelund <taspelund@nvidia.com>2021-05-21 22:04:15 +0000
committerTrey Aspelund <taspelund@nvidia.com>2021-05-21 22:25:24 +0000
commit4718791c8f7101379f99fa7174e8ccaf80573433 (patch)
tree9e1a0b08156045d26329d1ee44c420c08d9215fe /lib/command.c
parent80b82d528917dd168d94d1ceac920a81dcf9dea1 (diff)
lib: fix handling of rmap prefix-tree default node
Prior to this commit, updating a prefix-list that is referenced by a route-map clause will unconditionally delete the root node of that route-map's prefix-tree (used with route-map optimization). This is problematic because routes not matching a more specific node in the tree (i.e. other prefix-list sequences) will not fall-back to the default node, thus they will not hit any route-map sequences. This commit ensures that an update to a prefix-list will only delete the default node while adding the first/only seq to the list. Example config: ======== ip prefix-list peer475-out-pfxlist seq 45 permit 2.138.0.0/16 ip prefix-list peer475-out-pfxlist seq 50 permit 0.0.0.0/0 ! route-map peer475-out permit 5 match ip address prefix-list peer475-out-pfxlist Before: ======== ub20# do show route-map peer475-out prefix-table ZEBRA: IPv4 Prefix Route-map Index List _______________ ____________________ 0.0.0.0/0 (2) (P) peer475-out seq 5 2.138.0.0/16 (2) (P) 0.0.0.0/0 peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ BGP: IPv4 Prefix Route-map Index List _______________ ____________________ 0.0.0.0/0 (2) (P) peer475-out seq 5 2.138.0.0/16 (2) (P) 0.0.0.0/0 peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ ub20# conf t ub20(config)# ip prefix-list peer475-out-pfxlist seq 45 permit 2.138.0.0/16 le 32 ub20(config)# do show route-map peer475-out prefix-table ZEBRA: IPv4 Prefix Route-map Index List _______________ ____________________ 2.138.0.0/16 (2) (P) peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ BGP: IPv4 Prefix Route-map Index List _______________ ____________________ 2.138.0.0/16 (2) (P) peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ ub20(config)# After: ======== ub20(config)# do show route-map peer475-out prefix-table ZEBRA: IPv4 Prefix Route-map Index List _______________ ____________________ 0.0.0.0/0 (2) (P) peer475-out seq 5 2.138.0.0/16 (2) (P) 0.0.0.0/0 peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ BGP: IPv4 Prefix Route-map Index List _______________ ____________________ 0.0.0.0/0 (2) (P) peer475-out seq 5 2.138.0.0/16 (2) (P) 0.0.0.0/0 peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ ub20(config)# ip prefix-list peer475-out-pfxlist seq 45 permit 2.138.0.0/16 le 32 ub20(config)# do show route-map peer475-out prefix-table ZEBRA: IPv4 Prefix Route-map Index List _______________ ____________________ 0.0.0.0/0 (2) (P) peer475-out seq 5 2.138.0.0/16 (2) (P) 0.0.0.0/0 peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ BGP: IPv4 Prefix Route-map Index List _______________ ____________________ 0.0.0.0/0 (2) (P) peer475-out seq 5 2.138.0.0/16 (2) (P) 0.0.0.0/0 peer475-out seq 5 IPv6 Prefix Route-map Index List _______________ ____________________ ub20(config)# Fixes: 8410 Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
Diffstat (limited to 'lib/command.c')
0 files changed, 0 insertions, 0 deletions