From 9e4c8217d3f2c7490eb6a26a49e67aeac96ca7c2 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 6 Sep 2011 10:30:10 +0200 Subject: pingu: only create/lose binding when we get/lose address We don't need to rebind every burst. We only bind when we get an address and we only lose the binding when the address is lost. --- pingu_iface.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'pingu_iface.c') diff --git a/pingu_iface.c b/pingu_iface.c index 6905844..00cb1ca 100644 --- a/pingu_iface.c +++ b/pingu_iface.c @@ -67,7 +67,7 @@ int pingu_iface_usable(struct pingu_iface *iface) { if (iface->name[0] == '\0') return 1; - return iface->has_link && iface->has_binding; + return iface->has_link && iface->has_address && iface->has_binding; } struct pingu_iface *pingu_iface_get_by_name(const char *name) @@ -120,10 +120,13 @@ void pingu_iface_set_addr(struct pingu_iface *iface, int family, { sockaddr_init(&iface->primary_addr, family, data); if (len <= 0 || data == NULL) { + iface->has_address = 0; + iface->has_binding = 0; pingu_gateway_del_all(&iface->gateway_list); log_debug("%s: address removed", iface->name); return; } + iface->has_address = 1; log_debug("%s: new address: %s", iface->name, inet_ntoa(iface->primary_addr.sin.sin_addr)); } -- cgit v1.2.3