[Midnightbsd-cvs] mports: mports/net: Add gnome net tool, similar to apple's Network

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri May 30 20:48:07 EDT 2008


Log Message:
-----------
Add gnome net tool, similar to apple's Network Utility in OS X.

Modified Files:
--------------
    mports/net:
        Makefile (r1.78 -> r1.79)

Added Files:
-----------
    mports/net/gnome-nettool:
        Makefile (r1.1)
        distinfo (r1.1)
        pkg-descr (r1.1)
        pkg-plist (r1.1)
    mports/net/gnome-nettool/files:
        patch-src_info.c (r1.1)
        patch-src_lookup.c (r1.1)
        patch-src_netstat.c (r1.1)
        patch-src_nettool.c (r1.1)
        patch-src_utils.c (r1.1)

-------------- next part --------------
--- /dev/null
+++ net/gnome-nettool/pkg-descr
@@ -0,0 +1,3 @@
+Gnome-nettool is a utility for getting network information such as interface
+statistics, and for front-ending commands like ping and traceroute.  It
+is very similar to the MacOS X Network Utility.
--- /dev/null
+++ net/gnome-nettool/pkg-plist
@@ -0,0 +1,154 @@
+bin/gnome-nettool
+share/applications/gnome-nettool.desktop
+%%DATADIR%%/dialogs/gnome-nettool.glade
+%%DATADIR%%/pixmaps/16_ethernet.xpm
+%%DATADIR%%/pixmaps/16_loopback.xpm
+%%DATADIR%%/pixmaps/16_plip.xpm
+%%DATADIR%%/pixmaps/16_ppp.xpm
+%%DATADIR%%/pixmaps/gnome-nettool.png
+%%DATADIR%%/pixmaps/irda-16.png
+%%DATADIR%%/pixmaps/network.png
+%%DATADIR%%/pixmaps/wavelan-16.png
+share/gnome/help/gnome-nettool/C/gnome-nettool.xml
+share/gnome/help/gnome-nettool/C/legal.xml
+share/gnome/help/gnome-nettool/ca/gnome-nettool.xml
+share/gnome/help/gnome-nettool/es/gnome-nettool.xml
+share/gnome/help/gnome-nettool/fr/gnome-nettool.xml
+share/gnome/help/gnome-nettool/oc/gnome-nettool.xml
+share/gnome/help/gnome-nettool/pa/gnome-nettool.xml
+share/gnome/help/gnome-nettool/sv/gnome-nettool.xml
+share/gnome/help/gnome-nettool/uk/gnome-nettool.xml
+share/gnome/help/gnome-nettool/vi/gnome-nettool.xml
+share/icons/hicolor/16x16/apps/gnome-nettool.png
+share/icons/hicolor/22x22/apps/gnome-nettool.png
+share/icons/hicolor/24x24/apps/gnome-nettool.png
+share/icons/hicolor/32x32/apps/gnome-nettool.png
+share/icons/hicolor/scalable/apps/gnome-nettool.svg
+share/locale/ar/LC_MESSAGES/gnome-nettool.mo
+share/locale/as/LC_MESSAGES/gnome-nettool.mo
+share/locale/az/LC_MESSAGES/gnome-nettool.mo
+share/locale/bg/LC_MESSAGES/gnome-nettool.mo
+share/locale/bn/LC_MESSAGES/gnome-nettool.mo
+share/locale/bn_IN/LC_MESSAGES/gnome-nettool.mo
+share/locale/bs/LC_MESSAGES/gnome-nettool.mo
+share/locale/ca/LC_MESSAGES/gnome-nettool.mo
+share/locale/cs/LC_MESSAGES/gnome-nettool.mo
+share/locale/cy/LC_MESSAGES/gnome-nettool.mo
+share/locale/da/LC_MESSAGES/gnome-nettool.mo
+share/locale/de/LC_MESSAGES/gnome-nettool.mo
+share/locale/dz/LC_MESSAGES/gnome-nettool.mo
+share/locale/el/LC_MESSAGES/gnome-nettool.mo
+share/locale/en_CA/LC_MESSAGES/gnome-nettool.mo
+share/locale/en_GB/LC_MESSAGES/gnome-nettool.mo
+share/locale/es/LC_MESSAGES/gnome-nettool.mo
+share/locale/et/LC_MESSAGES/gnome-nettool.mo
+share/locale/eu/LC_MESSAGES/gnome-nettool.mo
+share/locale/fa/LC_MESSAGES/gnome-nettool.mo
+share/locale/fi/LC_MESSAGES/gnome-nettool.mo
+share/locale/fr/LC_MESSAGES/gnome-nettool.mo
+share/locale/ga/LC_MESSAGES/gnome-nettool.mo
+share/locale/gl/LC_MESSAGES/gnome-nettool.mo
+share/locale/gu/LC_MESSAGES/gnome-nettool.mo
+share/locale/he/LC_MESSAGES/gnome-nettool.mo
+share/locale/hi/LC_MESSAGES/gnome-nettool.mo
+share/locale/hr/LC_MESSAGES/gnome-nettool.mo
+share/locale/hu/LC_MESSAGES/gnome-nettool.mo
+share/locale/id/LC_MESSAGES/gnome-nettool.mo
+share/locale/it/LC_MESSAGES/gnome-nettool.mo
+share/locale/ja/LC_MESSAGES/gnome-nettool.mo
+share/locale/ka/LC_MESSAGES/gnome-nettool.mo
+share/locale/kn/LC_MESSAGES/gnome-nettool.mo
+share/locale/ko/LC_MESSAGES/gnome-nettool.mo
+share/locale/ku/LC_MESSAGES/gnome-nettool.mo
+share/locale/lt/LC_MESSAGES/gnome-nettool.mo
+share/locale/lv/LC_MESSAGES/gnome-nettool.mo
+share/locale/mg/LC_MESSAGES/gnome-nettool.mo
+share/locale/mk/LC_MESSAGES/gnome-nettool.mo
+share/locale/ml/LC_MESSAGES/gnome-nettool.mo
+share/locale/mn/LC_MESSAGES/gnome-nettool.mo
+share/locale/mr/LC_MESSAGES/gnome-nettool.mo
+share/locale/ms/LC_MESSAGES/gnome-nettool.mo
+share/locale/nb/LC_MESSAGES/gnome-nettool.mo
+share/locale/ne/LC_MESSAGES/gnome-nettool.mo
+share/locale/nl/LC_MESSAGES/gnome-nettool.mo
+share/locale/nn/LC_MESSAGES/gnome-nettool.mo
+share/locale/oc/LC_MESSAGES/gnome-nettool.mo
+share/locale/or/LC_MESSAGES/gnome-nettool.mo
+share/locale/pa/LC_MESSAGES/gnome-nettool.mo
+share/locale/pl/LC_MESSAGES/gnome-nettool.mo
+share/locale/pt/LC_MESSAGES/gnome-nettool.mo
+share/locale/pt_BR/LC_MESSAGES/gnome-nettool.mo
+share/locale/ro/LC_MESSAGES/gnome-nettool.mo
+share/locale/ru/LC_MESSAGES/gnome-nettool.mo
+share/locale/rw/LC_MESSAGES/gnome-nettool.mo
+share/locale/si/LC_MESSAGES/gnome-nettool.mo
+share/locale/sk/LC_MESSAGES/gnome-nettool.mo
+share/locale/sl/LC_MESSAGES/gnome-nettool.mo
+share/locale/sq/LC_MESSAGES/gnome-nettool.mo
+share/locale/sr/LC_MESSAGES/gnome-nettool.mo
+share/locale/sr at Latn/LC_MESSAGES/gnome-nettool.mo
+share/locale/sv/LC_MESSAGES/gnome-nettool.mo
+share/locale/ta/LC_MESSAGES/gnome-nettool.mo
+share/locale/te/LC_MESSAGES/gnome-nettool.mo
+share/locale/th/LC_MESSAGES/gnome-nettool.mo
+share/locale/tr/LC_MESSAGES/gnome-nettool.mo
+share/locale/uk/LC_MESSAGES/gnome-nettool.mo
+share/locale/uz/LC_MESSAGES/gnome-nettool.mo
+share/locale/uz at cyrillic/LC_MESSAGES/gnome-nettool.mo
+share/locale/vi/LC_MESSAGES/gnome-nettool.mo
+share/locale/wa/LC_MESSAGES/gnome-nettool.mo
+share/locale/xh/LC_MESSAGES/gnome-nettool.mo
+share/locale/zh_CN/LC_MESSAGES/gnome-nettool.mo
+share/locale/zh_HK/LC_MESSAGES/gnome-nettool.mo
+share/locale/zh_TW/LC_MESSAGES/gnome-nettool.mo
+share/omf/gnome-nettool/gnome-nettool-C.omf
+share/omf/gnome-nettool/gnome-nettool-ca.omf
+share/omf/gnome-nettool/gnome-nettool-es.omf
+share/omf/gnome-nettool/gnome-nettool-fr.omf
+share/omf/gnome-nettool/gnome-nettool-oc.omf
+share/omf/gnome-nettool/gnome-nettool-pa.omf
+share/omf/gnome-nettool/gnome-nettool-sv.omf
+share/omf/gnome-nettool/gnome-nettool-uk.omf
+share/omf/gnome-nettool/gnome-nettool-vi.omf
+share/pixmaps/gnome-nettool.png
+ at dirrm share/omf/gnome-nettool
+ at dirrm share/gnome/help/gnome-nettool/vi
+ at dirrm share/gnome/help/gnome-nettool/uk
+ at dirrm share/gnome/help/gnome-nettool/sv
+ at dirrm share/gnome/help/gnome-nettool/pa
+ at dirrm share/gnome/help/gnome-nettool/oc
+ at dirrm share/gnome/help/gnome-nettool/fr
+ at dirrm share/gnome/help/gnome-nettool/es
+ at dirrm share/gnome/help/gnome-nettool/ca
+ at dirrm share/gnome/help/gnome-nettool/C
+ at dirrm share/gnome/help/gnome-nettool
+ at dirrm %%DATADIR%%/pixmaps
+ at dirrm %%DATADIR%%/dialogs
+ at dirrm %%DATADIR%%
+ at dirrmtry share/applications
+ at dirrmtry share/locale/zh_HK/LC_MESSAGES
+ at dirrmtry share/locale/zh_HK
+ at dirrmtry share/locale/xh/LC_MESSAGES
+ at dirrmtry share/locale/xh
+ at dirrmtry share/locale/uz at cyrillic/LC_MESSAGES
+ at dirrmtry share/locale/uz at cyrillic
+ at dirrmtry share/locale/te/LC_MESSAGES
+ at dirrmtry share/locale/te
+ at dirrmtry share/locale/si/LC_MESSAGES
+ at dirrmtry share/locale/si
+ at dirrmtry share/locale/rw/LC_MESSAGES
+ at dirrmtry share/locale/rw
+ at dirrmtry share/locale/oc/LC_MESSAGES
+ at dirrmtry share/locale/oc
+ at dirrmtry share/locale/mr/LC_MESSAGES
+ at dirrmtry share/locale/mr
+ at dirrmtry share/locale/mg/LC_MESSAGES
+ at dirrmtry share/locale/mg
+ at dirrmtry share/locale/ku/LC_MESSAGES
+ at dirrmtry share/locale/ku
+ at dirrmtry share/locale/dz/LC_MESSAGES
+ at dirrmtry share/locale/dz
+ at dirrmtry share/locale/bn_IN/LC_MESSAGES
+ at dirrmtry share/locale/bn_IN
+ at dirrmtry share/locale/as/LC_MESSAGES
+ at dirrmtry share/locale/as
--- /dev/null
+++ net/gnome-nettool/Makefile
@@ -0,0 +1,37 @@
+# New ports collection makefile for:   gnomenetwork
+# Date Created:			03 June 2003
+# Whom:				Adam Weinberger <adamw at FreeBSD.org>
+#
+# $MidnightBSD: mports/net/gnome-nettool/Makefile,v 1.1 2008/05/31 00:48:04 laffer1 Exp $
+# $FreeBSD: ports/net/gnome-nettool/Makefile,v 1.25 2008/03/24 03:50:01 marcus Exp $
+#   $MCom: ports/net/gnome-nettool/Makefile,v 1.42 2008/03/10 21:33:09 mezz Exp $
+#
+
+PORTNAME=	gnome-nettool
+PORTVERSION=	2.22.0
+PORTEPOCH=	1
+CATEGORIES=	net gnome
+MASTER_SITES=	GNOME
+DIST_SUBDIR=	gnome2
+
+MAINTAINER=	ports at MidnightBSD.org
+COMMENT=	A GNOME utility that provides network information statistics
+LICENSE=	gpl2
+
+USE_BZIP2=	yes
+USE_GNOME=	gnomehack intlhack gnomeprefix libglade2 gconf2 gnomedocutils
+USE_GMAKE=	yes
+USE_GETTEXT=	yes
+INSTALLS_OMF=	yes
+INSTALLS_ICONS=	yes
+GNU_CONFIGURE=	yes
+CONFIGURE_ENV=	CPPFLAGS="-I${LOCALBASE}/include" \
+		LDFLAGS="-L${LOCALBASE}/lib"
+CFLAGS+=	-DHAVE_SOCKADDR_SA_LEN
+
+post-install:
+	${MKDIR} ${PREFIX}/share/pixmaps
+	${LN} -sf ${PREFIX}/share/gnome-nettool/pixmaps/gnome-nettool.png \
+		${PREFIX}/share/pixmaps/gnome-nettool.png
+
+.include <bsd.port.mk>
--- /dev/null
+++ net/gnome-nettool/distinfo
@@ -0,0 +1,3 @@
+MD5 (gnome2/gnome-nettool-2.22.0.tar.bz2) = 290dd50a08a3859332afb6daf46dde25
+SHA256 (gnome2/gnome-nettool-2.22.0.tar.bz2) = ddf6de5d2df6515423ef8aad12750a69a553584685854fa47073126b89fc25a3
+SIZE (gnome2/gnome-nettool-2.22.0.tar.bz2) = 617193
Index: Makefile
===================================================================
RCS file: /home/cvs/mports/net/Makefile,v
retrieving revision 1.78
retrieving revision 1.79
diff -L net/Makefile -L net/Makefile -u -r1.78 -r1.79
--- net/Makefile
+++ net/Makefile
@@ -17,6 +17,7 @@
     SUBDIR += freeradius
     SUBDIR += gnet2
     SUBDIR += gnome-netstatus
