diff options
-rw-r--r-- | pingu_host.c | 2 | ||||
-rw-r--r-- | pingu_iface.c | 7 | ||||
-rw-r--r-- | pingu_iface.h | 1 | ||||
-rw-r--r-- | pingu_ping.c | 2 |
4 files changed, 10 insertions, 2 deletions
diff --git a/pingu_host.c b/pingu_host.c index fae9a0e..c0ec966 100644 --- a/pingu_host.c +++ b/pingu_host.c @@ -260,7 +260,7 @@ int pingu_host_init(struct ev_loop *loop, const char *config) return -1; list_for_each_entry(host, &host_list, host_list_entry) { - if (host->iface->name[0] != '\0' && !host->iface->has_binding) + if (!pingu_iface_usable(host->iface)) pingu_host_set_status(host, 0); ev_timer_init(&host->burst_timeout_watcher, pingu_burst_timeout_cb, 0, host->burst_interval); diff --git a/pingu_iface.c b/pingu_iface.c index 868c60e..dbd0e9d 100644 --- a/pingu_iface.c +++ b/pingu_iface.c @@ -56,6 +56,13 @@ static int pingu_iface_init_socket(struct ev_loop *loop, return 0; } +int pingu_iface_usable(struct pingu_iface *iface) +{ + if (iface->name[0] == '\0') + return 1; + return iface->has_binding; +} + struct pingu_iface *pingu_iface_find(const char *name) { struct pingu_iface *iface; diff --git a/pingu_iface.h b/pingu_iface.h index 5bdc587..baf3b35 100644 --- a/pingu_iface.h +++ b/pingu_iface.h @@ -17,6 +17,7 @@ struct pingu_iface { struct pingu_iface *pingu_iface_find(const char *name); struct pingu_iface *pingu_iface_find_or_create(struct ev_loop *loop, const char *name); int pingu_iface_bind_socket(struct pingu_iface *iface, int log_error); +int pingu_iface_usable(struct pingu_iface *iface); int pingu_iface_init(struct ev_loop *loop, struct list_head *host_list); #endif diff --git a/pingu_ping.c b/pingu_ping.c index 037fb44..5e5ef84 100644 --- a/pingu_ping.c +++ b/pingu_ping.c @@ -106,7 +106,7 @@ int pingu_ping_send(struct ev_loop *loop, struct pingu_host *host, struct pingu_ping *ping; int seq, r; - if ((host->iface->name[0] != '\0') && !host->iface->has_binding) + if (!pingu_iface_usable(host->iface)) return pingu_host_set_status(host, 0) - 1; seq = pingu_ping_get_seq(); |