aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pingu_host.c2
-rw-r--r--pingu_iface.c7
-rw-r--r--pingu_iface.h1
-rw-r--r--pingu_ping.c2
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();