isisd: do not add >63 IP addresses to hello

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>
diff --git a/isisd/isis_tlv.c b/isisd/isis_tlv.c
index f3b2c33..ed3e0e8 100644
--- a/isisd/isis_tlv.c
+++ b/isisd/isis_tlv.c
@@ -932,10 +932,9 @@
     {
       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;