summaryrefslogtreecommitdiff
path: root/netspeed/src
diff options
context:
space:
mode:
Diffstat (limited to 'netspeed/src')
-rw-r--r--netspeed/src/Makefile.am39
-rw-r--r--netspeed/src/backend.c51
-rw-r--r--netspeed/src/backend.h7
-rw-r--r--netspeed/src/netspeed-preferences.c34
-rw-r--r--netspeed/src/netspeed.c206
5 files changed, 181 insertions, 156 deletions
diff --git a/netspeed/src/Makefile.am b/netspeed/src/Makefile.am
index 8358b3c9..ceec7342 100644
--- a/netspeed/src/Makefile.am
+++ b/netspeed/src/Makefile.am
@@ -13,11 +13,11 @@ if HAVE_NL
AM_CPPFLAGS += $(NL_CFLAGS)
endif
-libexec_PROGRAMS = mate-netspeed-applet
-
-BUILT_SOURCES = netspeed-resources.c netspeed-resources.h
-nodist_mate_netspeed_applet_SOURCES = $(BUILT_SOURCES)
-mate_netspeed_applet_SOURCES = \
+BUILT_SOURCES = \
+ netspeed-resources.c \
+ netspeed-resources.h \
+ $(NULL)
+APPLET_SOURCES = \
backend.h \
backend.c \
netspeed.c \
@@ -27,23 +27,40 @@ mate_netspeed_applet_SOURCES = \
$(NULL)
if HAVE_NL
-mate_netspeed_applet_SOURCES += \
+APPLET_SOURCES += \
nl80211.h \
ieee80211.h \
$(NULL)
endif
-mate_netspeed_applet_LDADD = $(GIO_LIBS) $(GTOP_APPLETS_LIBS) \
- $(MATE_APPLETS4_LIBS) \
- $(INTLLIBS) -lm
+APPLET_LIBS = \
+ $(GIO_LIBS) \
+ $(GTOP_APPLETS_LIBS) \
+ $(MATE_APPLETS4_LIBS) \
+ $(INTLLIBS) -lm
if HAVE_IW
-mate_netspeed_applet_LDADD += $(IW_LIBS)
+APPLET_LIBS += $(IW_LIBS)
endif
if HAVE_NL
-mate_netspeed_applet_LDADD += $(NL_LIBS)
+APPLET_LIBS += $(NL_LIBS)
endif
+if ENABLE_IN_PROCESS
+pkglib_LTLIBRARIES = libmate-netspeed-applet.la
+nodist_libmate_netspeed_applet_la_SOURCES = $(BUILT_SOURCES)
+libmate_netspeed_applet_la_SOURCES = $(APPLET_SOURCES)
+libmate_netspeed_applet_la_CFLAGS = $(AM_CFLAGS)
+libmate_netspeed_applet_la_LDFLAGS = -module -avoid-version
+libmate_netspeed_applet_la_LIBADD = $(APPLET_LIBS)
+else !ENABLE_IN_PROCESS
+libexec_PROGRAMS = mate-netspeed-applet
+nodist_mate_netspeed_applet_SOURCES = $(BUILT_SOURCES)
+mate_netspeed_applet_SOURCES = $(APPLET_SOURCES)
+mate_netspeed_applet_CFLAGS = $(AM_CFLAGS)
+mate_netspeed_applet_LDADD = $(APPLET_LIBS)
+endif !ENABLE_IN_PROCESS
+
netspeed-resources.c: $(srcdir)/../data/netspeed-resources.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/../data --generate-dependencies $(srcdir)/../data/netspeed-resources.gresource.xml)
$(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/../data --generate --c-name netspeed $<
diff --git a/netspeed/src/backend.c b/netspeed/src/backend.c
index f013c170..e1321497 100644
--- a/netspeed/src/backend.c
+++ b/netspeed/src/backend.c
@@ -88,7 +88,6 @@ is_dummy_device (const char* device)
return FALSE;
}
-
/* Check for all available devices. This really should be
* portable for at least all plattforms using the gnu c lib
* TODO: drop it, use glibtop_get_netlist directly / gchar**
@@ -105,6 +104,7 @@ get_available_devices (void)
for (dev = devices; *dev; ++dev) {
device_glist = g_list_prepend (device_glist, g_strdup (*dev));
}
+ device_glist = g_list_sort (device_glist, (GCompareFunc) g_strcmp0);
g_strfreev (devices);
@@ -207,6 +207,41 @@ get_ip_address_list (const char *iface_name,
return list;
}
+GSList*
+get_ip6_address_list (const char *iface_name)
+{
+ GSList *list = NULL;
+ struct ifaddrs *ifaces;
+
+ if (getifaddrs (&ifaces) != -1) {
+ char ip6[INET6_ADDRSTRLEN];
+
+ for (struct ifaddrs *iface = ifaces; iface != NULL; iface = iface->ifa_next) {
+ if ((iface->ifa_addr == NULL) || (iface->ifa_addr->sa_family != AF_INET6))
+ continue;
+
+ if (!g_strcmp0 (iface->ifa_name, iface_name)) {
+ void *sinx_addr = NULL;
+
+ struct sockaddr_in6 ip6_addr;
+
+ memcpy (&ip6_addr, iface->ifa_addr, sizeof (struct sockaddr_in6));
+
+ /* get network ip */
+ sinx_addr = &ip6_addr.sin6_addr;
+ inet_ntop (iface->ifa_addr->sa_family, sinx_addr, ip6, sizeof (ip6));
+
+ list = g_slist_prepend (list, g_strdup (ip6));
+ }
+ }
+
+ if (list != NULL)
+ list = g_slist_sort (list, (GCompareFunc) g_strcmp0);
+ freeifaddrs (ifaces);
+ }
+ return list;
+}
+
const gchar*
get_default_route (void)
{
@@ -243,12 +278,6 @@ get_default_route (void)
return NULL;
}
-void
-free_devices_list (GList *list)
-{
- g_list_free_full (list, g_free);
-}
-
/* Frees a DevInfo struct and all the stuff it contains
*/
void
@@ -350,7 +379,6 @@ get_device_info (const char *device,
if (devinfo->running) {
devinfo->ip = netload.address;
devinfo->netmask = netload.subnet;
- memcpy (devinfo->ipv6, netload.address6, 16);
#if defined (HAVE_NL)
if (devinfo->type != DEV_WIRELESS) {
devinfo->tx = netload.bytes_out;
@@ -476,7 +504,6 @@ out_handle_destroy:
return err;
}
-
static void
nl80211_cleanup (struct nl80211_state *state)
{
@@ -788,7 +815,7 @@ get_wireless_info (DevInfo *devinfo)
ret = nl_recvmsgs_default (nlstate.sock);
nlmsg_free (msg);
if (ret < 0) {
- g_warning ("failed to recive netlink message");
+ g_warning ("failed to receive netlink message");
}
if (!devinfo->running)
@@ -812,7 +839,7 @@ get_wireless_info (DevInfo *devinfo)
ret = nl_recvmsgs_default (nlstate.sock);
nlmsg_free (msg);
if (ret < 0) {
- g_warning ("failed to recive netlink message");
+ g_warning ("failed to receive netlink message");
goto cleanup;
}
@@ -838,7 +865,7 @@ get_wireless_info (DevInfo *devinfo)
ret = nl_recvmsgs_default (nlstate.sock);
nlmsg_free (msg);
if (ret < 0) {
- g_warning ("failed to recive netlink message");
+ g_warning ("failed to receive netlink message");
}
cleanup:
diff --git a/netspeed/src/backend.h b/netspeed/src/backend.h
index cd98c66c..5f382cd1 100644
--- a/netspeed/src/backend.h
+++ b/netspeed/src/backend.h
@@ -61,7 +61,6 @@ typedef struct {
guint32 netmask;
guint32 ptpip;
guint8 hwaddr [8]; /* EUI-48 or EUI-64 */
- guint8 ipv6 [16];
char *essid;
gboolean up;
gboolean running;
@@ -91,9 +90,6 @@ gboolean
is_dummy_device (const char* device);
void
-free_devices_list (GList *list);
-
-void
free_device_info (DevInfo *devinfo);
void
@@ -108,4 +104,7 @@ get_wireless_info (DevInfo *devinfo);
GSList*
get_ip_address_list (const char *ifa_name, gboolean ipv4);
+GSList*
+get_ip6_address_list (const char *ifa_name);
+
#endif /* _BACKEND_H */
diff --git a/netspeed/src/netspeed-preferences.c b/netspeed/src/netspeed-preferences.c
index 401a9de8..cc52a506 100644
--- a/netspeed/src/netspeed-preferences.c
+++ b/netspeed/src/netspeed-preferences.c
@@ -38,6 +38,8 @@ struct _NetspeedPreferences
GtkWidget *show_icon_checkbutton;
GtkWidget *show_quality_icon_checkbutton;
GtkWidget *change_icon_checkbutton;
+
+ GList *devices;
};
typedef enum
@@ -112,11 +114,9 @@ static void
on_network_device_combo_changed (GtkComboBox *combo,
NetspeedPreferences *preferences)
{
- GList *devices;
- int i, active;
+ gint active;
gboolean old_auto_change_device, auto_change_device;
- devices = g_object_get_data (G_OBJECT (combo), "devices");
active = gtk_combo_box_get_active (combo);
g_assert (active > -1);
@@ -128,16 +128,15 @@ on_network_device_combo_changed (GtkComboBox *combo,
auto_change_device = TRUE;
} else {
const gchar *current_device_name;
+ const gchar *selected_device_name;
current_device_name = netspeed_applet_get_current_device_name (preferences->netspeed);
auto_change_device = FALSE;
- for (i = 1; i < active; i++) {
- devices = g_list_next (devices);
- }
- if (!devices || !g_strcmp0 (devices->data, current_device_name))
+ selected_device_name = g_list_nth_data (preferences->devices, (guint) (active - 1));
+ if (!g_strcmp0 (selected_device_name, current_device_name))
return;
g_settings_set_string (preferences->settings,
- "device", devices->data);
+ "device", selected_device_name);
}
if (old_auto_change_device != auto_change_device)
g_settings_set_boolean (preferences->settings,
@@ -147,10 +146,9 @@ on_network_device_combo_changed (GtkComboBox *combo,
static void
netspeed_preferences_finalize (GObject *object)
{
- NetspeedPreferences *self = NETSPEED_PREFERENCES (object);
- g_signal_handlers_disconnect_by_func (self->network_device_combo,
- on_network_device_combo_changed,
- self);
+ NetspeedPreferences *preferences = NETSPEED_PREFERENCES (object);
+
+ g_list_free_full (preferences->devices, g_free);
G_OBJECT_CLASS (netspeed_preferences_parent_class)->finalize (object);
}
@@ -188,15 +186,9 @@ netspeed_preferences_class_init (NetspeedPreferencesClass *klass)
}
static void
-free_devices (gpointer data)
-{
- g_list_free_full (data, g_free);
-}
-
-static void
fill_device_combo (NetspeedPreferences *preferences, GSettings *settings)
{
- GList *ptr, *devices;
+ GList *ptr;
int i, active = -1;
const gchar *current_device_name;
gboolean auto_change_device;
@@ -204,7 +196,7 @@ fill_device_combo (NetspeedPreferences *preferences, GSettings *settings)
/* Default means device with default route set */
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (preferences->network_device_combo),
_("Default"));
- ptr = devices = get_available_devices ();
+ ptr = preferences->devices = get_available_devices ();
current_device_name = netspeed_applet_get_current_device_name (preferences->netspeed);
auto_change_device = g_settings_get_boolean (settings, "auto-change-device");
for (i = 0; ptr; ptr = g_list_next (ptr)) {
@@ -217,8 +209,6 @@ fill_device_combo (NetspeedPreferences *preferences, GSettings *settings)
if (active < 0 || auto_change_device)
active = 0;
gtk_combo_box_set_active (GTK_COMBO_BOX (preferences->network_device_combo), active);
- g_object_set_data_full (G_OBJECT (preferences->network_device_combo), "devices",
- devices, free_devices);
}
GtkWidget *
diff --git a/netspeed/src/netspeed.c b/netspeed/src/netspeed.c
index eeb2dce4..73185abd 100644
--- a/netspeed/src/netspeed.c
+++ b/netspeed/src/netspeed.c
@@ -518,7 +518,7 @@ redraw_graph (NetspeedApplet *netspeed,
w = gdk_window_get_width (real_window);
h = gdk_window_get_height (real_window);
- /* the graph hight should be: hight/2 <= applet->max_graph < hight */
+ /* the graph hight should be: hight/2 <= netspeed->max_graph < hight */
for (max_val = 1; max_val < netspeed->max_graph; max_val *= 2) ;
/* calculate the polygons (GdkPoint[]) for the graphs */
@@ -630,7 +630,7 @@ search_for_up_if (NetspeedApplet *netspeed)
if (set_applet_devinfo (netspeed, tmp->data))
break;
}
- free_devices_list (devices);
+ g_list_free_full (devices, g_free);
}
static char *
@@ -687,13 +687,6 @@ format_ipv4 (guint32 ip,
}
static void
-format_ipv6 (const guint8 ip[16],
- char *dest)
-{
- inet_ntop (AF_INET6, ip, dest, INET6_ADDRSTRLEN);
-}
-
-static void
fill_details_dialog (NetspeedApplet *netspeed)
{
char *text;
@@ -1058,12 +1051,12 @@ about_cb (GtkAction *action,
"version", VERSION,
"copyright", _("Copyright \xc2\xa9 2002-2003 Jörgen Scheibengruber\n"
"Copyright \xc2\xa9 2011-2014 Stefano Karapetsas\n"
- "Copyright \xc2\xa9 2015-2020 MATE developers"),
+ "Copyright \xc2\xa9 2015-2021 MATE developers"),
"comments", _("A little applet that displays some information on the traffic on the specified network device"),
"authors", authors,
"documenters", NULL,
"translator-credits", _("translator-credits"),
- "website", "http://www.mate-desktop.org/",
+ "website", PACKAGE_URL,
"logo-icon-name", LOGO_ICON,
NULL);
}
@@ -1371,54 +1364,44 @@ update_tooltip (NetspeedApplet *netspeed)
if (!netspeed->devinfo->running)
g_string_printf (tooltip, _("%s is down"), netspeed->devinfo->name);
else {
+ GSList *iterator;
+ GString *string = NULL;
char ipv4_text [INET_ADDRSTRLEN];
- char ipv6_text [INET6_ADDRSTRLEN];
- char *ip;
-
- if (netspeed->show_all_addresses) {
- format_ipv6 (netspeed->devinfo->ipv6, ipv6_text);
- if (netspeed->devinfo->ip) {
- format_ipv4 (netspeed->devinfo->ip, ipv4_text);
- if (strlen (ipv6_text) > 2) {
- g_string_printf (tooltip,
- _("%s: %s and %s"),
- netspeed->devinfo->name,
- ipv4_text,
- ipv6_text);
- } else {
- g_string_printf (tooltip,
- _("%s: %s"),
- netspeed->devinfo->name,
- ipv4_text);
- }
- } else {
- if (strlen (ipv6_text) > 2) {
- g_string_printf (tooltip,
- _("%s: %s"),
- netspeed->devinfo->name,
- ipv6_text);
- } else {
- g_string_printf (tooltip,
- _("%s: has no ip"),
- netspeed->devinfo->name);
- }
- }
- } else {
- if (netspeed->devinfo->ip) {
- format_ipv4 (netspeed->devinfo->ip, ipv4_text);
- ip = ipv4_text;
- } else {
- format_ipv6 (netspeed->devinfo->ipv6, ipv6_text);
- if (strlen (ipv6_text) > 2) {
- ip = ipv6_text;
- } else {
- ip = _("has no ip");
+
+ g_string_printf (tooltip, "%s: ", netspeed->devinfo->name);
+
+ if (netspeed->show_all_addresses || !netspeed->devinfo->ip) {
+ GSList *ip6_address_list = get_ip6_address_list (netspeed->devinfo->name);
+
+ /* check if we got IPv6 addresses */
+ if (ip6_address_list != NULL) {
+ for (iterator = ip6_address_list; iterator; iterator = iterator->next) {
+ if (string == NULL)
+ string = g_string_new ((char*) iterator->data);
+ else
+ g_string_append_printf (string,
+ _("\n%s"),
+ (char*) iterator->data);
}
}
- g_string_printf (tooltip,
- _("%s: %s"),
- netspeed->devinfo->name,
- ip);
+
+ g_slist_free_full (ip6_address_list, g_free);
+ }
+
+ if (!netspeed->devinfo->ip && !string) {
+ g_string_append (tooltip, "has no ip");
+ }
+
+ if (netspeed->devinfo->ip) {
+ format_ipv4 (netspeed->devinfo->ip, ipv4_text);
+ g_string_append (tooltip, ipv4_text);
+ }
+
+ if (string != NULL) {
+ g_string_append_printf (tooltip,
+ _("\n%s"),
+ string->str);
+ g_string_free (string, TRUE);
}
if (netspeed->show_sum) {
@@ -1455,7 +1438,6 @@ update_tooltip (NetspeedApplet *netspeed)
g_string_free (tooltip, TRUE);
}
-
static gboolean
netspeed_applet_enter_notify_event (GtkWidget *widget,
GdkEventCrossing *event)
@@ -1564,7 +1546,6 @@ device_settings_changed (GSettings *settings,
NetspeedApplet *netspeed)
{
char *device;
- DevInfo *info;
device = g_settings_get_string (settings, key);
if (device && *device != '\0') {
@@ -1586,13 +1567,17 @@ netspeed_applet_factory (MatePanelApplet *applet,
int i;
GtkWidget *spacer, *spacer_box;
GtkActionGroup *action_group;
+ AtkObject *atk_obj;
char *tmp;
if (strcmp (iid, "NetspeedApplet"))
return FALSE;
glibtop_init ();
+
+#ifndef ENABLE_IN_PROCESS
g_set_application_name (_("MATE Netspeed"));
+#endif
netspeed = NETSPEED_APPLET (applet);
netspeed->icon_theme = gtk_icon_theme_get_default ();
@@ -1660,7 +1645,7 @@ netspeed_applet_factory (MatePanelApplet *applet,
}
ptr = g_list_next (ptr);
}
- free_devices_list (devices);
+ g_list_free_full (devices, g_free);
}
if (!netspeed->devinfo)
get_device_info ("lo", &netspeed->devinfo);
@@ -1698,62 +1683,61 @@ netspeed_applet_factory (MatePanelApplet *applet,
netspeed->timeout_id = g_timeout_add (REFRESH_TIME,
(GSourceFunc)timeout_function,
netspeed);
+ g_signal_connect_object (applet, "change-size",
+ G_CALLBACK (applet_change_size_or_orient),
+ netspeed, 0);
- g_signal_connect (applet, "change_size",
- G_CALLBACK (applet_change_size_or_orient),
- netspeed);
-
- g_signal_connect (netspeed->icon_theme, "changed",
- G_CALLBACK (icon_theme_changed_cb),
- netspeed);
+ g_signal_connect_object (netspeed->icon_theme, "changed",
+ G_CALLBACK (icon_theme_changed_cb),
+ netspeed, 0);
- g_signal_connect (applet, "change_orient",
- G_CALLBACK (applet_change_size_or_orient),
- netspeed);
+ g_signal_connect_object (applet, "change-orient",
+ G_CALLBACK (applet_change_size_or_orient),
+ netspeed, 0);
- g_signal_connect (netspeed->in_label, "size_allocate",
- G_CALLBACK (label_size_allocate_cb),
- netspeed);
+ g_signal_connect_object (netspeed->in_label, "size-allocate",
+ G_CALLBACK (label_size_allocate_cb),
+ netspeed, 0);
- g_signal_connect (netspeed->out_label, "size_allocate",
- G_CALLBACK (label_size_allocate_cb),
- netspeed);
+ g_signal_connect_object (netspeed->out_label, "size-allocate",
+ G_CALLBACK (label_size_allocate_cb),
+ netspeed, 0);
- g_signal_connect (netspeed->sum_label, "size_allocate",
- G_CALLBACK (label_size_allocate_cb),
- netspeed);
+ g_signal_connect_object (netspeed->sum_label, "size-allocate",
+ G_CALLBACK (label_size_allocate_cb),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::auto-change-device",
- G_CALLBACK (auto_change_device_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::auto-change-device",
+ G_CALLBACK (auto_change_device_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::device",
- G_CALLBACK (device_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::device",
+ G_CALLBACK (device_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::show-all-addresses",
- G_CALLBACK (showalladdresses_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::show-all-addresses",
+ G_CALLBACK (showalladdresses_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::show-sum",
- G_CALLBACK (showsum_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::show-sum",
+ G_CALLBACK (showsum_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::show-bits",
- G_CALLBACK (showbits_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::show-bits",
+ G_CALLBACK (showbits_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::change-icon",
- G_CALLBACK (changeicon_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::change-icon",
+ G_CALLBACK (changeicon_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::show-icon",
- G_CALLBACK (showicon_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::show-icon",
+ G_CALLBACK (showicon_settings_changed),
+ netspeed, 0);
- g_signal_connect (netspeed->settings, "changed::show-quality-icon",
- G_CALLBACK (showqualityicon_settings_changed),
- netspeed);
+ g_signal_connect_object (netspeed->settings, "changed::show-quality-icon",
+ G_CALLBACK (showqualityicon_settings_changed),
+ netspeed, 0);
action_group = gtk_action_group_new ("Netspeed Applet Actions");
gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
@@ -1766,13 +1750,21 @@ netspeed_applet_factory (MatePanelApplet *applet,
NETSPEED_RESOURCE_PATH "netspeed-menu.xml",
action_group);
+ atk_obj = gtk_widget_get_accessible (GTK_WIDGET (applet));
+
+ if (GTK_IS_ACCESSIBLE (atk_obj)) {
+ atk_object_set_name (atk_obj, _("MATE Netspeed"));
+ atk_object_set_description (atk_obj,
+ _("A little applet that displays some information on the traffic on the specified network device"));
+ }
+
g_object_unref (action_group);
return TRUE;
}
-MATE_PANEL_APPLET_OUT_PROCESS_FACTORY ("NetspeedAppletFactory",
- NETSPEED_TYPE_APPLET,
- "NetspeedApplet",
- netspeed_applet_factory,
- NULL)
+PANEL_APPLET_FACTORY ("NetspeedAppletFactory",
+ NETSPEED_TYPE_APPLET,
+ "NetspeedApplet",
+ netspeed_applet_factory,
+ NULL)