diff options
author | Lu Feng <lu.feng@6wind.com> | 2014-07-11 07:52:15 +0000 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2014-09-15 18:37:14 +0200 |
commit | 621e2aaf33d8ab73bf44b0eea3f3900135d34996 (patch) | |
tree | a97a9b0c33a6591ade083afbe7ed8eb46100a651 /zebra/rt_netlink.c | |
parent | 0b74a0a5db7bcf65bf68c44b547b02b1310b5cdb (diff) | |
download | quagga-621e2aaf33d8ab73bf44b0eea3f3900135d34996.tar.bz2 quagga-621e2aaf33d8ab73bf44b0eea3f3900135d34996.tar.xz |
zebra: fix rtnh_len in the rt_netlink messages for multipath case
In _netlink_route_build_multipath():
- Each time when appending a IPv4 gateway in the message, rtnh_len
is increased by sizeof (struct rtattr) + 4, where we should use
"bytelen" instead of the hard coding "4".
- As what done for IPv4, we should increase rtnh_len accordingly
along with adding a IPv6 gateway, or else the IPv6 gateways will
be lost.
Signed-off-by: Feng Lu <lu.feng@6wind.com>
Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'zebra/rt_netlink.c')
-rw-r--r-- | zebra/rt_netlink.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 95a82fd2..f3cdcdc3 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -1561,7 +1561,7 @@ _netlink_route_build_multipath( { rta_addattr_l (rta, NL_PKT_BUF_SIZE, RTA_GATEWAY, &nexthop->gate.ipv4, bytelen); - rtnh->rtnh_len += sizeof (struct rtattr) + 4; + rtnh->rtnh_len += sizeof (struct rtattr) + bytelen; if (nexthop->src.ipv4.s_addr) *src = &nexthop->src; @@ -1580,6 +1580,7 @@ _netlink_route_build_multipath( { rta_addattr_l (rta, NL_PKT_BUF_SIZE, RTA_GATEWAY, &nexthop->gate.ipv6, bytelen); + rtnh->rtnh_len += sizeof (struct rtattr) + bytelen; if (IS_ZEBRA_DEBUG_KERNEL) zlog_debug("netlink_route_multipath() (%s): " |