]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: fix ipv6 metric endianness
authorNick Hilliard <nick@inex.ie>
Wed, 28 Nov 2012 14:39:56 +0000 (14:39 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Wed, 12 Dec 2012 14:38:14 +0000 (15:38 +0100)
the isis ipv6 reachability metric is transmitted in big endian / network
format, but isis_spf_process_lsp() does not convert this into host endian
format when mucking around with local cost + received metric.  This patch
fixes this problem and makes received ipv6 metrics work properly on
little-endian machines.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
isisd/isis_spf.c

index e0a8d01cca9c00f4255d16a0923e19da7775b160..fd93efa6592178f974e59be18ce1cd8ab878d782 100644 (file)
@@ -833,7 +833,7 @@ lspfragloop:
     {
       assert (ip6reach->prefix_len <= IPV6_MAX_BITLEN);
 
-      dist = cost + ip6reach->metric;
+      dist = cost + ntohl(ip6reach->metric);
       vtype = (ip6reach->control_info & CTRL_INFO_DISTRIBUTION) ?
         VTYPE_IP6REACH_EXTERNAL : VTYPE_IP6REACH_INTERNAL;
       prefix.prefixlen = ip6reach->prefix_len;