#include "zclient.h"
#include "memory.h"
#include "lib/bfd.h"
+#include "lib_errors.h"
#include "ospf6_proto.h"
#include "ospf6_top.h"
/* information about zebra. */
struct zclient *zclient = NULL;
-struct in_addr router_id_zebra;
-
/* Router-id update message from zebra. */
static int ospf6_router_id_update_zebra(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id)
struct ospf6 *o = ospf6;
zebra_router_id_update_read(zclient->ibuf, &router_id);
- router_id_zebra = router_id.u.prefix4;
+
+ om6->zebra_router_id = router_id.u.prefix4.s_addr;
if (o == NULL)
return 0;
- if (o->router_id == 0)
- o->router_id = (u_int32_t)router_id_zebra.s_addr;
+ o->router_id_zebra = router_id.u.prefix4;
+ if (IS_OSPF6_DEBUG_ZEBRA(RECV)) {
+ char buf[INET_ADDRSTRLEN];
+
+ zlog_debug("%s: zebra router-id %s update",
+ __PRETTY_FUNCTION__,
+ inet_ntop(AF_INET, &router_id.u.prefix4,
+ buf, INET_ADDRSTRLEN));
+ }
+
+ ospf6_router_id_update();
return 0;
}
zlog_debug("Zebra Interface delete: %s index %d mtu %d",
ifp->name, ifp->ifindex, ifp->mtu6);
-#if 0
- /* XXX: ospf6_interface_if_del is not the right way to handle this,
- * because among other thinkable issues, it will also clear all
- * settings as they are contained in the struct ospf6_interface. */
- ospf6_interface_if_del (ifp);
-#endif /*0*/
-
if_set_index(ifp, IFINDEX_INTERNAL);
return 0;
}
memset(&api, 0, sizeof(api));
api.vrf_id = VRF_DEFAULT;
- api.nh_vrf_id = VRF_DEFAULT;
api.type = ZEBRA_ROUTE_OSPF6;
api.safi = SAFI_UNICAST;
api.prefix = *dest;
ret = zclient_route_send(ZEBRA_ROUTE_ADD, zclient, &api);
if (ret < 0)
- zlog_err("zclient_route_send() %s failed: %s",
+ flog_err(EC_LIB_ZAPI_SOCKET,
+ "zclient_route_send() %s failed: %s",
(type == REM ? "delete" : "add"),
safe_strerror(errno));
if (!CHECK_FLAG(request->flag, OSPF6_ROUTE_BLACKHOLE_ADDED)) {
memset(&api, 0, sizeof(api));
api.vrf_id = VRF_DEFAULT;
- api.nh_vrf_id = VRF_DEFAULT;
api.type = ZEBRA_ROUTE_OSPF6;
api.safi = SAFI_UNICAST;
api.prefix = *dest;
if (CHECK_FLAG(request->flag, OSPF6_ROUTE_BLACKHOLE_ADDED)) {
memset(&api, 0, sizeof(api));
api.vrf_id = VRF_DEFAULT;
- api.nh_vrf_id = VRF_DEFAULT;
api.type = ZEBRA_ROUTE_OSPF6;
api.safi = SAFI_UNICAST;
api.prefix = *dest;
{
int ret;
struct prefix_ipv6 p;
- u_char distance;
+ uint8_t distance;
struct route_node *rn;
struct ospf6_distance *odistance;
}
}
-u_char ospf6_distance_apply(struct prefix_ipv6 *p, struct ospf6_route * or)
+uint8_t ospf6_distance_apply(struct prefix_ipv6 *p, struct ospf6_route * or)
{
struct ospf6 *o;
void ospf6_zebra_init(struct thread_master *master)
{
/* Allocate zebra structure. */
- zclient = zclient_new_notify(master, &zclient_options_default);
+ zclient = zclient_new(master, &zclient_options_default);
zclient_init(zclient, ZEBRA_ROUTE_OSPF6, 0, &ospf6d_privs);
zclient->zebra_connected = ospf6_zebra_connected;
zclient->router_id_update = ospf6_router_id_update_zebra;