summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLu Feng <lu.feng@6wind.com>2014-07-11 07:52:15 +0000
committerDavid Lamparter <equinox@opensourcerouting.org>2014-09-15 18:37:14 +0200
commit621e2aaf33d8ab73bf44b0eea3f3900135d34996 (patch)
treea97a9b0c33a6591ade083afbe7ed8eb46100a651
parent0b74a0a5db7bcf65bf68c44b547b02b1310b5cdb (diff)
downloadquagga-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>
-rw-r--r--zebra/rt_netlink.c3
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): "