diff options
| author | Tuetuopay <tuetuopay@me.com> | 2025-03-14 20:21:46 +0100 |
|---|---|---|
| committer | Tuetuopay <tuetuopay@me.com> | 2025-03-17 12:08:02 +0100 |
| commit | 0b0e7015971a788c14dd1dc9b5bac8cb66175c29 (patch) | |
| tree | 19ea13b098be463243e7f2f7d1dd1e41b3ce1ea5 /lib/agg_table.c | |
| parent | 2ab8cce2e189a4f222a21e3d59c4b49854919ee4 (diff) | |
bgpd: fix `set evpn gateway-ip ipv[46]` route-map
The `route_set_evpn_gateway_ip` function copies `gw_ip->ip.addr` in the
route's gateway ip. In a nutshell, this skips the `ipa_type` field,
writing the actual IP in the IP type. This later rightfully trips
asserts about unknown IP types.
The following route-map...
```
route-map test permit 10
set evpn gateway-ip ipv4 1.1.1.1
```
...will make the following gateway IP in the route:
```
(gdb) p/x a1->evpn_overlay->gw_ip
$11 = {ipa_type = 0x1010101, ip = {addr = 0x0, addrbytes = {
0x0 <repeats 16 times>}, _v4_addr = {s_addr = 0x0}, _v6_addr = {
__in6_u = {__u6_addr8 = {0x0 <repeats 16 times>}, __u6_addr16 = {0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, __u6_addr32 = {0x0, 0x0, 0x0,
0x0}}}}}
```
We do indeed see the IP Address in the `ipa_type` field.
Fix by starting the memcpy at the root of `struct ipaddr` instead of
skipping the `ipa_type` field.
Fixes: d0a4ee6010a ("bgpd: Add "set evpn gateway-ip" clause for route-map")
Signed-off-by: Tuetuopay <tuetuopay@me.com>
Diffstat (limited to 'lib/agg_table.c')
0 files changed, 0 insertions, 0 deletions
