diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-07-13 21:12:33 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-07-13 21:12:33 +0200 |
commit | 3ecfe5167a484563ac50f03948685ee0708f5d7e (patch) | |
tree | 68033d1e4bede7f2023a282cc6dc0da42066b2e5 | |
parent | 42409f7f228083dad788efd4ed3cc96d26712c6f (diff) | |
download | pingu-3ecfe5167a484563ac50f03948685ee0708f5d7e.tar.bz2 pingu-3ecfe5167a484563ac50f03948685ee0708f5d7e.tar.xz |
pingu_iface: implement pingu_iface_usable()
To test if we can use socket.
-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(); |