+    SUBDIR += gnome-nettool
     SUBDIR += hinfo
     SUBDIR += hping
     SUBDIR += ilbc
--- /dev/null
+++ net/gnome-nettool/files/patch-src_utils.c
@@ -0,0 +1,20 @@
+--- src/utils.c.orig	Fri May  6 16:10:28 2005
++++ src/utils.c	Sun Jul  3 17:48:12 2005
+@@ -24,6 +24,8 @@
+    on GNOME 2.0 */
+ 
+ #include "utils.h"
++#include <stdlib.h>
++#include <limits.h>
+ #include <string.h>
+ #include <glib/gi18n.h>
+ 
+@@ -240,7 +242,7 @@ util_legible_bytes (gchar *bytes)
+ 	const gchar *unit = "B";
+ 	gchar *result;
+ 	
+-	sscanf (bytes, "%lld", &rx);
++	rx = strtoull (bytes, (char **)NULL, 10);
+ 	short_rx = rx * 10;  
+ 
+ 	if (rx > 1125899906842624ull) {
--- /dev/null
+++ net/gnome-nettool/files/patch-src_netstat.c
@@ -0,0 +1,20 @@
+--- src/netstat.c.orig	Tue Jul  6 13:55:25 2004
++++ src/netstat.c	Fri Aug 20 15:55:40 2004
+@@ -108,12 +108,17 @@
+ 	g_return_val_if_fail (netinfo != NULL, NULL);
+ 	
+ 	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (netinfo->routing))) {
++#ifdef __FreeBSD__
++		/* XXX We only support ipv4 now */
++		option = g_strdup ("-rn -f inet");
++#else
+ 		/* Works for Solaris and Linux */
+ 		if (netinfo_is_ipv6_enable ()) {
+ 			option = g_strdup ("-rn -A inet -A inet6");
+ 		} else {
+ 			option = g_strdup ("-rn -A inet");
+ 		}
++#endif
+ 
+ 		if (netinfo->stbar_text)
+ 			g_free (netinfo->stbar_text);
--- /dev/null
+++ net/gnome-nettool/files/patch-src_lookup.c
@@ -0,0 +1,10 @@
+--- src/lookup.c.orig	Sun Jul  3 17:47:02 2005
++++ src/lookup.c	Sun Jul  3 17:47:20 2005
+@@ -21,6 +21,7 @@
+ #include <gtk/gtk.h>
+ #include <glib/gi18n.h>
+ #include <glib/gprintf.h>
++#include <sys/types.h>
+ 
+ #include "lookup.h"
+ #include "utils.h"
--- /dev/null
+++ net/gnome-nettool/files/patch-src_info.c
@@ -0,0 +1,259 @@
+--- src/info.c.orig	Fri Dec  1 10:36:15 2006
++++ src/info.c	Mon Dec 18 17:32:19 2006
+@@ -20,6 +20,10 @@
+ #include <gtk/gtk.h>
+ #include <glib/gi18n.h>
+ #include <glib/gprintf.h>
++#include <sys/types.h>
++#include <string.h>
++#include <errno.h>
++#include <unistd.h>
+ 
+ #ifdef HAVE_CONFIG_H
+ #  include <config.h>
+@@ -38,6 +42,11 @@
+ #include <sys/ioctl.h>
+ #include <stdlib.h>
+ #include <net/if.h>
++#ifdef __FreeBSD__
++#include <sys/sysctl.h>
++#include <net/if_dl.h>
++#include <net/if_media.h>
++#endif
+ 
+ #include "info.h"
+ #include "utils.h"
+@@ -58,6 +67,7 @@ static InfoInterfaceDescription info_ifa
+ 	{ N_("Ethernet Interface"),      INFO_INTERFACE_ETH,     "16_ethernet.xpm", "eth",        NULL },
+ 	{ N_("Wireless Interface"),      INFO_INTERFACE_WLAN,    "wavelan-16.png",  "wlan",       NULL },
+ 	{ N_("Modem Interface"),         INFO_INTERFACE_PPP,     "16_ppp.xpm",      "ppp",        NULL },
++	{ N_("Modem Interface"),         INFO_INTERFACE_PPP,     "16_ppp.xpm",      "tun",        NULL },
+ 	{ N_("Parallel Line Interface"), INFO_INTERFACE_PLIP,    "16_plip.xpm",     "plip",       NULL },
+ 	{ N_("Infrared Interface"),      INFO_INTERFACE_IRLAN,   "irda-16.png",     "irlan",      NULL },
+ 	{ N_("Loopback Interface"),      INFO_INTERFACE_LO,      "16_loopback.xpm", "lo",         NULL },
+@@ -128,9 +138,42 @@ info_get_interface_from_dev_name (const 
+ {
+ 	gint i;
+ 	gchar *path;
+-	
++	gchar *dev_type = NULL;
++#if defined(__FreeBSD__)
++	int s;
++	struct ifmediareq ifmr;
++
++	if ((s = socket (AF_INET, SOCK_DGRAM, 0)) > -1) {
++
++		(void) memset (&ifmr, 0, sizeof (ifmr));
++		(void) strncpy (ifmr.ifm_name, dev_name, sizeof (ifmr.ifm_name));
++
++		if (ioctl (s, SIOCGIFMEDIA, (caddr_t) &ifmr) > -1) {
++			switch (IFM_TYPE (ifmr.ifm_active)) {
++				case IFM_ETHER:
++					dev_type = "eth";
++					break;
++				case IFM_FDDI:
++				case IFM_TOKEN:
++#ifdef IFM_ATM
++				case IFM_ATM:
++#endif
++					dev_type = "other_type";
++					break;
++				case IFM_IEEE80211:
++					dev_type = "wlan";
++					break;
++			}
++		}
++		close (s);
++	}
++#endif /* defined(__FreeBSD__) */
++
++	if (!dev_type)
++		dev_type = (gchar *) dev_name;
++
+ 	for (i = 0; info_iface_desc[i].name; i++)
+-		if (strstr (dev_name, info_iface_desc[i].prefix) == dev_name) {
++		if (strstr (dev_type, info_iface_desc[i].prefix) == dev_type) {
+ 			(*iface) = g_strdup_printf ("%s (%s)", _(info_iface_desc[i].name), dev_name);
+ 			if (info_iface_desc[i].pixbuf == NULL) {
+ 				path = g_build_filename (PIXMAPS_DIR, info_iface_desc[i].icon, NULL);
+@@ -218,38 +261,87 @@ info_nic_update_stats (gpointer data)
+ 	gchar tx[10], tx_error[10], tx_drop[10], tx_ovr[10]; 
+ 	*/
+ 	gchar iface[30]; /*, flags[30]; */
+-	gchar rx_bytes[16], rx_pkt[10], rx_error[10], rx_drop[10], rx_fifo[10];
+-	gchar frame[10], compressed[10], multicast[10]; 
+-	gchar tx_bytes[16], tx_pkt[10], tx_error[10], tx_drop[10], tx_fifo[10];
++	gchar rx_bytes[16], rx_pkt[10], rx_error[10];
++	gchar tx_bytes[16], tx_pkt[10], tx_error[10];
+ 	gchar collissions[10];
++#if defined(__linux__)
++	gchar rx_drop[10], rx_fifo[10];
++	gchar frame[10], compressed[10], multicast[10];
++	gchar tx_drop[10], tx_fifo[10];
++#elif defined(__FreeBSD__)
++	char *p;
++	gchar **tokens, **argv;
++	int i;
++	int pipe_out;
++#endif
+ 
+ 	GIOChannel *io = NULL;
+ 	gchar *line;
+ 	gboolean title = TRUE;
+ 	const gchar *text;
+ 	gchar *text_tx_bytes, *text_rx_bytes;
+-		
++
+ 	g_return_val_if_fail (info != NULL, FALSE);
+ 
+ 	model = gtk_combo_box_get_model (GTK_COMBO_BOX (info->combo));
+ 	text = info_get_nic (info);
+ 	if (!text)
+ 		return FALSE;
+-	
++
+ #if defined(__linux__)
+ 	io = g_io_channel_new_file ("/proc/net/dev", "r", NULL);
+-	
++#elif defined(__FreeBSD__)
++	if (!g_shell_parse_argv ("/usr/bin/netstat -in -b -f link", NULL, &argv, NULL)) {
++		return FALSE;
++	}
++	if (!g_spawn_async_with_pipes (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, &pipe_out, NULL, NULL)) {
++		g_strfreev (argv);
++		return FALSE;
++	}
++
++	g_strfreev (argv);
++
++	io = g_io_channel_unix_new (pipe_out);
++#endif /* defined(__linux__) */
++
+ 	while (g_io_channel_read_line (io, &line, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) {
+ 		if (title) {
+ 			title = FALSE;
+ 			g_free (line);
+ 			continue;
+ 		}
++#if defined(__linux__)
+ 		line = g_strdelimit (line, ":", ' ');
+ 		sscanf (line, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", iface,
+ 			rx_bytes, rx_pkt, rx_error, rx_drop, rx_fifo, frame, 
+ 		    compressed, multicast, 
+ 		    tx_bytes, tx_pkt, tx_error, tx_drop, tx_fifo, collissions);
++#elif defined(__FreeBSD__)
++		tokens = (gchar **) g_malloc0 (sizeof (gchar *) * 12);
++		p = strtok (line, " \t\n");
++		/* We only care about 11 fields for now */
++		for (i = 0; i < 11 && p; i++, p = strtok (NULL, " \t\n")) {
++			tokens[i] = g_strdup (p);
++		}
++
++		if (i == 0 || i < 10) {
++			g_free (line);
++			g_strfreev (tokens);
++			continue;
++		}
++
++		g_strlcpy (iface, tokens[0], sizeof (iface));
++
++		g_strlcpy (collissions, tokens[--i], sizeof (collissions));
++		g_strlcpy (tx_bytes, tokens[--i], sizeof (tx_bytes));
++		g_strlcpy (tx_error, tokens[--i], sizeof (tx_error));
++		g_strlcpy (tx_pkt, tokens[--i], sizeof (tx_pkt));
++		g_strlcpy (rx_bytes, tokens[--i], sizeof (rx_bytes));
++		g_strlcpy (rx_error, tokens[--i], sizeof (rx_error));
++		g_strlcpy (rx_pkt, tokens[--i], sizeof (rx_pkt));
++
++		g_strfreev (tokens);
++#endif /* defined(__linux__) */
+ 
+ 		if (g_ascii_strcasecmp (iface, text) == 0) {
+ 			/*
+@@ -277,7 +369,9 @@ info_nic_update_stats (gpointer data)
+ 	}
+ 	
+ 	g_io_channel_unref (io);
+-#endif /* defined(__linux__) */
++#if defined(__FreeBSD__)
++	close (pipe_out);
++#endif /* defined(__FreeBSD__) */
+ 
+ 	return TRUE;
+ }
+@@ -425,8 +519,19 @@ info_get_nic_information (const gchar *n
+ 	#ifdef __linux__
+ 	mii_data_result data;
+ 	#endif
++#ifdef __FreeBSD__
++	gint hwmib[6];
++	size_t hwlen;
++	gchar *hwbuf;
++	guchar *hwptr;
++	struct if_msghdr *hwifm;
++	struct sockaddr_dl *hwsinptr;
++#endif
+ 
+-	getifaddrs (&ifa0);
++	if (getifaddrs (&ifa0) != 0) {
++		g_warning ("getifaddrs failed: %s", g_strerror (errno));
++		goto fail;
++	}
+ 
+ 	for (ifr6 = ifa0; ifr6; ifr6 = ifr6->ifa_next) {
+ 		if (strcmp (ifr6->ifa_name, nic) != 0) {
+@@ -510,6 +615,45 @@ info_get_nic_information (const gchar *n
+ 				   (int) ((guchar *) &ifrcopy.ifr_hwaddr.sa_data)[3],
+ 				   (int) ((guchar *) &ifrcopy.ifr_hwaddr.sa_data)[4],
+ 				   (int) ((guchar *) &ifrcopy.ifr_hwaddr.sa_data)[5]);
++#elif defined(__FreeBSD__)
++			hwmib[0] = CTL_NET;
++			hwmib[1] = AF_ROUTE;
++			hwmib[2] = 0;
++			hwmib[3] = AF_LINK;
++			hwmib[4] = NET_RT_IFLIST;
++			if ((hwmib[5] = if_nametoindex (nic)) == 0) {
++				g_sprintf (dst, NOT_AVAILABLE);
++				goto hwfail;
++			}
++			if (sysctl (hwmib, 6, NULL, &hwlen, NULL, 0) < 0) {
++				g_sprintf (dst, NOT_AVAILABLE);
++				goto hwfail;
++			}
++			if ((hwbuf = g_malloc (hwlen)) == NULL) {
++				g_sprintf (dst, NOT_AVAILABLE);
++				goto hwfail;
++			}
++			if (sysctl (hwmib, 6, hwbuf, &hwlen, NULL, 0) < 0) {
++				g_sprintf (dst, NOT_AVAILABLE);
++				goto hwfail;
++			}
++
++			hwifm = (struct if_msghdr *) hwbuf;
++			hwsinptr = (struct sockaddr_dl *) (hwifm + 1);
++			hwptr = (guchar *) LLADDR (hwsinptr);
++			if (*hwptr != 0 || *(hwptr + 1) != 0 ||
++				*(hwptr + 2) != 0 || *(hwptr + 3) != 0 ||
++				*(hwptr + 4) != 0 || *(hwptr + 5) != 0) {
++				g_sprintf (dst, "%02x:%02x:%02x:%02x:%02x:%02x",
++					*hwptr, *(hwptr + 1), *(hwptr + 2),
++					*(hwptr + 3), *(hwptr + 4), *(hwptr + 5));
++			}
++			else {
++				g_sprintf (dst, NOT_AVAILABLE);
++			}
++			g_free (hwbuf);
++
++hwfail:
+ #else
+ 			g_sprintf (dst, NOT_AVAILABLE);
+ #endif /* SIOCGIFHWADDR */
+@@ -625,6 +769,8 @@ info_get_nic_information (const gchar *n
+ 	}
+ 
+ 	freeifaddrs (ifa0);
++fail:
++	;
+ }
+ 
+ static gint *
--- /dev/null
+++ net/gnome-nettool/files/patch-src_nettool.c
@@ -0,0 +1,37 @@
+--- src/nettool.c.orig	Fri Apr 14 08:36:08 2006
++++ src/nettool.c	Fri May 12 15:54:15 2006
+@@ -24,6 +24,7 @@
+ #include <string.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <netinet/in.h>
+ #include <signal.h>
+ #include <errno.h>
+ #include <sys/wait.h>
+@@ -360,6 +361,10 @@ netinfo_io_text_buffer_dialog (GIOChanne
+ 						 	len, NULL);
+ 			}
+ 
++			g_free (text);
++
++			return TRUE;
++
+ 		} else if (status == G_IO_STATUS_AGAIN) {
+ 			char buf[1];
+ 
+@@ -371,12 +376,13 @@ netinfo_io_text_buffer_dialog (GIOChanne
+ 				}
+ 				g_string_append_c (netinfo->command_output, buf[0]);
+ 			}
++
++			g_free (text);
++			return TRUE;
+ 		} else if (status == G_IO_STATUS_EOF) {
+ 		}
+ 
+ 		g_free (text);
+-
+-		return TRUE;
+ 	}
+ 
+ 	/* The condition is not G_IO_HUP | G_IO_ERR | G_IO_NVAL, so


More information about the Midnightbsd-cvs mailing list