diff options
Diffstat (limited to 'ospf6d')
-rw-r--r-- | ospf6d/Makefile.am | 2 | ||||
-rw-r--r-- | ospf6d/ospf6_asbr.c | 24 | ||||
-rw-r--r-- | ospf6d/ospf6_main.c | 6 | ||||
-rw-r--r-- | ospf6d/ospf6_network.c | 8 | ||||
-rw-r--r-- | ospf6d/ospf6_top.c | 3 |
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); } |