Hi, I have updated my pending gnome-netinfo patches for the new cvs module. That patch consists in: * Adds is_ipv6_enable function to know if IPv6 is enabled in the system * Changes the cursor to GDK_WATCH when a process is running * Full IPv6 support in netstat * The tree_model doesn't change when you toggle between protocol and route twice in netstat -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Carlos Garcia Campos a.k.a. KaL elkalmail yahoo es carlosgc gnome org Grupo Linups Usuarios de SL/Linux de la UPSAM http://www.linups.org =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= PGP key: http://pgp.rediris.es:11371/pks/lookup?op=get&search=0x523E6462
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gnome-netinfo/ChangeLog,v
retrieving revision 1.5
diff -u -u -r1.5 ChangeLog
--- ChangeLog 11 Feb 2004 15:40:21 -0000 1.5
+++ ChangeLog 14 Mar 2004 19:08:37 -0000
@@ -1,3 +1,20 @@
+2004-03-14 Carlos García Campos <carlosgc gnome org>
+
+ * src/netinfo.c (toggle_state): change the cursor to GDK_WATCH when
+ a process is running
+
+ * src/netinfo.[ch] (is_ipv6_enable): added is_ipv6_enable function to
+ know if IPv6 is enabled in the system
+
+ * src/netstat.[ch] (get_active_option, strip_protocol_line,
+ strip_route_line, *_tree_insert): IPv6 support
+
+ * src/netstat.[ch] (get_active_option): checks if IPv6 is enabled before
+ use inet6 protocol
+
+ * src/netstat.c (*_tree_insert): the tree_model doesn't change when
+ you toggle between protocol and route twice
+
2004-02-11 Rodrigo Moya <rodrigo gnome-db org>
* configure.in: set version to 0.99.0.
Index: src/netinfo.c
===================================================================
RCS file: /cvs/gnome/gnome-netinfo/src/netinfo.c,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 netinfo.c
--- src/netinfo.c 23 Jan 2004 15:48:45 -0000 1.1.1.1
+++ src/netinfo.c 14 Mar 2004 19:08:37 -0000
@@ -75,6 +75,27 @@
host);
}
+gboolean
+netinfo_is_ipv6_enable ()
+{
+ gint sock;
+ struct sockaddr_in6 sin6;
+ guint len;
+
+ if ((sock = socket (PF_INET6, SOCK_STREAM, 0)) == -1) {
+ return FALSE;
+ } else {
+ len = sizeof (struct sockaddr_in6);
+ if (getsockname (sock, (struct sockaddr *)&sin6, (void *)&len) < 0) {
+ close (sock);
+ return FALSE;
+ } else {
+ close (sock);
+ return TRUE;
+ }
+ }
+}
+
const gchar *
netinfo_get_user (Netinfo * netinfo)
{
@@ -338,6 +359,8 @@
netinfo_toggle_state (Netinfo * netinfo, gboolean state,
gpointer user_data)
{
+ GdkCursor *cursor;
+
g_assert (netinfo != NULL);
g_return_if_fail (netinfo != NULL);
@@ -347,8 +370,16 @@
}
if (state) {
+ gdk_window_set_cursor ((netinfo->output)->window, NULL);
netinfo->child_pid = 0;
+ } else {
+ cursor = gdk_cursor_new (GDK_WATCH);
+ if (!GTK_WIDGET_REALIZED (netinfo->output))
+ gtk_widget_realize (GTK_WIDGET (netinfo->output));
+ gdk_window_set_cursor ((netinfo->output)->window, cursor);
+ gdk_cursor_destroy (cursor);
}
+
netinfo->running = !state;
netinfo_toggle_button (netinfo);
Index: src/netinfo.h
===================================================================
RCS file: /cvs/gnome/gnome-netinfo/src/netinfo.h,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 netinfo.h
--- src/netinfo.h 23 Jan 2004 15:48:45 -0000 1.1.1.1
+++ src/netinfo.h 14 Mar 2004 19:08:37 -0000
@@ -118,6 +118,7 @@
const gchar * netinfo_get_host (Netinfo * netinfo);
const gchar * netinfo_get_user (Netinfo * netinfo);
void netinfo_set_host (Netinfo * netinfo, const gchar *host);
+gboolean netinfo_is_ipv6_enable ();
void netinfo_set_user (Netinfo * netinfo, const gchar *user);
gint netinfo_get_ip_version (Netinfo * netinfo);
gboolean netinfo_validate_host (Netinfo * netinfo);
Index: src/netstat.c
===================================================================
RCS file: /cvs/gnome/gnome-netinfo/src/netstat.c,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 netstat.c
--- src/netstat.c 23 Jan 2004 15:48:46 -0000 1.1.1.1
+++ src/netstat.c 14 Mar 2004 19:08:37 -0000
@@ -109,14 +109,22 @@
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (netinfo->routing))) {
/* Works for Solaris and Linux */
- option = g_strdup ("-r");
+ if (netinfo_is_ipv6_enable ()) {
+ option = g_strdup ("-rn -A inet -A inet6");
+ } else {
+ option = g_strdup ("-rn -A inet");
+ }
}
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (netinfo->protocol))) {
/* Only works for Solaris */
#ifdef __FreeBSD__
option = g_strdup ("-a -f inet -ln");
#else
- option = g_strdup ("-A inet -ln");
+ if (netinfo_is_ipv6_enable ()) {
+ option = g_strdup ("-A inet -A inet6 -ln");
+ } else {
+ option = g_strdup ("-A inet -ln");
+ }
#endif
}
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (netinfo->multicast))) {
@@ -273,7 +281,7 @@
#ifdef __FreeBSD__
if (count == 5 || count == 6 || count == 9 || count == 10) {
#else
- if (count == 7 || count == 8) {
+ if (count == 5 || count == 6) {
#endif
#ifdef DEBUG
g_print ("%s\t%s:%s\t%s\n", data.protocol,
@@ -292,7 +300,7 @@
model = gtk_tree_view_get_model (widget);
- if (protocol_model == NULL || gtk_tree_model_get_n_columns (model) != 4) {
+ if (protocol_model == NULL || protocol_model != model) {
clean_gtk_tree_view (widget);
protocol_model = GTK_TREE_MODEL (gtk_list_store_new
@@ -343,13 +351,16 @@
gint a1, a2, a3, a4;
gchar s9[30];
#else
- gchar s6[30], s7[30];
+ gchar s6[30], laddr[50];
+ gchar *port;
#endif
gint n2, n3;
- line = g_strdelimit (line, ":", ' ');
+ /*line = g_strdelimit (line, ":", ' ');*/
#ifdef __FreeBSD__
+ line = g_strdelimit (line, ":", ' ');
+
count = sscanf (line, NETSTAT_PROTOCOL_FORMAT,
data->protocol, &n2, &n3,
&a1, &a2, &a3, &a4, data->port_src,
@@ -375,13 +386,29 @@
}
#else
- count = sscanf (line, NETSTAT_PROTOCOL_FORMAT,
+ /*count = sscanf (line, NETSTAT_PROTOCOL_FORMAT,
data->protocol, &n2, &n3,
data->ip_src, data->port_src,
s6, s7, data->state);
if (count == 7) {
bzero (&(data)->state, 30);
+ }*/
+ count = sscanf (line, NETSTAT_PROTOCOL_FORMAT,
+ data->protocol, &n2, &n3,
+ laddr, s6, data->state);
+
+ port = g_strrstr (laddr, ":");
+
+ if (port != NULL) {
+ g_strlcpy (data->ip_src, laddr, 50 * sizeof (gchar));
+ data->ip_src[strlen (laddr) - strlen (port)] = '\0';
+ port ++;
+ g_strlcpy (data->port_src, port, 30 * sizeof (gchar));
+ }
+
+ if (count == 5) {
+ bzero (&(data)->state, 30);
}
#endif
@@ -448,7 +475,7 @@
#ifdef __FreeBSD__
if (count == 6) {
#else
- if (count == 8) {
+ if ((count == 8) || (count == 7)) {
#endif
#ifdef DEBUG
g_print ("%s\t%s:%s\t%d\t%s\n", data.destination,
@@ -468,7 +495,7 @@
model = gtk_tree_view_get_model (widget);
- if (route_model == NULL || gtk_tree_model_get_n_columns (model) != 4) {
+ if (route_model == NULL || route_model != model) {
clean_gtk_tree_view (widget);
route_model = GTK_TREE_MODEL (gtk_list_store_new
@@ -517,6 +544,10 @@
gint count = 0;
gchar flags[30];
gint ref, use;
+#ifndef __FreeBDD__
+ gchar dest[50];
+ gchar **items;
+#endif
#ifdef __FreeBSD__
count = sscanf (line, NETSTAT_ROUTE_FORMAT,
@@ -524,14 +555,30 @@
data->gateway, flags,
&ref, &use, data->iface);
#else
-
count = sscanf (line, NETSTAT_ROUTE_FORMAT,
data->destination,
- data->gateway, data->netmask,
- flags, &(data)->metric, &ref, &use,
+ data->gateway, data->netmask,
+ flags, &(data)->metric, &ref, &use,
data->iface);
-#endif
+
+ if (count == 6) {
+ count = sscanf (line, NETSTAT_ROUTE6_FORMAT,
+ dest, data->netmask,
+ flags, &(data)->metric,
+ &ref, &use, data->iface);
+
+ items = NULL;
+
+ items = g_strsplit (dest, "/", 2);
+ if (items != NULL) {
+ g_strlcpy (data->destination, items[0], 50 * sizeof (gchar));
+ g_strlcpy (data->netmask, items[1], 50 * sizeof (gchar));
+
+ g_strfreev (items);
+ }
+ }
+#endif
return count;
}
@@ -581,7 +628,6 @@
netstat_multicast_tree_insert (GtkTreeView *widget, gchar *line)
{
GtkTreeIter iter, sibling;
- /*GList *columns;*/
GtkTreePath *path;
GtkTreeModel *model;
gint count;
@@ -591,6 +637,7 @@
g_return_if_fail (line != NULL);
count = strip_multicast_line (line, &data);
+
if (count == 3) {
#ifdef DEBUG
g_print ("%s\t%s\t%s\n", data.iface,
@@ -609,7 +656,7 @@
model = gtk_tree_view_get_model (widget);
- if (multicast_model == NULL || gtk_tree_model_get_n_columns (model) != 3) {
+ if (multicast_model == NULL || multicast_model != model) {
clean_gtk_tree_view (widget);
multicast_model = GTK_TREE_MODEL (gtk_list_store_new
@@ -661,6 +708,7 @@
count = sscanf (line, NETSTAT_MULTICAST_FORMAT,
data->iface,
&members, data->group);
+
snprintf ((data)->members, 30, "%d", members);
return count;
Index: src/netstat.h
===================================================================
RCS file: /cvs/gnome/gnome-netinfo/src/netstat.h,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 netstat.h
--- src/netstat.h 23 Jan 2004 15:48:46 -0000 1.1.1.1
+++ src/netstat.h 14 Mar 2004 19:08:38 -0000
@@ -25,9 +25,11 @@
#if defined(__linux__)
/* proto 0 0 ip port ip port state */
-# define NETSTAT_PROTOCOL_FORMAT "%s %d %d %s %s %s %s %s"
-# define NETSTAT_ROUTE_FORMAT "%s %s %s %s %d %d %d %s"
-# define NETSTAT_MULTICAST_FORMAT "%s %d %s"
+# define NETSTAT_PROTOCOL_FORMAT "%s %d %d %s %s %s"
+# define NETSTAT_ROUTE_FORMAT "%s %s %s %s %d %d %d %s"
+# define NETSTAT_ROUTE6_FORMAT "%s %s %s %d %d %d %s"
+# define NETSTAT_MULTICAST_FORMAT "%s %d %s"
+
#elif defined(__FreeBSD__)
# define NETSTAT_PROTOCOL_FORMAT "%s %d %d %d.%d.%d.%d.%s %s %s"
# define ALT_NETSTAT_PROTOCOL_FORMAT "%s %d %d *.%s %s %s"
@@ -47,7 +49,7 @@
struct _netstat_protocol_data {
gchar protocol[30];
- gchar ip_src[30];
+ gchar ip_src[50];
gchar port_src[30];
// gint port_src;
gchar state[30];
@@ -56,8 +58,8 @@
typedef struct _netstat_route_data netstat_route_data;
struct _netstat_route_data {
- gchar destination[30];
- gchar gateway[30];
+ gchar destination[50];
+ gchar gateway[50];
gchar netmask[30];
gint metric;
gchar iface[30];
Attachment:
signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente