]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: do not add >63 IP addresses to hello
authorDavid Lamparter <equinox@opensourcerouting.org>
Tue, 27 Nov 2012 01:10:24 +0000 (01:10 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Wed, 12 Dec 2012 14:38:07 +0000 (15:38 +0100)
RFC1195 s4.2 "Multiple IP Addresses per Interface" explicitly forbids us
from adding multiple tuples of IP addresses, putting a hard cutoff at 63
IP addresses.

* isisd/isis_tlv.c: cut off (and return success) at 63 addrs.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Tested-by: Martin Winter <mwinter@opensourcerouting.org>
isisd/isis_tlv.c

index f3b2c338f5e9691b635966e2fb3f0cf4fa35ea03..ed3e0e81c33e30e55aea49db96a3139507ae5f35 100644 (file)
@@ -932,10 +932,9 @@ tlv_add_ip_addrs (struct list *ip_addrs, struct stream *stream)
     {
       if (pos - value + IPV4_MAX_BYTELEN > 255)
        {
-         retval = add_tlv (IPV4_ADDR, pos - value, value, stream);
-         if (retval != ISIS_OK)
-           return retval;
-         pos = value;
+         /* RFC 1195 s4.2: only one tuple of 63 allowed. */
+         zlog_warn ("tlv_add_ip_addrs(): cutting off at 63 IP addresses");
+         break;
        }
       *(u_int32_t *) pos = ipv4->prefix.s_addr;
       pos += IPV4_MAX_BYTELEN;