ospf6d: solve segfaults with ospf6d on FreeBSD
Do not send ospf6d hellos on fresh created interfaces without
configuration (ie. no vlan configured). Ospf6d use ip6_mtu, if it's not
initalised, Ospf6d tries to alloc indefinite size of memory.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index 5fb5a21..0756ef3 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -1721,6 +1721,13 @@
return 0;
}
+ if (iobuflen == 0)
+ {
+ zlog_debug ("Unable to send Hello on interface %s iobuflen is 0",
+ oi->interface->name);
+ return 0;
+ }
+
/* set next thread */
oi->thread_send_hello = thread_add_timer (master, ospf6_hello_send,
oi, oi->hello_interval);
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 73fabd4..37b2ae2 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -299,6 +299,7 @@
sizeof(ifan->ifan_name)));
ifp->ifindex = ifan->ifan_index;
+ if_get_metric (ifp);
if_add_update (ifp);
}
else if (ifp != NULL && ifan->ifan_what == IFAN_DEPARTURE)