#include "ospfd/ospf_flood.h"
#include "ospfd/ospf_dump.h"
#include "ospfd/ospf_errors.h"
+#include "ospfd/ospf_zebra.h"
/*
* OSPF Fragmentation / fragmented writes
* punt-to-CPU set on them. This may overload the CPU control path that
* can be avoided if the MAC was known apriori.
*/
-#define OSPF_PING_NBR_STR_MAX (BUFSIZ)
void ospf_proactively_arp(struct ospf_neighbor *nbr)
{
- char ping_nbr[OSPF_PING_NBR_STR_MAX];
- int ret;
-
if (!nbr)
return;
- snprintf(ping_nbr, sizeof(ping_nbr),
- "ping -c 1 -I %s %s > /dev/null 2>&1 &", nbr->oi->ifp->name,
- inet_ntoa(nbr->address.u.prefix4));
-
- ret = system(ping_nbr);
- if (IS_DEBUG_OSPF_EVENT)
- zlog_debug("Executed %s %s", ping_nbr,
- ((ret == 0) ? "successfully" : "but failed"));
+ ospf_zebra_send_arp(nbr->oi->ifp, &nbr->address);
}
prefix_list_add_hook(ospf_prefix_list_update);
prefix_list_delete_hook(ospf_prefix_list_update);
}
+
+void ospf_zebra_send_arp(const struct interface *ifp, const struct prefix *p)
+{
+ zclient_send_neigh_discovery_req(zclient, ifp, p);
+}
};
/* Prototypes */
+struct ospf_route;
extern void ospf_zebra_add(struct ospf *ospf, struct prefix_ipv4 *,
struct ospf_route *);
extern void ospf_zebra_delete(struct ospf *ospf, struct prefix_ipv4 *,
int ospf_external_info_apply_default_routemap(struct ospf *ospf,
struct external_info *ei,
struct external_info *default_ei);
+
+extern void ospf_zebra_send_arp(const struct interface *ifp,
+ const struct prefix *p);
#endif /* _ZEBRA_OSPF_ZEBRA_H */