if (online != ison || carrier != iscarrier) {
online = ison;
+ carrier = iscarrier;
if (ani_timer != 0) {
g_source_remove(ani_timer);
ani_timer = 0;
}
static void
-dhcpcd_status_cb(DHCPCD_CONNECTION *con, const char *status, _unused void *data)
+dhcpcd_status_cb(DHCPCD_CONNECTION *con, const char *status,
+ _unused void *data)
{
static char *last = NULL;
const char *msg;
ani_timer = 0;
ani_counter = 0;
}
+ online = carrier = false;
gtk_status_icon_set_from_icon_name(status_icon,
"network-offline");
gtk_status_icon_set_tooltip_text(status_icon, msg);
- notify(_("No network"), msg, "network-offline");
dhcpcd_prefs_abort();
while (wi_scans) {
w = wi_scans->next;
dhcpcd_version(con));
refresh = true;
} else
- refresh = false;
+ refresh = g_strcmp0(last, "opened") ? false : true;
update_online(con, refresh);
}
static int last_error;
con = (DHCPCD_CONNECTION *)data;
- fd = dhcpcd_open(con);
+ fd = dhcpcd_open(con, true);
if (fd == -1) {
- if (errno != last_error)
+ if (errno == EACCES || errno == EPERM) {
+ if ((fd = dhcpcd_open(con, false)) != -1)
+ goto unprived;
+ }
+ if (errno != last_error) {
g_critical("dhcpcd_open: %s", strerror(errno));
- last_error = errno;
+ last_error = errno;
+ }
return TRUE;
}
+unprived:
if (!dhcpcd_watch(fd, dhcpcd_cb, con)) {
dhcpcd_close(con);
return TRUE;
}
+ /* Start listening to WPA events */
+ dhcpcd_wpa_start(con);
+
return FALSE;
}
const char *icon;
bool new_msg;
- /* Update the tooltip with connection information */
- con = dhcpcd_if_connection(i);
- update_online(con, false);
-
/* We should ignore renew and stop so we don't annoy the user */
- if (g_strcmp0(i->reason, "RENEW") == 0 ||
- g_strcmp0(i->reason, "STOP") == 0 ||
- g_strcmp0(i->reason, "STOPPED") == 0)
- return;
-
- msg = dhcpcd_if_message(i, &new_msg);
- if (msg) {
- g_message("%s", msg);
- if (new_msg) {
- if (i->up)
- icon = "network-transmit-receive";
- //else
- // icon = "network-transmit";
- if (!i->up)
- icon = "network-offline";
- notify(_("Network event"), msg, icon);
+ if (g_strcmp0(i->reason, "RENEW") &&
+ g_strcmp0(i->reason, "STOP") &&
+ g_strcmp0(i->reason, "STOPPED"))
+ {
+ msg = dhcpcd_if_message(i, &new_msg);
+ if (msg) {
+ g_message("%s", msg);
+ if (new_msg) {
+ if (i->up)
+ icon = "network-transmit-receive";
+ //else
+ // icon = "network-transmit";
+ if (!i->up)
+ icon = "network-offline";
+ notify(_("Network event"), msg, icon);
+ }
+ g_free(msg);
}
- g_free(msg);
}
+
+ /* Update the tooltip with connection information */
+ con = dhcpcd_if_connection(i);
+ update_online(con, false);
}
static gboolean
notify(msg, txt, "network-wireless");
g_free(txt);
}
+ menu_update_scans(w->interface, scans);
dhcpcd_wi_scans_free(w->scans);
}
w->scans = scans;
g_critical("libdhcpcd: %s", strerror(errno));
exit(EXIT_FAILURE);
}
+ dhcpcd_set_progname(con, "dhcpcd-gtk");
dhcpcd_set_status_callback(con, dhcpcd_status_cb, NULL);
dhcpcd_set_if_callback(con, dhcpcd_if_cb, NULL);
dhcpcd_wpa_set_scan_callback(con, dhcpcd_wpa_scan_cb, NULL);