Skip to content

Commit

Permalink
bgpd: Fix match peer when switching between IPv4/IPv6/interface
Browse files Browse the repository at this point in the history
Without this patch we MUST follow this sequence:

```
no match peer 10.0.0.1
match peer 2a01::1
```

Otherwise, both IPv4/IPv6 values are set/compiled, thus when printing the
configuration in show running, we see the first one (IPv4).

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit edfc036)
  • Loading branch information
ton31337 authored and mergify[bot] committed May 20, 2024
1 parent 488c106 commit ad48857
Showing 1 changed file with 17 additions and 21 deletions.
38 changes: 17 additions & 21 deletions bgpd/bgp_routemap.c
Original file line number Diff line number Diff line change
Expand Up @@ -5200,27 +5200,23 @@ DEFPY_YANG (match_peer,

nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);

if (addrv4_str) {
snprintf(
xpath_value, sizeof(xpath_value),
"%s/rmap-match-condition/frr-bgp-route-map:peer-ipv4-address",
xpath);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_MODIFY,
addrv4_str);
} else if (addrv6_str) {
snprintf(
xpath_value, sizeof(xpath_value),
"%s/rmap-match-condition/frr-bgp-route-map:peer-ipv6-address",
xpath);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_MODIFY,
addrv6_str);
} else {
snprintf(
xpath_value, sizeof(xpath_value),
"%s/rmap-match-condition/frr-bgp-route-map:peer-interface",
xpath);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_MODIFY, intf);
}
snprintf(xpath_value, sizeof(xpath_value),
"%s/rmap-match-condition/frr-bgp-route-map:peer-ipv4-address",
xpath);
nb_cli_enqueue_change(vty, xpath_value,
addrv4_str ? NB_OP_MODIFY : NB_OP_DESTROY,
addrv4_str);
snprintf(xpath_value, sizeof(xpath_value),
"%s/rmap-match-condition/frr-bgp-route-map:peer-ipv6-address",
xpath);
nb_cli_enqueue_change(vty, xpath_value,
addrv6_str ? NB_OP_MODIFY : NB_OP_DESTROY,
addrv6_str);
snprintf(xpath_value, sizeof(xpath_value),
"%s/rmap-match-condition/frr-bgp-route-map:peer-interface",
xpath);
nb_cli_enqueue_change(vty, xpath_value,
intf ? NB_OP_MODIFY : NB_OP_DESTROY, intf);

return nb_cli_apply_changes(vty, NULL);
}
Expand Down

0 comments on commit ad48857

Please sign in to comment.