summaryrefslogtreecommitdiffstats
path: root/ospf6d
diff options
context:
space:
mode:
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/Makefile.am2
-rw-r--r--ospf6d/ospf6_asbr.c24
-rw-r--r--ospf6d/ospf6_main.c6
-rw-r--r--ospf6d/ospf6_network.c8
-rw-r--r--ospf6d/ospf6_top.c3
5 files changed, 33 insertions, 10 deletions
diff --git a/ospf6d/Makefile.am b/ospf6d/Makefile.am
index b13942be..e42814af 100644
--- a/ospf6d/Makefile.am
+++ b/ospf6d/Makefile.am
@@ -28,7 +28,7 @@ noinst_HEADERS = \
ospf6d_SOURCES = \
ospf6_main.c $(libospf6_a_SOURCES)
-ospf6d_LDADD = ../lib/libzebra.a @LIBCAP@
+ospf6d_LDADD = -L../lib -lzebra @LIBCAP@
sysconf_DATA = ospf6d.conf.sample
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 56ed1a6c..deb708ac 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -486,6 +486,18 @@ ospf6_asbr_route_add (int type, int ifindex, struct prefix *prefix,
struct ospf6_external_route *route;
struct ospf6_external_info *info, tinfo;
+#if defined (MUSICA) || defined (LINUX)
+ /* XXX As long as the OSPFv3 redistribution is applied to all the connected
+ * routes, one needs to filter the ::/96 prefixes.
+ * However it could be a wanted case, it will be removed soon.
+ */
+ struct prefix_ipv6 *p = (prefix_ipv6 *)prefix;
+
+ if ((IN6_IS_ADDR_V4COMPAT(&p->prefix)) ||
+ (IN6_IS_ADDR_UNSPECIFIED (&p->prefix) && (p->prefixlen == 96)))
+ return;
+#endif /* MUSICA or LINUX */
+
if (! ospf6_zebra_is_redistribute (type))
return;
@@ -592,6 +604,18 @@ ospf6_asbr_route_remove (int type, int ifindex, struct prefix *prefix)
struct ospf6_external_info *info;
struct ospf6_lsa *lsa;
+#if defined (MUSICA) || defined (LINUX)
+ /* XXX As long as the OSPFv3 redistribution is applied to all the connected
+ * routes, one needs to filter the ::/96 prefixes.
+ * However it could be a wanted case, it will be removed soon.
+ */
+ struct prefix_ipv6 *p = (prefix_ipv6 *)prefix;
+
+ if ((IN6_IS_ADDR_V4COMPAT(&p->prefix)) ||
+ (IN6_IS_ADDR_UNSPECIFIED (&p->prefix) && (p->prefixlen == 96)))
+ return;
+#endif /* MUSICA or LINUX */
+
node = route_node_get (external_table, prefix);
route = node->info;
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index 7ed0030e..e6cd6aaa 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -309,10 +309,10 @@ main (int argc, char *argv[], char *envp[])
if (! daemon_mode)
flag = ZLOG_STDOUT;
else
- flag = 0;
+ flag = ZLOG_NOLOG;
zlog_default = openzlog (progname, flag, ZLOG_OSPF6,
- LOG_CONS|LOG_NDELAY|LOG_PERROR|LOG_PID,
+ LOG_CONS|LOG_NDELAY|LOG_PID,
LOG_DAEMON);
zprivs_init (&ospf6d_privs);
signal_init ();
@@ -342,9 +342,11 @@ main (int argc, char *argv[], char *envp[])
/* Make ospf vty socket. */
vty_serv_sock (vty_addr, vty_port, OSPF6_VTYSH_PATH);
+#ifdef DEBUG
/* Print start message */
zlog_notice ("OSPF6d (Zebra-%s ospf6d-%s) starts",
ZEBRA_VERSION, OSPF6_DAEMON_VERSION);
+#endif
/* Start finite state machine, here we go! */
while (thread_fetch (master, &thread))
diff --git a/ospf6d/ospf6_network.c b/ospf6d/ospf6_network.c
index 9b98f808..ece34135 100644
--- a/ospf6d/ospf6_network.c
+++ b/ospf6d/ospf6_network.c
@@ -264,10 +264,8 @@ ospf6_leave_allspfrouters (u_int ifindex)
&mreq6, sizeof (mreq6)) < 0)
zlog_warn ("Network: Leave AllSPFRouters on ifindex %d Failed: %s",
ifindex, strerror (errno));
-#if 0
else
zlog_info ("Network: Leave AllSPFRouters on ifindex %d", ifindex);
-#endif
}
void
@@ -284,10 +282,8 @@ ospf6_join_alldrouters (u_int ifindex)
&mreq6, sizeof (mreq6)) < 0)
zlog_warn ("Network: Join AllDRouters on ifindex %d Failed: %s",
ifindex, strerror (errno));
-#if 0
else
zlog_info ("Network: Join AllDRouters on ifindex %d", ifindex);
-#endif
}
void
@@ -303,10 +299,8 @@ ospf6_leave_alldrouters (u_int ifindex)
if (setsockopt (ospf6_sock, IPPROTO_IPV6, IPV6_LEAVE_GROUP,
&mreq6, sizeof (mreq6)) < 0)
zlog_warn ("Network: Leave AllDRouters on ifindex %d Failed", ifindex);
-#if 0
else
zlog_info ("Network: Leave AllDRouters on ifindex %d", ifindex);
-#endif
}
/* setsockopt ReUseAddr to on */
@@ -349,7 +343,7 @@ void
ospf6_set_checksum ()
{
int offset = 12;
-#ifndef DISABLE_IPV6_CHECKSUM
+#if !defined(DISABLE_IPV6_CHECKSUM)
if (setsockopt (ospf6_sock, IPPROTO_IPV6, IPV6_CHECKSUM,
&offset, sizeof (offset)) < 0)
zlog_warn ("Network: set IPV6_CHECKSUM failed: %s", strerror (errno));
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index a8a058f2..f9cc3299 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -286,6 +286,9 @@ ospf6_create (unsigned long process_id)
void
ospf6_delete (struct ospf6 *ospf6)
{
+ if (!ospf6)
+ return;
+
ospf6_route_remove_all (ospf6->route_table);
ospf6_free (ospf6);
}