diff --git a/.cvsignore b/.cvsignore
index 1d4a063..ff65062 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,3 @@
 arp hostname ifconfig ipmaddr iptunnel netstat plipconfig rarp route slattach
 version.h config.make config.status config.h nameif mii-tool
+.git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9184162
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,36 @@
+*.o
+
+*.diff
+*.patch
+*.rej
+*.orig
+
+.gdb_history
+.gdbinit
+core
+*.gdb
+
+/config.h
+/config.make
+/config.status
+
+/net-tools-*.tar*
+
+/lib/libnet-tools.a
+
+/po/*.mo
+
+/version.h
+
+/arp
+/hostname
+/ifconfig
+/ipmaddr
+/iptunnel
+/mii-tool
+/nameif
+/netstat
+/plipconfig
+/rarp
+/route
+/slattach
diff --git a/COPYING b/COPYING
index a43ea21..d159169 100644
--- a/COPYING
+++ b/COPYING
@@ -1,12 +1,12 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          675 Mass Ave, Cambridge, MA 02139, USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-			    Preamble
+                            Preamble
 
   The licenses for most software are designed to take away your
 freedom to share and change it.  By contrast, the GNU General Public
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This
 General Public License applies to most of the Free Software
 Foundation's software and to any other program whose authors commit to
 using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+the GNU Lesser General Public License instead.)  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
+
+                    GNU GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
   0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
     License.  (Exception: if the Program itself is interactive but
     does not normally print such an announcement, your work based on
     the Program is not required to print an announcement.)
-
+
 These requirements apply to the modified work as a whole.  If
 identifiable sections of that work are not derived from the Program,
 and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 access to copy the source code from the same place counts as
 distribution of the source code, even though third parties are not
 compelled to copy the source along with the object code.
-
+
   4. You may not copy, modify, sublicense, or distribute the Program
 except as expressly provided under this License.  Any attempt
 otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
 
 This section is intended to make thoroughly clear what is believed to
 be a consequence of the rest of this License.
-
+
   8. If the distribution and/or use of the Program is restricted in
 certain countries either by patents or by copyrighted interfaces, the
 original copyright holder who places the Program under this License
@@ -255,7 +255,7 @@ make exceptions for this.  Our decision will be guided by the two goals
 of preserving the free status of all derivatives of our free software and
 of promoting the sharing and reuse of software generally.
 
-			    NO WARRANTY
+                            NO WARRANTY
 
   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.
 
-		     END OF TERMS AND CONDITIONS
-
-	Appendix: How to Apply These Terms to Your New Programs
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
     <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
+    Copyright (C) <year>  <name of author>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -303,16 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 Also add information on how to contact you by electronic and paper mail.
 
 If the program is interactive, make it output a short notice like this
 when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision version 69, Copyright (C) year name of author
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
@@ -335,5 +335,5 @@ necessary.  Here is a sample; alter the names:
 This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may
 consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
+library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
diff --git a/INSTALLING b/INSTALLING
index c49f21f..f6180c8 100644
--- a/INSTALLING
+++ b/INSTALLING
@@ -27,7 +27,7 @@ of the other options should work as well.
 
 
 COMPILE
--------  
+-------
 To compile simply use "make".
 
 There should be no warnings or errors.
diff --git a/Makefile b/Makefile
index 8fcc55c..edf80ec 100644
--- a/Makefile
+++ b/Makefile
@@ -5,14 +5,10 @@
 #		NET-3 Networking Distribution for the LINUX operating
 #		system.
 #
-# Version:	2001-02-13
-#
 # Author:	Bernd Eckenfels <net-tools@lina.inka.de>
 #		Copyright 1995-1996 Bernd Eckenfels, Germany
 #
-# URLs:		ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/ 
-#		ftp://ftp.linux.org.uk/pub/linux/Networking/PROGRAMS/NetTools/
-#		http://www.inka.de/sites/lina/linux/NetTools/index_en.html
+# URLs:		http://net-tools.sourceforge.net/
 #
 # Based on:	Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
 #		Copyright 1988-1993 MicroWalt Corporation
@@ -22,55 +18,16 @@
 #		Alan Cox <A.Cox@swansea.ac.uk>
 #		Copyright 1993-1994 Swansea University Computer Society
 #
-# Be careful! 
+# Be careful!
 # This Makefile doesn't describe complete dependencies for all include files.
-# If you change include files you might need to do make clean. 
-#
-#	{1.20}	Bernd Eckenfels:	Even more modifications for the new 
-#					package layout
-#	{1.21}	Bernd Eckenfels:	Check if config.in is newer than 
-#					config.status
-#	{1.22}  Bernd Eckenfels:	Include ypdomainname and nisdomainame
-#
-#	1.3.50-BETA6 private Release
-#				
-#960125	{1.23}	Bernd Eckenfels:	Peter Tobias' rewrite for 
-#					makefile-based installation
-#	1.3.50-BETA6a private Release
-#
-#960201 {1.24}	Bernd Eckenfels:	net-features.h added
-#
-#960201 1.3.50-BETA6b private Release
-#
-#960203 1.3.50-BETA6c private Release
-#
-#960204 1.3.50-BETA6d private Release
-#
-#960204 {1.25}	Bernd Eckenfels:	DISTRIBUTION added
-#
-#960205 1.3.50-BETA6e private Release
-#
-#960206	{1.26}	Bernd Eckenfels:	afrt.o removed (cleaner solution)
-#
-#960215 1.3.50-BETA6f Release
-#
-#960216 {1.30}	Bernd Eckenfels:	net-lib support
-#960322 {1.31}	Bernd Eckenfels:	moveable netlib, TOPDIR
-#960424 {1.32}	Bernd Eckenfels:	included the URLs in the Comment
-#
-#960514 1.31-alpha release
-#
-#960518 {1.33}	Bernd Eckenfels:	-I/usr/src/linux/include comment added
-#
-#	This program is free software; you can redistribute it
-#	and/or  modify it under  the terms of  the GNU General
-#	Public  License as  published  by  the  Free  Software
-#	Foundation;  either  version 2 of the License, or  (at
-#	your option) any later version.
+# If you change include files you might need to do make clean.
 #
 
-# set the base of the Installation 
+# set the base of the Installation
 # BASEDIR = /mnt
+BASEDIR ?= $(DESTDIR)
+BINDIR ?= /bin
+SBINDIR ?= /sbin
 
 # path to the net-lib support library. Default: lib
 NET_LIB_PATH = lib
@@ -88,20 +45,26 @@ endif
 
 # Compiler and Linker Options
 # You may need to uncomment and edit these if you are using libc5 and IPv6.
-COPTS = -D_GNU_SOURCE -O2 -Wall -g # -I/usr/inet6/include
-ifeq ($(origin LOPTS), undefined)
-LOPTS = 
-endif
+CFLAGS ?= -O2 -g
+CFLAGS += -Wall
+CFLAGS += -fno-strict-aliasing # code needs a lot of work before strict aliasing is safe
+CPPFLAGS += -D_GNU_SOURCE
 RESLIB = # -L/usr/inet6/lib -linet6
 
 ifeq ($(HAVE_AFDECnet),1)
 DNLIB = -ldnet
 endif
 
+ifeq ($(origin CC), undefined)
+CC	= gcc
+endif
+LD	= $(CC)
+PKG_CONFIG ?= pkg-config
+
 # -------- end of user definitions --------
 
-MAINTAINER = Philip.Blundell@pobox.com
-RELEASE	   = 1.60
+MAINTAINER = net-tools-devel@lists.sourceforge.net
+RELEASE	   = 2.10-alpha
 
 .EXPORT_ALL_VARIABLES:
 
@@ -113,22 +76,22 @@ endif
 
 NET_LIB = $(NET_LIB_PATH)/lib$(NET_LIB_NAME).a
 
-CFLAGS	= $(COPTS) -I. -idirafter ./include/ -I$(NET_LIB_PATH)
-LDFLAGS	= $(LOPTS) -L$(NET_LIB_PATH)
+ifeq ($(HAVE_SELINUX),1)
+SE_PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags libselinux)
+SE_PC_LIBS := $(shell $(PKG_CONFIG) --libs libselinux || echo -lselinux)
+SELIB = $(SE_PC_LIBS)
+CPPFLAGS += $(SE_PC_CFLAGS)
+endif
 
-SUBDIRS	= man/ $(NET_LIB_PATH)/
+CPPFLAGS += -I. -I$(TOPDIR)/include -I$(NET_LIB_PATH)
+LDFLAGS  += -L$(NET_LIB_PATH)
 
-ifeq ($(origin CC), undefined)
-CC	= gcc
-endif
-LD	= $(CC)
+SUBDIRS	= man/ $(NET_LIB_PATH)/
 
 NLIB	= -l$(NET_LIB_NAME)
 
-MDEFINES = COPTS='$(COPTS)' LOPTS='$(LOPTS)' TOPDIR='$(TOPDIR)'
-
-%.o:		%.c config.h version.h intl.h net-features.h $<
-		$(CC) $(CFLAGS) -c $<
+%.o:		%.c config.h version.h intl.h lib/net-features.h $<
+		$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
 
 all:		config.h version.h subdirs $(PROGS)
 
@@ -154,12 +117,21 @@ clobber: 	clean
 		@for i in $(SUBDIRS); do (cd $$i && $(MAKE) clobber) ; done
 
 
-dist: 		clobber
-		@echo Creating net-tools-$(RELEASE) in ..
-		@tar -cvz -f ../net-tools-$(RELEASE).tar.gz -C .. net-tools
+dist:
+		rm -rf net-tools-$(RELEASE)
+		git archive --prefix=net-tools-$(RELEASE)/ HEAD | tar xf -
+		$(MAKE) -C net-tools-$(RELEASE)/po $@
+		tar cf - net-tools-$(RELEASE)/ | xz > net-tools-$(RELEASE).tar.xz
+		rm -rf net-tools-$(RELEASE)
 
+distcheck:	dist
+		tar xf net-tools-$(RELEASE).tar.xz
+		yes "" | $(MAKE) -C net-tools-$(RELEASE) config
+		$(MAKE) -C net-tools-$(RELEASE)
+		rm -rf net-tools-$(RELEASE)
+		@printf "\nThe tarball is ready to go:\n%s\n" "`du -b net-tools-$(RELEASE).tar.xz`"
 
-config.h: 	config.in Makefile 
+config.h: 	config.in Makefile
 		@echo "Configuring the Linux net-tools (NET-3 Base Utilities)..." ; echo
 		@if [ config.status -nt config.in ]; \
 			then ./configure.sh config.status; \
@@ -175,85 +147,91 @@ $(NET_LIB):	config.h version.h intl.h libdir
 
 i18n.h:		i18ndir
 
-libdir:
-		@$(MAKE) -C $(NET_LIB_PATH) $(MDEFINES)
+libdir:		version.h
+		@$(MAKE) -C $(NET_LIB_PATH)
 
 i18ndir:
 		@$(MAKE) -C po
 
-subdirs:
-		@for i in $(SUBDIRS); do $(MAKE) -C $$i $(MDEFINES) ; done
+# use libdir target for lib/ to avoid parallel build issues
+subdirs:	libdir
+		@for i in $(SUBDIRS:$(NET_LIB_PATH)/=); do $(MAKE) -C $$i || exit $$? ; done
 
 ifconfig:	$(NET_LIB) ifconfig.o
-		$(CC) $(LDFLAGS) -o ifconfig ifconfig.o $(NLIB) $(RESLIB)
-		
-nameif:	nameif.o
-		$(CC) $(LDFLAGS) -o nameif nameif.o 
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ ifconfig.o $(NLIB) $(RESLIB)
+
+nameif:		$(NET_LIB) nameif.o
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ nameif.o $(NLIB) $(RESLIB)
 
 hostname:	hostname.o
-		$(CC) $(LDFLAGS) -o hostname hostname.o $(DNLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ hostname.o $(DNLIB)
 
 route:		$(NET_LIB) route.o
-		$(CC) $(LDFLAGS) -o route route.o $(NLIB) $(RESLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ route.o $(NLIB) $(RESLIB)
 
 arp:		$(NET_LIB) arp.o
-		$(CC) $(LDFLAGS) -o arp arp.o $(NLIB) $(RESLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ arp.o $(NLIB) $(RESLIB)
 
 rarp:		$(NET_LIB) rarp.o
-		$(CC) $(LDFLAGS) -o rarp rarp.o $(NLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ rarp.o $(NLIB)
 
 slattach:	$(NET_LIB) slattach.o
-		$(CC) $(LDFLAGS) -o slattach slattach.o $(NLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ slattach.o $(NLIB)
 
 plipconfig:	$(NET_LIB) plipconfig.o
-		$(CC) $(LDFLAGS) -o plipconfig plipconfig.o $(NLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ plipconfig.o $(NLIB)
 
 netstat:	$(NET_LIB) netstat.o statistics.o
-		$(CC) $(LDFLAGS) -o netstat netstat.o statistics.o $(NLIB) $(RESLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ netstat.o statistics.o $(NLIB) $(RESLIB) $(SELIB)
 
 iptunnel:	$(NET_LIB) iptunnel.o
-		$(CC) $(LDFLAGS) -o iptunnel iptunnel.o $(NLIB) $(RESLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ iptunnel.o $(NLIB) $(RESLIB)
 
 ipmaddr:	$(NET_LIB) ipmaddr.o
-		$(CC) $(LDFLAGS) -o ipmaddr ipmaddr.o $(NLIB) $(RESLIB)
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ ipmaddr.o $(NLIB) $(RESLIB)
 
-mii-tool:	mii-tool.o
-		$(CC) $(LDFLAGS) -o mii-tool mii-tool.o
+mii-tool:	$(NET_LIB) mii-tool.o
+		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ mii-tool.o $(NLIB) $(RESLIB)
 
 installbin:
-	install -m 0755 -d ${BASEDIR}/sbin
-	install -m 0755 -d ${BASEDIR}/bin
-	install -m 0755 arp        ${BASEDIR}/sbin
-	install -m 0755 hostname   ${BASEDIR}/bin
-	install -m 0755 ifconfig   ${BASEDIR}/sbin
-	install -m 0755 nameif     ${BASEDIR}/sbin
-	install -m 0755 netstat    ${BASEDIR}/bin
-	install -m 0755 plipconfig $(BASEDIR)/sbin
-	install -m 0755 rarp       ${BASEDIR}/sbin
-	install -m 0755 route      ${BASEDIR}/sbin
-	install -m 0755 slattach   $(BASEDIR)/sbin
+	@echo
+	@echo "######################################################"
+	@echo "Notice: ifconfig and route are now installed into /bin"
+	@echo "######################################################"
+	@echo
+	install -m 0755 -d ${BASEDIR}${SBINDIR}
+	install -m 0755 -d ${BASEDIR}${BINDIR}
+	install -m 0755 arp        ${BASEDIR}${SBINDIR}
+	install -m 0755 hostname   ${BASEDIR}${BINDIR}
+	install -m 0755 ifconfig   ${BASEDIR}${BINDIR}
+	install -m 0755 nameif     ${BASEDIR}${SBINDIR}
+	install -m 0755 netstat    ${BASEDIR}${BINDIR}
+	install -m 0755 plipconfig $(BASEDIR)${SBINDIR}
+	install -m 0755 rarp       ${BASEDIR}${SBINDIR}
+	install -m 0755 route      ${BASEDIR}${BINDIR}
+	install -m 0755 slattach   $(BASEDIR)${SBINDIR}
 ifeq ($(HAVE_IP_TOOLS),1)
-	install -m 0755 ipmaddr    $(BASEDIR)/sbin
-	install -m 0755 iptunnel   $(BASEDIR)/sbin
+	install -m 0755 ipmaddr    $(BASEDIR)${SBINDIR}
+	install -m 0755 iptunnel   $(BASEDIR)${SBINDIR}
 endif
 ifeq ($(HAVE_MII),1)
-	install -m 0755 mii-tool   $(BASEDIR)/sbin
+	install -m 0755 mii-tool   $(BASEDIR)${SBINDIR}
 endif
-	ln -fs hostname $(BASEDIR)/bin/dnsdomainname
-	ln -fs hostname $(BASEDIR)/bin/ypdomainname
-	ln -fs hostname $(BASEDIR)/bin/nisdomainname
-	ln -fs hostname $(BASEDIR)/bin/domainname
+	ln -fs hostname $(BASEDIR)${BINDIR}/dnsdomainname
+	ln -fs hostname $(BASEDIR)${BINDIR}/ypdomainname
+	ln -fs hostname $(BASEDIR)${BINDIR}/nisdomainname
+	ln -fs hostname $(BASEDIR)${BINDIR}/domainname
 ifeq ($(HAVE_AFDECnet),1)
-	ln -fs hostname $(BASEDIR)/bin/nodename
+	ln -fs hostname $(BASEDIR)${BINDIR}/nodename
 endif
 
 savebin:
-	@for i in ${BASEDIR}/sbin/arp ${BASEDIR}/sbin/ifconfig \
-                 ${BASEDIR}/bin/netstat \
-		 ${BASEDIR}/sbin/rarp ${BASEDIR}/sbin/route \
-		 ${BASEDIR}/bin/hostname ${BASEDIR}/bin/ypdomainname \
-                 ${BASEDIR}/bin/dnsdomainname ${BASEDIR}/bin/nisdomainname \
-		 ${BASEDIR}/bin/domainname ; do \
+	@for i in ${BASEDIR}${SBINDIR}/arp ${BASEDIR}${SBINDIR}/ifconfig \
+                 ${BASEDIR}${BINDIR}/netstat \
+		 ${BASEDIR}${SBINDIR}/rarp ${BASEDIR}${SBINDIR}/route \
+		 ${BASEDIR}${BINDIR}/hostname ${BASEDIR}${BINDIR}/ypdomainname \
+                 ${BASEDIR}${BINDIR}/dnsdomainname ${BASEDIR}${BINDIR}/nisdomainname \
+		 ${BASEDIR}${BINDIR}/domainname ; do \
 		 [ -f $$i ] && cp -f $$i $$i.old ; done ; echo Saved.
 
 installdata:
diff --git a/README b/README
index 4e35868..aa6cc9a 100644
--- a/README
+++ b/README
@@ -10,29 +10,35 @@ This package includes the important tools for controlling the network
 subsystem of the Linux kernel.  This includes arp, hostname, ifconfig,
 netstat, rarp and route.  Additionally, this package contains
 utilities relating to particular network hardware types (plipconfig,
-slattach) and advanced aspects of IP configuration (iptunnel,
+slattach, mii-tool) and advanced aspects of IP configuration (iptunnel,
 ipmaddr).
 
 Please include the output of "program --version" when reporting bugs.
 
 
 Contents:
-  
+
    README		This file.
 
    README.ipv6		Notes for people hacking IPv6.
 
    INSTALLING		Installation instructions.
 
-   COPYING		Your free copy of the GNU Public License.
+   COPYING		Your free copy of the GNU General Public License.
 
    TODO			Some things that need to be done.
 
+The  Homepage (including Git repository, release downloads, bug tracker and
+mailing list) is hosted by SourceForge.net. Please consider to
+join the project if you want to contribute:
+
+           https://sourceforge.net/projects/net-tools/
+
 
                           Notes
                           -----
 
-This is net-tools 1.60.
+This is net-tools 1.6x.
 
 You need kernel 2.0 or later to use these programs.  These programs
 should compile cleanly with both glibc (version 2.0 or 2.1) and libc5,
@@ -59,6 +65,8 @@ all common environments but some of the more esoteric hardware and
 protocol families may be more touchy.  Feel free to send patches if
 you have problems.
 
+For this release, the localized man pages are installed with UTF-8 encoding.
+
 Phil Blundell
 philb@gnu.org
 
diff --git a/RPM/net-tools.spec b/RPM/net-tools.spec
index 86b45db..b12f785 100644
--- a/RPM/net-tools.spec
+++ b/RPM/net-tools.spec
@@ -34,7 +34,7 @@ make BASEDIR=$RPM_BUILD_ROOT install
   strip arp ifconfig rarp route slattach plipconfig ipmaddr iptunnel
   cd ../bin
   strip hostname netstat
-) 
+)
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -92,7 +92,7 @@ rm -rf $RPM_BUILD_ROOT
 * Fri Feb 27 1998 Jason Spangler <jasons@usemail.com>
 - changed to net-tools 1.432
 - removed old glibc 2.1 patch
- 
+
 * Wed Oct 22 1997 Erik Troan <ewt@redhat.com>
 - added extra patches for glibc 2.1
 
diff --git a/TODO b/TODO
index ec6aae8..c8a10dc 100644
--- a/TODO
+++ b/TODO
@@ -23,7 +23,7 @@ TODO for net-tools
 [ ] supply some informations about new features to HOWTOs
 [ ] Config file only works with bash not ash.
 [ ] Token ring is almost totally untested.
-[ ] additional tools for IPX, AX.25 etc be bundled [ipxripd004, ipx_* tools 
+[ ] additional tools for IPX, AX.25 etc be bundled [ipxripd004, ipx_* tools
 	from caldera, axattach] into existing bins
 [ ] "SIOCAX25OPTRT" [Joerg (DL1BKE)]. 1.3.75
 [ ] dummy NOARP?! (2. default route for preveting hostunreachables on linedrop)
diff --git a/arp.c b/arp.c
index 509a804..5db71a7 100644
--- a/arp.c
+++ b/arp.c
@@ -8,7 +8,7 @@
  *              NET-3 Networking Distribution for the LINUX operating
  *              system.
  *
- * Version:     $Id: arp.c,v 1.20 2001/04/08 17:05:05 pb Exp $
+ * Version:     $Id: arp.c,v 1.27 2009/09/06 22:50:11 vapier Exp $
  *
  * Maintainer:  Bernd 'eckes' Eckenfels, <net-tools@lina.inka.de>
  *
@@ -20,14 +20,14 @@
  *              Andrew Tridgell :       proxy arp netmasks
  *              Bernd Eckenfels :       -n option
  *              Bernd Eckenfels :       Use only /proc for display
- *       {1.60} Bernd Eckenfels :       new arpcode (-i) for 1.3.42 but works 
+ *       {1.60} Bernd Eckenfels :       new arpcode (-i) for 1.3.42 but works
  *                                      with 1.2.x, too
  *       {1.61} Bernd Eckenfels :       more verbose messages
  *       {1.62} Bernd Eckenfels :       check -t for hw adresses and try to
  *                                      explain EINVAL (jeff)
  *970125 {1.63} Bernd Eckenfels :       -a print hardwarename instead of tiltle
  *970201 {1.64} Bernd Eckenfels :       net-features.h support
- *970203 {1.65} Bernd Eckenfels :       "#define" in "#if", 
+ *970203 {1.65} Bernd Eckenfels :       "#define" in "#if",
  *                                      -H|-A additional to -t|-p
  *970214 {1.66} Bernd Eckenfels :       Fix optarg required for -H and -A
  *970412 {1.67} Bernd Eckenfels :       device=""; is default
@@ -35,7 +35,7 @@
  *970517 {1.69} Bernd Eckenfels :       usage() fixed
  *970622 {1.70} Bernd Eckenfels :       arp -d priv
  *970106 {1.80} Bernd Eckenfels :       new syntax without -D and with "dev <If>",
- *                                      ATF_MAGIC, ATF_DONTPUB support. 
+ *                                      ATF_MAGIC, ATF_DONTPUB support.
  *                                      Typo fix (Debian Bug#5728 Giuliano Procida)
  *970803 {1.81} Bernd Eckenfels :       removed junk comment line 1
  *970925 {1.82} Bernd Eckenfels :       include fix for libc6
@@ -80,7 +80,7 @@
 #define FEATURE_ARP
 #include "lib/net-features.h"
 
-char *Release = RELEASE, *Version = "arp 1.88 (2001-04-04)";
+static char *Release = RELEASE;
 
 int opt_n = 0;			/* do not resolve addresses     */
 int opt_N = 0;			/* use symbolic names           */
@@ -100,9 +100,10 @@ static int arp_del(char **args)
 {
     char host[128];
     struct arpreq req;
-    struct sockaddr sa;
+    struct sockaddr_storage ss;
+    struct sockaddr *sa;
     int flags = 0;
-    int err;
+    int deleted = 0;
 
     memset((char *) &req, 0, sizeof(req));
 
@@ -112,12 +113,13 @@ static int arp_del(char **args)
 	return (-1);
     }
     safe_strncpy(host, *args, (sizeof host));
-    if (ap->input(0, host, &sa) < 0) {
+    sa = (struct sockaddr *)&ss;
+    if (ap->input(0, host, sa) < 0) {
 	ap->herror(host);
 	return (-1);
     }
     /* If a host has more than one address, use the correct one! */
-    memcpy((char *) &req.arp_pa, (char *) &sa, sizeof(struct sockaddr));
+    memcpy((char *) &req.arp_pa, (char *) sa, sizeof(struct sockaddr));
 
     if (hw_set)
 	req.arp_ha.sa_family = hw->type;
@@ -148,7 +150,7 @@ static int arp_del(char **args)
 	    continue;
 	}
 	if (!strcmp(*args, "dontpub")) {
-#ifdef HAVE_ATF_DONTPUB
+#ifdef ATF_DONTPUB
 	    req.arp_flags |= ATF_DONTPUB;
 #else
 	    ENOSUPP("arp", "ATF_DONTPUB");
@@ -157,7 +159,7 @@ static int arp_del(char **args)
 	    continue;
 	}
 	if (!strcmp(*args, "auto")) {
-#ifdef HAVE_ATF_MAGIC
+#ifdef ATF_MAGIC
 	    req.arp_flags |= ATF_MAGIC;
 #else
 	    ENOSUPP("arp", "ATF_MAGIC");
@@ -176,12 +178,12 @@ static int arp_del(char **args)
 	    if (*++args == NULL)
 		usage();
 	    if (strcmp(*args, "255.255.255.255") != 0) {
-		strcpy(host, *args);
-		if (ap->input(0, host, &sa) < 0) {
+		safe_strncpy(host, *args, (sizeof host));
+		if (ap->input(0, host, sa) < 0) {
 		    ap->herror(host);
 		    return (-1);
 		}
-		memcpy((char *) &req.arp_netmask, (char *) &sa,
+		memcpy((char *) &req.arp_netmask, (char *) sa,
 		       sizeof(struct sockaddr));
 		req.arp_flags |= ATF_NETMASK;
 	    }
@@ -190,35 +192,41 @@ static int arp_del(char **args)
 	}
 	usage();
     }
+
+    // if neighter priv nor pub is given, work on both
     if (flags == 0)
 	flags = 3;
 
-    strcpy(req.arp_dev, device);
+    safe_strncpy(req.arp_dev, device, sizeof(req.arp_dev));
 
-    err = -1;
+    /* unfortuatelly the kernel interface does not allow us to
+       delete private entries anlone, so we need this hack
+       to avoid "not found" errors if we try both. */
+    deleted = 0;
 
     /* Call the kernel. */
     if (flags & 2) {
 	if (opt_v)
-	    fprintf(stderr, "arp: SIOCDARP(nopub)\n");
-	if ((err = ioctl(sockfd, SIOCDARP, &req) < 0)) {
-	    if (errno == ENXIO) {
+	    fprintf(stderr, "arp: SIOCDARP(dontpub)\n");
+	if (ioctl(sockfd, SIOCDARP, &req) < 0) {
+	    if ((errno == ENXIO) || (errno == ENOENT)) {
 		if (flags & 1)
-		    goto nopub;
+		    goto dontpub;
 		printf(_("No ARP entry for %s\n"), host);
 		return (-1);
 	    }
-	    perror("SIOCDARP(priv)");
+	    perror("SIOCDARP(dontpub)");
 	    return (-1);
-	}
+	} else
+	  deleted = 1;
     }
-    if ((flags & 1) && (err)) {
-      nopub:
+    if (!deleted && (flags & 1)) {
+      dontpub:
 	req.arp_flags |= ATF_PUBL;
 	if (opt_v)
 	    fprintf(stderr, "arp: SIOCDARP(pub)\n");
 	if (ioctl(sockfd, SIOCDARP, &req) < 0) {
-	    if (errno == ENXIO) {
+	    if ((errno == ENXIO) || (errno == ENOENT)) {
 		printf(_("No ARP entry for %s\n"), host);
 		return (-1);
 	    }
@@ -235,7 +243,7 @@ static int arp_getdevhw(char *ifname, struct sockaddr *sa, struct hwtype *hw)
     struct ifreq ifr;
     struct hwtype *xhw;
 
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
     if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) < 0) {
 	fprintf(stderr, _("arp: cant get HW-Address for `%s': %s.\n"), ifname, strerror(errno));
 	return (-1);
@@ -260,7 +268,8 @@ static int arp_set(char **args)
 {
     char host[128];
     struct arpreq req;
-    struct sockaddr sa;
+    struct sockaddr_storage ss;
+    struct sockaddr *sa;
     int flags;
 
     memset((char *) &req, 0, sizeof(req));
@@ -271,12 +280,13 @@ static int arp_set(char **args)
 	return (-1);
     }
     safe_strncpy(host, *args++, (sizeof host));
-    if (ap->input(0, host, &sa) < 0) {
+    sa = (struct sockaddr *)&ss;
+    if (ap->input(0, host, sa) < 0) {
 	ap->herror(host);
 	return (-1);
     }
     /* If a host has more than one address, use the correct one! */
-    memcpy((char *) &req.arp_pa, (char *) &sa, sizeof(struct sockaddr));
+    memcpy((char *) &req.arp_pa, (char *) sa, sizeof(struct sockaddr));
 
     /* Fetch the hardware address. */
     if (*args == NULL) {
@@ -317,7 +327,7 @@ static int arp_set(char **args)
 	    continue;
 	}
 	if (!strcmp(*args, "dontpub")) {
-#ifdef HAVE_ATF_DONTPUB
+#ifdef ATF_DONTPUB
 	    flags |= ATF_DONTPUB;
 #else
 	    ENOSUPP("arp", "ATF_DONTPUB");
@@ -326,7 +336,7 @@ static int arp_set(char **args)
 	    continue;
 	}
 	if (!strcmp(*args, "auto")) {
-#ifdef HAVE_ATF_MAGIC
+#ifdef ATF_MAGIC
 	    flags |= ATF_MAGIC;
 #else
 	    ENOSUPP("arp", "ATF_MAGIC");
@@ -345,12 +355,12 @@ static int arp_set(char **args)
 	    if (*++args == NULL)
 		usage();
 	    if (strcmp(*args, "255.255.255.255") != 0) {
-		strcpy(host, *args);
-		if (ap->input(0, host, &sa) < 0) {
+		safe_strncpy(host, *args, (sizeof host));
+		if (ap->input(0, host, sa) < 0) {
 		    ap->herror(host);
 		    return (-1);
 		}
-		memcpy((char *) &req.arp_netmask, (char *) &sa,
+		memcpy((char *) &req.arp_netmask, (char *) sa,
 		       sizeof(struct sockaddr));
 		flags |= ATF_NETMASK;
 	    }
@@ -363,7 +373,7 @@ static int arp_set(char **args)
     /* Fill in the remainder of the request. */
     req.arp_flags = flags;
 
-    strcpy(req.arp_dev, device);
+    safe_strncpy(req.arp_dev, device, sizeof(req.arp_dev));
 
     /* Call the kernel. */
     if (opt_v)
@@ -424,7 +434,7 @@ static int arp_file(char *name)
 
 
 /* Print the contents of an ARP request block. */
-static void arp_disp_2(char *name, int type, int arp_flags, char *hwa, char *mask, char *dev)
+static void arp_disp_2(const char *name, int type, int arp_flags, const char *hwa, const char *mask, const char *dev)
 {
     static int title = 0;
     struct hwtype *xhw;
@@ -445,11 +455,11 @@ static void arp_disp_2(char *name, int type, int arp_flags, char *hwa, char *mas
 	strcat(flags, "M");
     if (arp_flags & ATF_PUBL)
 	strcat(flags, "P");
-#ifdef HAVE_ATF_MAGIC
+#ifdef ATF_MAGIC
     if (arp_flags & ATF_MAGIC)
 	strcat(flags, "A");
 #endif
-#ifdef HAVE_ATF_DONTPUB
+#ifdef ATF_DONTPUB
     if (arp_flags & ATF_DONTPUB)
 	strcat(flags, "!");
 #endif
@@ -463,7 +473,7 @@ static void arp_disp_2(char *name, int type, int arp_flags, char *hwa, char *mas
 
     if (!(arp_flags & ATF_COM)) {
 	if (arp_flags & ATF_PUBL)
-	    printf("%-8.8s%-20.20s", "*", "*");
+	    printf("%-8.8s%-20.20s", "*", _("<from_interface>"));
 	else
 	    printf("%-8.8s%-20.20s", "", _("(incomplete)"));
     } else {
@@ -474,7 +484,7 @@ static void arp_disp_2(char *name, int type, int arp_flags, char *hwa, char *mas
 }
 
 /* Print the contents of an ARP request block. */
-static void arp_disp(char *name, char *ip, int type, int arp_flags, char *hwa, char *mask, char *dev)
+static void arp_disp(const char *name, const char *ip, int type, int arp_flags, const char *hwa, const char *mask, const char *dev)
 {
     struct hwtype *xhw;
 
@@ -486,7 +496,7 @@ static void arp_disp(char *name, char *ip, int type, int arp_flags, char *hwa, c
 
     if (!(arp_flags & ATF_COM)) {
 	if (arp_flags & ATF_PUBL)
-	    printf("* ");
+	    printf("<from_interface> ");
 	else
 	    printf(_("<incomplete> "));
     } else {
@@ -499,12 +509,12 @@ static void arp_disp(char *name, char *ip, int type, int arp_flags, char *hwa, c
     if (arp_flags & ATF_PERM)
 	printf("PERM ");
     if (arp_flags & ATF_PUBL)
-	printf("PUP ");
-#ifdef HAVE_ATF_MAGIC
+	printf("PUB ");
+#ifdef ATF_MAGIC
     if (arp_flags & ATF_MAGIC)
 	printf("AUTO ");
 #endif
-#ifdef HAVE_ATF_DONTPUB
+#ifdef ATF_DONTPUB
     if (arp_flags & ATF_DONTPUB)
 	printf("DONTPUB ");
 #endif
@@ -519,7 +529,8 @@ static void arp_disp(char *name, char *ip, int type, int arp_flags, char *hwa, c
 static int arp_show(char *name)
 {
     char host[100];
-    struct sockaddr sa;
+    struct sockaddr_storage ss;
+    struct sockaddr *sa;
     char ip[100];
     char hwa[100];
     char mask[100];
@@ -527,19 +538,20 @@ static int arp_show(char *name)
     char dev[100];
     int type, flags;
     FILE *fp;
-    char *hostname;
+    const char *hostname;
     int num, entries = 0, showed = 0;
 
     host[0] = '\0';
 
+    sa = (struct sockaddr *)&ss;
     if (name != NULL) {
 	/* Resolve the host name. */
 	safe_strncpy(host, name, (sizeof host));
-	if (ap->input(0, host, &sa) < 0) {
+	if (ap->input(0, host, sa) < 0) {
 	    ap->herror(host);
 	    return (-1);
 	}
-	safe_strncpy(host, ap->sprint(&sa, 1), sizeof(host));
+	safe_strncpy(host, ap->sprint(sa, 1), sizeof(host));
     }
     /* Open the PROCps kernel table. */
     if ((fp = fopen(_PATH_PROCNET_ARP, "r")) == NULL) {
@@ -548,11 +560,11 @@ static int arp_show(char *name)
     }
     /* Bypass header -- read until newline */
     if (fgets(line, sizeof(line), fp) != (char *) NULL) {
-	strcpy(mask, "-");
-	strcpy(dev, "-");
+	safe_strncpy(mask, "-", sizeof(mask));
+	safe_strncpy(dev, "-", sizeof(dev));
 	/* Read the ARP cache entries. */
 	for (; fgets(line, sizeof(line), fp);) {
-	    num = sscanf(line, "%s 0x%x 0x%x %100s %100s %100s\n",
+	    num = sscanf(line, "%s 0x%x 0x%x %99s %99s %99s\n",
 			 ip, &type, &flags, hwa, mask, dev);
 	    if (num < 4)
 		break;
@@ -575,10 +587,10 @@ static int arp_show(char *name)
 	    if (opt_n)
 		hostname = "?";
 	    else {
-		if (ap->input(0, ip, &sa) < 0)
+		if (ap->input(0, ip, sa) < 0)
 		    hostname = ip;
 		else
-		    hostname = ap->sprint(&sa, opt_n | 0x8000);
+		    hostname = ap->sprint(sa, opt_n | 0x8000);
 		if (strcmp(hostname, ip) == 0)
 		    hostname = "?";
 	    }
@@ -605,20 +617,20 @@ static int arp_show(char *name)
 
 static void version(void)
 {
-    fprintf(stderr, "%s\n%s\n%s\n", Release, Version, Features);
+    fprintf(stderr, "%s\n%s\n", Release, Features);
     exit(E_VERSION);
 }
 
 static void usage(void)
 {
     fprintf(stderr, _("Usage:\n  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>]             <-Display ARP cache\n"));
-    fprintf(stderr, _("  arp [-v]          [-i <if>] -d  <hostname> [pub][nopub]    <-Delete ARP entry\n"));
-    fprintf(stderr, _("  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]              <-Add entry from file\n"));
-    fprintf(stderr, _("  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [temp][nopub] <-Add entry\n"));
-    fprintf(stderr, _("  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [netmask <nm>] pub  <-''-\n"));
-    fprintf(stderr, _("  arp [-v]   [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub      <-''-\n\n"));
-    
+    fprintf(stderr, _("  arp [-v]          [-i <if>] -d  <host> [pub]               <-Delete ARP entry\n"));
+    fprintf(stderr, _("  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]            <-Add entry from file\n"));
+    fprintf(stderr, _("  arp [-v]   [<HW>] [-i <if>] -s  <host> <hwaddr> [temp]            <-Add entry\n"));
+    fprintf(stderr, _("  arp [-v]   [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub          <-''-\n\n"));
+
     fprintf(stderr, _("        -a                       display (all) hosts in alternative (BSD) style\n"));
+    fprintf(stderr, _("        -e                       display (all) hosts in default (Linux) style\n"));
     fprintf(stderr, _("        -s, --set                set a new ARP entry\n"));
     fprintf(stderr, _("        -d, --delete             delete a specified entry\n"));
     fprintf(stderr, _("        -v, --verbose            be verbose\n"));
diff --git a/config.in b/config.in
index f3310d6..e080937 100644
--- a/config.in
+++ b/config.in
@@ -1,5 +1,5 @@
 #
-# config.in	Configure.sh source for the net-tools.
+# config.in	configure.sh source for the net-tools.
 #		This file contains the definition of what the support
 #		library contains.  Most of all, it defines which types
 #		of address families and hardware we know of.
@@ -46,19 +46,20 @@ bool 'Does your system support GNU gettext?' I18N n
 *
 *
 *             Protocol Families.
-* 
+*
 bool 'UNIX protocol family' HAVE_AFUNIX y
 bool 'INET (TCP/IP) protocol family' HAVE_AFINET y
-bool 'INET6 (IPv6) protocol family' HAVE_AFINET6 n
+bool 'INET6 (IPv6) protocol family' HAVE_AFINET6 y
 bool 'Novell IPX/SPX protocol family' HAVE_AFIPX y
 bool 'Appletalk DDP protocol family' HAVE_AFATALK y
 bool 'AX25 (packet radio) protocol family' HAVE_AFAX25 y
 bool 'NET/ROM (packet radio) protocol family' HAVE_AFNETROM y
-bool 'Rose (packet radio) protocol family' HAVE_AFROSE n
+bool 'Rose (packet radio) protocol family' HAVE_AFROSE y
 bool 'X.25 (CCITT) protocol family' HAVE_AFX25 y
-bool 'Econet protocol family' HAVE_AFECONET n
+bool 'Econet protocol family' HAVE_AFECONET y
 bool 'DECnet protocol family' HAVE_AFDECnet n
-bool 'Ash protocol family' HAVE_AFASH n
+bool 'Ash protocol family' HAVE_AFASH y
+bool 'Bluetooth protocol family' HAVE_AFBLUETOOTH n
 *
 *
 *            Device Hardware types.
@@ -68,24 +69,27 @@ bool 'ARCnet support' HAVE_HWARC y
 bool 'SLIP (serial line) support' HAVE_HWSLIP y
 bool 'PPP (serial line) support' HAVE_HWPPP y
 bool 'IPIP Tunnel support' HAVE_HWTUNNEL y
-bool 'STRIP (Metricom radio) support' HAVE_HWSTRIP y
-bool 'Token ring (generic) support' HAVE_HWTR y
+bool 'STRIP (Metricom radio) support' HAVE_HWSTRIP n
+bool 'Token ring (generic) support' HAVE_HWTR n
 bool 'AX25 (packet radio) support' HAVE_HWAX25 y
-bool 'Rose (packet radio) support' HAVE_HWROSE n
+bool 'Rose (packet radio) support' HAVE_HWROSE y
 bool 'NET/ROM (packet radio) support' HAVE_HWNETROM y
 bool 'X.25 (generic) support' HAVE_HWX25 y
 bool 'DLCI/FRAD (frame relay) support' HAVE_HWFR y
-bool 'SIT (IPv6-in-IPv4) support' HAVE_HWSIT n
-bool 'FDDI (generic) support' HAVE_HWFDDI n
-bool 'HIPPI (generic) support' HAVE_HWHIPPI n
-bool 'Ash hardware support' HAVE_HWASH n
-bool '(Cisco)-HDLC/LAPB support' HAVE_HWHDLCLAPB n
+bool 'SIT (IPv6-in-IPv4) support' HAVE_HWSIT y
+bool 'FDDI (generic) support' HAVE_HWFDDI y
+bool 'HIPPI (generic) support' HAVE_HWHIPPI y
+bool 'Ash hardware support' HAVE_HWASH y
+bool '(Cisco)-HDLC/LAPB support' HAVE_HWHDLCLAPB y
 bool 'IrDA support' HAVE_HWIRDA y
-bool 'Econet hardware support' HAVE_HWEC n
+bool 'Econet hardware support' HAVE_HWEC y
+bool 'Generic EUI-64 hardware support' HAVE_HWEUI64 y
+bool 'InfiniBand hardware support' HAVE_HWIB y
 *
 *
 *           Other Features.
 *
-bool 'IP Masquerading support' HAVE_FW_MASQUERADE n
-bool 'Build iptunnel and ipmaddr' HAVE_IP_TOOLS n
-bool 'Build mii-tool' HAVE_MII n
+bool 'IP Masquerading support' HAVE_FW_MASQUERADE y
+bool 'Build iptunnel and ipmaddr' HAVE_IP_TOOLS y
+bool 'Build mii-tool' HAVE_MII y
+bool 'SELinux support' HAVE_SELINUX n
diff --git a/configure.sh b/configure.sh
index 9859b59..64b594f 100755
--- a/configure.sh
+++ b/configure.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 #
-# Configure.sh	Generates interactively a config.h from config.in
+# configure.sh	Generates interactively a config.h from config.in
 #
 # net-tools	A collection of programs that form the base set of the
 #		NET-3 Networking Distribution for the LINUX operating
@@ -37,7 +37,15 @@ CONFIG=config.h
 MAKECONFIG=config.make
 
 
-[ -z "$BASH" ] && { echo "Configure requires bash" 1>&2; exit 1; }
+[ -z "$BASH" ] && { echo "configure.sh requires bash" 1>&2; exit 1; }
+
+cat <<EOF
+
+######################################################
+Notice: ifconfig and route are now installed into /bin
+######################################################
+
+EOF
 
 # Disable filename globbing once and for all.
 # Enable function cacheing.
@@ -106,7 +114,7 @@ function int()
 }
 
   #
-  # Make sure we start out with a clean slate.
+  # Make sure we start out with a clean state.
   #
   > config.new
   > ${CONFIG}
diff --git a/hostname.c b/hostname.c
index 8793fb9..ae98ca6 100644
--- a/hostname.c
+++ b/hostname.c
@@ -6,23 +6,22 @@
  * Usage:       hostname [-d|-f|-s|-a|-i|-y|-n]
  *              hostname [-h|-V]
  *              hostname {name|-F file}
- *              dnsdmoainname   
+ *              dnsdmoainname
  *              nisdomainname {name|-F file}
  *
- * Version:     hostname 1.96 (1996-02-18)
+ * Version:     hostname 1.101 (2003-10-11)
  *
  * Author:      Peter Tobias <tobias@et-inf.fho-emden.de>
  *
  * Changes:
- *      {1.90}  Peter Tobias :          Added -a and -i options.
- *      {1.91}  Bernd Eckenfels :       -v,-V rewritten, long_opts 
- *                                      (major rewrite), usage.
- *960120 {1.95} Bernd Eckenfels :       -y/nisdomainname - support for get/
- *                                      setdomainname added 
- *960218 {1.96} Bernd Eckenfels :       netinet/in.h added
- *980629 {1.97} Arnaldo Carvalho de Melo : gettext instead of catgets for i18n
- *20000213 {1.99} Arnaldo Carvalho de Melo : fixed some i18n strings
+ *         {1.90}  Peter Tobias : Added -a and -i options.
+ *         {1.91}  Bernd Eckenfels : -v,-V rewritten, long_opts (major rewrite), usage.
+ *19960120 {1.95}  Bernd Eckenfels : -y/nisdomainname - support for get/setdomainname added
+ *19960218 {1.96}  Bernd Eckenfels : netinet/in.h added
+ *19980629 {1.97}  Arnaldo Carvalho de Melo : gettext instead of catgets for i18n
+ *20000213 {1.99}  Arnaldo Carvalho de Melo : fixed some i18n strings
  *20010404 {1.100} Arnaldo Carvalho de Melo: use setlocale
+ *20031011 {1.101} Maik Broemme: gcc 3.x fixes (default: break)
  *
  *              This program is free software; you can redistribute it
  *              and/or  modify it under  the terms of  the GNU General
@@ -31,7 +30,9 @@
  *              your option) any later version.
  */
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
+#include <stdlib.h>
 #include <getopt.h>
 #include <string.h>
 #include <netdb.h>
@@ -41,13 +42,19 @@
 #include <arpa/inet.h>
 #include "config.h"
 #include "version.h"
+#include "net-support.h"
 #include "../intl.h"
 
+#if HAVE_AFINET6
+#include <sys/socket.h> /* for PF_INET6 */
+#include <sys/types.h>  /* for inet_ntop */
+#endif
+
 #if HAVE_AFDECnet
 #include <netdnet/dn.h>
 #endif
 
-char *Release = RELEASE, *Version = "hostname 1.100 (2001-04-14)";
+static char *Release = RELEASE;
 
 static char *program_name;
 static int opt_v;
@@ -72,12 +79,13 @@ static void setnname(char *nname)
     if (setnodename(nname, strlen(nname))) {
         switch(errno) {
         case EPERM:
-            fprintf(stderr, _("%s: you must be root to change the node name\n"), program_name);
+            fprintf(stderr, _("%s: you don't have permission to set the node name\n"), program_name);
             break;
         case EINVAL:
             fprintf(stderr, _("%s: name too long\n"), program_name);
             break;
         default:
+	    break;
         }
 	exit(1);
     }
@@ -92,12 +100,11 @@ static void sethname(char *hname)
     if (sethostname(hname, strlen(hname))) {
 	switch (errno) {
 	case EPERM:
-	    fprintf(stderr, _("%s: you must be root to change the host name\n"), program_name);
+	    fprintf(stderr, _("%s: you don't have permission to set the host name\n"), program_name);
 	    break;
 	case EINVAL:
 	    fprintf(stderr, _("%s: name too long\n"), program_name);
 	    break;
-	default:
 	}
 	exit(1);
     };
@@ -111,12 +118,11 @@ static void setdname(char *dname)
     if (setdomainname(dname, strlen(dname))) {
 	switch (errno) {
 	case EPERM:
-	    fprintf(stderr, _("%s: you must be root to change the domain name\n"), program_name);
+	    fprintf(stderr, _("%s: you don't have permission to set the domain name\n"), program_name);
 	    break;
 	case EINVAL:
 	    fprintf(stderr, _("%s: name too long\n"), program_name);
 	    break;
-	default:
 	}
 	exit(1);
     };
@@ -125,15 +131,23 @@ static void setdname(char *dname)
 static void showhname(char *hname, int c)
 {
     struct hostent *hp;
+#if HAVE_AFINET6
+    struct in6_addr **ip6;
+#endif
     register char *p, **alias;
     struct in_addr **ip;
 
     if (opt_v)
 	fprintf(stderr, _("Resolving `%s' ...\n"), hname);
-    if (!(hp = gethostbyname(hname))) {
+    if (
+#if HAVE_AFINET6
+        !(hp = gethostbyname2(hname, PF_INET6)) &&
+#endif
+        !(hp = gethostbyname(hname))) {
 	herror(program_name);
 	exit(1);
     }
+
     if (opt_v) {
 	fprintf(stderr, _("Result: h_name=`%s'\n"),
 		hp->h_name);
@@ -142,11 +156,28 @@ static void showhname(char *hname, int c)
 	while (alias[0])
 	    fprintf(stderr, _("Result: h_aliases=`%s'\n"),
 		    *alias++);
-
-	ip = (struct in_addr **) hp->h_addr_list;
-	while (ip[0])
-	    fprintf(stderr, _("Result: h_addr_list=`%s'\n"),
-		    inet_ntoa(**ip++));
+#if HAVE_AFINET6
+	    if (hp->h_addrtype == PF_INET6) {
+		char addr[INET6_ADDRSTRLEN + 1];
+		addr[INET6_ADDRSTRLEN] = '\0';
+		ip6 = (struct in6_addr **) hp->h_addr_list;
+		while (ip6[0]) {
+		    if (inet_ntop(PF_INET6, *ip6++, addr, INET6_ADDRSTRLEN))
+			fprintf(stderr, _("Result: h_addr_list=`%s'\n"), addr);
+		    else if (errno == EAFNOSUPPORT)
+			fprintf(stderr, _("%s: protocol family not supported\n"),
+				program_name);
+		    else if (errno == ENOSPC)
+			fprintf(stderr, _("%s: name too long\n"), program_name);
+	    }
+	} else
+#endif
+	{
+	    ip = (struct in_addr **) hp->h_addr_list;
+	    while (ip[0])
+		fprintf(stderr, _("Result: h_addr_list=`%s'\n"),
+			inet_ntoa(**ip++));
+	}
     }
     if (!(p = strchr(hp->h_name, '.')) && (c == 'd'))
 	return;
@@ -158,8 +189,29 @@ static void showhname(char *hname, int c)
 	printf("\n");
 	break;
     case 'i':
-	while (hp->h_addr_list[0])
-	    printf("%s ", inet_ntoa(*(struct in_addr *) *hp->h_addr_list++));
+#if HAVE_AFINET6
+	if (hp->h_addrtype == PF_INET6) {
+	    char addr[INET6_ADDRSTRLEN + 1];
+	    addr[INET6_ADDRSTRLEN] = '\0';
+	    while (hp->h_addr_list[0]) {
+		if (inet_ntop(PF_INET6, (struct in6_addr *)*hp->h_addr_list++,
+			      addr, INET6_ADDRSTRLEN)) {
+		    printf("%s ", addr);
+		} else if (errno == EAFNOSUPPORT) {
+		    fprintf(stderr, _("\n%s: protocol family not supported\n"),
+			    program_name);
+		    exit(1);
+		} else if (errno == ENOSPC) {
+		    fprintf(stderr, _("\n%s: name too long\n"), program_name);
+		    exit(1);
+		}
+	    }
+	} else
+#endif
+	{
+	    while (hp->h_addr_list[0])
+		printf("%s ", inet_ntoa(*(struct in_addr *)*hp->h_addr_list++));
+	}
 	printf("\n");
 	break;
     case 'd':
@@ -173,7 +225,6 @@ static void showhname(char *hname, int c)
 	    *p = '\0';
 	printf("%s\n", hp->h_name);
 	break;
-    default:
     }
 }
 
@@ -215,8 +266,8 @@ static void setfilename(char *name, int what)
 
 static void version(void)
 {
-    fprintf(stderr, "%s\n%s\n", Release, Version);
-    exit(5); /* E_VERSION */
+    fprintf(stderr, "%s\n", Release);
+    exit(E_VERSION);
 }
 
 static void usage(void)
@@ -247,7 +298,7 @@ static void usage(void)
 "   FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
 "   part of the FQDN) in the /etc/hosts file.\n"));
 
-    exit(4); /* E_USAGE */
+    exit(E_USAGE);
 }
 
 
@@ -326,11 +377,12 @@ int main(int argc, char **argv)
 	    break;
 	case 'V':
 	    version();
+	    break; // not reached
 	case '?':
 	case 'h':
 	default:
 	    usage();
-
+	    break; // not reached
 	};
 
 
@@ -371,7 +423,10 @@ int main(int argc, char **argv)
 	    setdname(argv[optind]);
 	    break;
 	}
-	getdomainname(myname, sizeof(myname));
+	if (getdomainname(myname, sizeof(myname)) < 0) {
+	    perror("getdomainname()");
+	    exit(1);
+	}
 	if (opt_v)
 	    fprintf(stderr, _("getdomainname()=`%s'\n"), myname);
 	printf("%s\n", myname);
diff --git a/ifconfig.c b/ifconfig.c
index 73a4e9b..df9793a 100644
--- a/ifconfig.c
+++ b/ifconfig.c
@@ -3,7 +3,7 @@
  *              that either displays or sets the characteristics of
  *              one or more of the system's networking interfaces.
  *
- * Version:     $Id: ifconfig.c,v 1.50 2001/04/13 18:25:18 pb Exp $
+ * Version:     $Id: ifconfig.c,v 1.59 2011-01-01 03:22:31 ecki Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              and others.  Copyright 1993 MicroWalt Corporation
@@ -19,8 +19,8 @@
  *
  * {1.34} - 19980630 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
  *                     - gettext instead of catgets for i18n
- *          10/1998  - Andi Kleen. Use interface list primitives.       
- *	    20001008 - Bernd Eckenfels, Patch from RH for setting mtu 
+ *          10/1998  - Andi Kleen. Use interface list primitives.
+ *	    20001008 - Bernd Eckenfels, Patch from RH for setting mtu
  *			(default AF was wrong)
  *          20010404 - Arnaldo Carvalho de Melo, use setlocale
  */
@@ -49,7 +49,7 @@
 #include <asm/types.h>
 
 
-#ifdef HAVE_HWSLIP
+#if HAVE_HWSLIP
 #include <linux/if_slip.h>
 #endif
 
@@ -85,19 +85,16 @@ struct in6_ifreq {
 #include "sockets.h"
 #include "util.h"
 
-char *Release = RELEASE, *Version = "ifconfig 1.42 (2001-04-13)";
+static char *Release = RELEASE;
 
 int opt_a = 0;			/* show all interfaces          */
-int opt_i = 0;			/* show the statistics          */
 int opt_v = 0;			/* debugging output flag        */
 
 int addr_family = 0;		/* currently selected AF        */
 
 /* for ipv4 add/del modes */
-static int get_nmbc_parent(char *parent, unsigned long *nm, 
-			   unsigned long *bc);
-static int set_ifstate(char *parent, unsigned long ip,
-		       unsigned long nm, unsigned long bc,
+static int get_nmbc_parent(char *parent, in_addr_t *nm, in_addr_t *bc);
+static int set_ifstate(char *parent, in_addr_t ip, in_addr_t nm, in_addr_t bc,
 		       int flag);
 
 static int if_print(char *ifname)
@@ -105,7 +102,7 @@ static int if_print(char *ifname)
     int res;
 
     if (ife_short)
-	printf(_("Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
+	printf(_("Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
 
     if (!ifname) {
 	res = for_all_interfaces(do_if_print, &opt_a);
@@ -113,11 +110,14 @@ static int if_print(char *ifname)
 	struct interface *ife;
 
 	ife = lookup_interface(ifname);
-	res = do_if_fetch(ife); 
-	if (res >= 0) 
+	if (!ife) {
+		return -1;
+	}
+	res = do_if_fetch(ife);
+	if (res >= 0)
 	    ife_print(ife);
     }
-    return res; 
+    return res;
 }
 
 /* Set a certain interface flag. */
@@ -127,7 +127,7 @@ static int set_flag(char *ifname, short flag)
 
     safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
     if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) {
-	fprintf(stderr, _("%s: unknown interface: %s\n"), 
+	fprintf(stderr, _("%s: ERROR while getting interface flags: %s\n"),
 		ifname,	strerror(errno));
 	return (-1);
     }
@@ -159,7 +159,7 @@ static int clr_flag(char *ifname, short flag)
 
     safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
     if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
-	fprintf(stderr, _("%s: unknown interface: %s\n"), 
+	fprintf(stderr, _("%s: ERROR while getting interface flags: %s\n"),
 		ifname, strerror(errno));
 	return -1;
     }
@@ -172,9 +172,35 @@ static int clr_flag(char *ifname, short flag)
     return (0);
 }
 
+/** test is a specified flag is set */
+static int test_flag(char *ifname, short flags)
+{
+    struct ifreq ifr;
+    int fd;
+
+    if (strchr(ifname, ':')) {
+        /* This is a v4 alias interface.  Downing it via a socket for
+	   another AF may have bad consequences. */
+        fd = get_socket_for_af(AF_INET);
+	if (fd < 0) {
+	    fprintf(stderr, _("No support for INET on this system.\n"));
+	    return -1;
+	}
+    } else
+        fd = skfd;
+
+    safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+    if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
+	fprintf(stderr, _("%s: ERROR while testing interface flags: %s\n"),
+		ifname, strerror(errno));
+	return -1;
+    }
+    return (ifr.ifr_flags & flags);
+}
+
 static void usage(void)
 {
-    fprintf(stderr, _("Usage:\n  ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"));
+    fprintf(stderr, _("Usage:\n  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"));
 #if HAVE_AFINET
     fprintf(stderr, _("  [add <address>[/<prefixlen>]]\n"));
     fprintf(stderr, _("  [del <address>[/<prefixlen>]]\n"));
@@ -184,7 +210,7 @@ static void usage(void)
 #ifdef SIOCSKEEPALIVE
     fprintf(stderr, _("  [outfill <NN>] [keepalive <NN>]\n"));
 #endif
-    fprintf(stderr, _("  [hw <HW> <address>]  [metric <NN>]  [mtu <NN>]\n"));
+    fprintf(stderr, _("  [hw <HW> <address>]  [mtu <NN>]\n"));
     fprintf(stderr, _("  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"));
     fprintf(stderr, _("  [multicast]  [[-]promisc]\n"));
     fprintf(stderr, _("  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]\n"));
@@ -207,38 +233,39 @@ static void usage(void)
 
 static void version(void)
 {
-    fprintf(stderr, "%s\n%s\n", Release, Version);
-    exit(0);
+    fprintf(stderr, "%s\n", Release);
+    exit(E_VERSION);
 }
 
 static int set_netmask(int skfd, struct ifreq *ifr, struct sockaddr *sa)
 {
     int err = 0;
 
-    memcpy((char *) &ifr->ifr_netmask, (char *) sa,
-	   sizeof(struct sockaddr));
+    memcpy(&ifr->ifr_netmask, sa, sizeof(struct sockaddr));
     if (ioctl(skfd, SIOCSIFNETMASK, ifr) < 0) {
 	fprintf(stderr, "SIOCSIFNETMASK: %s\n",
 		strerror(errno));
 	err = 1;
     }
-    return 0;
+    return err;
 }
 
 int main(int argc, char **argv)
 {
-    struct sockaddr sa;
-    struct sockaddr_in sin;
+    struct sockaddr_storage _sa, _samask;
+    struct sockaddr *sa = (struct sockaddr *)&_sa;
+    struct sockaddr *samask = (struct sockaddr *)&_samask;
+    struct sockaddr_in *sin = (struct sockaddr_in *)sa;
     char host[128];
     struct aftype *ap;
     struct hwtype *hw;
     struct ifreq ifr;
-    int goterr = 0, didnetmask = 0;
+    int goterr = 0, didnetmask = 0, neednetmask=0;
     char **spp;
     int fd;
 #if HAVE_AFINET6
     extern struct aftype inet6_aftype;
-    struct sockaddr_in6 sa6;
+    struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa;
     struct in6_ifreq ifr6;
     unsigned long prefix_len;
     char *cp;
@@ -248,7 +275,7 @@ int main(int argc, char **argv)
 #endif
 
 #if I18N
-    setlocale (LC_ALL, "");
+    setlocale(LC_ALL, "");
     bindtextdomain("net-tools", "/usr/share/locale");
     textdomain("net-tools");
 #endif
@@ -265,7 +292,7 @@ int main(int argc, char **argv)
 
 	else if (!strcmp(*argv, "-v"))
 	    opt_v = 1;
-	
+
 	else if (!strcmp(*argv, "-V") || !strcmp(*argv, "-version") ||
 	    !strcmp(*argv, "--version"))
 	    version();
@@ -275,7 +302,7 @@ int main(int argc, char **argv)
 	    usage();
 
 	else {
-	    fprintf(stderr, _("ifconfig: option `%s' not recognised.\n"), 
+	    fprintf(stderr, _("ifconfig: option `%s' not recognised.\n"),
 		    argv[0]);
 	    fprintf(stderr, _("ifconfig: `--help' gives usage information.\n"));
 	    exit(1);
@@ -309,9 +336,9 @@ int main(int argc, char **argv)
     /* The next argument is either an address family name, or an option. */
     if ((ap = get_aftype(*spp)) != NULL)
 	spp++; /* it was a AF name */
-    else 
+    else
 	ap = get_aftype(DFLT_AF);
-	
+
     if (ap) {
 	addr_family = ap->af;
 	skfd = ap->fd;
@@ -356,7 +383,7 @@ int main(int argc, char **argv)
 		    goterr = 1;
 		} else {
 		    if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0) {
-			perror("port: SIOCGIFMAP"); 
+			perror("port: SIOCGIFMAP");
 			goterr = 1;
 			continue;
 		    }
@@ -388,6 +415,8 @@ int main(int argc, char **argv)
 	}
 	if (!strcmp(*spp, "-promisc")) {
 	    goterr |= clr_flag(ifr.ifr_name, IFF_PROMISC);
+	    if (test_flag(ifr.ifr_name, IFF_PROMISC) > 0)
+	    	fprintf(stderr, _("Warning: Interface %s still in promisc mode... maybe other application is running?\n"), ifr.ifr_name);
 	    spp++;
 	    continue;
 	}
@@ -398,6 +427,8 @@ int main(int argc, char **argv)
 	}
 	if (!strcmp(*spp, "-multicast")) {
 	    goterr |= clr_flag(ifr.ifr_name, IFF_MULTICAST);
+	    if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
+	    	fprintf(stderr, _("Warning: Interface %s still in MULTICAST mode.\n"), ifr.ifr_name);
 	    spp++;
 	    continue;
 	}
@@ -408,6 +439,8 @@ int main(int argc, char **argv)
 	}
 	if (!strcmp(*spp, "-allmulti")) {
 	    goterr |= clr_flag(ifr.ifr_name, IFF_ALLMULTI);
+	    if (test_flag(ifr.ifr_name, IFF_ALLMULTI) > 0)
+	    	fprintf(stderr, _("Warning: Interface %s still in ALLMULTI mode.\n"), ifr.ifr_name);
 	    spp++;
 	    continue;
 	}
@@ -430,21 +463,12 @@ int main(int argc, char **argv)
 	if (!strcmp(*spp, "-dynamic")) {
 	    goterr |= clr_flag(ifr.ifr_name, IFF_DYNAMIC);
 	    spp++;
+	    if (test_flag(ifr.ifr_name, IFF_DYNAMIC) > 0)
+	    	fprintf(stderr, _("Warning: Interface %s still in DYNAMIC mode.\n"), ifr.ifr_name);
 	    continue;
 	}
 #endif
 
-	if (!strcmp(*spp, "metric")) {
-	    if (*++spp == NULL)
-		usage();
-	    ifr.ifr_metric = atoi(*spp);
-	    if (ioctl(skfd, SIOCSIFMETRIC, &ifr) < 0) {
-		fprintf(stderr, "SIOCSIFMETRIC: %s\n", strerror(errno));
-		goterr = 1;
-	    }
-	    spp++;
-	    continue;
-	}
 	if (!strcmp(*spp, "mtu")) {
 	    if (*++spp == NULL)
 		usage();
@@ -460,7 +484,7 @@ int main(int argc, char **argv)
 	if (!strcmp(*spp, "keepalive")) {
 	    if (*++spp == NULL)
 		usage();
-	    ifr.ifr_data = (caddr_t) atoi(*spp);
+	    ifr.ifr_data = (caddr_t) (uintptr_t) atoi(*spp);
 	    if (ioctl(skfd, SIOCSKEEPALIVE, &ifr) < 0) {
 		fprintf(stderr, "SIOCSKEEPALIVE: %s\n", strerror(errno));
 		goterr = 1;
@@ -474,7 +498,7 @@ int main(int argc, char **argv)
 	if (!strcmp(*spp, "outfill")) {
 	    if (*++spp == NULL)
 		usage();
-	    ifr.ifr_data = (caddr_t) atoi(*spp);
+	    ifr.ifr_data = (caddr_t) (uintptr_t) atoi(*spp);
 	    if (ioctl(skfd, SIOCSOUTFILL, &ifr) < 0) {
 		fprintf(stderr, "SIOCSOUTFILL: %s\n", strerror(errno));
 		goterr = 1;
@@ -486,20 +510,24 @@ int main(int argc, char **argv)
 
 	if (!strcmp(*spp, "-broadcast")) {
 	    goterr |= clr_flag(ifr.ifr_name, IFF_BROADCAST);
+	    if (test_flag(ifr.ifr_name, IFF_BROADCAST) > 0)
+	    	fprintf(stderr, _("Warning: Interface %s still in BROADCAST mode.\n"), ifr.ifr_name);
 	    spp++;
 	    continue;
 	}
 	if (!strcmp(*spp, "broadcast")) {
 	    if (*++spp != NULL) {
 		safe_strncpy(host, *spp, (sizeof host));
-		if (ap->input(0, host, &sa) < 0) {
-		    ap->herror(host);
+		if (ap->input(0, host, sa) < 0) {
+		    if (ap->herror)
+		    	ap->herror(host);
+		    else
+		    	fprintf(stderr, _("ifconfig: Error resolving '%s' for broadcast\n"), host);
 		    goterr = 1;
 		    spp++;
 		    continue;
 		}
-		memcpy((char *) &ifr.ifr_broadaddr, (char *) &sa,
-		       sizeof(struct sockaddr));
+		memcpy(&ifr.ifr_broadaddr, sa, sizeof(struct sockaddr));
 		if (ioctl(ap->fd, SIOCSIFBRDADDR, &ifr) < 0) {
 		    fprintf(stderr, "SIOCSIFBRDADDR: %s\n",
 			    strerror(errno));
@@ -514,14 +542,16 @@ int main(int argc, char **argv)
 	    if (*++spp == NULL)
 		usage();
 	    safe_strncpy(host, *spp, (sizeof host));
-	    if (ap->input(0, host, &sa) < 0) {
-		ap->herror(host);
+	    if (ap->input(0, host, sa) < 0) {
+		    if (ap->herror)
+		    	ap->herror(host);
+		    else
+		    	fprintf(stderr, _("ifconfig: Error resolving '%s' for dstaddr\n"), host);
 		goterr = 1;
 		spp++;
 		continue;
 	    }
-	    memcpy((char *) &ifr.ifr_dstaddr, (char *) &sa,
-		   sizeof(struct sockaddr));
+	    memcpy(&ifr.ifr_dstaddr, sa, sizeof(struct sockaddr));
 	    if (ioctl(ap->fd, SIOCSIFDSTADDR, &ifr) < 0) {
 		fprintf(stderr, "SIOCSIFDSTADDR: %s\n",
 			strerror(errno));
@@ -534,14 +564,17 @@ int main(int argc, char **argv)
 	    if (*++spp == NULL || didnetmask)
 		usage();
 	    safe_strncpy(host, *spp, (sizeof host));
-	    if (ap->input(0, host, &sa) < 0) {
-		ap->herror(host);
+	    if (ap->input(0, host, sa) < 0) {
+		    if (ap->herror)
+		    	ap->herror(host);
+		    else
+		    	fprintf(stderr, _("ifconfig: Error resolving '%s' for netmask\n"), host);
 		goterr = 1;
 		spp++;
 		continue;
 	    }
 	    didnetmask++;
-	    goterr = set_netmask(ap->fd, &ifr, &sa);
+	    goterr |= set_netmask(ap->fd, &ifr, sa);
 	    spp++;
 	    continue;
 	}
@@ -563,8 +596,8 @@ int main(int argc, char **argv)
 	    if (*++spp == NULL)
 		usage();
 	    if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0) {
-		fprintf(stderr, "mem_start: SIOCGIFMAP: %s\n", strerror(errno)); 
-		spp++; 
+		fprintf(stderr, "mem_start: SIOCGIFMAP: %s\n", strerror(errno));
+		spp++;
 		goterr = 1;
 		continue;
 	    }
@@ -580,8 +613,8 @@ int main(int argc, char **argv)
 	    if (*++spp == NULL)
 		usage();
 	    if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0) {
-		fprintf(stderr, "io_addr: SIOCGIFMAP: %s\n", strerror(errno)); 
-		spp++; 
+		fprintf(stderr, "io_addr: SIOCGIFMAP: %s\n", strerror(errno));
+		spp++;
 		goterr = 1;
 		continue;
 	    }
@@ -597,9 +630,9 @@ int main(int argc, char **argv)
 	    if (*++spp == NULL)
 		usage();
 	    if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0) {
-		fprintf(stderr, "irq: SIOCGIFMAP: %s\n", strerror(errno)); 
+		fprintf(stderr, "irq: SIOCGIFMAP: %s\n", strerror(errno));
 		goterr = 1;
-		spp++; 
+		spp++;
 		continue;
 	    }
 	    ifr.ifr_map.irq = atoi(*spp);
@@ -613,20 +646,24 @@ int main(int argc, char **argv)
 	if (!strcmp(*spp, "-pointopoint")) {
 	    goterr |= clr_flag(ifr.ifr_name, IFF_POINTOPOINT);
 	    spp++;
+	    if (test_flag(ifr.ifr_name, IFF_POINTOPOINT) > 0)
+	    	fprintf(stderr, _("Warning: Interface %s still in POINTOPOINT mode.\n"), ifr.ifr_name);
 	    continue;
 	}
 	if (!strcmp(*spp, "pointopoint")) {
 	    if (*(spp + 1) != NULL) {
 		spp++;
 		safe_strncpy(host, *spp, (sizeof host));
-		if (ap->input(0, host, &sa)) {
-		    ap->herror(host);
+		if (ap->input(0, host, sa)) {
+		    if (ap->herror)
+		    	ap->herror(host);
+		    else
+		    	fprintf(stderr, _("ifconfig: Error resolving '%s' for pointopoint\n"), host);
 		    goterr = 1;
 		    spp++;
 		    continue;
 		}
-		memcpy((char *) &ifr.ifr_dstaddr, (char *) &sa,
-		       sizeof(struct sockaddr));
+		memcpy(&ifr.ifr_dstaddr, sa, sizeof(struct sockaddr));
 		if (ioctl(ap->fd, SIOCSIFDSTADDR, &ifr) < 0) {
 		    fprintf(stderr, "SIOCSIFDSTADDR: %s\n",
 			    strerror(errno));
@@ -652,17 +689,20 @@ int main(int argc, char **argv)
 	    if (*++spp == NULL)
 		usage();
 	    safe_strncpy(host, *spp, (sizeof host));
-	    if (hw->input(host, &sa) < 0) {
+	    if (hw->input(host, sa) < 0) {
 		fprintf(stderr, _("%s: invalid %s address.\n"), host, hw->name);
 		goterr = 1;
 		spp++;
 		continue;
 	    }
-	    memcpy((char *) &ifr.ifr_hwaddr, (char *) &sa,
-		   sizeof(struct sockaddr));
+	    memcpy(&ifr.ifr_hwaddr, sa, sizeof(struct sockaddr));
 	    if (ioctl(skfd, SIOCSIFHWADDR, &ifr) < 0) {
-		fprintf(stderr, "SIOCSIFHWADDR: %s\n",
-			strerror(errno));
+		if (errno == EBUSY)
+			fprintf(stderr, "SIOCSIFHWADDR: %s - you may need to down the interface\n",
+				strerror(errno));
+		else
+			fprintf(stderr, "SIOCSIFHWADDR: %s\n",
+				strerror(errno));
 		goterr = 1;
 	    }
 	    spp++;
@@ -681,22 +721,23 @@ int main(int argc, char **argv)
 			usage();
 		    *cp = 0;
 		} else {
-		    prefix_len = 0;
+		    prefix_len = 128;
 		}
 		safe_strncpy(host, *spp, (sizeof host));
-		if (inet6_aftype.input(1, host, 
-				       (struct sockaddr *) &sa6) < 0) {
-		    inet6_aftype.herror(host);
+		if (inet6_aftype.input(1, host, sa) < 0) {
+		    if (inet6_aftype.herror)
+		    	inet6_aftype.herror(host);
+		    else
+		    	fprintf(stderr, _("ifconfig: Error resolving '%s' for add\n"), host);
 		    goterr = 1;
 		    spp++;
 		    continue;
 		}
-		memcpy((char *) &ifr6.ifr6_addr, (char *) &sa6.sin6_addr,
-		       sizeof(struct in6_addr));
+		memcpy(&ifr6.ifr6_addr, &sin6->sin6_addr, sizeof(struct in6_addr));
 
 		fd = get_socket_for_af(AF_INET6);
 		if (fd < 0) {
-		    fprintf(stderr, 
+		    fprintf(stderr,
 			    _("No support for INET6 on this system.\n"));
 		    goterr = 1;
 		    spp++;
@@ -718,11 +759,11 @@ int main(int argc, char **argv)
 		continue;
 	    }
 #endif
-#ifdef HAVE_AFINET
+#if HAVE_AFINET
 	    { /* ipv4 address a.b.c.d */
-		unsigned long ip, nm, bc;
+		in_addr_t ip, nm, bc;
 		safe_strncpy(host, *spp, (sizeof host));
-		if (inet_aftype.input(0, host, (struct sockaddr *)&sin) < 0) {
+		if (inet_aftype.input(0, host, sa) < 0) {
 		    ap->herror(host);
 		    goterr = 1;
 		    spp++;
@@ -730,15 +771,15 @@ int main(int argc, char **argv)
 		}
 		fd = get_socket_for_af(AF_INET);
 		if (fd < 0) {
-		    fprintf(stderr, 
+		    fprintf(stderr,
 			    _("No support for INET on this system.\n"));
 		    goterr = 1;
 		    spp++;
 		    continue;
 		}
 
-		memcpy(&ip, &sin.sin_addr.s_addr, sizeof(unsigned long));
-		
+		memcpy(&ip, &sin->sin_addr.s_addr, sizeof(ip));
+
 		if (get_nmbc_parent(ifr.ifr_name, &nm, &bc) < 0) {
 			fprintf(stderr, _("Interface %s not initialized\n"),
 				ifr.ifr_name);
@@ -747,7 +788,7 @@ int main(int argc, char **argv)
 			continue;
 		}
 		set_ifstate(ifr.ifr_name, ip, nm, bc, 1);
-		
+
 	    }
 	    spp++;
 	    continue;
@@ -771,22 +812,21 @@ int main(int argc, char **argv)
 			usage();
 		    *cp = 0;
 		} else {
-		    prefix_len = 0;
+		    prefix_len = 128;
 		}
 		safe_strncpy(host, *spp, (sizeof host));
-		if (inet6_aftype.input(1, host, 
-				       (struct sockaddr *) &sa6) < 0) {
+		if (inet6_aftype.input(1, host, sa) < 0) {
 		    inet6_aftype.herror(host);
 		    goterr = 1;
 		    spp++;
 		    continue;
 		}
-		memcpy((char *) &ifr6.ifr6_addr, (char *) &sa6.sin6_addr,
+		memcpy(&ifr6.ifr6_addr, &sin6->sin6_addr,
 		       sizeof(struct in6_addr));
-		
+
 		fd = get_socket_for_af(AF_INET6);
 		if (fd < 0) {
-		    fprintf(stderr, 
+		    fprintf(stderr,
 			    _("No support for INET6 on this system.\n"));
 		    goterr = 1;
 		    spp++;
@@ -800,6 +840,8 @@ int main(int argc, char **argv)
 		}
 		ifr6.ifr6_ifindex = ifr.ifr_ifindex;
 		ifr6.ifr6_prefixlen = prefix_len;
+		if (opt_v)
+			fprintf(stderr, "now deleting: ioctl(SIOCDIFADDR,{ifindex=%d,prefixlen=%ld})\n",ifr.ifr_ifindex,prefix_len);
 		if (ioctl(fd, SIOCDIFADDR, &ifr6) < 0) {
 		    fprintf(stderr, "SIOCDIFADDR: %s\n",
 			    strerror(errno));
@@ -809,12 +851,12 @@ int main(int argc, char **argv)
 		continue;
 	    }
 #endif
-#ifdef HAVE_AFINET
+#if HAVE_AFINET
 	    {
 		/* ipv4 address a.b.c.d */
-		unsigned long ip, nm, bc;
+		in_addr_t ip, nm, bc;
 		safe_strncpy(host, *spp, (sizeof host));
-		if (inet_aftype.input(0, host, (struct sockaddr *)&sin) < 0) {
+		if (inet_aftype.input(0, host, sa) < 0) {
 		    ap->herror(host);
 		    goterr = 1;
 		    spp++;
@@ -827,9 +869,11 @@ int main(int argc, char **argv)
 		    spp++;
 		    continue;
 		}
-		
-		memcpy(&ip, &sin.sin_addr.s_addr, sizeof(unsigned long));
-		
+
+		/* Clear "ip" in case sizeof(unsigned long) > sizeof(sin.sin_addr.s_addr) */
+		ip = 0;
+		memcpy(&ip, &sin->sin_addr.s_addr, sizeof(ip));
+
 		if (get_nmbc_parent(ifr.ifr_name, &nm, &bc) < 0) {
 		    fprintf(stderr, _("Interface %s not initialized\n"),
 			    ifr.ifr_name);
@@ -859,17 +903,16 @@ int main(int argc, char **argv)
 		    usage();
 		*cp = 0;
 	    } else {
-		prefix_len = 0;
+		prefix_len = 128;
 	    }
 	    safe_strncpy(host, *spp, (sizeof host));
-	    if (inet6_aftype.input(1, host, (struct sockaddr *) &sa6) < 0) {
+	    if (inet6_aftype.input(1, host, sa) < 0) {
 		inet6_aftype.herror(host);
 		goterr = 1;
 		spp++;
 		continue;
 	    }
-	    memcpy((char *) &ifr6.ifr6_addr, (char *) &sa6.sin6_addr,
-		   sizeof(struct in6_addr));
+	    memcpy(&ifr6.ifr6_addr, &sin6->sin6_addr, sizeof(struct in6_addr));
 
 	    fd = get_socket_for_af(AF_INET6);
 	    if (fd < 0) {
@@ -900,10 +943,10 @@ int main(int argc, char **argv)
 	/* If the next argument is a valid hostname, assume OK. */
 	safe_strncpy(host, *spp, (sizeof host));
 
-	/* FIXME: sa is too small for INET6 addresses, inet6 should use that too, 
+	/* FIXME: sa is too small for INET6 addresses, inet6 should use that too,
 	   broadcast is unexpected */
 	if (ap->getmask) {
-	    switch (ap->getmask(host, &sa, NULL)) {
+	    switch (ap->getmask(host, samask, NULL)) {
 	    case -1:
 		usage();
 		break;
@@ -911,8 +954,8 @@ int main(int argc, char **argv)
 		if (didnetmask)
 		    usage();
 
-		goterr = set_netmask(skfd, &ifr, &sa);
-		didnetmask++;
+		// remeber to set the netmask from samask later
+		neednetmask = 1;
 		break;
 	    }
 	}
@@ -920,12 +963,14 @@ int main(int argc, char **argv)
 	   fprintf(stderr, _("ifconfig: Cannot set address for this protocol family.\n"));
 	   exit(1);
 	}
-	if (ap->input(0, host, &sa) < 0) {
-	    ap->herror(host);
-	    fprintf(stderr, _("ifconfig: `--help' gives usage information.\n"));
-	    exit(1);
+	if (ap->input(0, host, sa) < 0) {
+	    if (ap->herror)
+	    	ap->herror(host);
+	    else
+	    	fprintf(stderr,_("ifconfig: error resolving '%s' to set address for af=%s\n"), host, ap->name); fprintf(stderr,
+	    _("ifconfig: `--help' gives usage information.\n")); exit(1);
 	}
-	memcpy((char *) &ifr.ifr_addr, (char *) &sa, sizeof(struct sockaddr));
+	memcpy(&ifr.ifr_addr, sa, sizeof(struct sockaddr));
 	{
 	    int r = 0;		/* to shut gcc up */
 	    switch (ap->af) {
@@ -965,14 +1010,14 @@ int main(int argc, char **argv)
         * end, since it's deleted already! - Roman
         *
         * Should really use regex.h here, not sure though how well it'll go
-        * with the cross-platform support etc. 
+        * with the cross-platform support etc.
         */
         {
             char *ptr;
             short int found_colon = 0;
             for (ptr = ifr.ifr_name; *ptr; ptr++ )
                 if (*ptr == ':') found_colon++;
-                
+
             if (!(found_colon && *(ptr - 1) == '-'))
                 goterr |= set_flag(ifr.ifr_name, (IFF_UP | IFF_RUNNING));
         }
@@ -980,6 +1025,14 @@ int main(int argc, char **argv)
 	spp++;
     }
 
+    if (neednetmask) {
+	goterr |= set_netmask(skfd, &ifr, samask);
+	didnetmask++;
+    }
+
+    if (opt_v && goterr)
+    	fprintf(stderr, _("WARNING: at least one error occured. (%d)\n"), goterr);
+
     return (goterr);
 }
 
@@ -1012,7 +1065,7 @@ static int do_ifcmd(struct interface *x, struct ifcmd *ptr)
     char *z, *e;
     struct sockaddr_in *sin;
     int i;
-    
+
     if (do_if_fetch(x) < 0)
 	return 0;
     if (strncmp(x->name, ptr->base, ptr->baselen) != 0)
@@ -1028,13 +1081,13 @@ static int do_ifcmd(struct interface *x, struct ifcmd *ptr)
     if (i < 0 || i > 255)
 	abort();
     searcher[i] = 1;
-    
+
     /* copy */
     sin = (struct sockaddr_in *)&x->dstaddr;
     if (sin->sin_addr.s_addr != ptr->addr) {
 	return 0;
     }
-    
+
     if (ptr->flag) {
 	/* turn UP */
 	if (set_flag(x->name, IFF_UP | IFF_RUNNING) == -1)
@@ -1044,49 +1097,48 @@ static int do_ifcmd(struct interface *x, struct ifcmd *ptr)
 	if (clr_flag(x->name, IFF_UP) == -1)
 	    return -1;
     }
-    
+
     return 1; /* all done! */
 }
 
 
 static int get_nmbc_parent(char *parent,
-			   unsigned long *nm, unsigned long *bc)
+			   in_addr_t *nm, in_addr_t *bc)
 {
     struct interface *i;
     struct sockaddr_in *sin;
-    
+
     i = lookup_interface(parent);
     if (!i)
 	return -1;
     if (do_if_fetch(i) < 0)
 	return 0;
     sin = (struct sockaddr_in *)&i->netmask;
-    memcpy(nm, &sin->sin_addr.s_addr, sizeof(unsigned long));
+    memcpy(nm, &sin->sin_addr.s_addr, sizeof(*nm));
     sin = (struct sockaddr_in *)&i->broadaddr;
-    memcpy(bc, &sin->sin_addr.s_addr, sizeof(unsigned long));
+    memcpy(bc, &sin->sin_addr.s_addr, sizeof(*bc));
     return 0;
 }
 
-static int set_ifstate(char *parent, unsigned long ip,
-		       unsigned long nm, unsigned long bc,
+static int set_ifstate(char *parent, in_addr_t ip, in_addr_t nm, in_addr_t bc,
 		       int flag)
 {
     char buf[IFNAMSIZ];
     struct ifcmd pt;
     int i;
-    
+
     pt.base = parent;
     pt.baselen = strlen(parent);
     pt.addr = ip;
     pt.flag = flag;
     memset(searcher, 0, sizeof(searcher));
-    i = for_all_interfaces((int (*)(struct interface *,void *))do_ifcmd, 
+    i = for_all_interfaces((int (*)(struct interface *,void *))do_ifcmd,
 			   &pt);
     if (i == -1)
 	return -1;
     if (i == 1)
 	return 0;
-    
+
     /* add a new interface */
     for (i = 0; i < 256; i++)
 	if (searcher[i] == 0)
@@ -1094,7 +1146,7 @@ static int set_ifstate(char *parent, unsigned long ip,
 
     if (i == 256)
 	return -1; /* FAILURE!!! out of ip addresses */
-    
+
     if (snprintf(buf, IFNAMSIZ, "%s:%d", parent, i) > IFNAMSIZ)
 	return -1;
     if (set_ip_using(buf, SIOCSIFADDR, ip) == -1)
diff --git a/include/interface.h b/include/interface.h
index f95555c..1b58599 100644
--- a/include/interface.h
+++ b/include/interface.h
@@ -28,11 +28,10 @@ struct user_net_device_stats {
 };
 
 struct interface {
-    struct interface *next, *prev; 
+    struct interface *next, *prev;
     char name[IFNAMSIZ];	/* interface name        */
     short type;			/* if type               */
     short flags;		/* various flags         */
-    int metric;			/* routing metric        */
     int mtu;			/* MTU value             */
     int tx_queue_len;		/* transmit queue length */
     struct ifmap map;		/* hardware setup        */
@@ -64,13 +63,17 @@ struct interface {
 extern int if_fetch(struct interface *ife);
 
 extern int for_all_interfaces(int (*)(struct interface *, void *), void *);
-extern int free_interface_list(void);
+extern int if_cache_free(void);
 extern struct interface *lookup_interface(char *name);
 extern int if_readlist(void);
 
 extern int do_if_fetch(struct interface *ife);
 extern int do_if_print(struct interface *ife, void *cookie);
 
+extern int    procnetdev_version(char *buf);
+extern int    get_dev_fields(char *bp, struct interface *ife);
+extern char * get_name(char *name, char *p);
+
 extern void ife_print(struct interface *ptr);
 
 extern int ife_short;
@@ -84,7 +87,7 @@ extern const char *if_port_text[][4];
 #endif
 
 #if !defined(ifr_qlen)
-/* Actually it is ifru_ivalue, but that is not present in 2.0 kernel headers */   
+/* Actually it is ifru_ivalue, but that is not present in 2.0 kernel headers */
 #define ifr_qlen        ifr_ifru.ifru_mtu
 #endif
 
diff --git a/include/mii.h b/include/mii.h
deleted file mode 100644
index 1ef7ccc..0000000
--- a/include/mii.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * mii.h 1.4 2000/04/25 22:06:15
- *
- * Media Independent Interface support: register layout and ioctl's
- *
- * Copyright (C) 2000 David A. Hinds -- dhinds@pcmcia.sourceforge.org
- */
-
-#ifndef _LINUX_MII_H
-#define _LINUX_MII_H
-
-/* network interface ioctl's for MII commands */
-#ifndef SIOCGMIIPHY
-#define SIOCGMIIPHY (SIOCDEVPRIVATE)	/* Read from current PHY */
-#define SIOCGMIIREG (SIOCDEVPRIVATE+1) 	/* Read any PHY register */
-#define SIOCSMIIREG (SIOCDEVPRIVATE+2) 	/* Write any PHY register */
-#define SIOCGPARAMS (SIOCDEVPRIVATE+3) 	/* Read operational parameters */
-#define SIOCSPARAMS (SIOCDEVPRIVATE+4) 	/* Set operational parameters */
-#endif
-
-#include <linux/types.h>
-
-/* This data structure is used for all the MII ioctl's */
-struct mii_data {
-    __u16	phy_id;
-    __u16	reg_num;
-    __u16	val_in;
-    __u16	val_out;
-};
-
-/* Basic Mode Control Register */
-#define MII_BMCR		0x00
-#define  MII_BMCR_RESET		0x8000
-#define  MII_BMCR_LOOPBACK	0x4000
-#define  MII_BMCR_100MBIT	0x2000
-#define  MII_BMCR_AN_ENA	0x1000
-#define  MII_BMCR_ISOLATE	0x0400
-#define  MII_BMCR_RESTART	0x0200
-#define  MII_BMCR_DUPLEX	0x0100
-#define  MII_BMCR_COLTEST	0x0080
-
-/* Basic Mode Status Register */
-#define MII_BMSR		0x01
-#define  MII_BMSR_CAP_MASK	0xf800
-#define  MII_BMSR_100BASET4	0x8000
-#define  MII_BMSR_100BASETX_FD	0x4000
-#define  MII_BMSR_100BASETX_HD	0x2000
-#define  MII_BMSR_10BASET_FD	0x1000
-#define  MII_BMSR_10BASET_HD	0x0800
-#define  MII_BMSR_NO_PREAMBLE	0x0040
-#define  MII_BMSR_AN_COMPLETE	0x0020
-#define  MII_BMSR_REMOTE_FAULT	0x0010
-#define  MII_BMSR_AN_ABLE	0x0008
-#define  MII_BMSR_LINK_VALID	0x0004
-#define  MII_BMSR_JABBER	0x0002
-#define  MII_BMSR_EXT_CAP	0x0001
-
-#define MII_PHY_ID1		0x02
-#define MII_PHY_ID2		0x03
-
-/* Auto-Negotiation Advertisement Register */
-#define MII_ANAR		0x04
-/* Auto-Negotiation Link Partner Ability Register */
-#define MII_ANLPAR		0x05
-#define  MII_AN_NEXT_PAGE	0x8000
-#define  MII_AN_ACK		0x4000
-#define  MII_AN_REMOTE_FAULT	0x2000
-#define  MII_AN_ABILITY_MASK	0x07e0
-#define  MII_AN_FLOW_CONTROL	0x0400
-#define  MII_AN_100BASET4	0x0200
-#define  MII_AN_100BASETX_FD	0x0100
-#define  MII_AN_100BASETX_HD	0x0080
-#define  MII_AN_10BASET_FD	0x0040
-#define  MII_AN_10BASET_HD	0x0020
-#define  MII_AN_PROT_MASK	0x001f
-#define  MII_AN_PROT_802_3	0x0001
-
-/* Auto-Negotiation Expansion Register */
-#define MII_ANER		0x06
-#define  MII_ANER_MULT_FAULT	0x0010
-#define  MII_ANER_LP_NP_ABLE	0x0008
-#define  MII_ANER_NP_ABLE	0x0004
-#define  MII_ANER_PAGE_RX	0x0002
-#define  MII_ANER_LP_AN_ABLE	0x0001
-
-#endif /* _LINUX_MII_H */
diff --git a/include/util-ank.h b/include/util-ank.h
index 04ab16c..c8fcd08 100644
--- a/include/util-ank.h
+++ b/include/util-ank.h
@@ -75,6 +75,6 @@ extern int do_qdisc(int argc, char **argv);
 extern int do_class(int argc, char **argv);
 extern int do_filter(int argc, char **argv);
 
-extern const char *format_host(int af, void *addr, __u8 *abuf, int alen);
+extern const char *format_host(int af, void *addr, char *abuf, int alen);
 
 #endif /* __UTILS_H__ */
diff --git a/ipmaddr.c b/ipmaddr.c
index 2134e81..e4ed41d 100644
--- a/ipmaddr.c
+++ b/ipmaddr.c
@@ -32,6 +32,7 @@
 
 #include "config.h"
 #include "intl.h"
+#include "util.h"
 #include "util-ank.h"
 #include "net-support.h"
 #include "version.h"
@@ -44,13 +45,11 @@ int  filter_family;
 #define NEWADDR		1
 #define DELADDR		2
 
-char *Release = RELEASE,
-     *Version = "ipmaddr 1.1",
-     *Signature = "Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>";
+static char *Release = RELEASE, *Signature = "Alexey Kuznetsov";
 
 static void version(void)
 {
-	printf("%s\n%s\n%s\n", Release, Version, Signature);
+	printf("%s\n%s\n", Release, Signature);
 	exit(E_VERSION);
 }
 
@@ -61,7 +60,7 @@ static void usage(void)
 	fprintf(stderr, _("Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"));
 	fprintf(stderr, _("       ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"));
 	fprintf(stderr, _("       ipmaddr -V | -version\n"));
-	exit(-1);
+	exit(E_USAGE);
 }
 
 static void print_lla(FILE *fp, int len, unsigned char *addr)
@@ -75,7 +74,7 @@ static void print_lla(FILE *fp, int len, unsigned char *addr)
 	}
 }
 
-static int parse_lla(char *str, unsigned char *addr)
+static int parse_lla(char *str, char *addr)
 {
 	int len=0;
 
@@ -159,8 +158,7 @@ void read_dev_mcast(struct ma_info **result_p)
 
 		len = parse_hex(hexa, (unsigned char*)&m.addr.data);
 		if (len >= 0) {
-			struct ma_info *ma = malloc(sizeof(m));
-
+			struct ma_info *ma = xmalloc(sizeof(m));
 			memcpy(ma, &m, sizeof(m));
 			ma->addr.bytelen = len;
 			ma->addr.bitlen = len<<3;
@@ -174,22 +172,21 @@ void read_dev_mcast(struct ma_info **result_p)
 
 void read_igmp(struct ma_info **result_p)
 {
-	struct ma_info m;
+	struct ma_info m, *ma = NULL;
 	char buf[256];
 	FILE *fp = fopen(_PATH_PROCNET_IGMP, "r");
 
 	if (!fp)
 		return;
 	memset(&m, 0, sizeof(m));
-	fgets(buf, sizeof(buf), fp);
+	if (fgets(buf, sizeof(buf), fp))
+		/* eat line */;
 
 	m.addr.family = AF_INET;
 	m.addr.bitlen = 32;
 	m.addr.bytelen = 4;
 
 	while (fgets(buf, sizeof(buf), fp)) {
-		struct ma_info *ma = malloc(sizeof(m));
-
 		if (buf[0] != '\t') {
 			sscanf(buf, "%d%s", &m.index, m.name);
 			continue;
@@ -200,7 +197,7 @@ void read_igmp(struct ma_info **result_p)
 
 		sscanf(buf, "%08x%d", (__u32*)&m.addr.data, &m.users);
 
-		ma = malloc(sizeof(m));
+		ma = xmalloc(sizeof(m));
 		memcpy(ma, &m, sizeof(m));
 		maddr_ins(result_p, ma);
 	}
@@ -231,8 +228,7 @@ void read_igmp6(struct ma_info **result_p)
 
 		len = parse_hex(hexa, (unsigned char*)&m.addr.data);
 		if (len >= 0) {
-			struct ma_info *ma = malloc(sizeof(m));
-
+			struct ma_info *ma = xmalloc(sizeof(m));
 			memcpy(ma, &m, sizeof(m));
 
 			ma->addr.bytelen = len;
@@ -291,13 +287,15 @@ static void print_mlist(FILE *fp, struct ma_info *list)
 static int multiaddr_list(int argc, char **argv)
 {
 	struct ma_info *list = NULL;
+	size_t l;
 
 	while (argc > 0) {
 		if (strcmp(*argv, "dev") == 0) {
 			NEXT_ARG();
-			if (filter_dev[0])
+			l = strlen(*argv);
+			if (l <= 0 || l >= sizeof(filter_dev))
 				usage();
-			strcpy(filter_dev, *argv);
+			strncpy(filter_dev, *argv, sizeof (filter_dev));
 		} else if (strcmp(*argv, "all") == 0) {
 			filter_family = AF_UNSPEC;
 		} else if (strcmp(*argv, "ipv4") == 0) {
@@ -307,9 +305,10 @@ static int multiaddr_list(int argc, char **argv)
 		} else if (strcmp(*argv, "link") == 0) {
 			filter_family = AF_PACKET;
 		} else {
-			if (filter_dev[0])
+			l = strlen(*argv);
+			if (l <= 0 || l >= sizeof(filter_dev))
 				usage();
-			strcpy(filter_dev, *argv);
+			strncpy(filter_dev, *argv, sizeof (filter_dev));
 		}
 		argv++; argc--;
 	}
@@ -401,7 +400,7 @@ int main(int argc, char **argv)
 		basename = argv[0];
 	else
 		basename++;
-	
+
 	while (argc > 1) {
 		if (argv[1][0] != '-')
 			break;
diff --git a/iptunnel.c b/iptunnel.c
index 4943d83..ddf43b2 100644
--- a/iptunnel.c
+++ b/iptunnel.c
@@ -68,13 +68,11 @@
 
 #include "util-ank.h"
 
-char *Release = RELEASE,
-     *Version = "iptunnel 1.01",
-     *Signature = "Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>";
+static char *Release = RELEASE, *Signature = "Alexey Kuznetsov";
 
 static void version(void)
 {
-	printf("%s\n%s\n%s\n", Release, Version, Signature);
+	printf("%s\n%s\n", Release, Signature);
 	exit(E_VERSION);
 }
 
@@ -92,7 +90,7 @@ static void usage(void)
 	fprintf(stderr, _("       TOS  := { NUMBER | inherit }\n"));
 	fprintf(stderr, _("       TTL  := { 1..255 | inherit }\n"));
 	fprintf(stderr, _("       KEY  := { DOTTED_QUAD | NUMBER }\n"));
-	exit(-1);
+	exit(E_USAGE);
 }
 
 static int do_ioctl_get_ifindex(char *dev)
@@ -101,11 +99,12 @@ static int do_ioctl_get_ifindex(char *dev)
 	int fd;
 	int err;
 
-	strcpy(ifr.ifr_name, dev);
+	safe_strncpy(ifr.ifr_name, dev, IFNAMSIZ);
 	fd = socket(AF_INET, SOCK_DGRAM, 0);
 	err = ioctl(fd, SIOCGIFINDEX, &ifr);
 	if (err) {
 		perror("ioctl");
+		close(fd);
 		return 0;
 	}
 	close(fd);
@@ -118,11 +117,12 @@ static int do_ioctl_get_iftype(char *dev)
 	int fd;
 	int err;
 
-	strcpy(ifr.ifr_name, dev);
+	safe_strncpy(ifr.ifr_name, dev, IFNAMSIZ);
 	fd = socket(AF_INET, SOCK_DGRAM, 0);
 	err = ioctl(fd, SIOCGIFHWADDR, &ifr);
 	if (err) {
 		perror("ioctl");
+		close(fd);
 		return -1;
 	}
 	close(fd);
@@ -141,6 +141,7 @@ static char * do_ioctl_get_ifname(int idx)
 	err = ioctl(fd, SIOCGIFNAME, &ifr);
 	if (err) {
 		perror("ioctl");
+		close(fd);
 		return NULL;
 	}
 	close(fd);
@@ -155,7 +156,7 @@ static int do_get_ioctl(char *basedev, struct ip_tunnel_parm *p)
 	int fd;
 	int err;
 
-	strcpy(ifr.ifr_name, basedev);
+	safe_strncpy(ifr.ifr_name, basedev, IFNAMSIZ);
 	ifr.ifr_ifru.ifru_data = (void*)p;
 	fd = socket(AF_INET, SOCK_DGRAM, 0);
 	err = ioctl(fd, SIOCGETTUNNEL, &ifr);
@@ -171,7 +172,7 @@ static int do_add_ioctl(int cmd, char *basedev, struct ip_tunnel_parm *p)
 	int fd;
 	int err;
 
-	strcpy(ifr.ifr_name, basedev);
+	safe_strncpy(ifr.ifr_name, basedev, IFNAMSIZ);
 	ifr.ifr_ifru.ifru_data = (void*)p;
 	fd = socket(AF_INET, SOCK_DGRAM, 0);
 	err = ioctl(fd, cmd, &ifr);
@@ -187,7 +188,7 @@ static int do_del_ioctl(char *basedev, struct ip_tunnel_parm *p)
 	int fd;
 	int err;
 
-	strcpy(ifr.ifr_name, basedev);
+	safe_strncpy(ifr.ifr_name, basedev, IFNAMSIZ);
 	ifr.ifr_ifru.ifru_data = (void*)p;
 	fd = socket(AF_INET, SOCK_DGRAM, 0);
 	err = ioctl(fd, SIOCDELTUNNEL, &ifr);
@@ -375,7 +376,7 @@ static int do_add(int cmd, int argc, char **argv)
 		return do_add_ioctl(cmd, "gre0", &p);
 	case IPPROTO_IPV6:
 		return do_add_ioctl(cmd, "sit0", &p);
-	default:	
+	default:
 		fprintf(stderr, _("cannot determine tunnel mode (ipip, gre or sit)\n"));
 		return -1;
 	}
@@ -390,13 +391,13 @@ int do_del(int argc, char **argv)
 		return -1;
 
 	switch (p.iph.protocol) {
-	case IPPROTO_IPIP:	
+	case IPPROTO_IPIP:
 		return do_del_ioctl(p.name[0] ? p.name : "tunl0", &p);
-	case IPPROTO_GRE:	
+	case IPPROTO_GRE:
 		return do_del_ioctl(p.name[0] ? p.name : "gre0", &p);
-	case IPPROTO_IPV6:	
+	case IPPROTO_IPV6:
 		return do_del_ioctl(p.name[0] ? p.name : "sit0", &p);
-	default:	
+	default:
 		return do_del_ioctl(p.name, &p);
 	}
 	return -1;
@@ -476,8 +477,10 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
 		return -1;
 	}
 
-	fgets(buf, sizeof(buf), fp);
-	fgets(buf, sizeof(buf), fp);
+	if (fgets(buf, sizeof(buf), fp))
+		/* eat line */;
+	if (fgets(buf, sizeof(buf), fp))
+		/* eat line */;
 
 	while (fgets(buf, sizeof(buf), fp) != NULL) {
 		char *ptr;
@@ -485,9 +488,10 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
 		if ((ptr = strchr(buf, ':')) == NULL ||
 		    (*ptr++ = 0, sscanf(buf, "%s", name) != 1)) {
 			fprintf(stderr, _("Wrong format of /proc/net/dev. Sorry.\n"));
+			fclose(fp);
 			return -1;
 		}
-		if (sscanf(ptr, "%ld%ld%ld%ld%ld%ld%ld%*d%ld%ld%ld%ld%ld%ld%ld",
+		if (sscanf(ptr, "%lu%lu%lu%lu%lu%lu%lu%*u%lu%lu%lu%lu%lu%lu%lu",
 			   &rx_bytes, &rx_packets, &rx_errs, &rx_drops,
 			   &rx_fifo, &rx_frame, &rx_multi,
 			   &tx_bytes, &tx_packets, &tx_errs, &tx_drops,
@@ -521,6 +525,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
 			       tx_packets, tx_bytes, tx_errs, tx_colls, tx_carrier, tx_drops);
 		}
 	}
+	fclose(fp);
 	return 0;
 }
 
@@ -533,7 +538,7 @@ static int do_show(int argc, char **argv)
 		return -1;
 
 	switch (p.iph.protocol) {
-	case IPPROTO_IPIP:	
+	case IPPROTO_IPIP:
 		err = do_get_ioctl(p.name[0] ? p.name : "tunl0", &p);
 		break;
 	case IPPROTO_GRE:
@@ -592,7 +597,7 @@ int main(int argc, char **argv)
 		basename = argv[0];
 	else
 		basename++;
-	
+
 	while (argc > 1) {
 		if (argv[1][0] != '-')
 			break;
diff --git a/lib/Makefile b/lib/Makefile
index d714b2e..431f258 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -16,7 +16,7 @@
 #
 
 
-HWOBJS	 = hw.o loopback.o slip.o ether.o ax25.o ppp.o arcnet.o tr.o tunnel.o frame.o sit.o rose.o ash.o fddi.o hippi.o hdlclapb.o strip.o irda.o ec_hw.o x25.o
+HWOBJS	 = hw.o loopback.o slip.o ether.o ax25.o ppp.o arcnet.o tr.o tunnel.o frame.o sit.o rose.o ash.o fddi.o hippi.o hdlclapb.o strip.o irda.o ec_hw.o x25.o eui64.o ib.o
 AFOBJS	 = unix.o inet.o inet6.o ax25.o ipx.o ddp.o ipx.o netrom.o af.o rose.o econet.o x25.o
 AFGROBJS = inet_gr.o inet6_gr.o ipx_gr.o ddp_gr.o netrom_gr.o ax25_gr.o rose_gr.o getroute.o x25_gr.o
 AFSROBJS = inet_sr.o inet6_sr.o netrom_sr.o ipx_sr.o setroute.o x25_sr.o
@@ -36,7 +36,7 @@ OBJS	= $(sort $(VARIA) $(AFOBJS) $(HWOBJS) \
 
 # This can be overwritten by the TOPLEVEL Makefile
 TOPDIR=..
-CFLAGS += -I$(TOPDIR) -idirafter $(TOPDIR)/include # -fPIC
+CFLAGS += -I$(TOPDIR) -I$(TOPDIR)/include # -fPIC
 SONAME=libnet-tools.so.0
 
 .SUFFIXES: .a .so
diff --git a/lib/af.c b/lib/af.c
index 4f002c4..0500a0a 100644
--- a/lib/af.c
+++ b/lib/af.c
@@ -2,7 +2,7 @@
  * lib/af.c   This file contains the top-level part of the protocol
  *              support functions module for the NET-2 base distribution.
  *
- * Version:     $Id: af.c,v 1.13 2000/05/20 13:38:10 pb Exp $
+ * Version:     $Id: af.c,v 1.14 2007/12/01 17:49:35 ecki Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
@@ -35,8 +35,10 @@ int flag_netrom;
 int flag_inet;
 int flag_inet6;
 int flag_econet;
+int flag_rose;
 int flag_x25 = 0;
 int flag_ash;
+int flag_bluetooth;
 
 
 struct aftrans_t {
@@ -58,6 +60,9 @@ struct aftrans_t {
 	"ipx", "ipx", &flag_ipx
     },
     {
+	"rose", "rose", &flag_rose
+    },
+    {
 	"appletalk", "ddp", &flag_ddp
     },
     {
@@ -88,6 +93,9 @@ struct aftrans_t {
         "ash", "ash", &flag_ash
     },
     {
+        "bluetooth", "bluetooth", &flag_bluetooth
+    },
+    {
 	0, 0, 0
     }
 };
@@ -193,15 +201,14 @@ void aftrans_def(char *tool, char *argv0, char *dflt)
     char *tmp;
     char *buf;
 
-    strcpy(afname, dflt);
+    safe_strncpy(afname, dflt, sizeof(afname));
 
     if (!(tmp = strrchr(argv0, '/')))
 	tmp = argv0;		/* no slash?! */
     else
 	tmp++;
 
-    if (!(buf = strdup(tmp)))
-	return;
+    buf = xstrdup(tmp);
 
     if (strlen(tool) >= strlen(tmp)) {
 	free(buf);
@@ -219,7 +226,7 @@ void aftrans_def(char *tool, char *argv0, char *dflt)
 
     afname[0] = '\0';
     if (aftrans_opt(buf))
-	strcpy(afname, buf);
+	safe_strncpy(afname, buf, sizeof(afname));
 
     free(buf);
 }
@@ -296,7 +303,6 @@ int aftrans_opt(const char *arg)
 	if (tmp2)
 	    *(tmp2++) = '\0';
 
-	paft = aftrans;
 	for (paft = aftrans; paft->alias; paft++) {
 	    if (strcmp(tmp1, paft->alias))
 		continue;
@@ -335,7 +341,7 @@ void print_aflist(int type) {
 	if ((type == 1 && ((*afp)->rprint == NULL)) || ((*afp)->af == 0)) {
 		afp++; continue;
 	}
-	if ((count % 3) == 0) fprintf(stderr,count?"\n    ":"    "); 
+	if ((count % 3) == 0) fprintf(stderr,count?"\n    ":"    ");
         txt = (*afp)->name; if (!txt) txt = "..";
 	fprintf(stderr,"%s (%s) ",txt,(*afp)->title);
 	count++;
diff --git a/lib/arcnet.c b/lib/arcnet.c
index eb0f46e..9bc3267 100644
--- a/lib/arcnet.c
+++ b/lib/arcnet.c
@@ -35,7 +35,7 @@ extern struct hwtype arcnet_hwtype;
 
 
 /* Display an ARCnet address in readable format. */
-static char *pr_arcnet(unsigned char *ptr)
+static const char *pr_arcnet(const char *ptr)
 {
     static char buff[64];
 
@@ -43,11 +43,16 @@ static char *pr_arcnet(unsigned char *ptr)
     return (buff);
 }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 /* Input an ARCnet address and convert to binary. */
 static int in_arcnet(char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char c, *orig;
     int i, val;
 
@@ -66,9 +71,8 @@ static int in_arcnet(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val = c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_arcnet(%s): invalid arcnet address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_arcnet(%s): invalid arcnet address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -81,9 +85,8 @@ static int in_arcnet(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val |= c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_arcnet(%s): invalid arcnet address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_arcnet(%s): invalid arcnet address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -92,28 +95,21 @@ static int in_arcnet(char *bufp, struct sockaddr *sap)
 
 	/* We might get a semicolon here - not required. */
 	if (*bufp == ':') {
-	    if (i == ETH_ALEN) {
-#ifdef DEBUG
+	    if (_DEBUG && i == ETH_ALEN)
 		fprintf(stderr, _("in_arcnet(%s): trailing : ignored!\n"),
-			orig)
-#endif
-		    ;		/* nothing */
-	    }
+			orig);
 	    bufp++;
 	}
     }
 
     /* That's it.  Any trailing junk? */
-    if ((i == ETH_ALEN) && (*bufp != '\0')) {
-#ifdef DEBUG
+    if (_DEBUG && (i == ETH_ALEN) && (*bufp != '\0')) {
 	fprintf(stderr, _("in_arcnet(%s): trailing junk!\n"), orig);
 	errno = EINVAL;
 	return (-1);
-#endif
     }
-#ifdef DEBUG
-    fprintf(stderr, "in_arcnet(%s): %s\n", orig, pr_arcnet(sap->sa_data));
-#endif
+    if (_DEBUG)
+	fprintf(stderr, "in_arcnet(%s): %s\n", orig, pr_arcnet(sap->sa_data));
 
     return (0);
 }
diff --git a/lib/ash.c b/lib/ash.c
index c64667c..6cfc154 100644
--- a/lib/ash.c
+++ b/lib/ash.c
@@ -31,8 +31,8 @@ static unsigned char hamming[16] =
 };
 
 /* Display an Ash address in readable format. */
-static char *
-pr_ash(unsigned char *ptr)
+static const char *
+pr_ash(const char *ptr)
 {
     static char buff[128];
     char *p = buff;
@@ -57,10 +57,10 @@ pr_ash(unsigned char *ptr)
 
 struct hwtype ash_hwtype;
 
-static int 
+static int
 in_ash(char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     unsigned int i = 0;
 
     sap->sa_family = ash_hwtype.type;
@@ -102,7 +102,7 @@ struct hwtype ash_hwtype =
 #if HAVE_AFASH
 
 /* Display an Ash socket address. */
-static char *
+static const char *
 pr_sash(struct sockaddr *sap, int numeric)
 {
     static char buf[64];
diff --git a/lib/ax25.c b/lib/ax25.c
index 11521d2..d57abe7 100644
--- a/lib/ax25.c
+++ b/lib/ax25.c
@@ -47,7 +47,7 @@ static char AX25_errmsg[128];
 
 extern struct aftype ax25_aftype;
 
-static char *AX25_print(unsigned char *ptr)
+static const char *AX25_print(const char *ptr)
 {
     static char buff[8];
     int i;
@@ -66,7 +66,7 @@ static char *AX25_print(unsigned char *ptr)
 
 
 /* Display an AX.25 socket address. */
-static char *
+static const char *
  AX25_sprint(struct sockaddr *sap, int numeric)
 {
     static char buf[64];
@@ -76,10 +76,15 @@ static char *
     return (AX25_print(((struct sockaddr_ax25 *) sap)->sax25_call.ax25_call));
 }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 static int AX25_input(int type, char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char *orig, c;
     int i;
 
@@ -95,9 +100,8 @@ static int AX25_input(int type, char *bufp, struct sockaddr *sap)
 	    c = toupper(c);
 	if (!(isupper(c) || isdigit(c))) {
 	    safe_strncpy(AX25_errmsg, _("Invalid callsign"), sizeof(AX25_errmsg));
-#ifdef DEBUG
-	    fprintf(stderr, "ax25_input(%s): %s !\n", AX25_errmsg, orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, "ax25_input(%s): %s !\n", AX25_errmsg, orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -107,10 +111,9 @@ static int AX25_input(int type, char *bufp, struct sockaddr *sap)
 
     /* Callsign too long? */
     if ((i == 6) && (*bufp != '-') && (*bufp != '\0')) {
-	strcpy(AX25_errmsg, _("Callsign too long"));
-#ifdef DEBUG
-	fprintf(stderr, "ax25_input(%s): %s !\n", AX25_errmsg, orig);
-#endif
+	safe_strncpy(AX25_errmsg, _("Callsign too long"), sizeof(AX25_errmsg));
+	if (_DEBUG)
+	    fprintf(stderr, "ax25_input(%s): %s !\n", AX25_errmsg, orig);
 	errno = E2BIG;
 	return (-1);
     }
@@ -128,12 +131,12 @@ static int AX25_input(int type, char *bufp, struct sockaddr *sap)
     }
 
     /* All done. */
-#ifdef DEBUG
-    fprintf(stderr, "ax25_input(%s): ", orig);
-    for (i = 0; i < sizeof(ax25_address); i++)
-	fprintf(stderr, "%02X ", sap->sa_data[i] & 0377);
-    fprintf(stderr, "\n");
-#endif
+    if (_DEBUG) {
+	fprintf(stderr, "ax25_input(%s): ", orig);
+	for (i = 0; i < sizeof(ax25_address); i++)
+	    fprintf(stderr, "%02X ", sap->sa_data[i] & 0377);
+	fprintf(stderr, "\n");
+    }
 
     return (0);
 }
diff --git a/lib/ax25_gr.c b/lib/ax25_gr.c
index 4dce92d..46a67ee 100644
--- a/lib/ax25_gr.c
+++ b/lib/ax25_gr.c
@@ -49,7 +49,8 @@ int AX25_rprint(int options)
     }
     printf(_("Kernel AX.25 routing table\n"));	/* xxx */
     printf(_("Destination  Iface    Use\n"));	/* xxx */
-    fgets(buffer, 256, f);
+    if (fgets(buffer, 256, f))
+	/* eat line */;
     while (fgets(buffer, 256, f)) {
 	buffer[9] = 0;
 	buffer[14] = 0;
diff --git a/lib/ddp.c b/lib/ddp.c
index 9b5e829..0a08fd2 100644
--- a/lib/ddp.c
+++ b/lib/ddp.c
@@ -32,7 +32,7 @@
 #include "util.h"
 
 /* Display a ddp domain address. */
-static char *ddp_print(unsigned char *ptr)
+static const char *ddp_print(const char *ptr)
 {
     static char buff[64];
     struct sockaddr_at *sat = (struct sockaddr_at *) (ptr - 2);
@@ -42,7 +42,7 @@ static char *ddp_print(unsigned char *ptr)
 
 
 /* Display a ddp domain address. */
-static char *ddp_sprint(struct sockaddr *sap, int numeric)
+static const char *ddp_sprint(struct sockaddr *sap, int numeric)
 {
     static char buf[64];
 
diff --git a/lib/ddp_gr.c b/lib/ddp_gr.c
index 94169f0..d05c431 100644
--- a/lib/ddp_gr.c
+++ b/lib/ddp_gr.c
@@ -1,3 +1,20 @@
+/*
+ * lib/ddp_gr.c         Prinbting of DDP (AppleTalk) routing table
+ *                      used by the NET-LIB.
+ *
+ * NET-LIB
+ *
+ * Version:     $Id: ddp_gr.c,v 1.4 2002/06/02 05:25:15 ecki Exp $
+ *
+ * Author:      Ajax <ajax@firest0rm.org>
+ *
+ * Modification:
+ *  2002-06-02 integrated into main source by Bernd Eckenfels
+ *
+ */
+
+/* TODO: name lookups (/etc/atalk.names?  NBP?) */
+
 #include "config.h"
 
 #if HAVE_AFATALK
@@ -16,9 +33,62 @@
 #include "pathnames.h"
 #include "intl.h"
 
+/* stolen from inet_gr.c */
+#define flags_decode(i,o) do {                  \
+        o[0] = '\0';                            \
+        if (i & RTF_UP) strcat(o, "U");         \
+        if (i & RTF_GATEWAY) strcat(o, "G");    \
+        if (i & RTF_REJECT) strcat(o, "!");     \
+        if (i & RTF_HOST) strcat(o, "H");       \
+        if (i & RTF_REINSTATE) strcat(o, "R");  \
+        if (i & RTF_DYNAMIC) strcat(o, "D");    \
+        if (i & RTF_MODIFIED) strcat(o, "M");   \
+        if (i & RTF_DEFAULT) strcat(o, "d");    \
+        if (i & RTF_ALLONLINK) strcat(o, "a");  \
+        if (i & RTF_ADDRCONF) strcat(o, "c");   \
+        if (i & RTF_NONEXTHOP) strcat(o, "o");  \
+        if (i & RTF_EXPIRES) strcat(o, "e");    \
+        if (i & RTF_CACHE) strcat(o, "c");      \
+        if (i & RTF_FLOW) strcat(o, "f");       \
+        if (i & RTF_POLICY) strcat(o, "p");     \
+        if (i & RTF_LOCAL) strcat(o, "l");      \
+        if (i & RTF_MTU) strcat(o, "u");        \
+        if (i & RTF_WINDOW) strcat(o, "w");     \
+        if (i & RTF_IRTT) strcat(o, "i");       \
+        if (i & RTF_NOTCACHED) strcat(o, "n");  \
+    } while (0)
+
 int DDP_rprint(int options)
 {
-    fprintf(stderr, _("Routing table for `ddp' not yet supported.\n"));
-    return (1);
+    FILE *fp;
+    char *dest, *gw, *dev, *flags;
+    char oflags[32];
+    char *hdr = "Destination     Gateway         Device          Flags";
+
+    fp = fopen(_PATH_PROCNET_ATALK_ROUTE, "r");
+
+    if (!fp) {
+        perror("Error opening " _PATH_PROCNET_ATALK_ROUTE);
+        fprintf(stderr, "DDP (AppleTalk) not configured on this system.\n");
+        return 1;
+    }
+
+    if (fscanf(fp, "%ms %ms %ms %ms\n", &dest, &gw, &flags, &dev))
+		/* eat line */;
+    free(dest); free(gw); free(flags); free(dev);
+
+    printf("%s\n", hdr);
+
+    while (fscanf(fp, "%ms %ms %ms %ms\n", &dest, &gw, &flags, &dev) == 4) {
+        int iflags = atoi(flags);
+        flags_decode(iflags, oflags);
+        printf("%-16s%-16s%-16s%-s\n", dest, gw, dev, oflags);
+        free(dest); free(gw); free(flags); free(dev);
+    }
+
+    fclose(fp);
+
+    return 0;
+
 }
 #endif
diff --git a/lib/ec_hw.c b/lib/ec_hw.c
index 825e501..088d125 100644
--- a/lib/ec_hw.c
+++ b/lib/ec_hw.c
@@ -2,7 +2,7 @@
  * lib/ec_hw.c  This file contains an implementation of the Econet
  *              hardware support functions.
  *
- * Version:     $Id: ec_hw.c,v 1.2 1999/09/27 11:00:46 philip Exp $
+ * Version:     $Id: ec_hw.c,v 1.3 2009/09/06 22:39:20 ecki Exp $
  *
  * Author:      Philip Blundell <philb@gnu.org>
  *
@@ -16,6 +16,7 @@
 
 #if HAVE_HWEC
 
+#include <stdlib.h>
 #include <net/if_arp.h>
 #include "net-support.h"
 
diff --git a/lib/econet.c b/lib/econet.c
index 1229a28..6cf8a9a 100644
--- a/lib/econet.c
+++ b/lib/econet.c
@@ -32,8 +32,8 @@
 
 
 /* Display an Econet address */
-static char *
-ec_print(unsigned char *ptr)
+static const char *
+ec_print(const char *ptr)
 {
     static char buff[64];
     struct ec_addr *ec = (struct ec_addr *) ptr;
@@ -43,7 +43,7 @@ ec_print(unsigned char *ptr)
 
 
 /* Display an Econet socket address */
-static char *
+static const char *
 ec_sprint(struct sockaddr *sap, int numeric)
 {
     struct sockaddr_ec *sec = (struct sockaddr_ec *) sap;
@@ -51,10 +51,10 @@ ec_sprint(struct sockaddr *sap, int numeric)
     if (sap->sa_family != AF_ECONET)
 	return _("[NONE SET]");
 
-    return ec_print((unsigned char *) &sec->addr);
+    return ec_print((const char *) &sec->addr);
 }
 
-static int 
+static int
 ec_input(int type, char *bufp, struct sockaddr *sap)
 {
     struct sockaddr_ec *sec = (struct sockaddr_ec *) sap;
diff --git a/lib/ether.c b/lib/ether.c
index a71aed7..dee9c73 100644
--- a/lib/ether.c
+++ b/lib/ether.c
@@ -2,7 +2,7 @@
  * lib/ether.c        This file contains an implementation of the "Ethernet"
  *              support functions.
  *
- * Version:     $Id: ether.c,v 1.7 1999/09/27 11:00:47 philip Exp $
+ * Version:     $Id: ether.c,v 1.8 2002/07/30 05:17:29 ecki Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
@@ -35,22 +35,27 @@ extern struct hwtype ether_hwtype;
 
 
 /* Display an Ethernet address in readable format. */
-static char *pr_ether(unsigned char *ptr)
+static const char *pr_ether(const char *ptr)
 {
     static char buff[64];
 
-    snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X",
+    snprintf(buff, sizeof(buff), "%02x:%02x:%02x:%02x:%02x:%02x",
 	     (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
 	     (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
 	);
     return (buff);
 }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 /* Input an Ethernet address and convert to binary. */
 static int in_ether(char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char c, *orig;
     int i;
     unsigned val;
@@ -70,9 +75,8 @@ static int in_ether(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val = c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_ether(%s): invalid ether address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_ether(%s): invalid ether address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -87,9 +91,8 @@ static int in_ether(char *bufp, struct sockaddr *sap)
 	else if (c == ':' || c == 0)
 	    val >>= 4;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_ether(%s): invalid ether address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_ether(%s): invalid ether address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -100,28 +103,21 @@ static int in_ether(char *bufp, struct sockaddr *sap)
 
 	/* We might get a semicolon here - not required. */
 	if (*bufp == ':') {
-	    if (i == ETH_ALEN) {
-#ifdef DEBUG
+	    if (_DEBUG && i == ETH_ALEN)
 		fprintf(stderr, _("in_ether(%s): trailing : ignored!\n"),
-			orig)
-#endif
-		    ;		/* nothing */
-	    }
+			orig);
 	    bufp++;
 	}
     }
 
     /* That's it.  Any trailing junk? */
-    if ((i == ETH_ALEN) && (*bufp != '\0')) {
-#ifdef DEBUG
+    if (_DEBUG && (i == ETH_ALEN) && (*bufp != '\0')) {
 	fprintf(stderr, _("in_ether(%s): trailing junk!\n"), orig);
 	errno = EINVAL;
 	return (-1);
-#endif
     }
-#ifdef DEBUG
-    fprintf(stderr, "in_ether(%s): %s\n", orig, pr_ether(sap->sa_data));
-#endif
+    if (_DEBUG)
+	fprintf(stderr, "in_ether(%s): %s\n", orig, pr_ether(sap->sa_data));
 
     return (0);
 }
diff --git a/lib/eui64.c b/lib/eui64.c
new file mode 100644
index 0000000..94831c0
--- /dev/null
+++ b/lib/eui64.c
@@ -0,0 +1,152 @@
+/*
+ * lib/eui64.c  This file contains support for generic EUI-64 hw addressing
+ *
+ * Version:     $Id: eui64.c,v 1.1 2001/11/12 02:12:05 ecki Exp $
+ *
+ * Author:      Daniel Stodden <stodden@in.tum.de>
+ *              Copyright 2001 Daniel Stodden
+ *
+ *              blueprinted from ether.c
+ *              Copyright 1993 MicroWalt Corporation
+ *
+ *              This program is free software; you can redistribute it
+ *              and/or  modify it under  the terms of  the GNU General
+ *              Public  License as  published  by  the  Free  Software
+ *              Foundation;  either  version 2 of the License, or  (at
+ *              your option) any later version.
+ */
+#include "config.h"
+
+#if HAVE_HWEUI64
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <net/if_arp.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+#include "net-support.h"
+#include "pathnames.h"
+#include "intl.h"
+
+/*
+ * EUI-64 constants
+ */
+
+#define EUI64_ALEN	8
+
+#ifndef ARPHRD_EUI64
+#define ARPHRD_EUI64	27
+#warning "ARPHRD_EUI64 not defined in <net/if_arp.h>. Using private value 27"
+#endif
+
+struct hwtype eui64_hwtype;
+
+/* Display an EUI-64 address in readable format. */
+static const char *pr_eui64(const char *ptr)
+{
+	static char buff[64];
+
+	snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",
+		 (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377), (ptr[3] & 0377),
+		 (ptr[4] & 0377), (ptr[5] & 0377), (ptr[6] & 0377), (ptr[7] & 0377)
+		);
+	return (buff);
+}
+
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
+
+/* Start the PPP encapsulation on the file descriptor. */
+static int in_eui64( char *bufp, struct sockaddr *sap )
+{
+	char *ptr;
+	char c, *orig;
+	int i;
+	unsigned val;
+
+	sap->sa_family = eui64_hwtype.type;
+	ptr = sap->sa_data;
+
+	i = 0;
+	orig = bufp;
+
+	while ((*bufp != '\0') && (i < EUI64_ALEN)) {
+		val = 0;
+		c = *bufp++;
+		if (isdigit(c))
+			val = c - '0';
+		else if (c >= 'a' && c <= 'f')
+			val = c - 'a' + 10;
+		else if (c >= 'A' && c <= 'F')
+			val = c - 'A' + 10;
+		else {
+			if (_DEBUG)
+				fprintf( stderr, _("in_eui64(%s): invalid eui64 address!\n"),
+					 orig );
+			errno = EINVAL;
+			return (-1);
+		}
+
+		val <<= 4;
+		c = *bufp;
+		if (isdigit(c))
+			val |= c - '0';
+		else if (c >= 'a' && c <= 'f')
+			val |= c - 'a' + 10;
+		else if (c >= 'A' && c <= 'F')
+			val |= c - 'A' + 10;
+		else if (c == ':' || c == 0)
+			val >>= 4;
+		else {
+			if (_DEBUG)
+				fprintf( stderr, _("in_eui64(%s): invalid eui64 address!\n"),
+					 orig );
+			errno = EINVAL;
+			return (-1);
+		}
+
+		if (c != 0)
+			bufp++;
+
+		*ptr++ = (unsigned char) (val & 0377);
+		i++;
+
+		/* We might get a semicolon here - not required. */
+		if (*bufp == ':') {
+			if (_DEBUG && i == EUI64_ALEN)
+				fprintf(stderr, _("in_eui64(%s): trailing : ignored!\n"),
+					orig);
+			bufp++;
+		}
+	}
+
+	/* That's it.  Any trailing junk? */
+	if (_DEBUG && (i == EUI64_ALEN) && (*bufp != '\0')) {
+		fprintf(stderr, _("in_eui64(%s): trailing junk!\n"), orig);
+		errno = EINVAL;
+		return (-1);
+	}
+	if (_DEBUG)
+		fprintf(stderr, "in_eui64(%s): %s\n", orig, pr_eui64(sap->sa_data));
+
+    return (0);
+}
+
+struct hwtype eui64_hwtype =
+{
+	"eui64", NULL, /*"EUI-64 addressing", */ ARPHRD_EUI64, EUI64_ALEN,
+	pr_eui64, in_eui64, NULL, 0
+};
+
+
+#endif				/* HAVE_EUI64 */
diff --git a/lib/fddi.c b/lib/fddi.c
index f6bf5ca..c18696e 100644
--- a/lib/fddi.c
+++ b/lib/fddi.c
@@ -46,7 +46,7 @@ extern struct hwtype fddi_hwtype;
 
 
 /* Display an FDDI address in readable format. */
-static char *pr_fddi(unsigned char *ptr)
+static const char *pr_fddi(const char *ptr)
 {
     static char buff[64];
 
@@ -57,11 +57,16 @@ static char *pr_fddi(unsigned char *ptr)
     return (buff);
 }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 /* Input an FDDI address and convert to binary. */
 static int in_fddi(char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char c, *orig;
     int i, val;
 
@@ -80,9 +85,8 @@ static int in_fddi(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val = c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_fddi(%s): invalid fddi address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_fddi(%s): invalid fddi address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -95,9 +99,8 @@ static int in_fddi(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val |= c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_fddi(%s): invalid fddi address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_fddi(%s): invalid fddi address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -106,28 +109,21 @@ static int in_fddi(char *bufp, struct sockaddr *sap)
 
 	/* We might get a semicolon here - not required. */
 	if (*bufp == ':') {
-	    if (i == FDDI_K_ALEN) {
-#ifdef DEBUG
+	    if (_DEBUG && i == FDDI_K_ALEN)
 		fprintf(stderr, _("in_fddi(%s): trailing : ignored!\n"),
-			orig)
-#endif
-		    ;		/* nothing */
-	    }
+			orig);
 	    bufp++;
 	}
     }
 
     /* That's it.  Any trailing junk? */
-    if ((i == FDDI_K_ALEN) && (*bufp != '\0')) {
-#ifdef DEBUG
+    if (_DEBUG && (i == FDDI_K_ALEN) && (*bufp != '\0')) {
 	fprintf(stderr, _("in_fddi(%s): trailing junk!\n"), orig);
 	errno = EINVAL;
 	return (-1);
-#endif
     }
-#ifdef DEBUG
-    fprintf(stderr, "in_fddi(%s): %s\n", orig, pr_fddi(sap->sa_data));
-#endif
+    if (_DEBUG)
+	fprintf(stderr, "in_fddi(%s): %s\n", orig, pr_fddi(sap->sa_data));
 
     return (0);
 }
diff --git a/lib/frame.c b/lib/frame.c
index 58d1ad4..ad265d6 100644
--- a/lib/frame.c
+++ b/lib/frame.c
@@ -37,7 +37,7 @@
 #include "net-support.h"
 #include "pathnames.h"
 
-char *pr_dlci(unsigned char *ptr)
+static const char *pr_dlci(const char *ptr)
 {
     static char buf[12];
 
diff --git a/lib/getargs.c b/lib/getargs.c
index 4170097..6952777 100644
--- a/lib/getargs.c
+++ b/lib/getargs.c
@@ -24,12 +24,13 @@
 #include <unistd.h>
 #include "net-support.h"
 #include "pathnames.h"
+#include "util.h"
 
 
 /* Split the input string into multiple fields. */
 int getargs(char *string, char *arguments[])
 {
-    int len = strlen(string); 
+    int len = strlen(string);
     char temp[len+1];
     char *sp, *ptr;
     int i, argc;
@@ -41,7 +42,7 @@ int getargs(char *string, char *arguments[])
      */
     sp = string;
     i = 0;
-    strcpy(temp, string);
+    safe_strncpy(temp, string, sizeof(temp));
     ptr = temp;
 
     /*
diff --git a/lib/hdlclapb.c b/lib/hdlclapb.c
index c4ed074..b7d563e 100644
--- a/lib/hdlclapb.c
+++ b/lib/hdlclapb.c
@@ -1,11 +1,11 @@
 /*
- * lib/hdlclapb.c 
+ * lib/hdlclapb.c
  *              This file contains the HDLC/LAPB support for the NET-2 base
  *              distribution.
  *
  * Version:    $Id: hdlclapb.c,v 1.5 2000/03/05 11:26:02 philip Exp $
  *
- * Original Author:     
+ * Original Author:
  *              Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
  *
diff --git a/lib/hippi.c b/lib/hippi.c
index 308db00..43e7a79 100644
--- a/lib/hippi.c
+++ b/lib/hippi.c
@@ -46,7 +46,7 @@ extern struct hwtype hippi_hwtype;
 
 
 /* Display an HIPPI address in readable format. */
-static char *pr_hippi(unsigned char *ptr)
+static const char *pr_hippi(const char *ptr)
 {
     static char buff[64];
 
@@ -57,11 +57,16 @@ static char *pr_hippi(unsigned char *ptr)
     return (buff);
 }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 /* Input an HIPPI address and convert to binary. */
 static int in_hippi(char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char c, *orig;
     int i, val;
 
@@ -80,9 +85,8 @@ static int in_hippi(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val = c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_hippi(%s): invalid hippi address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_hippi(%s): invalid hippi address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -95,9 +99,8 @@ static int in_hippi(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val |= c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_hippi(%s): invalid hippi address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_hippi(%s): invalid hippi address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -106,27 +109,20 @@ static int in_hippi(char *bufp, struct sockaddr *sap)
 
 	/* We might get a semicolon here - not required. */
 	if (*bufp == ':') {
-	    if (i == HIPPI_ALEN) {
-#ifdef DEBUG
-		fprintf(stderr, _("in_hippi(%s): trailing : ignored!\n"), orig)
-#endif
-		    ;		/* nothing */
-	    }
+	    if (_DEBUG && i == HIPPI_ALEN)
+		fprintf(stderr, _("in_hippi(%s): trailing : ignored!\n"), orig);
 	    bufp++;
 	}
     }
 
     /* That's it.  Any trailing junk? */
-    if ((i == HIPPI_ALEN) && (*bufp != '\0')) {
-#ifdef DEBUG
+    if (_DEBUG && (i == HIPPI_ALEN) && (*bufp != '\0')) {
 	fprintf(stderr, _("in_hippi(%s): trailing junk!\n"), orig);
 	errno = EINVAL;
 	return (-1);
-#endif
     }
-#ifdef DEBUG
-    fprintf(stderr, "in_hippi(%s): %s\n", orig, pr_hippi(sap->sa_data));
-#endif
+    if (_DEBUG)
+	fprintf(stderr, "in_hippi(%s): %s\n", orig, pr_hippi(sap->sa_data));
 
     return (0);
 }
diff --git a/lib/hw.c b/lib/hw.c
index 4989748..71dfcf9 100644
--- a/lib/hw.c
+++ b/lib/hw.c
@@ -2,7 +2,7 @@
  * lib/hw.c   This file contains the top-level part of the hardware
  *              support functions module.
  *
- * Version:     $Id: hw.c,v 1.17 2000/05/20 13:38:10 pb Exp $
+ * Version:     $Id: hw.c,v 1.19 2008/10/03 01:52:04 ecki Exp $
  *
  * Maintainer:  Bernd 'eckes' Eckenfels, <net-tools@lina.inka.de>
  *
@@ -73,6 +73,10 @@ extern struct hwtype irda_hwtype;
 
 extern struct hwtype ec_hwtype;
 
+extern struct hwtype ib_hwtype;
+
+extern struct hwtype eui64_hwtype;
+
 static struct hwtype *hwtypes[] =
 {
 
@@ -97,7 +101,7 @@ static struct hwtype *hwtypes[] =
 #if HAVE_HWTR
     &tr_hwtype,
 #ifdef ARPHRD_IEEE802_TR
-    &tr_hwtype1, 
+    &tr_hwtype1,
 #endif
 #endif
 #if HAVE_HWAX25
@@ -144,6 +148,12 @@ static struct hwtype *hwtypes[] =
 #if HAVE_HWX25
     &x25_hwtype,
 #endif
+#if HAVE_HWIB
+    &ib_hwtype,
+#endif
+#if HAVE_HWEUI64
+    &eui64_hwtype,
+#endif
     &unspec_hwtype,
     NULL
 };
@@ -211,12 +221,18 @@ void hwinit()
 #if HAVE_HWTR
     tr_hwtype.title = _("16/4 Mbps Token Ring");
 #ifdef ARPHRD_IEEE802_TR
-    tr_hwtype1.title = _("16/4 Mbps Token Ring (New)") ; 
+    tr_hwtype1.title = _("16/4 Mbps Token Ring (New)") ;
 #endif
 #endif
 #if HAVE_HWEC
     ec_hwtype.title = _("Econet");
 #endif
+#if HAVE_HWIB
+    ib_hwtype.title = _("InfiniBand");
+#endif
+#if HAVE_HWEUI64
+    eui64_hwtype.title = _("Generic EUI-64");
+#endif
     sVhwinit = 1;
 }
 
@@ -269,7 +285,7 @@ void print_hwlist(int type) {
 	if (((type == 1) && ((*hwp)->alen == 0)) || ((*hwp)->type == -1)) {
 		hwp++; continue;
 	}
-	if ((count % 3) == 0) fprintf(stderr,count?"\n    ":"    "); 
+	if ((count % 3) == 0) fprintf(stderr,count?"\n    ":"    ");
         txt = (*hwp)->name; if (!txt) txt = "..";
 	fprintf(stderr,"%s (%s) ",txt,(*hwp)->title);
 	count++;
diff --git a/lib/ib.c b/lib/ib.c
new file mode 100644
index 0000000..1eeb7f0
--- /dev/null
+++ b/lib/ib.c
@@ -0,0 +1,151 @@
+/*
+ * lib/ib.c        This file contains an implementation of the "Infiniband"
+ *              support functions.
+ *
+ * Version:     $Id: ib.c,v 1.1 2008/10/03 01:52:03 ecki Exp $
+ *
+ * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ *              Copyright 1993 MicroWalt Corporation
+ *		Tom Duffy <tduffy@sun.com>
+ *
+ *              This program is free software; you can redistribute it
+ *              and/or  modify it under  the terms of  the GNU General
+ *              Public  License as  published  by  the  Free  Software
+ *              Foundation;  either  version 2 of the License, or  (at
+ *              your option) any later version.
+ */
+#include "config.h"
+
+#if HAVE_HWIB
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if_arp.h>
+#include <linux/if_infiniband.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+#include <string.h>
+#include <unistd.h>
+#include "net-support.h"
+#include "pathnames.h"
+#include "intl.h"
+#include "util.h"
+
+extern struct hwtype ib_hwtype;
+
+
+/* Display an InfiniBand address in readable format. */
+static const char *pr_ib(const char *ptr)
+{
+    static char buff[128];
+    char *pos;
+    unsigned int i;
+
+    pos = buff;
+    for (i = 0; i < INFINIBAND_ALEN; i++) {
+	pos += sprintf(pos, "%02X:", (*ptr++ & 0377));
+    }
+    buff[strlen(buff) - 1] = '\0';
+    fprintf(stderr, _("Infiniband hardware address can be incorrect! Please read BUGS section in ifconfig(8).\n"));
+    /* snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X",
+	     (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
+	     (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
+	);
+    */
+    return (buff);
+}
+
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
+
+/* Input an Infiniband address and convert to binary. */
+static int in_ib(char *bufp, struct sockaddr *sap)
+{
+    char *ptr;
+    char c, *orig;
+    int i;
+    unsigned val;
+
+    sap->sa_family = ib_hwtype.type;
+    ptr = sap->sa_data;
+
+    i = 0;
+    orig = bufp;
+    while ((*bufp != '\0') && (i < INFINIBAND_ALEN)) {
+	val = 0;
+	c = *bufp++;
+	if (isdigit(c))
+	    val = c - '0';
+	else if (c >= 'a' && c <= 'f')
+	    val = c - 'a' + 10;
+	else if (c >= 'A' && c <= 'F')
+	    val = c - 'A' + 10;
+	else {
+	    if (_DEBUG)
+		fprintf(stderr, _("in_ib(%s): invalid infiniband address!\n"), orig);
+	    errno = EINVAL;
+	    return (-1);
+	}
+	val <<= 4;
+	c = *bufp;
+	if (isdigit(c))
+	    val |= c - '0';
+	else if (c >= 'a' && c <= 'f')
+	    val |= c - 'a' + 10;
+	else if (c >= 'A' && c <= 'F')
+	    val |= c - 'A' + 10;
+	else if (c == ':' || c == 0)
+	    val >>= 4;
+	else {
+#ifdef DEBUG
+	    fprintf(stderr, _("in_ib(%s): invalid infiniband address!\n"), orig);
+#endif
+	    errno = EINVAL;
+	    return (-1);
+	}
+	if (c != 0)
+	    bufp++;
+	*ptr++ = (unsigned char) (val & 0377);
+	i++;
+
+	/* We might get a semicolon here - not required. */
+	if (*bufp == ':') {
+	    if (i == INFINIBAND_ALEN) {
+#ifdef DEBUG
+		fprintf(stderr, _("in_ib(%s): trailing : ignored!\n"),
+			orig)
+#endif
+		    ;		/* nothing */
+	    }
+	    bufp++;
+	}
+    }
+
+    /* That's it.  Any trailing junk? */
+    if ((i == INFINIBAND_ALEN) && (*bufp != '\0')) {
+#ifdef DEBUG
+	fprintf(stderr, _("in_ib(%s): trailing junk!\n"), orig);
+	errno = EINVAL;
+	return (-1);
+#endif
+    }
+#ifdef DEBUG
+    fprintf(stderr, "in_ib(%s): %s\n", orig, pr_ib(sap->sa_data));
+#endif
+
+    return (0);
+}
+
+
+struct hwtype ib_hwtype =
+{
+    "infiniband", NULL, ARPHRD_INFINIBAND, INFINIBAND_ALEN,
+    pr_ib, in_ib, NULL
+};
+
+
+#endif				/* HAVE_HWIB */
diff --git a/lib/inet.c b/lib/inet.c
index ae90664..fc23b17 100644
--- a/lib/inet.c
+++ b/lib/inet.c
@@ -3,7 +3,7 @@
  *              support functions for the net-tools.
  *              (NET-3 base distribution).
  *
- * Version:    $Id: inet.c,v 1.13 1999/12/11 13:35:56 freitag Exp $
+ * Version:    $Id: inet.c,v 1.14 2003/10/19 11:57:37 pb Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
@@ -14,11 +14,11 @@
  *960203 {1.23} Bernd Eckenfels :       net-features support
  *960217 {1.24} Bernd Eckenfels :       get_sname
  *960219 {1.25} Bernd Eckenfels :       extern int h_errno
- *960329 {1.26} Bernd Eckenfels :       resolve 255.255.255.255 
+ *960329 {1.26} Bernd Eckenfels :       resolve 255.255.255.255
  *980101 {1.27} Bernd Eckenfels :	resolve raw sockets in /etc/protocols
  *990302 {1.28} Phil Blundell   :       add netmask to INET_rresolve
  *991007        Kurt Garloff	:	rresolve, resolve: may be hosts
- *		<garloff@suse.de>	store type (host?) in cache 
+ *		<garloff@suse.de>	store type (host?) in cache
  *
  *              This program is free software; you can redistribute it
  *              and/or  modify it under  the terms of  the GNU General
@@ -96,9 +96,9 @@ static int INET_resolve(char *name, struct sockaddr_in *sin, int hostfirst)
 #ifdef DEBUG
     if (hostfirst) fprintf (stderr, "gethostbyname (%s)\n", name);
 #endif
-    if (hostfirst && 
+    if (hostfirst &&
 	(hp = gethostbyname(name)) != (struct hostent *) NULL) {
-	memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0], 
+	memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0],
 		sizeof(struct in_addr));
 	return 0;
     }
@@ -127,24 +127,24 @@ static int INET_resolve(char *name, struct sockaddr_in *sin, int hostfirst)
 	errno = h_errno;
 	return -1;
     }
-    memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0], 
+    memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0],
 	   sizeof(struct in_addr));
 
     return 0;
 }
 
 
-/* numeric: & 0x8000: default instead of *, 
- *	    & 0x4000: host instead of net, 
+/* numeric: & 0x8000: default instead of *,
+ *	    & 0x4000: host instead of net,
  *	    & 0x0fff: don't resolve
  */
-static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin, 
+static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
 			 int numeric, unsigned int netmask)
 {
     struct hostent *ent;
     struct netent *np;
     struct addr *pn;
-    unsigned long ad, host_ad;
+    u_int32_t ad, host_ad;
     int host = 0;
 
     /* Grmpf. -FvK */
@@ -155,24 +155,34 @@ static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
 	errno = EAFNOSUPPORT;
 	return (-1);
     }
-    ad = (unsigned long) sin->sin_addr.s_addr;
+    ad = sin->sin_addr.s_addr;
 #ifdef DEBUG
-    fprintf (stderr, "rresolve: %08lx, mask %08x, num %08x \n", ad, netmask, numeric);
+    fprintf (stderr, "rresolve: %08lx, mask %08x, num %08x, len %d\n", ad, netmask, numeric, len);
 #endif
+
+    // if no symbolic names are requested we shortcut with ntoa
+    if (numeric & 0x0FFF) {
+        safe_strncpy(name, inet_ntoa(sin->sin_addr), len);
+	return (0);
+    }
+
+    // we skip getnetbyaddr for 0.0.0.0/0 and 0.0.0.0/~0
     if (ad == INADDR_ANY) {
-	if ((numeric & 0x0FFF) == 0) {
+        if (netmask == INADDR_ANY) {
+            // for 0.0.0.0/0 we hardcode symbolic name
 	    if (numeric & 0x8000)
 		safe_strncpy(name, "default", len);
 	    else
 	        safe_strncpy(name, "*", len);
 	    return (0);
+	} else {
+	    // for 0.0.0.0/1 we skip getnetbyname()
+            safe_strncpy(name, "0.0.0.0", len);
+            return (0);
 	}
     }
-    if (numeric & 0x0FFF) {
-        safe_strncpy(name, inet_ntoa(sin->sin_addr), len);
-	return (0);
-    }
 
+    // it is a host address if flagged or any host bits set
     if ((ad & (~netmask)) != 0 || (numeric & 0x4000))
 	host = 1;
 #if 0
@@ -183,7 +193,7 @@ static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
 	if (pn->addr.sin_addr.s_addr == ad && pn->host == host) {
 	    safe_strncpy(name, pn->name, len);
 #ifdef DEBUG
-	    fprintf (stderr, "rresolve: found %s %08lx in cache\n", (host? "host": "net"), ad);
+	    fprintf (stderr, "rresolve: found %s %08lx in cache (name=%s, len=%d)\n", (host? "host": "net"), ad, name, len);
 #endif
 	    return (0);
 	}
@@ -210,12 +220,11 @@ static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
     }
     if ((ent == NULL) && (np == NULL))
 	safe_strncpy(name, inet_ntoa(sin->sin_addr), len);
-    pn = (struct addr *) malloc(sizeof(struct addr));
+    pn = (struct addr *) xmalloc(sizeof(struct addr));
     pn->addr = *sin;
     pn->next = INET_nn;
     pn->host = host;
-    pn->name = (char *) malloc(strlen(name) + 1);
-    strcpy(pn->name, name);
+    pn->name = xstrdup(name);
     INET_nn = pn;
 
     return (0);
@@ -229,35 +238,35 @@ static void INET_reserror(char *text)
 
 
 /* Display an Internet socket address. */
-static char *INET_print(unsigned char *ptr)
+static const char *INET_print(const char *ptr)
 {
     return (inet_ntoa((*(struct in_addr *) ptr)));
 }
 
 
 /* Display an Internet socket address. */
-static char *INET_sprint(struct sockaddr *sap, int numeric)
+static const char *INET_sprint(struct sockaddr *sap, int numeric)
 {
     static char buff[128];
 
     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
 	return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
 
-    if (INET_rresolve(buff, sizeof(buff), (struct sockaddr_in *) sap, 
+    if (INET_rresolve(buff, sizeof(buff), (struct sockaddr_in *) sap,
 		      numeric, 0xffffff00) != 0)
 	return (NULL);
 
     return (buff);
 }
 
-char *INET_sprintmask(struct sockaddr *sap, int numeric, 
+char *INET_sprintmask(struct sockaddr *sap, int numeric,
 		      unsigned int netmask)
 {
     static char buff[128];
 
     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
 	return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
-    if (INET_rresolve(buff, sizeof(buff), (struct sockaddr_in *) sap, 
+    if (INET_rresolve(buff, sizeof(buff), (struct sockaddr_in *) sap,
 		      numeric, netmask) != 0)
 	return (NULL);
     return (buff);
@@ -385,10 +394,8 @@ static int read_services(void)
     setservent(1);
     while ((se = getservent())) {
 	/* Allocate a service entry. */
-	item = (struct service *) malloc(sizeof(struct service));
-	if (item == NULL)
-	    perror("netstat");
-	item->name = strdup(se->s_name);
+	item = (struct service *) xmalloc(sizeof(struct service));
+	item->name = xstrdup(se->s_name);
 	item->number = se->s_port;
 
 	/* Fill it in. */
@@ -398,16 +405,17 @@ static int read_services(void)
 	    add2list(&udp_name, item);
 	} else if (!strcmp(se->s_proto, "raw")) {
 	    add2list(&raw_name, item);
+	} else { /* sctp, ddp, dccp */
+	    free(item->name);
+	    free(item);
 	}
     }
     endservent();
     setprotoent(1);
     while ((pe = getprotoent())) {
 	/* Allocate a service entry. */
-	item = (struct service *) malloc(sizeof(struct service));
-	if (item == NULL)
-	    perror("netstat");
-	item->name = strdup(pe->p_name);
+	item = (struct service *) xmalloc(sizeof(struct service));
+	item->name = xstrdup(pe->p_name);
 	item->number = htons(pe->p_proto);
 	add2list(&raw_name, item);
     }
@@ -416,35 +424,38 @@ static int read_services(void)
 }
 
 
-char *get_sname(int socknumber, char *proto, int numeric)
+const char *get_sname(int socknumber, const char *proto, int numeric)
 {
     static char buffer[64], init = 0;
     struct service *item;
 
     if (socknumber == 0)
 	return ("*");
-    if (numeric) {
-	sprintf(buffer, "%d", ntohs(socknumber));
-	return (buffer);
-    }
+    if (numeric)
+	goto do_ntohs;
+
     if (!init) {
 	(void) read_services();
 	init = 1;
     }
     buffer[0] = '\0';
-    if (!strcmp(proto, "tcp")) {
-	if ((item = searchlist(tcp_name, socknumber)) != NULL)
-	    sprintf(buffer, "%s", item->name);
-    } else if (!strcmp(proto, "udp")) {
-	if ((item = searchlist(udp_name, socknumber)) != NULL)
-	    sprintf(buffer, "%s", item->name);
-    } else if (!strcmp(proto, "raw")) {
-	if ((item = searchlist(raw_name, socknumber)) != NULL)
-	    sprintf(buffer, "%s", item->name);
-
+    if (!strcmp(proto, "tcp"))
+	item = searchlist(tcp_name, socknumber);
+    else if (!strcmp(proto, "udp"))
+	item = searchlist(udp_name, socknumber);
+    else if (!strcmp(proto, "raw"))
+	item = searchlist(raw_name, socknumber);
+    else
+	item = NULL;
+    if (item) {
+	strncpy(buffer, item->name, sizeof(buffer));
+	buffer[sizeof(buffer) - 1] = '\0';
     }
-    if (!buffer[0])
+
+    if (!buffer[0]) {
+ do_ntohs:
 	sprintf(buffer, "%d", ntohs(socknumber));
+    }
     return (buffer);
 }
 
diff --git a/lib/inet6.c b/lib/inet6.c
index 1f936b3..b428d07 100644
--- a/lib/inet6.c
+++ b/lib/inet6.c
@@ -3,7 +3,7 @@
  *              support functions for the net-tools.
  *              (most of it copied from lib/inet.c 1.26).
  *
- * Version:     $Id: inet6.c,v 1.10 2000/10/28 11:04:00 pb Exp $
+ * Version:     $Id: inet6.c,v 1.13 2010-07-05 22:52:00 ecki Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
@@ -44,6 +44,21 @@
 
 extern int h_errno;		/* some netdb.h versions don't export this */
 
+char * fix_v4_address(char *buf, struct in6_addr *in6)
+{
+	if (IN6_IS_ADDR_V4MAPPED(in6->s6_addr)) {
+			char *s =strchr(buf, '.');
+			if (s) {
+				while (s > buf && *s != ':')
+					--s;
+				if (*s == ':') ++s;
+				else s = NULL;
+			}
+			if (s) return s;
+	}
+	return buf;
+}
+
 static int INET6_resolve(char *name, struct sockaddr_in6 *sin6)
 {
     struct addrinfo req, *ai;
@@ -69,10 +84,9 @@ static int INET6_resolve(char *name, struct sockaddr_in6 *sin6)
 #endif
 
 
-static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
+static int INET6_rresolve(char *name, size_t namelen,
+			  struct sockaddr_in6 *sin6, int numeric)
 {
-    int s;
-
     /* Grmpf. -FvK */
     if (sin6->sin6_family != AF_INET6) {
 #ifdef DEBUG
@@ -83,21 +97,20 @@ static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
 	return (-1);
     }
     if (numeric & 0x7FFF) {
-	inet_ntop(AF_INET6, &sin6->sin6_addr, name, 80);
+	inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
 	return (0);
     }
     if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
         if (numeric & 0x8000)
-	    strcpy(name, "default");
+	    safe_strncpy(name, "default", namelen);
 	else
-	    strcpy(name, "*");
+	    safe_strncpy(name, "[::]", namelen);
 	return (0);
     }
 
-    if ((s = getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
-			 name, 255 /* !! */ , NULL, 0, 0))) {
-	fputs("getnameinfo failed\n", stderr);
-	return -1;
+    if (getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
+		    name, namelen , NULL, 0, 0)) {
+	inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
     }
     return (0);
 }
@@ -109,41 +122,48 @@ static void INET6_reserror(char *text)
 }
 
 
+
 /* Display an Internet socket address. */
-static char *INET6_print(unsigned char *ptr)
+static const char *INET6_print(const char *ptr)
 {
     static char name[80];
 
     inet_ntop(AF_INET6, (struct in6_addr *) ptr, name, 80);
-    return name;
+	return fix_v4_address(name, (struct in6_addr *)ptr);
 }
 
 
 /* Display an Internet socket address. */
 /* dirty! struct sockaddr usually doesn't suffer for inet6 addresses, fst. */
-static char *INET6_sprint(struct sockaddr *sap, int numeric)
+static const char *INET6_sprint(struct sockaddr *sap, int numeric)
 {
     static char buff[128];
 
     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
 	return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
-    if (INET6_rresolve(buff, (struct sockaddr_in6 *) sap, numeric) != 0)
+    if (INET6_rresolve(buff, sizeof(buff),
+		       (struct sockaddr_in6 *) sap, numeric) != 0)
 	return safe_strncpy(buff, _("[UNKNOWN]"), sizeof(buff));
-    return (buff);
+    return (fix_v4_address(buff, &((struct sockaddr_in6 *)sap)->sin6_addr));
 }
 
 
 static int INET6_getsock(char *bufp, struct sockaddr *sap)
 {
     struct sockaddr_in6 *sin6;
+	char *p;
 
     sin6 = (struct sockaddr_in6 *) sap;
     sin6->sin6_family = AF_INET6;
     sin6->sin6_port = 0;
+    sin6->sin6_scope_id = 0;
+    sin6->sin6_flowinfo = 0;
 
     if (inet_pton(AF_INET6, bufp, sin6->sin6_addr.s6_addr) <= 0)
 	return (-1);
-
+    p = fix_v4_address(bufp, &sin6->sin6_addr);
+    if (p != bufp)
+        memcpy(bufp, p, strlen(p)+1);
     return 16;			/* ?;) */
 }
 
diff --git a/lib/inet6_gr.c b/lib/inet6_gr.c
index 14f32eb..72b4a66 100644
--- a/lib/inet6_gr.c
+++ b/lib/inet6_gr.c
@@ -1,4 +1,4 @@
-/*
+ /*
    Modifications:
    1998-07-01 - Arnaldo Carvalho de Melo - GNU gettext instead of catgets,
    snprintf instead of sprintf
@@ -31,6 +31,7 @@
 #include "pathnames.h"
 #include "intl.h"
 #include "net-features.h"
+#include "util.h"
 
 /* neighbour discovery from linux-2.4.0/include/net/neighbour.h */
 
@@ -63,7 +64,7 @@ int rprint_fib6(int ext, int numeric)
     struct sockaddr_in6 saddr6, snaddr6;
     int num, iflags, metric, refcnt, use, prefix_len, slen;
     FILE *fp = fopen(_PATH_PROCNET_ROUTE6, "r");
-    
+
     char addr6p[8][5], saddr6p[8][5], naddr6p[8][5];
 
     if (!fp) {
@@ -71,14 +72,18 @@ int rprint_fib6(int ext, int numeric)
         printf(_("INET6 (IPv6) not configured in this system.\n"));
 	return 1;
     }
-    printf(_("Kernel IPv6 routing table\n"));
 
-    printf(_("Destination                                 "
-	     "Next Hop                                "
-	     "Flags Metric Ref    Use Iface\n"));
+    if (numeric & RTF_CACHE)
+    	printf(_("Kernel IPv6 routing cache\n"));
+    else
+    	printf(_("Kernel IPv6 routing table\n"));
+
+    printf(_("Destination                    "
+	     "Next Hop                   "
+	     "Flag Met Ref Use If\n"));
 
     while (fgets(buff, 1023, fp)) {
-	num = sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %4s%4s%4s%4s%4s%4s%4s%4s %02x %4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %s\n",
+	num = sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %4s%4s%4s%4s%4s%4s%4s%4s %02x %4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %15s\n",
 		     addr6p[0], addr6p[1], addr6p[2], addr6p[3],
 		     addr6p[4], addr6p[5], addr6p[6], addr6p[7],
 		     &prefix_len,
@@ -87,20 +92,24 @@ int rprint_fib6(int ext, int numeric)
 		     &slen,
 		     naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3],
 		     naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7],
-		     &metric, &use, &refcnt, &iflags, iface);
-#if 0
-	if (num < 23)
-	    continue;
-#endif
-	if (!(iflags & RTF_UP))
+		     &metric, &refcnt, &use, &iflags, iface);
+	if (0 && num < 23)
 	    continue;
+	if (iflags & RTF_CACHE) {
+		if (!(numeric & RTF_CACHE))
+			continue;
+	} else {
+		if (numeric & RTF_CACHE)
+			continue;
+	}
+
 	/* Fetch and resolve the target address. */
 	snprintf(addr6, sizeof(addr6), "%s:%s:%s:%s:%s:%s:%s:%s",
 		 addr6p[0], addr6p[1], addr6p[2], addr6p[3],
 		 addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
 	inet6_aftype.input(1, addr6, (struct sockaddr *) &saddr6);
 	snprintf(addr6, sizeof(addr6), "%s/%d",
-		 inet6_aftype.sprint((struct sockaddr *) &saddr6, 1),
+		 inet6_aftype.sprint((struct sockaddr *) &saddr6, numeric),
 		 prefix_len);
 
 	/* Fetch and resolve the nexthop address. */
@@ -109,10 +118,15 @@ int rprint_fib6(int ext, int numeric)
 		 naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7]);
 	inet6_aftype.input(1, naddr6, (struct sockaddr *) &snaddr6);
 	snprintf(naddr6, sizeof(naddr6), "%s",
-		 inet6_aftype.sprint((struct sockaddr *) &snaddr6, 1));
+		 inet6_aftype.sprint((struct sockaddr *) &snaddr6, numeric));
 
 	/* Decode the flags. */
-	strcpy(flags, "U");
+
+	flags[0]=0;
+	if (iflags & RTF_UP)
+	    strcat(flags, "U");
+	if (iflags & RTF_REJECT)
+	    strcat(flags, "!");
 	if (iflags & RTF_GATEWAY)
 	    strcat(flags, "G");
 	if (iflags & RTF_HOST)
@@ -123,9 +137,19 @@ int rprint_fib6(int ext, int numeric)
 	    strcat(flags, "A");
 	if (iflags & RTF_CACHE)
 	    strcat(flags, "C");
+	if (iflags & RTF_ALLONLINK)
+	    strcat(flags, "a");
+	if (iflags & RTF_EXPIRES)
+	    strcat(flags, "e");
+	if (iflags & RTF_MODIFIED)
+	    strcat(flags, "m");
+	if (iflags & RTF_NONEXTHOP)
+	    strcat(flags, "n");
+	if (iflags & RTF_FLOW)
+	    strcat(flags, "f");
 
 	/* Print the info. */
-	printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n",
+	printf("%-30s %-26s %-4s %-3d %-1d%6d %s\n",
 	       addr6, naddr6, flags, metric, refcnt, use, iface);
     }
 
@@ -138,14 +162,13 @@ int rprint_cache6(int ext, int numeric)
     char buff[4096], iface[16], flags[16];
     char addr6[128], haddr[20], statestr[20];
     struct sockaddr_in6 saddr6;
-    int type, num, refcnt, prefix_len, location, state, gc;
+    int type, refcnt, prefix_len, location, state, gc;
     long tstamp, expire, ndflags, reachable, stale, delete;
     FILE *fp = fopen(_PATH_PROCNET_NDISC, "r");
     char addr6p[8][5], haddrp[6][3];
 
     if (!fp) {
-	ESYSNOT("nd_print", "ND Table");
-	return 1;
+	return rprint_fib6(ext, numeric | RTF_CACHE);
     }
     printf(_("Kernel IPv6 Neighbour Cache\n"));
 
@@ -160,7 +183,7 @@ int rprint_cache6(int ext, int numeric)
 
 
     while (fgets(buff, 1023, fp)) {
-	num = sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %08lx %08lx %08lx %04x %04x %04lx %8s %2s%2s%2s%2s%2s%2s\n",
+	sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %08lx %08lx %08lx %04x %04x %04lx %8s %2s%2s%2s%2s%2s%2s\n",
 		     addr6p[0], addr6p[1], addr6p[2], addr6p[3],
 		     addr6p[4], addr6p[5], addr6p[6], addr6p[7],
 		     &location, &prefix_len, &type, &state, &expire, &tstamp, &reachable, &gc, &refcnt,
@@ -194,31 +217,31 @@ int rprint_cache6(int ext, int numeric)
 	/* Decode the state */
 	switch (state) {
 	case NUD_NONE:
-	    strcpy(statestr, "NONE");
+	    safe_strncpy(statestr, "NONE", sizeof(statestr));
 	    break;
 	case NUD_INCOMPLETE:
-	    strcpy(statestr, "INCOMPLETE");
+	    safe_strncpy(statestr, "INCOMPLETE", sizeof(statestr));
 	    break;
 	case NUD_REACHABLE:
-	    strcpy(statestr, "REACHABLE");
+	    safe_strncpy(statestr, "REACHABLE", sizeof(statestr));
 	    break;
 	case NUD_STALE:
-	    strcpy(statestr, "STALE");
+	    safe_strncpy(statestr, "STALE", sizeof(statestr));
 	    break;
 	case NUD_DELAY:
-	    strcpy(statestr, "DELAY");
+	    safe_strncpy(statestr, "DELAY", sizeof(statestr));
 	    break;
 	case NUD_PROBE:
-	    strcpy(statestr, "PROBE");
+	    safe_strncpy(statestr, "PROBE", sizeof(statestr));
 	    break;
 	case NUD_FAILED:
-	    strcpy(statestr, "FAILED");
+	    safe_strncpy(statestr, "FAILED", sizeof(statestr));
 	    break;
 	case NUD_NOARP:
-	    strcpy(statestr, "NOARP");
+	    safe_strncpy(statestr, "NOARP", sizeof(statestr));
 	    break;
 	case NUD_PERMANENT:
-	    strcpy(statestr, "PERM");
+	    safe_strncpy(statestr, "PERM", sizeof(statestr));
 	    break;
 	default:
 	    snprintf(statestr, sizeof(statestr), "UNKNOWN(%02x)", state);
diff --git a/lib/inet6_sr.c b/lib/inet6_sr.c
index fbfe033..1ad9510 100644
--- a/lib/inet6_sr.c
+++ b/lib/inet6_sr.c
@@ -33,7 +33,7 @@
 #include "pathnames.h"
 #include "intl.h"
 #include "net-features.h"
-
+#include "util.h"
 
 
 extern struct aftype inet6_aftype;
@@ -63,7 +63,7 @@ static int INET6_setroute(int action, int options, char **args)
     if (*args == NULL)
 	return (usage());
 
-    strcpy(target, *args++);
+    safe_strncpy(target, *args++, sizeof(target));
     if (!strcmp(target, "default")) {
         prefix_len = 0;
 	memset(&sa6, 0, sizeof(sa6));
@@ -112,7 +112,7 @@ static int INET6_setroute(int action, int options, char **args)
 		return (usage());
 	    if (rt.rtmsg_flags & RTF_GATEWAY)
 		return (usage());
-	    strcpy(gateway, *args);
+	    safe_strncpy(gateway, *args, sizeof(gateway));
 	    if (inet6_aftype.input(1, gateway,
 				   (struct sockaddr *) &sa6) < 0) {
 		inet6_aftype.herror(gateway);
@@ -152,7 +152,7 @@ static int INET6_setroute(int action, int options, char **args)
     }
     if (devname) {
 	memset(&ifr, 0, sizeof(ifr));
-	strcpy(ifr.ifr_name, devname);
+	safe_strncpy(ifr.ifr_name, devname, sizeof(ifr.ifr_name));
 
 	if (ioctl(skfd, SIOGIFINDEX, &ifr) < 0) {
 	    perror("SIOGIFINDEX");
diff --git a/lib/inet_gr.c b/lib/inet_gr.c
index d1e5efc..f67e89d 100644
--- a/lib/inet_gr.c
+++ b/lib/inet_gr.c
@@ -1,5 +1,5 @@
 /*
-   $Id: inet_gr.c,v 1.13 2000/10/08 01:00:44 ecki Exp $
+   $Id: inet_gr.c,v 1.14 2009/07/08 00:24:03 ecki Exp $
 
    Modifications:
    1998-07-01 - Arnaldo Carvalho de Melo - GNU gettext instead of catgets
@@ -31,14 +31,15 @@
 #include "intl.h"
 #include "net-features.h"
 #include "proc.h"
+#include "util.h"
 extern struct aftype inet_aftype;
 
-extern char *INET_sprintmask(struct sockaddr *sap, int numeric, 
+extern char *INET_sprintmask(struct sockaddr *sap, int numeric,
 			     unsigned int netmask);
 
 int rprint_fib(int ext, int numeric)
 {
-    char buff[1024], iface[16], flags[64];
+    char buff[1024], iface[17], flags[64];
     char gate_addr[128], net_addr[128];
     char mask_addr[128];
     int num, iflags, metric, refcnt, use, mss, window, irtt;
@@ -68,19 +69,19 @@ int rprint_fib(int ext, int numeric)
     mss = 0;
 
     fmt = proc_gen_fmt(_PATH_PROCNET_ROUTE, 0, fp,
-		       "Iface", "%16s",
-		       "Destination", "%128s",
-		       "Gateway", "%128s",
+		       "Iface", "%15s",
+		       "Destination", "%127s",
+		       "Gateway", "%127s",
 		       "Flags", "%X",
 		       "RefCnt", "%d",
 		       "Use", "%d",
 		       "Metric", "%d",
-		       "Mask", "%128s",
+		       "Mask", "%127s",
 		       "MTU", "%d",
 		       "Window", "%d",
 		       "IRTT", "%d",
 		       NULL);
-    /* "%16s %128s %128s %X %d %d %d %128s %d %d %d\n" */
+    /* "%15s %127s %127s %X %d %d %d %127s %d %d %d\n" */
 
     if (!fmt)
 	return 1;
@@ -104,18 +105,19 @@ int rprint_fib(int ext, int numeric)
 
 	/* Fetch and resolve the genmask. */
 	(void) inet_aftype.input(1, mask_addr, &snet_mask);
-	
+
 	sin_netmask = (struct sockaddr_in *)&snet_mask;
-	strcpy(net_addr, INET_sprintmask(&snet_target, 
+	safe_strncpy(net_addr, INET_sprintmask(&snet_target,
 					 (numeric | 0x8000 | (iflags & RTF_HOST? 0x4000: 0)),
-					 sin_netmask->sin_addr.s_addr));
-	net_addr[15] = '\0';
+					 sin_netmask->sin_addr.s_addr), sizeof(net_addr));
+    net_addr[15] = '\0';
 
-	strcpy(gate_addr, inet_aftype.sprint(&snet_gateway, numeric | 0x4000));
-	gate_addr[15] = '\0';
+	safe_strncpy(gate_addr, inet_aftype.sprint(&snet_gateway, numeric | 0x4000),
+                sizeof(gate_addr));
+    gate_addr[15] = '\0';
 
-	strcpy(mask_addr, inet_aftype.sprint(&snet_mask, 1));
-	mask_addr[15] = '\0';
+	safe_strncpy(mask_addr, inet_aftype.sprint(&snet_mask, 1), sizeof(mask_addr));
+    mask_addr[15] = '\0';
 
 	/* Decode the flags. */
 	flags[0] = '\0';
@@ -125,7 +127,7 @@ int rprint_fib(int ext, int numeric)
 	    strcat(flags, "G");
 #if HAVE_RTF_REJECT
 	if (iflags & RTF_REJECT)
-	    strcpy(flags, "!");
+	    safe_strncpy(flags, "!", sizeof(flags));
 #endif
 	if (iflags & RTF_HOST)
 	    strcat(flags, "H");
@@ -205,7 +207,7 @@ int rprint_fib(int ext, int numeric)
 
 int rprint_cache(int ext, int numeric)
 {
-    char buff[1024], iface[16], flags[64];
+    char buff[1024], iface[17], flags[64];
     char gate_addr[128], dest_addr[128], specdst[128];
     char src_addr[128];
     struct sockaddr snet;
@@ -221,17 +223,17 @@ int rprint_cache(int ext, int numeric)
 	return 1;
     }
 
-   /* Okay, first thing we need to know is the format of the rt_cache. 
+   /* Okay, first thing we need to know is the format of the rt_cache.
     * I am aware of two possible layouts:
     * 2.2.0
     * "Iface\tDestination\tGateway \tFlags\t\tRefCnt\tUse\tMetric\tSource\t\tMTU\tWindow\tIRTT\tTOS\tHHRef\tHHUptod\tSpecDst"
-    * "%s\t%08lX\t%08lX\t%8X\t%d\t%u\t%d\t%08lX\t%d\t%u\t%u\t%02X\t%d\t%1d\t%08X" 
+    * "%s\t%08lX\t%08lX\t%8X\t%d\t%u\t%d\t%08lX\t%d\t%u\t%u\t%02X\t%d\t%1d\t%08X"
     *
     * 2.0.36
     * "Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tSource\t\tMTU\tWindow\tIRTT\tHH\tARP"
     * "%s\t%08lX\t%08lX\t%02X\t%d\t%u\t%d\t%08lX\t%d\t%lu\t%u\t%d\t%1d"
     */
-    
+
     format = proc_guess_fmt(_PATH_PROCNET_RTCACHE, fp, "IRTT",1,"TOS",2,"HHRef",4,"HHUptod",8,"SpecDst",16,"HH",32,"ARP",64,NULL);
 
     printf(_("Kernel IP routing cache\n"));
@@ -251,7 +253,7 @@ int rprint_cache(int ext, int numeric)
     	  printf("ERROR: proc_guess_fmt(%s,... returned: %d\n",_PATH_PROCNET_RTCACHE, format);
 	  break;
     }
-    
+
     rewind(fp);
 
     if (ext == 1)
@@ -268,21 +270,21 @@ int rprint_cache(int ext, int numeric)
 		 "MSS   Window irtt  HH  Arp\n"));
 
       fmt = proc_gen_fmt(_PATH_PROCNET_RTCACHE, 0, fp,
-		       "Iface", "%16s",
-		       "Destination", "%128s",
-		       "Gateway", "%128s",
+		       "Iface", "%15s",
+		       "Destination", "%127s",
+		       "Gateway", "%127s",
 		       "Flags", "%X",
 		       "RefCnt", "%d",
 		       "Use", "%d",
 		       "Metric", "%d",
-		       "Source", "%128s",
+		       "Source", "%127s",
 		       "MTU", "%d",
 		       "Window", "%d",
 		       "IRTT", "%d",
 		       "HH", "%d",
 		       "ARP", "%d",
 		       NULL);
-      /* "%16s %128s %128s %X %d %d %d %128s %d %d %d %d %d\n" */
+      /* "%15s %127s %127s %X %d %d %d %127s %d %d %d %d %d\n" */
     }
 
     if (format == 2) {
@@ -291,23 +293,23 @@ int rprint_cache(int ext, int numeric)
 		 "Flags Metric Ref    Use Iface    "
 		 "MSS   Window irtt  TOS HHRef HHUptod     SpecDst\n"));
         fmt = proc_gen_fmt(_PATH_PROCNET_RTCACHE, 0, fp,
-		       "Iface", "%16s",
-		       "Destination", "%128s",
-		       "Gateway", "%128s",
+		       "Iface", "%15s",
+		       "Destination", "%127s",
+		       "Gateway", "%127s",
 		       "Flags", "%X",
 		       "RefCnt", "%d",
 		       "Use", "%d",
 		       "Metric", "%d",
-		       "Source", "%128s",
+		       "Source", "%127s",
 		       "MTU", "%d",
 		       "Window", "%d",
 		       "IRTT", "%d",
 		       "TOS", "%d",
 		       "HHRef", "%d",
 		       "HHUptod", "%d",
-		       "SpecDst", "%128s",
+		       "SpecDst", "%127s",
 		       NULL);
-      /* "%16s %128s %128s %X %d %d %d %128s %d %d %d %d %d %128s\n" */
+      /* "%15s %127s %127s %X %d %d %d %127s %d %d %d %d %d %127s\n" */
     }
 
 
@@ -333,27 +335,23 @@ int rprint_cache(int ext, int numeric)
 	  if (num < 12)
 	    continue;
 	}
-	
+
 
 	/* Fetch and resolve the target address. */
 	(void) inet_aftype.input(1, dest_addr, &snet);
-	strcpy(dest_addr, inet_aftype.sprint(&snet, numeric));
-	dest_addr[15] = '\0';
+	safe_strncpy(dest_addr, inet_aftype.sprint(&snet, numeric), sizeof(dest_addr));
 
 	/* Fetch and resolve the gateway address. */
 	(void) inet_aftype.input(1, gate_addr, &snet);
-	strcpy(gate_addr, inet_aftype.sprint(&snet, numeric));
-	gate_addr[15] = '\0';
+    safe_strncpy(gate_addr, inet_aftype.sprint(&snet, numeric), sizeof(gate_addr));
 
 	/* Fetch and resolve the source. */
 	(void) inet_aftype.input(1, src_addr, &snet);
-	strcpy(src_addr, inet_aftype.sprint(&snet, numeric));
-	src_addr[15] = '\0';
+	safe_strncpy(src_addr, inet_aftype.sprint(&snet, numeric), sizeof(src_addr));
 
 	/* Fetch and resolve the SpecDst addrerss. */
 	(void) inet_aftype.input(1, specdst, &snet);
-	strcpy(specdst, inet_aftype.sprint(&snet, numeric));
-	specdst[15] = '\0';
+	safe_strncpy(specdst, inet_aftype.sprint(&snet, numeric), sizeof(specdst));
 
 	/* Decode the flags. */
 	flags[0] = '\0';
@@ -367,7 +365,7 @@ if (format == 1) {
 	    strcat(flags, "G");
 #if HAVE_RTF_REJECT
 	if (iflags & RTF_REJECT)
-	    strcpy(flags, "!");
+	    safe_strncpy(flags, "!", sizeof(flags));
 #endif
 	if (iflags & RTF_REINSTATE)
 	    strcat(flags, "R");
diff --git a/lib/inet_sr.c b/lib/inet_sr.c
index 6d010d5..1a876ae 100644
--- a/lib/inet_sr.c
+++ b/lib/inet_sr.c
@@ -3,6 +3,7 @@
    1998-07-01 - Arnaldo Carvalho de Melo - GNU gettext instead of catgets
    1999-10-07 - Kurt Garloff		 - for -host and gws: prefer host names
 						over networks (or even reject)
+   2003-10-11 - Maik Broemme		 - gcc 3.x warnign fixes (default: break;)
  */
 
 #include "config.h"
@@ -104,7 +105,6 @@ static int INET_setroute(int action, int options, char **args)
        isnet = 1; break;
     case 2:
        isnet = 0; break;
-    default:
     }
 
     /* Fill in the other fields. */
diff --git a/lib/interface.c b/lib/interface.c
index f4d2a9a..67f0d8f 100644
--- a/lib/interface.c
+++ b/lib/interface.c
@@ -1,13 +1,13 @@
 /* Code to manipulate interface information, shared between ifconfig and
-   netstat. 
+   netstat.
 
-   10/1998 partly rewriten by Andi Kleen to support an interface list.   
-   I don't claim that the list operations are efficient @).  
+   10/1998 partly rewriten by Andi Kleen to support an interface list.
+   I don't claim that the list operations are efficient @).
 
    8/2000  Andi Kleen make the list operations a bit more efficient.
    People are crazy enough to use thousands of aliases now.
 
-   $Id: interface.c,v 1.14 2001/02/10 19:31:15 pb Exp $
+   $Id: interface.c,v 1.35 2011-01-01 03:22:31 ecki Exp $
  */
 
 #include "config.h"
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <ctype.h>
+#include <string.h>
 
 #if HAVE_AFIPX
 #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
@@ -36,7 +37,7 @@
 #include <neteconet/ec.h>
 #endif
 
-#ifdef HAVE_HWSLIP
+#if HAVE_HWSLIP
 #include <linux/if_slip.h>
 #include <net/if_arp.h>
 #endif
@@ -87,49 +88,58 @@ int procnetdev_vsn = 1;
 
 int ife_short;
 
+int if_list_all = 0;	/* do we have requested the complete proc list, yet? */
+
 static struct interface *int_list, *int_last;
 
 static int if_readlist_proc(char *);
 
-static struct interface *add_interface(char *name)
+static struct interface *if_cache_add(char *name)
 {
     struct interface *ife, **nextp, *new;
 
+    if (!int_list)
+    	int_last = NULL;
+
+    /* the cache is sorted, so if we hit a smaller if, exit */
     for (ife = int_last; ife; ife = ife->prev) {
-	    int n = nstrcmp(ife->name, name); 
-	    if (n == 0) 
-		    return ife; 
-	    if (n < 0) 
-		    break; 
+	    int n = nstrcmp(ife->name, name);
+	    if (n == 0)
+		    return ife;
+	    if (n < 0)
+		    break;
     }
-    new(new); 
-    safe_strncpy(new->name, name, IFNAMSIZ); 
-    nextp = ife ? &ife->next : &int_list;
+    new(new);
+    safe_strncpy(new->name, name, IFNAMSIZ);
+    nextp = ife ? &ife->next : &int_list; // keep sorting
     new->prev = ife;
-    new->next = *nextp; 
-    if (new->next) 
-	    new->next->prev = new; 
+    new->next = *nextp;
+    if (new->next)
+	    new->next->prev = new;
     else
-	    int_last = new; 
-    *nextp = new; 
-    return new; 
+	    int_last = new;
+    *nextp = new;
+    return new;
 }
 
 struct interface *lookup_interface(char *name)
 {
-    struct interface *ife = NULL;
+   /* if we have read all, use it */
+   if (if_list_all)
+   	return if_cache_add(name);
 
-    if (if_readlist_proc(name) < 0) 
-	    return NULL; 
-    ife = add_interface(name); 
-    return ife;
+   /* otherwise we read a limited list */
+   if (if_readlist_proc(name) < 0)
+   	return NULL;
+
+   return if_cache_add(name);
 }
 
 int for_all_interfaces(int (*doit) (struct interface *, void *), void *cookie)
 {
     struct interface *ife;
 
-    if (!int_list && (if_readlist() < 0))
+    if (!if_list_all && (if_readlist() < 0))
 	return -1;
     for (ife = int_list; ife; ife = ife->next) {
 	int err = doit(ife, cookie);
@@ -139,13 +149,15 @@ int for_all_interfaces(int (*doit) (struct interface *, void *), void *cookie)
     return 0;
 }
 
-int free_interface_list(void)
+int if_cache_free(void)
 {
     struct interface *ife;
     while ((ife = int_list) != NULL) {
 	int_list = ife->next;
 	free(ife);
     }
+    int_last = NULL;
+    if_list_all = 0;
     return 0;
 }
 
@@ -158,7 +170,7 @@ static int if_readconf(void)
     int skfd;
 
     /* SIOCGIFCONF currently seems to only work properly on AF_INET sockets
-       (as of 2.1.128) */ 
+       (as of 2.1.128) */
     skfd = get_socket_for_af(AF_INET);
     if (skfd < 0) {
 	fprintf(stderr, _("warning: no inet socket available: %s\n"),
@@ -180,7 +192,7 @@ static int if_readconf(void)
 	}
 	if (ifc.ifc_len == sizeof(struct ifreq) * numreqs) {
 	    /* assume it overflowed and try again */
-	    numreqs += 10;
+	    numreqs *= 2;
 	    continue;
 	}
 	break;
@@ -188,7 +200,7 @@ static int if_readconf(void)
 
     ifr = ifc.ifc_req;
     for (n = 0; n < ifc.ifc_len; n += sizeof(struct ifreq)) {
-	add_interface(ifr->ifr_name);
+	if_cache_add(ifr->ifr_name);
 	ifr++;
     }
     err = 0;
@@ -198,7 +210,7 @@ out:
     return err;
 }
 
-static char *get_name(char *name, char *p)
+char *get_name(char *name, char *p)
 {
     while (isspace(*p))
 	p++;
@@ -206,16 +218,19 @@ static char *get_name(char *name, char *p)
 	if (isspace(*p))
 	    break;
 	if (*p == ':') {	/* could be an alias */
-	    char *dot = p, *dotname = name;
-	    *name++ = *p++;
-	    while (isdigit(*p))
-		*name++ = *p++;
-	    if (*p != ':') {	/* it wasn't, backup */
-		p = dot;
-		name = dotname;
+		char *dot = p++;
+ 		while (*p && isdigit(*p)) p++;
+		if (*p == ':') {
+			/* Yes it is, backup and copy it. */
+			p = dot;
+			*name++ = *p++;
+			while (*p && isdigit(*p)) {
+				*name++ = *p++;
+			}
+		} else {
+			/* No, it isn't */
+			p = dot;
 	    }
-	    if (*p == '\0')
-		return NULL;
 	    p++;
 	    break;
 	}
@@ -225,7 +240,7 @@ static char *get_name(char *name, char *p)
     return p;
 }
 
-static int procnetdev_version(char *buf)
+int procnetdev_version(char *buf)
 {
     if (strstr(buf, "compressed"))
 	return 3;
@@ -234,12 +249,12 @@ static int procnetdev_version(char *buf)
     return 1;
 }
 
-static int get_dev_fields(char *bp, struct interface *ife)
+int get_dev_fields(char *bp, struct interface *ife)
 {
     switch (procnetdev_vsn) {
     case 3:
 	sscanf(bp,
-	"%llu %llu %lu %lu %lu %lu %lu %lu %llu %llu %lu %lu %lu %lu %lu %lu",
+	"%Lu %Lu %lu %lu %lu %lu %lu %lu %Lu %Lu %lu %lu %lu %lu %lu %lu",
 	       &ife->stats.rx_bytes,
 	       &ife->stats.rx_packets,
 	       &ife->stats.rx_errors,
@@ -259,7 +274,7 @@ static int get_dev_fields(char *bp, struct interface *ife)
 	       &ife->stats.tx_compressed);
 	break;
     case 2:
-	sscanf(bp, "%llu %llu %lu %lu %lu %lu %llu %llu %lu %lu %lu %lu %lu",
+	sscanf(bp, "%Lu %Lu %lu %lu %lu %lu %Lu %Lu %lu %lu %lu %lu %lu",
 	       &ife->stats.rx_bytes,
 	       &ife->stats.rx_packets,
 	       &ife->stats.rx_errors,
@@ -277,7 +292,7 @@ static int get_dev_fields(char *bp, struct interface *ife)
 	ife->stats.rx_multicast = 0;
 	break;
     case 1:
-	sscanf(bp, "%llu %lu %lu %lu %lu %llu %lu %lu %lu %lu %lu",
+	sscanf(bp, "%Lu %lu %lu %lu %lu %Lu %lu %lu %lu %lu %lu",
 	       &ife->stats.rx_packets,
 	       &ife->stats.rx_errors,
 	       &ife->stats.rx_dropped,
@@ -300,25 +315,21 @@ static int get_dev_fields(char *bp, struct interface *ife)
 
 static int if_readlist_proc(char *target)
 {
-    static int proc_read; 
     FILE *fh;
     char buf[512];
     struct interface *ife;
     int err;
 
-    if (proc_read) 
-	    return 0; 
-    if (!target) 
-	    proc_read = 1;
-
     fh = fopen(_PATH_PROCNET_DEV, "r");
     if (!fh) {
 		fprintf(stderr, _("Warning: cannot open %s (%s). Limited output.\n"),
-			_PATH_PROCNET_DEV, strerror(errno)); 
-		return if_readconf();
-	}	
-    fgets(buf, sizeof buf, fh);	/* eat line */
-    fgets(buf, sizeof buf, fh);
+			_PATH_PROCNET_DEV, strerror(errno));
+		return -2;
+	}
+    if (fgets(buf, sizeof buf, fh))
+		/* eat line */;
+    if (fgets(buf, sizeof buf, fh))
+		/* eat line */;
 
 #if 0				/* pretty, but can't cope with missing fields */
     fmt = proc_gen_fmt(_PATH_PROCNET_DEV, 1, fh,
@@ -349,8 +360,8 @@ static int if_readlist_proc(char *target)
     err = 0;
     while (fgets(buf, sizeof buf, fh)) {
 	char *s, name[IFNAMSIZ];
-	s = get_name(name, buf);    
-	ife = add_interface(name);
+	s = get_name(name, buf);
+	ife = if_cache_add(name);
 	get_dev_fields(s, ife);
 	ife->statistics_valid = 1;
 	if (target && !strcmp(target,name))
@@ -359,7 +370,6 @@ static int if_readlist_proc(char *target)
     if (ferror(fh)) {
 	perror(_PATH_PROCNET_DEV);
 	err = -1;
-	proc_read = 0; 
     }
 
 #if 0
@@ -369,13 +379,23 @@ static int if_readlist_proc(char *target)
     return err;
 }
 
-int if_readlist(void) 
-{ 
-    int err = if_readlist_proc(NULL); 
-    if (!err)
-	    err = if_readconf();
-    return err;
-} 
+int if_readlist(void)
+{
+    /* caller will/should check not to call this too often
+     *   (i.e. only if if_list_all == 0
+     */
+    int proc_err, conf_err;
+
+    proc_err = if_readlist_proc(NULL);
+    conf_err = if_readconf();
+
+    if_list_all = 1;
+
+    if (proc_err < 0 && conf_err < 0)
+        return -1;
+    else
+        return 0;
+}
 
 /* Support for fetching an IPX address */
 
@@ -392,14 +412,14 @@ int if_fetch(struct interface *ife)
 {
     struct ifreq ifr;
     int fd;
-    char *ifname = ife->name; 
+    char *ifname = ife->name;
 
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)
 	return (-1);
     ife->flags = ifr.ifr_flags;
 
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(skfd, SIOCGIFHWADDR, &ifr) < 0)
 	memset(ife->hwaddr, 0, 32);
     else
@@ -407,53 +427,47 @@ int if_fetch(struct interface *ife)
 
     ife->type = ifr.ifr_hwaddr.sa_family;
 
-    strcpy(ifr.ifr_name, ifname);
-    if (ioctl(skfd, SIOCGIFMETRIC, &ifr) < 0)
-	ife->metric = 0;
-    else
-	ife->metric = ifr.ifr_metric;
-
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(skfd, SIOCGIFMTU, &ifr) < 0)
 	ife->mtu = 0;
     else
 	ife->mtu = ifr.ifr_mtu;
 
-#ifdef HAVE_HWSLIP
+#if HAVE_HWSLIP
     if (ife->type == ARPHRD_SLIP || ife->type == ARPHRD_CSLIP ||
 	ife->type == ARPHRD_SLIP6 || ife->type == ARPHRD_CSLIP6 ||
 	ife->type == ARPHRD_ADAPT) {
 #ifdef SIOCGOUTFILL
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (ioctl(skfd, SIOCGOUTFILL, &ifr) < 0)
 	    ife->outfill = 0;
 	else
-	    ife->outfill = (unsigned int) ifr.ifr_data;
+	    ife->outfill = (unsigned long) ifr.ifr_data;
 #endif
 #ifdef SIOCGKEEPALIVE
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (ioctl(skfd, SIOCGKEEPALIVE, &ifr) < 0)
 	    ife->keepalive = 0;
 	else
-	    ife->keepalive = (unsigned int) ifr.ifr_data;
+	    ife->keepalive = (unsigned long) ifr.ifr_data;
 #endif
     }
 #endif
 
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0)
 	memset(&ife->map, 0, sizeof(struct ifmap));
     else
 	memcpy(&ife->map, &ifr.ifr_map, sizeof(struct ifmap));
 
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0)
 	memset(&ife->map, 0, sizeof(struct ifmap));
     else
 	ife->map = ifr.ifr_map;
 
 #ifdef HAVE_TXQUEUELEN
-    strcpy(ifr.ifr_name, ifname);
+    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(skfd, SIOCGIFTXQLEN, &ifr) < 0)
 	ife->tx_queue_len = -1;	/* unknown value */
     else
@@ -466,24 +480,24 @@ int if_fetch(struct interface *ife)
     /* IPv4 address? */
     fd = get_socket_for_af(AF_INET);
     if (fd >= 0) {
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	ifr.ifr_addr.sa_family = AF_INET;
 	if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
 	    ife->has_ip = 1;
 	    ife->addr = ifr.ifr_addr;
-	    strcpy(ifr.ifr_name, ifname);
+	    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	    if (ioctl(fd, SIOCGIFDSTADDR, &ifr) < 0)
 	        memset(&ife->dstaddr, 0, sizeof(struct sockaddr));
 	    else
 	        ife->dstaddr = ifr.ifr_dstaddr;
 
-	    strcpy(ifr.ifr_name, ifname);
+	    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	    if (ioctl(fd, SIOCGIFBRDADDR, &ifr) < 0)
 	        memset(&ife->broadaddr, 0, sizeof(struct sockaddr));
 	    else
 		ife->broadaddr = ifr.ifr_broadaddr;
 
-	    strcpy(ifr.ifr_name, ifname);
+	    safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	    if (ioctl(fd, SIOCGIFNETMASK, &ifr) < 0)
 		memset(&ife->netmask, 0, sizeof(struct sockaddr));
 	    else
@@ -497,7 +511,7 @@ int if_fetch(struct interface *ife)
     /* DDP address maybe ? */
     fd = get_socket_for_af(AF_APPLETALK);
     if (fd >= 0) {
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
 	    ife->ddpaddr = ifr.ifr_addr;
 	    ife->has_ddp = 1;
@@ -509,22 +523,22 @@ int if_fetch(struct interface *ife)
     /* Look for IPX addresses with all framing types */
     fd = get_socket_for_af(AF_IPX);
     if (fd >= 0) {
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (!ipx_getaddr(fd, IPX_FRAME_ETHERII, &ifr)) {
 	    ife->has_ipx_bb = 1;
 	    ife->ipxaddr_bb = ifr.ifr_addr;
 	}
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (!ipx_getaddr(fd, IPX_FRAME_SNAP, &ifr)) {
 	    ife->has_ipx_sn = 1;
 	    ife->ipxaddr_sn = ifr.ifr_addr;
 	}
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (!ipx_getaddr(fd, IPX_FRAME_8023, &ifr)) {
 	    ife->has_ipx_e3 = 1;
 	    ife->ipxaddr_e3 = ifr.ifr_addr;
 	}
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (!ipx_getaddr(fd, IPX_FRAME_8022, &ifr)) {
 	    ife->has_ipx_e2 = 1;
 	    ife->ipxaddr_e2 = ifr.ifr_addr;
@@ -536,7 +550,7 @@ int if_fetch(struct interface *ife)
     /* Econet address maybe? */
     fd = get_socket_for_af(AF_ECONET);
     if (fd >= 0) {
-	strcpy(ifr.ifr_name, ifname);
+	safe_strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
 	if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
 	    ife->ecaddr = ifr.ifr_addr;
 	    ife->has_econet = 1;
@@ -548,29 +562,29 @@ int if_fetch(struct interface *ife)
 }
 
 int do_if_fetch(struct interface *ife)
-{ 
+{
     if (if_fetch(ife) < 0) {
-	char *errmsg; 
-	if (errno == ENODEV) { 
-	    /* Give better error message for this case. */ 
-	    errmsg = _("Device not found"); 
-	} else { 
-	    errmsg = strerror(errno); 
+	char *errmsg;
+	if (errno == ENODEV) {
+	    /* Give better error message for this case. */
+	    errmsg = _("Device not found");
+	} else {
+	    errmsg = strerror(errno);
 	}
   	fprintf(stderr, _("%s: error fetching interface information: %s\n"),
 		ife->name, errmsg);
 	return -1;
     }
-    return 0; 
+    return 0;
 }
 
 int do_if_print(struct interface *ife, void *cookie)
 {
     int *opt_a = (int *) cookie;
-    int res; 
+    int res;
 
-    res = do_if_fetch(ife); 
-    if (res >= 0) {   
+    res = do_if_fetch(ife);
+    if (res >= 0) {
 	if ((ife->flags & IFF_UP) || *opt_a)
 	    ife_print(ife);
     }
@@ -579,11 +593,11 @@ int do_if_print(struct interface *ife, void *cookie)
 
 void ife_print_short(struct interface *ptr)
 {
-    printf("%-5.5s ", ptr->name);
-    printf("%5d %3d", ptr->mtu, ptr->metric);
+    printf("%-8.8s ", ptr->name);
+    printf("%5d ", ptr->mtu);
     /* If needed, display the interface statistics. */
     if (ptr->statistics_valid) {
-	printf("%8llu %6lu %6lu %6lu",
+	printf("%8llu %6lu %6lu %-6lu ",
 	       ptr->stats.rx_packets, ptr->stats.rx_errors,
 	       ptr->stats.rx_dropped, ptr->stats.rx_fifo_errors);
 	printf("%8llu %6lu %6lu %6lu ",
@@ -636,8 +650,9 @@ void ife_print_long(struct interface *ptr)
     int hf;
     int can_compress = 0;
     unsigned long long rx, tx, short_rx, short_tx;
-    char Rext[5]="b";
-    char Text[5]="b";
+    const char *Rext = "B";
+    const char *Text = "B";
+    static char flags[200];
 
 #if HAVE_AFIPX
     static struct aftype *ipxtype = NULL;
@@ -650,7 +665,7 @@ void ife_print_long(struct interface *ptr)
 #endif
 #if HAVE_AFINET6
     FILE *f;
-    char addr6[40], devname[20];
+    char addr6[40], devname[21];
     struct sockaddr_in6 sap;
     int plen, scope, dad_status, if_idx;
     extern struct aftype inet6_aftype;
@@ -663,39 +678,79 @@ void ife_print_long(struct interface *ptr)
 
     hf = ptr->type;
 
+#if HAVE_HWSLIP
     if (hf == ARPHRD_CSLIP || hf == ARPHRD_CSLIP6)
 	can_compress = 1;
+#endif
 
     hw = get_hwntype(hf);
     if (hw == NULL)
 	hw = get_hwntype(-1);
 
-    printf(_("%-9.9s Link encap:%s  "), ptr->name, hw->title);
-    /* For some hardware types (eg Ash, ATM) we don't print the 
-       hardware address if it's null.  */
-    if (hw->print != NULL && (! (hw_null_address(hw, ptr->hwaddr) &&
-				  hw->suppress_null_addr)))
-	printf(_("HWaddr %s  "), hw->print(ptr->hwaddr));
-#ifdef IFF_PORTSEL
-    if (ptr->flags & IFF_PORTSEL) {
-	printf(_("Media:%s"), if_port_text[ptr->map.port][0]);
-	if (ptr->flags & IFF_AUTOMEDIA)
-	    printf(_("(auto)"));
-    }
+    sprintf(flags, "flags=%d<", ptr->flags);
+    /* DONT FORGET TO ADD THE FLAGS IN ife_print_short, too */
+    if (ptr->flags == 0)
+	strcat(flags,">");
+    if (ptr->flags & IFF_UP)
+	strcat(flags,_("UP,"));
+    if (ptr->flags & IFF_BROADCAST)
+	strcat(flags,_("BROADCAST,"));
+    if (ptr->flags & IFF_DEBUG)
+	strcat(flags,_("DEBUG,"));
+    if (ptr->flags & IFF_LOOPBACK)
+	strcat(flags,_("LOOPBACK,"));
+    if (ptr->flags & IFF_POINTOPOINT)
+	strcat(flags,_("POINTOPOINT,"));
+    if (ptr->flags & IFF_NOTRAILERS)
+	strcat(flags,_("NOTRAILERS,"));
+    if (ptr->flags & IFF_RUNNING)
+	strcat(flags,_("RUNNING,"));
+    if (ptr->flags & IFF_NOARP)
+	strcat(flags,_("NOARP,"));
+    if (ptr->flags & IFF_PROMISC)
+	strcat(flags,_("PROMISC,"));
+    if (ptr->flags & IFF_ALLMULTI)
+	strcat(flags,_("ALLMULTI,"));
+    if (ptr->flags & IFF_SLAVE)
+	strcat(flags,_("SLAVE,"));
+    if (ptr->flags & IFF_MASTER)
+	strcat(flags,_("MASTER,"));
+    if (ptr->flags & IFF_MULTICAST)
+	strcat(flags,_("MULTICAST,"));
+#ifdef HAVE_DYNAMIC
+    if (ptr->flags & IFF_DYNAMIC)
+	strcat(flags,_("DYNAMIC,"));
+#endif
+    /* DONT FORGET TO ADD THE FLAGS IN ife_print_short */
+    if (flags[strlen(flags)-1] == ',')
+      flags[strlen(flags)-1] = '>';
+    else
+      flags[strlen(flags)-1] = 0;
+
+
+    printf(_("%s: %s  mtu %d"),
+	   ptr->name, flags, ptr->mtu);
+#ifdef SIOCSKEEPALIVE
+    if (ptr->outfill || ptr->keepalive)
+	printf(_("  outfill %d  keepalive %d"),
+	       ptr->outfill, ptr->keepalive);
 #endif
     printf("\n");
 
+
+
 #if HAVE_AFINET
     if (ptr->has_ip) {
-	printf(_("          %s addr:%s "), ap->name,
+	printf(_("        %s %s"), ap->name,
 	       ap->sprint(&ptr->addr, 1));
-	if (ptr->flags & IFF_POINTOPOINT) {
-	    printf(_(" P-t-P:%s "), ap->sprint(&ptr->dstaddr, 1));
-	}
+	printf(_("  netmask %s"), ap->sprint(&ptr->netmask, 1));
 	if (ptr->flags & IFF_BROADCAST) {
-	    printf(_(" Bcast:%s "), ap->sprint(&ptr->broadaddr, 1));
+	    printf(_("  broadcast %s"), ap->sprint(&ptr->broadaddr, 1));
 	}
-	printf(_(" Mask:%s\n"), ap->sprint(&ptr->netmask, 1));
+	if (ptr->flags & IFF_POINTOPOINT) {
+	    printf(_("  destination %s"), ap->sprint(&ptr->dstaddr, 1));
+	}
+	printf("\n");
     }
 #endif
 
@@ -703,7 +758,7 @@ void ife_print_long(struct interface *ptr)
     /* FIXME: should be integrated into interface.c.   */
 
     if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) {
-	while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",
+	while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %08x %02x %02x %02x %20s\n",
 		      addr6p[0], addr6p[1], addr6p[2], addr6p[3],
 		      addr6p[4], addr6p[5], addr6p[6], addr6p[7],
 		  &if_idx, &plen, &scope, &dad_status, devname) != EOF) {
@@ -712,29 +767,30 @@ void ife_print_long(struct interface *ptr)
 			addr6p[0], addr6p[1], addr6p[2], addr6p[3],
 			addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
 		inet6_aftype.input(1, addr6, (struct sockaddr *) &sap);
-		printf(_("          inet6 addr: %s/%d"),
-		 inet6_aftype.sprint((struct sockaddr *) &sap, 1), plen);
-		printf(_(" Scope:"));
-		switch (scope) {
-		case 0:
-		    printf(_("Global"));
-		    break;
-		case IPV6_ADDR_LINKLOCAL:
-		    printf(_("Link"));
-		    break;
-		case IPV6_ADDR_SITELOCAL:
-		    printf(_("Site"));
-		    break;
-		case IPV6_ADDR_COMPATv4:
-		    printf(_("Compat"));
-		    break;
-		case IPV6_ADDR_LOOPBACK:
-		    printf(_("Host"));
-		    break;
-		default:
-		    printf(_("Unknown"));
+		printf(_("        %s %s  prefixlen %d"),
+			inet6_aftype.name,
+			inet6_aftype.sprint((struct sockaddr *) &sap, 1),
+			plen);
+		printf(_("  scopeid 0x%x"), scope);
+
+		flags[0] = '<'; flags[1] = 0;
+		if (scope & IPV6_ADDR_COMPATv4) {
+		    	strcat(flags, _("compat,"));
+		    	scope -= IPV6_ADDR_COMPATv4;
 		}
-		printf("\n");
+		if (scope == 0)
+			strcat(flags, _("global,"));
+		if (scope & IPV6_ADDR_LINKLOCAL)
+			strcat(flags, _("link,"));
+		if (scope & IPV6_ADDR_SITELOCAL)
+			strcat(flags, _("site,"));
+		if (scope & IPV6_ADDR_LOOPBACK)
+			strcat(flags, _("host,"));
+		if (flags[strlen(flags)-1] == ',')
+			flags[strlen(flags)-1] = '>';
+		else
+			flags[strlen(flags)-1] = 0;
+		printf("%s\n", flags);
 	    }
 	}
 	fclose(f);
@@ -747,17 +803,17 @@ void ife_print_long(struct interface *ptr)
 
     if (ipxtype != NULL) {
 	if (ptr->has_ipx_bb)
-	    printf(_("          IPX/Ethernet II addr:%s\n"),
-		   ipxtype->sprint(&ptr->ipxaddr_bb, 1));
+	    printf(_("        %s Ethernet-II   %s\n"),
+		   ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_bb, 1));
 	if (ptr->has_ipx_sn)
-	    printf(_("          IPX/Ethernet SNAP addr:%s\n"),
-		   ipxtype->sprint(&ptr->ipxaddr_sn, 1));
+	    printf(_("        %s Ethernet-SNAP %s\n"),
+		   ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_sn, 1));
 	if (ptr->has_ipx_e2)
-	    printf(_("          IPX/Ethernet 802.2 addr:%s\n"),
-		   ipxtype->sprint(&ptr->ipxaddr_e2, 1));
+	    printf(_("        %s Ethernet802.2 %s\n"),
+		   ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_e2, 1));
 	if (ptr->has_ipx_e3)
-	    printf(_("          IPX/Ethernet 802.3 addr:%s\n"),
-		   ipxtype->sprint(&ptr->ipxaddr_e3, 1));
+	    printf(_("        %s Ethernet802.3 %s\n"),
+		   ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_e3, 1));
     }
 #endif
 
@@ -766,7 +822,7 @@ void ife_print_long(struct interface *ptr)
 	ddptype = get_afntype(AF_APPLETALK);
     if (ddptype != NULL) {
 	if (ptr->has_ddp)
-	    printf(_("          EtherTalk Phase 2 addr:%s\n"), ddptype->sprint(&ptr->ddpaddr, 1));
+	    printf(_("        %s %s\n"), ddptype->name, ddptype->sprint(&ptr->ddpaddr, 1));
     }
 #endif
 
@@ -775,53 +831,30 @@ void ife_print_long(struct interface *ptr)
 	ectype = get_afntype(AF_ECONET);
     if (ectype != NULL) {
 	if (ptr->has_econet)
-	    printf(_("          econet addr:%s\n"), ectype->sprint(&ptr->ecaddr, 1));
+	    printf(_("        %s %s\n"), ectype->name, ectype->sprint(&ptr->ecaddr, 1));
     }
 #endif
 
-    printf("          ");
-    /* DONT FORGET TO ADD THE FLAGS IN ife_print_short, too */
-    if (ptr->flags == 0)
-	printf(_("[NO FLAGS] "));
-    if (ptr->flags & IFF_UP)
-	printf(_("UP "));
-    if (ptr->flags & IFF_BROADCAST)
-	printf(_("BROADCAST "));
-    if (ptr->flags & IFF_DEBUG)
-	printf(_("DEBUG "));
-    if (ptr->flags & IFF_LOOPBACK)
-	printf(_("LOOPBACK "));
-    if (ptr->flags & IFF_POINTOPOINT)
-	printf(_("POINTOPOINT "));
-    if (ptr->flags & IFF_NOTRAILERS)
-	printf(_("NOTRAILERS "));
-    if (ptr->flags & IFF_RUNNING)
-	printf(_("RUNNING "));
-    if (ptr->flags & IFF_NOARP)
-	printf(_("NOARP "));
-    if (ptr->flags & IFF_PROMISC)
-	printf(_("PROMISC "));
-    if (ptr->flags & IFF_ALLMULTI)
-	printf(_("ALLMULTI "));
-    if (ptr->flags & IFF_SLAVE)
-	printf(_("SLAVE "));
-    if (ptr->flags & IFF_MASTER)
-	printf(_("MASTER "));
-    if (ptr->flags & IFF_MULTICAST)
-	printf(_("MULTICAST "));
-#ifdef HAVE_DYNAMIC
-    if (ptr->flags & IFF_DYNAMIC)
-	printf(_("DYNAMIC "));
-#endif
-    /* DONT FORGET TO ADD THE FLAGS IN ife_print_short */
-    printf(_(" MTU:%d  Metric:%d"),
-	   ptr->mtu, ptr->metric ? ptr->metric : 1);
-#ifdef SIOCSKEEPALIVE
-    if (ptr->outfill || ptr->keepalive)
-	printf(_("  Outfill:%d  Keepalive:%d"),
-	       ptr->outfill, ptr->keepalive);
+    /* For some hardware types (eg Ash, ATM) we don't print the
+       hardware address if it's null.  */
+    if (hw->print != NULL && (! (hw_null_address(hw, ptr->hwaddr) &&
+				  hw->suppress_null_addr)))
+	printf(_("        %s %s"), hw->name, hw->print(ptr->hwaddr));
+    else
+	printf(_("        %s"), hw->name);
+    if (ptr->tx_queue_len != -1)
+    	printf(_("  txqueuelen %d"), ptr->tx_queue_len);
+    printf("  (%s)\n", hw->title);
+
+#ifdef IFF_PORTSEL
+    if (ptr->flags & IFF_PORTSEL) {
+	printf(_("        media %s"), if_port_text[ptr->map.port][0]);
+	if (ptr->flags & IFF_AUTOMEDIA)
+	    printf(_("autoselect"));
+    	printf("\n");
+    }
 #endif
-    printf("\n");
+
 
     /* If needed, display the interface statistics. */
 
@@ -830,55 +863,87 @@ void ife_print_long(struct interface *ptr)
 	 *      not for the aliases, although strictly speaking they're shared
 	 *      by all addresses.
 	 */
-	printf("          ");
-
-	printf(_("RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"),
-	       ptr->stats.rx_packets, ptr->stats.rx_errors,
-	       ptr->stats.rx_dropped, ptr->stats.rx_fifo_errors,
-	       ptr->stats.rx_frame_errors);
-	if (can_compress)
-	    printf(_("             compressed:%lu\n"), ptr->stats.rx_compressed);
-
-	rx = ptr->stats.rx_bytes;  
+	rx = ptr->stats.rx_bytes;
+	short_rx = rx * 10;
+	if (rx > 1125899906842624ull) {
+	    short_rx /= 1125899906842624ull;
+	    Rext = "PiB";
+	} else if (rx > 1099511627776ull) {
+	    short_rx /= 1099511627776ull;
+	    Rext = "TiB";
+	} else if (rx > 1073741824ull) {
+	    short_rx /= 1073741824ull;
+	    Rext = "GiB";
+	} else if (rx > 1048576) {
+	    short_rx /= 1048576;
+	    Rext = "MiB";
+	} else if (rx > 1024) {
+	    short_rx /= 1024;
+	    Rext = "KiB";
+	}
 	tx = ptr->stats.tx_bytes;
-	short_rx = rx * 10;  
 	short_tx = tx * 10;
-	if (rx > 1048576) { short_rx /= 1048576;  strcpy(Rext, "Mb"); }
-	else if (rx > 1024) { short_rx /= 1024;  strcpy(Rext, "Kb"); }
-	if (tx > 1048576) { short_tx /= 1048576;  strcpy(Text, "Mb"); }
-	else if (tx > 1024) { short_tx /= 1024;  strcpy(Text, "Kb"); }
+	if (tx > 1125899906842624ull) {
+	    short_tx /= 1125899906842624ull;
+	    Text = "PiB";
+	} else 	if (tx > 1099511627776ull) {
+	    short_tx /= 1099511627776ull;
+	    Text = "TiB";
+	} else if (tx > 1073741824ull) {
+	    short_tx /= 1073741824ull;
+	    Text = "GiB";
+	} else if (tx > 1048576) {
+	    short_tx /= 1048576;
+	    Text = "MiB";
+	} else if (tx > 1024) {
+	    short_tx /= 1024;
+	    Text = "KiB";
+	}
 
-	printf("          ");
-	printf(_("TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"),
-	       ptr->stats.tx_packets, ptr->stats.tx_errors,
+	printf("        ");
+	printf(_("RX packets %llu  bytes %llu (%lu.%lu %s)\n"),
+		ptr->stats.rx_packets,
+	       rx, (unsigned long)(short_rx / 10),
+	       (unsigned long)(short_rx % 10), Rext);
+	if (can_compress) {
+  	    printf("        ");
+	    printf(_("RX compressed:%lu\n"), ptr->stats.rx_compressed);
+	}
+	printf("        ");
+	printf(_("RX errors %lu  dropped %lu  overruns %lu  frame %lu\n"),
+	       ptr->stats.rx_errors, ptr->stats.rx_dropped,
+	       ptr->stats.rx_fifo_errors, ptr->stats.rx_frame_errors);
+
+
+	printf("        ");
+	printf(_("TX packets %llu  bytes %llu (%lu.%lu %s)\n"),
+		ptr->stats.tx_packets,
+	        tx, (unsigned long)(short_tx / 10),
+	        (unsigned long)(short_tx % 10), Text);
+	if (can_compress) {
+  	    printf("        ");
+	    printf(_("TX compressed %lu\n"), ptr->stats.tx_compressed);
+	}
+	printf("        ");
+	printf(_("TX errors %lu  dropped %lu overruns %lu  carrier %lu  collisions %lu\n"),
+	       ptr->stats.tx_errors,
 	       ptr->stats.tx_dropped, ptr->stats.tx_fifo_errors,
-	       ptr->stats.tx_carrier_errors);
-	printf(_("          collisions:%lu "), ptr->stats.collisions);
-	if (can_compress)
-	    printf(_("compressed:%lu "), ptr->stats.tx_compressed);
-	if (ptr->tx_queue_len != -1)
-	    printf(_("txqueuelen:%d "), ptr->tx_queue_len);
-	printf("\n          ");
-	printf(_("RX bytes:%llu (%lu.%lu %s)  TX bytes:%llu (%lu.%lu %s)\n"),
-	       rx, (unsigned long)(short_rx / 10), 
-	       (unsigned long)(short_rx % 10), Rext, 
-	       tx, (unsigned long)(short_tx / 10), 
-	       (unsigned long)(short_tx % 10), Text);
+	       ptr->stats.tx_carrier_errors, ptr->stats.collisions);
     }
 
     if ((ptr->map.irq || ptr->map.mem_start || ptr->map.dma ||
-	 ptr->map.base_addr)) {
-	printf("          ");
+	 ptr->map.base_addr >= 0x100)) {
+	printf("        device ");
 	if (ptr->map.irq)
-	    printf(_("Interrupt:%d "), ptr->map.irq);
-	if (ptr->map.base_addr >= 0x100)	/* Only print devices using it for 
+	    printf(_("interrupt %d  "), ptr->map.irq);
+	if (ptr->map.base_addr >= 0x100)	/* Only print devices using it for
 						   I/O maps */
-	    printf(_("Base address:0x%x "), ptr->map.base_addr);
+	    printf(_("base 0x%x  "), ptr->map.base_addr);
 	if (ptr->map.mem_start) {
-	    printf(_("Memory:%lx-%lx "), ptr->map.mem_start, ptr->map.mem_end);
+	    printf(_("memory 0x%lx-%lx  "), ptr->map.mem_start, ptr->map.mem_end);
 	}
 	if (ptr->map.dma)
-	    printf(_("DMA chan:%x "), ptr->map.dma);
+	    printf(_("  dma 0x%x"), ptr->map.dma);
 	printf("\n");
     }
     printf("\n");
diff --git a/lib/ipx.c b/lib/ipx.c
index 0e760a3..837788c 100644
--- a/lib/ipx.c
+++ b/lib/ipx.c
@@ -42,7 +42,7 @@
 #endif
 
 /* Display a ipx domain address. */
-static char *IPX_print(unsigned char *ptr)
+static const char *IPX_print(const char *ptr)
 {
     static char buff[64];
     struct sockaddr_ipx *sipx = (struct sockaddr_ipx *) (ptr - 2);
@@ -73,7 +73,7 @@ static char *IPX_print(unsigned char *ptr)
 
 
 /* Display a ipx domain address. */
-static char *IPX_sprint(struct sockaddr *sap, int numeric)
+static const char *IPX_sprint(struct sockaddr *sap, int numeric)
 {
     static char buf[64];
 
@@ -87,12 +87,10 @@ static int IPX_getsock(char *bufp, struct sockaddr *sap)
 {
     char *sp = bufp, *bp;
     unsigned int i;
-    unsigned char val;
     struct sockaddr_ipx *sipx = (struct sockaddr_ipx *) sap;
 
     sipx->sipx_port = 0;
 
-    val = 0;
     bp = (char *) sipx->sipx_node;
     for (i = 0; i < sizeof(sipx->sipx_node); i++) {
 	*sp = toupper(*sp);
@@ -133,6 +131,9 @@ static int IPX_input(int type, char *bufp, struct sockaddr *sap)
     char *ep;
     int nbo;
 
+    if (!sai)
+    	return (-1);
+
     sai->sipx_family = AF_IPX;
     sai->sipx_network = htonl(0);
     sai->sipx_node[0] = sai->sipx_node[1] = sai->sipx_node[2] =
diff --git a/lib/ipx_gr.c b/lib/ipx_gr.c
index 3d7ef1d..09c8dcd 100644
--- a/lib/ipx_gr.c
+++ b/lib/ipx_gr.c
@@ -27,6 +27,7 @@
 #include "net-support.h"
 #include "pathnames.h"
 #include "intl.h"
+#include "util.h"
 
 /* UGLY */
 
@@ -38,25 +39,32 @@ int IPX_rprint(int options)
     char net[128], router_net[128];
     char router_node[128];
     int num;
-    FILE *fp = fopen(_PATH_PROCNET_IPX_ROUTE, "r");
+    FILE *fp;
     struct aftype *ap;
     struct sockaddr sa;
 
-    if ((ap = get_afntype(AF_IPX)) == NULL) {
-	EINTERN("lib/ipx_rt.c", "AF_IPX missing");
-	return (-1);
+    fp = fopen(_PATH_PROCNET_IPX_ROUTE1, "r");
+
+    if (!fp) {
+        fp = fopen(_PATH_PROCNET_IPX_ROUTE2, "r");
     }
 
     if (!fp) {
-        perror(_PATH_PROCNET_IPX_ROUTE);
-        printf(_("IPX not configured in this system.\n"));
+        perror(NULL);
+        printf(_("IPX routing not in file %s or %s found.\n"), _PATH_PROCNET_IPX_ROUTE1, _PATH_PROCNET_IPX_ROUTE2);
 	return 1;
     }
 
+    if ((ap = get_afntype(AF_IPX)) == NULL) {
+	EINTERN("lib/ipx_rt.c", "AF_IPX missing");
+	return (-1);
+    }
+
     printf(_("Kernel IPX routing table\n"));	/* xxx */
     printf(_("Destination               Router Net                Router Node\n"));
 
-    fgets(buff, 1023, fp);
+    if (fgets(buff, 1023, fp))
+	/* eat line */;
 
     while (fgets(buff, 1023, fp)) {
 	num = sscanf(buff, "%s %s %s", net, router_net, router_node);
@@ -65,15 +73,15 @@ int IPX_rprint(int options)
 
 	/* Fetch and resolve the Destination */
 	(void) ap->input(5, net, &sa);
-	strcpy(net, ap->sprint(&sa, numeric));
+	safe_strncpy(net, ap->sprint(&sa, numeric), sizeof(net));
 
 	/* Fetch and resolve the Router Net */
 	(void) ap->input(5, router_net, &sa);
-	strcpy(router_net, ap->sprint(&sa, numeric));
+	safe_strncpy(router_net, ap->sprint(&sa, numeric), sizeof(router_net));
 
 	/* Fetch and resolve the Router Node */
 	(void) ap->input(2, router_node, &sa);
-	strcpy(router_node, ap->sprint(&sa, numeric));
+	safe_strncpy(router_node, ap->sprint(&sa, numeric), sizeof(router_node));
 
 	printf("%-25s %-25s %-25s\n", net, router_net, router_node);
     }
diff --git a/lib/irda.c b/lib/irda.c
index fa147fe..3658673 100644
--- a/lib/irda.c
+++ b/lib/irda.c
@@ -1,29 +1,31 @@
 /*********************************************************************
- *                
+ *
  * Filename:      irda.c
- * Version:       0.1
- * Description:   A first attempt to make ifconfig understand IrDA
+ * Version:       0.2
+ * Description:   A second attempt to make ifconfig understand IrDA
  * Status:        Experimental.
  * Author:        Dag Brattli <dagb@cs.uit.no>
  * Created at:    Wed Apr 21 09:03:09 1999
  * Modified at:   Wed Apr 21 09:17:05 1999
  * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
+ * Modified at:   Wed May  1 11:51:44 CEST 2002
+ * Modified by:   Christoph Bartelmus <christoph@bartelmus.de>
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of
  *     the License, or (at your option) any later version.
- * 
+ *
  *     This program is distributed in the hope that it will be useful,
  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, write to the Free Software 
- *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
+ *
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  *     MA 02111-1307 USA
- *     
+ *
  ********************************************************************/
 
 #include "config.h"
@@ -57,11 +59,11 @@
  *    Print hardware address of interface
  *
  */
-static char *irda_print(unsigned char *ptr)
+static const char *irda_print(const char *ptr)
 {
-    static char buff[8];
+    static char buff[12];
 
-    sprintf(&buff[strlen(buff)], "%02x:%02x:%02x:%02x", ptr[3], ptr[2], 
+    snprintf(buff, 12, "%02x:%02x:%02x:%02x", ptr[3], ptr[2],
 	    ptr[1], ptr[0]);
 
     return (buff);
diff --git a/lib/loopback.c b/lib/loopback.c
index 0f08ac2..1b7e9cc 100644
--- a/lib/loopback.c
+++ b/lib/loopback.c
@@ -32,7 +32,7 @@
 #include "util.h"
 
 /* Display an UNSPEC address. */
-static char *pr_unspec(unsigned char *ptr)
+static const char *pr_unspec(const char *ptr)
 {
     static char buff[64];
     char *pos;
diff --git a/lib/masq_info.c b/lib/masq_info.c
index 45ca689..3a97a98 100644
--- a/lib/masq_info.c
+++ b/lib/masq_info.c
@@ -6,7 +6,7 @@
  *              NET-3 Networking Distribution for the LINUX operating
  *              system. (net-tools, net-drivers)
  *
- * Version:     $Id: masq_info.c,v 1.7 2000/10/08 01:00:44 ecki Exp $
+ * Version:     $Id: masq_info.c,v 1.8 2009/09/06 22:52:01 vapier Exp $
  *
  * Author:      Bernd 'eckes' Eckenfels <net-tools@lina.inka.de>
  *              Copyright 1999 Bernd Eckenfels, Germany
@@ -119,7 +119,9 @@ static int read_masqinfo(FILE * f, struct masq *mslist, int nmslist)
 	ms->src.sin_family = AF_INET;
 	ms->dst.sin_family = AF_INET;
 
-	if (strcmp("TCP", buf) == 0)
+	if (strcmp("IP", buf) == 0)
+	    ms->proto = "ip";
+	else if (strcmp("TCP", buf) == 0)
 	    ms->proto = "tcp";
 	else if (strcmp("UDP", buf) == 0)
 	    ms->proto = "udp";
@@ -206,10 +208,9 @@ int ip_masq_info(int numeric_host, int numeric_port, int ext)
 	}
 	for (i = 0; i < ntotal; i++)
 	    print_masq(&(mslist[i]), numeric_host, numeric_port, ext);
-	if (mslist)
-	    free(mslist);
-
     }
+
+    free(mslist);
     return 0;
 }
 #endif
diff --git a/lib/net-features.h b/lib/net-features.h
index 0de2730..569f4a5 100644
--- a/lib/net-features.h
+++ b/lib/net-features.h
@@ -20,7 +20,7 @@
  *              your option) any later version.
  */
 
-/* 
+/*
  *    This needs to be included AFTER the KErnel Header Files
  *      one of the FEATURE_ should be defined to get the Feature Variable
  *      definition included
@@ -117,6 +117,9 @@ static char *Features =
 "-I18N"
 #endif				/* I18N */
 
+#if HAVE_SELINUX
+" +SELINUX"
+#endif
 
 "\nAF: "
 #ifdef DFLT_AF
@@ -183,6 +186,12 @@ static char *Features =
 "-"
 #endif
 "ROSE "
+#if HAVE_AFBLUETOOTH
+"+"
+#else
+"-"
+#endif
+"BLUETOOTH"
 
 "\nHW: "
 
@@ -295,6 +304,13 @@ static char *Features =
 "-"
 #endif
 "HDLC/LAPB "
+
+#if HAVE_HWEUI64
+"+"
+#else
+"-"
+#endif
+"EUI64 "
 ;
 
 
diff --git a/lib/net-support.h b/lib/net-support.h
index 568fe81..0841170 100644
--- a/lib/net-support.h
+++ b/lib/net-support.h
@@ -38,15 +38,15 @@ struct aftype {
     char *title;
     int af;
     int alen;
-    char *(*print) (unsigned char *);
-    char *(*sprint) (struct sockaddr *, int numeric);
+    const char *(*print) (const char *);
+    const char *(*sprint) (struct sockaddr *, int numeric);
     int (*input) (int type, char *bufp, struct sockaddr *);
     void (*herror) (char *text);
     int (*rprint) (int options);
     int (*rinput) (int typ, int ext, char **argv);
 
     /* may modify src */
-    int (*getmask) (char *src, struct sockaddr * mask, char *name);
+    int (*getmask) (char *src, struct sockaddr *mask, char *name);
 
     int fd;
     char *flag_file;
@@ -60,7 +60,7 @@ struct hwtype {
     char *title;
     int type;
     int alen;
-    char *(*print) (unsigned char *);
+    const char *(*print) (const char *);
     int (*input) (char *, struct sockaddr *);
     int (*activate) (int fd);
     int suppress_null_addr;
@@ -119,11 +119,12 @@ extern int IPX_rinput(int action, int flags, char **argv);
 extern int NETROM_rinput(int action, int flags, char **argv);
 extern int AX25_rinput(int action, int flags, char **argv);
 extern int X25_rinput(int action, int flags, char **argv);
+extern int ROSE_rinput(int action, int flags, char **argv);
 
 extern int aftrans_opt(const char *arg);
 extern void aftrans_def(char *tool, char *argv0, char *dflt);
 
-extern char *get_sname(int socknumber, char *proto, int numeric);
+extern const char *get_sname(int socknumber, const char *proto, int numeric);
 
 extern int flag_unx;
 extern int flag_ipx;
@@ -131,14 +132,16 @@ extern int flag_ax25;
 extern int flag_ddp;
 extern int flag_netrom;
 extern int flag_x25;
+extern int flag_rose;
 extern int flag_inet;
 extern int flag_inet6;
+extern int flag_bluetooth;
 
-extern char afname[];
+extern char afname[256];
 
 #define AFTRANS_OPTS \
 	{"ax25",	0,	0,	1}, \
-       {"x25",         0,      0,      1}, \
+	{"x25",         0,      0,      1}, \
 	{"ip",		0,	0,	1}, \
 	{"ipx",         0,	0,	1}, \
 	{"appletalk",	0,	0,	1}, \
@@ -146,9 +149,11 @@ extern char afname[];
 	{"inet",	0,	0,	1}, \
 	{"inet6",	0,	0,	1}, \
 	{"ddp",		0,	0,	1}, \
+	{"rose",	0,	0,	1}, \
 	{"unix",	0,	0,	1}, \
+	{"bluetooth",	0,	0,	1}, \
 	{"tcpip",	0,	0,	1}
-#define AFTRANS_CNT 11
+#define AFTRANS_CNT 12
 
 #define EINTERN(file, text) fprintf(stderr, \
 	_("%s: Internal Error `%s'.\n"),file,text);
@@ -163,8 +168,8 @@ extern char afname[];
 #define E_NOTFOUND	8
 #define E_SOCK		7
 #define E_LOOKUP	6
-#define E_VERSION	5
-#define E_USAGE		4
+#define E_VERSION	EXIT_SUCCESS
+#define E_USAGE		EXIT_SUCCESS
 #define E_OPTERR	3
 #define E_INTERN	2
 #define E_NOSUPP	1
@@ -234,7 +239,7 @@ extern char afname[];
 /* this is a 2.0.36 flag from /usr/src/linux/include/linux/route.h */
 #define RTF_NOTCACHED   0x0400          /* this route isn't cached        */
 
-#ifdef HAVE_AFECONET
+#if HAVE_AFECONET
 #ifndef AF_ECONET
 #define AF_ECONET       19      /* Acorn Econet */
 #endif
diff --git a/lib/netrom.c b/lib/netrom.c
index 1de9dc3..dfe1ae3 100644
--- a/lib/netrom.c
+++ b/lib/netrom.c
@@ -11,7 +11,7 @@
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
- * 
+ *
  * Changes:
  * 980701 {1.21} Arnaldo Carvalho de Melo - GNU gettext instead of catgets,
  *                                          strncpy instead of strcpy for
@@ -52,7 +52,7 @@ static char netrom_errmsg[128];
 
 extern struct aftype netrom_aftype;
 
-static char *NETROM_print(unsigned char *ptr)
+static const char *NETROM_print(const char *ptr)
 {
     static char buff[8];
     int i;
@@ -71,7 +71,7 @@ static char *NETROM_print(unsigned char *ptr)
 
 
 /* Display an AX.25 socket address. */
-static char *NETROM_sprint(struct sockaddr *sap, int numeric)
+static const char *NETROM_sprint(struct sockaddr *sap, int numeric)
 {
     char buf[64];
     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
@@ -79,10 +79,15 @@ static char *NETROM_sprint(struct sockaddr *sap, int numeric)
     return (NETROM_print(((struct sockaddr_ax25 *) sap)->sax25_call.ax25_call));
 }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 static int NETROM_input(int type, char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char *orig, c;
     unsigned int i;
 
@@ -98,9 +103,8 @@ static int NETROM_input(int type, char *bufp, struct sockaddr *sap)
 	    c = toupper(c);
 	if (!(isupper(c) || isdigit(c))) {
 	    safe_strncpy(netrom_errmsg, _("Invalid callsign"), sizeof(netrom_errmsg));
-#ifdef DEBUG
-	    fprintf(stderr, "netrom_input(%s): %s !\n", netrom_errmsg, orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, "netrom_input(%s): %s !\n", netrom_errmsg, orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -111,9 +115,8 @@ static int NETROM_input(int type, char *bufp, struct sockaddr *sap)
     /* Callsign too long? */
     if ((i == 6) && (*bufp != '-') && (*bufp != '\0')) {
 	safe_strncpy(netrom_errmsg, _("Callsign too long"), sizeof(netrom_errmsg));
-#ifdef DEBUG
-	fprintf(stderr, "netrom_input(%s): %s !\n", netrom_errmsg, orig);
-#endif
+	if (_DEBUG)
+	    fprintf(stderr, "netrom_input(%s): %s !\n", netrom_errmsg, orig);
 	errno = E2BIG;
 	return (-1);
     }
@@ -131,12 +134,12 @@ static int NETROM_input(int type, char *bufp, struct sockaddr *sap)
     }
 
     /* All done. */
-#ifdef DEBUG
-    fprintf(stderr, "netrom_input(%s): ", orig);
-    for (i = 0; i < sizeof(ax25_address); i++)
-	fprintf(stderr, "%02X ", sap->sa_data[i] & 0377);
-    fprintf(stderr, "\n");
-#endif
+    if (_DEBUG) {
+	fprintf(stderr, "netrom_input(%s): ", orig);
+	for (i = 0; i < sizeof(ax25_address); i++)
+	    fprintf(stderr, "%02X ", sap->sa_data[i] & 0377);
+	fprintf(stderr, "\n");
+    }
 
     return (0);
 }
diff --git a/lib/netrom_gr.c b/lib/netrom_gr.c
index adf54b2..ec82fe8 100644
--- a/lib/netrom_gr.c
+++ b/lib/netrom_gr.c
@@ -10,7 +10,7 @@
  *
  * Changes:
  * 980701 {0.02} Arnaldo Carvalho de Melo   GNU gettext instead of catgets
- * 
+ *
  *
  *              This program is free software; you can redistribute it
  *              and/or  modify it under  the terms of  the GNU General
@@ -39,9 +39,7 @@ int NETROM_rprint(int options)
     /*int ext = options & FLAG_EXT;
        int numeric = options & FLAG_NUM_HOST; */
 
-    f1 = fopen(_PATH_PROCNET_NR_NODES, "r");
     if (!f1) perror(_PATH_PROCNET_NR_NODES);
-    f2 = fopen(_PATH_PROCNET_NR_NEIGH, "r");
     if (!f2) perror(_PATH_PROCNET_NR_NEIGH);
 
     if (f1 == NULL || f2 == NULL) {
@@ -50,7 +48,8 @@ int NETROM_rprint(int options)
     }
     printf(_("Kernel NET/ROM routing table\n"));
     printf(_("Destination  Mnemonic  Quality  Neighbour  Iface\n"));
-    fgets(buffer, 256, f1);
+    if (fgets(buffer, 256, f1))
+	/* eat line */;
     while (fgets(buffer, 256, f1)) {
 	buffer[9] = 0;
 	buffer[17] = 0;
@@ -60,7 +59,8 @@ int NETROM_rprint(int options)
 	qual = atoi(buffer + 24 + 15 * w);
 	n = atoi(buffer + 32 + 15 * w);
 	rewind(f2);
-	fgets(buffer, 256, f2);
+	if (fgets(buffer, 256, f2))
+	    /* eat line */;
 	while (fgets(buffer, 256, f2)) {
 	    if (atoi(buffer) == n) {
 		buffer[15] = 0;
diff --git a/lib/nstrcmp.c b/lib/nstrcmp.c
index 8b1ff30..e05c778 100644
--- a/lib/nstrcmp.c
+++ b/lib/nstrcmp.c
@@ -1,34 +1,190 @@
 /* Copyright 1998 by Andi Kleen. Subject to the GPL. */
-/* $Id: nstrcmp.c,v 1.2 1998/11/15 20:11:38 freitag Exp $ */ 
+/* rewritten by bernd eckenfels because of complicated alias semantic */
+/* $Id: nstrcmp.c,v 1.4 2004/06/03 22:49:17 ecki Exp $ */
 #include <ctype.h>
 #include <stdlib.h>
+#include <string.h>
 #include "util.h"
 
-/* like strcmp(), but knows about numbers */
-int nstrcmp(const char *astr, const char *b)
+
+/* return numerical :999 suffix or null. sideeffect: replace ':' with \0 */
+char* cutalias(char* name)
+{
+	int digit = 0;
+	int pos;
+
+	for(pos=strlen(name); pos>0; pos--)
+	{
+		if (name[pos-1]==':' && digit)
+		{
+			name[pos-1]='\0';
+			return name+pos;
+		}
+		if (!isdigit(name[pos-1]))
+			break;
+		digit = 1;
+	}
+	return NULL;
+}
+
+
+/* return index of last non digit or -1 if it does not end with digits */
+int rindex_nondigit(char *name)
+{
+	int pos = strlen(name);
+
+	for(pos=strlen(name); pos>0; pos--)
+	{
+		if (!isdigit(name[pos-1]))
+			return pos;
+	}
+	return 0;
+}
+
+
+/* like strcmp(), but knows about numbers and ':' alias suffix */
+int nstrcmp(const char *ap, const char *bp)
+{
+	char *a = xstrdup(ap);
+	char *b = xstrdup(bp);
+	char *an, *bn;
+	int av = 0, bv = 0;
+	char *aalias=cutalias(a);
+	char *balias=cutalias(b);
+	int aindex=rindex_nondigit(a);
+	int bindex=rindex_nondigit(b);
+	int complen=(aindex<bindex)?aindex:bindex;
+	int res = strncmp(a, b, complen);
+
+	if (res != 0) {
+		goto out;
+	}
+
+	if (aindex > bindex) {
+		res = 1;
+		goto out;
+	}
+
+	if (aindex < bindex) {
+		res = -1;
+		goto out;
+	}
+
+	an = a+aindex;
+	bn = b+bindex;
+
+	av = atoi(an);
+	bv = atoi(bn);
+
+	if (av < bv) {
+		res = -1;
+		goto out;
+	}
+
+	if (av > bv) {
+		res = 1;
+		goto out;
+	}
+
+	res = strcmp(a, b);
+	if (res != 0) {
+		goto out;
+	}
+
+	av = -1;
+	if (aalias != NULL)
+		av = atoi(aalias);
+
+	bv = -1;
+	if (balias != NULL)
+		bv = atoi(balias);
+
+	if (av < bv) {
+		res = -1;
+		goto out;
+	}
+
+	if (av > bv) {
+		res = 1;
+		goto out;
+	}
+
+	if (aalias && balias) {
+		res = strcmp(aalias, balias);
+	}
+
+out:
+
+	free(a); free(b);
+
+	return res;
+}
+
+
+#ifdef NSTRCMP_TEST
+
+int cs(int s)
+{
+	if (s < 0) return -1;
+	if (s > 0) return 1;
+	return 0;
+}
+
+
+int dotest(char* a, char* b, int exp)
+{
+	int res = nstrcmp(a, b);
+	int err = (cs(res) != cs(exp));
+	printf("nstrcmp(\"%s\", \"%s\")=%d %d %s\n", a, b, res, exp, err?"WRONG":"OK");
+	return err;
+}
+
+int main()
 {
-    const char *a = astr;
-
-    while (*a == *b) {
-	if (*a == '\0')
-	    return 0;
-	a++;
-	b++;
-    }
-    if (isdigit(*a)) {
-	if (!isdigit(*b))
-	    return -1;
-	while (a > astr) {
-	    a--;
-	    if (!isdigit(*a)) {
-		a++;
-		break;
-	    }
-	    if (!isdigit(*b))
-		return -1;
-	    b--;
-	}
-	return atoi(a) > atoi(b) ? 1 : -1;
-    }
-    return *a - *b;
+	int err = 0;
+
+	err |= dotest("eth1", "eth1", 0);
+	err |= dotest("eth0:1", "eth0:1", 0);
+	err |= dotest("lan", "lan", 0);
+	err |= dotest("100", "100", 0);
+	err |= dotest("", "", 0);
+	err |= dotest(":", ":", 0);
+	err |= dotest("a:b:c", "a:b:c", 0);
+	err |= dotest("a:", "a:", 0);
+	err |= dotest(":a", ":a", 0);
+
+	err |= dotest("a", "aa", -1);
+	err |= dotest("eth0", "eth1", -1);
+	err |= dotest("eth1", "eth20", -1);
+	err |= dotest("eth20", "eth100", -1);
+	err |= dotest("eth1", "eth13", -1);
+	err |= dotest("eth", "eth2", -1);
+	err |= dotest("eth0:1", "eth0:2", -1);
+	err |= dotest("eth1:10", "eth13:10", -1);
+	err |= dotest("eth1:1", "eth1:13", -1);
+	err |= dotest("a", "a:", -1);
+
+	err |= dotest("aa", "a", 1);
+	err |= dotest("eth2", "eth1", 1);
+	err |= dotest("eth13", "eth1", 1);
+	err |= dotest("eth2", "eth", 1);
+	err |= dotest("eth2:10", "eth2:1", 1);
+	err |= dotest("eth2:5", "eth2:4", 1);
+	err |= dotest("eth3:2", "eth2:3", 1);
+	err |= dotest("eth13:1", "eth1:0", 1);
+	err |= dotest("a:", "a", 1);
+	err |= dotest("a1b12", "a1b2", 1);
+
+	err |= dotest("eth1", "eth01", 1);
+	err |= dotest("eth01", "eth1", -1);
+	err |= dotest("eth1:1", "eth01:1", 1);
+	err |= dotest("eth01:1", "eth1:1", -1);
+	err |= dotest("eth1:1", "eth01:01", 1);
+	err |= dotest("eth1:01", "eth01:1", 1);
+	err |= dotest("eth01:1", "eth1:01", -1);
+	err |= dotest("eth01:01", "eth1:1", -1);
+
+	return err;
 }
+
+#endif
diff --git a/lib/pathnames.h b/lib/pathnames.h
index 1f7fefb..14b051c 100644
--- a/lib/pathnames.h
+++ b/lib/pathnames.h
@@ -1,9 +1,8 @@
-
 /*
- * lib/pathnames.h    This file contains the definitions of the path 
+ * lib/pathnames.h    This file contains the definitions of the path
  *                      names used by the NET-LIB.
  *
- * NET-LIB      
+ * NET-LIB
  *
  * Version:     lib/pathnames.h 1.37 (1997-08-23)
  *
@@ -17,6 +16,12 @@
 #define _PATH_PROCNET_TCP6		"/proc/net/tcp6"
 #define _PATH_PROCNET_UDP		"/proc/net/udp"
 #define _PATH_PROCNET_UDP6		"/proc/net/udp6"
+#define _PATH_PROCNET_UDPLITE           "/proc/net/udplite"
+#define _PATH_PROCNET_UDPLITE6          "/proc/net/udplite6"
+#define _PATH_PROCNET_SCTPEPTS		"/proc/net/sctp/eps"
+#define _PATH_PROCNET_SCTP6EPTS		"/proc/net/sctp6/eps"
+#define _PATH_PROCNET_SCTPASSOCS	"/proc/net/sctp/assocs"
+#define _PATH_PROCNET_SCTP6ASSOCS	"/proc/net/sctp6/assocs"
 #define _PATH_PROCNET_RAW		"/proc/net/raw"
 #define _PATH_PROCNET_RAW6		"/proc/net/raw6"
 #define _PATH_PROCNET_UNIX		"/proc/net/unix"
@@ -29,8 +34,10 @@
 #define _PATH_PROCNET_NR_NODES		"/proc/net/nr_nodes"
 #define _PATH_PROCNET_ARP		"/proc/net/arp"
 #define _PATH_PROCNET_AX25		"/proc/net/ax25"
-#define _PATH_PROCNET_IPX		"/proc/net/ipx"
-#define _PATH_PROCNET_IPX_ROUTE		"/proc/net/ipx_route"
+#define _PATH_PROCNET_IPX_SOCKET1	"/proc/net/ipx/socket"
+#define _PATH_PROCNET_IPX_SOCKET2	"/proc/net/ipx"
+#define _PATH_PROCNET_IPX_ROUTE1	"/proc/net/ipx/route"
+#define _PATH_PROCNET_IPX_ROUTE2	"/proc/net/ipx_route"
 #define _PATH_PROCNET_ATALK		"/proc/net/appletalk"
 #define _PATH_PROCNET_IP_BLK		"/proc/net/ip_block"
 #define _PATH_PROCNET_IP_FWD		"/proc/net/ip_forward"
@@ -42,9 +49,12 @@
 #define _PATH_PROCNET_RARP		"/proc/net/rarp"
 #define _PATH_ETHERS			"/etc/ethers"
 #define _PATH_PROCNET_ROSE_ROUTE	"/proc/net/rose_routes"
-#define _PATH_PROCNET_X25              "/proc/net/x25"
-#define _PATH_PROCNET_X25_ROUTE                "/proc/net/x25_routes"
+#define _PATH_PROCNET_X25		"/proc/net/x25"
+#define _PATH_PROCNET_X25_ROUTE		"/proc/net/x25/route"
 #define _PATH_PROCNET_DEV_MCAST		"/proc/net/dev_mcast"
+#define _PATH_PROCNET_ATALK_ROUTE	"/proc/net/atalk_route"
+#define _PATH_SYS_BLUETOOTH_L2CAP	"/sys/class/bluetooth/l2cap"
+#define _PATH_SYS_BLUETOOTH_RFCOMM	"/sys/class/bluetooth/rfcomm"
 
 /* pathname for the netlink device */
 #define _PATH_DEV_ROUTE	"/dev/route"
diff --git a/lib/ppp.c b/lib/ppp.c
index 8bf1499..27d660c 100644
--- a/lib/ppp.c
+++ b/lib/ppp.c
@@ -8,7 +8,7 @@
  *              Copyright 1993 MicroWalt Corporation
  *
  *              Modified by Alan Cox, May 94 to cover NET-3
- *                       
+ *
  * Changes:
  * 980701 {1.12} Arnaldo Carvalho de Melo - GNU gettext instead of catgets
  *
diff --git a/lib/proc.c b/lib/proc.c
index bf34dbe..8e4711d 100644
--- a/lib/proc.c
+++ b/lib/proc.c
@@ -1,11 +1,14 @@
 /* Tolerant /proc file parser. Copyright 1998 Andi Kleen */
-/* $Id: proc.c,v 1.4 1999/01/05 20:54:00 philip Exp $ */ 
-/* Fixme: cannot currently cope with removed fields */ 
+/* $Id: proc.c,v 1.5 2007/12/01 18:44:57 ecki Exp $ */
+/* Fixme: cannot currently cope with removed fields */
 
 #include <string.h>
 #include <stdarg.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <ctype.h>
+#include <unistd.h>
+#include "util.h"
 
 /* Caller must free return string. */
 
@@ -46,10 +49,10 @@ char *proc_gen_fmt(char *name, int more, FILE * fh,...)
 		name, title);
 	return NULL;
     }
-    return strdup(format);
+    return xstrdup(format);
 }
 
-/* 
+/*
  * this will generate a bitmask of present/missing fields in the header of
  * a /proc file.
  */
@@ -72,3 +75,22 @@ int proc_guess_fmt(char *name, FILE *fh, ...)
     va_end(ap);
     return flag;
 }
+
+
+FILE *proc_fopen(const char *name)
+{
+    static char *buffer;
+    static size_t pagesz;
+    FILE *fd = fopen(name, "r");
+
+    if (fd == NULL)
+      return NULL;
+
+    if (!buffer) {
+      pagesz = getpagesize();
+      buffer = malloc(pagesz);
+    }
+
+    setvbuf(fd, buffer, _IOFBF, pagesz);
+    return fd;
+}
diff --git a/lib/proc.h b/lib/proc.h
index 91f803c..379de23 100644
--- a/lib/proc.h
+++ b/lib/proc.h
@@ -1,5 +1,7 @@
-
-
-/* Generate a suitable scanf format for a column title line */
+/*
+ * prototypes for proc.c
+ */
 char *proc_gen_fmt(char *name, int more, FILE * fh,...);
 int   proc_guess_fmt(char *name, FILE* fh,...);
+FILE *proc_fopen(const char *name);
+
diff --git a/lib/rose.c b/lib/rose.c
index 381226b..6286cb1 100644
--- a/lib/rose.c
+++ b/lib/rose.c
@@ -34,6 +34,7 @@
 #include "net-support.h"
 #include "pathnames.h"
 #include "intl.h"
+#include "util.h"
 
 #ifndef _NETROSE_ROSE_H
 #include <linux/ax25.h>
@@ -53,8 +54,8 @@ static char ROSE_errmsg[128];
 
 extern struct aftype rose_aftype;
 
-static char *
- ROSE_print(unsigned char *ptr)
+static const char *
+ ROSE_print(const char *ptr)
 {
     static char buff[12];
 
@@ -64,7 +65,7 @@ static char *
 }
 
 /* Display a ROSE socket address. */
-static char *
+static const char *
  ROSE_sprint(struct sockaddr *sap, int numeric)
 {
     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
@@ -73,7 +74,6 @@ static char *
     return (ROSE_print(((struct sockaddr_rose *) sap)->srose_addr.rose_addr));
 }
 
-
 static int ROSE_input(int type, char *bufp, struct sockaddr *sap)
 {
     char *ptr;
@@ -84,10 +84,7 @@ static int ROSE_input(int type, char *bufp, struct sockaddr *sap)
 
     /* Node address the correct length ? */
     if (strlen(bufp) != 10) {
-	strcpy(ROSE_errmsg, _("Node address must be ten digits"));
-#ifdef DEBUG
-	fprintf(stderr, "rose_input(%s): %s !\n", ROSE_errmsg, orig);
-#endif
+	safe_strncpy(ROSE_errmsg, _("Node address must be ten digits"), sizeof(ROSE_errmsg));
 	errno = EINVAL;
 	return (-1);
     }
@@ -98,13 +95,6 @@ static int ROSE_input(int type, char *bufp, struct sockaddr *sap)
     }
 
     /* All done. */
-#ifdef DEBUG
-    fprintf(stderr, "rose_input(%s): ", orig);
-    for (i = 0; i < sizeof(rose_address); i++)
-	fprintf(stderr, "%02X ", sap->sa_data[i] & 0377);
-    fprintf(stderr, "\n");
-#endif
-
     return (0);
 }
 
diff --git a/lib/rose_gr.c b/lib/rose_gr.c
index cf0a60a..a0858fd 100644
--- a/lib/rose_gr.c
+++ b/lib/rose_gr.c
@@ -53,7 +53,8 @@ int ROSE_rprint(int options)
     }
     printf(_("Kernel ROSE routing table\n"));
     printf(_("Destination  Iface    Use\n"));
-    fgets(buffer, 256, f);
+    if (fgets(buffer, 256, f))
+	/* eat line */;
     while (fgets(buffer, 256, f)) {
 	buffer[9] = 0;
 	buffer[14] = 0;
diff --git a/lib/strip.c b/lib/strip.c
index fd396ba..ced2325 100644
--- a/lib/strip.c
+++ b/lib/strip.c
@@ -38,8 +38,8 @@
 
 extern struct hwtype strip_hwtype;
 
-static char *
-pr_strip(unsigned char *ptr)
+static const char *
+pr_strip(const char *ptr)
 {
   static char buff[64];
   if(ptr[1])
diff --git a/lib/tr.c b/lib/tr.c
index 8d86aa7..c5314da 100644
--- a/lib/tr.c
+++ b/lib/tr.c
@@ -2,7 +2,7 @@
  * lib/tr.c   This file contains an implementation of the "Tokenring"
  *              support functions.
  *
- * Version:     $Id: tr.c,v 1.8 2000/02/02 08:56:30 freitag Exp $
+ * Version:     $Id: tr.c,v 1.9 2005/05/16 03:15:12 ecki Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              Copyright 1993 MicroWalt Corporation
@@ -30,10 +30,16 @@
 #include "net-support.h"
 #include "pathnames.h"
 #include "intl.h"
+#include "util.h"
 
+
+/* actual definition at the end of file */
 extern struct hwtype tr_hwtype;
+#ifdef ARPHRD_IEEE802_TR
+extern struct hwtype tr_hwtype1;
+#endif
 
-static char *pr_tr(unsigned char *ptr)
+static const char *pr_tr(const char *ptr)
 {
     static char buff[64];
 
@@ -42,16 +48,31 @@ static char *pr_tr(unsigned char *ptr)
 	     (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
 	);
     return (buff);
-}
+      }
 
+#ifdef DEBUG
+#define _DEBUG 1
+#else
+#define _DEBUG 0
+#endif
 
 static int in_tr(char *bufp, struct sockaddr *sap)
 {
-    unsigned char *ptr;
+    char *ptr;
     char c, *orig;
     int i, val;
 
+#ifdef ARPHRD_IEEE802_TR
+    if (kernel_version() < KRELEASE(2,3,30)) {
+        sap->sa_family = tr_hwtype.type;
+    } else {
+        sap->sa_family = tr_hwtype1.type;
+    }
+#else
     sap->sa_family = tr_hwtype.type;
+    #warning "Limited functionality, no support for ARPHRD_IEEE802_TR (old kernel headers?)"
+#endif
+
     ptr = sap->sa_data;
 
     i = 0;
@@ -66,9 +87,8 @@ static int in_tr(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val = c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_tr(%s): invalid token ring address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_tr(%s): invalid token ring address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -81,9 +101,8 @@ static int in_tr(char *bufp, struct sockaddr *sap)
 	else if (c >= 'A' && c <= 'F')
 	    val |= c - 'A' + 10;
 	else {
-#ifdef DEBUG
-	    fprintf(stderr, _("in_tr(%s): invalid token ring address!\n"), orig);
-#endif
+	    if (_DEBUG)
+		fprintf(stderr, _("in_tr(%s): invalid token ring address!\n"), orig);
 	    errno = EINVAL;
 	    return (-1);
 	}
@@ -92,28 +111,21 @@ static int in_tr(char *bufp, struct sockaddr *sap)
 
 	/* We might get a semicolon here - not required. */
 	if (*bufp == ':') {
-	    if (i == TR_ALEN) {
-#ifdef DEBUG
+	    if (_DEBUG && i == TR_ALEN)
 		fprintf(stderr, _("in_tr(%s): trailing : ignored!\n"),
-			orig)
-#endif
-		    ;		/* nothing */
-	    }
+			orig);
 	    bufp++;
 	}
     }
 
     /* That's it.  Any trailing junk? */
-    if ((i == TR_ALEN) && (*bufp != '\0')) {
-#ifdef DEBUG
+    if (_DEBUG && (i == TR_ALEN) && (*bufp != '\0')) {
 	fprintf(stderr, _("in_tr(%s): trailing junk!\n"), orig);
 	errno = EINVAL;
 	return (-1);
-#endif
     }
-#ifdef DEBUG
-    fprintf(stderr, "in_tr(%s): %s\n", orig, pr_tr(sap->sa_data));
-#endif
+    if (_DEBUG)
+	fprintf(stderr, "in_tr(%s): %s\n", orig, pr_tr(sap->sa_data));
 
     return (0);
 }
diff --git a/lib/tunnel.c b/lib/tunnel.c
index 19606c1..8a160bf 100644
--- a/lib/tunnel.c
+++ b/lib/tunnel.c
@@ -21,7 +21,7 @@
 
 extern struct hwtype ether_hwtype;
 
-static char *pr_tunnel(unsigned char *ptr)
+static const char *pr_tunnel(const char *ptr)
 {
     return ("");
 }
diff --git a/lib/unix.c b/lib/unix.c
index fb4dcce..936cd48 100644
--- a/lib/unix.c
+++ b/lib/unix.c
@@ -32,7 +32,7 @@
 
 
 /* Display an UNSPEC address. */
-static char *UNSPEC_print(unsigned char *ptr)
+static const char *UNSPEC_print(const char *ptr)
 {
     static char buff[64];
     char *pos;
@@ -48,7 +48,7 @@ static char *UNSPEC_print(unsigned char *ptr)
 
 
 /* Display an UNSPEC socket address. */
-static char *UNSPEC_sprint(struct sockaddr *sap, int numeric)
+static const char *UNSPEC_sprint(struct sockaddr *sap, int numeric)
 {
     static char buf[64];
 
@@ -61,14 +61,14 @@ static char *UNSPEC_sprint(struct sockaddr *sap, int numeric)
 #if HAVE_AFUNIX
 
 /* Display a UNIX domain address. */
-static char *UNIX_print(unsigned char *ptr)
+static const char *UNIX_print(const char *ptr)
 {
     return (ptr);
 }
 
 
 /* Display a UNIX domain address. */
-static char *UNIX_sprint(struct sockaddr *sap, int numeric)
+static const char *UNIX_sprint(struct sockaddr *sap, int numeric)
 {
     static char buf[64];
 
diff --git a/lib/util-ank.c b/lib/util-ank.c
index 43a7f1c..b077f35 100644
--- a/lib/util-ank.c
+++ b/lib/util-ank.c
@@ -293,7 +293,7 @@ int inet_addr_match(inet_prefix *a, inet_prefix *b, int bits)
 	return 0;
 }
 
-const char *format_host(int af, void *addr, __u8 *abuf, int alen)
+const char *format_host(int af, void *addr, char *abuf, int alen)
 {
 #ifdef RESOLVE_HOSTNAMES
 	if (resolve_hosts) {
diff --git a/lib/util.c b/lib/util.c
index ac932f4..0397f1e 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -1,4 +1,4 @@
-/* Copyright 1998 by Andi Kleen. Subject to the GPL. */ 
+/* Copyright 1998 by Andi Kleen. Subject to the GPL. */
 /* $Id: util.c,v 1.4 1998/11/17 15:17:02 freitag Exp $ */
 #include <stdio.h>
 #include <stdlib.h>
@@ -22,6 +22,15 @@ void *xmalloc(size_t sz)
     return p;
 }
 
+/* Like strdup, but oom() instead of NULL */
+char *xstrdup(const char *s)
+{
+    char *d = strdup(s);
+    if (!d)
+        oom();
+    return d;
+}
+
 void *xrealloc(void *oldp, size_t sz)
 {
     void *p = realloc(oldp, sz);
@@ -33,19 +42,19 @@ void *xrealloc(void *oldp, size_t sz)
 int kernel_version(void)
 {
     struct utsname uts;
-    int major, minor, patch;
+    int major, minor, patch=0;
 
     if (uname(&uts) < 0)
 	return -1;
-    if (sscanf(uts.release, "%d.%d.%d", &major, &minor, &patch) != 3)
+    if (sscanf(uts.release, "%d.%d.%d", &major, &minor, &patch) < 2)
 	return -1;
     return KRELEASE(major, minor, patch);
 }
 
 
-/* Like strncpy but make sure the resulting string is always 0 terminated. */  
+/* Like strncpy but make sure the resulting string is always 0 terminated. */
 char *safe_strncpy(char *dst, const char *src, size_t size)
-{   
+{
     dst[size-1] = '\0';
-    return strncpy(dst,src,size-1);   
+    return strncpy(dst,src,size-1);
 }
diff --git a/lib/util.h b/lib/util.h
index 6acb158..b7598e8 100644
--- a/lib/util.h
+++ b/lib/util.h
@@ -2,6 +2,7 @@
 
 void *xmalloc(size_t sz);
 void *xrealloc(void *p, size_t sz);
+char *xstrdup(const char *src);
 
 #define new(p) ((p) = xmalloc(sizeof(*(p))))
 
@@ -12,5 +13,8 @@ int kernel_version(void);
 
 int nstrcmp(const char *, const char *);
 
-char *safe_strncpy(char *dst, const char *src, size_t size); 
+char *safe_strncpy(char *dst, const char *src, size_t size);
 
+
+#define netmin(a,b) ((a)<(b) ? (a) : (b))
+#define netmax(a,b) ((a)>(b) ? (a) : (b))
diff --git a/lib/x25.c b/lib/x25.c
index 1ffb569..45de5af 100644
--- a/lib/x25.c
+++ b/lib/x25.c
@@ -38,6 +38,7 @@
 #include "net-locale.h"
 #endif
 #include "intl.h"
+#include "util.h"
 
 static char X25_errmsg[128];
 
@@ -50,8 +51,8 @@ extern struct aftype x25_aftype;
 #endif
 
 
-static char *
-X25_print(unsigned char *ptr)
+static const char *
+X25_print(const char *ptr)
 {
   static char buff[X25_ADDR_LEN+1];
 
@@ -63,7 +64,7 @@ X25_print(unsigned char *ptr)
 
 
 /* Display an X.25 socket address. */
-static char *
+static const char *
 X25_sprint(struct sockaddr *sap, int numeric)
 {
   if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
@@ -78,7 +79,7 @@ X25_sprint(struct sockaddr *sap, int numeric)
 static int
 X25_input(int type, char *bufp, struct sockaddr *sap)
 {
-  unsigned char *ptr;
+  char *ptr;
   char *p;
   unsigned int sigdigits;
 
@@ -88,9 +89,11 @@ X25_input(int type, char *bufp, struct sockaddr *sap)
 
   /* Address the correct length ? */
   if (strlen(bufp)>18) {
-        strcpy(X25_errmsg, _("Address can't exceed eighteen digits with sigdigits"));
+        safe_strncpy(X25_errmsg,
+                     _("Address can't exceed eighteen digits with sigdigits"),
+                     sizeof(X25_errmsg));
 #ifdef DEBUG
-        fprintf(stderr, "x25_input(%s): %s !\n", X25_errmsg, orig);
+        fprintf(stderr, "x25_input(%s): %s !\n", bufp, X25_errmsg);
 #endif
         errno = EINVAL;
         return(-1);
@@ -105,10 +108,11 @@ X25_input(int type, char *bufp, struct sockaddr *sap)
   }
 
   if (strlen(bufp) < 1 || strlen(bufp) > 15 || sigdigits > strlen(bufp)) {
-	*p = '/';
-        strcpy(X25_errmsg, _("Invalid address"));
+        if (p != NULL)
+                *p = '/';
+        safe_strncpy(X25_errmsg, _("Invalid address"), sizeof(X25_errmsg));
 #ifdef DEBUG
-        fprintf(stderr, "x25_input(%s): %s !\n", X25_errmsg, orig);
+        fprintf(stderr, "x25_input(%s): %s !\n", bufp, X25_errmsg);
 #endif
         errno = EINVAL;
         return(-1);
@@ -118,10 +122,7 @@ X25_input(int type, char *bufp, struct sockaddr *sap)
 
   /* All done. */
 #ifdef DEBUG
-  fprintf(stderr, "x25_input(%s): ", orig);
-  for (i = 0; i < sizeof(x25_address); i++)
-	fprintf(stderr, "%02X ", sap->sa_data[i] & 0377);
-  fprintf(stderr, "\n");
+  fprintf(stderr, "x25_input(%s)\n", bufp);
 #endif
 
   return sigdigits;
@@ -152,7 +153,7 @@ struct hwtype x25_hwtype = {
 };
 
 struct aftype x25_aftype =
-{   
+{
     "x25", NULL, /*"CCITT X.25", */ AF_X25, X25_ADDR_LEN,
     X25_print, X25_sprint, X25_input, X25_herror,
     X25_rprint, X25_rinput, NULL /* getmask */,
diff --git a/lib/x25_gr.c b/lib/x25_gr.c
index 187fc05..79682e0 100644
--- a/lib/x25_gr.c
+++ b/lib/x25_gr.c
@@ -37,6 +37,7 @@
 #include <string.h>
 #include "net-support.h"
 #include "pathnames.h"
+#include "proc.h"
 #define  EXTERN
 #if 0
 #include "net-locale.h"
@@ -48,9 +49,18 @@
 #define X25_ADDR_LEN 16
 #endif
 
+static FILE *proc_fopen_x25_route(void)
+{
+	FILE *ret = proc_fopen(_PATH_PROCNET_X25_ROUTE);
+	if (ret)
+		return ret;
+	/* try old linux-2.4 name */
+	return proc_fopen("/proc/net/x25_routes");
+}
+
 int X25_rprint(int options)
 {
-	FILE *f=fopen(_PATH_PROCNET_X25_ROUTE, "r");
+	FILE *f=proc_fopen_x25_route();
 	char buffer[256];
 	char *p;
 	int  digits;
@@ -62,7 +72,8 @@ int X25_rprint(int options)
 	}
 	printf( _("Kernel X.25 routing table\n")); /* xxx */
 	printf( _("Destination          Iface\n")); /* xxx */
-	fgets(buffer,256,f);
+	if (fgets(buffer,256,f))
+		/* eat line */;
 	while(fgets(buffer,256,f))
 	{
 		p = strchr(buffer,'\n');
diff --git a/lib/x25_sr.c b/lib/x25_sr.c
index 8637c98..fde79dc 100644
--- a/lib/x25_sr.c
+++ b/lib/x25_sr.c
@@ -38,6 +38,7 @@
 #include "net-locale.h"
 #endif
 #include "intl.h"
+#include "util.h"
 
 #include "net-features.h"
 
@@ -64,10 +65,10 @@ static int X25_setroute(int action, int options, char **args)
   if (*args == NULL)
 	return(usage());
 
-  strcpy(target, *args++);
+  safe_strncpy(target, *args++, sizeof(target));
 
   /* Clean out the x25_route_struct structure. */
-  memset((char *) &rt, 0, sizeof(struct x25_route_struct));
+  memset((char *) &rt, 0, sizeof(rt));
 
 
   if ((sigdigits = x25_aftype.input(0, target, (struct sockaddr *)&sx25)) < 0) {
@@ -76,8 +77,8 @@ static int X25_setroute(int action, int options, char **args)
   }
   rt.sigdigits=sigdigits;
 
-  /* x25_route_struct.address isn't type struct sockaddr_x25, Why? */
-  memcpy(&rt.address, &sx25.sx25_addr, sizeof(x25_address));
+  /* this works with 2.4 and 2.6 headers struct x25_address vs. typedef */
+  memcpy(&rt.address, &sx25.sx25_addr, sizeof(sx25.sx25_addr));
 
   while (*args) {
 	if (!strcmp(*args,"device") || !strcmp(*args,"dev")) {
@@ -89,7 +90,7 @@ static int X25_setroute(int action, int options, char **args)
 			return(usage());
 	if (rt.device[0])
 		return(usage());
-	strcpy(rt.device, *args);
+	safe_strncpy(rt.device, *args, sizeof(rt.device));
 	args++;
   }
   if (rt.device[0]=='\0')
@@ -111,7 +112,7 @@ static int X25_setroute(int action, int options, char **args)
 	perror("socket");
 	return(E_SOCK);
   }
-  
+
   /* Tell the kernel to accept this route. */
   if (action==RTACTION_DEL) {
 	if (ioctl(skfd, SIOCDELRT, &rt) < 0) {
@@ -137,14 +138,14 @@ int X25_rinput(int action, int options, char **args)
   if (action == RTACTION_FLUSH) {
   	fprintf(stderr,"Flushing `x25' routing table not supported\n");
   	return(usage());
-  }	
+  }
   if (options & FLAG_CACHE) {
   	fprintf(stderr,"Modifying `x25' routing cache not supported\n");
   	return(usage());
-  }	
+  }
   if ((*args == NULL) || (action == RTACTION_HELP))
 	return(usage());
-  
+
   return(X25_setroute(action, options, args));
 }
 #endif	/* HAVE_AFX25 */
diff --git a/man/Makefile b/man/Makefile
index 4ef1af8..23f5468 100644
--- a/man/Makefile
+++ b/man/Makefile
@@ -29,9 +29,14 @@ mandir=/usr/share/man
 
 -include ../config.make
 ifeq ($(I18N),1)
-LANGS=`ls -d * | grep -v Makefile`
+ALL_LANGS = $(filter-out Makefile,$(wildcard *))
+ifeq ($(LINGUAS),)
+LANGS = $(ALL_LANGS)
 else
-LANGS=en_US
+LANGS = $(sort $(filter $(LINGUAS),$(ALL_LANGS)) en_US)
+endif
+else
+LANGS = en_US
 endif
 
 all:
@@ -43,7 +48,7 @@ clean:
 clobber:	clean
 
 install:
-		LANGS=$(LANGS) ; \
+		LANGS='$(LANGS)' ; \
 		for LANG in $$LANGS; do \
 			cd $$LANG; \
 			for SECTION in 1 5 8; do \
diff --git a/man/de_DE/arp.8 b/man/de_DE/arp.8
index debd879..79abfc7 100644
--- a/man/de_DE/arp.8
+++ b/man/de_DE/arp.8
@@ -1,149 +1,145 @@
-.TH ARP 8 "6. M\(:arz 1999" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
+.TH ARP 8 "17. Oktober 2012" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
 .SH NAME
 arp \- Manipulation des ARP-Caches
 .SH SYNOPSIS
-.B arp 
-.RB [ \-vn ] 
-.RB [ "\-H Typ" ] 
-.RB [ "-i Schnittstelle" ] 
-.B -a 
+.B arp
+.RB [ \-vn ]
+.RB [ "\-H Typ" ]
+.RB [ "-i Schnittstelle" ]
+.B -a
 .RB [ Rechnername ]
 .PP
-.B arp 
+.B arp
 .RB [ \-v ]
-.RB [ "\-i if" ] 
+.RB [ "\-i Schnittstelle" ]
 .B "\-d Rechnername"
 .RB [ pub ]
 .PP
-.B arp 
-.RB [ \-v ] 
-.RB [ "\-H Typ" ] 
-.RB [ "\-i Schnittstelle" ] 
+.B arp
+.RB [ \-v ]
+.RB [ "\-H Typ" ]
+.RB [ "\-i Schnittstelle" ]
 .B -s Rechnername hw_adr
-.RB [ temp ] 
+.RB [ temp ]
 .PP
-.B arp 
-.RB [ \-v ] 
-.RB [ "\-H Typ" ] 
-.RB [ "\-i Interface" ] 
+.B arp
+.RB [ \-v ]
+.RB [ "\-H Typ" ]
+.RB [ "\-i Interface" ]
 .B -s Rechnername hw_adr
-.RB [ "netmask nm" ] 
+.RB [ "netmask Maske" ]
 .B pub
 .PP
-.B arp 
-.RB [ \-v ] 
-.RB [ "\-H Typ" ] 
-.RB [ "\-i Schnittstelle" ] 
-.B -Ds Rechnername ifa
-.RB [ "netmask nm" ] 
+.B arp
+.RB [ \-v ]
+.RB [ "\-H Typ" ]
+.RB [ "\-i Schnittstelle" ]
+.B -Ds Rechnername Schnittstelle2
+.RB [ "netmask Maske" ]
 .B pub
 .PP
-.B arp 
+.B arp
 .RB [ \-vnD ]
-.RB [ "\-H Typ" ] 
+.RB [ "\-H Typ" ]
 .RB [ "-i Schnittstelle" ]
 .B -f [Dateiname]
 
 .SH BESCHREIBUNG
 .B Arp
 kann den ARP-Cache des Kernels auf verschiedene Arten manipulieren.  Die
-haupts\(:achliche Verwendung ist es Adresszuordnungseintr\(:age zu
+haupts\(:achliche Verwendung ist es, Adresszuordnungseintr\(:age zu
 l\(:oschen und von Hand neue zu erzeugen.  Zum Zweck der Fehlersuche ist
-moeglich mit dem
-.B arp
-Programm den Inhalt des ARP-Caches vollst\(:andig auszugeben.
+es m\(:oglich, mit dem
+.BR arp -Programm
+den Inhalt des ARP-Caches vollst\(:andig auszugeben.
+
+.B ARP
+steht f\(:ur Address Resolution Protocol, welches dazu verwendet wird, \(:uber
+die IPv4-Adresse die MAC-Adresse von Nachbarn im Netzwerk zu finden.
 .SH OPTIONEN
 .TP
 .B "\-v, \-\-verbose"
 Ausf\(:uhrlichere Ausgaben.
 .TP
 .B "\-n, \-\-numeric"
-macht numerische Adressausgaben anstatt zu versuche, den symbolischen Rechner-,
+Numerische Adressausgaben anstatt zu versuchen, den symbolischen Rechner-,
 Port- oder Benutzernamen zu ermitteln.
 .TP
-.B "\-H type, \-\-hw-type type"
+.B "\-H Typ, \-\-hw-type Typ"
 Beim Setzen oder Auslesen des ARP-Caches schr\(:ankt diese Option
-ein, auf welcher Klasse von Eintr\(:agen 
+ein, auf welcher Klasse von Eintr\(:agen
 .B arp
 operieren soll.  Der Standardwert dieses Arguments ist
 .B ether
 (d.h. Hardwarecode 0x01 f\(:ur IEEE 802.3 10Mbps Ethernet).
 Andere m\(:ogliche Werte sind Netzwerkstechnologien so wie z.B.
-.RB "ARCnet (" arcnet ")"
-,
-.RB "PROnet (" pronet ")"
-,
-.RB "AX.25 (" ax25 ")"
-and
-.RB "NET/ROM (" netrom ")."
+.RB "ARCnet (" arcnet "), PROnet (" pronet "), AX.25 (" ax25 ") und NET/ROM (" netrom ")."
 .TP
 .B "\-a [Rechnername], \-\-display [Rechnername]"
 Zeigt die Eintr\(:age der angegebenen Rechner an.  Wird kein
-.B hostname
-Argument verwendet, so werden alle Eintr\(:age aufgelistet.
+.BR hostname -Argument
+verwendet, so werden alle Eintr\(:age aufgelistet.
 .TP
 .B "\-d Rechnername, \-\-delete Rechnername"
-Alle Eintr\(:age f\(:ur den angegebenen Host entfernen.  Dies kann z.B.
-benutzt werden, wenn ein System angehalten wird.
+Alle Eintr\(:age f\(:ur den angegebenen Host entfernen.  Dies kann z.B. benutzt
+werden, wenn ein System angehalten wird.
 .TP
 .B "\-D, \-\-use-device"
 Die Hardwareadresse der Netzwerksschnittstelle
-.B ifa
+.B Schnittstelle2
 verwenden.
 .TP
-.B "\-i If, \-\-device Schnittstelle"
+.B "\-i Schnittstelle, \-\-device Schnittstelle"
 Eine Netzwerksschnittstelle ausw\(:ahlen.  Es werden nur Eintr\(:age
-f\(:ur die angegebene Schnittstelle ausgedruckt.  Beim Setzen von von
+f\(:ur die angegebene Schnittstelle ausgegeben.  Beim Setzen von
 permanenten oder tempor\(:aren Eintr\(:agen wird diese Schnittstelle mit
 dem Eintrag assoziiert.  Wird diese Option nicht verwendet, so versucht der
-Kernel auf Basis der Routentabelle eine Schnittstelle auszuw\(:ahlen.  F\(:ur
-.B pub
-Eintr\(:age ist die angegebene Schnittstelle diejenige, auf der ARP-Anfragen
+Kernel, auf Basis der Routentabelle eine Schnittstelle auszuw\(:ahlen.  F\(:ur
+.BR pub -Eintr\(:age
+ist die angegebene Schnittstelle diejenige, auf der ARP-Anfragen
 beantwortet werden.
 .br
 .B ANMERKUNG:
-Diese Schnittstelle mu\(ss eine andere sein als die, auf die die IP-Datagramme
+Diese Schnittstelle mu\(ss eine andere sein als die, auf welche die IP-Datagramme
 weitergeleitet werden.
 .TP
-.B "\-s Rechnername hw_addr, \-\-set Rechnername"
-Erzeugt manuel einen ARP Adresseintrag f\(:ur den Rechner
-.B Rechnername
+.B "\-s Rechnername hw_addr, \-\-set Rechnername hw_addr"
+Erzeugt manuell einen ARP-Adresseintrag f\(:ur den Rechner
+.BR Rechnername ,
 in dem die Hardwareadresse auf
 .B hw_addr
 gesetzt ist.  Das genaue Format der Hardwareadresse ist abh\(:angig von der
-Hardwareklasse aber f\(:ur die meisten Klassen kann man davon ausgehen, da\(ss
+Hardwareklasse, aber f\(:ur die meisten Klassen kann man davon ausgehen, da\(ss
 die \(:ubliche Darstellung verwendet wird.  F\(:ur die Ethernetklasse sind
-dies sechs hexadezimale, von Doppelpunkten getrennte Bytes.  Beim Zuf\(:ugen
-von Proxy-ARP-Entr\(:agen (das sind die mit der gesetzten
-.BR pub lizieren
-Flagge) kann
-.B Netmaske
+dies sechs hexadezimale, durch Doppelpunkte getrennte Bytes.  Beim Zuf\(:ugen
+von Proxy-ARP-Entr\(:agen (das sind die mit dem gesetzten
+.BR pub lished-Flag)
+kann die
+.B Maske
 f\(:ur ARP-Eintr\(:age f\(:ur ganze Subnetze angegeben werde.  Von dieser
 Praxis wird abgeraten.  Sie wird von \(:alteren Kerneln unterst\(:utzt, da
-sie gelegentlich n\(:utzlich ist.  Wird die
-If the
-.B temp
-Flagge nicht angegeben, so werden die erzeugten Eintr\(:age nicht dauerhaft
-in den ARP-Cache eingetragen.
+sie gelegentlich n\(:utzlich ist.
+Der Eintrag wird permanent im ARP-Cache gespeichert,
+wenn das \fBtemp\fR-Flag nicht angegeben wird.
 .br
 .B ANMERKUNG:
-Ab der Kernelversion 2.2.0 ist es nicht mehr m\(:oglich ARP-Eintr\(:age f\(:ur
-ganze Teilnetze zu erzeugen. Statt dessen wird automatisches Proxy ARP
+Ab der Kernelversion 2.2.0 ist es nicht mehr m\(:oglich, ARP-Eintr\(:age f\(:ur
+ganze Teilnetze zu erzeugen. Stattdessen wird automatisches Proxy ARP
 durchgef\(:uhrt, d.h. wenn eine Route existiert und Forwarding eingeschaltet
-ist wird automatisch ein tempor\(:arer Proxyarpeintrag erzeugt. 
+ist, wird automatisch ein tempor\(:arer Proxyarpeintrag erzeugt.
 Siehe auch
 .BR arp (7)
 f\(:ur mehr Details.
 .TP
-.B "\-f Dateiname, \-\-file Dateiname"
+.B "\-f [Dateiname], \-\-file [Dateiname]"
 \(:Ahnlich der
 .B \-s
 Option, au\(sser, da\(ss diesmal die Adressinformation aus der Datei
 .B Dateiname
 verwendet wird.  Dies kann verwendet werden, wenn ARP-Eintr\(:age f\(:ur
 etliche Rechner erzeugt werden m\(:ussen.  Der Name dieser Datei ist oft
-.IR /etc/ethers , 
-aber dies ist nicht offizieil standardisiert. Wenn kein Dateinamen 
+.IR /etc/ethers ,
+aber dies ist nicht offizieil standardisiert. Wenn kein Dateinamen
 angeben ist wird /etc/ethers benutzt.
 .sp 1
 Das Format der Datei ist einfach; es enth\(:alt nur ASCII-Textzeilen, die
@@ -158,16 +154,28 @@ erwartet wird, kann auch eine
 .B "IP-Adresse"
 in Form eines durch Punkte getrennten Dezimalquadrupels angegeben werden.
 .P
-Aus Kompatiblit\(:atsgr\(:unden k\(:onnen Rechnername und die 
+Aus Kompatiblit\(:atsgr\(:unden k\(:onnen Rechnername und die
 Hardwareadresse auch vertauscht werden.
-.LP 
-Jeder vollst\(:andige Eintrag wird im ARP-Cache mit der
-.B C
-Flagge markiert. Permanente Eintr\(:age werden mit
+.LP
+Jeder vollst\(:andige Eintrag wird im ARP-Cache mit dem
+.BR C -Flag
+markiert. Permanente Eintr\(:age werden mit
 .B M
-und zu publizierende Eintr\(:age mit der 
+und zu publizierende Eintr\(:age mit
 .B P
-Flagge.
+markiert.
+.SH BEISPIELE
+.B /usr/sbin/arp -i eth0 -Ds 10.0.0.2 eth1 pub
+
+Beantwortet ARP-Anfragen f\(:ur 10.0.0.2 die auf der Schnittstelle eth0 
+empfangen werden mit der MAC-Adresse f\(:ur eth1.
+
+.B /usr/sbin/arp -i eth1 -d 10.0.0.1
+
+Entfernt den ARP-Eintrag f\(:ur 10.0.0.1 auf der Schnittstelle 
+.BR eth1 . 
+Dies betrifft sowohl publizierte Proxy-ARP-EintrÃ¤ge als auch auf permanente ARP-Eintr\(:age.
+
 .SH DATEIEN
 .I /proc/net/arp,
 .br
@@ -176,10 +184,12 @@ Flagge.
 .I /etc/hosts
 .br
 .I /etc/ethers
+
 .SH SIEHE AUCH
 ethers(5), rarp(8), route(8), ifconfig(8), netstat(8)
+
 .SH AUTOREN
-Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> mit vielen Verbesserungen vom
-Verwalter der Net-Tools Bernd Eckenfels <net-tools@lina.inka.de>.
+Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>, Bernd Eckenfels <net-tools@lina.inka.de>.
+
 .SH \(:Ubersetzung
-Ralf B\(:achle <ralf@gnu.org>
+Ralf B\(:achle <ralf@gnu.org>, Simon A. Eugster <simon.eu@gmail.com>
diff --git a/man/de_DE/ifconfig.8 b/man/de_DE/ifconfig.8
index aa2a4a0..9713965 100644
--- a/man/de_DE/ifconfig.8
+++ b/man/de_DE/ifconfig.8
@@ -73,9 +73,6 @@ Modus.  Ist er eingeschaltet, so werden alle Multicastpakete vom Netzwerk
 empfangen unabh\(:angig davon, ob sie an die Schnittstelle adressiert sind
 oder nicht.
 .TP
-.B "metric N"
-Dieses Argument setzt den Metrik-Wert f\(:ur die Schnittstelle auf N.
-.TP
 .B "mtu N"
 Dieses Argument setzt die Maximum Transfer Unit (MTU) der Schnittstelle,
 das ist das gr\(:o\(sste Paket, dass gesendet werden kann.
@@ -98,7 +95,7 @@ F\(:ugt der Schnittstelle eine IPv6-Adresse zu.
 .B "del addr/prefixlen"
 Entfernt eine IPv6-Adresse von der Schnittstelle.
 .TP
-.B "tunnel aa.bb.cc.dd"
+.B "tunnel ::aa.bb.cc.dd"
 Erzeugt ein neues SIT (IPv6-in-IPv4) Ger\(:at, das Pakete zum angegebenen
 Ziel tunnelt.
 .TP
@@ -180,12 +177,10 @@ Seit Kernel Version 2.2 gibt es keine expliziten Statistiken f\(:ur
 Schnittstellenaliase mehr.  Die Statistiken f\(:ur die Originaladresse werden
 mit allen Aliasen auf das gleiche Ger\(:at geteilt.  Um Statistiken per
 Adresse zu erhalten sollte explizite EIntr\(:age f\(:ur die Adresse mit dem
-.BR ipchains(8)
+.BR iptables(8)
 Kommando gemacht werden.
 
 .SH DATEIEN
-.I /proc/net/socket 
-.br
 .I /proc/net/dev
 .br
 .I /proc/net/if_inet6
@@ -193,7 +188,7 @@ Kommando gemacht werden.
 W\(:ahrend AppleTalk DDP und IPX Adressen angezeigt werden, k\(:onnen sie mit
 diesem Kommando nicht ge\(:andert werden.
 .SH SIEHE AUCH
-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
+route(8), netstat(8), arp(8), rarp(8), iptables(8)
 .SH AUTOREN
 Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
 .br
diff --git a/man/de_DE/netstat.8 b/man/de_DE/netstat.8
index f59aec0..fdb76c9 100644
--- a/man/de_DE/netstat.8
+++ b/man/de_DE/netstat.8
@@ -9,7 +9,7 @@
 .\" Modified: Tuan Hoang tuan@optimus.mitre.org 
 .\"
 .\"
-.TH NETSTAT 8 "6. M\(:arz 1999" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
+.TH NETSTAT 8 "2007-12-02" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
 
 .SH NAME
 netstat \- Anzeige von Netzwerksverbindungen, Routentabellen, Schnittstellenstatistiken, maskierten Verbindungen, Netlink-Nachrichten und Mitgliedschaft in Multicastgruppen
@@ -20,6 +20,8 @@ netstat \- Anzeige von Netzwerksverbindungen, Routentabellen, Schnittstellenstat
 .RB [ \-venaoc ]
 .RB [ \-\-tcp | \-t ]
 .RB [ \-\-udp | \-u ]
+.RB [ \-\-udplite | \-U ]
+.RB [ \-\-sctp | \-S ]
 .RB [ \-\-raw | \-w ]
 .RB [ \-\-groups | \-g ]
 .RB [ \-\-unix | \-x ] 
@@ -44,7 +46,6 @@ netstat \- Anzeige von Netzwerksverbindungen, Routentabellen, Schnittstellenstat
 .B netstat
 .RB [ \-veenpac ]
 .RB { \-\-interfaces | \-i }
-.RI [ Schnittstelle ]
 
 .PP
 
@@ -68,6 +69,8 @@ netstat \- Anzeige von Netzwerksverbindungen, Routentabellen, Schnittstellenstat
 .SH BESCHREIBUNG
 .B Netstat
 zeigt Informationen des Linux Netzwerkssystems an.
+.PP
+.B Bitte beachten Sie, dass der Inhalt der deutschen man-page nicht vollst\(:andig ist, im Moment.
 
 .SS "(no option)"
 Ohne Optionen zeigt
@@ -103,18 +106,17 @@ benutzt das Ausgabeformat von
 Wegen Details siehe
 .BR route (8).
 
-.SS "\-i, \-\-interface \fISchnittstelle\fI"
+.SS "\-i, \-\-interfaces"
 Wird die
 .BR -i ", " --interfaces
-Option verwendet,  so wird eine Tabelle aller (oder der angegebenen
-.IR Schnittstellen ) 
+Option verwendet,  so wird eine Tabelle aller Schnittstellen
 ausgedruckt.  Die Ausgabe ist im Format von
 .B "ifconfig -e"
 und wird in
 .BR ifconfig (8)
 beschrieben.
 .B "netstat -ei" 
-druckt eine Tabelle oder einen Eintrag f\(:ur einen einzelnes Interface wie
+druckt eine Tabelle f\(:ur Interfaces wie
 .BR ifconfig .
 Die
 .B -a
@@ -182,7 +184,7 @@ Dies hat den gleichen Effekt wie die Langoptionen
 und
 .BR \-\-ddp.
 
-.SS "\-c, \-\-continous"
+.SS "\-c, \-\-continuous"
 Mit dieser Option wiederholt
 .B netstat
 im Sekundenabstand die Ausgabe, bis es abgebrochen wird.
@@ -414,7 +416,7 @@ werden.)
 Seit der Kern Version 2.2 zeigt netstat -i keine Schnittstellenstatistiken
 von Schnittstellenaliasen mehr an.  Um Statistiken per Schnittstelle zur
 erhalten, m\(:ussen jetzt mit dem
-.BR ipchains(8) 
+.BR iptables(8)
 Befehl explizite Regeln zugef\(:ugt werden.
 
 .SH DATEIEN
@@ -477,10 +479,7 @@ Befehl explizite Regeln zugef\(:ugt werden.
 .SH SIEHE AUCH
 .BR route (8), 
 .BR ifconfig (8), 
-.BR ipfw (4), 
-.BR ipfw (8), 
-.BR ipfwadm (8)
-.BR ipchains (8)
+.BR iptables (8)
 
 .PP
 .SH PROBLEME
diff --git a/man/de_DE/route.8 b/man/de_DE/route.8
index a28c9d1..1a32712 100644
--- a/man/de_DE/route.8
+++ b/man/de_DE/route.8
@@ -55,7 +55,7 @@ Schnittstelle]
 .SH BESCHREIBUNG
 .B Route
 wird zum \(:Andern der IP-Routing-Tabelle der Kernels verwendet.  Seine
-prim\(:are Verwendung ist statische Routen f\*:ur bestimmte Rechner oder
+prim\(:are Verwendung ist statische Routen f\(:ur bestimmte Rechner oder
 Netzwerke \(:uber eine Schnittstelle einzutragen, nachdem diese mit dem
 Programm
 .BR ifconfig (8)
diff --git a/man/en_US/arp.8 b/man/en_US/arp.8
index d859b46..c065e22 100644
--- a/man/en_US/arp.8
+++ b/man/en_US/arp.8
@@ -1,56 +1,111 @@
-.TH ARP 8 "5 Jan 1999" "net-tools" "Linux Programmer's Manual"
+.TH ARP 8 "2008\-10\-03" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 arp \- manipulate the system ARP cache
 .SH SYNOPSIS
-.B arp 
-.RB [ \-vn ] 
-.RB [ "\-H type" ] 
-.RB [ "-i if" ] 
-.B -a 
-.RB [ hostname ]
+.B arp
+.RB [ \-vn ]
+.RB [ \-H
+.IR type ]
+.RB [ \-i
+.IR if ]
+.RB [ \-ae ]
+.RI [ hostname ]
 .PP
-.B arp 
+.B arp
 .RB [ \-v ]
-.RB [ "\-i if" ] 
-.B "\-d hostname"
+.RB [ \-i
+.IR if ]
+.B \-d
+.I hostname
 .RB [ pub ]
 .PP
-.B arp 
-.RB [ \-v ] 
-.RB [ "\-H type" ] 
-.RB [ "\-i if" ] 
-.B -s hostname hw_addr
-.RB [ temp ] 
+.B arp
+.RB [ \-v ]
+.RB [ \-H
+.IR type ]
+.RB [ \-i
+.IR if ]
+.B \-s
+.I hostname hw_addr
+.RB [ temp ]
 .PP
-.B arp 
-.RB [ \-v ] 
-.RB [ "\-H type" ] 
-.RB [ "\-i if" ] 
-.B -s hostname hw_addr
-.RB [ "netmask nm" ] 
+.B arp
+.RB [ \-v ]
+.RB [ \-H
+.IR type ]
+.RB [ \-i
+.IR if ]
+.B \-s
+.I hostname hw_addr
+.RB [ netmask
+.IR nm ]
 .B pub
 .PP
-.B arp 
-.RB [ \-v ] 
-.RB [ "\-H type" ] 
-.RB [ "\-i if" ] 
-.B -Ds hostname ifa
-.RB [ "netmask nm" ] 
+.B arp
+.RB [ \-v ]
+.RB [ \-H
+.IR type ]
+.RB [ \-i
+.IR if ]
+.B \-Ds
+.I hostname
+.I ifname
+.RB [ netmask
+.IR nm ]
 .B pub
 .PP
-.B arp 
+.B arp
 .RB [ \-vnD ]
-.RB [ "\-H type" ] 
-.RB [ "-i if" ]
-.B -f [filename]
+.RB [ \-H
+.IR type ]
+.RB [ \-i
+.IR if ]
+.B \-f
+.RI [ filename ]
 
 .SH DESCRIPTION
 .B Arp
-manipulates the kernel's ARP cache in various ways.  The primary options
-are clearing an address mapping entry and manually setting up one.  For
-debugging purposes, the
+manipulates or displays the kernel's IPv4 network neighbour cache. It can add
+entries to the table, delete one or display the current content.
+
+.B ARP
+stands for Address Resolution Protocol, which is used to find the media
+access control address of a network neighbour for a given IPv4 Address.
+.SH MODES
 .B arp
-program also allows a complete dump of the ARP cache.
+with no mode specifier will print the current content of the table. It is
+possible to limit the number of entries printed, by specifying an hardware
+address type, interface name or host address.
+
+.B arp -d
+.I address
+will delete a ARP table entry. Root or netadmin privilege is required to do
+this. The entry is found by IP address. If a hostname is given, it will be
+resolved before looking up the entry in the ARP table.
+
+.B arp -s
+.I address hw_addr
+is used to set up a new table entry. The format of the
+.I hw_addr
+parameter is dependent on the hardware class, but for most classes one can
+assume that the usual presentation can be used.  For the Ethernet class,
+this is 6 bytes in hexadecimal, separated by colons. When adding proxy arp
+entries (that is those with the
+.BR pub lish
+flag set) a
+.B netmask
+may be specified to proxy arp for entire subnets. This is not good
+practice, but is supported by older kernels because it can be
+useful. If the
+.B temp
+flag is not supplied entries will be permanent stored into the ARP
+cache. To simplify setting up entries for one of your own network interfaces, you can use the
+.B "arp \-Ds"
+.I address ifname
+form. In that case the hardware address is taken from the interface with the
+specified name.
+
+.br
 .SH OPTIONS
 .TP
 .B "\-v, \-\-verbose"
@@ -60,7 +115,7 @@ Tell the user what is going on by being verbose.
 shows numerical addresses instead of trying to determine symbolic host, port
 or user names.
 .TP
-.B "\-H type, \-\-hw-type type"
+\fB\-H\fI type\fR, \fB\-\-hw\-type\fI type\fR, \fB\-t\fI type\fR
 When setting or reading the ARP cache, this optional parameter tells
 .B arp
 which class of entries it should check for.  The default value of
@@ -76,23 +131,18 @@ Other values might include network technologies such as
 and
 .RB "NET/ROM (" netrom ")."
 .TP
-.B "\-a [hostname], \-\-display [hostname]"
-Shows the entries of the specified hosts.  If the
-.B hostname
-parameter is not used,
-.B all
-entries will be displayed.
+.B \-a
+Use alternate BSD style output format (with no fixed columns).
 .TP
-.B "\-d hostname, \-\-delete hostname"
-Remove any entry for the specified host.  This can be used if the
-indicated host is brought down, for example.
+.B \-e
+Use default Linux style output format (with fixed columns).
 .TP
 .B "\-D, \-\-use-device"
-Use the interface
-.BR ifa "'s"
-hardware address.
+Instead of a hw_addr, the given argument is the name of an interface.
+.B arp
+will use the MAC address of that interface for the table entry. This is usually the best option to set up a proxy ARP entry to yourself.
 .TP
-.B "\-i If, \-\-device If"
+\fB\-i\fI If\fR, \fB\-\-device\fI If\fR
 Select an interface. When dumping the ARP cache only entries matching
 the specified interface will be printed. When setting a permanent or
 .B temp
@@ -101,53 +151,36 @@ option is not used, the kernel will guess based on the routing
 table. For
 .B pub
 entries the specified interface is the interface on which ARP requests will
-be answered. 
+be answered.
 .br
 .B NOTE:
 This has to be different from the interface to which the IP
 datagrams will be routed.
-.TP
-.B "\-s hostname hw_addr, \-\-set hostname"
-Manually create an ARP address mapping entry for host
-.B hostname
-with hardware address set to
-.B hw_addr
-.  The format of the hardware address is dependent on the hardware
-class, but for most classes one can assume that the usual presentation
-can be used.  For the Ethernet class, this is 6 bytes in hexadecimal,
-separated by colons. When adding proxy arp entries (that is those with
-the 
-.BR pub lish 
-flag set a 
-.B netmask 
-may be specified to proxy arp for entire subnets. This is not good
-practice, but is supported by older kernels because it can be
-useful. If the
-.B temp
-flag is not supplied entries will be permanent stored into the ARP
-cache.
-.br
 .B NOTE:
-As of kernel 2.2.0 it is no longer possible to set an ARP entry for an 
+As of kernel 2.2.0 it is no longer possible to set an ARP entry for an
 entire subnet. Linux instead does automagic proxy arp when a route
-exists and it is forwarding. See 
+exists and it is forwarding. See
 .BR arp (7)
-for details.
+for details. Also the
+.B dontpub
+option which is available for delete and set operations cannot be
+used with 2.4 and newer kernels.
 .TP
-.B "\-f filename, \-\-file filename"
+\fB\-f\fI filename\fR, \fB\-\-file\fI filename\fR
 Similar to the
 .B \-s
 option, only this time the address info is taken from file
-.B filename
-.  This can be used if ARP entries for a lot of hosts have to be
+.IR filename .
+This can be used if ARP entries for a lot of hosts have to be
 set up.  The name of the data file is very often
-.IR /etc/ethers , 
-but this is not official. If no filename is specified /etc/ethers
+.IR /etc/ethers ,
+but this is not official. If no filename is specified
+.I /etc/ethers
 is used as default.
 .sp 1
 The format of the file is simple; it
 only contains ASCII text lines with a hostname, and a hardware
-address separated by whitespace. Additionally the 
+address separated by whitespace. Additionally the
 .BR "pub" , " temp" " and" " netmask"
 flags can be used.
 .LP
@@ -157,9 +190,9 @@ is expected, one can also enter an
 .B "IP address"
 in dotted-decimal notation.
 .P
-As a special case for compatibility the order of the hostname and 
+As a special case for compatibility the order of the hostname and
 the hardware address can be exchanged.
-.LP 
+.LP
 Each complete entry in the ARP cache will be marked with the
 .B C
 flag. Permanent entries are marked with
@@ -167,8 +200,18 @@ flag. Permanent entries are marked with
 and published entries have the
 .B P
 flag.
+.SH EXAMPLES
+.B /usr/sbin/arp -i eth0 -Ds 10.0.0.2 eth1 pub
+
+This will answer ARP requests for 10.0.0.2 on eth0 with the MAC address for
+eth1.
+
+.B /usr/sbin/arp -i eth1 -d 10.0.0.1
+
+Delete the ARP table entry for 10.0.0.1 on interface eth1. This will match
+published proxy ARP entries and permanent entries.
 .SH FILES
-.I /proc/net/arp,
+.I /proc/net/arp
 .br
 .I /etc/networks
 .br
@@ -178,5 +221,4 @@ flag.
 .SH SEE ALSO
 rarp(8), route(8), ifconfig(8), netstat(8)
 .SH AUTHORS
-Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> with a lot of improvements
-from net-tools Maintainer Bernd Eckenfels <net-tools@lina.inka.de>.
+Fred N. van Kempen <waltje@uwalt.nl.mugnet.org>, Bernd Eckenfels <net\-tools@lina.inka.de>.
diff --git a/man/en_US/ethers.5 b/man/en_US/ethers.5
index f3ba116..5a02892 100644
--- a/man/en_US/ethers.5
+++ b/man/en_US/ethers.5
@@ -1,4 +1,4 @@
-.TH ETHERS 5 "April 26th, 1996" "" "File formats"
+.TH ETHERS 5 "2008\-10\-03" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME \"{{{roff}}}\"{{{
 ethers \- Ethernet address to IP number database
 .\"}}}
@@ -7,17 +7,17 @@ ethers \- Ethernet address to IP number database
 IP numbers, one line for each IP number:
 .sp
 .RS
-\fIEthernet-address\fP  \fIIP-number\fP
+\fIEthernet\-address\fP  \fIIP\-number\fP
 .RE
 .sp
-The two items are separated by any number of SPACE and/or TAB char
-acters.   A \fB#\fP at the beginning of a line starts a comment
-which extends to the end of the line.  The \fIEthernet-address\fP is
+The two items are separated by any number of SPACE and/or TAB characters.
+A \fB#\fP at the beginning of a line starts a comment
+which extends to the end of the line.  The \fIEthernet\-address\fP is
 written as
 .IR x : x : x : x : x : x ,
 where \fIx\fP is a hexadecimal number between \fB0\fP and \fBff\fP
 which represents one byte of the address, which is in network byte
-order (big-endian).  The \fIIP-number\fP may be a hostname which
+order (big-endian).  The \fIIP\-number\fP may be a hostname which
 can be resolved by DNS or a dot separated number.
 .\"}}}
 .SH EXAMPLES \"{{{
diff --git a/man/en_US/hostname.1 b/man/en_US/hostname.1
index cea3f6e..c45b7b6 100644
--- a/man/en_US/hostname.1
+++ b/man/en_US/hostname.1
@@ -1,66 +1,60 @@
-.TH HOSTNAME 1 "28 Jan 1996" "net-tools" "Linux Programmer's Manual"
+.TH HOSTNAME 1 "2013\-08\-29" "net\-tools" "Linux System Administrator's Manual"
 
 .SH NAME
 hostname \- show or set the system's host name
 .br
-domainname \- show or set the system's NIS/YP domain name
-.br
 dnsdomainname \- show the system's DNS domain name
 .br
-nisdomainname \- show or set system's NIS/YP domain name
+domainname \- show or set the system's NIS/YP domain name
 .br
-ypdomainname \- show or set the system's NIS/YP domain name
+nisdomainname \- show or set system's NIS/YP domain name
 .br
 nodename \- show or set the system's DECnet node name
+.br
+ypdomainname \- show or set the system's NIS/YP domain name
 
 .SH SYNOPSIS
 .B hostname
 .RB [ \-v ]
-.RB [ \-a ]
-.RB [ \-\-alias ]
-.RB [ \-d ]
-.RB [ \-\-domain ]
-.RB [ \-f ]
-.RB [ \-\-fqdn ]
-.RB [ \-i ]
-.RB [ \-\-ip-address ]
-.RB [ \-\-long ]
-.RB [ \-s ]
-.RB [ \-\-short ]
-.RB [ \-y ]
-.RB [ \-\-yp ]
-.RB [ \-\-nis ]
-.RB [ \-n ]
-.RB [ \-\-node ]
+.RB [ \-s | \-\-short ]
+
+.PP
+.B hostname
+.RB [ \-v ]
+.RB [ \-a | \-\-alias ]
+.RB [ \-d | \-\-domain ]
+.RB [ \-f | \-\-fqdn | \-\-long ]
+.RB [ \-i | \-\-ip\-address ]
+
+.PP
+.B hostname
+.RB [ \-v ]
+.RB [ \-y | \-\-yp | \-\-nis ]
+.RB [ \-n | \-\-node ]
 
 .PP
 .B hostname 
 .RB [ \-v ]
-.RB [ \-F\ filename ]
-.RB [ \-\-file\ filename ]
-.RB [ hostname ]
+.RB [ \-F\ filename | \-\-file\ filename ]
+.RI [ newname ]
 
 .PP
 .B domainname
 .RB [ \-v ]
-.RB [ \-F\ filename ]
-.RB [ \-\-file\ filename ]
-.RB [ name ]
+.RB [ \-F\ filename | \-\-file\ filename ]
+.RI [ newname ]
 
 .PP 
 .B nodename
 .RB [ \-v ]
-.RB [ \-F\ filename ]
-.RB [ \-\-file\ filename ]
-.RB [ name ]
+.RB [ \-F\ filename | \-\-file\ filename ]
+.RI [ newname ]
 
 .PP
 .B hostname
-.RB [ \-v ]
-.RB [ \-h ]
-.RB [ \-\-help ]
-.RB [ \-V ]
-.RB [ \-\-version ]
+.RB [ \-v | \-\-verbose ]
+.RB [ \-h | \-\-help ]
+.RB [ \-V | \-\-version ]
 
 .PP
 .B dnsdomainname
@@ -124,12 +118,8 @@ command (see
 below).
 
 .LP
-The host name is usually set once at system startup in
-.I /etc/rc.d/rc.inet1
-or
-.I /etc/init.d/boot
-(normally by reading the contents of a file which contains
-the host name, e.g. 
+The host name is usually set once at system startup by reading the 
+contents of a file which contains the host name, e.g. 
 .IR /etc/hostname ).
 
 .SS THE FQDN
@@ -142,16 +132,17 @@ with this command. The FQDN of the system is the name that the
 returns for the host name. 
 
 .LP
-Technically: The FQDN is the name
-.BR gethostbyname (2)
-returns for the host name returned by
-.BR gethostname (2).
-The DNS domain name is the part after the first dot.
+Technically: The FQDN is the canonical name returned by
+.BR gethostbyname2 (2)
+when resolving the result of the 
+.BR gethostname (2)
+name. The DNS domain name is the part after the first dot.
 .LP
 Therefore it depends on the configuration (usually in 
 .IR /etc/host.conf )
-how you can change it. Usually (if the hosts file is parsed before DNS or 
-NIS) you can change it in 
+how you can change it. If
+.B hosts 
+is the first lookup method, you can change the FQDN in 
 .IR /etc/hosts .
 
 
@@ -161,27 +152,23 @@ NIS) you can change it in
 Display the alias name of the host (if used).
 .TP
 .I "\-d, \-\-domain"
-Display the name of the DNS domain. Don't use the command
-.B domainname
-to get the DNS domain name because it will show the NIS domain name and
-not the DNS domain name. Use
+Display the name of the DNS domain (this is the FQDN without the segment up
+to the first dot). This is equivalent to using the 
 .B dnsdomainname 
-instead.
+command.
 .TP
 .I "\-F, \-\-file filename"
-Read the host name from the specified file. Comments (lines starting with
+Read the new host name from the specified file. Comments (lines starting with
 a `#') are ignored.
 .TP
 .I "\-f, \-\-fqdn, \-\-long"
-Display the FQDN (Fully Qualified Domain Name). A FQDN consists of a
-short host name and the DNS domain name. Unless you are using bind or NIS
-for host lookups you can change the FQDN and the DNS domain name (which is
-part of the FQDN) in the \fI/etc/hosts\fR file.
+Display the FQDN (Fully Qualified Domain Name). A FQDN consists of name
+including the DNS domain.
 .TP
 .I "\-h, \-\-help"
 Print a usage message and exit.
 .TP
-.I "\-i, \-\-ip-address"
+.I "\-i, \-\-ip\-address"
 Display the IP address(es) of the host.
 .TP
 .I "\-n, \-\-node"
@@ -203,11 +190,13 @@ Display the NIS domain name. If a parameter is given (or
 .B \-\-file name
 ) then root can also set a new NIS domain.
 .SH FILES
+.B /etc/hostname
 .B /etc/hosts
+.B /etc/host.conf
+
 .SH AUTHOR
-Peter Tobias, <tobias@et-inf.fho-emden.de>
+Peter Tobias, <tobias@et\-inf.fho\-emden.de>
 .br
-Bernd Eckenfels, <net-tools@lina.inka.de> (NIS and manpage).
+Bernd Eckenfels, <net\-tools@lina.inka.de> (NIS and manpage).
 .br
 Steve Whitehouse, <SteveW@ACM.org> (DECnet support and manpage).
-
diff --git a/man/en_US/ifconfig.8 b/man/en_US/ifconfig.8
index e75cf59..0243be3 100644
--- a/man/en_US/ifconfig.8
+++ b/man/en_US/ifconfig.8
@@ -1,10 +1,10 @@
-.TH IFCONFIG 8 "14 August 2000" "net-tools" "Linux Programmer's Manual"
+.TH IFCONFIG 8 "2008\-10\-03" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 ifconfig \- configure a network interface
 .SH SYNOPSIS
-.B "ifconfig [interface]"
+.B "ifconfig [-v] [-a] [-s] [interface]"
 .br
-.B "ifconfig interface [aftype] options | address ..."
+.B "ifconfig [-v] interface [aftype] options | address ..."
 .SH DESCRIPTION
 .B Ifconfig
 is used to configure the kernel-resident network interfaces.  It is
@@ -18,7 +18,7 @@ a single
 .B interface
 argument is given, it displays the status of the given interface
 only; if a single
-.B -a
+.B \-a
 argument is given, it displays the status of all interfaces, even
 those that are down.  Otherwise, it configures an interface.
 
@@ -39,13 +39,34 @@ supported address families include
 (Novell IPX) and
 .B netrom
 (AMPR Packet radio).
+All numbers supplied as parts in IPv4 dotted decimal notation may be decimal,
+octal, or hexadecimal, as specified in the ISO C standard (that is, a leading 0x
+or 0X implies hexadecimal; otherwise, a leading '0' implies octal; otherwise,
+the number is interpreted as decimal). Use of hexadecimal and octal numbers
+is not RFC-compliant and therefore its use is discouraged.
 .SH OPTIONS
 .TP
+.B -a
+display all interfaces which are currently available, even if down
+.TP
+.B -s
+display a short list (like netstat -i)
+.TP
+.B -v
+be more verbose for some error conditions
+.TP
 .B interface
 The name of the interface.  This is usually a driver name followed by
 a unit number, for example
 .B eth0
-for the first Ethernet interface.
+for the first Ethernet interface. If your kernel supports alias interfaces,
+you can specify them with 
+.B eth0:0
+for the first alias of eth0. You can use them to assign a second address. To
+delete an alias interface use
+.BR "ifconfig eth0:0 down" .
+Note: for every scope (i.e. same net with address/netmask combination) all
+aliases are deleted, if you delete the first (primary).
 .TP
 .B up
 This flag causes the interface to be activated.  It is implicitly
@@ -69,9 +90,6 @@ Enable or disable
 mode.  If selected, all multicast packets on the network will be
 received by the interface.
 .TP
-.B "metric N"
-This parameter sets the interface metric.
-.TP
 .B "mtu N"
 This parameter sets the Maximum Transfer Unit (MTU) of an interface.
 .TP
@@ -92,7 +110,7 @@ Add an IPv6 address to an interface.
 .B "del addr/prefixlen"
 Remove an IPv6 address from an interface.
 .TP
-.B "tunnel aa.bb.cc.dd"
+.B "tunnel ::aa.bb.cc.dd"
 Create a new SIT (IPv6-in-IPv4) device, tunnelling to the given destination.
 .TP
 .B "irq addr"
@@ -122,13 +140,13 @@ are
 can be used to tell the driver to auto-sense the media.  Again, not
 all drivers can do this.
 .TP
-.B "[-]broadcast [addr]"
+.B "[\-]broadcast [addr]"
 If the address argument is given, set the protocol broadcast
 address for this interface.  Otherwise, set (or clear) the
 .B IFF_BROADCAST
 flag for the interface.
 .TP
-.B "[-]pointopoint [addr]"
+.B "[\-]pointopoint [addr]"
 This keyword enables the
 .B point-to-point
 mode of an interface, meaning that it is a direct link between two
@@ -173,23 +191,40 @@ alias interfaces anymore. The statistics printed for the original address
 are shared with all alias addresses on the same device. If you want per-address
 statistics you should add explicit accounting
 rules for the address using the 
-.BR ipchains(8)
+.BR iptables (8)
 command.
 .LP
-Interrupt problems with Ethernet device drivers fail with EAGAIN. See
-.I http://cesdis.gsfc.nasa.gov/linux/misc/irq-conflict.html
+Since net\-tools 1.60\-4 ifconfig is printing byte counters and human readable
+counters with IEC 60027-2 units. So 1 KiB are 2^10 byte. Note, the numbers 
+are truncated to one decimal (which can by quite a large error if you 
+consider 0.1 PiB is 112.589.990.684.262 bytes :)
+.LP
+Interrupt problems with Ethernet device drivers fail with EAGAIN
+.I (SIOCSIIFLAGS: Resource temporarily unavailable)
+it is most likely a interrupt conflict. See
+.I http://www.scyld.com/expert/irq\-conflict.html
 for more information.
 .SH FILES
-.I /proc/net/socket 
-.br
 .I /proc/net/dev
 .br
 .I /proc/net/if_inet6
 .SH BUGS
+Ifconfig uses the ioctl access method to get the full address information,
+which limits hardware addresses to 8 bytes.
+Because Infiniband hardware address has 20 bytes,
+only the first 8 bytes are displayed correctly.
+Please use
+.B ip link
+command from
+.B iproute2
+package to display link layer informations including the hardware address.
+.LP
 While appletalk DDP and IPX addresses will be displayed they cannot be
 altered by this command.
 .SH SEE ALSO
-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
+route(8), netstat(8), arp(8), rarp(8), iptables(8), ifup(8), interfaces(5).
+.br
+http://physics.nist.gov/cuu/Units/binary.html - Prefixes for binary multiples
 .SH AUTHORS
 Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
 .br
@@ -198,3 +233,5 @@ Alan Cox, <Alan.Cox@linux.org>
 Phil Blundell, <Philip.Blundell@pobox.com>
 .br
 Andi Kleen
+.br
+Bernd Eckenfels, <net\-tools@lina.inka.de>
diff --git a/man/en_US/mii-tool.8 b/man/en_US/mii-tool.8
index 6b773ec..7decaac 100644
--- a/man/en_US/mii-tool.8
+++ b/man/en_US/mii-tool.8
@@ -1,13 +1,12 @@
 .\" Copyright (C) 2000 David A. Hinds -- dhinds@pcmcia.sourceforge.org
-.\" mii-tool.8 1.5 2000/04/25 22:58:19
 .\"
-.TH MII-TOOL 8 "2000/04/25 22:58:19" "net-tools"
+.TH MII\-TOOL 8 "2013\-02\-15" "net\-tools" "Linux System Administrator's Manual"
 
 .SH NAME
-mii-tool \- view, manipulate media-independent interface status
+mii\-tool \- view, manipulate media-independent interface status
 
 .SH SYNOPSIS
-.B mii-tool
+.B mii\-tool
 [\fB\-v\fR, \fB\-\-verbose\fR]
 [\fB\-V\fR, \fB\-\-version\fR]
 [\fB\-R\fR, \fB\-\-reset\fR]
@@ -16,7 +15,8 @@ mii-tool \- view, manipulate media-independent interface status
 [\fB\-l\fR, \fB\-\-log\fR]
 [\fB\-A\fR, \fB\-\-advertise=\fImedia,...\fR]
 [\fB\-F\fR, \fB\-\-force=\fImedia\fR]
-.RI [ "interface\ ..." ]
+[\fB\-p\fR, \fB\-\-phy=\fIaddr\fR]
+.RI "interface\ ..."
 
 .SH DESCRIPTION
 This utility checks or sets the status of a network interface's Media
@@ -32,18 +32,21 @@ single-speed hubs, are unable to autonegotiate.  To handle such
 devices, the MII protocol also allows for establishing a link by
 simply detecting either a 10baseT or 100baseT link beat.  The \fB\-F\fR
 or \fB\-\-force\fR options can be used to force the MII to operate in
-one mode, instead of autonegotiating.  The \fB\-A\fR and \fB-F\fR
+one mode, instead of autonegotiating.  The \fB\-A\fR and \fB\-F\fR
 options are mutually exclusive.
 .PP
 The default short output reports the negotiated link speed and link
-status for each interface.  If an interface or interfaces are not
-specified on the command line, then \fBmii-tool\fR will check any
-available interfaces from \fBeth0\fR through \fBeth7\fR.
+status for each interface.
 .SH OPTIONS
 .TP
 \fB\-v\fR, \fB\-\-verbose\fR
 Display more detailed MII status information.  If used twice, also
 display raw MII register contents.
+.br
+\fBAlert:\fR If used three times, will force reading all MII
+registers, including non standard ones. It's not guaranteed any
+valid answer from PHY while PHY communication can even hang.
+With driver e1000e will fail while reading register 0x07.
 .TP
 \fB\-V\fR, \fB\-\-version\fR
 Display program version information.
@@ -59,7 +62,7 @@ Watch interface(s) and report changes in link status.  The MII
 interfaces are polled at one second intervals.
 .TP
 \fB\-l\fR, \fB\-\-log\fR
-Used with \fB-w\fR, records link status changes in the system log
+Used with \fB\-w\fR, records link status changes in the system log
 instead of printing on standard output.
 .TP
 \fB\-F\fI media\fR, \fB\-\-force=\fImedia\fR
@@ -71,8 +74,31 @@ Enable and restart autonegotiation, and advertise only the specified
 media technologies.  Multiple technologies should be separated by
 commas.  Valid media are \fB100baseT4\fR, \fB100baseTx-FD\fR,
 \fB100baseTx-HD\fR, \fB10baseT-FD\fR, and \fB10baseT-HD\fR.
+.TP
+\fB\-p\fI addr\fR, \fB\-\-phy=\fIaddr\fR
+Override the MII address provided by kernel with value \fBaddr\fR.
+
+.SH DIAGNOSTICS
+.TP
+SIOCGMIIPHY on 'eth?' failed: Invalid argument
+If the interface is not running (up), kernel will refuse to report its link state.
+.TP
+SIOCGMIIPHY on 'eth?' failed: Operation not permitted
+Most kernels restrict access to root.
+.TP
+SIOCGMIIPHY on 'eth?' failed: No such device
+This error is shown, if the kernel does not know about the named device.
+.TP
+SIOCGMIIPHY on 'eth?' failed: Operation not supported 
+The interface in question does not support MII queries. Most likely, it does not have 
+MII transceivers, at all.
 
 .SH AUTHORS
 David Hinds \- dhinds@pcmcia.sourceforge.org
 .br
 Donald Becker \- becker@scyld.com
+.br
+Bernd Eckenfels \- net-tools@lina.inka.de
+
+.SH SEE ALSO
+http://net-tools.sourceforge.net \- Homepage of the net-tools project
diff --git a/man/en_US/nameif.8 b/man/en_US/nameif.8
index ff2430f..195304d 100644
--- a/man/en_US/nameif.8
+++ b/man/en_US/nameif.8
@@ -1,10 +1,10 @@
-.TH NAMEIF 8 "18 Oct 2000" "net-tools" "Linux's Administrator's Manual"
+.TH NAMEIF 8 "2008\-10\-03" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 nameif \- name network interfaces based on MAC addresses
 .SH SYNOPSIS
-.B "nameif [-c configfile] [-s]"
+.B "nameif [\-c configfile] [\-s]"
 .br
-.B "nameif [-c configfile] [-s] {interface macaddress}"
+.B "nameif [\-c configfile] [\-s] {interface macaddress}"
 .SH DESCRIPTION
 .B nameif 
 renames network interfaces based on mac addresses. When no arguments are
@@ -18,11 +18,11 @@ looks for the interface with the given MAC address and renames it to the
 name given.
 
 When the 
-.I -s
+.I \-s
 argument is given all error messages go to the syslog.
 
 When the 
-.I -c 
+.I \-c 
 argument is given with a file name that file is read instead of /etc/mactab.
 
 .SH NOTES
diff --git a/man/en_US/netstat.8 b/man/en_US/netstat.8
index b33996a..3157dc4 100644
--- a/man/en_US/netstat.8
+++ b/man/en_US/netstat.8
@@ -6,9 +6,10 @@
 .\" Modified: Bernd.Eckenfels@inka.de
 .\" Modified: Andi Kleen ak@muc.de 
 .\" Modified: Tuan Hoang tqhoang@bigfoot.com 
+.\" Modified: Brian Micek bmicek@gmail.com
 .\"
 .\"
-.TH NETSTAT 8 "19 December 2000" "net-tools" "Linux Programmer's Manual"
+.TH NETSTAT 8 "2012\-09\-15" "net\-tools" "Linux System Administrator's Manual"
 
 .SH NAME
 netstat \- Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
@@ -19,17 +20,20 @@ netstat \- Print network connections, routing tables, interface statistics, masq
 .RI [ address_family_options ]
 .RB [ \-\-tcp | \-t ]
 .RB [ \-\-udp | \-u ]
+.RB [ \-\-udplite | \-U ]
+.RB [ \-\-sctp | \-S ]
 .RB [ \-\-raw | \-w ]
 .RB [ \-\-listening | \-l ]
 .RB [ \-\-all | \-a ]
 .RB [ \-\-numeric | \-n ]
-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-numeric\-hosts "] [" \-\-numeric\-ports "] [" \-\-numeric\-users ]
 .RB [ \-\-symbolic | \-N ]
 .RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
 .RB [ \-\-timers | \-o ]
 .RB [ \-\-program | \-p ]
 .RB [ \-\-verbose | \-v ]
 .RB [ \-\-continuous | \-c]
+.RB [ \-\-wide | \-W]
 .P
 .B netstat 
 .RB { \-\-route | \-r }
@@ -37,37 +41,38 @@ netstat \- Print network connections, routing tables, interface statistics, masq
 .RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
 .RB [ \-\-verbose | \-v ]
 .RB [ \-\-numeric | \-n ]
-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-numeric\-hosts "] [" \-\-numeric\-ports "] [" \-\-numeric\-users ]
 .RB [ \-\-continuous | \-c]
 .P
 .B netstat
 .RB { \-\-interfaces | \-i }
-.RI [ iface ]
 .RB [ \-\-all | \-a ]
 .RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
 .RB [ \-\-verbose | \-v ]
 .RB [ \-\-program | \-p ]
 .RB [ \-\-numeric | \-n ]
-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-numeric-hosts "] [" \-\-numeric-ports "] [" \-\-numeric-users ]
 .RB [ \-\-continuous | \-c]
 .P
 .B netstat
 .RB { \-\-groups | \-g }
 .RB [ \-\-numeric | \-n ]
-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-numeric\-hosts "] [" \-\-numeric\-ports "] [" \-\-numeric\-users ]
 .RB [ \-\-continuous | \-c]
 .P
 .B netstat
 .RB { \-\-masquerade | \-M }
 .RB [ \-\-extend | \-e ]
 .RB [ \-\-numeric | \-n ]
-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-numeric\-hosts "] [" \-\-numeric\-ports "] [" \-\-numeric\-users ]
 .RB [ \-\-continuous | \-c]
 .P
 .B netstat
 .RB { \-\-statistics | -s }
 .RB [ \-\-tcp | \-t ]
 .RB [ \-\-udp | \-u ]
+.RB [ \-\-udplite | \-U ]
+.RB [ \-\-sctp | \-S ]
 .RB [ \-\-raw | \-w ]
 .P
 .B netstat 
@@ -78,13 +83,26 @@ netstat \- Print network connections, routing tables, interface statistics, masq
 .P
 .IR address_family_options :
 .PP
-.RB [ \-\-protocol= { inet , unix , ipx , ax25 , netrom , ddp }[, ...] ]
+.RB [ -4 | \-\-inet ]
+.RB [ -6 | \-\-inet6 ]
+.RB [ \-\-protocol= { inet , inet6 , unix , ipx , ax25 , netrom , ddp ", ... } ]"
 .RB [ \-\-unix | \-x ] 
-.RB [ \-\-inet | \-\-ip ]
+.RB [ \-\-inet | \-\-ip | \-\-tcpip ]
 .RB [ \-\-ax25 ]
+.RB [ \-\-x25 ]
+.RB [ \-\-rose ]
+.RB [ \-\-ash ]
 .RB [ \-\-ipx ] 
 .RB [ \-\-netrom ]
-.RB [ \-\-ddp ]
+.RB [ \-\-ddp | \-\-appletalk ]
+.RB [ \-\-econet | \-\-ec ]
+
+.SH NOTES
+This program is obsolete.
+Replacement for \fBnetstat\fR is \fBss\fR.
+Replacement for \fBnetstat -r\fR is \fBip route\fR.
+Replacement for \fBnetstat -i\fR is \fBip -s link\fR.
+Replacement for \fBnetstat -g\fR is \fBip maddr\fR.
 
 .SH DESCRIPTION
 .B Netstat
@@ -98,12 +116,17 @@ displays a list of open sockets.  If you don't specify any
 address families, then the active sockets of all configured address
 families will be printed.
 .SS "\-\-route , \-r"
-Display the kernel routing tables.
+Display the kernel routing tables. See the description in 
+.BR route (8) 
+for details. 
+.B netstat -r 
+and 
+.B route -e 
+produce the same output.
 .SS "\-\-groups , \-g"
 Display multicast group membership information for IPv4 and IPv6.
-.SS "\-\-interface=\fIiface \fR, \fB\-i"
-Display a table of all network interfaces, or the specified
-.IR iface ) .
+.SS "\-\-interfaces, \-i"
+Display a table of all network interfaces.
 .SS "\-\-masquerade , \-M"
 Display a list of masqueraded connections.
 .SS "\-\-statistics , \-s"
@@ -112,16 +135,19 @@ Display summary statistics for each protocol.
 .SS "\-\-verbose , \-v"
 Tell the user what is going on by being verbose. Especially print some
 useful information about unconfigured address families.
+.SS "\-\-wide , \-W"
+Do not truncate IP addresses by using output as wide as needed. This is
+optional for now to not break existing scripts.
 .SS "\-\-numeric , \-n"
 Show numerical addresses instead of trying to determine symbolic host, port
 or user names.
-.SS "\-\-numeric-hosts"
+.SS "\-\-numeric\-hosts"
 shows numerical host addresses but does not affect the resolution of
 port or user names.
-.SS "\-\-numeric-ports"
+.SS "\-\-numeric\-ports"
 shows numerical port numbers but does not affect the resolution of
 host or user names.
-.SS "\-\-numeric-users"
+.SS "\-\-numeric\-users"
 shows numerical user IDs but does not affect the resolution of host or
 port names.
 
@@ -131,15 +157,18 @@ protocols) for which connections are to be shown.
 .I family 
 is a comma (',') separated list of address family keywords like
 .BR inet , 
+.BR inet6 ,
 .BR unix , 
 .BR ipx , 
 .BR ax25 , 
 .BR netrom ,
+.BR econet ,
 and
 .BR ddp .
 This has the same effect as using the 
-.BR \-\-inet ,
-.BR \-\-unix " (" \-x ),
+.BR \-\-inet | -4 ,
+.BR \-\-inet6 | -6 ,
+.BR \-\-unix | -x ,
 .BR \-\-ipx ,
 .BR \-\-ax25 ,
 .BR \-\-netrom ,
@@ -149,7 +178,7 @@ options.
 .P
 The address family
 .B inet
-includes raw, udp and tcp protocol sockets.
+(Iv4) includes raw, udp, udplite and tcp protocol sockets.
 .SS "\-c, \-\-continuous"
 This will cause
 .B netstat
@@ -164,23 +193,24 @@ Show the PID and name of the program to which each socket belongs.
 Show only listening sockets.  (These are omitted by default.)
 .SS "\-a, \-\-all"
 Show both listening and non-listening sockets.  With the
-.B --interfaces
-option, show interfaces that are not marked 
+.B \-\-interfaces
+option, show interfaces that are not up
 .SS "\-F"
 Print routing information from the FIB.  (This is the default.)
 .SS "\-C"
 Print routing information from the route cache.
-.IR UP .
 .P
 .SH OUTPUT
 .P
-.SS Active Internet connections \fR(TCP, UDP, raw)\fR
+.SS Active Internet connections \fR(TCP, UDP, UDPLite, raw)\fR
 .SS "Proto" 
-The protocol (tcp, udp, raw) used by the socket. 
-.SS "Recv-Q"
-The count of bytes not copied by the user program connected to this socket.
-.SS "Send-Q"
-The count of bytes not acknowledged by the remote host.
+The protocol (tcp, udp, udpl, raw) used by the socket. 
+.SS "Recv\-Q"
+Established: The count of bytes not copied by the user program connected to this socket.
+Listening: Since Kernel 2.6.18 this column contains the current syn backlog.
+.SS "Send\-Q"
+Established: The count of bytes not acknowledged by the remote host.
+Listening: Since Kernel 2.6.18 this column contains the maximum size of the syn backlog.
 .SS "Local Address" 
 Address and port number of the local end of the socket.  Unless the
 .BR \-\-numeric " (" \-n )
@@ -192,7 +222,7 @@ Address and port number of the remote end of the socket.
 Analogous to "Local Address."
 .SS "State"
 The state of the socket. Since there are no states in raw mode and usually no
-states used in UDP, this column may be left blank. Normally this can be one
+states used in UDP and UDPLite, this column may be left blank. Normally this can be one
 of several values:
 .TP
 .I
@@ -221,7 +251,7 @@ TIME_WAIT
 The socket is waiting after close to handle packets still in the network.
 .TP
 .I
-CLOSED
+CLOSE
 The socket is not being used.
 .TP
 .I
@@ -255,7 +285,7 @@ The username or the user id (UID) of the owner of the socket.
 .SS "PID/Program name"
 Slash-separated pair of the process id (PID) and process name of the 
 process that owns the socket.
-.B --program
+.B \-\-program
 causes this column to be included.  You will also need
 .I superuser
 privileges to see this information on sockets you don't own.  This
@@ -356,13 +386,6 @@ to the socket.
 .SS Active AX.25 sockets
 (this needs to be done by somebody who knows it)
 .PP
-.SH NOTES
-Starting with Linux release 2.2 
-.B netstat -i 
-does not show interface statistics for alias interfaces. To get per
-alias interface counters you need to setup explicit rules using the
-.BR ipchains(8) 
-command.  
 
 .SH FILES
 .ta
@@ -385,6 +408,9 @@ status information via the following files.
 .I /proc/net/udp
 -- UDP socket information
 
+.I /proc/net/udplite
+-- UDPLite socket information
+
 .I /proc/net/igmp
 -- IGMP multicast information
 
@@ -428,9 +454,10 @@ status information via the following files.
 .SH SEE ALSO
 .BR route (8), 
 .BR ifconfig (8), 
-.BR ipchains (8),
 .BR iptables (8),
 .BR proc (5)
+.BR ss (8)
+.BR ip (8)
 .P
 .SH BUGS
 Occasionally strange information may appear if a socket changes
@@ -438,12 +465,10 @@ as it is viewed. This is unlikely to occur.
 .P
 .SH AUTHORS
 The netstat user interface was written by Fred Baumgarten
-<dc6iq@insu1.etec.uni-karlsruhe.de> the man page basically
+<dc6iq@insu1.etec.uni\-karlsruhe.de>, the man page basically
 by Matt Welsh <mdw@tc.cornell.edu>. It was updated by
-Alan Cox <Alan.Cox@linux.org> but could do with a bit more
-work.  It was updated again by Tuan Hoang
-<tqhoang@bigfoot.com>.
-.br
-The man page and the command included in the net-tools
-package is totally rewritten by Bernd Eckenfels 
-<ecki@linux.de>.
+Alan Cox <Alan.Cox@linux.org>, updated again by Tuan Hoang
+<tqhoang@bigfoot.com>. The man page and the command included 
+in the net\-tools package is totally rewritten by Bernd Eckenfels 
+<ecki@linux.de>.  UDPLite options were added by Brian Micek
+<bmicek@gmail.com>
diff --git a/man/en_US/plipconfig.8 b/man/en_US/plipconfig.8
index c6d2567..d42a0bc 100644
--- a/man/en_US/plipconfig.8
+++ b/man/en_US/plipconfig.8
@@ -1,10 +1,18 @@
-.TH PLIPCONFIG 8 "17 February 1995" "" ""
+.TH PLIPCONFIG 8 "2008\-10\-03" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 plipconfig \- fine tune PLIP device parameters 
 .SH SYNOPSIS
-.B "plipconfig interface"
+.B plipconfig interface
+.RB [ nibble
+.IR NN ]
+.RB [ trigger
+.IR NN ]
 .br
-.B "plipconfig interface [nibble NN] [trigger NN] [unit NN]"
+.B plipconfig
+.RB [ \-V ]
+.RB [ \-\-version ]
+.RB [ \-h ]
+.RB [ \-\-help ]
 .SH DESCRIPTION
 .B Plipconfig
 is used to (hopefully) improve PLIP performance by changing the default
diff --git a/man/en_US/rarp.8 b/man/en_US/rarp.8
index e462799..d9d31f9 100644
--- a/man/en_US/rarp.8
+++ b/man/en_US/rarp.8
@@ -1,20 +1,20 @@
-.TH RARP 8 "4 August 1997" "net-tools" "Linux Programmer's Manual"
+.TH RARP 8 "2008\-10\-03" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 rarp \- manipulate the system RARP table
 .SH SYNOPSIS
-.B "rarp [-V] [--version] [-h] [--help]"
+.B "rarp [\-V] [\-\-version] [\-h] [\-\-help]"
 .br
-.B "rarp -a"
+.B "rarp \-a"
 .br
-.B "rarp [-v] -d hostname ..."
+.B "rarp [\-v] \-d hostname ..."
 .br
-.B "rarp [-v] [-t type] -s hostname hw_addr"
+.B "rarp [\-v] [\-t type] \-s hostname hw_addr"
 .SH NOTE
 .P
 This program is obsolete.  From version 2.3, the Linux kernel 
 no longer contains RARP support.  For a replacement RARP daemon, see
 .I
-ftp://ftp.dementia.org/pub/net-tools
+ftp://ftp.dementia.org/pub/net\-tools
 .SH DESCRIPTION
 .B Rarp
 manipulates the kernel's RARP table in various ways.  The primary options
@@ -61,8 +61,8 @@ Remove all RARP entries for the specified host.
 Create a RARP address mapping entry for host
 .B hostname
 with hardware address set to
-.B hw_addr
-.  The format of the hardware address is dependent on the hardware
+.BR hw_addr .
+The format of the hardware address is dependent on the hardware
 class, but for most classes one can assume that the usual presentation
 can be used.  For the Ethernet class, this is 6 bytes in hexadecimal,
 separated by colons.
diff --git a/man/en_US/route.8 b/man/en_US/route.8
index f59c074..19895e9 100644
--- a/man/en_US/route.8
+++ b/man/en_US/route.8
@@ -1,57 +1,62 @@
-.TH ROUTE 8 "2 January 2000" "net-tools" "Linux Programmer's Manual"
+.TH ROUTE 8 "2014\-02\-17" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 route \- show / manipulate the IP routing table
 .SH SYNOPSIS
 .B route
-.RB [ \-CFvnee ]
+.RB [ \-CFvnNee ]
+.RB [ \-A
+family
+.RB | \-4 | \-6 ] 
 .TP
 .B route 
 .RB [ \-v ]
 .RB [ \-A
-family] 
+family 
+.RB | \-4 | \-6 ] 
 .B add 
 .RB [ \-net | \-host ] 
-target 
+.I target 
 .RB [ netmask 
-Nm] 
+.IR Nm ] 
 .RB [ gw 
-Gw] 
+.IR Gw ] 
 .RB [ metric 
-N] 
+.IR N ] 
 .RB [ mss 
-M] 
+.IR M ] 
 .RB [ window 
-W] 
+.IR W ] 
 .RB [ irtt 
-I]
+.IR I ]
 .RB [ reject ]
 .RB [ mod ]
 .RB [ dyn ] 
 .RB [ reinstate ] 
 .RB [[ dev ] 
-If]
+.IR If ]
 .TP
 .B route 
 .RB [ \-v ] 
 .RB [ \-A
-family]
+.I family
+.RB | \-4 | \-6 ]
 .B del 
 .RB [ \-net | \-host ] 
-target 
+.I target 
 .RB [ gw 
-Gw] 
+.IR Gw ] 
 .RB [ netmask 
-Nm] 
+.IR Nm ] 
 .RB [ metric 
-N] 
+.IR M ] 
 .RB [[ dev ]
-If]
+.IR If ]
 .TP
 .B route 
 .RB [ \-V ] 
 .RB [ \-\-version ]
 .RB [ \-h ]
-.RB [ \--help ]
+.RB [ \-\-help ]
 .SH DESCRIPTION
 .B Route
 manipulates the kernel's IP routing tables.  Its primary use is to set
@@ -72,19 +77,27 @@ displays the current contents of the routing tables.
 
 .SH OPTIONS
 .TP
-.B \-A family
-use the specified address family (eg `inet'; use `route --help' for a full 
-list).
+\fB\-A \fIfamily\fR
+use the specified address family (eg `inet'). Use 
+.B route \-\-help
+for a full list. You can use 
+.B \-6 
+as an alias for 
+.B \-\-inet6 
+and 
+.B \-4 
+as an alias for 
+.B \-A inet
+.
 
 .TP 
-.B -F
+.B \-F
 operate on the kernel's FIB (Forwarding Information Base) routing
 table. 
 This is the default.
 .TP 
-.B -C
+.B \-C
 operate on the kernel's routing cache.
-
 .TP
 .B \-v
 select verbose operation.
@@ -96,11 +109,10 @@ nameserver has vanished.
 .TP
 .B \-e
 use
-.BR netstat (8)-format
+.BR netstat (8)\-format
 for displaying the routing table.
 .B \-ee 
 will generate a very long line with all parameters from the routing table.
-
 .TP
 .B del
 delete a route.
@@ -108,25 +120,27 @@ delete a route.
 .B add 
 add a new route.
 .TP
-.B target
-the destination network or host. You can provide IP addresses in dotted
-decimal or host/network names.
+.I target
+the destination network or host. You can provide an addresses or symbolic 
+network or host name. Optionally you can use \fB/\fIprefixlen\fR notation
+instead of using the \fBnetmask\fR option.
 .TP
 .B \-net
 the
-.B target
+.I target
 is a network.
 .TP
-.B -host
+.B \-host
 the
-.B target 
+.I target 
 is a host.
 .TP
-.B netmask NM
+\fBnetmask \fINM\fR
 when adding a network route, the netmask to be used.
 .TP
-.B gw GW
+\fBgw \fIGW\fR
 route packets via a gateway.
+.br
 .B NOTE:
 The specified gateway must be reachable first. This usually means that
 you have to set up a static route to the gateway beforehand. If you specify
@@ -134,91 +148,94 @@ the address of one of your local interfaces, it will be used to decide about
 the interface to which the packets should be routed to. This is a BSDism
 compatibility hack.
 .TP
-.B metric M
-set the metric field in the routing table (used by routing daemons) to M.
+\fBmetric \fIM\fR
+set the metric field in the routing table (used by routing daemons) to \fIM\fR. If this option is not specified the metric for inet6 (IPv6) address family defaults to '1', for inet (IPv4) it defaults to '0'. You should always specify an explicit metric value to not rely on those defaults - they also differ from iproute2.
 .TP 
-.B mss M
-set the TCP Maximum Segment Size (MSS) for connections over this route
-to M bytes. 
-The default is the device MTU minus headers, or a lower MTU when path mtu 
-discovery occured. This setting can be used to force smaller TCP packets on the
-other end when path mtu discovery does not work (usually because of
-misconfigured firewalls that block ICMP Fragmentation Needed)
+\fBmss \fIM\fR
+sets MTU (Maximum Transmission Unit) of the route to \fIM\fR bytes.
+Note that the current implementation of the route command does not allow
+the option to set the Maximum Segment Size (MSS).
 .TP 
-.B window W 
-set the TCP window size for connections over this route to W
+\fBwindow \fIW\fR
+set the TCP window size for connections over this route to \fIW\fR
 bytes. This is typically only used on AX.25 networks and with drivers
 unable to handle back to back frames.
 .TP
-.B irtt I
+\fBirtt \fII\fR
 set the initial round trip time (irtt) for TCP connections over this
-route to I milliseconds (1-12000). This is typically only used on
+route to \fII\fR milliseconds (1-12000). This is typically only used on
 AX.25 networks. If omitted the RFC 1122 default of 300ms is used.
 .TP
 .B reject
 install a blocking route, which will force a route lookup to fail.
 This is for example used to mask out networks before using the default
-route.  This is NOT for firewalling.
+route. This is NOT for firewalling.
 .TP
 .B mod, dyn, reinstate
 install a dynamic or modified route. These flags are for diagnostic
 purposes, and are generally only set by routing daemons.
 .TP
-.B dev If
+\fBdev \fIIf\fR
 force the route to be associated with the specified device, as the
 kernel will otherwise try to determine the device on its own (by
 checking already existing routes and device specifications, and where
 the route is added to). In most normal networks you won't need this.
 
-If 
-.B dev If
+If \fBdev \fIIf\fR
 is the last option on the command line, the word 
 .B dev
 may be omitted, as it's the default. Otherwise the order of the route
-modifiers (metric - netmask - gw - dev) doesn't matter.
+modifiers (\fBmetric netmask gw dev\fR) doesn't matter.
 
 .SH EXAMPLES
 .TP
-.B route add -net 127.0.0.0
-adds the normal loopback entry, using netmask 255.0.0.0 (class A net,
-determined from the destination address) and associated with the 
-"lo" device (assuming this device was prviously set up correctly with
+.B route add \-net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo
+adds the normal loopback entry, using netmask 255.0.0.0 and associated with the 
+"lo" device (assuming this device was previously set up correctly with
 .BR ifconfig (8)). 
 
 .TP 
-.B route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
-adds a route to the network 192.56.76.x via 
-"eth0". The Class C netmask modifier is not really necessary here because
-192.* is a Class C IP address. The word "dev" can be omitted here. 
+.B route add \-net 192.56.76.0 netmask 255.255.255.0 metric 1024 dev eth0
+adds a route to the local network 192.56.76.x via 
+"eth0".  The word "dev" can be omitted here. 
 
 .TP
-.B route add default gw mango-gw
+.B route del default
+deletes the current default route, which is labeled "default" or 0.0.0.0
+in the destination field of the current routing table.
+
+.TP
+.B route add default gw mango 
 adds a default route (which will be used if no other route matches).
-All packets using this route will be gatewayed through "mango-gw". The
+All packets using this route will be gatewayed through the address of a node
+named "mango". The
 device which will actually be used for that route depends on how we
-can reach "mango-gw" - the static route to "mango-gw" will have to be
-set up before. 
+can reach "mango" - "mango" must be on directly reachable route.
 
 .TP
-.B route add ipx4 sl0
-Adds the route to the "ipx4" host via the SLIP interface (assuming that
-"ipx4" is the SLIP host).
+.B route add mango sl0
+Adds the route to the host named "mango" via the SLIP interface (assuming that
+"mango" is the SLIP host).
 
 .TP
-.B route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
+.B route add \-net 192.57.66.0 netmask 255.255.255.0 gw mango
 This command adds the net "192.57.66.x" to be gatewayed through the former
 route to the SLIP interface.
 
 .TP
-.B route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
+.B route add \-net 224.0.0.0 netmask 240.0.0.0 dev eth0
 This is an obscure one documented so people know how to do it. This sets
 all of the class D (multicast) IP routes to go via "eth0". This is the
 correct normal configuration line with a multicasting kernel. 
 
 .TP
-.B route add -net 10.0.0.0 netmask 255.0.0.0 reject
+.B route add \-net 10.0.0.0 netmask 255.0.0.0 metric 1024 reject
 This installs a rejecting route for the private network "10.x.x.x."
 
+.TP
+.B route -6 add 2001:0002::/48 metric 1 dev eth0  
+This adds a IPv6 route with the specified metric to be directly reachable via eth0.
+
 .LP
 .SH OUTPUT
 The output of the kernel routing table is organized in the following columns
@@ -275,21 +292,20 @@ entry)
 route)
 .TP
 .B Metric 
-The 'distance' to the target (usually counted in hops). It is not used by
-recent kernels, but may be needed by routing daemons.
+The 'distance' to the target (usually counted in hops).
 .TP
 .B Ref    
 Number of references to this route. (Not used in the Linux kernel.)
 .TP
 .B Use
-Count of lookups for the route.  Depending on the use of -F and -C this will
-be either route cache misses (-F) or hits (-C).
+Count of lookups for the route.  Depending on the use of \-F and \-C this will
+be either route cache misses (\-F) or hits (\-C).
 .TP
 .B Iface
 Interface to which packets for this route will be sent.
 .TP
 .B MSS 
-Default maximum segement size for TCP connections over this route.
+Default maximum segment size for TCP connections over this route.
 .TP
 .B Window  
 Default window size for TCP connections over this route.
@@ -313,8 +329,12 @@ Whether or not the hardware address for the cached route is up to date.
 .br
 .I /proc/net/rt_cache
 .LP
-.SH SEE ALSO
-.I ifconfig(8), netstat(8), arp(8), rarp(8)
+.SH "SEE ALSO"
+.IR ifconfig (8),
+.IR netstat (8), 
+.IR arp (8), 
+.IR rarp (8),
+.IR ip (8)
 .LP
 .SH HISTORY
 .B Route
@@ -323,4 +343,4 @@ for Linux was originally written by Fred N.  van Kempen,
 Linus Torvalds for pl15. Alan Cox added the mss and window options for
 Linux 1.1.22. irtt support and merged with netstat from Bernd Eckenfels.
 .SH AUTHOR
-Currently maintained by Phil Blundell <Philip.Blundell@pobox.com>.
+Currently maintained by Phil Blundell <Philip.Blundell@pobox.com> and Bernd Eckenfels <net-tools@lina.inka.de>.
diff --git a/man/en_US/slattach.8 b/man/en_US/slattach.8
index 0c4c863..0e2cfcc 100644
--- a/man/en_US/slattach.8
+++ b/man/en_US/slattach.8
@@ -1,8 +1,8 @@
-.TH SLATTACH 8 "12 Feb 1994" "" ""
+.TH SLATTACH 8 "2011\-12\-31" "net\-tools" "Linux System Administrator's Manual"
 .SH NAME
 slattach \- attach a network interface to a serial line
 .SH SYNOPSIS
-.B "slattach [-dehlLmnqv] [-c command] [-p proto] [-s speed] [tty]"
+.B "slattach [\-dehlLmnqv] [\-c command] [\-p proto] [\-s speed] [tty]"
 .br
 .SH DESCRIPTION
 .B Slattach
@@ -11,47 +11,53 @@ is a tiny little program that can be used to put a normal terminal
 you to use it for point-to-point links to other computers.
 .SH OPTIONS
 .TP
-.B "[-c command]"
+.B tty
+Path to a serial device like
+.IR /dev/ttyS* ", " /dev/cua* " or " /dev/ptmx
+to spawn a new pseudo tty.
+.TP
+.B "[\-c command]"
 Execute
 .B command
 when the line is hung up. This can be used to run scripts or re-establish
 connections when a link goes down.
 .TP
-.B "[-d]"
+.B "[\-d]"
 Enable debugging output.  Useful when determining why a given
 setup doesn't work.
 .TP
-.B "[-h]"
+.B "[\-h]"
 Exit when the carrier is lost. This works on both /dev/tty and /dev/cua
 devices by directly monitoring the carrier status every 15 seconds.
-.B "[-v]"
+.TP
+.B "[\-v]"
 Enable verbose output.  Useful in shell scripts.
 .TP
-.B "[-q]"
+.B "[\-q]"
 Operate in quiet mode - no messages at all.
 .TP
-.B "[-l]"
+.B "[\-l]"
 Create an UUCP-style lockfile for the device in /var/lock.
 .TP
-.B "[-n]"
+.B "[\-n]"
 Equivalent to the "mesg n" command.
 .TP
-.B "[-m]"
+.B "[\-m]"
 Do \fBnot\fP initialize the line into 8 bits raw mode.
 .TP
-.B "[-e]"
+.B "[\-e]"
 Exit right after initializing device, instead of waiting for the
-line to hangup.
+line to hang up.
 .TP
-.B "[-L]"
+.B "[\-L]"
 Enable 3 wire operation. The terminal is moved into CLOCAL mode, 
 carrier watching is disabled.
 .TP
-.B "[-p proto]"
+.B "[\-p proto]"
 Set a specific kind of protocol to use on the line.  The default
 is set to
-.B "cslip"
-, i.e. compressed SLIP.  Other possible values are
+.BR "cslip" ,
+i.e. compressed SLIP.  Other possible values are
 .B "slip"
 (normal SLIP), 
 .B "adaptive"
@@ -70,14 +76,14 @@ to be active on the line. For kiss connections the
 .B axattach
 program should be used.
 .TP
-.B "[-s speed]"
+.B "[\-s speed]"
 Set a specific line speed, other than the default.
 .PP
 If no arguments are given, the current terminal line (usually: the
 login device) is used.  Otherwise, an attempt is made to claim the
 indicated terminal port, lock it, and open it.
 .SH FILES
-.I /dev/cua* /var/lock/LCK.*
+.I /dev/cua* /var/lock/LCK.* /dev/ttyS* /dev/ptmx
 .SH BUGS
 None known.
 .SH SEE ALSO
diff --git a/man/fr_FR/arp.8 b/man/fr_FR/arp.8
index df37e8b..a669469 100644
--- a/man/fr_FR/arp.8
+++ b/man/fr_FR/arp.8
@@ -1,32 +1,32 @@
-.TH ARP 8 "5 Jan 1999" "net-tools" "Linux Programmer's Manual"
+.TH ARP 8 "5 Jan 1999" "net-tools" "Linux Administrator's Manual"
 .SH NOM
-arp \- manipule la table ARP du système
+arp \- manipule la table ARP du systÃ¨me
 .SH SYNOPSIS
 .B arp 
 .RB [ \-vn ] 
 .RB [ "\-H type" ] 
 .RB [ "-i if" ] 
 .B -a 
-.RB [ nom_hôte ]
+.RB [ nom_hÃ´te ]
 .PP
 .B arp 
 .RB [ \-v ]
 .RB [ "\-i if" ] 
-.B "\-d nom_hôte"
+.B "\-d nom_hÃ´te"
 .RB [ pub ]
 .PP
 .B arp 
 .RB [ \-v ] 
 .RB [ "\-H type" ] 
 .RB [ "\-i if" ] 
-.B -s nom_hôte hw_addr
+.B -s nom_hÃ´te hw_addr
 .RB [ temp ] 
 .PP
 .B arp 
 .RB [ \-v ] 
 .RB [ "\-H type" ] 
 .RB [ "\-i if" ] 
-.B -s nom_hôte hw_addr
+.B -s nom_hÃ´te hw_addr
 .RB [ "netmask nm" ] 
 .B pub
 .PP
@@ -34,7 +34,7 @@ arp \- manipule la table ARP du syst
 .RB [ \-v ] 
 .RB [ "\-H type" ] 
 .RB [ "\-i if" ] 
-.B -Ds nom_hôte ifa
+.B -Ds nom_hÃ´te ifa
 .RB [ "netmask nm" ] 
 .B pub
 .PP
@@ -46,33 +46,33 @@ arp \- manipule la table ARP du syst
 
 .SH DESCRIPTION
 .B Arp
-manipule la table ARP du noyau de différentes façons.  Les options principales
-permettent d'effacer une correspondance d'adresses   et d'en définir
+manipule la table ARP du noyau de diffÃ©rentes faÃ§ons.  Les options principales
+permettent d'effacer une correspondance d'adresses   et d'en dÃ©finir
 une manuellement.
-Pour les besoins de débogage, le programme
+Pour les besoins de dÃ©bogage, le programme
 .B arp
 permet aussi d'effectuer un dump complet de la table ARP.
 .SH OPTIONS
 .TP
 .B "\-v, \-\-verbose"
-Dit à l'utilisateur ce qui se passe en étant verbeux.
+Dit Ã  l'utilisateur ce qui se passe en Ã©tant verbeux.
 .TP
 .B "\-n, \-\-numeric"
-Affiche les adresses numériques au lieu d'essayer de déterminer les nom
-d'hôtes symboliques.
+Affiche les adresses numÃ©riques au lieu d'essayer de dÃ©terminer les nom
+d'hÃ´tes symboliques.
 .TP
 .B "\-H type, \-\-hw-type type"
-En positionnant ou lisant les entrées ARP, ce paramètre optionnel indique
-à 
+En positionnant ou lisant les entrÃ©es ARP, ce paramÃ¨tre optionnel indique
+Ã  
 .B arp
-les classes d'entrées qu'il doit contrôler.  La valeur par défaut de
-ce paramètre est
+les classes d'entrÃ©es qu'il doit contrÃ´ler.  La valeur par dÃ©faut de
+ce paramÃ¨tre est
 .B ether
-(i.e. code de matériel
+(i.e. code de matÃ©riel
 .B 0x01
 pour
 .B "IEEE 802.3 10Mbps Ethernet".
-D'autres valeurs doivent correspondre à des technologies réseaux telles que
+D'autres valeurs doivent correspondre Ã  des technologies rÃ©seaux telles que
 .RB "ARCnet (" arcnet ")"
 ,
 .RB "PROnet (" pronet ")"
@@ -81,89 +81,89 @@ D'autres valeurs doivent correspondre 
 and
 .RB "NET/ROM (" netrom ")."
 .TP
-.B "\-a [nom_d_hôte], \-\-display [nom_d_hôte]"
-Affiche les entrées concernant l'hôte spécifié.  Si le paramètre
-.B nom_d_hôte
-n'est pas utilisé,
+.B "\-a [nom_d_hÃ´te], \-\-display [nom_d_hÃ´te]"
+Affiche les entrÃ©es concernant l'hÃ´te spÃ©cifiÃ©.  Si le paramÃ¨tre
+.B nom_d_hÃ´te
+n'est pas utilisÃ©,
 .B toutes
-les entrées seront affichées.
+les entrÃ©es seront affichÃ©es.
 .TP
-.B "\-d nom_d_hôte, \-\-delete nom_d_hôte"
-Enlève une entrée pour l'hôte spécifié.  Ceci peut être
-utilisé si l'hôte concerné ne fonctionne plus, par exemple.
+.B "\-d nom_d_hÃ´te, \-\-delete nom_d_hÃ´te"
+EnlÃ¨ve une entrÃ©e pour l'hÃ´te spÃ©cifiÃ©.  Ceci peut Ãªtre
+utilisÃ© si l'hÃ´te concernÃ© ne fonctionne plus, par exemple.
 .TP
 .B "\-D, \-\-use-device"
-Utilise l'adresse matérielle de l'interface
+Utilise l'adresse matÃ©rielle de l'interface
 .BR ifa
 .
 .TP
 .B "\-i If, \-\-device If"
-Sélectionne une interface. Lors du dump du cache ARP, seules les entrées
-correspondant à l'interface spécifiée seront affichées. Lorsque l'on définit
-une entrée permanente ou une entrée
+SÃ©lectionne une interface. Lors du dump du cache ARP, seules les entrÃ©es
+correspondant Ã  l'interface spÃ©cifiÃ©e seront affichÃ©es. Lorsque l'on dÃ©finit
+une entrÃ©e permanente ou une entrÃ©e
 .B temp
-, cette interface lui sera associée; si cette option n'est pas utilisée,
-le noyau fera des tentatives de résolution selon la table de routage. Pour
-les entrées 
+, cette interface lui sera associÃ©e; si cette option n'est pas utilisÃ©e,
+le noyau fera des tentatives de rÃ©solution selon la table de routage. Pour
+les entrÃ©es 
 .B pub
-l'interface spécifiée est celle pour laquelle les requêtes ARP auront trouvé
-une réponse. 
+l'interface spÃ©cifiÃ©e est celle pour laquelle les requÃªtes ARP auront trouvÃ©
+une rÃ©ponse. 
 .br
 .B NOTE:
-Ceci est différent de l'interface vers laquelle les datagrammes IP seront routés.
+Ceci est diffÃ©rent de l'interface vers laquelle les datagrammes IP seront routÃ©s.
 .TP
-.B "\-s nom_d_hôte hw_addr, \-\-set hostname hw_addr"
-Crée manuellement une correspondance d'adresses ARP pour l'hôte
-.B nom_d_hôte
-avec l'adresse matérielle positionnée à
+.B "\-s nom_d_hÃ´te hw_addr, \-\-set hostname hw_addr"
+CrÃ©e manuellement une correspondance d'adresses ARP pour l'hÃ´te
+.B nom_d_hÃ´te
+avec l'adresse matÃ©rielle positionnÃ©e Ã 
 .B hw_addr.
-Le format de l'adresse matérielle est dépendant de la classe du matériel,
-mais pour la plupart on peut considérer que la présentation classique
-peut être utilisée.  Pour la classe Ethernet, c'est 6 octets en hexadécimal,
-séparés par des double-points. Pour ajouter des entrées proxy-arp
+Le format de l'adresse matÃ©rielle est dÃ©pendant de la classe du matÃ©riel,
+mais pour la plupart on peut considÃ©rer que la prÃ©sentation classique
+peut Ãªtre utilisÃ©e.  Pour la classe Ethernet, c'est 6 octets en hexadÃ©cimal,
+sÃ©parÃ©s par des double-points. Pour ajouter des entrÃ©es proxy-arp
 (Ce sont celles avec l'indicateur
 .BR pub lish 
-positionné)
-un masque réseau (
+positionnÃ©)
+un masque rÃ©seau (
 .B netmask 
-) peut être spécifié au proxy-arp pour le
-sous-réseau entier. Ceci n'est pas très recommandé, mais est supporté par
+) peut Ãªtre spÃ©cifiÃ© au proxy-arp pour le
+sous-rÃ©seau entier. Ceci n'est pas trÃ¨s recommandÃ©, mais est supportÃ© par
 les anciens noyaux, car c'est utile dans certains cas. Si l'indicateur
 .B temp
-n'est pas fourni, les entrées ARP seront permanentes.
+n'est pas fourni, les entrÃ©es ARP seront permanentes.
 .br
 .B NOTE:
-A partir du noyau 2.2.0 il n'est plus possible de définir des entrées ARP
-pour un sous réseau entier.
+A partir du noyau 2.2.0 il n'est plus possible de dÃ©finir des entrÃ©es ARP
+pour un sous rÃ©seau entier.
 .TP
 .B "\-f nom_de_fichier, \-\-file nom_de_fichier"
-Similaire à l'option 
+Similaire Ã  l'option 
 .B \-s
 , mais cette fois les informations d'adresses sont prises dans le fichier
-.B nom_de_fichier
-. Ceci peut être utilisé si les entrées ARP à configurer sont
-nombreuses.  Le nom du fichier de données est très souvent nommé
+.BR nom_de_fichier .
+Ceci peut Ãªtre utilisÃ© si les entrÃ©es ARP Ã  configurer sont
+nombreuses.  Le nom du fichier de donnÃ©es est trÃ¨s souvent nommÃ©
 .B /etc/ethers
 , mais ce n'est pas officiel.
 .sp 1
 Le format du fichier est simple; Il contient
-seulement des lignes de texte ASCII avec sur chaque ligne un nom d'hôte et
-une adresse matérielle, séparés par des espaces. Les indicateurs
+seulement des lignes de texte ASCII avec sur chaque ligne un nom d'hÃ´te et
+une adresse matÃ©rielle, sÃ©parÃ©s par des espaces. Les indicateurs
 .BR "pub" , " temp" " et" " netmask"
-peuvent également être utilisés.
+peuvent Ã©galement Ãªtre utilisÃ©s.
 .LP
-A tous les endroits où un
-.B nom d'hôte
+A tous les endroits oÃ¹ un
+.B nom d'hÃ´te
 est attendu, on peut aussi entrer une
 .B "addresse IP"
-en notation décimale pointée.
+en notation dÃ©cimale pointÃ©e.
 .LP
-Chaque entrée complète se trouvant dans le cache ARP est marquée de
+Chaque entrÃ©e complÃ¨te se trouvant dans le cache ARP est marquÃ©e de
 l'indicateur
-.B C
-. Les entrées permanentes sont marquées de l'indicateur
+.BR C .
+Les entrÃ©es permanentes sont marquÃ©es de l'indicateur
 .B M
-et les entrées 'pub' ont l'indicateur
+et les entrÃ©es 'pub' ont l'indicateur
 .B P
 .
 .SH FICHIERS
@@ -177,8 +177,8 @@ et les entr
 .SH VOIR AUSSI
 rarp(8), route(8), ifconfig(8), netstat(8)
 .SH AUTEUR
-Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> avec les améliorations
-apportées par le mainteneur des net-tools Bernd Eckenfels
+Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> avec les amÃ©liorations
+apportÃ©es par le mainteneur des net-tools Bernd Eckenfels
 <net-tools@lina.inka.de>.
 .SH TRADUCTION
 Jean Michel VANSTEENE (vanstee@worldnet.fr)
diff --git a/man/fr_FR/ethers.5 b/man/fr_FR/ethers.5
index 5e70929..030fdf6 100644
--- a/man/fr_FR/ethers.5
+++ b/man/fr_FR/ethers.5
@@ -5,7 +5,7 @@
 .\"
 .TH ETHERS 5 "26 Avril 1996" "" "Formats de fichiers"
 .SH NOM \"{{{roff}}}\"{{{
-ethers \- Base de données adresses Ethernet - adresses IP
+ethers \- Base de donnÃ©es adresses Ethernet - adresses IP
 .\"}}}
 .SH DESCRIPTION \"{{{
 \fB/etc/ethers\fP contient des adresses Ethernet sur 48 bits et leur
@@ -15,14 +15,14 @@ adresse IP correspondante, une ligne par adresses IP:
 \fIAdresse-Ethernet\fP  \fIAdresse-IP\fP
 .RE
 .sp
-Les deux items sont séparés par un ou plusieurs espaces et/ou tabulations.
-Un \fB#\fP en début de ligne est un commentaire pour tout le reste de la ligne.
-L'\fIadresse-Ethernet\fP est écrite sous la forme
+Les deux items sont sÃ©parÃ©s par un ou plusieurs espaces et/ou tabulations.
+Un \fB#\fP en dÃ©but de ligne est un commentaire pour tout le reste de la ligne.
+L'\fIadresse-Ethernet\fP est Ã©crite sous la forme
 .IR x : x : x : x : x : x ,
-où \fIx\fP est une valeur héxadecimale comprise entre \fB0\fP et \fBff\fP
-représentant un octet de l'adresse, dans l'ordre du réseau (big-endian).
-L'\fIAdresse-IP\fP peut être soit un nom d'hôte résolu par DNS ou une adresse
-en notation décimale pointée.
+oÃ¹ \fIx\fP est une valeur hÃ©xadecimale comprise entre \fB0\fP et \fBff\fP
+reprÃ©sentant un octet de l'adresse, dans l'ordre du rÃ©seau (big-endian).
+L'\fIAdresse-IP\fP peut Ãªtre soit un nom d'hÃ´te rÃ©solu par DNS ou une adresse
+en notation dÃ©cimale pointÃ©e.
 .\"}}}
 .SH EXEMPLES \"{{{
 08:00:20:00:61:CA  pal
diff --git a/man/fr_FR/hostname.1 b/man/fr_FR/hostname.1
index c4cd412..3adaf4b 100644
--- a/man/fr_FR/hostname.1
+++ b/man/fr_FR/hostname.1
@@ -1,16 +1,16 @@
 .TH HOSTNAME 1 "15 Mars 1999" "net-tools" "Linux Programmer's Manual"
 .SH NOM
-hostname \- affiche ou définit le nom d'hôte du système
+hostname \- affiche ou dÃ©finit le nom d'hÃ´te du systÃ¨me
 .br
-domainname \- affiche le nom de domaine NIS/YP du système
+domainname \- affiche le nom de domaine NIS/YP du systÃ¨me
 .br
-dnsdomainname \- affiche le nom de domaine du système
+dnsdomainname \- affiche le nom de domaine du systÃ¨me
 .br
-nisdomainname \- affiche ou définit le nom de domaine NIS/YP du système
+nisdomainname \- affiche ou dÃ©finit le nom de domaine NIS/YP du systÃ¨me
 .br
-ypdomainname \- affiche ou définit le nom de domaine NIS/YP du système
+ypdomainname \- affiche ou dÃ©finit le nom de domaine NIS/YP du systÃ¨me
 .br
-nodename \- affiche ou définit le nom de domaine DECnet du système
+nodename \- affiche ou dÃ©finit le nom de domaine DECnet du systÃ¨me
 
 .SH SYNOPSIS
 .B hostname
@@ -73,45 +73,45 @@ nodename \- affiche ou d
 
 .SH DESCRIPTION
 .B Hostname
-est le programme utilisé soit pour définir le nom d'hôte, soit
-pour visualiser le nom d'hôte ou de domaine du système. Ce nom est
-utilisé par différents programmes réseaux pour identifier la machine. Le
-nom de domaine est également utilisé par les NIS/YP.
+est le programme utilisÃ© soit pour dÃ©finir le nom d'hÃ´te, soit
+pour visualiser le nom d'hÃ´te ou de domaine du systÃ¨me. Ce nom est
+utilisÃ© par diffÃ©rents programmes rÃ©seaux pour identifier la machine. Le
+nom de domaine est Ã©galement utilisÃ© par les NIS/YP.
 
 .SS "OBTENTION DU NOM"
-Appelé sans argument, le programme affiche les noms courants:
+AppelÃ© sans argument, le programme affiche les noms courants:
 
 .LP
 .B hostname
-fournit le nom du système tel qu'il est retourné par la fonction
-.BR getdomainname (2)
-. Ceci est connu comme nom de domaine YP/NIS du système.
+fournit le nom du systÃ¨me tel qu'il est retournÃ© par la fonction
+.BR getdomainname (2).
+Ceci est connu comme nom de domaine YP/NIS du systÃ¨me.
 
 
 .LP
 .B nodename
-fournit le nom de noeud DECnet du système tel qu'il est retourné par la
+fournit le nom de noeud DECnet du systÃ¨me tel qu'il est retournÃ© par la
 fonction
 .BR getnodename (2)
 .
 
 .LP
 .B dnsdomainname
-fournit la partie domaine du nom complètement qualifié - FQDN (Fully
-Qualified Domain Name). Le nom FQDN du système est retourné par la commande
+fournit la partie domaine du nom complÃ¨tement qualifiÃ© - FQDN (Fully
+Qualified Domain Name). Le nom FQDN du systÃ¨me est retournÃ© par la commande
 .BR "hostname \-\-fqdn" .
 
 .SS "SET NAME"
-Appelé avec un argument ou avec l'option
+AppelÃ© avec un argument ou avec l'option
 .B \-\-file
-, la commande définit le nom d'hôte, le nom de domaine NIS/YP ou
+, la commande dÃ©finit le nom d'hÃ´te, le nom de domaine NIS/YP ou
 le nom de noeud. 
 
 .LP
 Notez que seul le super-utilisateur peut changer les noms.
 
 .LP
-Il n'est pas possible de définir le nom FQDN ou le nom de domaine DNS avec
+Il n'est pas possible de dÃ©finir le nom FQDN ou le nom de domaine DNS avec
 la commande 
 .B dnsdomainname 
  (voir 
@@ -119,8 +119,8 @@ la commande
 ci-dessous).
 
 .LP
-Le nom d'hôte est générallement définit une seule fois, au
-démarrage du système, par le script de configuration
+Le nom d'hÃ´te est gÃ©nÃ©rallement dÃ©finit une seule fois, au
+dÃ©marrage du systÃ¨me, par le script de configuration
 .I /etc/rc.d/rc.inet1.
 ou
 .I /etc/init.d/boot
@@ -132,45 +132,45 @@ Vous pouvez modifier le FQDN (tel que fourni par la commande
 .BR "hostname \-\-fqdn" ) 
 ou le nom de domaine DNS (tel que fourni par la commande
 .BR "dnsdomainname" ) 
-avec cette commande. Le FQDN du système est le nom que le resolveur (
+avec cette commande. Le FQDN du systÃ¨me est le nom que le resolveur (
 .BR resolver (3)
- ) retourne comme nom d'hôte. 
+ ) retourne comme nom d'hÃ´te. 
 
 .LP
 Techniquement: Le FQDN est le nom fourni par
 .BR gethostbyname (2)
-à partir du nom d'hôte retourné par
+Ã  partir du nom d'hÃ´te retournÃ© par
 .BR gethostname (2).
 Le nom de domaine DNS est la partie suivant le premier point.
 .LP
-La façon dont vous pouvez le changer dépend de la configuration
+La faÃ§on dont vous pouvez le changer dÃ©pend de la configuration
 (habituellement dans 
-.IR /etc/host.conf )
-. Si le fichier 'hosts' est analysé avant d'interroger le DNS ou 
+.IR /etc/host.conf ).
+Si le fichier 'hosts' est analysÃ© avant d'interroger le DNS ou 
 NIS) vous pouvez le changer dans le fichier 
 .IR /etc/hosts .
 
 .SH OPTIONS
 .TP
 .I "\-a, \-\-alias"
-Affiche l'alias de l'hôte (si utilisé).
+Affiche l'alias de l'hÃ´te (si utilisÃ©).
 .TP
 .I "\-d, \-\-domain"
 Affiche le nom du domaine DNS. Ne pas utiliser la commande
 .B domainname
-pour obtenir le nom de domaine DNS car vous obtiendrez en réalité le
-nom de domaine NIS. Utilisez plutôt la commande
+pour obtenir le nom de domaine DNS car vous obtiendrez en rÃ©alitÃ© le
+nom de domaine NIS. Utilisez plutÃ´t la commande
 .B dnsdomainname 
 .
 .TP
 .I "\-F, \-\-file nom_fichier"
-Lit le nom d'hôte à partir du fichier spécifié. Les commentaires (lignes commençant
-par un `#') sont ignorés.
+Lit le nom d'hÃ´te Ã  partir du fichier spÃ©cifiÃ©. Les commentaires (lignes commenÃ§ant
+par un `#') sont ignorÃ©s.
 .TP
 .I "\-f, \-\-fqdn, \-\-long"
-Affiche le nom pleinement qualifié - FQDN (Fully Qualified Domain Name). un
-FQDN consiste en un nom d'hôte court et un nom de domaine. A moins que vous
-utilisiez 'bind' ou les NIS pour la recherche d'hôtes, vous pouvez changer
+Affiche le nom pleinement qualifiÃ© - FQDN (Fully Qualified Domain Name). un
+FQDN consiste en un nom d'hÃ´te court et un nom de domaine. A moins que vous
+utilisiez 'bind' ou les NIS pour la recherche d'hÃ´tes, vous pouvez changer
 le nom FQDN et le nom de domaine (qui fait partie du FQDN) dans le fichier
 \fI/etc/hosts\fR.
 .TP
@@ -178,15 +178,15 @@ le nom FQDN et le nom de domaine (qui fait partie du FQDN) dans le fichier
 Affiche un message d'aide et se termine.
 .TP
 .I "\-i, \-\-ip-address"
-Affiche la (les) adresse(s) IP de l'hôte.
+Affiche la (les) adresse(s) IP de l'hÃ´te.
 .TP
 .I "\-n, \-\-node"
-Affiche le nom de noeud DECnet. Si un paramètre est fourni (ou
+Affiche le nom de noeud DECnet. Si un paramÃ¨tre est fourni (ou
 .B \-\-file nom_fichier
-) le super-utilisateur peut également définir un nouveau nom de neud.
+) le super-utilisateur peut Ã©galement dÃ©finir un nouveau nom de neud.
 .TP
 .I "\-s, \-\-short"
-Affiche le nom d'hôte en format court. Il s'agit du nom d'hôte coupé au
+Affiche le nom d'hÃ´te en format court. Il s'agit du nom d'hÃ´te coupÃ© au
 premier point.
 .TP
 .I "\-V, \-\-version"
@@ -197,9 +197,9 @@ termine correctement.
 Mode verbeux.
 .TP
 .I "\-y, \-\-yp, \-\-nis"
-Affiche le nom de domaine NIS. Si un paramètre est fourni (ou
+Affiche le nom de domaine NIS. Si un paramÃ¨tre est fourni (ou
 .B \-\-file nom_fichier
-) le super-utilisateur peut également définir un nouveau nom de domaine NIS.
+) le super-utilisateur peut Ã©galement dÃ©finir un nouveau nom de domaine NIS.
 .SH FICHIERS
 .B /etc/hosts
 .SH AUTEURS
diff --git a/man/fr_FR/ifconfig.8 b/man/fr_FR/ifconfig.8
index 0c29eb0..821f164 100644
--- a/man/fr_FR/ifconfig.8
+++ b/man/fr_FR/ifconfig.8
@@ -1,160 +1,178 @@
-.TH IFCONFIG 8 "4 August 1997" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" Traduction : Jean Michel VANSTEENE <vanstee@worldnet.fr>
+.\" zz/08/1997
+.\" MÃ j zz/08/2004 net-tools-1.60 Guillaume Audirac
+.\" MÃ j 17/08/2006 net-tools-1.65 Alain Portal
+.\"
+.TH IFCONFIG 8 "30 juin 2005" "net-tools" "Manuel de l'administrateur Linux"
 .SH NOM
-ifconfig \- configure une interface réseau
+ifconfig \- Configurer une interface rÃ©seau.
 .SH SYNOPSIS
-.B "ifconfig [interface]"
+.B "ifconfig [\-v] [\-a] [\-s] [interface]"
 .br
-.B "ifconfig interface [aftype] options | adresse ..."
+.B "ifconfig [\-v] interface [aftype] options | adresse ..."
 .SH DESCRIPTION
-.B Ifconfig
-est utilisé pour configurer (et maintenir ensuite) les interfaces
-réseau résidentes dans le noyau.  Il est utilisé lors du boot pour
-configurer la plupart d'entre-elles et ainsi rendre le système
-opérationnel.  Après, ce n'est quasiment plus utilisé que pour
-le débogage ou pour des réglages si nécessaire.
+.B ifconfig
+permet de configurer les interfaces rÃ©seau prÃ©sentes dans le noyau.
+On peut les configurer lors du dÃ©marrage quand c'est nÃ©cessaire. Ensuite,
+on l'utilise gÃ©nÃ©ralement pour le dÃ©bogage ou pour d'Ã©ventuels rÃ©glages.
 .LP
-Si aucun argument n'est donné,
+Si aucun argument n'est donnÃ©,
 .B ifconfig
-affiche simplement l'état des interfaces actuellement définies. Si
-seul le paramètre
+affiche l'Ã©tat des interfaces actives. Si seul le paramÃ¨tre
 .B interface
-est donné, il affiche seulement l'état de l'interface correspondante;
-si seul le paramètre
-.B -a
-est fourni, il affiche l'état de toutes les interfaces, même celles qui
-ne sont pas actives.
-Autrement, il considère qu'il faut positionner de nouvelles valeurs.
-
-.SH Familles d'adresses
-Si le premier argument après le nom de l'interface est reconnu comme
-étant un nom de famille d'adresses supporté, cette famille d'adresses
-est utilisée pour décoder et afficher toutes les adresses
-protocolaires.  Les familles d'adresses actuellement supportées comprennent
+est donnÃ©, il affiche seulement l'Ã©tat de l'interface correspondante\ ;
+si seul le paramÃ¨tre
+.B \-a
+est fourni, il affiche l'Ã©tat de toutes les interfaces, mÃªme celles
+qui sont inactives. Autrement, il permet de configurer une interface.
+.SH Familles d'Adresses
+Si le premier argument aprÃ¨s le nom d'interface est reconnu comme
+le nom d'une famille d'adresses prise en charge, alors cette famille
+d'adresses est utilisÃ©e pour dÃ©coder et afficher toutes les adresses
+du protocole. Les familles d'adresses actuellement prises en charge
+comprennent
 .B inet
-(TCP/IP, default) 
+(TCP/IP, par dÃ©faut),
+.B inet6
+(IPv6),
 .B ax25
-(AMPR Packet Radio.) 
+(AMPR Packet Radio),
 .B ddp
-(Appletalk Phase 2) and
+(Appletalk Phase 2),
 .B ipx
-(Novell IPX).
+(Novell IPX) et
+.B netrom
+(AMPR Packet Radio).
 .SH OPTIONS
 .TP
+.B \-a
+Afficher toutes les interfaces actuellement disponibles, mÃªme celles
+qui sont inactives.
+.TP
+.B \-s
+Afficher un rÃ©sumÃ© (comme netstat \-i).
+.TP
+.B \-v
+Mode volubile pour certains types d'erreurs.
+.TP
 .B interface
-Le nom de l'interface réseau.  C'est généralement un nom de pilote suivi
-d'un numéro d'ordre comme
+Correspond au nom de l'interface de rÃ©seau. C'est gÃ©nÃ©ralement un nom de
+pilote suivi d'un chiffre, comme
 .B eth0
-pour la première interface Ethernet.
+pour la premiÃ¨re interface Ethernet. Si votre noyau accepte les alias
+d'interfaces, vous pouvez les spÃ©cifier avec
+.B eth0:0
+pour le premier alias de eth0. On peut les utiliser pour les affecter
+Ã  une seconde adresse. Pour supprimer un alias d'interface, utilisez
+.BR "ifconfig eth0:0 down" .
+Note\ : pour chaque groupe (un mÃªme noeud donnÃ© par une combinaison
+adresse/masque de rÃ©seau), si vous supprimez le premier alias (le
+principal), tous les alias sont supprimÃ©s.
 .TP
 .B up
-Cette option active l'interface.  Elle est implicitement spécifiée
-si une nouvelle adresse est affectée à l'interface (voir plus loin).
+Activer l'interface donnÃ©e. Cette option est implicite si une adresse est
+affectÃ©e Ã  l'interface.
 .TP
 .B down
-Cette option arrête le fonctionnement du pilote pour cette interface, et
-est utilisée lorsque les choses commencent à aller mal.
+DÃ©sactiver le pilote pour l'interface donnÃ©e.
 .TP
 .B "[\-]arp"
-Valide ou invalide l'utilisation du protocole ARP sur cette interface. Si
-le signe moins (\-) est présent, l'option est invalidée.
+Activer ou dÃ©sactiver l'utilisation du protocole ARP sur une interface.
 .TP
 .B "[\-]promisc"
-Valide ou invalide le mode
-.B promiscuous
-.  S'il est validé, tous les paquets circulant sur le réseau
-seront reçus sur cette interface.
+Activer ou dÃ©sactiver le mode
+.BR promiscuous .
+S'il est activÃ©, tous les paquets circulant sur le rÃ©seau seront reÃ§us
+par l'interface.
 .TP
 .B "[\-]allmulti"
-Valide ou invalide le fonctionnement de l'interface en mode
-.B all-multicast
-.  S'il est validé, tous les paquets multicast circulant sur le réseau
-seront reçus sur cette interface.
+Activer ou dÃ©sactiver le mode
+.BR all-multicast .
+S'il est activÃ©, l'interface recevra tous les paquets de multidiffusion
+circulant sur le rÃ©seau.
 .TP
 .B "metric N"
-Ce paramètre définit la métrique de l'interface. Il n'est pour
-l'instant pas implémenté, mais le sera prochainement.
+DÃ©finir la mÃ©trique de l'interface.
 .TP
 .B "mtu N"
-Ce     paramètre  définit le  MTU     (Maximum  Transfer Unit)  d'une
-interface.
+DÃ©finir l'unitÃ© de transfert maximum ou MTU (Â«\ Maximum Transfer Unit\ Â»)
+d'une interface.
 .TP
-.B "dstaddr adr"
-Définit l'adresse IP de "l'autre bout" dans le cas d'un lien
-point-à-point, comme PPP. Ce paramètre est obsolète; utilisez plutôt
-le paramètre 
-.B pointopoint.
+.B "dstaddr adresse"
+DÃ©finir l'adresse IP distante dans le cas d'un lien point-Ã -point
+(comme PPP). Cette option est obsolÃ¨te\ ; utilisez Ã  la place l'option
+.BR pointopoint .
 .TP
-.B "netmask adr"
-Définit le masque de réseau IP pour cette interface. La valeur par
-défaut de cette valeur correspond au masque réseau usuel pour les
-classes A, B ou C (déduite de l'adresse IP), mais toute autre valeur peut
-être définie selon les besoins en sous-réseaux.
+.B "netmask adresse"
+DÃ©finir le masque de rÃ©seau IP pour cette interface. La valeur par
+dÃ©faut correspond au masque de rÃ©seau usuel pour les classes A, B ou C
+(dÃ©duite de l'adresse IP), mais une autre valeur peut Ãªtre dÃ©finie.
 .TP
-.B "add adr/lg_prefix"
-Ajoute une adresse IPv6 à une interface. 
+.B "add adresse/long_prÃ©fixe"
+Ajouter une adresse IPv6 Ã  une interface.
 .TP
-.B "del adr/lg_prefix"
-Supprime une adresse IPv6 d'une interface.
+.B "del adresse/long_prÃ©fixe"
+Supprimer une adresse IPv6 d'une interface.
 .TP
 .B "tunnel aa.bb.cc.dd"
-Crée un nouveau périphérique SIT (IPv6-dans-IPv4), en mode
-tunnel jusqu'à la destination.
+CrÃ©er un nouveau pÃ©riphÃ©rique SIT (IPv6-dans-IPv4), fonctionnant en mode
+tunnel jusqu'Ã  la destination donnÃ©e.
 .TP
-.B "irq adr"
-Définit la ligne d'interruption utilisée par ce
-périphérique. Certains périphériques ne supportent pas le
-changement dynamique de l'IRQ.
+.B "irq adresse"
+DÃ©finir la ligne d'interruption utilisÃ©e par un pÃ©riphÃ©rique.
+Certains pÃ©riphÃ©riques ne sont pas capables de changer
+dynamiquement d'IRQ.
 .TP
-.B "io_addr adr"
-Définit pour ce périphérique, l'adresse de début dans l'espace
-d'entrée-sortie I/O.
+.B "io_addr adresse"
+DÃ©finir l'adresse de dÃ©but dans l'espace d'entrÃ©e-sortie pour un
+pÃ©riphÃ©rique.
 .TP
-.B "mem_start adr"
-Définit l'adresse de début de mémoire partagée pour ce périphérique. Seuls
-quelques périphériques ont besoin de ce paramètre.
+.B "mem_start adresse"
+DÃ©finir l'adresse de dÃ©but de la mÃ©moire partagÃ©e utilisÃ©e par un
+pÃ©riphÃ©rique. Peu de pÃ©riphÃ©riques ont besoin de ce paramÃ¨tre.
 .TP
 .B "media type"
-Définit le port physique ou le type de medium utilisé par ce périphérique.
-Tous les périphériques ne peuvent pas changer de configuration et les
-valeurs supportées varient de l'un à l'autre. Les valeur typiques sont
+DÃ©finir le port physique ou le type de mÃ©dium utilisÃ© par le pÃ©riphÃ©rique.
+Tous les pÃ©riphÃ©riques ne peuvent pas changer cette configuration et les
+types acceptÃ©s varient de l'un Ã  l'autre. Les valeurs habituelles du
+.B type
+sont
 .B 10base2
 (Ethernet fin),
 .B 10baseT
-(10Mbps Ethernet paire torsadée),
-.B AUI 
-(transceiver externe) etc.  Le type
+(Ethernet 10Mbps en paire torsadÃ©e),
+.B AUI
+(Ã©metteur-rÃ©cepteur externe), etc. Le mÃ©dium spÃ©cial de type
 .B auto
-permet d'indiquer au pilote de détecter automatiquement le medium
-utilisé. Une fois de plus, tous les périphériques ne supportent pas cette
-option.
-.TP
-.B "[-]broadcast [adr]"
-Si l'adresse est également donnée, définit l'adresse broadcast
-protocolaire pour cette interface. Autrement, il permet d'armer (ou désarmer)
-l'indicateur
+permet d'indiquer au pilote de dÃ©tecter automatiquement le mÃ©dium utilisÃ©.
+Une fois de plus, tous les pilotes n'acceptent pas cette option.
+.TP
+.B "[\-]broadcast [adresse]"
+Si l'adresse est donnÃ©e, elle dÃ©finit l'adresse de diffusion du
+protocole pour cette interface. Autrement, on arme
+(ou dÃ©sarme) l'indicateur
 .B IFF_BROADCAST
 de l'interface.
 .TP
-.B "[-]pointopoint [adr]"
-Ce mot clé valide le mode
-.B point-à-point
-d'une interface, signifiant qu'il existe un lien direct entre 2 machines,
-sans que personne d'autre ne puisse être à l'écoute.
+.B "[\-]pointopoint [adresse]"
+Valider le mode
+.B point-Ã -point
+d'une interface, signifiant qu'il existe un lien direct entre 2\ machines,
+sans que personne d'autre ne puisse Ãªtre Ã  l'Ã©coute.
 .br
-Si l'argument d'adresse est également donné, il définit l'adresse
-de l'autre machine, de la même manière que le paramètre obsolète
-.B dstaddr
-.
-Autrement il arme (ou désarme) l'indicateur 
+Si l'adresse est Ã©galement donnÃ©e, cela dÃ©finit l'adresse de
+protocole de l'autre machine, de la mÃªme maniÃ¨re que l'option obsolÃ¨te
+.BR dstaddr .
+Autrement, il arme (ou dÃ©sarme) l'indicateur 
 .B IFF_POINTOPOINT
 de l'interface.
 .TP
 .B hw classe adresse
-Définit l'adresse matérielle de l'interface, si le pilote du
-périphérique supporte cette opération. Le mot clé doit être
-suivi du nom de la classe matérielle et de l'adresse matérielle en
-caractères imprimables ASCII. Les classes matérielles actuellement
-supportées comprennent 
+DÃ©finir l'adresse matÃ©rielle de l'interface, si le pilote du pÃ©riphÃ©rique
+accepte cette opÃ©ration. L'option doit Ãªtre suivie du nom de la classe
+matÃ©rielle et de l'adresse matÃ©rielle en caractÃ¨res ASCII affichables.
+Les classes matÃ©rielles actuellement prises en charge comprennent
 .B ether
 (Ethernet),
 .B ax25
@@ -165,45 +183,82 @@ et
 (AMPR NET/ROM).
 .TP
 .B multicast
-Positionne l'indicateur multicast sur l'interface. Elle n'est
-généralement pas nécessaire puisque les pilotes positionnent
-l'option correcte eux même.
+Positionner l'indicateur de multidiffusion sur l'interface. Ce n'est
+gÃ©nÃ©ralement pas nÃ©cessaire puisque les pilotes positionnent correctement
+l'option eux-mÃªmes.
 .TP
 .B adresse
-L'adresse IP de cette interface.
+Correspond Ã  l'adresse IP affectÃ©e Ã  cette interface.
 .TP
-.B txqueuelen length
-Set the length of the transmit queue of the device. It is useful to set this
-to small values for slower devices with a high latency (modem links, ISDN)
-to prevent fast bulk transfers from disturbing interactive traffic like
-telnet too much. 
+.B txqueuelen longueur
+DÃ©finir la longueur de la file d'attente de transmission du pÃ©riphÃ©rique.
+Il est utile de la fixer Ã  des valeurs faibles pour les pÃ©riphÃ©riques
+lents avec un temps d'attente important (modems, ISDN), pour empÃªcher
+d'Ãªtre perturbÃ© par de rapides transferts de masse issus des trafics
+interactifs, comme
+.BR telnet .
 .SH NOTES
-Depuis le noyau 2.2 il n'y a plus de statistiques d'interface explicite
-pour les interfaces en alias. Les statistiques affichées pour la véritable
-adresse sont partagées avec toutes les adresses alias du même périphérique.
-Si vous voulez des adresses par interface, vous devez ajouter des règles de
-comptabilité particulières pour l'adresse en utilisant la commande 
-.BR ipchains(8)
-.
-
+Depuis la version 2.2 du noyau, il n'y a plus de statistiques d'interface
+explicites pour les alias d'interfaces. Les statistiques affichÃ©es pour la
+vÃ©ritable adresse sont partagÃ©es avec toutes les adresses d'alias du mÃªme
+pÃ©riphÃ©rique. Pour avoir des statistiques par adresse, il faut ajouter
+des rÃ¨gles de comptabilitÃ© particuliÃ¨res pour l'adresse en utilisant
+la commande
+.BR ipchains (8)
+ou
+.BR iptables (8).
+.LP
+Depuis net-tools 1.61,
+.B ifconfig
+affiche les compteurs d'octets et ceux lisibles par un utilisateur en
+unitÃ©s IEC\ 60027-2. Ainsi, 1\ KiB vaut 2^10 octets. Notez que les nombres
+sont tronquÃ©s Ã  la premiÃ¨re dÃ©cimale (ce qui peut Ãªtre une erreur importante
+si vous considÃ©rez que 0,1\ PiB vaut 112.589.990.684.262\ octets\ :)
+.LP
+Des problÃ¨mes d'interruption avec les pilotes de pÃ©riphÃ©riques Ethernet
+apparaissent avec EAGAIN
+(\fISIOCSIIFLAGS\ : Ressource temporairement indisponible\fR)
+il s'agit sÃ»rement d'un conflit d'interruptions. Voir
+.I http://www.scyld.com/expert/irq-conflict.html
+pour plus d'informations.
 .SH FICHIERS
-.I /proc/net/socket 
+.I /proc/net/socket
 .br
 .I /proc/net/dev
 .br
 .I /proc/net/if_inet6
-.SH BUGS
-Même si les adresses appletalk DDP et IPX peuvent être affichées,
-elles ne peuvent être modifiées avec cette commande.
+.SH BOGUES
+MÃªme si les adresses appletalk DDP et IPX peuvent Ãªtre affichÃ©es,
+elles ne peuvent Ãªtre modifiÃ©es avec cette commande.
 .SH VOIR AUSSI
-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
-.SH AUTHORS
+.BR route (8),
+.BR netstat (8),
+.BR arp (8),
+.BR rarp (8),
+.BR ipchains (8),
+.BR iptables (8)
+.br
+http://physics.nist.gov/cuu/Units/binary.html \- PrÃ©fixes
+pour les multiples binaires.
+.SH AUTEURS
 Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
 .br
 Alan Cox, <Alan.Cox@linux.org>
 .br
 Phil Blundell, <Philip.Blundell@pobox.com>
 .br
-Andi Kleen, 
+Andi Kleen,
+.br
+Bernd Eckenfels, <net-tools@lina.inka.de>
 .SH TRADUCTION
-Jean-Michel VANSTEENE (vanstee@worldnet.fr)
+.PP
+Ce document est une traduction rÃ©alisÃ©e par Jean Michel Vansteene
+<vanstee\ AT\ worldnet\ DOT\ fr> en aoÃ»t\ 1997,
+mise Ã  jour par Guillaume Audirac en aoÃ»t 2004
+et rÃ©visÃ©e le 17\ aoÃ»t\ 2006.
+.PP
+L'Ã©quipe de traduction a fait le maximum pour rÃ©aliser une adaptation
+franÃ§aise de qualitÃ©. La version anglaise la plus Ã  jour de ce document est
+toujours consultable via la commande\ : Â«\ \fBLANG=C\ man\ 8\ ifconfig\fR\ Â».
+N'hÃ©sitez pas Ã  signaler Ã  l'auteur ou au traducteur, selon le cas, toute
+erreur dans cette page de manuel.
diff --git a/man/fr_FR/netstat.8 b/man/fr_FR/netstat.8
index bf16bc6..c65d0be 100644
--- a/man/fr_FR/netstat.8
+++ b/man/fr_FR/netstat.8
@@ -8,11 +8,11 @@
 .\" Modified: Tuan Hoang tuan@optimus.mitre.org 
 .\"
 .\"
-.TH NETSTAT 8 "25 Fév 1999" "net-tools" "Linux Programmer's Manual"
+.TH NETSTAT 8 "2007-12-02" "net-tools" "Linux Administrator's Manual"
 
 .SH NAME
-netstat \- Affiche les connexions réseau, les tables de routage, les
-statistiques des interfaces, les connexions masquées, les messages netlink,
+netstat \- Affiche les connexions rÃ©seau, les tables de routage, les
+statistiques des interfaces, les connexions masquÃ©es, les messages netlink,
 et les membres multicast.
 
 .SH SYNOPSIS
@@ -21,6 +21,8 @@ et les membres multicast.
 .RB [ \-venaoc ]
 .RB [ \-\-tcp | \-t ]
 .RB [ \-\-udp | \-u ]
+.RB [ \-\-udplite | \-U ]
+.RB [ \-\-sctp | \-S ]
 .RB [ \-\-raw | \-w ]
 .RB [ \-\-groups | \-g ]
 .RB [ \-\-unix | \-x ] 
@@ -68,34 +70,34 @@ et les membres multicast.
 .PP
 .SH DESCRIPTION
 .B Netstat
-affiche les informations du sous-système réseau de Linux
+affiche les informations du sous-systÃ¨me rÃ©seau de Linux
 
 .SS "(no option)"
-Vous pouvez voir l'état des connexions réseau en listant les sockets
-ouvertes. C'est l'option par défaut : si vous ne spécifiez aucune famille
+Vous pouvez voir l'Ã©tat des connexions rÃ©seau en listant les sockets
+ouvertes. C'est l'option par dÃ©faut : si vous ne spÃ©cifiez aucune famille
 d'adresses, les sockets actives de toutes les familles d'adresses seront
-affichées.
-Avec le paramètre
+affichÃ©es.
+Avec le paramÃ¨tre
 .B -e
-vous obtenez quelques informations supplémentaires (userid). Avec le paramètre
+vous obtenez quelques informations supplÃ©mentaires (userid). Avec le paramÃ¨tre
 .B -v
-vous pouvez demander à netstat de signaler des familles d'adresses connues
-non supportées par le noyau. Le paramètre
+vous pouvez demander Ã  netstat de signaler des familles d'adresses connues
+non supportÃ©es par le noyau. Le paramÃ¨tre
 .B -o
-affiche des informations supplémentaires sur les timers réseau. En donnant
-le paramètre
+affiche des informations supplÃ©mentaires sur les timers rÃ©seau. En donnant
+le paramÃ¨tre
 .B -p
-vous verrez le PID et le nom du processus à qui appartient la socket. Le paramètre
+vous verrez le PID et le nom du processus Ã  qui appartient la socket. Le paramÃ¨tre
 .B -a
-affiche toutes les sockets, y compris les sockets d'écoute des serveurs. La famille
+affiche toutes les sockets, y compris les sockets d'Ã©coute des serveurs. La famille
 d'adresses
 .B inet
 affiche les sockets raw, udp et tcp.
 
 .SS "\-r, \-\-route"
-Avec le paramètre
+Avec le paramÃ¨tre
 .BR \-r ", " \-\-route
-vous pouvez visualiser les tables de routage dans le même format qu'avec la
+vous pouvez visualiser les tables de routage dans le mÃªme format qu'avec la
 commande
 .B "route -e" 
 .
@@ -104,44 +106,44 @@ utilisera le format de la commande
 .BR route .
 Veuillez consulter
 .BR route (8)
-pour plus de détails.
+pour plus de dÃ©tails.
 
-.SS "\-i, \-\-interface \fIiface\fI"
+.SS "\-i, \-\-interfaces \fIiface\fI"
 Si vous utilisez l'option
 .BR -i ", " --interfaces
 , une table de toutes (ou de l'interface
 .IR iface 
-spécifiée) les interfaces réseau sera affichée. Le format de sortie est le
-même que celui de la commande
+spÃ©cifiÃ©e) les interfaces rÃ©seau sera affichÃ©e. Le format de sortie est le
+mÃªme que celui de la commande
 .B "ifconfig -e"
-, et est décrit dans
+, et est dÃ©crit dans
 .BR ifconfig (8).
 .B "netstat -ei"
-affiche une table ou une seule entrée d'interface comme la commande 
-.B ifconfig
-. Avec le paramètre
+affiche une table ou une seule entrÃ©e d'interface comme la commande 
+.BR ifconfig .
+Avec le paramÃ¨tre
 .B -a
-, vous pouvez inclure les interfaces qui ne sont pas configurées (c.a.d qui
+, vous pouvez inclure les interfaces qui ne sont pas configurÃ©es (c.a.d qui
 n'ont pas l'indicateur
 .BR U = UP
-armé).
+armÃ©).
 
 .SS "\-M, \-\-masquerade"
 
-Permet de voir les sessions ayant de l'IP-masquerade. Avec le paramètre
+Permet de voir les sessions ayant de l'IP-masquerade. Avec le paramÃ¨tre
 .B -e 
-vous pouvez inclure quelques informations concernant les numéros de
-séquence et les deltas causés par des réécritures de données sur des
-sessions FTP (commande PORT). Le support de l'IP-Masquerade est utilisé
-pour cacher au monde extérieur des hôtes appartenant à un réseau (et ayant
-des adresses) non officiel, tel que décrit dans
-.BR ipfw (4), ipfwadm "(8) et " ipfw (8).
+vous pouvez inclure quelques informations concernant les numÃ©ros de
+sÃ©quence et les deltas causÃ©s par des rÃ©Ã©critures de donnÃ©es sur des
+sessions FTP (commande PORT). Le support de l'IP-Masquerade est utilisÃ©
+pour cacher au monde extÃ©rieur des hÃ´tes appartenant Ã  un rÃ©seau (et ayant
+des adresses) non officiel, tel que dÃ©crit dans
+.BR iptables (8).
 
 .SS "\-N, \-\-netlink"
 
-Les noyaux récents supportent une communication avec l'utilisateur appelée
-netlink. Vous pouvez obtenir des messages relatifs à la création, la
-suppression d'interfaces ou de routes à partir de 
+Les noyaux rÃ©cents supportent une communication avec l'utilisateur appelÃ©e
+netlink. Vous pouvez obtenir des messages relatifs Ã  la crÃ©ation, la
+suppression d'interfaces ou de routes Ã  partir de 
 .I /dev/route
 (36,0).
 
@@ -149,23 +151,23 @@ suppression d'interfaces ou de routes 
 .SH OPTIONS
 .SS "\-v, \-\-verbose"
 active le mode verbeux. Affiche quelques informations utiles concernant les
-familles d'adresses non configurées.
+familles d'adresses non configurÃ©es.
 
 .SS "\-n, \-\-numeric"
-affiche les adresses en format numérique au lieu d'essayer de déterminer le
-nom symbolique d'hôte, de port ou d'utilisateur.
+affiche les adresses en format numÃ©rique au lieu d'essayer de dÃ©terminer le
+nom symbolique d'hÃ´te, de port ou d'utilisateur.
 
 .SS "\-p, \-\-programs"
-affiche le nom et le PID des processus propriétaires de chaque socket
-décrite. Vous devez être le propriétaire d'un processus pour visualiser les
-sockets qui lui appartiennent ou être l'utilisateur
+affiche le nom et le PID des processus propriÃ©taires de chaque socket
+dÃ©crite. Vous devez Ãªtre le propriÃ©taire d'un processus pour visualiser les
+sockets qui lui appartiennent ou Ãªtre l'utilisateur
 .B root
 pour disposer de toutes les informations.
 
 .SS "\-A, \-\-af \fIfamille\fI"
-utilise une méthode différente pour affecter les familles d'adresses.
+utilise une mÃ©thode diffÃ©rente pour affecter les familles d'adresses.
 .I famille 
-est une liste de familles d'adresses séparées par des (',') telles que
+est une liste de familles d'adresses sÃ©parÃ©es par des (',') telles que
 .BR inet , 
 .BR unix , 
 .BR ipx , 
@@ -173,7 +175,7 @@ est une liste de familles d'adresses s
 .B netrom 
 et
 .BR ddp .
-L'utilisation des options longues suivantes a le même effet
+L'utilisation des options longues suivantes a le mÃªme effet
 .BR \-\-inet ,
 .BR \-\-unix ,
 .BR \-\-ipx ,
@@ -183,9 +185,9 @@ et
 .BR \-\-ddp.
 
 .SS "\-c, \-\-continous"
-Demandera à 
+Demandera Ã  
 .B netstat
-d'afficher la table sélectionnée chaque seconde jusqu'à ce que vous
+d'afficher la table sÃ©lectionnÃ©e chaque seconde jusqu'Ã  ce que vous
 l'interrompiez.
 
 .PP
@@ -195,102 +197,102 @@ l'interrompiez.
 .SS Connexions Internet actives \fR(TCP, UDP, RAW)\fR
 
 .SS "Proto" 
-Le protocole (TCP, UDP, RAW) utilisé par la socket. 
+Le protocole (TCP, UDP, RAW) utilisÃ© par la socket. 
 
 .SS "Recv-Q"
-Le nombre d'octets non encore lus par le programme utilisateur connecté
-à cette socket.
+Le nombre d'octets non encore lus par le programme utilisateur connectÃ©
+Ã  cette socket.
 
 .SS "Send-Q"
-Le nombre d'octets non encore acquittés par l'hôte distant.
+Le nombre d'octets non encore acquittÃ©s par l'hÃ´te distant.
 
 .SS "Local Address (Adresse locale)" 
-L'adresse locale (nom d'hôte local) et numéro de port de la
+L'adresse locale (nom d'hÃ´te local) et numÃ©ro de port de la
 socket. Sauf si l'option
 .B -n
-est donnée, l'adresse de la prise est traduite en nom d'hôte,
-et le numéro de port est traduit en nom de service correspondant.
+est donnÃ©e, l'adresse de la prise est traduite en nom d'hÃ´te,
+et le numÃ©ro de port est traduit en nom de service correspondant.
 
 .SS "Foreign Address (Adresse distante)"
-L'adresse distante (nom d'hôte distant) et le numéro de port de
-la prise. Comme pour l'adresse locale et le numéro de port, l'option
+L'adresse distante (nom d'hÃ´te distant) et le numÃ©ro de port de
+la prise. Comme pour l'adresse locale et le numÃ©ro de port, l'option
 .B -n
-invalide la traduction du nom d'hôte et de service.
+invalide la traduction du nom d'hÃ´te et de service.
 
 .SS "State (Etat)"
-L'état de la socket. Puisqu'il n'y a pas d'état dans le mode RAW
-et généralement pas d'état utilisé en UDP, cette colonne
+L'Ã©tat de la socket. Puisqu'il n'y a pas d'Ã©tat dans le mode RAW
+et gÃ©nÃ©ralement pas d'Ã©tat utilisÃ© en UDP, cette colonne
 peut se trouver vierge. Normalement, on trouvera une des valeur suivante:
 
 .TP
 .I
 ESTABLISHED
-La socket a une connexion établie.
+La socket a une connexion Ã©tablie.
 .TP
 .I
 SYN_SENT
-La socket attend activement d'établir une connexion.
+La socket attend activement d'Ã©tablir une connexion.
 .TP
 .I
 SYN_RECV
-Une requête de connexion a été reçue du réseau.
+Une requÃªte de connexion a Ã©tÃ© reÃ§ue du rÃ©seau.
 .TP
 .I
 FIN_WAIT1
-La socket est fermée, et la connexion est en cours de terminaison.
+La socket est fermÃ©e, et la connexion est en cours de terminaison.
 .TP
 .I
 FIN_WAIT2
-La connexion est fermée, et la socket attend une terminaison du distant.
+La connexion est fermÃ©e, et la socket attend une terminaison du distant.
 .TP
 .I
 TIME_WAIT
-La socket attend le traitement de tous les paquets encore sur le réseau
+La socket attend le traitement de tous les paquets encore sur le rÃ©seau
 avant d'entreprendre la fermeture.
 .TP
 .I
-CLOSED
-La socket n'est pas utilisée.
+CLOSE
+La socket n'est pas utilisÃ©e.
 .TP
 .I
 CLOSE_WAIT
-Le distant a arrêté, attendant la fermeture de la socket.
+Le distant a arrÃªtÃ©, attendant la fermeture de la socket.
 .TP
 .I
 LAST_ACK
-Le distant termine, et la socket est fermée. Attente d'acquittement.
+Le distant termine, et la socket est fermÃ©e. Attente d'acquittement.
 .TP
 .I
 LISTEN
-La socket est à l'écoute de connexions entrantes. Ces sockets ne sont
-affichées que si le paramètre
+La socket est Ã  l'Ã©coute de connexions entrantes. Ces sockets ne sont
+affichÃ©es que si le paramÃ¨tre
 .BR -a , --listening
 est fourni.
 .TP
 .I
 CLOSING
-Les deux prises sont arrêtées mais toutes les données locales n'ont
-pas encore été envoyées.
+Les deux prises sont arrÃªtÃ©es mais toutes les donnÃ©es locales n'ont
+pas encore Ã©tÃ© envoyÃ©es.
 .TP
 .I
 UNKNOWN
-L'état de la prise est inconnu.
+L'Ã©tat de la prise est inconnu.
 
 .SS "User (Utilisateur)"
-Le nom d'utilisateur ou l'UID du propriétaire de la socket.
+Le nom d'utilisateur ou l'UID du propriÃ©taire de la socket.
 
 .SS "PID/Program name (PID/Nom de Programme)"
-Le PID et le nom du programme (séparés par un slash) propriétaire de la
-socket. Le paramètre
+Le PID et le nom du programme (sÃ©parÃ©s par un slash) propriÃ©taire de la
+socket. Le paramÃ¨tre
 .B -p
 active l'affichage de cette colonne. Vous devez avoir les droits de
 .B root
-puisque vous devez avoir les droits d'accès aux processus pour visualiser
+puisque vous devez avoir les droits d'accÃ¨s aux processus pour visualiser
 les sockets qui lui correspondent. Ces informations ne sont pas disponibles
 avec les sockets IPX.
 
 .SS "Timer"
-(Ceci doit être rédigé)
+(Ceci doit Ãªtre rÃ©digÃ©)
 
 
 .PP
@@ -298,28 +300,28 @@ avec les sockets IPX.
 
 
 .SS "Proto" 
-Le protocole (habituellement UNIX) utilisé par la socket.
+Le protocole (habituellement UNIX) utilisÃ© par la socket.
 
 .SS "RefCnt"
-Le nombre de références (i.e. processus attachés via cette socket).
+Le nombre de rÃ©fÃ©rences (i.e. processus attachÃ©s via cette socket).
 
 .SS "Flags (indicateurs)"
-Les indicateurs affichée sont SO_ACCEPTON (affiché  
+Les indicateurs affichÃ©e sont SO_ACCEPTON (affichÃ©  
 .BR ACC ),
 SO_WAITDATA 
 .RB ( W )
 ou SO_NOSPACE 
 .RB ( N ). 
-SO_ACCECPTON est utilisé pour les sockets
-non-connectées si les processus correspondant sont en attente de
-demande de connexion. Les autres indicateurs sont d'un intérêt limité.
+SO_ACCECPTON est utilisÃ© pour les sockets
+non-connectÃ©es si les processus correspondant sont en attente de
+demande de connexion. Les autres indicateurs sont d'un intÃ©rÃªt limitÃ©.
 
 .SS "Type"
-Il y a différents types d'accès aux sockets :
+Il y a diffÃ©rents types d'accÃ¨s aux sockets :
 .TP
 .I
 SOCK_DGRAM
-La prise est utilisée en mode Datagram (sans connexion).
+La prise est utilisÃ©e en mode Datagram (sans connexion).
 .TP
 .I
 SOCK_STREAM
@@ -327,90 +329,89 @@ C'est une socket `stream' (connexion).
 .TP
 .I
 SOCK_RAW
-La prise est utilisée en mode `raw'.
+La prise est utilisÃ©e en mode `raw'.
 .TP
 .I
 SOCK_RDM
-Celle-ci est utilisée pour les messages délivrée de manière fiable.
+Celle-ci est utilisÃ©e pour les messages dÃ©livrÃ©e de maniÃ¨re fiable.
 .TP
 .I
 SOCK_SEQPACKET
-C'est une socket en mode paquets séquentiels.
+C'est une socket en mode paquets sÃ©quentiels.
 .TP
 .I
 SOCK_PACKET
-Prise d'accès à l'interface RAW.
+Prise d'accÃ¨s Ã  l'interface RAW.
 .TP
 .I
 UNKNOWN
-Qui sait ce que l'avenir nous réserve - Juste à remplir ici :-)
+Qui sait ce que l'avenir nous rÃ©serve - Juste Ã  remplir ici :-)
 
 .PP
 .SS "State (Etat)"
-Ce champ contient un des mots clés suivants :
+Ce champ contient un des mots clÃ©s suivants :
 .TP
 .I
 FREE
-La socket n'est pas allouée
+La socket n'est pas allouÃ©e
 .TP
 .I
 LISTENING
-La socket est à l'écoute de demandes de connexions. Ces sockets ne sont
-affichées que si le paramètre
+La socket est Ã  l'Ã©coute de demandes de connexions. Ces sockets ne sont
+affichÃ©es que si le paramÃ¨tre
 .BR -a , --listening
 est fourni.
 .TP
 .I
 CONNECTING
-La prise est en cours d'établissement de connexion.
+La prise est en cours d'Ã©tablissement de connexion.
 .TP
 .I
 CONNECTED
-La socket est connectée.
+La socket est connectÃ©e.
 .TP
 .I
 DISCONNECTING
-La socket est en cours de déconnexion.
+La socket est en cours de dÃ©connexion.
 .TP
 .I
 (empty)
-La socket n'est connectée à aucune autre.
+La socket n'est connectÃ©e Ã  aucune autre.
 .TP
 .I
 UNKNOWN
-Cet état ne devrait pas apparaître.
+Cet Ã©tat ne devrait pas apparaÃ®tre.
 
 .SS "PID/Program name (PID/Nom de programme"
-Le PID et le nom du programme propriétaire de la socket. Plus
+Le PID et le nom du programme propriÃ©taire de la socket. Plus
 d'informations sont disponibles dans la section
 .B "Connexions Internet actives"
 ci-dessus.
 
 .SS "Path (chemin)"
-Affiche le chemin correspondant à l'attachement des processus à la socket.
+Affiche le chemin correspondant Ã  l'attachement des processus Ã  la socket.
 
 .PP
 .SS Sockets IPX actives
 
-(à faire par quelqu'un qui connaît)
+(Ã  faire par quelqu'un qui connaÃ®t)
 
 .PP
 .SS Sockets NET/ROM actives
 
-(à faire par quelqu'un qui connaît)
+(Ã  faire par quelqu'un qui connaÃ®t)
 
 .PP
 .SS Sockets AX.25 actives
 
-(à faire par quelqu'un qui connaît)
+(Ã  faire par quelqu'un qui connaÃ®t)
 
 .PP
 .SH NOTES
 Depuis la version 2.2 du noyau, netstat -i n'affiche plus les statistiques
 des interfaces alias. Pour obtenir les compteurs par interface alias, vous
-devez définir des règles spécifiques à l'aide de la commande
-.BR ipchains(8) 
-.  
+devez dÃ©finir des rÃ¨gles spÃ©cifiques Ã  l'aide de la commande
+.BR iptables(8).
 
 .SH FICHIERS
 .ta
@@ -418,7 +419,7 @@ devez d
 -- Le fichier de correspondance des services
 
 .I /proc/net/dev
--- informations périphériques
+-- informations pÃ©riphÃ©riques
 
 .I /proc/net/raw
 -- informations sockets RAW
@@ -471,31 +472,28 @@ devez d
 .SH VOIR AUSSI
 .BR route (8), 
 .BR ifconfig (8), 
-.BR ipfw (4), 
-.BR ipfw (8), 
-.BR ipfwadm (8)
-.BR ipchains (8)
+.BR iptables (8)
 
 .PP
 .SH BUGS
-Des informations étranges peuvent apparaitre occasionnellement
-si une socket change d'état au moment ou elle est visualisée.
+Des informations Ã©tranges peuvent apparaitre occasionnellement
+si une socket change d'Ã©tat au moment ou elle est visualisÃ©e.
 Ceci est peut probable.
 .br
-Le paramètre
+Le paramÃ¨tre
 .B netstat -i
-est décrit tel qu'il fonctionnera lorsque le code de la version BETA du
-paquetage net-tools aura été nettoyé.
+est dÃ©crit tel qu'il fonctionnera lorsque le code de la version BETA du
+paquetage net-tools aura Ã©tÃ© nettoyÃ©.
 
 .PP
 .SH AUTEURS
-L'interface utilisateur de netstat a été développée par
+L'interface utilisateur de netstat a Ã©tÃ© dÃ©veloppÃ©e par
 Fred Baumgarten <dc6iq@insu1.etec.uni-karlsruhe.de>. Les pages du
-manuel essentiellement écrites par Matt Welsh
-<mdw@tc.cornell.edu>. Mis à jour par Alan Cox <Alan.Cox@linux.org>.
+manuel essentiellement Ã©crites par Matt Welsh
+<mdw@tc.cornell.edu>. Mis Ã  jour par Alan Cox <Alan.Cox@linux.org>.
 .br
 La page de manuel et la commande incluse dans le paquetage net-tools
-a été totallement réécrite par Bernd Eckenfels 
+a Ã©tÃ© totallement rÃ©Ã©crite par Bernd Eckenfels 
 <ecki@linux.de>.
 .SH TRADUCTION
 Jean Michel VANSTEENE (vanstee@worldnet.fr)
diff --git a/man/fr_FR/plipconfig.8 b/man/fr_FR/plipconfig.8
index cd44449..4d17ea2 100644
--- a/man/fr_FR/plipconfig.8
+++ b/man/fr_FR/plipconfig.8
@@ -1,44 +1,44 @@
 .TH PLIPCONFIG 8 "17 February 1995" "" ""
 .SH NOM
-plipconfig \- réglage fin des paramètres du périphérique PLIP
+plipconfig \- rÃ©glage fin des paramÃ¨tres du pÃ©riphÃ©rique PLIP
 .SH SYNOPSIS
 .B "plipconfig interface"
 .br
 .B "plipconfig interface [nibble NN] [trigger NN] [unit NN]"
 .SH DESCRIPTION
 .B Plipconfig
-est utilisé pour améliorer (espérons-le) les performances PLIP
-en changeant les timings par défaut utilisés par le protocole PLIP. Les
-résultats dépendent du port parallèle
-utilisé, du cable, et de la vitesse CPU de chaque machine
-à chaque bout du lien PLIP.
+est utilisÃ© pour amÃ©liorer (espÃ©rons-le) les performances PLIP
+en changeant les timings par dÃ©faut utilisÃ©s par le protocole PLIP. Les
+rÃ©sultats dÃ©pendent du port parallÃ¨le
+utilisÃ©, du cable, et de la vitesse CPU de chaque machine
+Ã  chaque bout du lien PLIP.
 .LP
 Si le seul argument est l'
 .B interface
 ,
 .B plipconfig
-affiche seulement l'état de cette interface. Autrement, il essaiera de
-positionner les options données.
+affiche seulement l'Ã©tat de cette interface. Autrement, il essaiera de
+positionner les options donnÃ©es.
 .SH OPTIONS
 .TP
 .B "nibble NN"
-Définit la valeur d'attente des digits en microsecondes. Par défault : 3000.
+DÃ©finit la valeur d'attente des digits en microsecondes. Par dÃ©fault : 3000.
 .TP
 .B "trigger NN"
-Définit le délai de déclenchement en microsecondes. Par défault : 500.
+DÃ©finit le dÃ©lai de dÃ©clenchement en microsecondes. Par dÃ©fault : 500.
 .LP
-La vitesse de PLIP peut, dans certains cas, être améliorée en
-diminuant les valeurs par défaut.
+La vitesse de PLIP peut, dans certains cas, Ãªtre amÃ©liorÃ©e en
+diminuant les valeurs par dÃ©faut.
 Les valeurs trop petites peuvent engendrer une utilisation excessive de CPU,
-et un temps de réponse aux interruptions mauvais, dont le résultat est
-la perte de caractères lus sur le port, ou de paquets PLIP.
+et un temps de rÃ©ponse aux interruptions mauvais, dont le rÃ©sultat est
+la perte de caractÃ¨res lus sur le port, ou de paquets PLIP.
 La modification du MTU PLIP peut aussi affecter la vitesse PLIP.
 .SH NOTE
-Si vous n'obtenez aucune réponse, il est fort probable que l'IRQ configurée
-soit mauvaise, et qu'elle nécessite une configuration avec ifconfig.
-Les quelques cas pour lesquels les timings par défaut sont trop courts,
-arrivent lorque l'on utilise de longs cables. Quelque chose à ne pas faire,
-puisque le port parallèle n'est pas fait pour fonctionner avec de longs cables.
+Si vous n'obtenez aucune rÃ©ponse, il est fort probable que l'IRQ configurÃ©e
+soit mauvaise, et qu'elle nÃ©cessite une configuration avec ifconfig.
+Les quelques cas pour lesquels les timings par dÃ©faut sont trop courts,
+arrivent lorque l'on utilise de longs cables. Quelque chose Ã  ne pas faire,
+puisque le port parallÃ¨le n'est pas fait pour fonctionner avec de longs cables.
 .SH VOIR AUSSI
 .I ifconfig(8)
 .SH BUGS
diff --git a/man/fr_FR/rarp.8 b/man/fr_FR/rarp.8
index 73e9328..e68730f 100644
--- a/man/fr_FR/rarp.8
+++ b/man/fr_FR/rarp.8
@@ -1,6 +1,6 @@
-.TH RARP 8 "4 Août 1997" "net-tools" "Linux Programmer's Manual"
+.TH RARP 8 "4 AoÃ»t 1997" "net-tools" "Linux Administrator's Manual"
 .SH NOM
-rarp \- manipule la table système RARP
+rarp \- manipule la table systÃ¨me RARP
 .SH SYNOPSIS
 .B "rarp [-V] [--version] [-h] [--help]"
 .br
@@ -11,30 +11,30 @@ rarp \- manipule la table syst
 .B "rarp [-v] [-t type] -s nom_d_hote adr_materiel"
 .SH DESCRIPTION
 .B Rarp
-manipule la table RARP du noyau de différentes façons.  Les options de base
-permettent d'effacer une entrée de correspondance d'adresses et d'en
-redéfinir une manuellement.  Pour des besoins de débogage, le programme
+manipule la table RARP du noyau de diffÃ©rentes faÃ§ons.  Les options de base
+permettent d'effacer une entrÃ©e de correspondance d'adresses et d'en
+redÃ©finir une manuellement.  Pour des besoins de dÃ©bogage, le programme
 .B rarp
-permet aussi de vider complètement la table RARP.
+permet aussi de vider complÃ¨tement la table RARP.
 .SH OPTIONS
 .TP
 .B \-V
-Affiche la version de RARP utilisé.
+Affiche la version de RARP utilisÃ©.
 .TP
 .B \-v
-Dit à l'utilisateur ce qui se passe, en étant verbeux.
+Dit Ã  l'utilisateur ce qui se passe, en Ã©tant verbeux.
 .TP
 .B "\-t type"
-En définissant ou lisant la table RARP, ce paramètre optionnel dit à
+En dÃ©finissant ou lisant la table RARP, ce paramÃ¨tre optionnel dit Ã 
 .B rarp
-quelles classes d'entrées il doit contrôler.  La valeur par défaut de
-ce paramètre est
+quelles classes d'entrÃ©es il doit contrÃ´ler.  La valeur par dÃ©faut de
+ce paramÃ¨tre est
 .B ether
-(i.e. code matériel
+(i.e. code matÃ©riel
 .B 0x01
 pour
 .B "IEEE 802.3 10Mbps Ethernet".
-D'autres valeurs doivent correspondre à des technologies réseaux telles que
+D'autres valeurs doivent correspondre Ã  des technologies rÃ©seaux telles que
 .B AX.25 (ax25).
 et
 .B NET/ROM (netrom).
@@ -42,31 +42,31 @@ et
 .B "\-a"
 .TP
 .B "\-\-list"
-Liste les entrées de la table RARP.
+Liste les entrÃ©es de la table RARP.
 .TP
 .B "\-d nom_d_hote"
 .TP
 .B "\-\-delete nom_d_hote"
-Supprime toutes les entrées RARP relatives à l'hôte spécifié.
+Supprime toutes les entrÃ©es RARP relatives Ã  l'hÃ´te spÃ©cifiÃ©.
 .TP
 .B "\-s nom_d_hote adr_materielle"
 .TP
 .B "\-\-set nom_d_hote adr_materielle"
-Crée manuellement une correspondance d'adresses RARP pour l'hôte
-.B nom_d_hôte
-avec l'adresse matérielle
-.B adr_materielle
-. Le format de l'adresse matérielle est dépendant du matériel,
-mais pour la plupart on peut considérer que la présentation classique
-peut être utilisée.  Pour la classe Ethernet, c'est 6 octets en hexadécimal,
-séparés par des double-points.
+CrÃ©e manuellement une correspondance d'adresses RARP pour l'hÃ´te
+.B nom_d_hÃ´te
+avec l'adresse matÃ©rielle
+.BR adr_materielle .
+Le format de l'adresse matÃ©rielle est dÃ©pendant du matÃ©riel,
+mais pour la plupart on peut considÃ©rer que la prÃ©sentation classique
+peut Ãªtre utilisÃ©e.  Pour la classe Ethernet, c'est 6 octets en hexadÃ©cimal,
+sÃ©parÃ©s par des double-points.
 
 .SH ATTENTION
-Certains systèmes (notamment des vieux Sun's) supposent que l'hôte
-répondant à une requête RARP peut aussi fournir d'autres services
-de boot à distance. Par conséquent n'ajoutez jamais
-d'entrées RARP à la légère à moins que vous souhaitiez affronter la
-colère de votre administrateur réseau.
+Certains systÃ¨mes (notamment des vieux Sun's) supposent que l'hÃ´te
+rÃ©pondant Ã  une requÃªte RARP peut aussi fournir d'autres services
+de boot Ã  distance. Par consÃ©quent n'ajoutez jamais
+d'entrÃ©es RARP Ã  la lÃ©gÃ¨re Ã  moins que vous souhaitiez affronter la
+colÃ¨re de votre administrateur rÃ©seau.
 .SH FICHIERS
 .I /proc/net/rarp,
 .SH VOIR AUSSI
diff --git a/man/fr_FR/route.8 b/man/fr_FR/route.8
index 9109e8d..986faf9 100644
--- a/man/fr_FR/route.8
+++ b/man/fr_FR/route.8
@@ -1,4 +1,4 @@
-.TH ROUTE 8 "8 Août 1997" "net-tools" "Linux Programmer's Manual"
+.TH ROUTE 8 "8 AoÃ»t 1997" "net-tools" "Linux Administrator's Manual"
 .SH NAME
 route \- affiche / manipule la table de routage IP
 .SH SYNOPSIS
@@ -54,9 +54,9 @@ If]
 .RB [ \--help ]
 .SH DESCRIPTION
 .B Route
-manipule la table de routage IP du noyau.  Son utilisation première
-consiste à configurer des routes statiques vers des hôtes ou des réseaux
-via une interface, après sa configuration par le programme
+manipule la table de routage IP du noyau.  Son utilisation premiÃ¨re
+consiste Ã  configurer des routes statiques vers des hÃ´tes ou des rÃ©seaux
+via une interface, aprÃ¨s sa configuration par le programme
 .B ifconfig(8).
 
 .SH OPTIONS
@@ -66,12 +66,12 @@ Active le mode verbeux.
 
 .TP
 .B \-A famille
-Utilise la famille d'adresses spécifiée (p.ex. `inet', `inet6').
+Utilise la famille d'adresses spÃ©cifiÃ©e (p.ex. `inet', `inet6').
 
 .TP
 .B \-n
-Affiche les adresses numériques, au lieu
-d'essayer de déterminer les noms d'hôtes. C'est utile si vous essayer de
+Affiche les adresses numÃ©riques, au lieu
+d'essayer de dÃ©terminer les noms d'hÃ´tes. C'est utile si vous essayer de
 savoir pourquoi la route vers votre serveur de nom a disparu.
 
 .TP
@@ -80,24 +80,24 @@ utilise
 .BR netstat (8)-format
 pour l'affichage de la table de routage.
 .B \-ee 
-Génère une très longue ligne avec tous les paramètres à partir de la table
+GÃ©nÃ¨re une trÃ¨s longue ligne avec tous les paramÃ¨tres Ã  partir de la table
 de routage.
 
 .TP
 .B \-net
 la
 .B cible
-est un réseau.
+est un rÃ©seau.
 
 .TP
 .B -host
 la
 .B cible 
-est un hôte.
+est un hÃ´te.
 
 .TP 
 .B -F
-affiche la table de routage FIB du noyau. L'organisation peut être changée avec
+affiche la table de routage FIB du noyau. L'organisation peut Ãªtre changÃ©e avec
 .B \-e
 et
 .B \-ee
@@ -117,131 +117,131 @@ ajoute une route.
 
 .TP
 .B cible
-L'hôte ou le réseau destination. Vous pouvez fournir une adresse IP en
-notation décimale pointée ou un nom d'hôte ou de réseau.
+L'hÃ´te ou le rÃ©seau destination. Vous pouvez fournir une adresse IP en
+notation dÃ©cimale pointÃ©e ou un nom d'hÃ´te ou de rÃ©seau.
 
 .TP
 .B netmask Nm
-spécifie le masque réseau de la route à ajouter.
+spÃ©cifie le masque rÃ©seau de la route Ã  ajouter.
 
 .TP
 .B gw Gw
-signifie que tout paquet IP envoyé à cette adresse  sera routé par
-la passerelle spécifiée.
+signifie que tout paquet IP envoyÃ© Ã  cette adresse  sera routÃ© par
+la passerelle spÃ©cifiÃ©e.
 .B NOTE:
-La passerelle concernée doit pouvoir être atteinte. Ceci signifie
-qu'une route statique vers cette passerelle doit préalablement exister.
-Si vous spécifiez l'adresse de l'une de vos interfaces locales, elle sera
-utilisée pour décider de l'interface vers laquelle les paquets seront
-envoyés. Ceci est une bidouille permettant d'être compatible BSD.
+La passerelle concernÃ©e doit pouvoir Ãªtre atteinte. Ceci signifie
+qu'une route statique vers cette passerelle doit prÃ©alablement exister.
+Si vous spÃ©cifiez l'adresse de l'une de vos interfaces locales, elle sera
+utilisÃ©e pour dÃ©cider de l'interface vers laquelle les paquets seront
+envoyÃ©s. Ceci est une bidouille permettant d'Ãªtre compatible BSD.
 
 .TP
 .B metric M
-Affecte la valeur M au champ métrique de la table de routage (utilisé par
-les démons de routage).
+Affecte la valeur M au champ mÃ©trique de la table de routage (utilisÃ© par
+les dÃ©mons de routage).
 
 .TP 
 .B mss M
-Spécifie le MSS (Maximum Segment Size, Taille maximum de segment) de TCP,
-pour les connexions empreintant cette route. Ce n'est normalement utilisé
+SpÃ©cifie le MSS (Maximum Segment Size, Taille maximum de segment) de TCP,
+pour les connexions empreintant cette route. Ce n'est normalement utilisÃ©
 que pour des optimisations fines des configurations de routage. 
 
 
 .TP 
 .B window W 
-Définit la taille de fenêtre TCP à W octets pour les connexions relatives 
-à cette route. C'est en général uniquement utilisé sur les réseaux AX.25 et
-avec les pilotes incapables de manipuler les trames dos à dos.
+DÃ©finit la taille de fenÃªtre TCP Ã  W octets pour les connexions relatives 
+Ã  cette route. C'est en gÃ©nÃ©ral uniquement utilisÃ© sur les rÃ©seaux AX.25 et
+avec les pilotes incapables de manipuler les trames dos Ã  dos.
 
 .TP
 .B irtt I
-Définit le iRTT initial (round trip time) pour les connexions TCP sur cette
-route à I millisecondes (1-12000). C'est en général uniquement utilisé sur
-les réseaux AX.25. Si omis, la valeur par défaut (300 ms selon le RFC 1122)
-est utilisée.
+DÃ©finit le iRTT initial (round trip time) pour les connexions TCP sur cette
+route Ã  I millisecondes (1-12000). C'est en gÃ©nÃ©ral uniquement utilisÃ© sur
+les rÃ©seaux AX.25. Si omis, la valeur par dÃ©faut (300 ms selon le RFC 1122)
+est utilisÃ©e.
 
 .TP
 .B reject
-Installe une route bloquante, qui forcera l'échec d'une recherche.
-C'est par exemple utilisé pour masquer les réseaux avant d'utiliser la
-route par défaut. Ce n'est pas une fonction de pare-feu.
+Installe une route bloquante, qui forcera l'Ã©chec d'une recherche.
+C'est par exemple utilisÃ© pour masquer les rÃ©seaux avant d'utiliser la
+route par dÃ©faut. Ce n'est pas une fonction de pare-feu.
 
 .TP
 .B mod, dyn, reinstate
-Installe une route dynamique ou modifiée. Les deux indicateurs ne sont en
-général positionnés que par le démon de routage. Cela ne sert que pour des
+Installe une route dynamique ou modifiÃ©e. Les deux indicateurs ne sont en
+gÃ©nÃ©ral positionnÃ©s que par le dÃ©mon de routage. Cela ne sert que pour des
 besoins de diagnostics.
 
 .TP
 .B dev If
-Force la route à être associée au périphérique spécifié, sinon le noyau
-tentera de le déterminer par lui-même (en consultant les routes existantes
-et les spécifications de périphériques). Dans la plupart des réseaux
+Force la route Ã  Ãªtre associÃ©e au pÃ©riphÃ©rique spÃ©cifiÃ©, sinon le noyau
+tentera de le dÃ©terminer par lui-mÃªme (en consultant les routes existantes
+et les spÃ©cifications de pÃ©riphÃ©riques). Dans la plupart des rÃ©seaux
 normaux, vous n'aurez pas besoin de ceci.
 
 If 
 .B dev If
-est la dernière option de la ligne de commande, le mot
+est la derniÃ¨re option de la ligne de commande, le mot
 .B dev
-peut être omis, puisque c'est la valeur par défaut. Autrement l'ordre des
+peut Ãªtre omis, puisque c'est la valeur par dÃ©faut. Autrement l'ordre des
 modificateurs de route (metric - netmask - gw - dev) n'a pas d'importance.
 
 .SH EXEMPLES
 .TP
 .B route add -net 127.0.0.0
-ajoute l'entrée loopback normale, en utilisant le masque 255.0.0.0 (réseau
-de classe A, selon l'adresse de destination) et associée avec l'interface 
-"lo" (en supposant que ce périphérique a été correctement configuré avec
+ajoute l'entrÃ©e loopback normale, en utilisant le masque 255.0.0.0 (rÃ©seau
+de classe A, selon l'adresse de destination) et associÃ©e avec l'interface 
+"lo" (en supposant que ce pÃ©riphÃ©rique a Ã©tÃ© correctement configurÃ© avec
 .BR ifconfig (8)). 
 
 .TP 
 .B route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
-ajoute une route vers le réseau 192.56.76.x via 
-"eth0". Le masque de classe C n'est pas vraiment nécessaire ici car
-192.* est une adresse IP de classe C. Le mot "dev" peut être omis. 
+ajoute une route vers le rÃ©seau 192.56.76.x via 
+"eth0". Le masque de classe C n'est pas vraiment nÃ©cessaire ici car
+192.* est une adresse IP de classe C. Le mot "dev" peut Ãªtre omis. 
 
 .TP
 .B route add default gw mango-gw
-ajoute une route par défaut (qui sera utilisée si aucune autre route ne
+ajoute une route par dÃ©faut (qui sera utilisÃ©e si aucune autre route ne
 convient). Tous les paquets empreintant cette route passeront par
-"mango-gw". Le périphérique qui sera effectivement utilisé pour cette route
-dépend de la façon dont on atteint "mango-gw" - la route statique vers
-"mango-gw" devra être préalablement configurée. 
+"mango-gw". Le pÃ©riphÃ©rique qui sera effectivement utilisÃ© pour cette route
+dÃ©pend de la faÃ§on dont on atteint "mango-gw" - la route statique vers
+"mango-gw" devra Ãªtre prÃ©alablement configurÃ©e. 
 
 .TP
 .B route add ipx4 sl0
-ajoute une route vers l'hôte "ipx4" via l'interface SLIP (en supposant que
-"ipx4" est l'hôte SLIP).
+ajoute une route vers l'hÃ´te "ipx4" via l'interface SLIP (en supposant que
+"ipx4" est l'hÃ´te SLIP).
 
 .TP
 .B route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
-Cette commande route le réseau "192.57.66.x" par l'ancienne route vers l'interface SLIP.
+Cette commande route le rÃ©seau "192.57.66.x" par l'ancienne route vers l'interface SLIP.
 
 .TP
 .B route add 224.0.0.0 netmask 240.0.0.0 dev eth0
-Ceci est une commande mal documentée et les gens savent ce qu'il faut
-faire? Ceci force toutes les routes IP des classes D (multicast) à
+Ceci est une commande mal documentÃ©e et les gens savent ce qu'il faut
+faire? Ceci force toutes les routes IP des classes D (multicast) Ã 
 passer par "eth0". C'est la configuration correcte, normale pour un noyau
 supportant le multicast.
 
 .TP
 .B route add 10.0.0.0 netmask 255.0.0.0 reject
-Installe une route 'rejetée' pour le réseau privé "10.x.x.x."
+Installe une route 'rejetÃ©e' pour le rÃ©seau privÃ© "10.x.x.x."
 
 .LP
 .SH RESULTATS
-Le contenu des tables de routage du noyaus est affiché en colonnes comme
+Le contenu des tables de routage du noyaus est affichÃ© en colonnes comme
 suit
 .TP
 .B Destination     
-Le réseau ou hôte destination.
+Le rÃ©seau ou hÃ´te destination.
 .TP
 .B Gateway
-L'adresse de la passerelle ou '*' si indéfini.
+L'adresse de la passerelle ou '*' si indÃ©fini.
 .TP
 .B Genmask         
-Le masque de réseau pour le réseau destinataire; '255.255.255.255' pour un hôte
-et '0.0.0.0' pour la route par défaut (
+Le masque de rÃ©seau pour le rÃ©seau destinataire; '255.255.255.255' pour un hÃ´te
+et '0.0.0.0' pour la route par dÃ©faut (
 .B default
 ).
 .TP
@@ -254,63 +254,63 @@ Les indicateurs possibles sont
 .br
 .B H
 (la cible est un 
-.BR hôte )
+.BR hÃ´te )
 .br
 .B G
 (utilise comme
 .BR passerelle )
 .br
 .B R
-.RB ( rétablit 
+.RB ( rÃ©tablit 
 la route pour le routage dynamique)
 .br
 .B D
 .RB ( dynamiquement
-configurée par le démon ou par redirect)
+configurÃ©e par le dÃ©mon ou par redirect)
 .br
 .B M
-.RB ( modifiée
-par le démon de routage ou par redirect)
+.RB ( modifiÃ©e
+par le dÃ©mon de routage ou par redirect)
 .br
 .B !
-.RB ( rejète
+.RB ( rejÃ¨te
 la route)
 .TP
 .B Metric 
-La 'distance' à la cible (habituellement comptée en hops). Ce n'est pas
-utilisé par les noyaux récents, mais peut-être requis par certains démons
+La 'distance' Ã  la cible (habituellement comptÃ©e en hops). Ce n'est pas
+utilisÃ© par les noyaux rÃ©cents, mais peut-Ãªtre requis par certains dÃ©mons
 de routage.
 .TP
 .B Ref    
-Nombre de références à cette route. (Pas utilisé dans le noyau Linux.)
+Nombre de rÃ©fÃ©rences Ã  cette route. (Pas utilisÃ© dans le noyau Linux.)
 .TP
 .B Use
 Count of lookups for the route.  Depending on the use of -F and -C this will
 be either route cache misses (-F) or hits (-C).
 .TP
 .B Iface
-Interface vers laquelle les paquets empruntant cette route seront envoyés.
+Interface vers laquelle les paquets empruntant cette route seront envoyÃ©s.
 .TP
 .B MSS 
-Taille de segment maximum par défaut pour les connexions TCP sur cette
+Taille de segment maximum par dÃ©faut pour les connexions TCP sur cette
 route.
 .TP
 .B Window  
-Taille de fenêtre par défaut pour les connexions TCP sur cette route.
+Taille de fenÃªtre par dÃ©faut pour les connexions TCP sur cette route.
 .TP
 .B irtt
 RTT Initial (Round Trip Time). Le noyau utilise ceci pour essayer les
-meilleurs paramètres protocolaires TCP sans attendre de réponse
-(éventuellement tardive).
+meilleurs paramÃ¨tres protocolaires TCP sans attendre de rÃ©ponse
+(Ã©ventuellement tardive).
 .TP
-.B HH (seulement caché)
-Le nombre d'entrées ARP et de routes cachées faisant référence au cache
-d'en-tête matériel pour la route en cache. Ce sera la valeur \-1 si aucune adresse
-matérielle n'est nécessaire pour l'interface de la route cachée (p.ex. lo).
+.B HH (seulement cachÃ©)
+Le nombre d'entrÃ©es ARP et de routes cachÃ©es faisant rÃ©fÃ©rence au cache
+d'en-tÃªte matÃ©riel pour la route en cache. Ce sera la valeur \-1 si aucune adresse
+matÃ©rielle n'est nÃ©cessaire pour l'interface de la route cachÃ©e (p.ex. lo).
 .TP
-.B Arp (seulement caché)
-Indique si oui ou non l'adresse matérielle pour la route en cache est encore
-à jour.
+.B Arp (seulement cachÃ©)
+Indique si oui ou non l'adresse matÃ©rielle pour la route en cache est encore
+Ã  jour.
 .LP
 .SH FICHIERS
 .I /proc/net/ipv6_route
@@ -324,11 +324,11 @@ Indique si oui ou non l'adresse mat
 .LP
 .SH HISTORIQUE
 .B Route 
-pour Linux a été originellement écrit par Fred N. van Kempen,
-<waltje@uwalt.nl.mugnet.org> puis modifié par Johannes Stille et
-Linus Torvalds pour pl15. Alan Cox a ajouté les options concernant 
-la gestion des fenêtres et MSS pour Linux 1.1.22. Le support de irtt 
-et la fusion avec netstat ont été réalisés par Bernd Eckenfels.
+pour Linux a Ã©tÃ© originellement Ã©crit par Fred N. van Kempen,
+<waltje@uwalt.nl.mugnet.org> puis modifiÃ© par Johannes Stille et
+Linus Torvalds pour pl15. Alan Cox a ajoutÃ© les options concernant 
+la gestion des fenÃªtres et MSS pour Linux 1.1.22. Le support de irtt 
+et la fusion avec netstat ont Ã©tÃ© rÃ©alisÃ©s par Bernd Eckenfels.
 .SH AUTEUR
 Maintenu par Phil Blundell <Philip.Blundell@pobox.com>.
 .SH TRADUCTION
diff --git a/man/fr_FR/slattach.8 b/man/fr_FR/slattach.8
index 512d514..d21d0d7 100644
--- a/man/fr_FR/slattach.8
+++ b/man/fr_FR/slattach.8
@@ -1,87 +1,87 @@
 .TH SLATTACH 8 "12 Feb 1994" "" ""
 .SH NOM
-slattach \- attache une interface réseau à une ligne série
+slattach \- attache une interface rÃ©seau Ã  une ligne sÃ©rie
 .SH SYNOPSIS
 .B "slattach [-dehlLmnqv] [-c commande] [-p proto] [-s vitesse] [tty]"
 .br
 .SH DESCRIPTION
 .B Slattach
-est un minuscule programme qui peut être utilisé pour attacher
-un terminal normal ("série") dans un des différents modes "réseau",
-ceci vous permettant de l'utiliser pour des liaisons point-à-point
-vers d'autres systèmes.
+est un minuscule programme qui peut Ãªtre utilisÃ© pour attacher
+un terminal normal ("sÃ©rie") dans un des diffÃ©rents modes "rÃ©seau",
+ceci vous permettant de l'utiliser pour des liaisons point-Ã -point
+vers d'autres systÃ¨mes.
 .SH OPTIONS
 .TP
 .B "[-c commande]"
-Exécute
+ExÃ©cute
 .B `commande'
-lorsque la ligne est suspendue. Ceci peut être utilisé pour lancer
-des scripts ou réétablir des connexions quand un lien tombe.
+lorsque la ligne est suspendue. Ceci peut Ãªtre utilisÃ© pour lancer
+des scripts ou rÃ©Ã©tablir des connexions quand un lien tombe.
 .TP
 .B "[-d]"
-Valide le débogage.  Utile pour déterminer pourquoi une configuration
+Valide le dÃ©bogage.  Utile pour dÃ©terminer pourquoi une configuration
 ne fonctionne pas.
 .TP
 .B "[-h]"
-Termine lorsque la porteuse est perdue. Ceci fonctionne à la fois sur
-les périphériques /dev/tty et /dev/cua en contrôlant directement
-l'état de la porteuse toutes les 15 secondes.
+Termine lorsque la porteuse est perdue. Ceci fonctionne Ã  la fois sur
+les pÃ©riphÃ©riques /dev/tty et /dev/cua en contrÃ´lant directement
+l'Ã©tat de la porteuse toutes les 15 secondes.
 .TP
 .B "[-v]"
 Valide le mode verbeux.  Utile pour les shell scripts.
 .TP
 .B "[-q]"
-Opère en mode silencieux - pas de messages du tout.
+OpÃ¨re en mode silencieux - pas de messages du tout.
 .TP
 .B "[-l]"
-Crée un fichier de vérouillage pour le périphérique comme
+CrÃ©e un fichier de vÃ©rouillage pour le pÃ©riphÃ©rique comme
 pour UUCP dans /var/lock.
 .TP
 .B "[-n]"
-Equivalent à la commande "mesg n".
+Equivalent Ã  la commande "mesg n".
 .TP
 .B "[-m]"
 \fBn'\fPinitialise \fBpas\fP la ligne en mode raw 8 bits.
 .TP
 .B "[-e]"
-Termine correctement après l'initialisation du périphérique,
+Termine correctement aprÃ¨s l'initialisation du pÃ©riphÃ©rique,
 au lieu d'attendre que la ligne soit suspendue.
 .TP
 .B "[-L]"
-Valide les opérations 3 lignes. Le terminal est mis en mode CLOCAL, 
-la surveillance de porteuse est invalidée.
+Valide les opÃ©rations 3 lignes. Le terminal est mis en mode CLOCAL, 
+la surveillance de porteuse est invalidÃ©e.
 .TP
 .B "[-p proto]"
-Définit le protocole spécifique à utiliser sur la ligne.
-La valeur par défaut est 
+DÃ©finit le protocole spÃ©cifique Ã  utiliser sur la ligne.
+La valeur par dÃ©faut est 
 .B "cslip"
-, c'est-à-dire SLIP compressé.  Les autres valeurs possibles sont :
+, c'est-Ã -dire SLIP compressÃ©.  Les autres valeurs possibles sont :
 .B "slip"
 (SLIP normal), 
 .B "adaptive"
 (CSLIP/SLIP adaptatifs),
 .B "ppp"
-(Protocole Point-à-Point)
+(Protocole Point-Ã -Point)
 et
 .B "kiss"
-(un protocole utilisé pour communiquer avec des controleurs AX.25 paquets radios).
-L'argument spécifique
+(un protocole utilisÃ© pour communiquer avec des controleurs AX.25 paquets radios).
+L'argument spÃ©cifique
 .B "tty"
-peut être utilisé pour refaire passer le périphérique en
-fonctionnement série normal. L'utilisation du mode 'ppp' n'est en
-principe pas utile puisque ppp nécessite le démon additionnel
+peut Ãªtre utilisÃ© pour refaire passer le pÃ©riphÃ©rique en
+fonctionnement sÃ©rie normal. L'utilisation du mode 'ppp' n'est en
+principe pas utile puisque ppp nÃ©cessite le dÃ©mon additionnel
 .B pppd
-pour être actif sur la ligne. Pour les connexions `kiss', le programme 
+pour Ãªtre actif sur la ligne. Pour les connexions `kiss', le programme 
 .B axattach
-doit être utilisé.
+doit Ãªtre utilisÃ©.
 .TP
 .B "[-s vitesse]"
-Définit la vitesse de la ligne, différente de la valeur par défaut.
+DÃ©finit la vitesse de la ligne, diffÃ©rente de la valeur par dÃ©faut.
 .PP
-Si aucun argument n'est donné, la ligne courante du terminal
-(habituellement liée au login) est utilisée. Autrement, une tentative
-est effectuée pour obtenir le port du terminal indiqué, puis il est
-vérouillé et ouvert.
+Si aucun argument n'est donnÃ©, la ligne courante du terminal
+(habituellement liÃ©e au login) est utilisÃ©e. Autrement, une tentative
+est effectuÃ©e pour obtenir le port du terminal indiquÃ©, puis il est
+vÃ©rouillÃ© et ouvert.
 .SH FICHIERS
 .I /dev/cua* /var/lock/LCK.*
 .SH BUGS
diff --git a/man/pt_BR/arp.8 b/man/pt_BR/arp.8
index 41c8fd6..6c1e7f7 100644
--- a/man/pt_BR/arp.8
+++ b/man/pt_BR/arp.8
@@ -7,12 +7,12 @@ arp \- manipula o cache ARP do sistema
 .RB [ "\-H tipo" ] 
 .RB [ "-i if" ] 
 .B -a 
-.RB [ máquina ]
+.RB [ mÃ¡quina ]
 .PP
 .B arp 
 .RB [ \-v ]
 .RB [ "\-i if" ] 
-.B "\-d máquina"
+.B "\-d mÃ¡quina"
 .RB [ pub ]
 .RB [ nopub ]
 .PP
@@ -20,7 +20,7 @@ arp \- manipula o cache ARP do sistema
 .RB [ \-v ] 
 .RB [ "\-H tipo" ] 
 .RB [ "\-i if" ] 
-.B -s máquina endereço_hardware
+.B -s mÃ¡quina endereÃ§o_hardware
 .RB [ temp ] 
 .RB [ nopub ]
 .PP
@@ -28,7 +28,7 @@ arp \- manipula o cache ARP do sistema
 .RB [ \-v ] 
 .RB [ "\-H tipo" ] 
 .RB [ "\-i if" ] 
-.B -s máquina endereço_hardware
+.B -s mÃ¡quina endereÃ§o_hardware
 .RB [ "netmask nm" ] 
 .B pub
 .PP
@@ -36,7 +36,7 @@ arp \- manipula o cache ARP do sistema
 .RB [ \-v ] 
 .RB [ "\-H tipo" ] 
 .RB [ "\-i if" ] 
-.B -Ds máquina ifa
+.B -Ds mÃ¡quina ifa
 .RB [ "netmask nm" ] 
 .B pub
 .PP
@@ -46,28 +46,28 @@ arp \- manipula o cache ARP do sistema
 .RB [ "-i if" ]
 .B -f arquivo
 
-.SH DESCRIÇÃO
+.SH DESCRIÃ‡ÃƒO
 .B arp
-manipula o cache ARP do kernel de várias maneiras. As principais opções
-são remoção de uma entrada de mapeamento de endereço e configuração manual
-de um endereço. Para propósitos de depuração, o programa
+manipula o cache ARP do kernel de vÃ¡rias maneiras. As principais opÃ§Ãµes
+sÃ£o remoÃ§Ã£o de uma entrada de mapeamento de endereÃ§o e configuraÃ§Ã£o manual
+de um endereÃ§o. Para propÃ³sitos de depuraÃ§Ã£o, o programa
 .B arp
-também permite um dump completo do cache ARP.
-.SH OPÇÕES
+tambÃ©m permite um dump completo do cache ARP.
+.SH OPÃ‡Ã•ES
 .TP
 .B "\-v, \-\-verbose"
-Mostra ao usuário o que está acontecendo, de modo detalhado.
+Mostra ao usuÃ¡rio o que estÃ¡ acontecendo, de modo detalhado.
 .TP
 .B "\-n, \-\-numeric"
-mostra endereços numéricos, ao invés de tentar determinar os nomes simbólicos da
-máquina, porta e usuário.
+mostra endereÃ§os numÃ©ricos, ao invÃ©s de tentar determinar os nomes simbÃ³licos da
+mÃ¡quina, porta e usuÃ¡rio.
 .TP
 .B "\-H type, \-\-hw-type type"
-Quando configurando ou lendo o cache ARP, este parâmetro opcional informa ao
+Quando configurando ou lendo o cache ARP, este parÃ¢metro opcional informa ao
 .B arp
-que classe de entradas devem ser verificadas. O valor padrão deste parâmetro é
+que classe de entradas devem ser verificadas. O valor padrÃ£o deste parÃ¢metro Ã©
 .B ether
-(i.e. código de hardware 0x01 para Ethernet IEEE 802.3 10Mbps).
+(i.e. cÃ³digo de hardware 0x01 para Ethernet IEEE 802.3 10Mbps).
 Outros valores podem incluir tecnologias de rede como
 .RB "ARCnet (" arcnet ")"
 ,
@@ -77,86 +77,86 @@ Outros valores podem incluir tecnologias de rede como
 e
 .RB "NET/ROM (" netrom ")."
 .TP
-.B "\-a [máquina], \-\-display [máquina]"
-Mostra as entradas das máquinas especificadas. Se o parâmetro
-.B máquina
-não for usado,
+.B "\-a [mÃ¡quina], \-\-display [mÃ¡quina]"
+Mostra as entradas das mÃ¡quinas especificadas. Se o parÃ¢metro
+.B mÃ¡quina
+nÃ£o for usado,
 .B todas
-as entradas serão mostradas.
+as entradas serÃ£o mostradas.
 .TP
-.B "\-d máquina, \-\-delete máquina"
-Remove quaisquer entradas para a máquina especificada. Isto pode ser
-usado se a máquina indicada for desligada, por exemplo. Nos kernels
+.B "\-d mÃ¡quina, \-\-delete mÃ¡quina"
+Remove quaisquer entradas para a mÃ¡quina especificada. Isto pode ser
+usado se a mÃ¡quina indicada for desligada, por exemplo. Nos kernels
 mais recentes o
 .BR arp (1)
-suporta a especificação de
+suporta a especificaÃ§Ã£o de
 .B pub 
 ou
 .B nopub 
-para decidir se uma entrada pública ou privada deve ser removida. Se você
-não informar uma destas flags as duas entradas serão removidas.
+para decidir se uma entrada pÃºblica ou privada deve ser removida. Se vocÃª
+nÃ£o informar uma destas flags as duas entradas serÃ£o removidas.
 .TP
 .B "\-D, \-\-use-device"
-Usa o endereço de hardware da interface 
+Usa o endereÃ§o de hardware da interface 
 .BR ifa
 .TP
 .B "\-i If, \-\-device If"
 Seleciona uma interface. Quando mostrando o cache ARP somente entradas iguais
-à interface serão mostradas. Configura uma entrada ARP permanente ou
-temporária que será usada no dispositivo especificado. Se nenhum dispositivo for 
+Ã  interface serÃ£o mostradas. Configura uma entrada ARP permanente ou
+temporÃ¡ria que serÃ¡ usada no dispositivo especificado. Se nenhum dispositivo for 
 informado, o kernel descobre o dispositivo a partir da tabela de roteamento. 
 Para entradas
 .B pub
-a interface especificada é a interface na qual as requisições ARP serão 
+a interface especificada Ã© a interface na qual as requisiÃ§Ãµes ARP serÃ£o 
 respondidas.
 .br
 .B NOTA:
-Deve ser diferente da interface para a qual os pacotes IP serão roteados.
+Deve ser diferente da interface para a qual os pacotes IP serÃ£o roteados.
 .TP
-.B "\-s máquina endereço_hardware, \-\-set máquina"
-Cria manualmente uma entrada de mapeamento de endereço ARP para a máquina
-.B máquina
-com endereço de hardware configurado para 
-.B endereço_hardware.  
-O formato do endereço de hardware depende da classe de hardware, mas
-para a maioria das classes pode-se assumir que a apresentação usual pode
-ser usada. Para a classe Ethernet, são 6 bytes em hexadecimal, separados
-por dois pontos (:). Quando adicionando entradas proxy arp (isto é, aquelas
+.B "\-s mÃ¡quina endereÃ§o_hardware, \-\-set mÃ¡quina"
+Cria manualmente uma entrada de mapeamento de endereÃ§o ARP para a mÃ¡quina
+.B mÃ¡quina
+com endereÃ§o de hardware configurado para 
+.B endereÃ§o_hardware.  
+O formato do endereÃ§o de hardware depende da classe de hardware, mas
+para a maioria das classes pode-se assumir que a apresentaÃ§Ã£o usual pode
+ser usada. Para a classe Ethernet, sÃ£o 6 bytes em hexadecimal, separados
+por dois pontos (:). Quando adicionando entradas proxy arp (isto Ã©, aquelas
 com a flag
-.BR púb lico
+.BR pÃºb lico
 setadas) uma
 .B netmask
 pode ser especificada para o proxy arp de uma subrede inteira. 
-Proxy arp para rotear redes inteiras não é um bom protocolo, mas algumas
-vezes é útil, então é suportado. Se a flag
+Proxy arp para rotear redes inteiras nÃ£o Ã© um bom protocolo, mas algumas
+vezes Ã© Ãºtil, entÃ£o Ã© suportado. Se a flag
 .B temp
-não for fornecida, as entradas serão permanentemente armazenadas no cache ARP.
+nÃ£o for fornecida, as entradas serÃ£o permanentemente armazenadas no cache ARP.
 .TP
 .B "\-f arquivo, \-\-file arquivo"
-Similar à opção
+Similar Ã  opÃ§Ã£o
 .B \-s
-só que desta vez as informações de endereços são obtidas a partir do arquivo
+sÃ³ que desta vez as informaÃ§Ãµes de endereÃ§os sÃ£o obtidas a partir do arquivo
 .B arquivo.  
-Isto pode ser usado se entradas ARP para muitas máquinas tiverem que ser
-configuradas. O nome do arquivo de dados é freqüentemente
+Isto pode ser usado se entradas ARP para muitas mÃ¡quinas tiverem que ser
+configuradas. O nome do arquivo de dados Ã© freqÃ¼entemente
 .IR /etc/ethers , 
-mas isto não é oficial.
+mas isto nÃ£o Ã© oficial.
 .sp 1
-O formato deste arquivo é simples; ele somente contém linhas de texto ASCII com
-um nome de máquina e um endereço de hardware separados por um espaço em branco.
+O formato deste arquivo Ã© simples; ele somente contÃ©m linhas de texto ASCII com
+um nome de mÃ¡quina e um endereÃ§o de hardware separados por um espaÃ§o em branco.
 Adicionalmente as flags 
 .BR "pub" , " nopub" , " temp" " and" " netmask"
 podem ser usadas.
 .LP
 Em todos os lugares onde uma
-.B máquina
-é esperada, você também pode informar um
-.B "endereço IP"
-em notação decimal separada por pontos.
+.B mÃ¡quina
+Ã© esperada, vocÃª tambÃ©m pode informar um
+.B "endereÃ§o IP"
+em notaÃ§Ã£o decimal separada por pontos.
 .LP 
-Cada entrada completa no cache ARP será marcada com uma flag
+Cada entrada completa no cache ARP serÃ¡ marcada com uma flag
 .BR C . 
-Entradas permanentes são marcadas com um
+Entradas permanentes sÃ£o marcadas com um
 .B M
 e entradas publicadas tem uma flag 
 .BR P .
@@ -171,7 +171,7 @@ e entradas publicadas tem uma flag
 .SH AUTOR
 Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> com muitas melhorias
 feitas pelo mantenedor do net-tools, Bernd Eckenfels <net-tools@lina.inka.de>.
-Tradução para a língua portuguesa feita por
+TraduÃ§Ã£o para a lÃ­ngua portuguesa feita por
 Arnaldo Carvalho de Melo <acme@conectiva.com.br> em 11/abril/1998.
 Revisado por 
 Jorge Luiz Godoy Filho <jorge@bestway.com.br> em 15/abril/1998.
diff --git a/man/pt_BR/hostname.1 b/man/pt_BR/hostname.1
index fe00879..5880fc8 100644
--- a/man/pt_BR/hostname.1
+++ b/man/pt_BR/hostname.1
@@ -1,15 +1,15 @@
 .TH HOSTNAME 1 "28 de janeiro de 1996" "net-tools" "Manual do Programador Linux"
 
 .SH NOME
-hostname \- mostra ou configura o nome da máquina 
+hostname \- mostra ou configura o nome da mÃ¡quina 
 .BR
-domainname \- mostra ou configura o nome do domínio NIS/YP
+domainname \- mostra ou configura o nome do domÃ­nio NIS/YP
 .BR
-dnsdomainname \- mostra o nome do domínio DNS
+dnsdomainname \- mostra o nome do domÃ­nio DNS
 .BR
-nisdomainname \- mostra ou configura o nome do domínio NIS/YP
+nisdomainname \- mostra ou configura o nome do domÃ­nio NIS/YP
 .BR
-ypdomainname \- mostra ou configura o nome do domínio NIS/YP
+ypdomainname \- mostra ou configura o nome do domÃ­nio NIS/YP
 
 .SH SINOPSE
 .B hostname
@@ -34,7 +34,7 @@ ypdomainname \- mostra ou configura o nome do dom
 .RB [ \-v ]
 .RB [ \-F\ arquivo ]
 .RB [ \-\-file\ arquivo ]
-.RB [ máquina ]
+.RB [ mÃ¡quina ]
 
 .PP
 .B domainname
@@ -61,11 +61,11 @@ ypdomainname \- mostra ou configura o nome do dom
 .B ypdomainname
 .RB [ \-v ]
 
-.SH DESCRIÇÃO
+.SH DESCRIÃ‡ÃƒO
 .B hostname
-é o programa usado para configurar ou mostrar o nome corrente da máquina
-ou o domínio do sistema. Este nome é usado por muitos dos programas de
-rede para identificar a máquina. O nome do domínio também é usado pelo
+Ã© o programa usado para configurar ou mostrar o nome corrente da mÃ¡quina
+ou o domÃ­nio do sistema. Este nome Ã© usado por muitos dos programas de
+rede para identificar a mÃ¡quina. O nome do domÃ­nio tambÃ©m Ã© usado pelo
 NIS/YP.
 
 .SS "OBTER NOME"
@@ -73,119 +73,119 @@ Quando chamado sem argumentos o programa mostra os nomes correntes:
 
 .LP
 .B hostname
-mostrará o nome do sistema conforme retornado pela função
+mostrarÃ¡ o nome do sistema conforme retornado pela funÃ§Ã£o
 .BR gethostname (2).
 
 
 .LP
 .B "domainname, nisdomainname, ypdomainname"
-mostrará o nome do sistema conforme retornado pela função
+mostrarÃ¡ o nome do sistema conforme retornado pela funÃ§Ã£o
 .BR getdomainname (2).
-Isto também é conhecido como o nome de domínio YP/NIS do sistema.
+Isto tambÃ©m Ã© conhecido como o nome de domÃ­nio YP/NIS do sistema.
 
 .LP
 .B dnsdomainname
-mostrara a parte do domínio do FQDN (Nome de domínio completamente qualificado).
-O FQDN do sistema é retornado pelo comando
+mostrara a parte do domÃ­nio do FQDN (Nome de domÃ­nio completamente qualificado).
+O FQDN do sistema Ã© retornado pelo comando
 .BR "hostname \-\-fqdn" .
 
 .SS "CONFIGURAR NOME"
-Quando chamado com um argumento ou com a opção
+Quando chamado com um argumento ou com a opÃ§Ã£o
 .B \-\-file
-, o comando configura o nome da máquina ou do domínio NIS/YP.
+, o comando configura o nome da mÃ¡quina ou do domÃ­nio NIS/YP.
 
 .LP
-Note que somente o super usuário pode mudar os nomes.
+Note que somente o super usuÃ¡rio pode mudar os nomes.
 
 .LP
-Nao é possível configurar o FQDN ou o nome do domínio DNS com o comando
+Nao Ã© possÃ­vel configurar o FQDN ou o nome do domÃ­nio DNS com o comando
 .B dnsdomainname 
 (veja 
 .B "O FQDN"
 abaixo).
 
 .LP
-O nome da máquina é normalmente configurado durante a inicialização do sistema,
+O nome da mÃ¡quina Ã© normalmente configurado durante a inicializaÃ§Ã£o do sistema,
 em
 .I /etc/rc.d/rc.inet1
 ou
 .I /etc/init.d/boot
-(normalmente lendo o conteúdo de um arquivo que contém o nome da máquina, ex.:
+(normalmente lendo o conteÃºdo de um arquivo que contÃ©m o nome da mÃ¡quina, ex.:
 .IR /etc/hostname ).
 
 .SS O FQDN
-Você não pode mudar o FQDN (conforme retornado por
+VocÃª nÃ£o pode mudar o FQDN (conforme retornado por
 .BR "hostname \-\-fqdn" ) 
-ou o nome do domínio DNS (conforme retornado por
+ou o nome do domÃ­nio DNS (conforme retornado por
 .BR "dnsdomainname" ) 
-com este comando. O FQDN do sistema é o nome que o
+com este comando. O FQDN do sistema Ã© o nome que o
 .BR resolver (3)
-retorna para o nome da máquina.
+retorna para o nome da mÃ¡quina.
 
 .LP
-Tecnicamente: O FQDN é o nome retornado pelo
+Tecnicamente: O FQDN Ã© o nome retornado pelo
 .BR gethostbyname (2)
 para o nome retornado pelo
 .BR gethostname (2).
-O nome do domínio DNS é a parte após o primeiro ponto.
+O nome do domÃ­nio DNS Ã© a parte apÃ³s o primeiro ponto.
 .LP
-Portanto isto depende da configuração (normalmente em
+Portanto isto depende da configuraÃ§Ã£o (normalmente em
 .IR /etc/host.conf )
-para que você possa mudá-lo. Normalmente (se o arquivo hosts for lido antes 
-do DNS ou NIS) você pode mudá-lo em
+para que vocÃª possa mudÃ¡-lo. Normalmente (se o arquivo hosts for lido antes 
+do DNS ou NIS) vocÃª pode mudÃ¡-lo em
 .IR /etc/hosts .
 
 
-.SH OPÇÕES
+.SH OPÃ‡Ã•ES
 .TP
 .I "\-a, \-\-alias"
-Mostra o alias da máquina (se usado).
+Mostra o alias da mÃ¡quina (se usado).
 .TP
 .I "\-d, \-\-domain"
-Mostra o nome do domínio DNS. Não use o comando
+Mostra o nome do domÃ­nio DNS. NÃ£o use o comando
 .B domainname
-para obter o nome do domínio DNS porque ele mostrará o nome do domínio NIS e
-não o nome do domínio DNS. Use 
+para obter o nome do domÃ­nio DNS porque ele mostrarÃ¡ o nome do domÃ­nio NIS e
+nÃ£o o nome do domÃ­nio DNS. Use 
 .BR dnsdomainname .
 .TP
 .I "\-F, \-\-file arquivo"
-Leia o nome da máquina a partir do arquivo especificado. Comentários (linhas
-começando com um `#') são ignorados.
+Leia o nome da mÃ¡quina a partir do arquivo especificado. ComentÃ¡rios (linhas
+comeÃ§ando com um `#') sÃ£o ignorados.
 .TP
 .I "\-f, \-\-fqdn, \-\-long"
-Mostra o FQDN (Nome de Domínio Completamente Qualificado). Um FQDN consiste de
-um nome curto de máquina e do nome do domínio DNS. A menos que você esteja
-usando bind ou NIS para resolução de nomes você pode mudar o FQDN e o nome
-do domínio DNS (que é parte do FQDN) no arquivo \fI/etc/hosts\fR.
+Mostra o FQDN (Nome de DomÃ­nio Completamente Qualificado). Um FQDN consiste de
+um nome curto de mÃ¡quina e do nome do domÃ­nio DNS. A menos que vocÃª esteja
+usando bind ou NIS para resoluÃ§Ã£o de nomes vocÃª pode mudar o FQDN e o nome
+do domÃ­nio DNS (que Ã© parte do FQDN) no arquivo \fI/etc/hosts\fR.
 .TP
 .I "\-h, \-\-help"
 Mostra uma mensagem sobre como utilizar o comando e termina.
 .TP
 .I "\-i, \-\-ip-address"
-Mostra o(s) endereço(s) IP da máquina.
+Mostra o(s) endereÃ§o(s) IP da mÃ¡quina.
 .TP
 .I "\-s, \-\-short"
-Mostra o nome curto da máquina. É o nome da máquina até o primeiro ponto.
+Mostra o nome curto da mÃ¡quina. Ã‰ o nome da mÃ¡quina atÃ© o primeiro ponto.
 .TP
 .I "\-V, \-\-version"
-Mostra informação de versão na saída padrão e termina com sucesso.
+Mostra informaÃ§Ã£o de versÃ£o na saÃ­da padrÃ£o e termina com sucesso.
 .TP
 .I "\-v, \-\-verbose"
-Mostra uma saída detalhada do que está acontecendo.
+Mostra uma saÃ­da detalhada do que estÃ¡ acontecendo.
 .TP
 .I "\-y, \-\-yp, \-\-nis"
-Mostra o nome do domínio NIS. Se um parâmetro for especificado (ou
+Mostra o nome do domÃ­nio NIS. Se um parÃ¢metro for especificado (ou
 .B \-\-file arquivo
-) então o root também pode configurar um novo domínio NIS.
+) entÃ£o o root tambÃ©m pode configurar um novo domÃ­nio NIS.
 .SH ARQUIVOS
 .B /etc/hosts
 .SH AUTOR
 Peter Tobias, <tobias@et-inf.fho-emden.de>
 .BR
-Bernd Eckenfels, <net-tools@lina.inka.de> (NIS e página man).
+Bernd Eckenfels, <net-tools@lina.inka.de> (NIS e pÃ¡gina man).
 .BR
-Arnaldo Carvalho de Melo, <acme@conectiva.com.br> Tradução para a língua
+Arnaldo Carvalho de Melo, <acme@conectiva.com.br> TraduÃ§Ã£o para a lÃ­ngua
 portuguesa.
 .BR
-Jorge Luiz Godoy Filho, <jorge@bestway.com.br> Revisão.
+Jorge Luiz Godoy Filho, <jorge@bestway.com.br> RevisÃ£o.
 .BR
diff --git a/man/pt_BR/ifconfig.8 b/man/pt_BR/ifconfig.8
index 0a97683..1432dc5 100644
--- a/man/pt_BR/ifconfig.8
+++ b/man/pt_BR/ifconfig.8
@@ -4,13 +4,13 @@ ifconfig \- configura uma interface de rede
 .SH SINOPSE
 .B "ifconfig [interface]"
 .br
-.B "ifconfig interface [aftype] opções | endereços ..."
-.SH DESCRIÇÃO
+.B "ifconfig interface [aftype] opÃ§Ãµes | endereÃ§os ..."
+.SH DESCRIÃ‡ÃƒO
 .B ifconfig
-é usado para configurar (e posteriormente manter) as interfaces de
-rede. É usado durante o boot para configurar a maioria delas para
-um estado usável. Depois disto, é normalmente somente necessário
-durante depurações ou quando for necessária uma configuração fina
+Ã© usado para configurar (e posteriormente manter) as interfaces de
+rede. Ã‰ usado durante o boot para configurar a maioria delas para
+um estado usÃ¡vel. Depois disto, Ã© normalmente somente necessÃ¡rio
+durante depuraÃ§Ãµes ou quando for necessÃ¡ria uma configuraÃ§Ã£o fina
 do sistema.
 .LP
 Se nenhum argumento for informado,
@@ -19,12 +19,12 @@ somente mostra o estado das interfaces correntemente definidas. Se
 um argumento
 .B interface
 for informado, ele mostra somente o estado da interface informada. De
-outra forma ele assume que os parâmetros devem ser configurados.
-.SH Famílias de Endereçamento
-Se o primeiro argumento após o nome da interface for reconhecido
-como um nome de uma família de endereçamento suportada, esta família
-de endereçamento é usada na decodificação e apresentação de todos
-os endereços de protocolos. Atualmente as famílias de endereçamento
+outra forma ele assume que os parÃ¢metros devem ser configurados.
+.SH FamÃ­lias de EndereÃ§amento
+Se o primeiro argumento apÃ³s o nome da interface for reconhecido
+como um nome de uma famÃ­lia de endereÃ§amento suportada, esta famÃ­lia
+de endereÃ§amento Ã© usada na decodificaÃ§Ã£o e apresentaÃ§Ã£o de todos
+os endereÃ§os de protocolos. Atualmente as famÃ­lias de endereÃ§amento
 suportadas incluem
 .B inet
 (TCP/IP, default) 
@@ -36,95 +36,91 @@ suportadas incluem
 (Novell IPX) and
 .B netrom
 (AMPR Packet radio).
-.SH OPÇÕES
+.SH OPÃ‡Ã•ES
 .TP
 .B interface
-O nome da interface de rede. Usualmente é um nome como
+O nome da interface de rede. Usualmente Ã© um nome como
 .B eth0
 ,
 .B sl3
 ou algo parecido: um nome de driver de dispositivo seguido por um
-número.
+nÃºmero.
 .TP
 .B up 
-Esta flag causa a ativação da interface. É especificada
-implicitamente se a interface receber um novo endereço (veja
+Esta flag causa a ativaÃ§Ã£o da interface. Ã‰ especificada
+implicitamente se a interface receber um novo endereÃ§o (veja
 abaixo).
 .TP
 .B down 
-Esta flag desativa o driver desta interface, é útil quando alguma
-coisa começar a ter problemas.
+Esta flag desativa o driver desta interface, Ã© Ãºtil quando alguma
+coisa comeÃ§ar a ter problemas.
 .TP
 .B "[\-]arp" 
 Habilita ou desabilita o uso do protocolo ARP para esta interface. Se
-o sinal de menos (\-) estiver presente a opção é desligada.
+o sinal de menos (\-) estiver presente a opÃ§Ã£o Ã© desligada.
 .TP
 .B "[\-]trailers" 
-Habilita ou desabilita o uso de trailer em frames Ethernet. Não é
-utilizada na implementação atual do pacote net-tools.
+Habilita ou desabilita o uso de trailer em frames Ethernet. NÃ£o Ã©
+utilizada na implementaÃ§Ã£o atual do pacote net-tools.
 .TP
 .B "[\-]allmulti" 
 Habilita ou desabilita o modo
 .B promiscuous
-da interface. Isto significa que todos os frames passarão pela camada
-de rede do kernel, permitindo monitoração da rede.
-.TP
-.B "metric N" 
-Este parâmetro configura a métrica da interface. Não é usado atualmente,
-mas será implementado no futuro.
+da interface. Isto significa que todos os frames passarÃ£o pela camada
+de rede do kernel, permitindo monitoraÃ§Ã£o da rede.
 .TP
 .B "mtu N" 
-Este parâmetro configura a Unidade Máxima de Transferência (MTU) de uma
-interface. Para Ethernet é um número entre 1000-2000 (o padrão é
-1500). Para SLIP, use algo entre 200 e 4096. Note que a implementação
-atual não manipula fragmentação IP ainda, então é melhor configurar
+Este parÃ¢metro configura a Unidade MÃ¡xima de TransferÃªncia (MTU) de uma
+interface. Para Ethernet Ã© um nÃºmero entre 1000-2000 (o padrÃ£o Ã©
+1500). Para SLIP, use algo entre 200 e 4096. Note que a implementaÃ§Ã£o
+atual nÃ£o manipula fragmentaÃ§Ã£o IP ainda, entÃ£o Ã© melhor configurar
 a MTU com um tamanho adequado!
 .TP
 .B "dstaddr addr"
-Configura o endereço IP do "outro lado" no caso de um link Ponto-A-Ponto,
+Configura o endereÃ§o IP do "outro lado" no caso de um link Ponto-A-Ponto,
 como PPP. Esta palavra-chave tornou-se obsoleta e deve ser usada a nova 
 palavra-chave
 .BR pointopoint .
 .TP
 .B "netmask addr"
-Configura a máscara de rede IP para esta interface. Este valor assume o
-padrão usual das classes A, B ou C (deduzindo-o a partir do endereço
+Configura a mÃ¡scara de rede IP para esta interface. Este valor assume o
+padrÃ£o usual das classes A, B ou C (deduzindo-o a partir do endereÃ§o
 IP da interface), mas pode ser configurado para qualquer valor para o
 uso de sub-redes.
 
 .TP
 .B "irq addr"
-Configura a linha de interrupção (IRQ) usada por este dispositivo. Muitos
-dispositivos não suportam configuração dinâmica de IRQ.
+Configura a linha de interrupÃ§Ã£o (IRQ) usada por este dispositivo. Muitos
+dispositivos nÃ£o suportam configuraÃ§Ã£o dinÃ¢mica de IRQ.
 .TP
-.B "[-]broadcast [endereço]"
-Se o argumento endereço for informado, configura o endereço de protocolo
+.B "[-]broadcast [endereÃ§o]"
+Se o argumento endereÃ§o for informado, configura o endereÃ§o de protocolo
 broadcast para esta interface. De outra forma ele somente configura a flag
 .B IFF_BROADCAST
 da interface.  Se a palavra-chave for precedida por um sinal de menos
 .B (-)
-, então a flag é removida.
+, entÃ£o a flag Ã© removida.
 .TP
-.B "[-]pointopoint [endereço]"
+.B "[-]pointopoint [endereÃ§o]"
 Esta palavra-chave habilita o modo
 .B ponto-a-ponto
-da interface, significando que ela é um link direto entre duas máquinas
-sem ninguém ouvindo (ou, pelo menos nós esperamos que este seja o caso
+da interface, significando que ela Ã© um link direto entre duas mÃ¡quinas
+sem ninguÃ©m ouvindo (ou, pelo menos nÃ³s esperamos que este seja o caso
 :-)
 .BR
-Se o argumento endereço for informado, configura o endereço de protocolo
+Se o argumento endereÃ§o for informado, configura o endereÃ§o de protocolo
 do outro lado do link, exatamente como a palavra-chave obsoleta
 .B dstaddr
 faz. De outra forma, ela somente configura a flag
 .B IFF_POINTOPOINT
 da interface. Se a palavra-chave for precedida por um sinal de menos
 .B (-)
-, então a flag é removida.
+, entÃ£o a flag Ã© removida.
 .TP
 .B "hw"
-Configura o endereço de hardware para esta interface, se o driver do
-dispositivo suportar esta operação. A palavra-chave deve ser seguida
-pelo nome da classe do hardware e o equivalente em ASCII do endereço
+Configura o endereÃ§o de hardware para esta interface, se o driver do
+dispositivo suportar esta operaÃ§Ã£o. A palavra-chave deve ser seguida
+pelo nome da classe do hardware e o equivalente em ASCII do endereÃ§o
 de hardware. As classes de hardware atualmente suportadas incluem
 .B ether
 (Ethernet),
@@ -136,45 +132,34 @@ e
 (AMPR NET/ROM).
 .TP
 .B multicast
-Inicializa a flag de multicast para a interface. Normalmente, isto não será
-necessário já que os drivers ajustam as flags corretas por si só.
+Inicializa a flag de multicast para a interface. Normalmente, isto nÃ£o serÃ¡
+necessÃ¡rio jÃ¡ que os drivers ajustam as flags corretas por si sÃ³.
 .TP
-.B endereço
-O nome ou endereço IP da máquina (um nome de máquina será traduzido para
-um  endereço IP) da interface. Este parâmetro é necessário, apesar
-da sintaxe atualmente não requisitá-lo.
+.B endereÃ§o
+O nome ou endereÃ§o IP da mÃ¡quina (um nome de mÃ¡quina serÃ¡ traduzido para
+um  endereÃ§o IP) da interface. Este parÃ¢metro Ã© necessÃ¡rio, apesar
+da sintaxe atualmente nÃ£o requisitÃ¡-lo.
 .SH NOTAS
-
-+Since kernel release 2.2 there are no explicit interface statistics for
-+alias interfaces anymore. The statistics printed for the original address
-+are shared with all alias addresses on the same device. If you want per-address
-+statistics you should add explicit accounting
-+rules for the address using the
-+.BR ipchains(8)
-+command.
-
-Deste o kernel 2.2 não existem mais estatísticas explícitas para os apelidos (aliases)
-de interfaces. As estatísticas mostradas para o endereço original são compartilhadas
-como todos os endereços associados ao mesmo dispositivo. Se desejar estatísticas
-por endereço você deve explicitamente adicionar regras de contabilização para os
-endereços usando o comando
-.BR ipchains(8)
+Deste o kernel 2.2 nÃ£o existem mais estatÃ­sticas explÃ­citas para os apelidos (aliases)
+de interfaces. As estatÃ­sticas mostradas para o endereÃ§o original sÃ£o compartilhadas
+como todos os endereÃ§os associados ao mesmo dispositivo. Se desejar estatÃ­sticas
+por endereÃ§o vocÃª deve explicitamente adicionar regras de contabilizaÃ§Ã£o para os
+endereÃ§os usando o comando
+.BR iptables(8)
 .
 
 .SH ARQUIVOS
-.I /proc/net/socket 
-.br
 .I /proc/net/dev
 .SH BUGS
-Os endereços appletalk DDP e IPX serão mostrados, mas não podem ser alterados
+Os endereÃ§os appletalk DDP e IPX serÃ£o mostrados, mas nÃ£o podem ser alterados
 com este comando.
-.SH VEJA TAMBÉM
-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
+.SH VEJA TAMBÃ‰M
+route(8), netstat(8), arp(8), rarp(8), iptables(8)
 .SH AUTORES
 Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
 Alan Cox, <Alan.Cox@linux.org>
-.SH TRADUÇÃO E REVISÃO PARA A LÍNGUA PORTUGUESA
-Arnaldo Carvalho de Melo <acme@conectiva.com.br> (tradução)
+.SH TRADUÃ‡ÃƒO E REVISÃƒO PARA A LÃNGUA PORTUGUESA
+Arnaldo Carvalho de Melo <acme@conectiva.com.br> (traduÃ§Ã£o)
 .BR
-Jorge Luiz Godoy Filho <jorge@bestway.com.br> (revisão)
+Jorge Luiz Godoy Filho <jorge@bestway.com.br> (revisÃ£o)
 
diff --git a/man/pt_BR/netstat.8 b/man/pt_BR/netstat.8
index b9b359a..d2d04ef 100644
--- a/man/pt_BR/netstat.8
+++ b/man/pt_BR/netstat.8
@@ -5,13 +5,13 @@
 .\"
 .\" Modificado por: Bernd.Eckenfels@inka.de
 .\" Modificado por: Andi Kleen ak@muc.de
-.\" Traduzido para português por Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+.\" Traduzido para portuguÃªs por Arnaldo Carvalho de Melo <acme@conectiva.com.br>
 .\" Revisado por Jorge Luiz Godoy Filho <jorge@bestway.com.br>
 .\"
-.TH NETSTAT 8 "19 de maio de 1997" "net-tools" "Manual do Programador Linux"
+.TH NETSTAT 8 "2007-12-02" "net-tools" "Manual do Programador Linux"
 
 .SH NOME
-netstat \- Mostra conexões de rede, tabelas de roteamento, estatísticas de interface e conexões
+netstat \- Mostra conexÃµes de rede, tabelas de roteamento, estatÃ­sticas de interface e conexÃµes
 mascaradas.
 .SH SINOPSE
 
@@ -19,6 +19,8 @@ mascaradas.
 .RB [ \-venaoc ]
 .RB [ \-\-tcp | \-t ]
 .RB [ \-\-udp | \-u ]
+.RB [ \-\-udplite | \-U ]
+.RB [ \-\-sctp | \-S ]
 .RB [ \-\-raw | \-w ]
 .RB [ \-\-unix | \-x ] 
 .RB [ \-\-inet | \-\-ip ]
@@ -63,90 +65,90 @@ mascaradas.
 .RB { \-h | \-\-help }
 
 .PP
-.SH DESCRIÇÃO
+.SH DESCRIÃ‡ÃƒO
 .B netstat
-mostra informações do subsistema de rede do Linux.
+mostra informaÃ§Ãµes do subsistema de rede do Linux.
 
-.SS "(sem opções)"
-Você pode ver o estado das conexões de rede através da listagem dos sockets
-abertos. Esta é a operação padrão: se você não especificar nenhuma
-família de endereços, os sockets ativos de todas as famílias de endereços
-configuradas serão mostrados. Com
+.SS "(sem opÃ§Ãµes)"
+VocÃª pode ver o estado das conexÃµes de rede atravÃ©s da listagem dos sockets
+abertos. Esta Ã© a operaÃ§Ã£o padrÃ£o: se vocÃª nÃ£o especificar nenhuma
+famÃ­lia de endereÃ§os, os sockets ativos de todas as famÃ­lias de endereÃ§os
+configuradas serÃ£o mostrados. Com
 .B -e
-você obterá informações adicionais (userid). Com a chave
+vocÃª obterÃ¡ informaÃ§Ãµes adicionais (userid). Com a chave
 .B -v
-você poderá fazer com que o netstat reclame sobre famílias de endereços
-conhecidas que não sejam suportadas pelo kernel. A opção
+vocÃª poderÃ¡ fazer com que o netstat reclame sobre famÃ­lias de endereÃ§os
+conhecidas que nÃ£o sejam suportadas pelo kernel. A opÃ§Ã£o
 .B -o
-mostra algumas informações adicionais sobre temporizadores de rede.
+mostra algumas informaÃ§Ãµes adicionais sobre temporizadores de rede.
 .B -a
-mostra todos os sockets, incluindo sockets de servidores. A família de
-endereços
+mostra todos os sockets, incluindo sockets de servidores. A famÃ­lia de
+endereÃ§os
 .B inet
-mostrará sockets raw, udp e tcp.
+mostrarÃ¡ sockets raw, udp e tcp.
 
 .SS "\-r, \-\-route"
-Com a opção
+Com a opÃ§Ã£o
 .BR \-r ", " \-\-route
-você obterá as tabelas de roteamento do kernel no mesmo formato usado por
+vocÃª obterÃ¡ as tabelas de roteamento do kernel no mesmo formato usado por
 .BR "route -e" .
 .B "netstat -er" 
-usará o formato de apresentação do comando
+usarÃ¡ o formato de apresentaÃ§Ã£o do comando
 .BR route .
 Por favor veja
 .BR route (8)
 para maiores detalhes.
 
-.SS "\-i, \-\-interface \fIiface\fI"
-Se você usar a opção
+.SS "\-i, \-\-interfaces \fIiface\fI"
+Se vocÃª usar a opÃ§Ã£o
 .BR -i ", " --interfaces
 , uma tabela de todas (ou da
 .IR iface
-especificada) as interfaces de rede será mostrada. A saída usa o formato
+especificada) as interfaces de rede serÃ¡ mostrada. A saÃ­da usa o formato
 .B "ifconfig -e"
-, e é descrita em
+, e Ã© descrita em
 .BR ifconfig (8).
 .B "netstat -ei" 
-mostrará uma tabela ou uma entrada de interface como
+mostrarÃ¡ uma tabela ou uma entrada de interface como
 .B ifconfig
 mostra. Com a chave
 .B -a
-, você pode incluir interfaces que não estejam configuradas (i.e. não tem
+, vocÃª pode incluir interfaces que nÃ£o estejam configuradas (i.e. nÃ£o tem
 a flag 
 .BR U = UP
 configurada).
 
 .SS "\-M, \-\-masquerade"
 
-Uma lista de todas as sessões mascaradas também pode ser vista. Com a chave
+Uma lista de todas as sessÃµes mascaradas tambÃ©m pode ser vista. Com a chave
 .B -e 
-você pode incluir mais algumas informações sobre numeração sequencial e deltas
-, causados por reescritas de dados em sessões FTP (comando PORT).
-O suporte a mascaramento é usado para esconder máquinas em endereços de
-rede não oficiais do resto do mundo, como descrito em
-.BR ipfw (4), ipfwadm "(8) e ipfw (8).
+vocÃª pode incluir mais algumas informaÃ§Ãµes sobre numeraÃ§Ã£o sequencial e deltas
+, causados por reescritas de dados em sessÃµes FTP (comando PORT).
+O suporte a mascaramento Ã© usado para esconder mÃ¡quinas em endereÃ§os de
+rede nÃ£o oficiais do resto do mundo, como descrito em
+.BR iptables (8).
 
 .SS "\-s, \-\-statistics"
 
-Mostra estatísticas sobre o subsistema de rede do kernel do Linux, que 
-são lidas a partir de
+Mostra estatÃ­sticas sobre o subsistema de rede do kernel do Linux, que 
+sÃ£o lidas a partir de
 .IR /proc/net/snmp .
 
 .PP
-.SH OPÇÕES
+.SH OPÃ‡Ã•ES
 .SS "\-v, \-\-verbose"
-Informa ao usuário o que está ocorrendo, sendo detalhado. Especialmente 
-mostra algumas informações úteis sobre famílias de endereços não 
+Informa ao usuÃ¡rio o que estÃ¡ ocorrendo, sendo detalhado. Especialmente 
+mostra algumas informaÃ§Ãµes Ãºteis sobre famÃ­lias de endereÃ§os nÃ£o 
 configuradas.
 
 .SS "\-n, \-\-numeric"
-Mostra endereços numéricos, sem tentar resolver os nomes da máquina, porta ou
-usuário.
+Mostra endereÃ§os numÃ©ricos, sem tentar resolver os nomes da mÃ¡quina, porta ou
+usuÃ¡rio.
 
-.SS "\-A, \-\-af \fIfamília\fI"
-Usa um método diferente para configurar as famílias de endereços.
-.I família 
-é uma lista de palavras-chave de famílias de endereços separadas por vírgulas
+.SS "\-A, \-\-af \fIfamÃ­lia\fI"
+Usa um mÃ©todo diferente para configurar as famÃ­lias de endereÃ§os.
+.I famÃ­lia 
+Ã© uma lista de palavras-chave de famÃ­lias de endereÃ§os separadas por vÃ­rgulas
 (',') como
 .BR inet , 
 .BR unix , 
@@ -155,7 +157,7 @@ Usa um m
 .B netrom 
 e
 .BR ddp .
-Tem o mesmo efeito de usar as opções longas
+Tem o mesmo efeito de usar as opÃ§Ãµes longas
 .BR \-\-inet ,
 .BR \-\-unix ,
 .BR \-\-ipx ,
@@ -165,99 +167,99 @@ e
 .BR \-\-ddp.
 
 .SS "\-c, \-\-continuous"
-Isto fará com que 
+Isto farÃ¡ com que 
 .B netstat
-mostre a tabela selecionada a cada segundo, continuamente na tela até que
-você o interrompa.
+mostre a tabela selecionada a cada segundo, continuamente na tela atÃ© que
+vocÃª o interrompa.
 
 .PP
-.SH SAÍDA
+.SH SAÃDA
 
 .PP
-.SS Conexões Internet Ativas \fR(TCP, UDP, RAW)\fR
+.SS ConexÃµes Internet Ativas \fR(TCP, UDP, RAW)\fR
 
 .SS "Proto" 
 O protocolo (tcp, udp, raw) usado pelo socket.
 
 .SS "Recv-Q"
-O contador de bytes não copiados pelo programa conectado a este socket.
+O contador de bytes nÃ£o copiados pelo programa conectado a este socket.
 
 .SS "Send-Q"
-O contador de bytes não confirmados pela máquina remota.
+O contador de bytes nÃ£o confirmados pela mÃ¡quina remota.
 
-.SS "Endereço Local" 
-O endereço local (nome da máquina local) e o numero da porta do socket. A menos
+.SS "EndereÃ§o Local" 
+O endereÃ§o local (nome da mÃ¡quina local) e o numero da porta do socket. A menos
 que a chave
 .B -n
-seja especificada o endereço do socket será resolvido para seu nome de máquina
-canônico e o número da porta será traduzido para o serviço correspondente.
+seja especificada o endereÃ§o do socket serÃ¡ resolvido para seu nome de mÃ¡quina
+canÃ´nico e o nÃºmero da porta serÃ¡ traduzido para o serviÃ§o correspondente.
 
-.SS "Endereço Remoto"
-O endereço remoto (nome da máquina remota) e o número da porta do socket. Como
-com o endereço local, a chave
+.SS "EndereÃ§o Remoto"
+O endereÃ§o remoto (nome da mÃ¡quina remota) e o nÃºmero da porta do socket. Como
+com o endereÃ§o local, a chave
 .B -n
-desliga a resolução do nome da máquina e do serviço.
+desliga a resoluÃ§Ã£o do nome da mÃ¡quina e do serviÃ§o.
 
 .SS "Estado"
-O estado do socket. Uma vez que não existem estados no modo RAW e normalmente
-nenhum estado é usado em UDP, esta linha pode ser deixada em branco. Normalmente
-ele pode assumir um de vários valores:
+O estado do socket. Uma vez que nÃ£o existem estados no modo RAW e normalmente
+nenhum estado Ã© usado em UDP, esta linha pode ser deixada em branco. Normalmente
+ele pode assumir um de vÃ¡rios valores:
 .TP
 .I
 ESTABELECIDO
-O socket tem uma conexão estabelecida.
+O socket tem uma conexÃ£o estabelecida.
 .TP
 .I
 SYN_SENT
-O socket está ativamente tentando estabelecer uma conexão.
+O socket estÃ¡ ativamente tentando estabelecer uma conexÃ£o.
 .TP
 .I
 SYN_RECV
-Uma requisição de conexão foi recebida da rede.
+Uma requisiÃ§Ã£o de conexÃ£o foi recebida da rede.
 .TP
 .I
 FIN_WAIT1
-O socket está fechado e a conexão está terminando.
+O socket estÃ¡ fechado e a conexÃ£o estÃ¡ terminando.
 .TP
 .I
 FIN_WAIT2
-A conexão está fechada e o socket está esperando por uma terminação pela
-máquina remota.
+A conexÃ£o estÃ¡ fechada e o socket estÃ¡ esperando por uma terminaÃ§Ã£o pela
+mÃ¡quina remota.
 .TP
 .I
 TIME_WAIT
-O socket está esperando após o fechamento para tratar os pacotes ainda na rede.
+O socket estÃ¡ esperando apÃ³s o fechamento para tratar os pacotes ainda na rede.
 .TP
 .I
 FECHADO
-O socket não está sendo usado.
+O socket nÃ£o estÃ¡ sendo usado.
 .TP
 .I
 CLOSE_WAIT
 O lado remoto terminou, esperando pelo fechamento do socket.
 .TP
 .I
-ÚLTIMO_ACK
-O lado remoto terminou, e o socket está fechado. Esperando por uma
-confirmação.
+ÃšLTIMO_ACK
+O lado remoto terminou, e o socket estÃ¡ fechado. Esperando por uma
+confirmaÃ§Ã£o.
 .TP
 .I
 OUVINDO
-O socket está ouvindo por conexões. Estes socket são somente mostrados se
+O socket estÃ¡ ouvindo por conexÃµes. Estes socket sÃ£o somente mostrados se
 a chave
 .BR -a , --listening
 for especificada.
 .TP
 .I
 FECHANDO
-Ambos os sockets estão terminados mas nós ainda não enviamos todos os nossos
+Ambos os sockets estÃ£o terminados mas nÃ³s ainda nÃ£o enviamos todos os nossos
 dados.
 .TP
 .I
 DESCONHECIDO
-O estado do socket é desconhecido.
+O estado do socket Ã© desconhecido.
 
-.SS "Usuário"
+.SS "UsuÃ¡rio"
 O nome ou UID do dono do socket.
 
 .SS "Temporizador"
@@ -272,198 +274,195 @@ O nome ou UID do dono do socket.
 O protocolo (normalmente unix) usado pelo socket.
 
 .SS "CntRef"
-O contador de referências (i.e. processos conectados via este socket).
+O contador de referÃªncias (i.e. processos conectados via este socket).
 
 .SS "Flags"
-As flags mostradas são SO_ACCEPTON (mostrada como 
+As flags mostradas sÃ£o SO_ACCEPTON (mostrada como 
 .BR ACC ),
 SO_WAITDATA 
 .RB ( W )
 ou SO_NOSPACE 
 .RB ( N ). 
 SO_ACCECPTON 
-é usada para sockets não-conectados se seus processos correspondentes
-estiverem esperando por uma solicitação de conexão. As demais flags não
-são de interesse comum.
+Ã© usada para sockets nÃ£o-conectados se seus processos correspondentes
+estiverem esperando por uma solicitaÃ§Ã£o de conexÃ£o. As demais flags nÃ£o
+sÃ£o de interesse comum.
 
 .SS "Tipos"
-Há diversos tipos de acesso a sockets:
+HÃ¡ diversos tipos de acesso a sockets:
 .TP
 .I
 SOCK_DGRAM
-O socket é usado no modo de Datagramas (sem conexão).
+O socket Ã© usado no modo de Datagramas (sem conexÃ£o).
 .TP
 .I
 SOCK_STREAM
-É um socket usado quando há conexões (stream socket).
+Ã‰ um socket usado quando hÃ¡ conexÃµes (stream socket).
 .TP
 .I
 SOCK_RAW
-É usado como o socket básico (raw socket).
+Ã‰ usado como o socket bÃ¡sico (raw socket).
 .TP
 .I
 SOCK_RDM
-Este é usado para confirmação de entrega de mensagens.
+Este Ã© usado para confirmaÃ§Ã£o de entrega de mensagens.
 .TP
 .I
 SOCK_SEQPACKET
-É um socket para um pacote sequencial.
+Ã‰ um socket para um pacote sequencial.
 .TP
 .I
 SOCK_PACKET
-Socket para acesso da interface BÁSICA.
+Socket para acesso da interface BÃSICA.
 .TP
 .I
 UNKNOWN
-Quem sabe o que nos trará o futuro? Preencha aqui :-)
+Quem sabe o que nos trarÃ¡ o futuro? Preencha aqui :-)
 
 .PP
 .SS "Estados"
-Este campo conterá uma das seguintes palavras-chave:
+Este campo conterÃ¡ uma das seguintes palavras-chave:
 .TP
 .I
 FREE
-Este socket não está alocado.
+Este socket nÃ£o estÃ¡ alocado.
 .TP
 .I
 LISTENING
-O socket está aguardando por uma solicitação de conexão. São mostrados
-apenas se as opções
+O socket estÃ¡ aguardando por uma solicitaÃ§Ã£o de conexÃ£o. SÃ£o mostrados
+apenas se as opÃ§Ãµes
 .BR -a , --listening
 forem selecionadas.
 .TP
 .I
 CONNECTING
-O socket está por estabelecer uma conexão.
+O socket estÃ¡ por estabelecer uma conexÃ£o.
 .TP
 .I
 CONNECTED
-O socket está conectado.
+O socket estÃ¡ conectado.
 .TP
 .I
 DISCONNECTING
-O socket está desconectado.
+O socket estÃ¡ desconectado.
 .TP
 .I
 (nada)
-O socket não está conectado a nenhum outro.
+O socket nÃ£o estÃ¡ conectado a nenhum outro.
 .TP
 .I
 UNKNOWN
-Isto não deve acontecer nunca.
+Isto nÃ£o deve acontecer nunca.
 
 .SS "Path"
-Mostra o caminho (path) do processo do qual está tratando esse socket.
+Mostra o caminho (path) do processo do qual estÃ¡ tratando esse socket.
 
 .PP
 .SS Sockets IPX ativos
 
-(Isso precisa ser feito por alguém que saiba fazê-lo.)
+(Isso precisa ser feito por alguÃ©m que saiba fazÃª-lo.)
 
 .PP
 .SS Sockets NET/ROM ativos
 
-(Isso precisa ser feito por alguém que saiba fazê-lo.)
+(Isso precisa ser feito por alguÃ©m que saiba fazÃª-lo.)
 
 .PP
 .SS Sockets AX.25 ativos
 
-(Isso precisa ser feito por alguém que saiba fazê-lo.)
+(Isso precisa ser feito por alguÃ©m que saiba fazÃª-lo.)
 
 .PP
 .SH NOTAS
-Desde o kernel 2.2 o netstat -i não mostra estatísticas para apelidos (aliases)
-de interfaces. Para obter contadores por apelido de interface você precisa
-configurar regras explícitas usando o comando
-+.BR ipchains(8)
+Desde o kernel 2.2 o netstat -i nÃ£o mostra estatÃ­sticas para apelidos (aliases)
+de interfaces. Para obter contadores por apelido de interface vocÃª precisa
+configurar regras explÃ­citas usando o comando
++.BR iptables(8)
 .
 .SH FILES
 .ta
 .I /etc/services
--- O arquivo de "tradução" (correspondência) entre socket e serviço.
+-- O arquivo de "traduÃ§Ã£o" (correspondÃªncia) entre socket e serviÃ§o.
 
 .I /proc/net/dev
--- Informações de dispositivos.
+-- InformaÃ§Ãµes de dispositivos.
 
 .I /proc/net/snmp
--- Estatísticas da rede.
+-- EstatÃ­sticas da rede.
 
 .I /proc/net/raw
--- Informação sobre o socket BÁSICO (RAW).
+-- InformaÃ§Ã£o sobre o socket BÃSICO (RAW).
 
 .I /proc/net/tcp
--- Informação sobre o socket TCP.
+-- InformaÃ§Ã£o sobre o socket TCP.
 
 .I /proc/net/udp
--- Informação sobre o socket UDP.
+-- InformaÃ§Ã£o sobre o socket UDP.
 
 .I /proc/net/unix
--- Informação sobre o socket de domínio Unix.
+-- InformaÃ§Ã£o sobre o socket de domÃ­nio Unix.
 
 .I /proc/net/ipx
--- Informação sobre o socket IPX.
+-- InformaÃ§Ã£o sobre o socket IPX.
 
 .I /proc/net/ax25
--- Informação sobre o socket AX25.
+-- InformaÃ§Ã£o sobre o socket AX25.
 
 .I /proc/net/appletalk
--- Informação sobre o socket DDP (Appletalk).
+-- InformaÃ§Ã£o sobre o socket DDP (Appletalk).
 
 .I /proc/net/nr
--- Informação sobre o socket NET/ROM.
+-- InformaÃ§Ã£o sobre o socket NET/ROM.
 
 .I /proc/net/route
--- Informação sobre os roteamentos IP realizados pelo kernel
+-- InformaÃ§Ã£o sobre os roteamentos IP realizados pelo kernel
 
 .I /proc/net/ax25_route
--- Informação sobre os roteamentos AX25 realizados pelo kernel
+-- InformaÃ§Ã£o sobre os roteamentos AX25 realizados pelo kernel
 
 .I /proc/net/ipx_route
--- Informação sobre os roteamentos IPX realizados pelo kernel
+-- InformaÃ§Ã£o sobre os roteamentos IPX realizados pelo kernel
 
 .I /proc/net/nr_nodes
--- Lista de nós NET/ROM do kernel
+-- Lista de nÃ³s NET/ROM do kernel
 
 .I /proc/net/nr_neigh
 -- "Vizinhos" NET/ROM do kernel
 
 .I /proc/net/ip_masquerade
--- Conexões mascaradas do kernel
+-- ConexÃµes mascaradas do kernel
 
 .fi
 
 .PP
-.SH VEJA TAMBÉM
+.SH VEJA TAMBÃ‰M
 .BR route (8), 
 .BR ifconfig (8), 
-.BR ipfw (4), 
-.BR ipfw (8), 
-.BR ipfwadm (8)
-.BR ipchains (8)
+.BR iptables (8)
 
 .PP
 .SH BUGS
-Ocasionalmente informações estranhas podem surgir se um socket mudar
-enquanto é visualizado. Isso é incomum.
+Ocasionalmente informaÃ§Ãµes estranhas podem surgir se um socket mudar
+enquanto Ã© visualizado. Isso Ã© incomum.
 .br
-As opções descritas para
+As opÃ§Ãµes descritas para
 .B netstat -i
-foram descritas como deverão funcionar após alguma limpeza da liberação
+foram descritas como deverÃ£o funcionar apÃ³s alguma limpeza da liberaÃ§Ã£o
 BETA do pacote net-tools.
 
 .PP
 .SH AUTORES
-A interface com o usuário foi escrita por Fred Baumgarten
-<dc6iq@insu1.etec.uni-karlsruhe.de> a página do manual basicamente
+A interface com o usuÃ¡rio foi escrita por Fred Baumgarten
+<dc6iq@insu1.etec.uni-karlsruhe.de> a pÃ¡gina do manual basicamente
 por Matt Welsh <mdw@tc.cornell.edu>. Foi atualizada por
 Alan Cox <Alan.Cox@linux.org> mas poderia ter sido feita com um pouco
 mais de trabalho.
 .BR
 .LP
-A página do manual e os comandos incluídos no pacote net-tools
+A pÃ¡gina do manual e os comandos incluÃ­dos no pacote net-tools
 foram totalmente reescritos desde Bernd Eckenfels
 <ecki@linux.de>.
 .BR
-.SH TRADUÇÃO E REVISÃO PARA PORTUGUÊS
-Traduzido para o português por Arnaldo Carvalho de Melo
+.SH TRADUÃ‡ÃƒO E REVISÃƒO PARA PORTUGUÃŠS
+Traduzido para o portuguÃªs por Arnaldo Carvalho de Melo
 <acme@conectiva.com.br> e Jorge Luiz Godoy Filho <jorge@bestway.com.br>.
diff --git a/man/pt_BR/rarp.8 b/man/pt_BR/rarp.8
index de31931..b19f1b7 100644
--- a/man/pt_BR/rarp.8
+++ b/man/pt_BR/rarp.8
@@ -2,30 +2,30 @@
 .SH NOME
 rarp \- manipula a tabela RARP do sistema
 .SH SINOPSE
-.B "rarp [-v] [-t tipo] -a [máquina]"
+.B "rarp [-v] [-t tipo] -a [mÃ¡quina]"
 .br
-.B "rarp [-v] -d máquina ..."
+.B "rarp [-v] -d mÃ¡quina ..."
 .br
-.B "rarp [-v] [-t tipo] -s máquina endereço_hardware"
-.SH DESCRIÇÃO
+.B "rarp [-v] [-t tipo] -s mÃ¡quina endereÃ§o_hardware"
+.SH DESCRIÃ‡ÃƒO
 .B Rarp
-manipula as tabelas RARP do kernel de varias formas. As opções principais
-são limpar uma entrada de mapeamento de endereços e manualmente configurar uma.
-Para propósitos de depuração, o programa
+manipula as tabelas RARP do kernel de varias formas. As opÃ§Ãµes principais
+sÃ£o limpar uma entrada de mapeamento de endereÃ§os e manualmente configurar uma.
+Para propÃ³sitos de depuraÃ§Ã£o, o programa
 .B rarp
-também permite um dump completo da tabela RARP.
-.SH OPÇÕES
+tambÃ©m permite um dump completo da tabela RARP.
+.SH OPÃ‡Ã•ES
 .TP
 .B \-v
-Informe o usuário o que esta acontecendo, sendo detalhado.
+Informe o usuÃ¡rio o que esta acontecendo, sendo detalhado.
 .TP
 .B "\-t tipo"
-quando configurando ou lendo a tabela RARP, este parâmetro opcional informa ao
+quando configurando ou lendo a tabela RARP, este parÃ¢metro opcional informa ao
 .B rarp
-que classe de entradas devem ser verificadas. O valor default para este parâmetro
-é
+que classe de entradas devem ser verificadas. O valor default para este parÃ¢metro
+Ã©
 .B ether
-(i.e. código de hardware
+(i.e. cÃ³digo de hardware
 .B 0x01
 para
 .B "IEEE 802.3 10Mbps Ethernet".
@@ -34,31 +34,31 @@ Outros valores podem incluir tecnologias de rede como
 e
 .B NET/ROM (netrom).
 .TP
-.B "\-a [máquina]"
-Mostra as entradas  dos máquinas especificadas.  Se o
-Mostra as entradas das máquinas especificadas. Se o parâmetro
-.B máquina
-não for usado 
+.B "\-a [mÃ¡quina]"
+Mostra as entradas  dos mÃ¡quinas especificadas.  Se o
+Mostra as entradas das mÃ¡quinas especificadas. Se o parÃ¢metro
+.B mÃ¡quina
+nÃ£o for usado 
 .B todas
-as entradas serão mostradas.
+as entradas serÃ£o mostradas.
 .TP
-.B "\-d máquina"
-Remove a(s) entrada(s) para a máquina especificada. Isto pode ser usado se a
-máquina indicada for desligada, por exemplo.
+.B "\-d mÃ¡quina"
+Remove a(s) entrada(s) para a mÃ¡quina especificada. Isto pode ser usado se a
+mÃ¡quina indicada for desligada, por exemplo.
 .TP
-.B "\-s máquina endereço_hardware"
-Cria um mapeamento de endereços RARP para a máquina
-.B máquina
-com endereço de hardware configurado para
-.B endereço_hardware
-.  O formato do endereço de hardware depende da classe do hardware, mas
-para a maioria das classes você pode assumir que a apresentação usual pode
-ser usada.  Para a classe Ethernet, são 6 bytes em hexadecimal, separados
+.B "\-s mÃ¡quina endereÃ§o_hardware"
+Cria um mapeamento de endereÃ§os RARP para a mÃ¡quina
+.B mÃ¡quina
+com endereÃ§o de hardware configurado para
+.B endereÃ§o_hardware.
+O formato do endereÃ§o de hardware depende da classe do hardware, mas
+para a maioria das classes vocÃª pode assumir que a apresentaÃ§Ã£o usual pode
+ser usada.  Para a classe Ethernet, sÃ£o 6 bytes em hexadecimal, separados
 por dois pontos (:).
-.SH ATENÇÃO
-Alguns arquivos (principalmente Suns velhas) assumem que a máquina respondendo
-ao query ARP também podem oferecer outros serviços de boot remoto. Portanto
-nunca adiciona gratuitamente entradas rarp a menos que deseje encontrar a fúria
+.SH ATENÃ‡ÃƒO
+Alguns arquivos (principalmente Suns velhas) assumem que a mÃ¡quina respondendo
+ao query ARP tambÃ©m podem oferecer outros serviÃ§os de boot remoto. Portanto
+nunca adiciona gratuitamente entradas rarp a menos que deseje encontrar a fÃºria
 do administrador da rede.
 .SH ARQUIVOS
 .I /proc/net/rarp,
@@ -66,5 +66,5 @@ do administrador da rede.
 Ross D. Martin, <martin@trcsun3.eas.asu.edu>
 .br
 Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
-.SH TRADUÇÃO
+.SH TRADUÃ‡ÃƒO
 Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 13/04/1998
diff --git a/man/pt_BR/route.8 b/man/pt_BR/route.8
index c440974..eb152e2 100644
--- a/man/pt_BR/route.8
+++ b/man/pt_BR/route.8
@@ -50,44 +50,44 @@ If]
 .RB [ \--help ]
 .SH DESCRICAO
 .B Route
-manipula a tabela de roteamento IP do kernel. Seu principal uso é
-configurar rotas estáticas para hosts ou redes especificadas através de
-uma interface, após a mesma ter sido configurada com o programa 
+manipula a tabela de roteamento IP do kernel. Seu principal uso Ã©
+configurar rotas estÃ¡ticas para hosts ou redes especificadas atravÃ©s de
+uma interface, apÃ³s a mesma ter sido configurada com o programa 
 .BR ifconfig (8)
 .
 
-.SH OPÇÕES
+.SH OPÃ‡Ã•ES
 .TP
 .B \-v
-flag para detalhamento (não usada).
+flag para detalhamento (nÃ£o usada).
 
 .TP
 .B \-n
-mostra endereços numéricos, sem tentar resolver o nomes simbólicos das
-máquinas. Útil se você esta tentando determinar por que a rota para o seu
+mostra endereÃ§os numÃ©ricos, sem tentar resolver o nomes simbÃ³licos das
+mÃ¡quinas. Ãštil se vocÃª esta tentando determinar por que a rota para o seu
 servidor de nomes sumiu.
 
 .TP
 .B \-e
 use o formato 
 .BR netstat (8)
-na apresentação da tabela de roteamento.
+na apresentaÃ§Ã£o da tabela de roteamento.
 .B \-ee 
-produzira uma linha bem grande com todos os parâmetros da tabela de roteamento.
+produzira uma linha bem grande com todos os parÃ¢metros da tabela de roteamento.
 
 .TP
 .B \-net
 o
 .B Alvo
-é o endereço de uma rede (encontrado no arquivo
+Ã© o endereÃ§o de uma rede (encontrado no arquivo
 .I /etc/networks
-pela função 
+pela funÃ§Ã£o 
 .BR getnetbyname (2) 
 ).
 
 .TP
 .B -host
-é o endereço de uma máquina (descoberto com a função 
+Ã© o endereÃ§o de uma mÃ¡quina (descoberto com a funÃ§Ã£o 
 .BR gethostbyname (2)
 ).
 
@@ -110,150 +110,150 @@ adiciona uma rota.
 
 .TP
 .B Alvo
-A máquina ou rede destino. Você pode fornecer endereços IP em formato
-decimal separado por pontos ou nomes de máquinas/redes.
+A mÃ¡quina ou rede destino. VocÃª pode fornecer endereÃ§os IP em formato
+decimal separado por pontos ou nomes de mÃ¡quinas/redes.
 
 .TP
 .B netmask Nm
 modificador para especificar a mascara de rede da rota a ser adicionada.
-Somente faz sentido para uma rota para uma rede e quanto o endereço
+Somente faz sentido para uma rota para uma rede e quanto o endereÃ§o
 .B Alvo
-é valido com relação a mascara especificada. Se nenhuma mascara de rede
+Ã© valido com relaÃ§Ã£o a mascara especificada. Se nenhuma mascara de rede
 for especificada, o comando
 .B route
-descobre-a, desta forma, para a maioria das configurações normais você não
+descobre-a, desta forma, para a maioria das configuraÃ§Ãµes normais vocÃª nÃ£o
 precisa especificar uma mascara de rede.
 
 .TP
 .B gw Gw
-Quaisquer pacotes IP para a rede/máquina destino serão roteadas através
+Quaisquer pacotes IP para a rede/mÃ¡quina destino serÃ£o roteadas atravÃ©s
 do gateway/roteador especificado.
 .B NOTA:
-O gateway especificado deve ser alcançável antes deste comando. Isto
-normalmente significa que você terá que configurar uma rota estática para
-o gateway antes de emitir este comando. Se você especificar o endereço
-de uma de suas interfaces locais, isto será usado para decidir sobre
-qual interface deve ser usada para rotear os pacotes. Isto esta disponível
+O gateway especificado deve ser alcanÃ§Ã¡vel antes deste comando. Isto
+normalmente significa que vocÃª terÃ¡ que configurar uma rota estÃ¡tica para
+o gateway antes de emitir este comando. Se vocÃª especificar o endereÃ§o
+de uma de suas interfaces locais, isto serÃ¡ usado para decidir sobre
+qual interface deve ser usada para rotear os pacotes. Isto esta disponÃ­vel
 para manter compatibilidade com os sistemas baseados em BSD.
 
 .TP
 .B metric M
-Configura o campo de métrica na tabela de roteamento, usado em daemons
-para roteamento dinâmico.
+Configura o campo de mÃ©trica na tabela de roteamento, usado em daemons
+para roteamento dinÃ¢mico.
 
 .TP 
 .B mss M
-Especifica o Tamanho Máximo do Segmento TCP em Bytes (MSS) para conexões
-TCP através desta rota. Isto é normalmente usado somente para otimização
-fina de configurações de roteamento. 
+Especifica o Tamanho MÃ¡ximo do Segmento TCP em Bytes (MSS) para conexÃµes
+TCP atravÃ©s desta rota. Isto Ã© normalmente usado somente para otimizaÃ§Ã£o
+fina de configuraÃ§Ãµes de roteamento. 
 
 .TP 
 .B window W 
-Especifica o tamanho da janela TCP para conexões TCP através desta rota.
+Especifica o tamanho da janela TCP para conexÃµes TCP atravÃ©s desta rota.
 Tipicamente somente usado para redes AX.25 e em drivers incapazes de
 de tratar frames back to back.
 
 .TP
 .B irtt I
-Especifica o tempo de ida e volta inicial (irtt) para conexões TCP através
-desta rota. Tipicamente usado somente em redes AX.25. O numero é especificado
-em milisegundos (1-12000). Se omitido o default da RFC 1122 de 300ms é usado.
+Especifica o tempo de ida e volta inicial (irtt) para conexÃµes TCP atravÃ©s
+desta rota. Tipicamente usado somente em redes AX.25. O numero Ã© especificado
+em milisegundos (1-12000). Se omitido o default da RFC 1122 de 300ms Ã© usado.
 
 .TP
 .B reject
-Instala uma rota de bloqueio, que forçará falha na procura por esta rota.
-Exemplo de utilização: bloquear rotas antes do uso da rota default.
-Isto não é firewalling.
+Instala uma rota de bloqueio, que forÃ§arÃ¡ falha na procura por esta rota.
+Exemplo de utilizaÃ§Ã£o: bloquear rotas antes do uso da rota default.
+Isto nÃ£o Ã© firewalling.
 
 .TP
 .B mod, dyn, reinstate
-Instala uma rota modificada ou dinâmica. Ambas as flags são geralmente somente
-configuradas por um daemon de roteamento. Somente para propósitos de diagnostico.
+Instala uma rota modificada ou dinÃ¢mica. Ambas as flags sÃ£o geralmente somente
+configuradas por um daemon de roteamento. Somente para propÃ³sitos de diagnostico.
 
 .TP
 .B dev If
-Força a associação da rota com o dispositivo especificado, pois o kernel
-de outra forma tentara determinar o dispositivo por conta própria
-(através da checagem de rotas e especificações de dispositivos já existentes
+ForÃ§a a associaÃ§Ã£o da rota com o dispositivo especificado, pois o kernel
+de outra forma tentara determinar o dispositivo por conta prÃ³pria
+(atravÃ©s da checagem de rotas e especificaÃ§Ãµes de dispositivos jÃ¡ existentes
 e onde a rota esta adicionada).
 
 If 
 .B dev If
-é a última opção na linha de comando, a palavra
+Ã© a Ãºltima opÃ§Ã£o na linha de comando, a palavra
 .B dev
-pode ser omitida, pois é o default. De outra forma a ordem dos outros
-modificadores do route (metric - netmask - gw - dev) não importa.
+pode ser omitida, pois Ã© o default. De outra forma a ordem dos outros
+modificadores do route (metric - netmask - gw - dev) nÃ£o importa.
 
 .SH EXEMPLOS
 .TP
 .B route add -net 127.0.0.0
 Adiciona a entrada para a interface loopback normal, usando mascara igual
-a 255.0.0.0 (rede classe A, determinada a partir do endereço de destino),
+a 255.0.0.0 (rede classe A, determinada a partir do endereÃ§o de destino),
 associada ao dispositivo "lo" (assumindo que este dispositivo tenha sido
 previamente configurado com o
 .BR ifconfig (8)). 
 
 .TP 
 .B route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
-Adiciona uma rota para a rede 192.56.76.x através da interface "eth0". O 
-modificador de mascara classe C não é realmente necessário aqui por que
-192.* é um endereço IP de classe C. A palavra "dev" pode ser omitida aqui.
+Adiciona uma rota para a rede 192.56.76.x atravÃ©s da interface "eth0". O 
+modificador de mascara classe C nÃ£o Ã© realmente necessÃ¡rio aqui por que
+192.* Ã© um endereÃ§o IP de classe C. A palavra "dev" pode ser omitida aqui.
 
 .TP
 .B route add default gw mango-gw
-Adiciona uma rota default (que será usada se nenhuma outra rota for encontrada).
-Todos os pacotes que usarem esta rota serão passados para a máquina "mango-gw".
-O dispositivo que será utilizado para esta rota depende de como é possível
-alcançar "mango-gw" - a rota estática para "mango-gw" terá que ser configurada
+Adiciona uma rota default (que serÃ¡ usada se nenhuma outra rota for encontrada).
+Todos os pacotes que usarem esta rota serÃ£o passados para a mÃ¡quina "mango-gw".
+O dispositivo que serÃ¡ utilizado para esta rota depende de como Ã© possÃ­vel
+alcanÃ§ar "mango-gw" - a rota estÃ¡tica para "mango-gw" terÃ¡ que ser configurada
 previamente.
 
 .TP
 .B route add ipx4 sl0
-Adiciona uma rota para a máquina "ipx4" através da interface SLIP (assumindo
-que "ipx4" é a máquina SLIP).
+Adiciona uma rota para a mÃ¡quina "ipx4" atravÃ©s da interface SLIP (assumindo
+que "ipx4" Ã© a mÃ¡quina SLIP).
 
 .TP
 .B route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
-Este comando adiciona a rede "192.57.66.x" para ser alcançada através da
-rota anterior através da interface SLIP.
+Este comando adiciona a rede "192.57.66.x" para ser alcanÃ§ada atravÃ©s da
+rota anterior atravÃ©s da interface SLIP.
 
 .TP
 .B route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
-Isto é bem obscura, documentada para que as pessoas saibam como usá-la. 
-Configura para que todas as rotas IP classe D (multicast) vão através da
-interface "eth0". Esta é a linha de configuração normal a ser usada com
+Isto Ã© bem obscura, documentada para que as pessoas saibam como usÃ¡-la. 
+Configura para que todas as rotas IP classe D (multicast) vÃ£o atravÃ©s da
+interface "eth0". Esta Ã© a linha de configuraÃ§Ã£o normal a ser usada com
 um kernel multicast.
 
 .TP
 .B route add 10.0.0.0 netmask 255.0.0.0 reject
-Esta instala uma rota de rejeição para a rede privada "10.x.x.x"
+Esta instala uma rota de rejeiÃ§Ã£o para a rede privada "10.x.x.x"
 
 .LP
-.SH SAÍDA
-A saída da tabela de roteamento do kernel é organizada nas seguintes colunas
+.SH SAÃDA
+A saÃ­da da tabela de roteamento do kernel Ã© organizada nas seguintes colunas
 .TP
 .B Destino     
-A rede ou máquina de destino.
+A rede ou mÃ¡quina de destino.
 .TP
 .B Roteador
-A máquina roteador ou '*' se nenhuma estiver configurada.
+A mÃ¡quina roteador ou '*' se nenhuma estiver configurada.
 .TP
-.B Mascara Genérica
-A mascara para a rede destino. '255.255.255.255' para uma máquina de destino,
-'0.0.0.0' para a rota
+.B Mascara GenÃ©rica
+A mascara para a rede destino. '255.255.255.255' para uma mÃ¡quina de
+destino, '0.0.0.0' para a rota
 .B default
 .
 .TP
 .B Flags 
-Os flags possíveis são
+Os flags possÃ­veis sÃ£o
 .br
 .B U
 (rota esta
 .BR Up )
 .br
 .B H
-(alvo é uma
-.BR máquina )
+(alvo Ã© uma
+.BR mÃ¡quina )
 .br
 .B G
 (use
@@ -261,7 +261,7 @@ Os flags poss
 .br
 .B R
 .RB ( reinstate
-rota para roteamento dinâmico)
+rota para roteamento dinÃ¢mico)
 .br
 .B D
 Instalada
@@ -278,29 +278,29 @@ Rota
 )
 .TP
 .B Metric 
-A 'distância' até o alvo (geralmente contada em hops). Não é utilizada pelos
+A 'distÃ¢ncia' atÃ© o alvo (geralmente contada em hops). NÃ£o Ã© utilizada pelos
 kernels recentes, somente daemons de roteamento podem usa-la.
 .TP
 .B Ref    
-Numero de referências a esta rota. Não usado no kernel do Linux, sempre 0.
+Numero de referÃªncias a esta rota. NÃ£o usado no kernel do Linux, sempre 0.
 .TP
 .B Uso
-Contagem de procuras por esta rota. Nos kernels recentes estes números são
-bem baixos, pois os sockets tem seu próprio cache e não precisam procurar
+Contagem de procuras por esta rota. Nos kernels recentes estes nÃºmeros sÃ£o
+bem baixos, pois os sockets tem seu prÃ³prio cache e nÃ£o precisam procurar
 por rotas.
 .TP
 .B Iface
-Interface através da qual os pacotes IP serão enviados.
+Interface atravÃ©s da qual os pacotes IP serÃ£o enviados.
 .TP
 .B MSS 
-Tamanho máximo de segmento default para conexões TCP através desta rota.
+Tamanho mÃ¡ximo de segmento default para conexÃµes TCP atravÃ©s desta rota.
 .TP
 .B Window  
-Tamanho de janela default para conexões TCP através desta rota.
+Tamanho de janela default para conexÃµes TCP atravÃ©s desta rota.
 .TP
 .B irtt
 RTT (Tempo de Ida e Volta) Inicial. O kernel usa isto para inferir os melhores
-parâmetros do protocolo TCP sem esperar por respostas (possivelmente lentas).
+parÃ¢metros do protocolo TCP sem esperar por respostas (possivelmente lentas).
 .LP
 .SH ARQUIVOS
 .I /proc/net/route
@@ -311,17 +311,17 @@ par
 .br
 .I /etc/init.d/network
 .LP
-.SH VEJA TAMBÉM
+.SH VEJA TAMBÃ‰M
 .I ifconfig(8), netstat(8), arp(8)
 .LP
-.SH HISTÓRICO
+.SH HISTÃ“RICO
 .B Route
 para o linux foi originalmente escrito por Fred N. van Kempen,
 <waltje@uwalt.nl.mugnet.org> e depois modificado por Johannes Stille e
-Linus Torvalds para a versão pl15. Alan Cox adicionou as opções para
+Linus Torvalds para a versÃ£o pl15. Alan Cox adicionou as opÃ§Ãµes para
 mss e window no kernel 1.1.22. O suporte a irtt (compartilhado com o
 netstat) foi feito por Bernd Eckenfels.
-.SH TRADUÇÃO
+.SH TRADUÃ‡ÃƒO
 Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 13/04/1998
 .SH BUGS
 nenhum :)
diff --git a/mii-tool.c b/mii-tool.c
index ef2d48a..1cfecc2 100644
--- a/mii-tool.c
+++ b/mii-tool.c
@@ -29,8 +29,6 @@
 	http://www.national.com/pf/DP/DP83840.html
 */
 
-static char version[] =
-"mii-tool.c 1.9 2000/04/28 00:56:08 (David Hinds)\n";
 
 #include <unistd.h>
 #include <stdlib.h>
@@ -46,16 +44,25 @@ static char version[] =
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <net/if.h>
+#include <linux/sockios.h>
+
 #ifndef __GLIBC__
 #include <linux/if_arp.h>
 #include <linux/if_ether.h>
 #endif
-#include "mii.h"
+#include <linux/mii.h>
+#include <linux/sockios.h>
+#include "version.h"
+#include "net-support.h"
+#include "util.h"
+
+static char *Release = RELEASE, *Signature = "David Hinds based on Donald Becker's mii-diag";
 
 #define MAX_ETH		8		/* Maximum # of interfaces */
+#define LPA_ABILITY_MASK	0x07e0
 
 /* Table of known MII's */
-static struct {
+static const struct {
     u_short	id1, id2;
     char	*name;
 } mii_id[] = {
@@ -64,16 +71,25 @@ static struct {
     { 0x0000, 0x6b90, "AMD 79C901A HomePNA" },
     { 0x0000, 0x6b70, "AMD 79C901A 10baseT" },
     { 0x0181, 0xb800, "Davicom DM9101" },
-    { 0x0043, 0x7411, "Enable EL40-331" },
+    { 0x0043, 0x7410, "Enable EL40-331" },
+    { 0x0243, 0x0c50, "ICPlus IP101A" },
     { 0x0015, 0xf410, "ICS 1889" },
     { 0x0015, 0xf420, "ICS 1890" },
     { 0x0015, 0xf430, "ICS 1892" },
     { 0x02a8, 0x0150, "Intel 82555" },
     { 0x7810, 0x0000, "Level One LXT970/971" },
+    { 0x0022, 0x1510, "Micrel KSZ8041" },
+    { 0x0022, 0x1610, "Micrel KSZ9021" },
     { 0x2000, 0x5c00, "National DP83840A" },
+    { 0x2000, 0x5c70, "National DP83865" },
     { 0x0181, 0x4410, "Quality QS6612" },
     { 0x0282, 0x1c50, "SMSC 83C180" },
+    { 0x0203, 0x8460, "STMicroelectronics ST802RT" },
+    { 0x1c04, 0x0010, "STMicroelectronics STE100P" },
     { 0x0300, 0xe540, "TDK 78Q2120" },
+    { 0x0141, 0x0c20, "Yukon 88E1011" },
+    { 0x0141, 0x0cc0, "Yukon-EC 88E1111" },
+    { 0x0141, 0x0c90, "Yukon-2 88E1112" },
 };
 #define NMII (sizeof(mii_id)/sizeof(mii_id[0]))
 
@@ -81,10 +97,10 @@ static struct {
 
 struct option longopts[] = {
  /* { name  has_arg  *flag  val } */
-    {"advertise",	1, 0, 'A'},	/* Change capabilities advertised. */
-    {"force",		1, 0, 'F'},	/* Change capabilities advertised. */
+    {"advertise",	1, 0, 'A'},	/* Advertise only specified media. */
+    {"force",		1, 0, 'F'},	/* Force specified media technology. */
     {"phy",		1, 0, 'p'},	/* Set PHY (MII address) to report. */
-    {"log",		0, 0, 'l'},	/* Set PHY (MII address) to report. */
+    {"log",		0, 0, 'l'},	/* With --watch, write events to syslog. */
     {"restart",		0, 0, 'r'},	/* Restart link negotiation */
     {"reset",		0, 0, 'R'},	/* Reset the transceiver. */
     {"verbose", 	0, 0, 'v'},	/* Report each action taken.  */
@@ -112,7 +128,7 @@ static struct ifreq ifr;
 
 static int mdio_read(int skfd, int location)
 {
-    struct mii_data *mii = (struct mii_data *)&ifr.ifr_data;
+    struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&ifr.ifr_data;
     mii->reg_num = location;
     if (ioctl(skfd, SIOCGMIIREG, &ifr) < 0) {
 	fprintf(stderr, "SIOCGMIIREG on %s failed: %s\n", ifr.ifr_name,
@@ -124,7 +140,7 @@ static int mdio_read(int skfd, int location)
 
 static void mdio_write(int skfd, int location, int value)
 {
-    struct mii_data *mii = (struct mii_data *)&ifr.ifr_data;
+    struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&ifr.ifr_data;
     mii->reg_num = location;
     mii->val_in = value;
     if (ioctl(skfd, SIOCSMIIREG, &ifr) < 0) {
@@ -137,40 +153,48 @@ static void mdio_write(int skfd, int location, int value)
 
 const struct {
     char	*name;
-    u_short	value;
+    u_short	value[2];
 } media[] = {
     /* The order through 100baseT4 matches bits in the BMSR */
-    { "10baseT-HD",	MII_AN_10BASET_HD },
-    { "10baseT-FD",	MII_AN_10BASET_FD },
-    { "100baseTx-HD",	MII_AN_100BASETX_HD },
-    { "100baseTx-FD",	MII_AN_100BASETX_FD },
-    { "100baseT4",	MII_AN_100BASET4 },
-    { "100baseTx",	MII_AN_100BASETX_FD | MII_AN_100BASETX_HD },
-    { "10baseT",	MII_AN_10BASET_FD | MII_AN_10BASET_HD },
+    { "10baseT-HD",	{LPA_10HALF} },
+    { "10baseT-FD",	{LPA_10FULL} },
+    { "100baseTx-HD",	{LPA_100HALF} },
+    { "100baseTx-FD",	{LPA_100FULL} },
+    { "100baseT4",	{LPA_100BASE4} },
+    { "100baseTx",	{LPA_100FULL | LPA_100HALF} },
+    { "10baseT",	{LPA_10FULL | LPA_10HALF} },
+
+    { "1000baseT-HD",	{0, ADVERTISE_1000HALF} },
+    { "1000baseT-FD",	{0, ADVERTISE_1000FULL} },
+    { "1000baseT",	{0, ADVERTISE_1000HALF|ADVERTISE_1000FULL} },
 };
 #define NMEDIA (sizeof(media)/sizeof(media[0]))
-	
+
 /* Parse an argument list of media types */
-static int parse_media(char *arg)
+static int parse_media(char *arg, unsigned *bmcr2)
 {
     int mask, i;
     char *s;
     mask = strtoul(arg, &s, 16);
     if ((*arg != '\0') && (*s == '\0')) {
-	if ((mask & MII_AN_ABILITY_MASK) &&
-	    !(mask & ~MII_AN_ABILITY_MASK))
-	    return mask;
+	if ((mask & LPA_ABILITY_MASK) &&
+	    !(mask & ~LPA_ABILITY_MASK)) {
+		*bmcr2 = 0;
+		return mask;
+	}
 	goto failed;
-    } else {
-	mask = 0;
-	s = strtok(arg, ", ");
-	do {
+    }
+    mask = 0;
+    *bmcr2 = 0;
+    s = strtok(arg, ", ");
+    do {
 	    for (i = 0; i < NMEDIA; i++)
-		if (strcasecmp(media[i].name, s) == 0) break;
+		if (s && strcasecmp(media[i].name, s) == 0) break;
 	    if (i == NMEDIA) goto failed;
-	    mask |= media[i].value;
-	} while ((s = strtok(NULL, ", ")) != NULL);
-    }
+	    mask |= media[i].value[0];
+	    *bmcr2 |= media[i].value[1];
+    } while ((s = strtok(NULL, ", ")) != NULL);
+
     return mask;
 failed:
     fprintf(stderr, "Invalid media specification '%s'.\n", arg);
@@ -179,11 +203,25 @@ failed:
 
 /*--------------------------------------------------------------------*/
 
-static char *media_list(int mask, int best)
+static const char *media_list(unsigned mask, unsigned mask2, int best)
 {
     static char buf[100];
     int i;
     *buf = '\0';
+
+    if (mask & BMCR_SPEED1000) {
+	if (mask2 & ADVERTISE_1000HALF) {
+	    strcat(buf, " ");
+	    strcat(buf, "1000baseT-HD");
+	    if (best) goto out;
+	}
+	if (mask2 & ADVERTISE_1000FULL) {
+	    strcat(buf, " ");
+	    strcat(buf, "1000baseT-FD");
+	    if (best) goto out;
+	}
+    }
+
     mask >>= 5;
     for (i = 4; i >= 0; i--) {
 	if (mask & (1<<i)) {
@@ -192,6 +230,7 @@ static char *media_list(int mask, int best)
 	    if (best) break;
 	}
     }
+ out:
     if (mask & (1<<5))
 	strcat(buf, " flow-control");
     return buf;
@@ -199,49 +238,82 @@ static char *media_list(int mask, int best)
 
 int show_basic_mii(int sock, int phy_id)
 {
-    char buf[100];
+    char buf[200];
     int i, mii_val[32];
-    int bmcr, bmsr, advert, lkpar;
+    unsigned bmcr, bmsr, advert, lkpar, bmcr2, lpa2;
 
     /* Some bits in the BMSR are latched, but we can't rely on being
        the only reader, so only the current values are meaningful */
     mdio_read(sock, MII_BMSR);
-    for (i = 0; i < ((verbose > 1) ? 32 : 8); i++)
-	mii_val[i] = mdio_read(sock, i);
+    for (i = 0; i < ((verbose > 1) ? 32 : (MII_STAT1000+1)); i++)
+	switch (i & 0x1F) {
+	    case MII_BMCR:
+	    case MII_BMSR:
+	    case MII_PHYSID1:
+	    case MII_PHYSID2:
+	    case MII_ADVERTISE:
+	    case MII_LPA:
+	    case MII_EXPANSION:
+	    case MII_CTRL1000:
+	    case MII_STAT1000:
+	    case MII_ESTATUS:
+	    case MII_DCOUNTER:
+	    case MII_FCSCOUNTER:
+	    case MII_NWAYTEST:
+	    case MII_RERRCOUNTER:
+	    case MII_SREVISION:
+	    case MII_RESV1:
+	    case MII_LBRERROR:
+	    case MII_PHYADDR:
+	    case MII_RESV2:
+	    case MII_TPISTATUS:
+	    case MII_NCONFIG:
+		mii_val[i] = mdio_read(sock, i);
+		break;
+	    default:
+		if (verbose > 2)
+		    mii_val[i] = mdio_read(sock, i);
+		else
+		    mii_val[i] = 0;
+		break;
+        }
 
-    if (mii_val[MII_BMCR] == 0xffff) {
+    if (mii_val[MII_BMCR] == 0xffff  || mii_val[MII_BMSR] == 0x0000) {
 	fprintf(stderr, "  No MII transceiver present!.\n");
 	return -1;
     }
 
     /* Descriptive rename. */
     bmcr = mii_val[MII_BMCR]; bmsr = mii_val[MII_BMSR];
-    advert = mii_val[MII_ANAR]; lkpar = mii_val[MII_ANLPAR];
+    advert = mii_val[MII_ADVERTISE]; lkpar = mii_val[MII_LPA];
+    bmcr2 = mii_val[MII_CTRL1000]; lpa2 = mii_val[MII_STAT1000];
 
     sprintf(buf, "%s: ", ifr.ifr_name);
-    if (bmcr & MII_BMCR_AN_ENA) {
-	if (bmsr & MII_BMSR_AN_COMPLETE) {
+    if (bmcr & BMCR_ANENABLE) {
+	if (bmsr & BMSR_ANEGCOMPLETE) {
 	    if (advert & lkpar) {
-		strcat(buf, (lkpar & MII_AN_ACK) ?
+		strcat(buf, (lkpar & LPA_LPACK) ?
 		       "negotiated" : "no autonegotiation,");
-		strcat(buf, media_list(advert & lkpar, 1));
+		strcat(buf, media_list(advert & lkpar, bmcr2 & lpa2>>2, 1));
 		strcat(buf, ", ");
 	    } else {
 		strcat(buf, "autonegotiation failed, ");
 	    }
-	} else if (bmcr & MII_BMCR_RESTART) {
+	} else if (bmcr & BMCR_ANRESTART) {
 	    strcat(buf, "autonegotiation restarted, ");
 	}
     } else {
 	sprintf(buf+strlen(buf), "%s Mbit, %s duplex, ",
-	       (bmcr & MII_BMCR_100MBIT) ? "100" : "10",
-	       (bmcr & MII_BMCR_DUPLEX) ? "full" : "half");
+		((bmcr2 & (ADVERTISE_1000HALF | ADVERTISE_1000FULL)) & lpa2 >> 2)
+		? "1000"
+		: (bmcr & BMCR_SPEED100) ? "100" : "10",
+		(bmcr & BMCR_FULLDPLX) ? "full" : "half");
     }
-    strcat(buf, (bmsr & MII_BMSR_LINK_VALID) ? "link ok" : "no link");
+    strcat(buf, (bmsr & BMSR_LSTATUS) ? "link ok" : "no link");
 
     if (opt_watch) {
 	if (opt_log) {
-	    syslog(LOG_INFO, buf);
+	    syslog(LOG_INFO, "%s", buf);
 	} else {
 	    char s[20];
 	    time_t t = time(NULL);
@@ -273,35 +345,36 @@ int show_basic_mii(int sock, int phy_id)
 		   ((mii_val[2]<<6)|(mii_val[3]>>10))&0xff,
 		   (mii_val[3]>>4)&0x3f, mii_val[3]&0x0f);
 	printf("  basic mode:   ");
-	if (bmcr & MII_BMCR_RESET)
+	if (bmcr & BMCR_RESET)
 	    printf("software reset, ");
-	if (bmcr & MII_BMCR_LOOPBACK)
+	if (bmcr & BMCR_LOOPBACK)
 	    printf("loopback, ");
-	if (bmcr & MII_BMCR_ISOLATE)
+	if (bmcr & BMCR_ISOLATE)
 	    printf("isolate, ");
-	if (bmcr & MII_BMCR_COLTEST)
+	if (bmcr & BMCR_CTST)
 	    printf("collision test, ");
-	if (bmcr & MII_BMCR_AN_ENA) {
+	if (bmcr & BMCR_ANENABLE) {
 	    printf("autonegotiation enabled\n");
 	} else {
 	    printf("%s Mbit, %s duplex\n",
-		   (bmcr & MII_BMCR_100MBIT) ? "100" : "10",
-		   (bmcr & MII_BMCR_DUPLEX) ? "full" : "half");
+		   (bmcr & BMCR_SPEED100) ? "100" : "10",
+		   (bmcr & BMCR_FULLDPLX) ? "full" : "half");
 	}
 	printf("  basic status: ");
-	if (bmsr & MII_BMSR_AN_COMPLETE)
+	if (bmsr & BMSR_ANEGCOMPLETE)
 	    printf("autonegotiation complete, ");
-	else if (bmcr & MII_BMCR_RESTART)
+	else if (bmcr & BMCR_ANRESTART)
 	    printf("autonegotiation restarted, ");
-	if (bmsr & MII_BMSR_REMOTE_FAULT)
+	if (bmsr & BMSR_RFAULT)
 	    printf("remote fault, ");
-	printf((bmsr & MII_BMSR_LINK_VALID) ? "link ok" : "no link");
-	printf("\n  capabilities:%s", media_list(bmsr >> 6, 0));
-	printf("\n  advertising: %s", media_list(advert, 0));
-	if (lkpar & MII_AN_ABILITY_MASK)
-	    printf("\n  link partner:%s", media_list(lkpar, 0));
+	printf((bmsr & BMSR_LSTATUS) ? "link ok" : "no link");
+	printf("\n  capabilities:%s", media_list(bmsr >> 6, bmcr2, 0));
+	printf("\n  advertising: %s", media_list(advert, bmcr2, 0));
+	if (lkpar & LPA_ABILITY_MASK)
+	    printf("\n  link partner:%s", media_list(lkpar, lpa2 >> 2, 0));
 	printf("\n");
     }
+    fflush(stdout);
     return 0;
 }
 
@@ -309,10 +382,10 @@ int show_basic_mii(int sock, int phy_id)
 
 static int do_one_xcvr(int skfd, char *ifname, int maybe)
 {
-    struct mii_data *mii = (struct mii_data *)&ifr.ifr_data;
+    struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&ifr.ifr_data;
 
     /* Get the vitals from the interface. */
-    strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+    safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
     if (ioctl(skfd, SIOCGMIIPHY, &ifr) < 0) {
 	if (!maybe || (errno != ENODEV))
 	    fprintf(stderr, "SIOCGMIIPHY on '%s' failed: %s\n",
@@ -327,23 +400,23 @@ static int do_one_xcvr(int skfd, char *ifname, int maybe)
 
     if (opt_reset) {
 	printf("resetting the transceiver...\n");
-	mdio_write(skfd, MII_BMCR, MII_BMCR_RESET);
+	mdio_write(skfd, MII_BMCR, BMCR_RESET);
     }
-    if (nway_advertise) {
-	mdio_write(skfd, MII_ANAR, nway_advertise | 1);
+    if (nway_advertise > 0) {
+	mdio_write(skfd, MII_ADVERTISE, nway_advertise | 1);
 	opt_restart = 1;
     }
     if (opt_restart) {
 	printf("restarting autonegotiation...\n");
 	mdio_write(skfd, MII_BMCR, 0x0000);
-	mdio_write(skfd, MII_BMCR, MII_BMCR_AN_ENA|MII_BMCR_RESTART);
+	mdio_write(skfd, MII_BMCR, BMCR_ANENABLE|BMCR_ANRESTART);
     }
     if (fixed_speed) {
 	int bmcr = 0;
-	if (fixed_speed & (MII_AN_100BASETX_FD|MII_AN_100BASETX_HD))
-	    bmcr |= MII_BMCR_100MBIT;
-	if (fixed_speed & (MII_AN_100BASETX_FD|MII_AN_10BASET_FD))
-	    bmcr |= MII_BMCR_DUPLEX;
+	if (fixed_speed & (LPA_100FULL|LPA_100HALF))
+	    bmcr |= BMCR_SPEED100;
+	if (fixed_speed & (LPA_100FULL|LPA_10FULL))
+	    bmcr |= BMCR_FULLDPLX;
 	mdio_write(skfd, MII_BMCR, bmcr);
     }
 
@@ -357,12 +430,12 @@ static int do_one_xcvr(int skfd, char *ifname, int maybe)
 
 static void watch_one_xcvr(int skfd, char *ifname, int index)
 {
-    struct mii_data *mii = (struct mii_data *)&ifr.ifr_data;
+    struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&ifr.ifr_data;
     static int status[MAX_ETH] = { 0, /* ... */ };
     int now;
 
     /* Get the vitals from the interface. */
-    strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+    safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
     if (ioctl(skfd, SIOCGMIIPHY, &ifr) < 0) {
 	if (errno != ENODEV)
 	    fprintf(stderr, "SIOCGMIIPHY on '%s' failed: %s\n",
@@ -379,27 +452,38 @@ static void watch_one_xcvr(int skfd, char *ifname, int index)
 /*--------------------------------------------------------------------*/
 
 const char *usage =
-"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...]
-       -V, --version               display version information
-       -v, --verbose               more verbose output
-       -R, --reset                 reset MII to poweron state
-       -r, --restart               restart autonegotiation
-       -w, --watch                 monitor for link status changes
-       -l, --log                   with -w, write events to syslog
-       -A, --advertise=media,...   advertise only specified media
-       -F, --force=media           force specified media technology
-media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
-       (to advertise both HD and FD) 100baseTx, 10baseT\n";
+"usage: %s [-VvRrwl] [-A media,... | -F media] [-p addr] <interface ...>\n"
+"       -V, --version               display version information\n"
+"       -v, --verbose               more verbose output\n"
+"       -R, --reset                 reset MII to poweron state\n"
+"       -r, --restart               restart autonegotiation\n"
+"       -w, --watch                 monitor for link status changes\n"
+"       -l, --log                   with -w, write events to syslog\n"
+"       -A, --advertise=media,...   advertise only specified media\n"
+"       -F, --force=media           force specified media technology\n"
+"       -p, --phy=addr              set PHY (MII address) to report\n"
+"media: 1000baseTx-HD, 1000baseTx-FD,\n"
+"       100baseT4, 100baseTx-FD, 100baseTx-HD,\n"
+"       10baseT-FD, 10baseT-HD,\n"
+"       (to advertise both HD and FD) 1000baseTx, 100baseTx, 10baseT\n";
+
+
+static void version(void)
+{
+    fprintf(stderr, "%s\n%s\n", Release, Signature);
+    exit(E_VERSION);
+}
+
 
 int main(int argc, char **argv)
 {
     int i, c, ret, errflag = 0;
-    char s[6];
-    
+    unsigned ctrl1000 = 0;
+
     while ((c = getopt_long(argc, argv, "A:F:p:lrRvVw?", longopts, 0)) != EOF)
 	switch (c) {
-	case 'A': nway_advertise = parse_media(optarg); break;
-	case 'F': fixed_speed = parse_media(optarg); break;
+	case 'A': nway_advertise = parse_media(optarg, &ctrl1000); break;
+	case 'F': fixed_speed = parse_media(optarg, &ctrl1000); break;
 	case 'p': override_phy = atoi(optarg); break;
 	case 'r': opt_restart++;	break;
 	case 'R': opt_reset++;		break;
@@ -411,6 +495,10 @@ int main(int argc, char **argv)
 	}
     /* Check for a few inappropriate option combinations */
     if (opt_watch) verbose = 0;
+
+    if ((nway_advertise < 0) || (fixed_speed < 0))
+    	return 2;
+
     if (errflag || (fixed_speed & (fixed_speed-1)) ||
 	(fixed_speed && (opt_restart || nway_advertise))) {
 	fprintf(stderr, usage, argv[0]);
@@ -418,7 +506,7 @@ int main(int argc, char **argv)
     }
 
     if (opt_version)
-	printf(version);
+	version();
 
     /* Open a basic socket. */
     if ((skfd = socket(AF_INET, SOCK_DGRAM,0)) < 0) {
@@ -426,15 +514,15 @@ int main(int argc, char **argv)
 	exit(-1);
     }
 
+    if (verbose > 1)
+    	printf("Using SIOCGMIIPHY=0x%x\n", SIOCGMIIPHY);
+
     /* No remaining args means show all interfaces. */
     if (optind == argc) {
-	ret = 1;
-	for (i = 0; i < MAX_ETH; i++) {
-	    sprintf(s, "eth%d", i);
-	    ret &= do_one_xcvr(skfd, s, 1);
-	}
-	if (ret)
-	    fprintf(stderr, "no MII interfaces found\n");
+	fprintf(stderr, "No interface specified\n");
+	fprintf(stderr, usage, argv[0]);
+	close(skfd);
+	return 2;
     } else {
 	ret = 0;
 	for (i = optind; i < argc; i++) {
@@ -445,15 +533,8 @@ int main(int argc, char **argv)
     if (opt_watch && (ret == 0)) {
 	while (1) {
 	    sleep(1);
-	    if (optind == argc) {
-		for (i = 0; i < MAX_ETH; i++) {
-		    sprintf(s, "eth%d", i);
-		    watch_one_xcvr(skfd, s, i);
-		}
-	    } else {
-		for (i = optind; i < argc; i++)
+	    for (i = optind; i < argc; i++)
 		    watch_one_xcvr(skfd, argv[i], i-optind);
-	    }
 	}
     }
 
diff --git a/nameif.c b/nameif.c
index 8d79b50..b280e59 100644
--- a/nameif.c
+++ b/nameif.c
@@ -1,11 +1,11 @@
-/* 
+/*
  * Name Interfaces based on MAC address.
  * Writen 2000 by Andi Kleen.
- * Subject to the Gnu Public License, version 2.  
+ * Subject to the Gnu Public License, version 2.
  * TODO: make it support token ring etc.
- * $Id: nameif.c,v 1.1 2000/10/18 17:26:29 ak Exp $
- */ 
-#ifndef _GNU_SOURCE 
+ * $Id: nameif.c,v 1.4 2003/09/11 03:46:49 ak Exp $
+ */
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif
 #include <stdio.h>
@@ -21,73 +21,68 @@
 #include <net/if.h>
 #include <linux/sockios.h>
 #include <errno.h>
-#include "intl.h" 
-
-const char default_conf[] = "/etc/mactab"; 
-const char *fname = default_conf; 
-int use_syslog; 
-int ctl_sk = -1; 
-
-void err(char *msg) 
-{ 
-	if (use_syslog) { 
-		syslog(LOG_ERR,"%s: %m", msg); 
-	} else { 
-		perror(msg); 
-	} 
-	exit(1); 
+#include "intl.h"
+#include "net-support.h"
+#include "util.h"
+
+const char default_conf[] = "/etc/mactab";
+const char *fname = default_conf;
+int use_syslog;
+int ctl_sk = -1;
+
+void err(char *msg)
+{
+	if (use_syslog) {
+		syslog(LOG_ERR,"%s: %m", msg);
+	} else {
+		perror(msg);
+	}
+	exit(1);
 }
 
-void complain(char *fmt, ...) 
-{ 
+void complain(char *fmt, ...)
+{
 	va_list ap;
 	va_start(ap,fmt);
-	if (use_syslog) { 
+	if (use_syslog) {
 		vsyslog(LOG_ERR,fmt,ap);
 	} else {
 		vfprintf(stderr,fmt,ap);
-		fputc('\n',stderr); 
+		fputc('\n',stderr);
 	}
-	va_end(ap); 
+	va_end(ap);
 	exit(1);
-} 
+}
 
-void warning(char *fmt, ...) 
-{ 
+void warning(char *fmt, ...)
+{
 	va_list ap;
 	va_start(ap,fmt);
-	if (use_syslog) { 
+	if (use_syslog) {
 		vsyslog(LOG_ERR,fmt,ap);
 	} else {
 		vfprintf(stderr,fmt,ap);
-		fputc('\n',stderr); 
+		fputc('\n',stderr);
 	}
-	va_end(ap); 
-} 
+	va_end(ap);
+}
 
 int parsemac(char *str, unsigned char *mac)
-{ 
-	char *s; 
-	while ((s = strsep(&str, ":")) != NULL) { 
+{
+	char *s;
+	while ((s = strsep(&str, ":")) != NULL) {
 		unsigned byte;
-		if (sscanf(s,"%x", &byte)!=1 || byte > 0xff) 
+		if (sscanf(s,"%x", &byte)!=1 || byte > 0xff)
 			return -1;
-		*mac++ = byte; 
-	}  
+		*mac++ = byte;
+	}
 	return 0;
-} 
-
-void *xmalloc(unsigned sz)
-{ 
-	void *p = calloc(sz,1);
-	if (!p) errno=ENOMEM, err("xmalloc"); 
-	return p; 
-} 
+}
 
 void opensock(void)
 {
-	if (ctl_sk < 0) 
-		ctl_sk = socket(PF_INET,SOCK_DGRAM,0); 
+	if (ctl_sk < 0)
+		ctl_sk = socket(PF_INET,SOCK_DGRAM,0);
 }
 
 #ifndef ifr_newname
@@ -97,10 +92,10 @@ void opensock(void)
 int  setname(char *oldname, char *newname)
 {
 	struct ifreq ifr;
-	opensock(); 
+	opensock();
 	memset(&ifr,0,sizeof(struct ifreq));
-	strcpy(ifr.ifr_name, oldname); 
-	strcpy(ifr.ifr_newname, newname); 
+	safe_strncpy(ifr.ifr_name, oldname, IFNAMSIZ);
+	safe_strncpy(ifr.ifr_newname, newname, IFNAMSIZ);
 	return ioctl(ctl_sk, SIOCSIFNAME, &ifr);
 }
 
@@ -108,118 +103,118 @@ int getmac(char *name, unsigned char *mac)
 {
 	int r;
 	struct ifreq ifr;
-	opensock(); 
+	opensock();
 	memset(&ifr,0,sizeof(struct ifreq));
-	strcpy(ifr.ifr_name, name); 
+	safe_strncpy(ifr.ifr_name, name, IFNAMSIZ);
 	r = ioctl(ctl_sk, SIOCGIFHWADDR, &ifr);
-	memcpy(mac, ifr.ifr_hwaddr.sa_data, 6); 
-	return r; 
+	memcpy(mac, ifr.ifr_hwaddr.sa_data, 6);
+	return r;
 }
 
-struct change { 
-	struct change *next,**pprev;
+struct change {
+	struct change *next;
+	int found;
 	char ifname[IFNAMSIZ+1];
 	unsigned char mac[6];
-}; 
+};
 struct change *clist;
 
-struct change *lookupmac(unsigned char *mac) 
-{ 
+struct change *lookupmac(unsigned char *mac)
+{
 	struct change *ch;
-	for (ch = clist;ch;ch = ch->next) 
+	for (ch = clist;ch;ch = ch->next)
 		if (!memcmp(ch->mac, mac, 6))
 			return ch;
-	return NULL; 
-} 
+	return NULL;
+}
 
 int addchange(char *p, struct change *ch, char *pos)
 {
 	if (strchr(ch->ifname, ':'))
-		warning(_("alias device %s at %s probably has no mac"), 
-			ch->ifname, pos); 
-	if (parsemac(p,ch->mac) < 0) 
-		complain(_("cannot parse MAC `%s' at %s"), p, pos); 
-	if (clist) 
-		clist->pprev = &ch->next;
+		warning(_("alias device %s at %s probably has no mac"),
+			ch->ifname, pos);
+	if (parsemac(p,ch->mac) < 0)
+		complain(_("cannot parse MAC `%s' at %s"), p, pos);
 	ch->next = clist;
-	ch->pprev = &clist;
 	clist = ch;
-	return 0; 
+	return 0;
 }
 
 void readconf(void)
 {
-	char *line; 
-	size_t linel; 
-	int linenum; 
+	char *line;
+	size_t linel;
+	int linenum;
 	FILE *ifh;
 	char *p;
 	int n;
+	struct change *ch = NULL;
 
 	ifh = fopen(fname, "r");
-	if (!ifh) 
-		complain(_("opening configuration file %s: %s"),fname,strerror(errno)); 
+	if (!ifh)
+		complain(_("opening configuration file %s: %s"),fname,strerror(errno));
 
-	line = NULL; 
+	line = NULL;
 	linel = 0;
-	linenum = 1; 
+	linenum = 1;
 	while (getdelim(&line, &linel, '\n', ifh) > 0) {
-		struct change *ch = xmalloc(sizeof(struct change)); 
-		char pos[20]; 
+		char pos[20];
 
-		sprintf(pos, _("line %d"), linenum); 
+		sprintf(pos, _("line %d"), linenum);
 
 		if ((p = strchr(line,'#')) != NULL)
 			*p = '\0';
-		p = line; 
+		p = line;
 		while (isspace(*p))
-			++p; 
+			++p;
 		if (*p == '\0')
-			continue; 
-		n = strcspn(p, " \t"); 
-		if (n > IFNAMSIZ) 
-			complain(_("interface name too long at line %d"), line);  
-		memcpy(ch->ifname, p, n); 
-		ch->ifname[n] = 0; 
-		p += n; 
-		p += strspn(p, " \t"); 
-		n = strspn(p, "0123456789ABCDEFabcdef:"); 
-		p[n] = 0; 
+			continue;
+		n = strcspn(p, " \t");
+		if (n > IFNAMSIZ-1)
+			complain(_("interface name too long at line %d"), line);
+		ch = xmalloc(sizeof(struct change));
+		memcpy(ch->ifname, p, n);
+		ch->ifname[n] = 0;
+		p += n;
+		p += strspn(p, " \t");
+		n = strspn(p, "0123456789ABCDEFabcdef:");
+		p[n] = 0;
 		addchange(p, ch, pos);
 		linenum++;
-	}   
-	fclose(ifh); 
+	}
+	fclose(ifh);
 }
 
-struct option lopt[] = { 
+struct option lopt[] = {
 	{"syslog", 0, NULL, 's' },
 	{"config-file", 1, NULL, 'c' },
-	{"help", 0, NULL, '?' }, 
-	{NULL}, 
-}; 
+	{"help", 0, NULL, '?' },
+	{NULL},
+};
 
 void usage(void)
 {
-	fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}")); 
-	exit(1); 
+	fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}\n"));
+	exit(E_USAGE);
 }
 
-int main(int ac, char **av) 
-{ 
-	FILE *ifh; 
+int main(int ac, char **av)
+{
+	FILE *ifh;
 	char *p;
 	int n;
-	int linenum; 
+	int linenum;
 	char *line = NULL;
 	size_t linel = 0;
+	int ret = 0;
 
 	for (;;) {
 		int c = getopt_long(ac,av,"c:s",lopt,NULL);
 		if (c == -1) break;
-		switch (c) { 
+		switch (c) {
 		default:
 		case '?':
-			usage(); 
+			usage();
 		case 'c':
 			fname = optarg;
 			break;
@@ -229,74 +224,76 @@ int main(int ac, char **av)
 		}
 	}
 
-	if (use_syslog) 
+	if (use_syslog)
 		openlog("nameif",0,LOG_LOCAL0);
-		
-	while (optind < ac) { 
-		struct change *ch = xmalloc(sizeof(struct change)); 
+
+	while (optind < ac) {
+		struct change *ch = xmalloc(sizeof(struct change));
 		char pos[30];
 
-		if ((ac-optind) & 1) 
+		if ((ac-optind) & 1)
 			usage();
-		if (strlen(av[optind])+1>IFNAMSIZ) 
+		if (strlen(av[optind])+1>IFNAMSIZ)
 			complain(_("interface name `%s' too long"), av[optind]);
-		strcpy(ch->ifname, av[optind]); 
-		optind++; 
-		sprintf(pos,_("argument %d"),optind); 
-		addchange(av[optind], ch, pos); 
-		optind++; 
-	} 
+		safe_strncpy(ch->ifname, av[optind], sizeof(ch->ifname));
+		optind++;
+		sprintf(pos,_("argument %d"),optind);
+		addchange(av[optind], ch, pos);
+		optind++;
+	}
 
-	if (!clist || fname != default_conf) 
-		readconf(); 
+	if (!clist || fname != default_conf)
+		readconf();
 
-	ifh = fopen("/proc/net/dev", "r"); 
-	if (!ifh)  complain(_("open of /proc/net/dev: %s"), strerror(errno)); 
+	ifh = fopen("/proc/net/dev", "r");
+	if (!ifh)  complain(_("open of /proc/net/dev: %s"), strerror(errno));
 
 
 	linenum = 0;
 	while (getdelim(&line, &linel, '\n', ifh) > 0) {
-		struct change *ch; 
+		struct change *ch;
 		unsigned char mac[6];
 
-		if (linenum++ < 2) 
+		if (linenum++ < 2)
 			continue;
-			
-		p = line; 
-		while (isspace(*p)) 
+
+		p = line;
+		while (isspace(*p))
 			++p;
-		n = strcspn(p, ": \t");  
-		p[n] = 0; 
-		
-		if (n > IFNAMSIZ-1) 
-			complain(_("interface name `%s' too long"), p); 
-			
-		if (getmac(p, mac) < 0) 
+		n = strcspn(p, ": \t");
+		p[n] = 0;
+
+		if (n > IFNAMSIZ-1)
+			complain(_("interface name `%s' too long"), p);
+
+		if (getmac(p, mac) < 0)
 			continue;
-			
-		ch = lookupmac(mac); 
-		if (!ch) 
+
+		ch = lookupmac(mac);
+		if (!ch)
 			continue;
-			
-		*ch->pprev = ch->next;
-		if (strcmp(p, ch->ifname)) { 
-			if (setname(p, ch->ifname) < 0)  
+
+		ch->found = 1;
+		if (strcmp(p, ch->ifname)) {
+			if (setname(p, ch->ifname) < 0)
 				complain(_("cannot change name of %s to %s: %s"),
-						p, ch->ifname, strerror(errno)); 
-		} 
-		free(ch);
-	} 
-	fclose(ifh); 
-	
-	while (clist) { 
+						p, ch->ifname, strerror(errno));
+		}
+	}
+	fclose(ifh);
+
+	while (clist) {
 		struct change *ch = clist;
 		clist = clist->next;
-		warning(_("interface '%s' not found"), ch->ifname); 
-		free(ch); 
+		if (!ch->found){
+			warning(_("interface '%s' not found"), ch->ifname);
+			ret = 1;
+		}
+		free(ch);
 	}
 
 	if (use_syslog)
 		closelog();
-	return 0;
-} 
+	return ret;
+}
 
diff --git a/netstat.c b/netstat.c
index 1ef790e..d0c364f 100644
--- a/netstat.c
+++ b/netstat.c
@@ -6,7 +6,7 @@
  *              NET-3 Networking Distribution for the LINUX operating
  *              system.
  *
- * Version:     $Id: netstat.c,v 1.43 2001/04/15 14:41:17 pb Exp $
+ * Version:     $Id: netstat.c,v 1.73 2011-04-20 01:35:22 ecki Exp $
  *
  * Authors:     Fred Baumgarten, <dc6iq@insu1.etec.uni-karlsruhe.de>
  *              Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
@@ -23,24 +23,24 @@
  * Modified:
  *
  *960116 {1.01} Bernd Eckenfels:        verbose, cleanups
- *960204 {1.10} Bernd Eckenfels:        aftrans, usage, new route_info, 
+ *960204 {1.10} Bernd Eckenfels:        aftrans, usage, new route_info,
  *                                      DLFT_AF
  *960204 {1.11} Bernd Eckenfels:        netlink support
  *960204 {1.12} Bernd Eckenfels:        route_init()
  *960215 {1.13} Bernd Eckenfels:        netlink_print honors HAVE_
- *960217 {1.14} Bernd Eckenfels:        masq_info from Jos Vos and 
+ *960217 {1.14} Bernd Eckenfels:        masq_info from Jos Vos and
  *                                      ax25_info from Jonathan Naylor.
  *960218 {1.15} Bernd Eckenfels:        ipx_info rewritten, -e for tcp/ipx
  *960220 {1.16} Bernd Eckenfels:        minor output reformats, -a for -x
  *960221 {1.17} Bernd Eckenfels:        route_init->getroute_init
  *960426 {1.18} Bernd Eckenfels:        new RTACTION, SYM/NUM, FIB/CACHE
- *960517 {1.19} Bernd Eckenfels:        usage() spelling fix and --unix inode, 
+ *960517 {1.19} Bernd Eckenfels:        usage() spelling fix and --unix inode,
  *                                      ':' is part of sock_addr for --inet
  *960822 {x.xx} Frank Strauss:          INET6 support
  *
  *970406 {1.33} Philip Copeland         Added snmp reporting support module -s
  *                                      code provided by Andi Kleen
- *                                      (relly needs to be kernel hooked but 
+ *                                      (relly needs to be kernel hooked but
  *                                      this will do in the meantime)
  *                                      minor header file misplacement tidy up.
  *980815 {1.xx} Stephane Fillod:       X.25 support
@@ -58,6 +58,8 @@
  *
  *990420 {1.38} Tuan Hoang              removed a useless assignment from igmp_do_one()
  *20010404 {1.39} Arnaldo Carvalho de Melo - use setlocale
+ *20081201 {1.42} Brian Micek           added -L|--udplite options for RFC 3828
+ *20020722 {1.51} Thomas Preusser       added SCTP over IPv4 support
  *
  *              This program is free software; you can redistribute it
  *              and/or  modify it under  the terms of  the GNU General
@@ -83,6 +85,7 @@
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <sys/ioctl.h>
+#include <sys/stat.h>
 #include <net/if.h>
 #include <dirent.h>
 
@@ -94,8 +97,18 @@
 #include "sockets.h"
 #include "interface.h"
 #include "util.h"
+#include "proc.h"
+
+#if HAVE_SELINUX
+#include <selinux/selinux.h>
+#endif
+
+#if HAVE_AFBLUETOOTH
+#include <bluetooth/bluetooth.h>
+#endif
 
 #define PROGNAME_WIDTH 20
+#define SELINUX_WIDTH 50
 
 #if !defined(s6_addr32) && defined(in6a_words)
 #define s6_addr32 in6a_words	/* libinet6			*/
@@ -104,6 +117,8 @@
 /* prototypes for statistics.c */
 void parsesnmp(int, int, int);
 void inittab(void);
+void parsesnmp6(int, int, int);
+void inittab6(void);
 
 typedef enum {
     SS_FREE = 0,		/* not allocated                */
@@ -122,7 +137,7 @@ typedef enum {
 #define FEATURE_NETSTAT
 #include "lib/net-features.h"
 
-char *Release = RELEASE, *Version = "netstat 1.42 (2001-04-15)", *Signature = "Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang and others";
+static char *Release = RELEASE, *Signature = "Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others";
 
 
 #define E_READ  -1
@@ -142,18 +157,24 @@ int flag_cf  = 0;
 int flag_opt = 0;
 int flag_raw = 0;
 int flag_tcp = 0;
+int flag_sctp= 0;
 int flag_udp = 0;
+int flag_udplite = 0;
 int flag_igmp= 0;
 int flag_rom = 0;
 int flag_exp = 1;
+int flag_wide= 0;
 int flag_prg = 0;
 int flag_arg = 0;
 int flag_ver = 0;
+int flag_l2cap = 0;
+int flag_rfcomm = 0;
+int flag_selinux = 0;
 
 FILE *procinfo;
 
-#define INFO_GUTS1(file,name,proc)			\
-  procinfo = fopen((file), "r");			\
+#define INFO_GUTS1(file,name,proc,prot)			\
+  procinfo = proc_fopen((file));			\
   if (procinfo == NULL) {				\
     if (errno != ENOENT) {				\
       perror((file));					\
@@ -166,58 +187,63 @@ FILE *procinfo;
   } else {						\
     do {						\
       if (fgets(buffer, sizeof(buffer), procinfo))	\
-        (proc)(lnr++, buffer);				\
+        (proc)(lnr++, buffer,prot);			\
     } while (!feof(procinfo));				\
     fclose(procinfo);					\
   }
 
 #if HAVE_AFINET6
-#define INFO_GUTS2(file,proc)				\
+#define INFO_GUTS2(file,proc,prot)			\
   lnr = 0;						\
-  procinfo = fopen((file), "r");		       	\
+  procinfo = proc_fopen((file));		       	\
   if (procinfo != NULL) {				\
     do {						\
       if (fgets(buffer, sizeof(buffer), procinfo))	\
-	(proc)(lnr++, buffer);				\
+	(proc)(lnr++, buffer,prot);			\
     } while (!feof(procinfo));				\
     fclose(procinfo);					\
   }
 #else
-#define INFO_GUTS2(file,proc)
+#define INFO_GUTS2(file,proc,prot)
 #endif
 
 #define INFO_GUTS3					\
  return rc;
 
-#define INFO_GUTS6(file,file6,name,proc)		\
+#define INFO_GUTS6(file,file6,name,proc,prot4,prot6)	\
  char buffer[8192];					\
  int rc = 0;						\
  int lnr = 0;						\
  if (!flag_arg || flag_inet) {				\
-    INFO_GUTS1(file,name,proc)				\
+    INFO_GUTS1(file,name,proc,prot4)			\
  }							\
  if (!flag_arg || flag_inet6) {				\
-    INFO_GUTS2(file6,proc)				\
+    INFO_GUTS2(file6,proc,prot6)			\
  }							\
  INFO_GUTS3
 
-#define INFO_GUTS(file,name,proc)			\
+#define INFO_GUTS(file,name,proc,prot)			\
  char buffer[8192];					\
  int rc = 0;						\
  int lnr = 0;						\
- INFO_GUTS1(file,name,proc)				\
+ INFO_GUTS1(file,name,proc,prot)			\
  INFO_GUTS3
 
 #define PROGNAME_WIDTHs PROGNAME_WIDTH1(PROGNAME_WIDTH)
 #define PROGNAME_WIDTH1(s) PROGNAME_WIDTH2(s)
 #define PROGNAME_WIDTH2(s) #s
 
+#define SELINUX_WIDTHs SELINUX_WIDTH1(SELINUX_WIDTH)
+#define SELINUX_WIDTH1(s) SELINUX_WIDTH2(s)
+#define SELINUX_WIDTH2(s) #s
+
 #define PRG_HASH_SIZE 211
 
 static struct prg_node {
     struct prg_node *next;
-    int inode;
+    unsigned long inode;
     char name[PROGNAME_WIDTH];
+    char scon[SELINUX_WIDTH];
 } *prg_hash[PRG_HASH_SIZE];
 
 static char prg_cache_loaded = 0;
@@ -225,8 +251,11 @@ static char prg_cache_loaded = 0;
 #define PRG_HASHIT(x) ((x) % PRG_HASH_SIZE)
 
 #define PROGNAME_BANNER "PID/Program name"
+#define SELINUX_BANNER "Security Context"
+
+#define print_progname_banner() do { if (flag_prg) printf(" %-" PROGNAME_WIDTHs "s",PROGNAME_BANNER); } while (0)
 
-#define print_progname_banner() do { if (flag_prg) printf("%-" PROGNAME_WIDTHs "s"," " PROGNAME_BANNER); } while (0)
+#define print_selinux_banner() do { if (flag_selinux) printf("%-" SELINUX_WIDTHs "s"," " SELINUX_BANNER); } while (0)
 
 #define PRG_LOCAL_ADDRESS "local_address"
 #define PRG_INODE	 "inode"
@@ -246,40 +275,57 @@ static char prg_cache_loaded = 0;
 #define PATH_PROC_X_FD      PATH_PROC "/%s/" PATH_FD_SUFF
 #define PATH_CMDLINE	"cmdline"
 #define PATH_CMDLINEl       strlen(PATH_CMDLINE)
-/* NOT working as of glibc-2.0.7: */
-#undef  DIRENT_HAVE_D_TYPE_WORKS
 
-static void prg_cache_add(int inode, char *name)
+static void prg_cache_add(unsigned long inode, char *name, const char *scon)
 {
     unsigned hi = PRG_HASHIT(inode);
     struct prg_node **pnp,*pn;
 
-    prg_cache_loaded=2;
-    for (pnp=prg_hash+hi;(pn=*pnp);pnp=&pn->next) {
-	if (pn->inode==inode) {
+    prg_cache_loaded = 2;
+    for (pnp = prg_hash + hi; (pn = *pnp); pnp = &pn->next) {
+	if (pn->inode == inode) {
 	    /* Some warning should be appropriate here
 	       as we got multiple processes for one i-node */
 	    return;
 	}
     }
-    if (!(*pnp=malloc(sizeof(**pnp)))) 
+    if (!(*pnp = malloc(sizeof(**pnp))))
 	return;
-    pn=*pnp;
-    pn->next=NULL;
-    pn->inode=inode;
-    if (strlen(name)>sizeof(pn->name)-1) 
-	name[sizeof(pn->name)-1]='\0';
-    strcpy(pn->name,name);
+    pn = *pnp;
+    pn->next = NULL;
+    pn->inode = inode;
+    safe_strncpy(pn->name, name, sizeof(pn->name));
+
+    {
+	int len = (strlen(scon) - sizeof(pn->scon)) + 1;
+	if (len > 0)
+            safe_strncpy(pn->scon, &scon[len + 1], sizeof(pn->scon));
+	else
+            safe_strncpy(pn->scon, scon, sizeof(pn->scon));
+    }
+
+}
+
+static const char *prg_cache_get(unsigned long inode)
+{
+    unsigned hi = PRG_HASHIT(inode);
+    struct prg_node *pn;
+
+    for (pn = prg_hash[hi]; pn; pn = pn->next)
+	if (pn->inode == inode)
+	    return (pn->name);
+    return ("-");
 }
 
-static const char *prg_cache_get(int inode)
+static const char *prg_cache_get_con(unsigned long inode)
 {
-    unsigned hi=PRG_HASHIT(inode);
+    unsigned hi = PRG_HASHIT(inode);
     struct prg_node *pn;
 
-    for (pn=prg_hash[hi];pn;pn=pn->next)
-	if (pn->inode==inode) return(pn->name);
-    return("-");
+    for (pn = prg_hash[hi]; pn; pn = pn->next)
+	if (pn->inode == inode)
+	    return (pn->scon);
+    return ("-");
 }
 
 static void prg_cache_clear(void)
@@ -287,143 +333,164 @@ static void prg_cache_clear(void)
     struct prg_node **pnp,*pn;
 
     if (prg_cache_loaded == 2)
-	for (pnp=prg_hash;pnp<prg_hash+PRG_HASH_SIZE;pnp++)
-	    while ((pn=*pnp)) {
-		*pnp=pn->next;
+	for (pnp = prg_hash; pnp < prg_hash + PRG_HASH_SIZE; pnp++)
+	    while ((pn = *pnp)) {
+		*pnp = pn->next;
 		free(pn);
 	    }
-    prg_cache_loaded=0;
+    prg_cache_loaded = 0;
+}
+
+static void wait_continous(void)
+{
+    fflush(stdout);
+    sleep(1);
 }
 
-static void extract_type_1_socket_inode(const char lname[], long * inode_p) {
+static int extract_type_1_socket_inode(const char lname[], unsigned long * inode_p) {
 
     /* If lname is of the form "socket:[12345]", extract the "12345"
        as *inode_p.  Otherwise, return -1 as *inode_p.
        */
 
-    if (strlen(lname) < PRG_SOCKET_PFXl+3) *inode_p = -1;
-    else if (memcmp(lname, PRG_SOCKET_PFX, PRG_SOCKET_PFXl)) *inode_p = -1;
-    else if (lname[strlen(lname)-1] != ']') *inode_p = -1;
-    else {
+    if (strlen(lname) < PRG_SOCKET_PFXl+3) return(-1);
+
+    if (memcmp(lname, PRG_SOCKET_PFX, PRG_SOCKET_PFXl)) return(-1);
+    if (lname[strlen(lname)-1] != ']') return(-1);
+
+    {
         char inode_str[strlen(lname + 1)];  /* e.g. "12345" */
         const int inode_str_len = strlen(lname) - PRG_SOCKET_PFXl - 1;
         char *serr;
 
         strncpy(inode_str, lname+PRG_SOCKET_PFXl, inode_str_len);
         inode_str[inode_str_len] = '\0';
-        *inode_p = strtol(inode_str,&serr,0);
-        if (!serr || *serr || *inode_p < 0 || *inode_p >= INT_MAX) 
-            *inode_p = -1;
+        *inode_p = strtoul(inode_str, &serr, 0);
+        if (!serr || *serr || *inode_p == ~0)
+            return(-1);
     }
+    return(0);
 }
 
 
 
-static void extract_type_2_socket_inode(const char lname[], long * inode_p) {
+static int extract_type_2_socket_inode(const char lname[], unsigned long * inode_p) {
 
     /* If lname is of the form "[0000]:12345", extract the "12345"
        as *inode_p.  Otherwise, return -1 as *inode_p.
        */
 
-    if (strlen(lname) < PRG_SOCKET_PFX2l+1) *inode_p = -1;
-    else if (memcmp(lname, PRG_SOCKET_PFX2, PRG_SOCKET_PFX2l)) *inode_p = -1;
-    else {
+    if (strlen(lname) < PRG_SOCKET_PFX2l+1) return(-1);
+    if (memcmp(lname, PRG_SOCKET_PFX2, PRG_SOCKET_PFX2l)) return(-1);
+
+    {
         char *serr;
 
-        *inode_p=strtol(lname + PRG_SOCKET_PFX2l,&serr,0);
-        if (!serr || *serr || *inode_p < 0 || *inode_p >= INT_MAX) 
-            *inode_p = -1;
+        *inode_p = strtoul(lname + PRG_SOCKET_PFX2l, &serr, 0);
+        if (!serr || *serr || *inode_p == ~0)
+            return(-1);
     }
+    return(0);
 }
 
 
 
+
 static void prg_cache_load(void)
 {
-    char line[LINE_MAX],eacces=0;
-    int procfdlen,fd,cmdllen,lnamelen;
-    char lname[30],cmdlbuf[512],finbuf[PROGNAME_WIDTH];
-    long inode;
-    const char *cs,*cmdlp;
-    DIR *dirproc=NULL,*dirfd=NULL;
-    struct dirent *direproc,*direfd;
+    char line[LINE_MAX], eacces=0;
+    int procfdlen, fd, cmdllen, lnamelen;
+    char lname[30], cmdlbuf[512], finbuf[PROGNAME_WIDTH];
+    unsigned long inode;
+    const char *cs, *cmdlp;
+    DIR *dirproc = NULL, *dirfd = NULL;
+    struct dirent *direproc, *direfd;
+#if HAVE_SELINUX
+    security_context_t scon = NULL;
+#endif
 
     if (prg_cache_loaded || !flag_prg) return;
-    prg_cache_loaded=1;
-    cmdlbuf[sizeof(cmdlbuf)-1]='\0';
+    prg_cache_loaded = 1;
+    cmdlbuf[sizeof(cmdlbuf) - 1] = '\0';
     if (!(dirproc=opendir(PATH_PROC))) goto fail;
-    while (errno=0,direproc=readdir(dirproc)) {
-#ifdef DIRENT_HAVE_D_TYPE_WORKS
-	if (direproc->d_type!=DT_DIR) continue;
-#endif
-	for (cs=direproc->d_name;*cs;cs++)
-	    if (!isdigit(*cs)) 
+    while (errno = 0, direproc = readdir(dirproc)) {
+	for (cs = direproc->d_name; *cs; cs++)
+	    if (!isdigit(*cs))
 		break;
-	if (*cs) 
+	if (*cs)
 	    continue;
-	procfdlen=snprintf(line,sizeof(line),PATH_PROC_X_FD,direproc->d_name);
-	if (procfdlen<=0 || procfdlen>=sizeof(line)-5) 
+	procfdlen = snprintf(line,sizeof(line),PATH_PROC_X_FD,direproc->d_name);
+	if (procfdlen <= 0 || procfdlen >= sizeof(line) - 5)
 	    continue;
-	errno=0;
-	dirfd=opendir(line);
+	errno = 0;
+	dirfd = opendir(line);
 	if (! dirfd) {
-	    if (errno==EACCES) 
-		eacces=1;
+	    if (errno == EACCES)
+		eacces = 1;
 	    continue;
 	}
 	line[procfdlen] = '/';
 	cmdlp = NULL;
 	while ((direfd = readdir(dirfd))) {
-#ifdef DIRENT_HAVE_D_TYPE_WORKS
-	    if (direfd->d_type!=DT_LNK) 
-		continue;
-#endif
-	    if (procfdlen+1+strlen(direfd->d_name)+1>sizeof(line)) 
+           /* Skip . and .. */
+           if (!isdigit(direfd->d_name[0]))
+               continue;
+	    if (procfdlen + 1 + strlen(direfd->d_name) + 1 > sizeof(line))
 		continue;
 	    memcpy(line + procfdlen - PATH_FD_SUFFl, PATH_FD_SUFF "/",
-		   PATH_FD_SUFFl+1);
-	    strcpy(line + procfdlen + 1, direfd->d_name);
-	    lnamelen=readlink(line,lname,sizeof(lname)-1);
+		   PATH_FD_SUFFl + 1);
+        safe_strncpy(line + procfdlen + 1, direfd->d_name,
+                        sizeof(line) - procfdlen - 1);
+	    lnamelen = readlink(line, lname, sizeof(lname) - 1);
+	    if (lnamelen == -1)
+		    continue;
             lname[lnamelen] = '\0';  /*make it a null-terminated string*/
 
-            extract_type_1_socket_inode(lname, &inode);
-
-            if (inode < 0) extract_type_2_socket_inode(lname, &inode);
-
-            if (inode < 0) continue;
+            if (extract_type_1_socket_inode(lname, &inode) < 0)
+              if (extract_type_2_socket_inode(lname, &inode) < 0)
+                continue;
 
 	    if (!cmdlp) {
-		if (procfdlen - PATH_FD_SUFFl + PATH_CMDLINEl >= 
-		    sizeof(line) - 5) 
+		if (procfdlen - PATH_FD_SUFFl + PATH_CMDLINEl >=
+		    sizeof(line) - 5)
 		    continue;
-		strcpy(line + procfdlen-PATH_FD_SUFFl, PATH_CMDLINE);
+        safe_strncpy(line + procfdlen - PATH_FD_SUFFl, PATH_CMDLINE,
+                        sizeof(line) - procfdlen + PATH_FD_SUFFl);
 		fd = open(line, O_RDONLY);
-		if (fd < 0) 
+		if (fd < 0)
 		    continue;
 		cmdllen = read(fd, cmdlbuf, sizeof(cmdlbuf) - 1);
-		if (close(fd)) 
+		if (close(fd))
 		    continue;
-		if (cmdllen == -1) 
+		if (cmdllen == -1)
 		    continue;
-		if (cmdllen < sizeof(cmdlbuf) - 1) 
+		if (cmdllen < sizeof(cmdlbuf) - 1)
 		    cmdlbuf[cmdllen]='\0';
-		if ((cmdlp = strrchr(cmdlbuf, '/'))) 
+		if (cmdlbuf[0] == '/' && (cmdlp = strrchr(cmdlbuf, '/')))
 		    cmdlp++;
-		else 
+		else
 		    cmdlp = cmdlbuf;
 	    }
 
 	    snprintf(finbuf, sizeof(finbuf), "%s/%s", direproc->d_name, cmdlp);
-	    prg_cache_add(inode, finbuf);
+#if HAVE_SELINUX
+	    if (getpidcon(atoi(direproc->d_name), &scon) == -1) {
+		    scon=xstrdup("-");
+	    }
+	    prg_cache_add(inode, finbuf, scon);
+	    freecon(scon);
+#else
+	    prg_cache_add(inode, finbuf, "-");
+#endif
 	}
-	closedir(dirfd); 
+	closedir(dirfd);
 	dirfd = NULL;
     }
-    if (dirproc) 
+    if (dirproc)
 	closedir(dirproc);
-    if (dirfd) 
+    if (dirfd)
 	closedir(dirfd);
-    if (!eacces) 
+    if (!eacces)
 	return;
     if (prg_cache_loaded == 1) {
     fail:
@@ -450,7 +517,7 @@ static int netrom_info(void)
     char buffer[256], dev[16];
     int st, vs, vr, sendq, recvq, ret;
 
-    f = fopen(_PATH_PROCNET_NR, "r");
+    f = proc_fopen(_PATH_PROCNET_NR);
     if (f == NULL) {
 	if (errno != ENOENT) {
 	    perror(_PATH_PROCNET_NR);
@@ -465,7 +532,8 @@ static int netrom_info(void)
     }
     printf(_("Active NET/ROM sockets\n"));
     printf(_("User       Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-Q\n"));
-    fgets(buffer, 256, f);
+    if (fgets(buffer, 256, f))
+	/* eat line */;
 
     while (fgets(buffer, 256, f)) {
 	buffer[9] = 0;
@@ -527,19 +595,22 @@ static void finish_this_one(int uid, unsigned long inode, const char *timers)
 
     if (flag_exp > 1) {
 	if (!(flag_not & FLAG_NUM_USER) && ((pw = getpwuid(uid)) != NULL))
-	    printf("%-10s ", pw->pw_name);
+	    printf(" %-10s ", pw->pw_name);
 	else
-	    printf("%-10d ", uid);
-	printf("%-10ld ",inode);
+	    printf(" %-10d ", uid);
+	printf("%-10lu",inode);
     }
     if (flag_prg)
-	printf("%-" PROGNAME_WIDTHs "s",prg_cache_get(inode));
+	printf(" %-" PROGNAME_WIDTHs "s",prg_cache_get(inode));
+    if (flag_selinux)
+	printf(" %-" SELINUX_WIDTHs "s",prg_cache_get_con(inode));
+
     if (flag_opt)
-	printf("%s", timers);
+	printf(" %s", timers);
     putchar('\n');
 }
 
-static void igmp_do_one(int lnr, const char *line)
+static void igmp_do_one(int lnr, const char *line,const char *prot)
 {
     char mcast_addr[128];
 #if HAVE_AFINET6
@@ -598,8 +669,8 @@ static void igmp_do_one(int lnr, const char *line)
 		    ((struct sockaddr *) &mcastaddr)->sa_family);
 	    return;
 	}
-	safe_strncpy(mcast_addr, ap->sprint((struct sockaddr *) &mcastaddr, 
-				      flag_not), sizeof(mcast_addr));
+	safe_strncpy(mcast_addr, ap->sprint((struct sockaddr *) &mcastaddr,
+				      flag_not & FLAG_NUM_HOST), sizeof(mcast_addr));
 	printf("%-15s %-6d %s\n", device, refcnt, mcast_addr);
 #endif
     } else {    /* IPV4 */
@@ -630,14 +701,14 @@ static void igmp_do_one(int lnr, const char *line)
 	    fprintf(stderr, _("warning, got bogus igmp line %d.\n"), lnr);
 	    return;
 	}
-	
+
 	if ((ap = get_afntype(((struct sockaddr *) &mcastaddr)->sa_family)) == NULL) {
 	    fprintf(stderr, _("netstat: unsupported address family %d !\n"),
 		    ((struct sockaddr *) &mcastaddr)->sa_family);
 	    return;
 	}
-	safe_strncpy(mcast_addr, ap->sprint((struct sockaddr *) &mcastaddr, 
-				      flag_not), sizeof(mcast_addr));
+	safe_strncpy(mcast_addr, ap->sprint((struct sockaddr *) &mcastaddr,
+				      flag_not & FLAG_NUM_HOST), sizeof(mcast_addr));
 	printf("%-15s %-6d %s\n", device, refcnt, mcast_addr );
 #endif
     }    /* IPV4 */
@@ -646,7 +717,7 @@ static void igmp_do_one(int lnr, const char *line)
 #if HAVE_AFX25
 static int x25_info(void)
 {
-       FILE *f=fopen(_PATH_PROCNET_X25, "r");
+       FILE *f=proc_fopen(_PATH_PROCNET_X25);
        char buffer[256],dev[16];
        int st,vs,vr,sendq,recvq,lci;
        static char *x25_state[5]=
@@ -657,7 +728,7 @@ static int x25_info(void)
                "ESTABLISHED",
                "RECOVERY"
        };
-       if(!(f=fopen(_PATH_PROCNET_X25, "r")))
+       if(!f)
        {
                if (errno != ENOENT) {
                        perror(_PATH_PROCNET_X25);
@@ -673,7 +744,8 @@ static int x25_info(void)
        printf( _("Active X.25 sockets\n"));
        /* IMHO, Vr/Vs is not very usefull --SF */
        printf( _("Dest         Source          Device  LCI  State        Vr/Vs  Send-Q  Recv-Q\n"));
-       fgets(buffer,256,f);
+       if (fgets(buffer,256,f))
+               /* eat line */;
        while(fgets(buffer,256,f))
        {
                buffer[10]=0;
@@ -690,21 +762,206 @@ static int x25_info(void)
                        vr,vs,sendq,recvq);
        }
        fclose(f);
-       return 0;               
+       return 0;
 }
 #endif
 
 static int igmp_info(void)
 {
     INFO_GUTS6(_PATH_PROCNET_IGMP, _PATH_PROCNET_IGMP6, "AF INET (igmp)",
-	       igmp_do_one);
+	       igmp_do_one, "igmp", "igmp6");
+}
+
+static int ip_parse_dots(uint32_t *addr, char const *src) {
+  unsigned  a, b, c, d;
+  unsigned  ret = 4-sscanf(src, "%u.%u.%u.%u", &a, &b, &c, &d);
+  *addr = htonl((a << 24)|(b << 16)|(c << 8)|d);
+  return  ret;
+}
+
+static void print_ip_service(struct sockaddr_in *addr, char const *protname,
+			     char *buf, unsigned size) {
+  struct aftype *ap;
+
+  if(size == 0)  return;
+
+  /* print host */
+  if((ap = get_afntype(addr->sin_family)) == NULL) {
+    fprintf(stderr, _("netstat: unsupported address family %d !\n"),
+	    addr->sin_family);
+    return;
+  }
+  safe_strncpy(buf, ap->sprint((struct sockaddr*)addr, flag_not), size);
+
+  /* print service */
+  if(flag_all || (flag_lst && !addr->sin_port) || (!flag_lst && addr->sin_port)) {
+    char  bfs[32];
+
+    snprintf(bfs, sizeof(bfs), "%s",
+	     get_sname(addr->sin_port, (char*)protname, flag_not & FLAG_NUM_PORT));
+
+    /* check if we must cut on host and/or service name */
+    {
+      unsigned const  bufl = strlen(buf);
+      unsigned const  bfsl = strlen(bfs);
+
+      if(bufl+bfsl+2 > size) {
+	unsigned const  half = (size-2)>>1;
+	if(bufl > half) {
+	  if(bfsl > half) {
+	    buf[size-2-half] = '\0';
+	    bfs[half+1]      = '\0';
+	  }
+	  else  buf[size-2-bfsl] = '\0';
+	}
+	else  bfs[size-2-bufl] = '\0';
+      }
+    }
+    strcat(buf, ":");
+    strcat(buf, bfs);
+  }
+}
+
+/* process single SCTP endpoint */
+static void sctp_do_ept(int lnr, char const *line, const char *prot)
+{
+  struct sockaddr_in  laddr, raddr;
+  unsigned            uid, inode;
+
+  char        l_addr[23], r_addr[23];
+
+  /* fill sockaddr_in structures */
+  {
+    unsigned  lport;
+    unsigned  ate;
+
+    if(lnr == 0)  return;
+    if(sscanf(line, "%*X %*X %*u %*u %*u %u %u %u %n",
+	      &lport, &uid, &inode, &ate) < 3)  goto err;
+
+    /* decode IP address */
+    if(ip_parse_dots(&laddr.sin_addr.s_addr, line+ate))  goto err;
+    raddr.sin_addr.s_addr = htonl(0);
+    laddr.sin_family = raddr.sin_family = AF_INET;
+    laddr.sin_port = htons(lport);
+    raddr.sin_port = htons(0);
+  }
+
+  /* print IP:service to l_addr and r_addr */
+  print_ip_service(&laddr, prot, l_addr, sizeof(l_addr));
+  print_ip_service(&raddr, prot, r_addr, sizeof(r_addr));
+
+  /* Print line */
+  printf("%-4s  %6d %6d %-*s %-*s %-11s",
+	 prot, 0, 0,
+	 (int)netmax(23,strlen(l_addr)), l_addr,
+	 (int)netmax(23,strlen(r_addr)), r_addr,
+	 _(tcp_state[TCP_LISTEN]));
+  finish_this_one(uid, inode, "");
+  return;
+ err:
+  fprintf(stderr, "SCTP error in line: %d\n", lnr);
+}
+
+/* process single SCTP association */
+static void sctp_do_assoc(int lnr, char const *line, const char *prot)
+{
+  struct sockaddr_in  laddr, raddr;
+  unsigned long       rxq, txq;
+  unsigned            uid, inode;
+
+  char        l_addr[23], r_addr[23];
+
+  /* fill sockaddr_in structures */
+  {
+    unsigned    lport, rport;
+    unsigned    ate;
+    char const *addr;
+
+    if(lnr == 0)  return;
+    if(sscanf(line, "%*X %*X %*u %*u %*u %*u %*u %lu %lu %u %u %u %u %n",
+	      &txq, &rxq, &uid, &inode, &lport, &rport, &ate) < 6)  goto err;
+
+    /* decode IP addresses */
+    addr = strchr(line+ate, '*');
+    if(addr == 0)  goto err;
+    if(ip_parse_dots(&laddr.sin_addr.s_addr, ++addr))  goto err;
+    addr = strchr(addr, '*');
+    if(addr == 0)  goto err;
+    if(ip_parse_dots(&raddr.sin_addr.s_addr, ++addr))  goto err;
+
+    /* complete sockaddr_in structures */
+    laddr.sin_family = raddr.sin_family = AF_INET;
+    laddr.sin_port = htons(lport);
+    raddr.sin_port = htons(rport);
+  }
+
+  /* print IP:service to l_addr and r_addr */
+  print_ip_service(&laddr, prot, l_addr, sizeof(l_addr));
+  print_ip_service(&raddr, prot, r_addr, sizeof(r_addr));
+
+  /* Print line */
+  printf("%-4s  %6ld %6ld %-*s %-*s %-11s",
+	 prot, rxq, txq,
+	 (int)netmax(23,strlen(l_addr)), l_addr,
+	 (int)netmax(23,strlen(r_addr)), r_addr,
+	 _(tcp_state[TCP_ESTABLISHED]));
+  finish_this_one(uid, inode, "");
+  return;
+ err:
+  fprintf(stderr, "SCTP error in line: %d\n", lnr);
+}
+
+static int sctp_info_epts(void) {
+  INFO_GUTS6(_PATH_PROCNET_SCTPEPTS, _PATH_PROCNET_SCTP6EPTS, "AF INET (sctp)",
+	     sctp_do_ept, "sctp", "sctp6");
+}
+
+static int sctp_info_assocs(void) {
+  INFO_GUTS6(_PATH_PROCNET_SCTPASSOCS, _PATH_PROCNET_SCTP6ASSOCS, "AF INET (sctp)",
+	     sctp_do_assoc, "sctp", "sctp6");
+}
+
+static int sctp_info(void) {
+  int  res;
+  res = sctp_info_epts();
+  if(res)  return  res;
+  return  sctp_info_assocs();
+}
+
+static void addr_do_one(char *buf, size_t buf_len, size_t short_len, struct aftype *ap,
+#if HAVE_AFINET6
+			struct sockaddr_in6 *addr,
+#else
+			struct sockaddr_in *addr,
+#endif
+			int port, const char *proto
+)
+{
+    const char *sport, *saddr;
+    size_t port_len, addr_len;
+
+    saddr = ap->sprint((struct sockaddr *)addr, flag_not & FLAG_NUM_HOST);
+    sport = get_sname(htons(port), proto, flag_not & FLAG_NUM_PORT);
+    addr_len = strlen(saddr);
+    port_len = strlen(sport);
+    if (!flag_wide && (addr_len + port_len > short_len)) {
+	/* Assume port name is short */
+	port_len = netmin(port_len, short_len - 4);
+	addr_len = short_len - port_len;
+	strncpy(buf, saddr, addr_len);
+	buf[addr_len] = '\0';
+	strcat(buf, ":");
+	strncat(buf, sport, port_len);
+    } else
+	snprintf(buf, buf_len, "%s:%s", saddr, sport);
 }
 
-static void tcp_do_one(int lnr, const char *line)
+static void tcp_do_one(int lnr, const char *line, const char *prot)
 {
     unsigned long rxq, txq, time_len, retr, inode;
     int num, local_port, rem_port, d, state, uid, timer_run, timeout;
-    char rem_addr[128], local_addr[128], timers[64], buffer[1024], more[512];
+    char rem_addr[128], local_addr[128], timers[64];
     struct aftype *ap;
 #if HAVE_AFINET6
     struct sockaddr_in6 localaddr, remaddr;
@@ -719,9 +976,17 @@ static void tcp_do_one(int lnr, const char *line)
 	return;
 
     num = sscanf(line,
-    "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
+    "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %lu %*s\n",
 		 &d, local_addr, &local_port, rem_addr, &rem_port, &state,
-		 &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
+		 &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode);
+
+    if (num < 11) {
+	fprintf(stderr, _("warning, got bogus tcp line.\n"));
+	return;
+    }
+
+    if (!flag_all && ((flag_lst && rem_port) || (!flag_lst && !rem_port)))
+      return;
 
     if (strlen(local_addr) > 8) {
 #if HAVE_AFINET6
@@ -748,45 +1013,16 @@ static void tcp_do_one(int lnr, const char *line)
 	((struct sockaddr *) &remaddr)->sa_family = AF_INET;
     }
 
-    if (num < 11) {
-	fprintf(stderr, _("warning, got bogus tcp line.\n"));
-	return;
-    }
     if ((ap = get_afntype(((struct sockaddr *) &localaddr)->sa_family)) == NULL) {
 	fprintf(stderr, _("netstat: unsupported address family %d !\n"),
 		((struct sockaddr *) &localaddr)->sa_family);
 	return;
     }
-    if (state == TCP_LISTEN) {
-	time_len = 0;
-	retr = 0L;
-	rxq = 0L;
-	txq = 0L;
-    }
-    safe_strncpy(local_addr, ap->sprint((struct sockaddr *) &localaddr, 
-					flag_not), sizeof(local_addr));
-    safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr, flag_not),
-		 sizeof(rem_addr));
-    if (flag_all || (flag_lst && !rem_port) || (!flag_lst && rem_port)) {
-	snprintf(buffer, sizeof(buffer), "%s",
-		 get_sname(htons(local_port), "tcp",
-			   flag_not & FLAG_NUM_PORT));
-
-	if ((strlen(local_addr) + strlen(buffer)) > 22)
-	    local_addr[22 - strlen(buffer)] = '\0';
-
-	strcat(local_addr, ":");
-	strcat(local_addr, buffer);
-	snprintf(buffer, sizeof(buffer), "%s",
-		 get_sname(htons(rem_port), "tcp", flag_not & FLAG_NUM_PORT));
-
-	if ((strlen(rem_addr) + strlen(buffer)) > 22)
-	    rem_addr[22 - strlen(buffer)] = '\0';
-
-	strcat(rem_addr, ":");
-	strcat(rem_addr, buffer);
-	timers[0] = '\0';
 
+	addr_do_one(local_addr, sizeof(local_addr), 22, ap, &localaddr, local_port, "tcp");
+	addr_do_one(rem_addr, sizeof(rem_addr), 22, ap, &remaddr, rem_port, "tcp");
+
+	timers[0] = '\0';
 	if (flag_opt)
 	    switch (timer_run) {
 	    case 0:
@@ -813,23 +1049,23 @@ static void tcp_do_one(int lnr, const char *line)
 			 timer_run, (double) time_len / HZ, retr, timeout);
 		break;
 	    }
-	printf("tcp   %6ld %6ld %-23s %-23s %-12s",
-	       rxq, txq, local_addr, rem_addr, _(tcp_state[state]));
+
+	printf("%-4s  %6ld %6ld %-*s %-*s %-11s",
+	       prot, rxq, txq, (int)netmax(23,strlen(local_addr)), local_addr, (int)netmax(23,strlen(rem_addr)), rem_addr, _(tcp_state[state]));
 
 	finish_this_one(uid,inode,timers);
-    }
 }
 
 static int tcp_info(void)
 {
     INFO_GUTS6(_PATH_PROCNET_TCP, _PATH_PROCNET_TCP6, "AF INET (tcp)",
-	       tcp_do_one);
+	       tcp_do_one, "tcp", "tcp6");
 }
 
-static void udp_do_one(int lnr, const char *line)
+static void udp_do_one(int lnr, const char *line,const char *prot)
 {
-    char buffer[8192], local_addr[64], rem_addr[64];
-    char *udp_state, timers[64], more[512];
+    char local_addr[64], rem_addr[64];
+    char *udp_state, timers[64];
     int num, local_port, rem_port, d, state, timer_run, uid, timeout;
 #if HAVE_AFINET6
     struct sockaddr_in6 localaddr, remaddr;
@@ -845,12 +1081,16 @@ static void udp_do_one(int lnr, const char *line)
     if (lnr == 0)
 	return;
 
-    more[0] = '\0';
     num = sscanf(line,
-		 "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
+		 "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %lu %*s\n",
 		 &d, local_addr, &local_port,
 		 rem_addr, &rem_port, &state,
-	  &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
+	  &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode);
+
+    if (num < 10) {
+	fprintf(stderr, _("warning, got bogus udp line.\n"));
+	return;
+    }
 
     if (strlen(local_addr) > 8) {
 #if HAVE_AFINET6
@@ -877,13 +1117,7 @@ static void udp_do_one(int lnr, const char *line)
     }
 
     retr = 0L;
-    if (!flag_opt)
-	more[0] = '\0';
 
-    if (num < 10) {
-	fprintf(stderr, _("warning, got bogus udp line.\n"));
-	return;
-    }
     if ((ap = get_afntype(((struct sockaddr *) &localaddr)->sa_family)) == NULL) {
 	fprintf(stderr, _("netstat: unsupported address family %d !\n"),
 		((struct sockaddr *) &localaddr)->sa_family);
@@ -917,24 +1151,8 @@ static void udp_do_one(int lnr, const char *line)
 
     if (flag_all || (notnull(remaddr) && !flag_lst) || (!notnull(remaddr) && flag_lst))
     {
-        safe_strncpy(local_addr, ap->sprint((struct sockaddr *) &localaddr, 
-					    flag_not), sizeof(local_addr));
-	snprintf(buffer, sizeof(buffer), "%s",
-		 get_sname(htons(local_port), "udp",
-			   flag_not & FLAG_NUM_PORT));
-	if ((strlen(local_addr) + strlen(buffer)) > 22)
-	    local_addr[22 - strlen(buffer)] = '\0';
-	strcat(local_addr, ":");
-	strcat(local_addr, buffer);
-
-	snprintf(buffer, sizeof(buffer), "%s",
-		 get_sname(htons(rem_port), "udp", flag_not & FLAG_NUM_PORT));
-        safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr, 
-					  flag_not), sizeof(rem_addr));
-	if ((strlen(rem_addr) + strlen(buffer)) > 22)
-	    rem_addr[22 - strlen(buffer)] = '\0';
-	strcat(rem_addr, ":");
-	strcat(rem_addr, buffer);
+	addr_do_one(local_addr, sizeof(local_addr), 22, ap, &localaddr, local_port, "udp");
+	addr_do_one(rem_addr, sizeof(rem_addr), 22, ap, &remaddr, rem_port, "udp");
 
 	timers[0] = '\0';
 	if (flag_opt)
@@ -953,8 +1171,8 @@ static void udp_do_one(int lnr, const char *line)
 			 retr, timeout);
 		break;
 	    }
-	printf("udp   %6ld %6ld %-23s %-23s %-12s",
-	       rxq, txq, local_addr, rem_addr, udp_state);
+	printf("%-5s %6ld %6ld %-23s %-23s %-11s",
+	       prot, rxq, txq, local_addr, rem_addr, udp_state);
 
 	finish_this_one(uid,inode,timers);
     }
@@ -963,13 +1181,19 @@ static void udp_do_one(int lnr, const char *line)
 static int udp_info(void)
 {
     INFO_GUTS6(_PATH_PROCNET_UDP, _PATH_PROCNET_UDP6, "AF INET (udp)",
-	       udp_do_one);
+	       udp_do_one, "udp", "udp6");
 }
 
-static void raw_do_one(int lnr, const char *line)
+static int udplite_info(void)
 {
-    char buffer[8192], local_addr[64], rem_addr[64];
-    char timers[64], more[512];
+    INFO_GUTS6(_PATH_PROCNET_UDPLITE, _PATH_PROCNET_UDPLITE6,
+               "AF INET (udplite)", udp_do_one, "udpl", "udpl6" );
+}
+
+static void raw_do_one(int lnr, const char *line,const char *prot)
+{
+    char local_addr[64], rem_addr[64];
+    char timers[64];
     int num, local_port, rem_port, d, state, timer_run, uid, timeout;
 #if HAVE_AFINET6
     struct sockaddr_in6 localaddr, remaddr;
@@ -985,11 +1209,15 @@ static void raw_do_one(int lnr, const char *line)
     if (lnr == 0)
 	return;
 
-    more[0] = '\0';
     num = sscanf(line,
-		 "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
+		 "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %lu %*s\n",
 		 &d, local_addr, &local_port, rem_addr, &rem_port, &state,
-	  &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
+	  &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode);
+
+    if (num < 10) {
+    	fprintf(stderr, _("warning, got bogus raw line.\n"));
+	return;
+    }
 
     if (strlen(local_addr) > 8) {
 #if HAVE_AFINET6
@@ -1026,34 +1254,10 @@ static void raw_do_one(int lnr, const char *line)
     }
 #endif
 
-    if (!flag_opt)
-	more[0] = '\0';
-
-    if (num < 10) {
-	fprintf(stderr, _("warning, got bogus raw line.\n"));
-	return;
-    }
-
     if (flag_all || (notnull(remaddr) && !flag_lst) || (!notnull(remaddr) && flag_lst))
     {
-	snprintf(buffer, sizeof(buffer), "%s",
-		 get_sname(htons(local_port), "raw",
-			   flag_not & FLAG_NUM_PORT));
-        safe_strncpy(local_addr, ap->sprint((struct sockaddr *) &localaddr, 
-					    flag_not), sizeof(local_addr));
-	if ((strlen(local_addr) + strlen(buffer)) > 22)
-	    local_addr[22 - strlen(buffer)] = '\0';
-	strcat(local_addr, ":");
-	strcat(local_addr, buffer);
-
-	snprintf(buffer, sizeof(buffer), "%s",
-		 get_sname(htons(rem_port), "raw", flag_not & FLAG_NUM_PORT));
-        safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr, 
-					  flag_not), sizeof(rem_addr));
-	if ((strlen(rem_addr) + strlen(buffer)) > 22)
-	    rem_addr[22 - strlen(buffer)] = '\0';
-	strcat(rem_addr, ":");
-	strcat(rem_addr, buffer);
+	addr_do_one(local_addr, sizeof(local_addr), 22, ap, &localaddr, local_port, "raw");
+	addr_do_one(rem_addr, sizeof(rem_addr), 22, ap, &remaddr, rem_port, "raw");
 
 	timers[0] = '\0';
 	if (flag_opt)
@@ -1074,8 +1278,8 @@ static void raw_do_one(int lnr, const char *line)
 			 retr, timeout);
 		break;
 	    }
-	printf("raw   %6ld %6ld %-23s %-23s %-12d",
-	       rxq, txq, local_addr, rem_addr, state);
+	printf("%-4s  %6ld %6ld %-23s %-23s %-11d",
+	       prot, rxq, txq, local_addr, rem_addr, state);
 
 	finish_this_one(uid,inode,timers);
     }
@@ -1084,7 +1288,7 @@ static void raw_do_one(int lnr, const char *line)
 static int raw_info(void)
 {
     INFO_GUTS6(_PATH_PROCNET_RAW, _PATH_PROCNET_RAW6, "AF INET (raw)",
-	       raw_do_one);
+	       raw_do_one, "raw", "raw6");
 }
 
 #endif
@@ -1094,14 +1298,14 @@ static int raw_info(void)
 
 #define HAS_INODE 1
 
-static void unix_do_one(int nr, const char *line)
+static void unix_do_one(int nr, const char *line, const char *prot)
 {
     static int has = 0;
     char path[MAXPATHLEN], ss_flags[32];
     char *ss_proto, *ss_state, *ss_type;
-    int num, state, type, inode;
+    int num, state, type;
     void *d;
-    unsigned long refcnt, proto, flags;
+    unsigned long refcnt, proto, flags, inode;
 
     if (nr == 0) {
 	if (strstr(line, "Inode"))
@@ -1109,14 +1313,14 @@ static void unix_do_one(int nr, const char *line)
 	return;
     }
     path[0] = '\0';
-    num = sscanf(line, "%p: %lX %lX %lX %X %X %d %s",
+    num = sscanf(line, "%p: %lX %lX %lX %X %X %lu %s",
 		 &d, &refcnt, &proto, &flags, &type, &state, &inode, path);
     if (num < 6) {
 	fprintf(stderr, _("warning, got bogus unix line.\n"));
 	return;
     }
     if (!(has & HAS_INODE))
-	snprintf(path,sizeof(path),"%d",inode);
+	snprintf(path,sizeof(path),"%lu",inode);
 
     if (!flag_all) {
     	if ((state == SS_UNCONNECTED) && (flags & SO_ACCEPTCON)) {
@@ -1195,7 +1399,7 @@ static void unix_do_one(int nr, const char *line)
 	ss_state = _("UNKNOWN");
     }
 
-    strcpy(ss_flags, "[ ");
+    safe_strncpy(ss_flags, "[ ", sizeof(ss_flags));
     if (flags & SO_ACCEPTCON)
 	strcat(ss_flags, "ACC ");
     if (flags & SO_WAITDATA)
@@ -1208,12 +1412,15 @@ static void unix_do_one(int nr, const char *line)
     printf("%-5s %-6ld %-11s %-10s %-13s ",
 	   ss_proto, refcnt, ss_flags, ss_type, ss_state);
     if (has & HAS_INODE)
-	printf("%-6d ",inode);
+	printf("%-8lu",inode);
     else
-	printf("-      ");
+	printf("-       ");
     if (flag_prg)
-	printf("%-" PROGNAME_WIDTHs "s",(has & HAS_INODE?prg_cache_get(inode):"-"));
-    puts(path);
+	printf(" %-" PROGNAME_WIDTHs "s",(has & HAS_INODE?prg_cache_get(inode):"-"));
+    if (flag_selinux)
+	printf(" %-" SELINUX_WIDTHs "s",(has & HAS_INODE?prg_cache_get_con(inode):"-"));
+
+    printf(" %s\n", path);
 }
 
 static int unix_info(void)
@@ -1229,12 +1436,13 @@ static int unix_info(void)
 	printf(_("(w/o servers)"));
     }
 
-    printf(_("\nProto RefCnt Flags       Type       State         I-Node"));
+    printf(_("\nProto RefCnt Flags       Type       State         I-Node  "));
     print_progname_banner();
+    print_selinux_banner();
     printf(_(" Path\n"));	/* xxx */
 
     {
-	INFO_GUTS(_PATH_PROCNET_UNIX, "AF UNIX", unix_do_one);
+	INFO_GUTS(_PATH_PROCNET_UNIX, "AF UNIX", unix_do_one, "unix");
     }
 }
 #endif
@@ -1256,7 +1464,7 @@ static int ax25_info(void)
 	N_("ESTABLISHED"),
 	N_("RECOVERY")
     };
-    if (!(f = fopen(_PATH_PROCNET_AX25, "r"))) {
+    if (!(f = proc_fopen(_PATH_PROCNET_AX25))) {
 	if (errno != ENOENT) {
 	    perror(_PATH_PROCNET_AX25);
 	    return (-1);
@@ -1350,18 +1558,37 @@ static int ipx_info(void)
     char sad[50], dad[50];
     struct sockaddr sa;
     unsigned sport = 0, dport = 0;
-
-    if (!(f = fopen(_PATH_PROCNET_IPX, "r"))) {
-	if (errno != ENOENT) {
-	    perror(_PATH_PROCNET_IPX);
-	    return (-1);
-	}
-	if (flag_arg || flag_ver)
-	    ESYSNOT("netstat", "AF IPX");
-	if (flag_arg)
-	    return (1);
-	else
-	    return (0);
+    struct stat s;
+
+    f = proc_fopen(_PATH_PROCNET_IPX_SOCKET1);
+    if (!f) {
+        if (errno != ENOENT) {
+            perror(_PATH_PROCNET_IPX_SOCKET1);
+            return (-1);
+        }
+        f = proc_fopen(_PATH_PROCNET_IPX_SOCKET2);
+
+        /* We need to check for directory */
+        if (f) {
+            if (fstat (fileno(f), &s) == -1 ||
+                !S_ISREG(s.st_mode)) {
+                fclose(f);
+                f=NULL;
+            }
+        }
+
+        if (!f) {
+            if (errno != ENOENT) {
+	        perror(_PATH_PROCNET_IPX_SOCKET2);
+	        return (-1);
+	    }
+	    if (flag_arg || flag_ver)
+	        ESYSNOT("netstat", "AF IPX");
+	    if (flag_arg)
+	        return (1);
+ 	    else
+	        return (0);
+        }
     }
     printf(_("Active IPX sockets\nProto Recv-Q Send-Q Local Address              Foreign Address            State"));	/* xxx */
     if (flag_exp > 1)
@@ -1369,19 +1596,22 @@ static int ipx_info(void)
     printf("\n");
     if ((ap = get_afntype(AF_IPX)) == NULL) {
 	EINTERN("netstat.c", "AF_IPX missing");
+	fclose(f);
 	return (-1);
     }
-    fgets(buf, 255, f);
+    if (fgets(buf, 255, f))
+	/* eat line */;
 
     while (fgets(buf, 255, f) != NULL) {
-	sscanf(buf, "%s %s %lX %lX %d %d",
+	sscanf(buf, "%s %s %lX %lX %u %u",
 	       sad, dad, &txq, &rxq, &state, &uid);
 	if ((st = rindex(sad, ':'))) {
 	    *st++ = '\0';
 	    sscanf(st, "%X", &sport);	/* net byt order */
 	    sport = ntohs(sport);
 	} else {
-	    EINTERN("netstat.c", _PATH_PROCNET_IPX " sport format error");
+	    EINTERN("netstat.c", "ipx socket format error in source port");
+	    fclose(f);
 	    return (-1);
 	}
 	nc = 0;
@@ -1391,7 +1621,8 @@ static int ipx_info(void)
 		sscanf(st, "%X", &dport);	/* net byt order */
 		dport = ntohs(dport);
 	    } else {
-		EINTERN("netstat.c", _PATH_PROCNET_IPX " dport format error");
+		EINTERN("netstat.c", "ipx socket format error in destination port");
+		fclose(f);
 		return (-1);
 	    }
 	} else
@@ -1413,16 +1644,16 @@ static int ipx_info(void)
 
 	/* Fetch and resolve the Source */
 	(void) ap->input(4, sad, &sa);
-	safe_strncpy(buf, ap->sprint(&sa, flag_not), sizeof(buf));
+	safe_strncpy(buf, ap->sprint(&sa, flag_not & FLAG_NUM_HOST), sizeof(buf));
 	snprintf(sad, sizeof(sad), "%s:%04X", buf, sport);
 
 	if (!nc) {
 	    /* Fetch and resolve the Destination */
 	    (void) ap->input(4, dad, &sa);
-	    safe_strncpy(buf, ap->sprint(&sa, flag_not), sizeof(buf));
+	    safe_strncpy(buf, ap->sprint(&sa, flag_not & FLAG_NUM_HOST), sizeof(buf));
 	    snprintf(dad, sizeof(dad), "%s:%04X", buf, dport);
 	} else
-	    strcpy(dad, "-");
+        safe_strncpy(dad, "-", sizeof(dad));
 
 	printf("IPX   %6ld %6ld %-26s %-26s %-5s", txq, rxq, sad, dad, st);
 	if (flag_exp > 1) {
@@ -1438,6 +1669,116 @@ static int ipx_info(void)
 }
 #endif
 
+#if HAVE_AFBLUETOOTH
+const char *bluetooth_state(int state)
+{
+    switch (state) {
+	case BT_CONNECTED:
+	    return _("CONNECTED");
+	case BT_OPEN:
+	    return _("OPEN");
+	case BT_BOUND:
+	    return _("BOUND");
+	case BT_LISTEN:
+	    return _("LISTEN");
+	case BT_CONNECT:
+	    return _("CONNECT");
+	case BT_CONNECT2:
+	    return _("CONNECT2");
+	case BT_CONFIG:
+	    return _("CONFIG");
+	case BT_DISCONN:
+	    return _("DISCONN");
+	case BT_CLOSED:
+	    return _("CLOSED");
+	default:
+	    return _("UNKNOWN");
+    }
+}
+
+static void l2cap_do_one(int nr, const char *line, const char *prot)
+{
+    char daddr[18], saddr[18];
+    unsigned state, psm, dcid, scid, imtu, omtu, sec_level;
+    int num;
+    const char *bt_state, *bt_sec_level;
+
+    num = sscanf(line, "%17s %17s %d %d 0x%04x 0x%04x %d %d %d",
+	daddr, saddr, &state, &psm, &dcid, &scid, &imtu, &omtu, &sec_level);
+
+    if (num < 9) {
+	fprintf(stderr, _("warning, got bogus l2cap line.\n"));
+	return;
+    }
+
+    if (flag_lst && !(state == BT_LISTEN || state == BT_BOUND))
+	return;
+    if (!(flag_all || flag_lst) && (state == BT_LISTEN || state == BT_BOUND))
+	return;
+
+    bt_state = bluetooth_state(state);
+    switch (sec_level) {
+	case BT_SECURITY_SDP:
+	    bt_sec_level = _("SDP");
+	    break;
+	case BT_SECURITY_LOW:
+	    bt_sec_level = _("LOW");
+	    break;
+	case BT_SECURITY_MEDIUM:
+	    bt_sec_level = _("MEDIUM");
+	    break;
+	case BT_SECURITY_HIGH:
+	    bt_sec_level = _("HIGH");
+	    break;
+	default:
+	    bt_sec_level = _("UNKNOWN");
+    }
+
+    printf("l2cap  %-17s %-17s %-9s %7d 0x%04x 0x%04x %7d %7d %-7s\n",
+	(strcmp (daddr, "00:00:00:00:00:00") == 0 ? "*" : daddr),
+	(strcmp (saddr, "00:00:00:00:00:00") == 0 ? "*" : saddr),
+	bt_state, psm, dcid, scid, imtu, omtu, bt_sec_level);
+}
+
+static int l2cap_info(void)
+{
+    printf("%-6s %-17s %-17s %-9s %7s %-6s %-6s %7s %7s %-7s\n",
+	"Proto", "Destination", "Source", "State", "PSM", "DCID", "SCID", "IMTU", "OMTU", "Security");
+    INFO_GUTS(_PATH_SYS_BLUETOOTH_L2CAP, "AF BLUETOOTH", l2cap_do_one, "l2cap");
+}
+
+static void rfcomm_do_one(int nr, const char *line, const char *prot)
+{
+    char daddr[18], saddr[18];
+    unsigned state, channel;
+    int num;
+    const char *bt_state;
+
+    num = sscanf(line, "%17s %17s %d %d", daddr, saddr, &state, &channel);
+    if (num < 4) {
+	fprintf(stderr, _("warning, got bogus rfcomm line.\n"));
+	return;
+    }
+
+    if (flag_lst && !(state == BT_LISTEN || state == BT_BOUND))
+	return;
+    if (!(flag_all || flag_lst) && (state == BT_LISTEN || state == BT_BOUND))
+	return;
+
+    bt_state = bluetooth_state(state);
+    printf("rfcomm %-17s %-17s %-9s %7d\n",
+	(strcmp (daddr, "00:00:00:00:00:00") == 0 ? "*" : daddr),
+	(strcmp (saddr, "00:00:00:00:00:00") == 0 ? "*" : saddr),
+	bt_state, channel);
+}
+
+static int rfcomm_info(void)
+{
+    printf("%-6s %-17s %-17s %-9s %7s\n", "Proto", "Destination", "Source", "State", "Channel");
+    INFO_GUTS(_PATH_SYS_BLUETOOTH_RFCOMM, "AF BLUETOOTH", rfcomm_do_one, "rfcomm");
+}
+#endif
+
 static int iface_info(void)
 {
     if (skfd < 0) {
@@ -1449,7 +1790,7 @@ static int iface_info(void)
     }
     if (flag_exp < 2) {
 	ife_short = 1;
-	printf(_("Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
+	printf(_("Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
     }
 
     if (for_all_interfaces(do_if_print, &flag_all) < 0) {
@@ -1457,7 +1798,7 @@ static int iface_info(void)
 	exit(1);
     }
     if (flag_cnt)
-	free_interface_list();
+	if_cache_free();
     else {
 	close(skfd);
 	skfd = -1;
@@ -1469,16 +1810,16 @@ static int iface_info(void)
 
 static void version(void)
 {
-    printf("%s\n%s\n%s\n%s\n", Release, Version, Signature, Features);
+    printf("%s\n%s\n%s\n", Release, Signature, Features);
     exit(E_VERSION);
 }
 
 
 static void usage(void)
 {
-    fprintf(stderr, _("usage: netstat [-veenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}\n"));
-    fprintf(stderr, _("       netstat [-vnNcaeol] [<Socket> ...]\n"));
-    fprintf(stderr, _("       netstat { [-veenNac] -i | [-cnNe] -M | -s }\n\n"));
+    fprintf(stderr, _("usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}\n"));
+    fprintf(stderr, _("       netstat [-vWnNcaeol] [<Socket> ...]\n"));
+    fprintf(stderr, _("       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }\n\n"));
 
     fprintf(stderr, _("        -r, --route              display routing table\n"));
     fprintf(stderr, _("        -i, --interfaces         display interface table\n"));
@@ -1487,7 +1828,9 @@ static void usage(void)
 #if HAVE_FW_MASQUERADE
     fprintf(stderr, _("        -M, --masquerade         display masqueraded connections\n\n"));
 #endif
+
     fprintf(stderr, _("        -v, --verbose            be verbose\n"));
+    fprintf(stderr, _("        -W, --wide               don't truncate IP addresses\n"));
     fprintf(stderr, _("        -n, --numeric            don't resolve names\n"));
     fprintf(stderr, _("        --numeric-hosts          don't resolve host names\n"));
     fprintf(stderr, _("        --numeric-ports          don't resolve port names\n"));
@@ -1495,15 +1838,19 @@ static void usage(void)
     fprintf(stderr, _("        -N, --symbolic           resolve hardware names\n"));
     fprintf(stderr, _("        -e, --extend             display other/more information\n"));
     fprintf(stderr, _("        -p, --programs           display PID/Program name for sockets\n"));
+    fprintf(stderr, _("        -o, --timers             display timers\n"));
     fprintf(stderr, _("        -c, --continuous         continuous listing\n\n"));
     fprintf(stderr, _("        -l, --listening          display listening server sockets\n"));
-    fprintf(stderr, _("        -a, --all, --listening   display all sockets (default: connected)\n"));
-    fprintf(stderr, _("        -o, --timers             display timers\n"));
+    fprintf(stderr, _("        -a, --all                display all sockets (default: connected)\n"));
     fprintf(stderr, _("        -F, --fib                display Forwarding Information Base (default)\n"));
-    fprintf(stderr, _("        -C, --cache              display routing cache instead of FIB\n\n"));
+    fprintf(stderr, _("        -C, --cache              display routing cache instead of FIB\n"));
+#if HAVE_SELINUX
+    fprintf(stderr, _("        -Z, --context            display SELinux security context for sockets\n"));
+#endif
 
-    fprintf(stderr, _("  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom\n"));
-    fprintf(stderr, _("  <AF>=Use '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
+    fprintf(stderr, _("\n  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}\n"));
+    fprintf(stderr, _("           {-x|--unix} --ax25 --ipx --netrom\n"));
+    fprintf(stderr, _("  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
     fprintf(stderr, _("  List of possible address families (which support routing):\n"));
     print_aflist(1); /* 1 = routeable */
     exit(E_USAGE);
@@ -1514,7 +1861,7 @@ int main
  (int argc, char *argv[]) {
     int i;
     int lop;
-    struct option longopts[] =
+    static struct option longopts[] =
     {
 	AFTRANS_OPTS,
 	{"version", 0, 0, 'V'},
@@ -1526,9 +1873,13 @@ int main
 #endif
 	{"protocol", 1, 0, 'A'},
 	{"tcp", 0, 0, 't'},
+	{"sctp", 0, 0, 'S'},
 	{"udp", 0, 0, 'u'},
+        {"udplite", 0, 0, 'U'},
 	{"raw", 0, 0, 'w'},
 	{"unix", 0, 0, 'x'},
+	{"l2cap", 0, 0, '2'},
+	{"rfcomm", 0, 0, 'f'},
 	{"listening", 0, 0, 'l'},
 	{"all", 0, 0, 'a'},
 	{"timers", 0, 0, 'o'},
@@ -1537,6 +1888,7 @@ int main
 	{"programs", 0, 0, 'p'},
 	{"verbose", 0, 0, 'v'},
 	{"statistics", 0, 0, 's'},
+	{"wide", 0, 0, 'W'},
 	{"numeric", 0, 0, 'n'},
 	{"numeric-hosts", 0, 0, '!'},
 	{"numeric-ports", 0, 0, '@'},
@@ -1545,6 +1897,7 @@ int main
 	{"cache", 0, 0, 'C'},
 	{"fib", 0, 0, 'F'},
 	{"groups", 0, 0, 'g'},
+	{"context", 0, 0, 'Z'},
 	{NULL, 0, 0, 0}
     };
 
@@ -1556,7 +1909,7 @@ int main
     getroute_init();		/* Set up AF routing support */
 
     afname[0] = '\0';
-    while ((i = getopt_long(argc, argv, "MCFA:acdegphinNorstuVv?wxl", longopts, &lop)) != EOF)
+    while ((i = getopt_long(argc, argv, "A:CFMacdeghilnNoprsStuUvVWwx64?Z", longopts, &lop)) != EOF)
 	switch (i) {
 	case -1:
 	    break;
@@ -1600,6 +1953,9 @@ int main
 	case 'i':
 	    flag_int++;
 	    break;
+	case 'W':
+	    flag_wide++;
+	    break;
 	case 'n':
 	    flag_not |= FLAG_NUM;
 	    break;
@@ -1624,6 +1980,14 @@ int main
 	case 'o':
 	    flag_opt++;
 	    break;
+	case '6':
+	    if (aftrans_opt("inet6"))
+		exit(1);
+	    break;
+	case '4':
+	    if (aftrans_opt("inet"))
+		exit(1);
+	    break;
 	case 'V':
 	    version();
 	    /*NOTREACHED */
@@ -1633,21 +1997,45 @@ int main
 	case 'r':
 	    flag_rou++;
 	    break;
-
 	case 't':
 	    flag_tcp++;
 	    break;
-
+	case 'S':
+	    flag_sctp++;
+	    break;
 	case 'u':
 	    flag_udp++;
 	    break;
+        case 'U':
+	    flag_udplite++;
+	    break;
 	case 'w':
 	    flag_raw++;
 	    break;
+        case '2':
+	    flag_l2cap++;
+	    break;
+        case 'f':
+	    flag_rfcomm++;
+	    break;
 	case 'x':
 	    if (aftrans_opt("unix"))
 		exit(1);
 	    break;
+	case 'Z':
+#if HAVE_SELINUX
+	    if (is_selinux_enabled() <= 0) {
+		fprintf(stderr, _("SELinux is not enabled on this machine.\n"));
+		exit(1);
+	    }
+	    flag_prg++;
+	    flag_selinux++;
+#else
+            fprintf(stderr, _("SELinux is not enabled for this application.\n"));
+	    exit(1);
+#endif
+
+	    break;
 	case '?':
 	case 'h':
 	    usage();
@@ -1658,46 +2046,71 @@ int main
     if (flag_int + flag_rou + flag_mas + flag_sta > 1)
 	usage();
 
-    if ((flag_inet || flag_inet6 || flag_sta) && !(flag_tcp || flag_udp || flag_raw))
-	flag_tcp = flag_udp = flag_raw = 1;
+    if ((flag_inet || flag_inet6 || flag_sta) &&
+        !(flag_tcp || flag_sctp || flag_udp || flag_udplite || flag_raw))
+	   flag_tcp = flag_sctp = flag_udp = flag_udplite = flag_raw = 1;
 
-    if ((flag_tcp || flag_udp || flag_raw || flag_igmp) && !(flag_inet || flag_inet6))
+    if ((flag_tcp || flag_sctp || flag_udp || flag_udplite || flag_raw || flag_igmp) &&
+        !(flag_inet || flag_inet6))
         flag_inet = flag_inet6 = 1;
 
-    flag_arg = flag_tcp + flag_udp + flag_raw + flag_unx + flag_ipx
-	+ flag_ax25 + flag_netrom + flag_igmp + flag_x25;
+    if (flag_bluetooth && !(flag_l2cap || flag_rfcomm))
+	   flag_l2cap = flag_rfcomm = 1;
+
+    flag_arg = flag_tcp + flag_sctp + flag_udplite + flag_udp + flag_raw + flag_unx
+        + flag_ipx + flag_ax25 + flag_netrom + flag_igmp + flag_x25 + flag_rose
+	+ flag_l2cap + flag_rfcomm;
 
     if (flag_mas) {
 #if HAVE_FW_MASQUERADE && HAVE_AFINET
 #if MORE_THAN_ONE_MASQ_AF
 	if (!afname[0])
-	    strcpy(afname, DFLT_AF);
+        safe_strncpy(afname, DFLT_AF, sizeof(afname));
 #endif
 	for (;;) {
 	    i = ip_masq_info(flag_not & FLAG_NUM_HOST,
 			     flag_not & FLAG_NUM_PORT, flag_exp);
 	    if (i || !flag_cnt)
 		break;
-	    sleep(1);
+	    wait_continous();
 	}
 #else
-	ENOSUPP("netstat.c", "FW_MASQUERADE");
+	ENOSUPP("netstat", "FW_MASQUERADE");
 	i = -1;
 #endif
 	return (i);
     }
 
     if (flag_sta) {
-        inittab();
-	parsesnmp(flag_raw, flag_tcp, flag_udp);
-	exit(0);
+        if (!afname[0])
+            safe_strncpy(afname, DFLT_AF, sizeof(afname));
+
+        if (!strcmp(afname, "inet")) {
+#if HAVE_AFINET
+            inittab();
+            parsesnmp(flag_raw, flag_tcp, flag_udp);
+#else
+            ENOSUPP("netstat", "AF INET");
+#endif
+        } else if(!strcmp(afname, "inet6")) {
+#if HAVE_AFINET6
+            inittab6();
+            parsesnmp6(flag_raw, flag_tcp, flag_udp);
+#else
+            ENOSUPP("netstat", "AF INET6");
+#endif
+        } else {
+          printf(_("netstat: No statistics support for specified address family: %s\n"), afname);
+          exit(1);
+        }
+        exit(0);
     }
-    
+
     if (flag_rou) {
 	int options = 0;
 
 	if (!afname[0])
-	    strcpy(afname, DFLT_AF);
+        safe_strncpy(afname, DFLT_AF, sizeof(afname));
 
 	if (flag_exp == 2)
 	    flag_exp = 1;
@@ -1712,7 +2125,7 @@ int main
 	    i = route_info(afname, options);
 	    if (i || !flag_cnt)
 		break;
-	    sleep(1);
+            wait_continous();
 	}
 	return (i);
     }
@@ -1721,12 +2134,12 @@ int main
 	    i = iface_info();
 	    if (!flag_cnt || i)
 		break;
-	    sleep(1);
+            wait_continous();
 	}
 	return (i);
     }
     for (;;) {
-	if (!flag_arg || flag_tcp || flag_udp || flag_raw) {
+	if (!flag_arg || flag_tcp || flag_sctp || flag_udp || flag_udplite || flag_raw) {
 #if HAVE_AFINET
 	    prg_cache_load();
 	    printf(_("Active Internet connections "));	/* xxx */
@@ -1743,6 +2156,7 @@ int main
 	    if (flag_exp > 1)
 		printf(_(" User       Inode     "));
 	    print_progname_banner();
+	    print_selinux_banner();
 	    if (flag_opt)
 		printf(_(" Timer"));	/* xxx */
 	    printf("\n");
@@ -1759,11 +2173,25 @@ int main
 	    if (i)
 		return (i);
 	}
+
+	if (!flag_arg || flag_sctp) {
+	    i = sctp_info();
+	    if (i)
+		return (i);
+	}
+
 	if (!flag_arg || flag_udp) {
 	    i = udp_info();
 	    if (i)
 		return (i);
 	}
+
+	if (!flag_arg || flag_udplite) {
+	    i = udplite_info();
+	    if (i)
+		return (i);
+	}
+
 	if (!flag_arg || flag_raw) {
 	    i = raw_info();
 	    if (i)
@@ -1845,9 +2273,55 @@ int main
 	    }
 #endif
 	}
+	if (!flag_arg || flag_rose) {
+#if 0 && HAVE_AFROSE
+          i = rose_info();
+          if (i)
+            return (i);
+#else
+          if (flag_arg) {
+            i = 1;
+            ENOSUPP("netstat", "AF ROSE");
+          }
+#endif
+        }
+
+	if (!flag_arg || flag_l2cap || flag_rfcomm) {
+#if HAVE_AFBLUETOOTH
+	    printf(_("Active Bluetooth connections "));	/* xxx */
+
+	    if (flag_all)
+		printf(_("(servers and established)"));
+	    else {
+	      if (flag_lst)
+		printf(_("(only servers)"));
+	      else
+		printf(_("(w/o servers)"));
+	    }
+	    printf("\n");
+#else
+	    if (flag_arg) {
+		i = 1;
+		ENOSUPP("netstat", "AF BLUETOOTH");
+	    }
+#endif
+	}
+#if HAVE_AFBLUETOOTH
+	if (!flag_arg || flag_l2cap) {
+	    i = l2cap_info();
+	    if (i)
+		return (i);
+	}
+	if (!flag_arg || flag_rfcomm) {
+	    i = rfcomm_info();
+	    if (i)
+		return (i);
+	}
+#endif
+
 	if (!flag_cnt || i)
 	    break;
-	sleep(1);
+        wait_continous();
 	prg_cache_clear();
     }
     return (i);
diff --git a/plipconfig.c b/plipconfig.c
index 1f972a7..86fa890 100644
--- a/plipconfig.c
+++ b/plipconfig.c
@@ -4,7 +4,7 @@
    Copyright (c) 1994 John Paul Morrison (VE7JPM).
 
    version 0.2
-   
+
    Changed by Alan Cox, to reflect the way SIOCDEVPRIVATE is meant to work
    and for the extra parameter added by Niibe.
 
@@ -42,31 +42,27 @@
 #include "intl.h"
 #include "net-support.h"
 #include "version.h"
+#include "util.h"
 
-int opt_a = 0;
-int opt_i = 0;
-int opt_v = 0;
 int skfd = -1;
 
 struct ifreq ifr;
 struct plipconf *plip;
 
-char *Release = RELEASE,
-     *Version = "plipconfig 0.2",
-     *Signature = "John Paul Morrison, Alan Cox et al.";
+static char *Release = RELEASE, *Signature = "John Paul Morrison, Alan Cox et al.";
 
 static void version(void)
 {
-    printf("%s\n%s\n%s\n", Release, Version, Signature);
+    printf("%s\n%s\n", Release, Signature);
     exit(E_VERSION);
 }
 
 void usage(void)
 {
-    fprintf(stderr, _("Usage: plipconfig [-a] [-i] [-v] interface\n"));
-    fprintf(stderr, _("                  [nibble NN] [trigger NN]\n"));
+    fprintf(stderr, _("Usage: plipconfig interface [nibble NN] [trigger NN]\n"));
     fprintf(stderr, _("       plipconfig -V | --version\n"));
-    exit(-1);
+    fprintf(stderr, _("       plipconfig -h | --help\n"));
+    exit(E_USAGE);
 }
 
 void print_plip(void)
@@ -93,12 +89,10 @@ int main(int argc, char **argv)
     argc--;
     argv++;
     while (argv[0] && *argv[0] == '-') {
-	if (!strcmp(*argv, "-a"))
-	    opt_a = 1;
-	if (!strcmp(*argv, "-v"))
-	    opt_v = 1;
 	if (!strcmp(*argv, "-V") || !strcmp(*argv, "--version"))
 	    version();
+	else
+            usage();
 	argv++;
 	argc--;
     }
@@ -107,7 +101,7 @@ int main(int argc, char **argv)
 	usage();
 
     spp = argv;
-    strncpy(ifr.ifr_name, *spp++, IFNAMSIZ);
+    safe_strncpy(ifr.ifr_name, *spp++, IFNAMSIZ);
     plip=(struct plipconf *)&ifr.ifr_data;
 
     plip->pcmd = PLIP_GET_TIMEOUT;	/* get current settings for device */
diff --git a/po/Makefile b/po/Makefile
index 0fdf82d..c7f27fb 100644
--- a/po/Makefile
+++ b/po/Makefile
@@ -3,16 +3,24 @@ INSTALL_PROGRAM= ${INSTALL}
 INSTALL_DATA= ${INSTALL} -m 644
 INSTALLNLSDIR=${BASEDIR}/usr/share/locale
 
-TUPDATE = tupdate
+TUPDATE = msgmerge
 
 NLSPACKAGE = net-tools
 
 -include ../config.make
+ALL_POS = $(wildcard *.po)
+ALL_LANGS = $(ALL_POS:%.po=%)
+ALL_CATALOGS = $(ALL_LANGS:%=%.mo)
 ifeq ($(I18N),1)
-CATALOGS = de.mo fr.mo pt_BR.mo et_EE.mo cs.mo
+ifeq ($(LINGUAS),)
+LANGS = $(ALL_LANGS)
 else
-CATALOGS =
+LANGS = $(filter $(LINGUAS),$(ALL_LANGS))
 endif
+else
+LANGS =
+endif
+CATALOGS = $(LANGS:%=%.mo)
 
 POTFILES=../arp.c ../hostname.c ../ifconfig.c ../netstat.c ../rarp.c \
 	../route.c ../plipconfig.c ../iptunnel.c ../statistics.c \
@@ -44,12 +52,12 @@ $(NLSPACKAGE).pot: $(POTFILES)
 
 update-po: Makefile
 	$(MAKE) $(NLSPACKAGE).pot
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-		lang=`echo $$cat | sed 's/.mo//'`; \
+	langs='$(ALL_LANGS)'; \
+	for lang in $$langs; do \
+		cat=$$lang.mo; \
 		mv $$lang.po $$lang.old.po; \
 		echo "$$lang:"; \
-		if $(TUPDATE) $(NLSPACKAGE).pot $$lang.old.po > $$lang.po; then \
+		if $(TUPDATE) $$lang.old.po $(NLSPACKAGE).pot > $$lang.po; then \
 		rm -f $$lang.old.po; \
 	else \
 	 	echo "tupdate for $$cat failed!"; \
@@ -61,18 +69,19 @@ update-po: Makefile
 clean:
 	rm -f *mo
 
+dist: $(ALL_CATALOGS)
+
 distclean: clean
 	rm -f .depend Makefile
 
 depend:
 
 install: $(CATALOGS)
-	catalogs='$(CATALOGS)'; \
-	for n in $$catalogs; do \
-	    l=`basename $$n .mo`; \
+	langs='$(LANGS)'; \
+	for l in $$langs; do \
 	    $(INSTALL) -m 755 -d $(INSTALLNLSDIR)/$$l; \
 	    $(INSTALL) -m 755 -d $(INSTALLNLSDIR)/$$l/LC_MESSAGES; \
-	    $(INSTALL) -m 644 $$n $(INSTALLNLSDIR)/$$l/LC_MESSAGES/net-tools.mo; \
+	    $(INSTALL) -m 644 $$l.mo $(INSTALLNLSDIR)/$$l/LC_MESSAGES/net-tools.mo; \
 	done
 
 %.mo: %.po
diff --git a/po/cs.po b/po/cs.po
index b4b66a1..c1d6a8a 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,359 +1,385 @@
 # Czech translation of net-tools
 # Copyright (C) 1999 Free Software Foundation, Inc.
-# Jiøí Pavlovský <pavlovsk@ffcuni.cz>, 1999.
+# JiÅ™Ã­ PavlovskÃ½ <pavlovsk@ffcuni.cz>, 1999.
+# Petr Pisar <petr.pisar@atlas.cz>, 2009.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: net-tools-1.51\n"
-"POT-Creation-Date: 2000-02-14 02:31+0100\n"
-"PO-Revision-Date: 1999-08-29 23:20+0200\n"
-"Last-Translator: Jiøí Pavlovský <pavlovsk@ff.cuni.cz>\n"
-"Language-Team: Czech <cs@li.org>\n"
+"Project-Id-Version: net-tools cvs-20090825\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-25 18:34+0200\n"
+"PO-Revision-Date: 2009-08-26 22:18+0200\n"
+"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../arp.c:110 ../arp.c:269
+#: ../arp.c:112 ../arp.c:279
+#, c-format
 msgid "arp: need host name\n"
-msgstr "arp: je tøeba jméno poèítaèe\n"
+msgstr "arp: je tÅ™eba jmÃ©no poÄÃ­taÄe\n"
 
-#: ../arp.c:207 ../arp.c:221
+#: ../arp.c:215 ../arp.c:230
 #, c-format
 msgid "No ARP entry for %s\n"
-msgstr "Pro %s neexistuje ARP polo¾ka\n"
+msgstr "Pro %s neexistuje ARP poloÅ¾ka\n"
 
-#: ../arp.c:239
+#: ../arp.c:248
 #, c-format
 msgid "arp: cant get HW-Address for `%s': %s.\n"
 msgstr "arp: HW adresu `%s' nelze zjistit: %s\n"
 
-#: ../arp.c:243
+#: ../arp.c:252
+#, c-format
 msgid "arp: protocol type mismatch.\n"
-msgstr "arp: chybnì zadaný typ protokolu\n"
+msgstr "arp: chybnÄ› zadanÃ½ typ protokolu\n"
 
-#: ../arp.c:252
+#: ../arp.c:261
 #, c-format
 msgid "arp: device `%s' has HW address %s `%s'.\n"
-msgstr "arp: zaøízení `%s' má Hw adresu %s `%s'.\n"
+msgstr "arp: zaÅ™Ã­zenÃ­ `%s' mÃ¡ Hw adresu %s `%s'.\n"
 
-#: ../arp.c:282
+#: ../arp.c:293
+#, c-format
 msgid "arp: need hardware address\n"
-msgstr "arp: je tøeba hardwarová adresa\n"
+msgstr "arp: je tÅ™eba hardwarovÃ¡ adresa\n"
 
-#: ../arp.c:290
+#: ../arp.c:301
+#, c-format
 msgid "arp: invalid hardware address\n"
-msgstr "arp: nesprávná hardwarová adresa\n"
+msgstr "arp: nesprÃ¡vnÃ¡ hardwarovÃ¡ adresa\n"
 
-#: ../arp.c:387
+#: ../arp.c:398
 #, c-format
 msgid "arp: cannot open etherfile %s !\n"
-msgstr "arp: databázi ethernetových adres %s nelze otevøít!\n"
+msgstr "arp: databÃ¡zi ethernetovÃ½ch adres %s nelze otevÅ™Ã­t!\n"
 
-#: ../arp.c:403
+#: ../arp.c:414
 #, c-format
 msgid "arp: format error on line %u of etherfile %s !\n"
-msgstr "arp: syntaktická chyba na øádku %u databáze ethernetových adres %s!\n"
+msgstr "arp: syntaktickÃ¡ chyba na Å™Ã¡dku %u databÃ¡ze ethernetovÃ½ch adres %s!\n"
 
-#: ../arp.c:416
+#: ../arp.c:427
 #, c-format
 msgid "arp: cannot set entry on line %u of etherfile %s !\n"
 msgstr ""
-"arp: polo¾ku na øádku %u databáze ethernetových adres %s nelze nastavit!\n"
+"arp: poloÅ¾ku na Å™Ã¡dku %u databÃ¡ze ethernetovÃ½ch adres %s nelze nastavit!\n"
+
+#: ../arp.c:448
+#, c-format
+msgid ""
+"Address                  HWtype  HWaddress           Flags Mask            "
+"Iface\n"
+msgstr ""
+"Adresa                   HWtyp   HWadresa            PÅ™Ã­z. Maska           "
+"Rozhr\n"
 
-#: ../arp.c:437
-msgid "Address\t\t\tHWtype\tHWaddress\t    Flags Mask\t\t  Iface\n"
-msgstr "Adresa\t\t\t HWtyp\t HWadresa\t     Pøíz  Maska\t\t   Rozhraní\n"
+#: ../arp.c:476
+msgid "<from_interface>"
+msgstr "<z_rozhranÃ­>"
 
-#: ../arp.c:467
+#: ../arp.c:478
 msgid "(incomplete)"
-msgstr "(nekompletní)"
+msgstr "(nekompletnÃ­)"
 
-#: ../arp.c:484
+#: ../arp.c:495
 #, c-format
 msgid "%s (%s) at "
 msgstr "%s (%s) na "
 
-#: ../arp.c:490
+#: ../arp.c:501
+#, c-format
 msgid "<incomplete> "
-msgstr "<nekompletní>"
+msgstr "<nekompletnÃ­>"
 
-#: ../arp.c:496
+#: ../arp.c:507
 #, c-format
 msgid "netmask %s "
-msgstr "sí»ová maska %s "
+msgstr "sÃ­Å¥ovÃ¡ maska %s "
 
-#: ../arp.c:513
+#: ../arp.c:524
 #, c-format
 msgid "on %s\n"
 msgstr "na %s\n"
 
-#: ../arp.c:592
+#: ../arp.c:605
 #, c-format
 msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
-msgstr "Polo¾ky: %d\tVynecháno: %d\tNalezeno: %d\n"
+msgstr "PoloÅ¾ky: %d\tVynechÃ¡no: %d\tNalezeno: %d\n"
 
-#: ../arp.c:596
+#: ../arp.c:609
 #, c-format
 msgid "%s (%s) -- no entry\n"
-msgstr "%s (%s) -- ¾ádná polo¾ka\n"
+msgstr "%s (%s) -- Å¾Ã¡dnÃ¡ poloÅ¾ka\n"
 
-#: ../arp.c:598
+#: ../arp.c:611
 #, c-format
 msgid "arp: in %d entries no match found.\n"
-msgstr "arp: ¾ádná z polo¾ek (%d) nevyhovuje.\n"
+msgstr "arp: Å¾Ã¡dnÃ¡ z poloÅ¾ek (%d) nevyhovuje.\n"
 
-#: ../arp.c:613
+#: ../arp.c:626
+#, c-format
 msgid ""
 "Usage:\n"
 "  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>]             <-Display ARP "
 "cache\n"
 msgstr ""
-"Pou¾ití:\n"
-"  arp [-vn]  [<HW>] [-i <if> [-a] [<poèítaè>]             <-Zobrazí ARP "
+"PouÅ¾itÃ­:\n"
+"  arp [-vn]  [<HW>] [-i <rozhranÃ­>] [-a] [<poÄÃ­taÄ>]        <-ZobrazÃ­ ARP "
 "cache\n"
 
-#: ../arp.c:614
+#: ../arp.c:627
+#, c-format
 msgid ""
-"  arp [-v]          [-i <if>] -d  <hostname> [pub][nopub]    <-Delete ARP "
+"  arp [-v]          [-i <if>] -d  <host> [pub]               <-Delete ARP "
 "entry\n"
 msgstr ""
-"  arp [-v]          [-i <if>] -d <poèítaè> [pub][nopub]   <-Sma¾e polo¾ku "
+"  arp [-v]          [-i <rozhranÃ­>] -d <poÄÃ­taÄ> [pub]      <-SmaÅ¾e poloÅ¾ku "
 "ARP\n"
 
-#: ../arp.c:615
-#, fuzzy
+#: ../arp.c:628
+#, c-format
 msgid ""
-"  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]              <-Add entry from "
+"  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]            <-Add entry from "
 "file\n"
 msgstr ""
-"  arp [-vnD] [<HW>] [-i <if>] -f <soubor>                 <-Pøidá polo¾ku "
-"ze\n"
-"                                                          souboru\n"
+"  arp [-vnD] [<HW>] [-i <rozhranÃ­>] -f [<soubor>]     <-PÅ™idÃ¡ poloÅ¾ku ze "
+"souboru\n"
 
-#: ../arp.c:616
+#: ../arp.c:629
+#, c-format
 msgid ""
-"  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [temp][nopub] <-Add "
+"  arp [-v]   [<HW>] [-i <if>] -s  <host> <hwaddr> [temp]            <-Add "
 "entry\n"
 msgstr ""
-"  arp [-v]   [<HW> [-i <if> -s   <poèítaè> <hwadr> [temp][nopub] <-Pøidá "
-"polo¾ku\n"
-
-#: ../arp.c:617
-msgid ""
-"  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [netmask <nm>] pub  "
-"<-''-\n"
-msgstr ""
-"  arp [-v]   [<HW>] [-i <if>] -s <soubor> <hwadr> [sí»mask <èís>]  <-''-\n"
+"  arp [-v]   [<HW>] [-i <rozhranÃ­>] -s <poÄÃ­taÄ> <hwadr> [temp]  <-PÅ™idÃ¡ "
+"poloÅ¾ku\n"
 
-#: ../arp.c:618
+#: ../arp.c:630
+#, c-format
 msgid ""
-"  arp [-v]   [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub      "
+"  arp [-v]   [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub          "
 "<-''-\n"
 "\n"
 msgstr ""
-"  arp [-v]   [<HW> [-i <if> -Ds  <poèítaè> <if> [sí»mask <èís>] pub      "
-"<-''-\n"
+"  arp [-v]   [<HW>] [-i <rozhranÃ­>] -Ds <poÄÃ­taÄ> <rozhranÃ­> [sÃ­Å¥mask <ÄÃ­s>] "
+"pub\n"
+"                                                                 <-TotÃ©Å¾\n"
 
-#: ../arp.c:620
+#: ../arp.c:632
+#, c-format
 msgid ""
 "        -a                       display (all) hosts in alternative (BSD) "
 "style\n"
 msgstr ""
-"        -a                       zobrazí jmna v¹ech poèítaèù alternativním\n"
-"                                 (BSD) zpùsobem\n"
+"        -a                       zobrazÃ­ jmÃ©na vÅ¡ech poÄÃ­taÄÅ¯ alternativnÃ­m\n"
+"                                 (BSD) zpÅ¯sobem\n"
 
-#: ../arp.c:621
+#: ../arp.c:633
+#, c-format
 msgid "        -s, --set                set a new ARP entry\n"
-msgstr "        -s, --set                nastaví novou ARP polo¾ku\n"
+msgstr "        -s, --set                nastavÃ­ novou ARP poloÅ¾ku\n"
 
-#: ../arp.c:622
+#: ../arp.c:634
+#, c-format
 msgid "        -d, --delete             delete a specified entry\n"
-msgstr "        -d, --delete             sma¾e zadanou ARP polo¾ku\n"
+msgstr "        -d, --delete             smaÅ¾e zadanou ARP poloÅ¾ku\n"
 
-#: ../arp.c:623 ../netstat.c:1436 ../route.c:85
+#: ../arp.c:635 ../netstat.c:1520 ../route.c:86
+#, c-format
 msgid "        -v, --verbose            be verbose\n"
 msgstr ""
-"        -v, --verbose            bude vypisovat podrobné zprávy\n"
-"                                 o èinnosti\n"
+"        -v, --verbose            bude vypisovat podrobnÃ© zprÃ¡vy oÂ Äinnosti\n"
 
-#: ../arp.c:624 ../netstat.c:1437 ../route.c:86
-msgid "        -n, --numeric            dont resolve names\n"
-msgstr ""
-"        -n, --numeric            nebude pøevádìt èíselné adresy\n"
-"                                 na kanonická jména\n"
+#: ../arp.c:636 ../netstat.c:1522 ../route.c:87
+#, c-format
+msgid "        -n, --numeric            don't resolve names\n"
+msgstr "        -n, --numeric            nebude pÅ™evÃ¡dÄ›t jmÃ©na\n"
 
-#: ../arp.c:625
+#: ../arp.c:637
+#, c-format
 msgid ""
 "        -i, --device             specify network interface (e.g. eth0)\n"
-msgstr "        -i, --device             zadává sí»ové rozhraní (napø. eth0)\n"
+msgstr "        -i, --device             zadÃ¡vÃ¡ sÃ­Å¥ovÃ© rozhranÃ­ (napÅ™. eth0)\n"
 
-#: ../arp.c:626
+#: ../arp.c:638
+#, c-format
 msgid "        -D, --use-device         read <hwaddr> from given device\n"
-msgstr "        -D, --use-device         ète <hwadr> ze zadaného zaøízení\n"
+msgstr "        -D, --use-device         Äte <hwadr> ze zadanÃ©ho zaÅ™Ã­zenÃ­\n"
 
-#: ../arp.c:627
-#, fuzzy
+#: ../arp.c:639
+#, c-format
 msgid "        -A, -p, --protocol       specify protocol family\n"
-msgstr "         -r, --route              vypí¹e smìrovací tabulku\n"
+msgstr "        -A, -p, --protocol       urÄuje rodinu protokolÅ¯\n"
 
-#: ../arp.c:628
-#, fuzzy
+#: ../arp.c:640
+#, c-format
 msgid ""
-"        -f, --file               read new entries from file or from "
-"/etc/ethers\n"
+"        -f, --file               read new entries from file or from /etc/"
+"ethers\n"
 "\n"
 msgstr ""
-"        -f, --file               ète nové polo¾ky ze souboru\n"
-"\n"
+"        -f, --file               Äte novÃ© poloÅ¾ky ze souboru nebo zÂ /etc/"
+"ethers\n"
 
-#: ../arp.c:630 ../rarp.c:181
+#: ../arp.c:642 ../rarp.c:183
 #, c-format
 msgid "  <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
 msgstr ""
-"  <HW>=Pou¾ijte '-H <hw> pro zadání hardwarového typu adresy.\n"
-"  Implicitnì: %s\n"
+"  <HW>=PouÅ¾ijte '-H <hw> pro zadÃ¡nÃ­ hardwarovÃ©ho typu adresy.\n"
+"  ImplicitnÄ›: %s\n"
 
-#: ../arp.c:631 ../rarp.c:182
+#: ../arp.c:643 ../rarp.c:184
+#, c-format
 msgid "  List of possible hardware types (which support ARP):\n"
-msgstr "  Seznam mo¾ných hardwarových typù (podporujících ARP):\n"
+msgstr "  Seznam moÅ¾nÃ½ch hardwarovÃ½ch typÅ¯ (podporujÃ­cÃ­ch ARP):\n"
 
-#: ../arp.c:664
+#: ../arp.c:677 ../arp.c:762
 #, c-format
 msgid "%s: hardware type not supported!\n"
-msgstr "hardwarový typ %s není podporován!\n"
+msgstr "hardwarovÃ½ typ %s nenÃ­ podporovÃ¡n!\n"
 
-#: ../arp.c:668
+#: ../arp.c:681
 #, c-format
 msgid "%s: address family not supported!\n"
-msgstr "tøída adres %s není podporována!\n"
+msgstr "tÅ™Ã­da adres %s nenÃ­ podporovÃ¡na!\n"
 
-#: ../arp.c:703
+#: ../arp.c:716
+#, c-format
 msgid "arp: -N not yet supported.\n"
-msgstr "arp: pøepínaè -N není zatím podporován\n"
+msgstr "arp: pÅ™epÃ­naÄ -N nenÃ­ zatÃ­m podporovÃ¡n\n"
 
-#: ../arp.c:713
+#: ../arp.c:726
 #, c-format
 msgid "arp: %s: unknown address family.\n"
-msgstr "arp: neznámá tøída adres %s.\n"
+msgstr "arp: neznÃ¡mÃ¡ tÅ™Ã­da adres %s.\n"
 
-#: ../arp.c:722
+#: ../arp.c:735
 #, c-format
 msgid "arp: %s: unknown hardware type.\n"
-msgstr "arp: neznámý hardwarový typ %s.\n"
+msgstr "arp: neznÃ¡mÃ½ hardwarovÃ½ typ %s.\n"
 
-#: ../arp.c:741
+#: ../arp.c:754
 #, c-format
 msgid "arp: %s: kernel only supports 'inet'.\n"
-msgstr "arp: %s: jádro podporuje pouze 'inet'.\n"
+msgstr "arp: %s: jÃ¡dro podporuje pouze 'inet'.\n"
 
-#: ../arp.c:746
+#: ../arp.c:767
 #, c-format
 msgid "arp: %s: hardware type without ARP support.\n"
-msgstr "arp: hardwarový typ %s nepodporuje ARP.\n"
+msgstr "arp: hardwarovÃ½ typ %s nepodporuje ARP.\n"
 
-#: ../hostname.c:69
+#: ../hostname.c:71
 #, c-format
 msgid "Setting nodename to `%s'\n"
-msgstr "Nastavuji jméno uzlu na `%s'\n"
+msgstr "Nastavuji jmÃ©no uzlu na `%s'\n"
 
-#: ../hostname.c:74
+#: ../hostname.c:76
 #, c-format
 msgid "%s: you must be root to change the node name\n"
-msgstr "%s: jméno uzlu mù¾e zmìnit pouze superu¾ivatel\n"
+msgstr "%s: jmÃ©no uzlu mÅ¯Å¾e zmÄ›nit pouze superuÅ¾ivatel\n"
 
-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
+#: ../hostname.c:79 ../hostname.c:100 ../hostname.c:118
 #, c-format
 msgid "%s: name too long\n"
-msgstr "jméno %s je pøíli¹ dlouhé\n"
+msgstr "jmÃ©no %s je pÅ™Ã­liÅ¡ dlouhÃ©\n"
 
-#: ../hostname.c:89
+#: ../hostname.c:92
 #, c-format
 msgid "Setting hostname to `%s'\n"
-msgstr "Nastavuji jméno poèítaèe na `%s'\n"
+msgstr "Nastavuji jmÃ©no poÄÃ­taÄe na `%s'\n"
 
-#: ../hostname.c:94
+#: ../hostname.c:97
 #, c-format
 msgid "%s: you must be root to change the host name\n"
-msgstr "%s: jméno poèítaèe mù¾e zmìnit pouze superu¾ivatel\n"
+msgstr "%s: jmÃ©no poÄÃ­taÄe mÅ¯Å¾e zmÄ›nit pouze superuÅ¾ivatel\n"
 
-#: ../hostname.c:108
+#: ../hostname.c:110
 #, c-format
 msgid "Setting domainname to `%s'\n"
-msgstr "Nastavuji jméno domény na `%s'\n"
+msgstr "Nastavuji jmÃ©no domÃ©ny na `%s'\n"
 
-#: ../hostname.c:113
+#: ../hostname.c:115
 #, c-format
 msgid "%s: you must be root to change the domain name\n"
-msgstr "%s: jméno domény mù¾e zmìnit pouze superu¾ivatel\n"
+msgstr "%s: jmÃ©no domÃ©ny mÅ¯Å¾e zmÄ›nit pouze superuÅ¾ivatel\n"
 
-#: ../hostname.c:131
+#: ../hostname.c:132
 #, c-format
 msgid "Resolving `%s' ...\n"
-msgstr "Vyhledávám `%s' ...\n"
+msgstr "VyhledÃ¡vÃ¡m `%s' ...\n"
 
-#: ../hostname.c:137
+#: ../hostname.c:138
 #, c-format
 msgid "Result: h_name=`%s'\n"
-msgstr "Výsledek: h_name=`%s'\n"
+msgstr "VÃ½sledek: h_name=`%s'\n"
 
-#: ../hostname.c:142
+#: ../hostname.c:143
 #, c-format
 msgid "Result: h_aliases=`%s'\n"
-msgstr "Výsledek: h_aliases=`%s'\n"
+msgstr "VÃ½sledek: h_aliases=`%s'\n"
 
-#: ../hostname.c:147
+#: ../hostname.c:148
 #, c-format
 msgid "Result: h_addr_list=`%s'\n"
-msgstr "Výsledek: h_addr_list=`%s'\n"
+msgstr "VÃ½sledek: h_addr_list=`%s'\n"
 
 #: ../hostname.c:209
 #, c-format
 msgid "%s: can't open `%s'\n"
-msgstr "%s: `%s' nelze otevøít\n"
+msgstr "%s: `%s' nelze otevÅ™Ã­t\n"
 
 #: ../hostname.c:223
+#, c-format
 msgid "Usage: hostname [-v] {hostname|-F file}      set hostname (from file)\n"
 msgstr ""
-"Pou¾ití:\n"
-"    hostname [-v] {jméno|-F soubor}       nastaví jméno poèítaèe (ze "
+"PouÅ¾itÃ­:\n"
+"    hostname [-v] {jmÃ©no|-F soubor}       nastavÃ­ jmÃ©no poÄÃ­taÄe (ze "
 "souboru)\n"
 
 #: ../hostname.c:224
+#, c-format
 msgid ""
 "       domainname [-v] {nisdomain|-F file}   set NIS domainname (from file)\n"
 msgstr ""
-"    domainname [-v] {jméno|-F soubor}     nastaví jméno NIS domény (ze\n"
+"    domainname [-v] {jmÃ©no|-F soubor}     nastavÃ­ jmÃ©no NIS domÃ©ny (ze\n"
 "                                          souboru)\n"
 
 #: ../hostname.c:226
+#, c-format
 msgid ""
 "       nodename [-v] {nodename|-F file}      set DECnet node name (from "
 "file)\n"
 msgstr ""
-"    nodename [-v] {jméno|-F soubor}       nastaví jméno DECnet uzlu (ze\n"
+"    nodename [-v] {jmÃ©no|-F soubor}       nastavÃ­ jmÃ©no DECnet uzlu (ze\n"
 "                                          souboru)\n"
 
 #: ../hostname.c:228
+#, c-format
 msgid "       hostname [-v] [-d|-f|-s|-a|-i|-y|-n]  display formatted name\n"
-msgstr "    hostname [-v] [-d|-f|-s|-a|-i|-y|-n]  vypí¹e formátované jméno\n"
+msgstr "    hostname [-v] [-d|-f|-s|-a|-i|-y|-n]  vypÃ­Å¡e formÃ¡tovanÃ© jmÃ©no\n"
 
 #: ../hostname.c:229
+#, c-format
 msgid ""
 "       hostname [-v]                         display hostname\n"
 "\n"
 msgstr ""
-"    hostname [-v]                         vypí¹e jméno poèítaèe\n"
+"    hostname [-v]                         vypÃ­Å¡e jmÃ©no poÄÃ­taÄe\n"
 "\n"
 
 #: ../hostname.c:230
+#, c-format
 msgid ""
 "       hostname -V|--version|-h|--help       print info and exit\n"
 "\n"
 msgstr ""
-"    hostname -V|--version|-h|--help       vypí¹e informace a skonèí\n"
+"    hostname -V|--version|-h|--help       vypÃ­Å¡e informace a skonÄÃ­\n"
 "\n"
 
 #: ../hostname.c:231
+#, c-format
 msgid ""
 "    dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
 "\n"
@@ -362,42 +388,51 @@ msgstr ""
 "\n"
 
 #: ../hostname.c:232
+#, c-format
 msgid "    -s, --short           short host name\n"
-msgstr "    -s, --short           krátké jméno poèítaèe\n"
+msgstr "    -s, --short           krÃ¡tkÃ© jmÃ©no poÄÃ­taÄe\n"
 
 #: ../hostname.c:233
+#, c-format
 msgid "    -a, --alias           alias names\n"
-msgstr "    -a, --alias           pøezdívky\n"
+msgstr "    -a, --alias           pÅ™ezdÃ­vky\n"
 
 #: ../hostname.c:234
+#, c-format
 msgid "    -i, --ip-address      addresses for the hostname\n"
-msgstr "    -i, --ip-address      adresy odpovídající jménu poèítaèe\n"
+msgstr "    -i, --ip-address      adresy odpovÃ­dajÃ­cÃ­ jmÃ©nu poÄÃ­taÄe\n"
 
 #: ../hostname.c:235
+#, c-format
 msgid "    -f, --fqdn, --long    long host name (FQDN)\n"
-msgstr "    -f, --fqdn, --long    dlouhé jméno poèítaèe (kanonické)\n"
+msgstr "    -f, --fqdn, --long    dlouhÃ© jmÃ©no poÄÃ­taÄe (kanonickÃ©)\n"
 
 #: ../hostname.c:236
+#, c-format
 msgid "    -d, --domain          DNS domain name\n"
-msgstr "    -d, --domain          jméno DNS domény\n"
+msgstr "    -d, --domain          jmÃ©no DNS domÃ©ny\n"
 
 #: ../hostname.c:237
+#, c-format
 msgid "    -y, --yp, --nis       NIS/YP domainname\n"
-msgstr "    -y, --yp, --nis       jméno NIS/YP domény\n"
+msgstr "    -y, --yp, --nis       jmÃ©no NIS/YP domÃ©ny\n"
 
 #: ../hostname.c:239
+#, c-format
 msgid "    -n, --node            DECnet node name\n"
-msgstr "    -n, --node            jméno DECnet uzlu\n"
+msgstr "    -n, --node            jmÃ©no DECnet uzlu\n"
 
 #: ../hostname.c:241
+#, c-format
 msgid ""
 "    -F, --file            read hostname or NIS domainname from given file\n"
 "\n"
 msgstr ""
-"    -F, --file            ète jméno poèítaèe èi nis domény ze souboru\n"
+"    -F, --file            Äte jmÃ©no poÄÃ­taÄe Äi nis domÃ©ny ze souboru\n"
 "\n"
 
 #: ../hostname.c:243
+#, c-format
 msgid ""
 "   This command can read or set the hostname or the NIS domainname. You can\n"
 "   also read the DNS domain or the FQDN (fully qualified domain name).\n"
@@ -405,931 +440,929 @@ msgid ""
 "   FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
 "   part of the FQDN) in the /etc/hosts file.\n"
 msgstr ""
+"   Tento pÅ™Ã­kaz mÅ¯Å¾e pÅ™eÄÃ­st nebo nastavit nÃ¡zev stroje nebo domÃ©novÃ© jmÃ©no\n"
+"   NIS. NaÄÃ­st lze rovnÄ›Å¾ DNSâ€¯domÃ©nu nebo FQDN (plnÄ› kvalifikovanÃ© domÃ©novÃ©\n"
+"   jmÃ©no). Pokud pro vyhledÃ¡vÃ¡nÃ­ strojÅ¯ nepouÅ¾Ã­vÃ¡te bind nebo NIS, mÅ¯Å¾ete\n"
+"   zmÄ›nit FQDN (Fully Qualified Domain Name) a domÃ©novÃ© jmÃ©no DNS (coÅ¾ je\n"
+"   ÄÃ¡st FQDN) vÂ souboru /etc/hosts.\n"
 
-#: ../hostname.c:338
+#: ../hostname.c:340
 #, c-format
 msgid "%s: You can't change the DNS domain name with this command\n"
-msgstr "%s: Tímto pøíkazem nelze DNS jméno domény zmìnit\n"
+msgstr "%s: TÃ­mto pÅ™Ã­kazem nelze DNS jmÃ©no domÃ©ny zmÄ›nit\n"
 
-#: ../hostname.c:339
+#: ../hostname.c:341
+#, c-format
 msgid ""
 "\n"
 "Unless you are using bind or NIS for host lookups you can change the DNS\n"
 msgstr ""
 "\n"
-"Pokud nepou¾íváte bind èi NIS pro vyhledávání jmen poèítaèù, pak mù¾ete "
-"zmìnit\n"
+"Pokud nepouÅ¾Ã­vÃ¡te bind Äi NIS pro vyhledÃ¡vÃ¡nÃ­ jmen poÄÃ­taÄÅ¯, pak mÅ¯Å¾ete "
+"zmÄ›nit\n"
 
-#: ../hostname.c:340
+#: ../hostname.c:342
+#, c-format
 msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
 msgstr ""
-"DNS jméno domény (je souèástí kanonického jména poèítaèe) v souboru\n"
+"DNS jmÃ©no domÃ©ny (je souÄÃ¡stÃ­ kanonickÃ©ho jmÃ©na poÄÃ­taÄe) v souboru\n"
 "/etc/hosts\n"
 
-#: ../hostname.c:357
+#: ../hostname.c:359
 #, c-format
 msgid "gethostname()=`%s'\n"
 msgstr "gethostname()=`%s'\n"
 
-#: ../hostname.c:374
+#: ../hostname.c:376
 #, c-format
 msgid "getdomainname()=`%s'\n"
 msgstr "getdomainname()=`%s'\n"
 
-#: ../hostname.c:389
+#: ../hostname.c:391
 #, c-format
 msgid "getnodename()=`%s'\n"
 msgstr "getnodename()=`%s'\n"
 
-#: ../ifconfig.c:159
-#, c-format
-msgid "%-9.9s Link encap:%s  "
-msgstr "%-9.9s Zapouzdøení:%s  "
-
-#: ../ifconfig.c:164
+#: ../ifconfig.c:107 ../netstat.c:1482
 #, c-format
-msgid "HWaddr %s  "
-msgstr "HWadr %s  "
+msgid ""
+"Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR "
+"Flg\n"
+msgstr ""
+"Rozhr   MTU Met  PÅ˜-OK PÅ˜-CHYB PÅ˜-ZAH PÅ˜-PÅ˜T   OD-OK OD-CHYB OD-ZAH OD-PÅ˜T "
+"PÅ™Ã­zn\n"
 
-#: ../ifconfig.c:167
+#: ../ifconfig.c:132 ../ifconfig.c:164
 #, c-format
-msgid "Media:%s"
-msgstr "Médium:%s"
+msgid "%s: ERROR while getting interface flags: %s\n"
+msgstr "%s: CHYBA pÅ™i zÃ­skÃ¡vÃ¡nÃ­ pÅ™Ã­znakÅ¯ rozhranÃ­: %s\n"
 
-#: ../ifconfig.c:169
-msgid "(auto)"
-msgstr "(auto)"
-
-#: ../ifconfig.c:176
+#: ../ifconfig.c:156 ../ifconfig.c:188 ../ifconfig.c:794 ../ifconfig.c:887
+#: ../ifconfig.c:1000
 #, c-format
-msgid "          %s addr:%s "
-msgstr "          %s adr:%s "
+msgid "No support for INET on this system.\n"
+msgstr "Tento systÃ©m nepodporuje INET.\n"
 
-#: ../ifconfig.c:179
+#: ../ifconfig.c:196
 #, c-format
-msgid " P-t-P:%s "
-msgstr " P-t-P:%s "
+msgid "%s: ERROR while testing interface flags: %s\n"
+msgstr "%s: CHYBA pÅ™i zkouÅ¡enÃ­ pÅ™Ã­znakÅ¯ rozhranÃ­: %s\n"
 
-# V ostatních katalozích se pøekládá Broadcast -> v¹esmìrové vysílání.
-# Tudi¾ bcast -> V¹esmìr :)
-#: ../ifconfig.c:182
+#: ../ifconfig.c:205
 #, c-format
-msgid " Bcast:%s "
-msgstr " V¹esmìr:%s "
+msgid ""
+"Usage:\n"
+"  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
+msgstr ""
+"PouÅ¾itÃ­:\n"
+"  ifconfig [-a] [-v] [-s] <rozhranÃ­> [[<AF>] <adresa>]\n"
 
-#: ../ifconfig.c:184
+#: ../ifconfig.c:207
 #, c-format
-msgid " Mask:%s\n"
-msgstr "Maska:%s\n"
+msgid "  [add <address>[/<prefixlen>]]\n"
+msgstr "  [add <adresa>[/<dÃ©lka prefixu>]]\n"
 
-#: ../ifconfig.c:201
+#: ../ifconfig.c:208
 #, c-format
-msgid "          inet6 addr: %s/%d"
-msgstr "          inet6-adr: %s/%d"
-
-#: ../ifconfig.c:203
-msgid " Scope:"
-msgstr " Rozsah:"
-
-#: ../ifconfig.c:206
-msgid "Global"
-msgstr "Globál"
+msgid "  [del <address>[/<prefixlen>]]\n"
+msgstr "  [del <adresa>[/<dÃ©lka prefixu>]]\n"
 
 #: ../ifconfig.c:209
-msgid "Link"
-msgstr "Linka"
-
-#: ../ifconfig.c:212
-msgid "Site"
-msgstr "Stanovi¹tì"
-
-#: ../ifconfig.c:215
-msgid "Compat"
-msgstr "Kompatibilita"
-
-#: ../ifconfig.c:218
-msgid "Host"
-msgstr "Poèítaè"
-
-#: ../ifconfig.c:221
-msgid "Unknown"
-msgstr "Neznám."
-
-#: ../ifconfig.c:236
-#, c-format
-msgid "          IPX/Ethernet II addr:%s\n"
-msgstr "          IPX/Ethernet II adr: %s\n"
-
-#: ../ifconfig.c:239
 #, c-format
-msgid "          IPX/Ethernet SNAP addr:%s\n"
-msgstr "          IPX/Ethernet SNAP adr:%s\n"
-
-#: ../ifconfig.c:242
-#, c-format
-msgid "          IPX/Ethernet 802.2 addr:%s\n"
-msgstr "          IPX/Ethernet 802.2 adr:%s\n"
+msgid "  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]\n"
+msgstr "  [[-]broadcast [<adresa>]]  [[-]pointopoint [<adresa>]]\n"
 
-#: ../ifconfig.c:245
+#: ../ifconfig.c:210
 #, c-format
-msgid "          IPX/Ethernet 802.3 addr:%s\n"
-msgstr "          IPX/Ethernet 802.3 adr:%s\n"
+msgid "  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]\n"
+msgstr "  [netmask <adresa>]  [dstaddr <adresa>]  [tunnel <adresa>]\n"
 
-#: ../ifconfig.c:255
+#: ../ifconfig.c:213
 #, c-format
-msgid "          EtherTalk Phase 2 addr:%s\n"
-msgstr "          EtherTalk Phase 2 adr:%s\n"
+msgid "  [outfill <NN>] [keepalive <NN>]\n"
+msgstr "  [outfill <NN>] [keepalive <NN>]\n"
 
-#: ../ifconfig.c:264
+#: ../ifconfig.c:215
 #, c-format
-msgid "          econet addr:%s\n"
-msgstr "          econet adr:%s\n"
-
-# Hic sunt leones ...
-#: ../ifconfig.c:270
-msgid "[NO FLAGS] "
-msgstr "[®ÁDNÉ PØÍZNAKY]"
-
-#: ../ifconfig.c:272
-msgid "UP "
-msgstr "AKTIVOVÁNO "
-
-#: ../ifconfig.c:274
-msgid "BROADCAST "
-msgstr "V©ESMÌROVÉ_VYSÍLÁNÍ "
-
-#: ../ifconfig.c:276
-msgid "DEBUG "
-msgstr "DEBUG "
-
-#: ../ifconfig.c:278
-msgid "LOOPBACK "
-msgstr "SMYÈKA "
-
-#: ../ifconfig.c:280
-msgid "POINTOPOINT "
-msgstr "POINTOPOINT "
-
-# ??
-#: ../ifconfig.c:282
-msgid "NOTRAILERS "
-msgstr "NOTRAILERS "
-
-#: ../ifconfig.c:284
-msgid "RUNNING "
-msgstr "BÌ®Í "
-
-#: ../ifconfig.c:286
-msgid "NOARP "
-msgstr "NEARP "
-
-#: ../ifconfig.c:288
-msgid "PROMISC "
-msgstr "PROMISK "
-
-#: ../ifconfig.c:290
-msgid "ALLMULTI "
-msgstr "ALLMULTI "
-
-#: ../ifconfig.c:292
-msgid "SLAVE "
-msgstr "SLAVE "
-
-#: ../ifconfig.c:294
-msgid "MASTER "
-msgstr "MASTER "
-
-#: ../ifconfig.c:296
-msgid "MULTICAST "
-msgstr "MULTICAST "
-
-#: ../ifconfig.c:299
-msgid "DYNAMIC "
-msgstr "DYNAMIC "
+msgid "  [hw <HW> <address>]  [metric <NN>]  [mtu <NN>]\n"
+msgstr "  [hw <HW> <adresa>]  [metric <NN>]  [mtu <NN>]\n"
 
-#: ../ifconfig.c:302
+#: ../ifconfig.c:216
 #, c-format
-msgid " MTU:%d  Metric:%d"
-msgstr " MTU:%d  Metrika:%d"
+msgid "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
+msgstr "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
 
-#: ../ifconfig.c:306
+#: ../ifconfig.c:217
 #, c-format
-msgid "  Outfill:%d  Keepalive:%d"
-msgstr "  Outfill:%d  Keepalive:%d"
+msgid "  [multicast]  [[-]promisc]\n"
+msgstr "  [multicast]  [[-]promisc]\n"
 
-#: ../ifconfig.c:320
+#: ../ifconfig.c:218
 #, c-format
-msgid "RX packets:%lu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
-msgstr "pøijmutých paketù:%lu chyb:%lu zahozeno:%lu pøeteèení:%lu rámcù:%lu\n"
+msgid "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]\n"
+msgstr "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <typ>]\n"
 
-#: ../ifconfig.c:325
+#: ../ifconfig.c:220
 #, c-format
-msgid "             compressed:%lu\n"
-msgstr "             komprimováno:%lu\n"
+msgid "  [txqueuelen <NN>]\n"
+msgstr "  [txqueuelen dÃ©lka]\n"
 
-# carrier?
-#: ../ifconfig.c:329
+#: ../ifconfig.c:223
 #, c-format
-msgid "TX packets:%lu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
-msgstr "odeslaných paketù:%lu chyb:%lu zahozeno:%lu pøeteèení:%lu pøenos:%lu\n"
+msgid "  [[-]dynamic]\n"
+msgstr "  [[-]dynamic]\n"
 
-#: ../ifconfig.c:333
+#: ../ifconfig.c:225
 #, c-format
-msgid "          collisions:%lu "
-msgstr "          kolizí:%lu "
+msgid ""
+"  [up|down] ...\n"
+"\n"
+msgstr ""
+"  [up|down] ...\n"
+"\n"
 
-#: ../ifconfig.c:335
+#: ../ifconfig.c:227
 #, c-format
-msgid "compressed:%lu "
-msgstr "komprimováno:%lu "
+msgid "  <HW>=Hardware Type.\n"
+msgstr "   <HW> = HardwarovÃ½ Typ.\n"
 
-#: ../ifconfig.c:337
+#: ../ifconfig.c:228
 #, c-format
-msgid "txqueuelen:%d "
-msgstr "délka odchozí fronty:%d "
+msgid "  List of possible hardware types:\n"
+msgstr "  Seznam moÅ¾nÃ½ch hardwarovÃ½ch typÅ¯:\n"
 
-#: ../ifconfig.c:345
+#. 1 = ARPable
+#: ../ifconfig.c:230
 #, c-format
-msgid "Interrupt:%d "
-msgstr "Pøeru¹ení:%d "
+msgid "  <AF>=Address family. Default: %s\n"
+msgstr "  <AF> = TÅ™Ã­da adres. ImplicitnÃ­: %s\n"
 
-#. Only print devices using it for
-#. I/O maps
-#: ../ifconfig.c:348
+#: ../ifconfig.c:231
 #, c-format
-msgid "Base address:0x%x "
-msgstr "Vstupnì/Výstupní port:0x%x "
+msgid "  List of possible address families:\n"
+msgstr "  Seznam moÅ¾nÃ½ch tÅ™Ã­d adres:\n"
 
-#: ../ifconfig.c:350
+#: ../ifconfig.c:307
 #, c-format
-msgid "Memory:%lx-%lx "
-msgstr "Pamì»:%lx-%lx "
+msgid "ifconfig: option `%s' not recognised.\n"
+msgstr "ifconfig: pÅ™epÃ­naÄ â€ž%sâ€œ nebyl rozpoznÃ¡n.\n"
 
-#: ../ifconfig.c:353
+#: ../ifconfig.c:309 ../ifconfig.c:990
 #, c-format
-msgid "DMA chan:%x "
-msgstr "Kanál DMA:%x "
+msgid "ifconfig: `--help' gives usage information.\n"
+msgstr "ifconfig: nÃ¡vod na pouÅ¾itÃ­ lze zÃ­skat pomocÃ­ â€ž--helpâ€œ\n"
 
-#: ../ifconfig.c:384 ../ifconfig.c:405
+#: ../ifconfig.c:384
 #, c-format
-msgid "%s: unknown interface: %s\n"
-msgstr "%s: rozhraní %s není známo\n"
+msgid "Unknown media type.\n"
+msgstr "NeznÃ¡mÃ½ typ mÃ©dia.\n"
 
 #: ../ifconfig.c:421
+#, c-format
 msgid ""
-"Usage:\n"
-"  ifconfig [-a] [-i] [-v] <interface> [[<AF>] <address>]\n"
+"Warning: Interface %s still in promisc mode... maybe other application is "
+"running?\n"
 msgstr ""
-"Pou¾ití:\n"
-"  ifconfig [-a] [-i] [-v] <rozhraní> [[<AF>] <adresa>]\n"
-
-#: ../ifconfig.c:425
-msgid "  [add <address>[/<prefixlen>]]\n"
-msgstr "  [add <adresa>[/<délka prefixu>]]\n"
-
-#: ../ifconfig.c:427
-msgid "  [del <address>[/<prefixlen>]]\n"
-msgstr "  [del <adresa>[/<délka prefixu>]]\n"
-
-#: ../ifconfig.c:432
-msgid "  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]\n"
-msgstr "  [[-]broadcast [<adresa>]]  [[-]pointopoint [<adresa>]]\n"
+"Pozor: RozhranÃ­ %s je stÃ¡le vÂ promiskuitnÃ­m reÅ¾imu. NebÄ›Å¾Ã­ jinÃ¡ aplikace?\n"
 
 #: ../ifconfig.c:433
-msgid "  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]\n"
-msgstr "  [netmask <adresa>]  [dstaddr <adresa>]  [tunnel <adresa>]\n"
-
-#: ../ifconfig.c:436
-msgid "  [outfill <NN>] [keepalive <NN>]\n"
-msgstr "  [outfill <NN>] [keepalive <NN>]\n"
+#, c-format
+msgid "Warning: Interface %s still in MULTICAST mode.\n"
+msgstr "Pozor: RozhranÃ­ %s je stÃ¡le vÂ reÅ¾imu MULTICAST.\n"
 
-#: ../ifconfig.c:438
-msgid "  [hw <HW> <address>]  [metric <NN>]  [mtu <NN>]\n"
-msgstr "  [hw <HW> <adresa>]  [metric <NN>]  [mtu <NN>]\n"
+#: ../ifconfig.c:445
+#, c-format
+msgid "Warning: Interface %s still in ALLMULTI mode.\n"
+msgstr "Pozor: RozhranÃ­ %s je stÃ¡le vÂ reÅ¾imu ALLMULTI.\n"
 
-#: ../ifconfig.c:439
-msgid "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
-msgstr "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
+#: ../ifconfig.c:469
+#, c-format
+msgid "Warning: Interface %s still in DYNAMIC mode.\n"
+msgstr "Pozor: RozhranÃ­ %s je stÃ¡le vÂ reÅ¾imu DYNAMIC.\n"
 
-#: ../ifconfig.c:440
-msgid "  [multicast]  [[-]promisc]\n"
-msgstr "  [multicast]  [[-]promisc]\n"
+#: ../ifconfig.c:527
+#, c-format
+msgid "Warning: Interface %s still in BROADCAST mode.\n"
+msgstr "Pozor: RozhranÃ­ %s je stÃ¡le vÂ reÅ¾imu VÅ ESMÄšR.\n"
 
-#: ../ifconfig.c:441
-msgid "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]\n"
-msgstr "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <typ>]\n"
+#: ../ifconfig.c:538
+#, c-format
+msgid "ifconfig: Error resolving '%s' for broadcast\n"
+msgstr "ifconfig: Chyba pÅ™i pÅ™eklÃ¡dÃ¡nÃ­ â€ž%sâ€œ pro vÅ¡esmÄ›r\n"
 
-#: ../ifconfig.c:443
-msgid "  [txqueuelen <NN>]\n"
-msgstr "  [txqueuelen délka]\n"
+#: ../ifconfig.c:563
+#, c-format
+msgid "ifconfig: Error resolving '%s' for dstaddr\n"
+msgstr "ifconfig: Chyba pÅ™i pÅ™eklÃ¡dÃ¡nÃ­ â€ž%sâ€œ pro adresu cÃ­le\n"
 
-#: ../ifconfig.c:446
-msgid "  [[-]dynamic]\n"
-msgstr "  [[-]dynamic]\n"
+#: ../ifconfig.c:586
+#, c-format
+msgid "ifconfig: Error resolving '%s' for netmask\n"
+msgstr "ifconfig: Chyba pÅ™i pÅ™eklÃ¡dÃ¡nÃ­ â€ž%sâ€œ pro masku sÃ­tÄ›\n"
 
-#: ../ifconfig.c:448
-msgid ""
-"  [up|down] ...\n"
-"\n"
-msgstr ""
-"  [up|down] ...\n"
-"\n"
+#: ../ifconfig.c:665
+#, c-format
+msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
+msgstr "Pozor: RozhranÃ­ %s je stÃ¡le vÂ DVOUBODOVÃ‰M reÅ¾imu.\n"
 
-#: ../ifconfig.c:450
-msgid "  <HW>=Hardware Type.\n"
-msgstr "   <HW>=Hardwarový Typ.\n"
+#: ../ifconfig.c:676
+#, c-format
+msgid "ifconfig: Error resolving '%s' for pointopoint\n"
+msgstr "ifconfig: Chyba pÅ™i pÅ™eklÃ¡dÃ¡nÃ­ â€ž%sâ€œ pro dvoubodovÃ© nastavenÃ­\n"
 
-#: ../ifconfig.c:451
-msgid "  List of possible hardware types:\n"
-msgstr "  Seznam mo¾ných hardwarových typù:\n"
+#: ../ifconfig.c:700
+#, c-format
+msgid "hw address type `%s' has no handler to set address. failed.\n"
+msgstr ""
+"Pro typ hardwarovÃ© adresy â€ž%sâ€œ neexistuje obsluha na nastavovÃ¡nÃ­ adresy.\n"
+"Operace selhala.\n"
 
-#. 1 = ARPable
-#: ../ifconfig.c:453
+#: ../ifconfig.c:709
 #, c-format
-msgid "  <AF>=Address family. Default: %s\n"
-msgstr "   <AF>=tøída adres. Implicitní: %s\n"
+msgid "%s: invalid %s address.\n"
+msgstr "%s: adresa %s je nesprÃ¡vnÃ¡.\n"
 
-#: ../ifconfig.c:454
-msgid "  List of possible address families:\n"
-msgstr "  Seznam mo¾ných tøíd adres:\n"
+#: ../ifconfig.c:749
+#, c-format
+msgid "ifconfig: Error resolving '%s' for add\n"
+msgstr "ifconfig: Chyba pÅ™i pÅ™eklÃ¡dÃ¡nÃ­ â€ž%sâ€œ pro adresu\n"
 
-#: ../ifconfig.c:593
-msgid "Unknown media type.\n"
-msgstr "Neznámý typ média.\n"
+#: ../ifconfig.c:760 ../ifconfig.c:850 ../ifconfig.c:938
+#, c-format
+msgid "No support for INET6 on this system.\n"
+msgstr "Tento systÃ©m nepodporuje INET6.\n"
 
-#: ../ifconfig.c:881
+#: ../ifconfig.c:803 ../ifconfig.c:896
 #, c-format
-msgid "%s: invalid %s address.\n"
-msgstr "%s: adresa %s je nesprávná.\n"
+msgid "Interface %s not initialized\n"
+msgstr "RozhranÃ­ %s nenÃ­ inicializovÃ¡no\n"
 
-#: ../ifconfig.c:920 ../ifconfig.c:963 ../ifconfig.c:1011
-msgid "No support for INET6 on this system.\n"
-msgstr "Tento systém nepodporuje INET6.\n"
+#: ../ifconfig.c:815 ../ifconfig.c:907
+#, c-format
+msgid "Bad address.\n"
+msgstr "ChybnÃ¡ adresa.\n"
 
-#: ../ifconfig.c:983
+#: ../ifconfig.c:910
+#, c-format
 msgid "Address deletion not supported on this system.\n"
-msgstr "Tento systém nepodporuje mazání adres.\n"
+msgstr "Tento systÃ©m nepodporuje mazÃ¡nÃ­ adres.\n"
 
-#: ../ifconfig.c:1066
-msgid "No support for INET on this system.\n"
-msgstr "Tento systém nepodporuje INET.\n"
+#: ../ifconfig.c:982
+#, c-format
+msgid "ifconfig: Cannot set address for this protocol family.\n"
+msgstr "ifconfig: Pro tuto rodinu protokolÅ¯ nelze nastavit adresu.\n"
+
+#: ../ifconfig.c:989
+#, c-format
+msgid "ifconfig: error resolving '%s' to set address for af=%s\n"
+msgstr "ifconfig: chyba pÅ™i pÅ™eklÃ¡dÃ¡nÃ­ â€ž%sâ€œ za ÃºÄelem nastavenÃ­ adresy AF=%s\n"
 
-#: ../ifconfig.c:1076
+#: ../ifconfig.c:1010
+#, c-format
 msgid "No support for ECONET on this system.\n"
-msgstr "Tento systém nepodporuje ECONET.\n"
+msgstr "Tento systÃ©m nepodporuje ECONET.\n"
 
-#: ../ifconfig.c:1084
+#: ../ifconfig.c:1018
 #, c-format
 msgid "Don't know how to set addresses for family %d.\n"
-msgstr "Nevím, jak nastavit adresu tøídy %d.\n"
+msgstr "NevÃ­m, jak nastavit adresu tÅ™Ã­dy %d.\n"
+
+#: ../ifconfig.c:1053
+#, c-format
+msgid "WARNING: at least one error occured. (%d)\n"
+msgstr "POZOR: Vyskytla se alespoÅˆ jedna chyba. (%d)\n"
 
-#: ../netstat.c:383
+#: ../netstat.c:434
 #, c-format
 msgid ""
 "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
 msgstr ""
-"(Pro \"-p\" nelze získat ¾ádné informace: geteuid()=%d, ale je tøeba, aby "
+"(Pro \"-p\" nelze zÃ­skat Å¾Ã¡dnÃ© informace: geteuid()=%d, ale je tÅ™eba, aby "
 "jste\n"
-"byl superu¾ivatelem)\n"
+"byl superuÅ¾ivatelem)\n"
 
-#: ../netstat.c:387
+#: ../netstat.c:438
+#, c-format
 msgid ""
 "(Not all processes could be identified, non-owned process info\n"
 " will not be shown, you would have to be root to see it all.)\n"
 msgstr ""
-"(V¹echny procesy nemohly být identifikovány. Budou vypsaány informace\n"
-"pouze o procesech, jich¾ jste vlastníkem. Aby jste mohl vidìt v¹e, musel\n"
-"byste být superu¾ivatelem.)\n"
+"(VÅ¡echny procesy nemohly bÃ½t identifikovÃ¡ny. Budou vypsÃ¡ny informace\n"
+"pouze o procesech, jichÅ¾ jste vlastnÃ­kem. Aby jste mohl vidÄ›t vÅ¡e, musel\n"
+"byste bÃ½t superuÅ¾ivatelem.)\n"
 
-#: ../netstat.c:394 ../netstat.c:1089 ../netstat.c:1166
+#: ../netstat.c:445 ../netstat.c:1186 ../netstat.c:1264
 msgid "LISTENING"
-msgstr "NASLOUCHÁ"
+msgstr "NASLOUCHÃ"
 
-#: ../netstat.c:395
+#: ../netstat.c:446
 msgid "CONN SENT"
-msgstr "CONN ODESLÁN"
+msgstr "CONN ODESLÃN"
 
-#: ../netstat.c:396 ../netstat.c:1168
+#: ../netstat.c:447 ../netstat.c:1266
 msgid "DISC SENT"
-msgstr "DISC ODESLÁN"
+msgstr "DISC ODESLÃN"
 
-#: ../netstat.c:397 ../netstat.c:464 ../netstat.c:809 ../netstat.c:1169
+#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:898 ../netstat.c:1267
 msgid "ESTABLISHED"
 msgstr "SPOJENO"
 
-#: ../netstat.c:419
+#: ../netstat.c:470
+#, c-format
 msgid "Active NET/ROM sockets\n"
-msgstr "Aktivní NET/ROM sokety\n"
+msgstr "AktivnÃ­ NET/ROM sokety\n"
 
-#: ../netstat.c:420
+#: ../netstat.c:471
+#, c-format
 msgid ""
-"User       Dest       Source     Device  State        Vr/Vs    Send-Q  "
-"Recv-Q\n"
+"User       Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-"
+"Q\n"
 msgstr ""
-"U¾ivatel   Cíl        Zdroj      Zaøízení Stav        Vr/Vs    Odch-F "
-"Pøích-F\n"
+"UÅ¾ivatel   CÃ­l        Zdroj      ZaÅ™Ã­zenÃ­ Stav        Vr/Vs    Odch-F PÅ™Ã­ch-"
+"F\n"
 
-#: ../netstat.c:430 ../netstat.c:1208
+#: ../netstat.c:481 ../netstat.c:1306
 #, c-format
 msgid "Problem reading data from %s\n"
-msgstr "Chyba pøi ètení dat z %s\n"
+msgstr "Chyba pÅ™i ÄtenÃ­ dat z %s\n"
 
-# následující radìji ponechat v originále ?!
-#: ../netstat.c:465
+# nÃ¡sledujÃ­cÃ­ radÄ›ji ponechat v originÃ¡le ?!
+#: ../netstat.c:516
 msgid "SYN_SENT"
 msgstr "SYN_SENT"
 
-#: ../netstat.c:466
+#: ../netstat.c:517
 msgid "SYN_RECV"
 msgstr "SYN_RECV"
 
-#: ../netstat.c:467
+#: ../netstat.c:518
 msgid "FIN_WAIT1"
 msgstr "FIN_WAIT1"
 
-#: ../netstat.c:468
+#: ../netstat.c:519
 msgid "FIN_WAIT2"
 msgstr "FIN_WAIT2"
 
-#: ../netstat.c:469
+#: ../netstat.c:520
 msgid "TIME_WAIT"
 msgstr "TIME_WAIT"
 
-#: ../netstat.c:470
+#: ../netstat.c:521
 msgid "CLOSE"
-msgstr "ZAVØEN"
+msgstr "ZAVÅ˜EN"
 
-#: ../netstat.c:471
+#: ../netstat.c:522
 msgid "CLOSE_WAIT"
 msgstr "CLOSE_WAIT"
 
-#: ../netstat.c:472
+#: ../netstat.c:523
 msgid "LAST_ACK"
-msgstr "POSLEDNÍ ACK"
+msgstr "POSLEDNÃ ACK"
 
-#: ../netstat.c:473
+#: ../netstat.c:524
 msgid "LISTEN"
-msgstr "LISTEN"
+msgstr "NASLOUCHÃ"
 
-#: ../netstat.c:474
+#: ../netstat.c:525
 msgid "CLOSING"
-msgstr "ZAVíRÁ"
+msgstr "ZAVÃ­RÃ"
 
-#: ../netstat.c:544
+#: ../netstat.c:596
 #, c-format
 msgid "warning, got bogus igmp6 line %d.\n"
-msgstr "varování, nesmyslný igmp6 øádek %d.\n"
+msgstr "varovÃ¡nÃ­, nesmyslnÃ½ igmp6 Å™Ã¡dek %d.\n"
 
-#: ../netstat.c:549 ../netstat.c:587 ../netstat.c:670 ../netstat.c:803
-#: ../netstat.c:935 ../netstat.c:940
+#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:892
+#: ../netstat.c:1029 ../netstat.c:1034
 #, c-format
 msgid "netstat: unsupported address family %d !\n"
-msgstr "netstat: tøída adres %d není podporována !\n"
+msgstr "netstat: tÅ™Ã­da adres %d nenÃ­ podporovÃ¡na !\n"
 
-#: ../netstat.c:562 ../netstat.c:567 ../netstat.c:575 ../netstat.c:582
+#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
 #, c-format
 msgid "warning, got bogus igmp line %d.\n"
-msgstr "varování, nesmyslný igmp øádek %d.\n"
+msgstr "varovÃ¡nÃ­, nesmyslnÃ½ igmp Å™Ã¡dek %d.\n"
+
+#: ../netstat.c:677
+#, c-format
+msgid "Active X.25 sockets\n"
+msgstr "AktivnÃ­ X.25 sokety\n"
+
+#. IMHO, Vr/Vs is not very usefull --SF
+#: ../netstat.c:679
+#, c-format
+msgid ""
+"Dest         Source          Device  LCI  State        Vr/Vs  Send-Q  Recv-"
+"Q\n"
+msgstr ""
+"CÃ­l          Zdroj           ZaÅ™Ã­z   LCI  Stav         Vr/Vs  Odhod-F PÅ™Ã­ch-"
+"F\n"
 
-#: ../netstat.c:666
+#: ../netstat.c:759
+#, c-format
 msgid "warning, got bogus tcp line.\n"
-msgstr "varování, nesmyslný tcp øádek.\n"
+msgstr "varovÃ¡nÃ­, nesmyslnÃ½ tcp Å™Ã¡dek.\n"
 
-#: ../netstat.c:704 ../netstat.c:855 ../netstat.c:975
+#: ../netstat.c:798 ../netstat.c:947 ../netstat.c:1072
 #, c-format
 msgid "off (0.00/%ld/%d)"
 msgstr "vyp (0.00/%ld/%d)"
 
-#: ../netstat.c:708
-#, fuzzy, c-format
+#: ../netstat.c:802
+#, c-format
 msgid "on (%2.2f/%ld/%d)"
-msgstr "zap%d (%2.2f/%ld/%d)"
+msgstr "zapnut (%2.2f/%ld/%d)"
 
-#: ../netstat.c:713
-#, fuzzy, c-format
+#: ../netstat.c:807
+#, c-format
 msgid "keepalive (%2.2f/%ld/%d)"
-msgstr "zap%d (%2.2f/%ld/%d)"
+msgstr "keepalive (%2.2f/%ld/%d)"
 
-#: ../netstat.c:718
-#, fuzzy, c-format
+#: ../netstat.c:812
+#, c-format
 msgid "timewait (%2.2f/%ld/%d)"
-msgstr "zap%d (%2.2f/%ld/%d)"
+msgstr "timewait (%2.2f/%ld/%d)"
 
-#: ../netstat.c:723 ../netstat.c:864 ../netstat.c:985
+#: ../netstat.c:817 ../netstat.c:956 ../netstat.c:1082
 #, c-format
 msgid "unkn-%d (%2.2f/%ld/%d)"
 msgstr "nezn-%d (%2.2f/%ld/%d)"
 
-#: ../netstat.c:799
+#: ../netstat.c:888
+#, c-format
 msgid "warning, got bogus udp line.\n"
-msgstr "varování, nesmyslný udp øádek.\n"
+msgstr "varovÃ¡nÃ­, nesmyslnÃ½ udp Å™Ã¡dek.\n"
 
-#: ../netstat.c:817 ../netstat.c:1075 ../netstat.c:1108
+#: ../netstat.c:906 ../netstat.c:1172 ../netstat.c:1205
 msgid "UNKNOWN"
-msgstr "NEZNÁM"
+msgstr "NEZNÃM"
 
-#: ../netstat.c:860 ../netstat.c:980
+#: ../netstat.c:952 ../netstat.c:1077
 #, c-format
 msgid "on%d (%2.2f/%ld/%d)"
 msgstr "zap%d (%2.2f/%ld/%d)"
 
-#: ../netstat.c:949
+#: ../netstat.c:1043
+#, c-format
 msgid "warning, got bogus raw line.\n"
-msgstr "varování, nesmyslný 'raw' øádek.\n"
+msgstr "varovÃ¡nÃ­, nesmyslnÃ½ 'raw' Å™Ã¡dek.\n"
 
-#: ../netstat.c:1028
+#: ../netstat.c:1125
+#, c-format
 msgid "warning, got bogus unix line.\n"
-msgstr "varování, netstat 'unix' øádek.\n"
+msgstr "varovÃ¡nÃ­, netstat 'unix' Å™Ã¡dek.\n"
 
-#: ../netstat.c:1055
+#: ../netstat.c:1152
 msgid "STREAM"
 msgstr "STREAM"
 
-#: ../netstat.c:1059
+#: ../netstat.c:1156
 msgid "DGRAM"
 msgstr "DGRAM"
 
-#: ../netstat.c:1063
+#: ../netstat.c:1160
 msgid "RAW"
 msgstr "RAW"
 
-#: ../netstat.c:1067
+#: ../netstat.c:1164
 msgid "RDM"
 msgstr "RDM"
 
-#: ../netstat.c:1071
+#: ../netstat.c:1168
 msgid "SEQPACKET"
 msgstr "SEQPACKET"
 
-#: ../netstat.c:1080
+#: ../netstat.c:1177
 msgid "FREE"
-msgstr "NEALOKOVÁN"
+msgstr "NEALOKOVÃN"
 
-#: ../netstat.c:1096
+#: ../netstat.c:1193
 msgid "CONNECTING"
 msgstr "SPOJUJE"
 
-#: ../netstat.c:1100
+#: ../netstat.c:1197
 msgid "CONNECTED"
 msgstr "SPOJEN"
 
-#: ../netstat.c:1104
+#: ../netstat.c:1201
 msgid "DISCONNECTING"
 msgstr "ODPOJUJE"
 
-#: ../netstat.c:1135
+#: ../netstat.c:1233
+#, c-format
 msgid "Active UNIX domain sockets "
-msgstr "Aktivní sokety domény UNIX "
+msgstr "AktivnÃ­ sokety domÃ©ny UNIX "
 
-#: ../netstat.c:1137 ../netstat.c:1666
+#: ../netstat.c:1235 ../netstat.c:1801
+#, c-format
 msgid "(servers and established)"
-msgstr "(servery a navázaná spojení)"
+msgstr "(servery a navÃ¡zanÃ¡ spojenÃ­)"
 
-#: ../netstat.c:1140 ../netstat.c:1669
+#: ../netstat.c:1238 ../netstat.c:1804
+#, c-format
 msgid "(only servers)"
 msgstr "(pouze servery)"
 
-#: ../netstat.c:1142 ../netstat.c:1671
+#: ../netstat.c:1240 ../netstat.c:1806
+#, c-format
 msgid "(w/o servers)"
 msgstr "(w/o servery)"
 
-#: ../netstat.c:1145
+#: ../netstat.c:1243
+#, c-format
 msgid ""
 "\n"
-"Proto RefCnt Flags       Type       State         I-Node"
+"Proto RefCnt Flags       Type       State         I-Node  "
 msgstr ""
 "\n"
-"Proto Èítaè  Pøíznaky    Typ        Stav          I-Uzel"
+"Proto ÄŒÃ­taÄ  PÅ™Ã­znaky    Typ        Stav          I-Uzel  "
 
-#: ../netstat.c:1147
+#: ../netstat.c:1245
+#, c-format
 msgid " Path\n"
 msgstr " Cesta\n"
 
-#: ../netstat.c:1167
+#: ../netstat.c:1265
 msgid "SABM SENT"
-msgstr "SABM ODESLÁN"
+msgstr "SABM ODESLÃN"
 
-#: ../netstat.c:1170
+#: ../netstat.c:1268
 msgid "RECOVERY"
 msgstr "OBNOVA"
 
-#: ../netstat.c:1184
+#: ../netstat.c:1282
+#, c-format
 msgid "Active AX.25 sockets\n"
-msgstr "Aktivní AX.25 sokety\n"
+msgstr "AktivnÃ­ AX.25 sokety\n"
 
-#: ../netstat.c:1185
+#: ../netstat.c:1283
+#, c-format
 msgid "Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-Q\n"
-msgstr "Cíl        Zdroj      Zaøíz   Stav         Vr/Vs    Odhod-F Pøích-F\n"
+msgstr "CÃ­l        Zdroj      ZaÅ™Ã­z   Stav         Vr/Vs    Odhod-F PÅ™Ã­ch-F\n"
 
-#: ../netstat.c:1228
+#: ../netstat.c:1326
 #, c-format
 msgid "problem reading data from %s\n"
-msgstr "chyba pøi ètení dat z %s\n"
+msgstr "chyba pÅ™i ÄtenÃ­ dat z %s\n"
 
-#: ../netstat.c:1279
+#: ../netstat.c:1396
+#, c-format
 msgid ""
 "Active IPX sockets\n"
 "Proto Recv-Q Send-Q Local Address              Foreign Address            "
 "State"
 msgstr ""
-"Aktivní IPX sokety\n"
-"Proto Pøích-F Odch-F Lokál adresa              Vzdálená adresa               "
-" Stav"
+"AktivnÃ­ IPX sokety\n"
+"Proto PÅ™Ã­ch-F Odch-F LokÃ¡l adresa              VzdÃ¡lenÃ¡ "
+"adresa                Stav"
 
-#: ../netstat.c:1281
+#: ../netstat.c:1398
+#, c-format
 msgid " User"
-msgstr " U¾ivatel"
+msgstr " UÅ¾ivatel"
 
-#: ../netstat.c:1315
+#: ../netstat.c:1432
 msgid "ESTAB"
 msgstr "SPOJEN"
 
-#: ../netstat.c:1323
+#: ../netstat.c:1440
 msgid "UNK."
 msgstr "NEZ."
 
-#: ../netstat.c:1367
-msgid "     - no statistics available -"
-msgstr "     - statistická data nejsou dostupná -"
-
-#: ../netstat.c:1370
-msgid "[NO FLAGS]"
-msgstr "[®ÁDNÉ PØÍZNAKY]"
-
-#: ../netstat.c:1400
+#: ../netstat.c:1478
+#, c-format
 msgid "Kernel Interface table\n"
-msgstr "Tabulka rozhraní v jádru\n"
+msgstr "Tabulka rozhranÃ­ v jÃ¡dru\n"
 
-#: ../netstat.c:1401
-msgid ""
-"Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR "
-"Flg\n"
-msgstr ""
-"Rozhr   MTU Met    PØ-OK PØ-CHYB PØ-ZAH PØ-PØT   OD-OK OD-CHYB OD-ZAH OD-PØT "
-"PØZ\n"
-
-#: ../netstat.c:1404
+#: ../netstat.c:1486
 msgid "missing interface information"
-msgstr "chybí informace o rozhraní"
+msgstr "chybÃ­ informace o rozhranÃ­"
 
-#: ../netstat.c:1425
+#: ../netstat.c:1509
+#, c-format
 msgid ""
-"usage: netstat [-veenNcCF] [<Af>] -r         netstat "
-"{-V|--version|-h|--help}\n"
+"usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--"
+"help}\n"
 msgstr ""
-"Pou¾ití: netstat [--veenNcCF] [<TA>] -r       netstat "
-"{-V|--version|-h|--help}\n"
+"PouÅ¾itÃ­: netstat [-vWeenNcCF] [<AF>] -r       netstat {-V|--version|-h|--"
+"help}\n"
 
-#: ../netstat.c:1426
-msgid "       netstat [-vnNcaeol] [<Socket> ...]\n"
-msgstr "         netstat [-vnNcaeol] [<Soket> ...]\n"
+#: ../netstat.c:1510
+#, c-format
+msgid "       netstat [-vWnNcaeol] [<Socket> ...]\n"
+msgstr "        netstat [-vWnNcaeol] [<Socket>â€¦]\n"
 
-#: ../netstat.c:1427
+#: ../netstat.c:1511
+#, c-format
 msgid ""
-"       netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+"       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }\n"
 "\n"
 msgstr ""
-"         netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+"       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }\n"
 "\n"
 
-#: ../netstat.c:1429
+#: ../netstat.c:1513
+#, c-format
 msgid "        -r, --route              display routing table\n"
-msgstr "         -r, --route              vypí¹e smìrovací tabulku\n"
+msgstr "         -r, --route              vypÃ­Å¡e smÄ›rovacÃ­ tabulku\n"
 
-#: ../netstat.c:1430
+#: ../netstat.c:1514
+#, c-format
 msgid "        -i, --interfaces         display interface table\n"
-msgstr "         -i, --interfaces         vypí¹e tabulku rozhraní\n"
+msgstr "         -i, --interfaces         vypÃ­Å¡e tabulku rozhranÃ­\n"
 
-#: ../netstat.c:1431
+#: ../netstat.c:1515
+#, c-format
 msgid "        -g, --groups             display multicast group memberships\n"
 msgstr ""
-"         -g, --groups             vypí¹e èlenství v multicast skupinách\n"
+"         -g, --groups             vypÃ­Å¡e ÄlenstvÃ­ v multicast skupinÃ¡ch\n"
 
-#: ../netstat.c:1432
+#: ../netstat.c:1516
+#, c-format
 msgid ""
 "        -s, --statistics         display networking statistics (like SNMP)\n"
 msgstr ""
-"         -s, --statistics         vypí¹e statistiku sí»ové aktivity (jako "
+"         -s, --statistics         vypÃ­Å¡e statistiku sÃ­Å¥ovÃ© aktivity (jako "
 "SNMP)\n"
 
-#: ../netstat.c:1434
+#: ../netstat.c:1518
+#, c-format
 msgid ""
 "        -M, --masquerade         display masqueraded connections\n"
 "\n"
 msgstr ""
-"         -M, --masquerade         vypí¹e maskovaná spojení\n"
+"         -M, --masquerade         vypÃ­Å¡e maskovanÃ¡ spojenÃ­\n"
 "\n"
 
-#: ../netstat.c:1438 ../route.c:87
+#: ../netstat.c:1521
+#, c-format
+msgid "        -W, --wide               don't truncate IP addresses\n"
+msgstr "        -W, --wide               nezkracuje IP adresy\n"
+
+#: ../netstat.c:1523
+#, c-format
+msgid "        --numeric-hosts          don't resolve host names\n"
+msgstr "        --numeric-hosts          nepÅ™eklÃ¡dÃ¡ nÃ¡zvy strojÅ¯\n"
+
+#: ../netstat.c:1524
+#, c-format
+msgid "        --numeric-ports          don't resolve port names\n"
+msgstr "        --numeric-ports          nepÅ™eklÃ¡dÃ¡ nÃ¡zvy portÅ¯\n"
+
+#: ../netstat.c:1525
+#, c-format
+msgid "        --numeric-users          don't resolve user names\n"
+msgstr "        --numeric-users          nepÅ™eklÃ¡dÃ¡ uÅ¾ivatelskÃ© jmÃ©na\n"
+
+#: ../netstat.c:1526
+#, c-format
 msgid "        -N, --symbolic           resolve hardware names\n"
-msgstr "         -N, --symbolic           pøevede hw jména\n"
+msgstr "         -N, --symbolic           pÅ™evede hw jmÃ©na\n"
 
-#: ../netstat.c:1439 ../route.c:88
+#: ../netstat.c:1527 ../route.c:88
+#, c-format
 msgid "        -e, --extend             display other/more information\n"
-msgstr "         -e, --extend             vypí¹e podrobnìj¹í informace\n"
+msgstr "         -e, --extend             vypÃ­Å¡e podrobnÄ›jÅ¡Ã­ informace\n"
 
-#: ../netstat.c:1440
+#: ../netstat.c:1528
+#, c-format
 msgid "        -p, --programs           display PID/Program name for sockets\n"
 msgstr ""
-"         -p, --programs           vypí¹e PID/jméno programu pro sokety\n"
+"         -p, --programs           vypÃ­Å¡e PID/jmÃ©no programu pro sokety\n"
 
-#: ../netstat.c:1441
+#: ../netstat.c:1529
+#, c-format
 msgid ""
 "        -c, --continuous         continuous listing\n"
 "\n"
 msgstr ""
-"         -c, --continuous         nepøeru¹ovaný výpis\n"
+"         -c, --continuous         nepÅ™eruÅ¡ovanÃ½ vÃ½pis\n"
 "\n"
 
-#: ../netstat.c:1442
+#: ../netstat.c:1530
+#, c-format
 msgid "        -l, --listening          display listening server sockets\n"
 msgstr ""
-"         -l, --listening          vypí¹e sokety, na nich¾ je nasloucháno\n"
+"         -l, --listening          vypÃ­Å¡e sokety, na nichÅ¾ je naslouchÃ¡no\n"
 
-#: ../netstat.c:1443
+#: ../netstat.c:1531
+#, c-format
 msgid ""
 "        -a, --all, --listening   display all sockets (default: connected)\n"
 msgstr ""
-"         -a, --all, --listening   vypí¹e v¹echny sokety (implicitnì: "
-"spojené)\n"
+"         -a, --all, --listening   vypÃ­Å¡e vÅ¡echny sokety (implicitnÄ›: "
+"spojenÃ©)\n"
 
-#: ../netstat.c:1444
+#: ../netstat.c:1532
+#, c-format
 msgid "        -o, --timers             display timers\n"
-msgstr "         -o, --timers             zobrazí èasovaèe\n"
+msgstr "         -o, --timers             zobrazÃ­ ÄasovaÄe\n"
 
-#: ../netstat.c:1445 ../route.c:89
+#: ../netstat.c:1533 ../route.c:89
+#, c-format
 msgid ""
 "        -F, --fib                display Forwarding Information Base "
 "(default)\n"
 msgstr ""
-"         -F, --fib                zobrazí Forwarding Infomation Base\n"
-"                                  (implicitní)\n"
+"         -F, --fib                zobrazÃ­ Forwarding Information Base\n"
+"                                  (implicitnÃ­)\n"
 
-#: ../netstat.c:1446 ../route.c:90
+#: ../netstat.c:1534 ../route.c:90
+#, c-format
 msgid ""
 "        -C, --cache              display routing cache instead of FIB\n"
 "\n"
-msgstr "         -C, --cache              místo FIB zobrazí smìrovací cache\n"
+msgstr "         -C, --cache              mÃ­sto FIB zobrazÃ­ smÄ›rovacÃ­ cache\n"
 
-#: ../netstat.c:1448
+#: ../netstat.c:1536
+#, c-format
 msgid ""
-"  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
-"--netrom\n"
+"  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-w|--raw} {-x|--unix} --"
+"ax25 --ipx --netrom\n"
 msgstr ""
-"  <Soket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
-"--netrom\n"
+"  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-w|--raw} {-x|--unix} --"
+"ax25 --ipx --netrom\n"
 
-#: ../netstat.c:1449 ../route.c:92
+#: ../netstat.c:1537
 #, c-format
-msgid "  <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
-msgstr "   <AF>=Pou¾ijte '-A <af>' or '--<af>' Implicitní: %s\n"
+msgid "  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+msgstr "  <AF>=PouÅ¾ijte â€ž-6|-4â€œ nebo â€ž-A <af>â€œ nebo â€ž--<af>â€œ. ImplicitnÃ­: %s\n"
 
-#: ../netstat.c:1450 ../route.c:93
+#: ../netstat.c:1538 ../route.c:93
+#, c-format
 msgid "  List of possible address families (which support routing):\n"
-msgstr "  Seznam mo¾ných tøíd adres (podporujících smìrování):\n"
+msgstr "  Seznam moÅ¾nÃ½ch tÅ™Ã­d adres (podporujÃ­cÃ­ch smÄ›rovÃ¡nÃ­):\n"
+
+#: ../netstat.c:1756
+#, c-format
+msgid "netstat: No statistics support for specified address family: %s\n"
+msgstr "netstat: Pro zadanou rodinu adres nenÃ­ podporovÃ¡na statistika: %s\n"
 
-#: ../netstat.c:1663
+#: ../netstat.c:1798
+#, c-format
 msgid "Active Internet connections "
-msgstr "Aktivní Internetová spojení "
+msgstr "AktivnÃ­ InternetovÃ¡ spojenÃ­ "
 
-#: ../netstat.c:1673
+#: ../netstat.c:1808
+#, c-format
 msgid ""
 "\n"
-"Proto Recv-Q Send-Q Local Address           Foreign Address         State    "
-"  "
+"Proto Recv-Q Send-Q Local Address           Foreign Address         "
+"State      "
 msgstr ""
 "\n"
-"Proto Pøích-F Odch-F Místní Adresa          Vzdálená Adresa         Stav     "
+"Proto PÅ™Ã­ch-F Odch-F MÃ­stnÃ­ Adresa          VzdÃ¡lenÃ¡ Adresa         Stav     "
 
-#: ../netstat.c:1675
+#: ../netstat.c:1810
+#, c-format
 msgid " User       Inode     "
-msgstr " U¾ivatel   I-uzel    "
+msgstr " UÅ¾ivatel   I-uzel    "
 
-#: ../netstat.c:1678
+#: ../netstat.c:1813
+#, c-format
 msgid " Timer"
-msgstr " Èasovaè"
+msgstr " ÄŒasovaÄ"
 
-#: ../netstat.c:1708
+#: ../netstat.c:1851
+#, c-format
 msgid "IPv4 Group Memberships\n"
-msgstr "Èlenství v IPv4 skupinách\n"
+msgstr "ÄŒlenstvÃ­ v IPv4 skupinÃ¡ch\n"
 
-#: ../netstat.c:1709
+#: ../netstat.c:1852
+#, c-format
 msgid "Interface       RefCnt Group\n"
-msgstr "Rozhraní        Èítaè  Skupina\n"
+msgstr "RozhranÃ­        ÄŒÃ­taÄ  Skupina\n"
 
-#: ../rarp.c:43
+#: ../rarp.c:45
 msgid "This kernel does not support RARP.\n"
-msgstr "Toto jádro nepodporuje RARP.\n"
+msgstr "Toto jÃ¡dro nepodporuje RARP.\n"
 
-#: ../rarp.c:82
+#: ../rarp.c:84
 #, c-format
 msgid "no RARP entry for %s.\n"
-msgstr "pro %s neexistuje RARP polo¾ka.\n"
+msgstr "pro %s neexistuje RARP poloÅ¾ka.\n"
 
-#: ../rarp.c:95
+#: ../rarp.c:97
 #, c-format
 msgid "%s: bad hardware address\n"
-msgstr "hardwarová adresa %s je nesprávná\n"
+msgstr "hardwarovÃ¡ adresa %s je nesprÃ¡vnÃ¡\n"
 
-#: ../rarp.c:127
+#: ../rarp.c:129
 #, c-format
 msgid "rarp: cannot open file %s:%s.\n"
-msgstr "rarp: soubor %s:%s nelze otevøít.\n"
+msgstr "rarp: soubor %s:%s nelze otevÅ™Ã­t.\n"
 
-#: ../rarp.c:139
+#: ../rarp.c:141
 #, c-format
 msgid "rarp: format error at %s:%u\n"
-msgstr "rarp: syntaktická chyba na øádku %2$u souboru %1$s\n"
+msgstr "rarp: syntaktickÃ¡ chyba na Å™Ã¡dku %2$u souboru %1$s\n"
 
-#: ../rarp.c:143 ../rarp.c:287
+#: ../rarp.c:145 ../rarp.c:290
 #, c-format
 msgid "rarp: %s: unknown host\n"
-msgstr "rarp: poèítaè %s není znám\n"
+msgstr "rarp: poÄÃ­taÄ %s nenÃ­ znÃ¡m\n"
 
-#: ../rarp.c:146
+#: ../rarp.c:148
 #, c-format
 msgid "rarp: cannot set entry from %s:%u\n"
-msgstr "rarp: nelze nastavit polo¾ku z øádku %2$u souboru %1$s\n"
+msgstr "rarp: nelze nastavit poloÅ¾ku z Å™Ã¡dku %2$u souboru %1$s\n"
 
-#: ../rarp.c:175
+#: ../rarp.c:177
+#, c-format
 msgid "Usage: rarp -a                               list entries in cache.\n"
-msgstr "Pou¾ití: rarp -a                            vypí¹e polo¾ky z cache.\n"
+msgstr "PouÅ¾itÃ­: rarp -a                            vypÃ­Å¡e poloÅ¾ky z cache.\n"
 
-#: ../rarp.c:176
+#: ../rarp.c:178
+#, c-format
 msgid "       rarp -d <hostname>                    delete entry from cache.\n"
-msgstr "         rarp -d <jméno>                    sma¾e polo¾ku z cache.\n"
+msgstr "         rarp -d <jmÃ©no>                    smaÅ¾e poloÅ¾ku z cache.\n"
 
-#: ../rarp.c:177
+#: ../rarp.c:179
+#, c-format
 msgid "       rarp [<HW>] -s <hostname> <hwaddr>    add entry to cache.\n"
 msgstr ""
-"         rarp [<HW>] -s <jméno> <hwadr>       pøidá polo¾ku do cache.\n"
+"         rarp [<HW>] -s <jmÃ©no> <hwadr>       pÅ™idÃ¡ poloÅ¾ku do cache.\n"
 
-#: ../rarp.c:178
+#: ../rarp.c:180
+#, c-format
 msgid ""
 "       rarp -f                               add entries from /etc/ethers.\n"
 msgstr ""
-"         rarp -f                               pøidá polo¾ky z /etc/ethers.\n"
+"         rarp -f                               pÅ™idÃ¡ poloÅ¾ky z /etc/ethers.\n"
 
-#: ../rarp.c:179
+#: ../rarp.c:181
+#, c-format
 msgid ""
 "       rarp -V                               display program version.\n"
 "\n"
 msgstr ""
-"         rarp -V                               vypí¹e oznaèení verze "
+"         rarp -V                               vypÃ­Å¡e oznaÄenÃ­ verze "
 "programu.\n"
 "\n"
 
-#: ../rarp.c:236
+#: ../rarp.c:239
 #, c-format
 msgid "%s: illegal option mix.\n"
-msgstr "Kombinace pøepínaèù %s je nesprávná.\n"
+msgstr "Kombinace pÅ™epÃ­naÄÅ¯ %s je nesprÃ¡vnÃ¡.\n"
 
-#: ../rarp.c:267
+#: ../rarp.c:270
 #, c-format
 msgid "rarp: %s: unknown hardware type.\n"
-msgstr "rarp: hardwarový typ %s není znám.\n"
+msgstr "rarp: hardwarovÃ½ typ %s nenÃ­ znÃ¡m.\n"
 
-#: ../route.c:79
+#: ../route.c:80
+#, c-format
 msgid ""
 "Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables\n"
 msgstr ""
-"Pou¾ití: route [-nNvee] [-FC] [<AF>]         Zobrazí smìrovací tabulky v "
-"jádru\n"
+"PouÅ¾itÃ­: route [-nNvee] [-FC] [<AF>]         ZobrazÃ­ smÄ›rovacÃ­ tabulky v "
+"jÃ¡dru\n"
 
-#: ../route.c:80
+#: ../route.c:81
+#, c-format
 msgid ""
 "       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.\n"
 "\n"
 msgstr ""
-"       route [-v] [-FC] {add|del|flush} ...  Zmìní smìrovací tabulku pro "
+"       route [-v] [-FC] {add|del|flush} ...  ZmÄ›nÃ­ smÄ›rovacÃ­ tabulku pro "
 "AF.\n"
 "\n"
 
-#: ../route.c:82
+#: ../route.c:83
+#, c-format
 msgid ""
 "       route {-h|--help} [<AF>]              Detailed usage syntax for "
 "specified AF.\n"
 msgstr ""
-"       route {-h|--help [<AF>]               Nápovìda pro pou¾ití s AF.\n"
+"       route {-h|--help [<AF>]               NÃ¡povÄ›da pro pouÅ¾itÃ­ s AF.\n"
 
-#: ../route.c:83
+#: ../route.c:84
+#, c-format
 msgid ""
 "       route {-V|--version}                  Display version/author and "
 "exit.\n"
 "\n"
 msgstr ""
-"       route {-V|--version}                  Vypí¹e oznaèení verze a autora\n"
+"       route {-V|--version}                  VypÃ­Å¡e oznaÄenÃ­ verze a autora\n"
 "                                             programu.\n"
 
+#: ../route.c:92
+#, c-format
+msgid "  <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
+msgstr "   <AF>=PouÅ¾ijte â€ž-A <af>â€œ nebo â€ž--<af>â€œ. ImplicitnÃ­: %s\n"
+
 #: ../plipconfig.c:66
+#, c-format
 msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
-msgstr "Pou¾ití: plipconfig [-a] [-i] [-v] rozhraní\n"
+msgstr "PouÅ¾itÃ­: plipconfig [-a] [-i] [-v] rozhranÃ­\n"
 
 #: ../plipconfig.c:67
+#, c-format
 msgid "                  [nibble NN] [trigger NN]\n"
 msgstr "                  [nibble NN] [trigger NN]\n"
 
 #: ../plipconfig.c:68
+#, c-format
 msgid "       plipconfig -V | --version\n"
 msgstr "       plipconfig -V | --version\n"
 
@@ -1338,25 +1371,30 @@ msgstr "       plipconfig -V | --version\n"
 msgid "%s\tnibble %lu  trigger %lu\n"
 msgstr "%s\tnibble %lu  trigger %lu\n"
 
-#: ../iptunnel.c:79
+#: ../iptunnel.c:85
+#, c-format
 msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
-msgstr "Pou¾ití: iptunnel { add | change | del | show } [ JMÉNO ]\n"
+msgstr "PouÅ¾itÃ­: iptunnel { add | change | del | show } [ JMÃ‰NO ]\n"
 
-#: ../iptunnel.c:80
+#: ../iptunnel.c:86
+#, c-format
 msgid ""
 "          [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
 msgstr ""
-"          [ mode { ipip | gre | sit } ] [ vzdálená ADR ] [ místní ADR ]\n"
+"          [ mode { ipip | gre | sit } ] [ vzdÃ¡lenÃ¡ ADR ] [ mÃ­stnÃ­ ADR ]\n"
 
-#: ../iptunnel.c:81
+#: ../iptunnel.c:87
+#, c-format
 msgid "          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
-msgstr "          [ [i|o]seq ] [ [i|o]key KLÍÈ ] [ [i|o]csum ]\n"
+msgstr "          [ [i|o]seq ] [ [i|o]key KLÃÄŒ ] [ [i|o]csum ]\n"
 
-#: ../iptunnel.c:82
+#: ../iptunnel.c:88
+#, c-format
 msgid "          [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
-msgstr "          [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev ZAØÍZENÍ ]\n"
+msgstr "          [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev ZAÅ˜ÃZENÃ ]\n"
 
-#: ../iptunnel.c:83
+#: ../iptunnel.c:89
+#, c-format
 msgid ""
 "       iptunnel -V | --version\n"
 "\n"
@@ -1364,1068 +1402,1781 @@ msgstr ""
 "       iptunnel -V | --version\n"
 "\n"
 
-#: ../iptunnel.c:84
+#: ../iptunnel.c:90
+#, c-format
 msgid "Where: NAME := STRING\n"
-msgstr "Kde: JMÉNO := ØETÌZEC\n"
+msgstr "Kde: JMÃ‰NO := Å˜ETÄšZEC\n"
 
-#: ../iptunnel.c:85
+#: ../iptunnel.c:91
+#, c-format
 msgid "       ADDR := { IP_ADDRESS | any }\n"
 msgstr "       ADR := { IP-ADRESA | any }\n"
 
-#: ../iptunnel.c:86
+#: ../iptunnel.c:92
+#, c-format
 msgid "       TOS  := { NUMBER | inherit }\n"
-msgstr "       TOS  := { ÈÍSLO | inherit }\n"
+msgstr "       TOS  := { ÄŒÃSLO | inherit }\n"
 
-#: ../iptunnel.c:87
+#: ../iptunnel.c:93
+#, c-format
 msgid "       TTL  := { 1..255 | inherit }\n"
 msgstr "       TTL  := { 1..255 | inherit }\n"
 
-#: ../iptunnel.c:88
+#: ../iptunnel.c:94
+#, c-format
 msgid "       KEY  := { DOTTED_QUAD | NUMBER }\n"
-msgstr "       KLÍÈ  := { DOTTED_QUAD | ÈÍSLO }\n"
+msgstr "       KLÃÄŒ  := { DOTTED_QUAD | ÄŒÃSLO }\n"
 
-#: ../iptunnel.c:326
+#: ../iptunnel.c:332
+#, c-format
 msgid "Keys are not allowed with ipip and sit.\n"
-msgstr "S ipip a sit nejsou klíèe povoleny.\n"
+msgstr "S ipip a sit nejsou klÃ­Äe povoleny.\n"
 
-#: ../iptunnel.c:346
+#: ../iptunnel.c:352
+#, c-format
 msgid "Broadcast tunnel requires a source address.\n"
-msgstr "Tunel se v¹esmìrovým vysíláním vy¾aduje zdrojovou adresu.\n"
+msgstr "Tunel se vÅ¡esmÄ›rovÃ½m vysÃ­lÃ¡nÃ­m vyÅ¾aduje zdrojovou adresu.\n"
 
-#: ../iptunnel.c:361
+#: ../iptunnel.c:367
+#, c-format
 msgid "ttl != 0 and noptmudisc are incompatible\n"
-msgstr "ttl != 0 a noptmudisc se navzájem vyluèují\n"
+msgstr "ttl != 0 a noptmudisc se navzÃ¡jem vyluÄujÃ­\n"
 
-#: ../iptunnel.c:373
+#: ../iptunnel.c:379
+#, c-format
 msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
-msgstr "re¾im tunelu (ipip, gre èi sit) nelze zjistit\n"
+msgstr "reÅ¾im tunelu (ipip, gre Äi sit) nelze zjistit\n"
 
-#: ../iptunnel.c:411
+#: ../iptunnel.c:417
 #, c-format
 msgid "%s: %s/ip  remote %s  local %s "
-msgstr "%s: %s/ip  vzdálený %s  místní %s "
+msgstr "%s: %s/ip  vzdÃ¡lenÃ½ %s  mÃ­stnÃ­ %s "
 
-#: ../iptunnel.c:415
+#: ../iptunnel.c:421
 msgid "unknown"
-msgstr "Neznám."
+msgstr "NeznÃ¡m."
 
-#: ../iptunnel.c:447
+#: ../iptunnel.c:453
+#, c-format
 msgid "  Drop packets out of sequence.\n"
-msgstr "  Zahazuje pakety mimo poøadí.\n"
+msgstr "  Zahazuje pakety mimo poÅ™adÃ­.\n"
 
-#: ../iptunnel.c:449
+#: ../iptunnel.c:455
+#, c-format
 msgid "  Checksum in received packet is required.\n"
-msgstr "  Pøijímané pakety musí mít kontrolní souèet.\n"
+msgstr "  PÅ™ijÃ­manÃ© pakety musÃ­ mÃ­t kontrolnÃ­ souÄet.\n"
 
 # ???
-#: ../iptunnel.c:451
+#: ../iptunnel.c:457
+#, c-format
 msgid "  Sequence packets on output.\n"
-msgstr "  Øadí odchozí pakety.\n"
+msgstr "  Å˜adÃ­ odchozÃ­ pakety.\n"
 
-#: ../iptunnel.c:453
+#: ../iptunnel.c:459
+#, c-format
 msgid "  Checksum output packets.\n"
-msgstr "  Odchozí pakety budou mít kontrolní souèet.\n"
+msgstr "  OdchozÃ­ pakety budou mÃ­t kontrolnÃ­ souÄet.\n"
 
-#: ../iptunnel.c:481
+#: ../iptunnel.c:487
+#, c-format
 msgid "Wrong format of /proc/net/dev. Sorry.\n"
-msgstr "Lituji, formát /proc/net/dev je chybný.\n"
+msgstr "Lituji, formÃ¡t /proc/net/dev je chybnÃ½.\n"
 
-#: ../iptunnel.c:494
+#: ../iptunnel.c:500
 #, c-format
 msgid "Failed to get type of [%s]\n"
-msgstr "Typ [%s] se nepodaøilo zjistit.\n"
+msgstr "Typ [%s] se nepodaÅ™ilo zjistit.\n"
 
-#: ../iptunnel.c:510
+#: ../iptunnel.c:516
+#, c-format
 msgid "RX: Packets    Bytes        Errors CsumErrs OutOfSeq Mcasts\n"
-msgstr "RX: Pakety     Bajty        Chyby  CsumChyb MimoPoø  Mcasts\n"
+msgstr "RX: Pakety     Bajty        Chyby  CsumChyb MimoPoÅ™  Mcasts\n"
 
-#: ../iptunnel.c:513
+#: ../iptunnel.c:519
+#, c-format
 msgid "TX: Packets    Bytes        Errors DeadLoop NoRoute  NoBufs\n"
 msgstr "TX: Pakety     Bajty        Chyby  DeadLoop NoRoute  NoBufs\n"
 
-#: ../statistics.c:45
+#: ../statistics.c:48
 msgid "ICMP input histogram:"
-msgstr "histogram ICMP vstupu:"
+msgstr "Histogram ICMP vstupu:"
 
-#: ../statistics.c:46
+#: ../statistics.c:49
 msgid "ICMP output histogram:"
-msgstr "histogram ICMP výstupu:"
+msgstr "Histogram ICMP vÃ½stupu:"
+
+#: ../statistics.c:66
+#, c-format
+msgid "Forwarding is %s"
+msgstr "PÅ™edÃ¡vÃ¡nÃ­ je %s"
+
+#: ../statistics.c:67
+#, c-format
+msgid "Default TTL is %u"
+msgstr "ImplicitnÃ­ TTL je %u"
+
+#: ../statistics.c:68 ../statistics.c:89
+#, c-format
+msgid "%u total packets received"
+msgstr "Celkem pÅ™ijatÃ½ch paketÅ¯: %u"
+
+#: ../statistics.c:69 ../statistics.c:90
+#, c-format
+msgid "%u with invalid headers"
+msgstr "SÂ nesprÃ¡vnÃ½mi hlaviÄkami: %u"
+
+#: ../statistics.c:70 ../statistics.c:93
+#, c-format
+msgid "%u with invalid addresses"
+msgstr "SÂ nesprÃ¡vnÃ½mi adresami: %u"
+
+#: ../statistics.c:71 ../statistics.c:98
+#, c-format
+msgid "%u forwarded"
+msgstr "PÅ™eposlÃ¡no: %u"
+
+#: ../statistics.c:72 ../statistics.c:94
+#, c-format
+msgid "%u with unknown protocol"
+msgstr "SÂ neznÃ¡mÃ½m protokolem: %u"
+
+#: ../statistics.c:73 ../statistics.c:96
+#, c-format
+msgid "%u incoming packets discarded"
+msgstr "PoÄet zahozenÃ½ch pÅ™Ã­chozÃ­ch paketÅ¯: %u"
+
+#: ../statistics.c:74 ../statistics.c:97
+#, c-format
+msgid "%u incoming packets delivered"
+msgstr "PoÄet doruÄenÃ½ch pÅ™Ã­chozÃ­ch paketÅ¯: %u"
+
+#: ../statistics.c:75 ../statistics.c:99
+#, c-format
+msgid "%u requests sent out"
+msgstr "PoÄet poÅ¾adavkÅ¯ na odeslÃ¡nÃ­: %u"
+
+#. ?
+#: ../statistics.c:76 ../statistics.c:100
+#, c-format
+msgid "%u outgoing packets dropped"
+msgstr "PoÄet zahozenÃ½ch odchozÃ­ch paketÅ¯: %u"
+
+#: ../statistics.c:77 ../statistics.c:101
+#, c-format
+msgid "%u dropped because of missing route"
+msgstr "Zahozeno kvÅ¯li chybÄ›jÃ­cÃ­ cestÄ›: %u"
+
+#: ../statistics.c:78 ../statistics.c:102
+#, c-format
+msgid "%u fragments dropped after timeout"
+msgstr "PoÄet fragmentÅ¯ zahozenÃ½ch po vyprÅ¡enÃ­ Äasu: %u"
+
+#: ../statistics.c:79 ../statistics.c:103
+#, c-format
+msgid "%u reassemblies required"
+msgstr "PoÄet nutnÃ½ch znovusestavenÃ­: %u"
+
+#. ?
+#: ../statistics.c:80 ../statistics.c:104
+#, c-format
+msgid "%u packets reassembled ok"
+msgstr "PoÄet v poÅ™Ã¡dku znovu sestavenÃ½ch paketÅ¯: %u"
+
+#: ../statistics.c:81 ../statistics.c:105
+#, c-format
+msgid "%u packet reassembles failed"
+msgstr "PoÄet paketÅ¯, jeÅ¾ se nepodaÅ™ilo znovu sestavit: %u"
+
+#: ../statistics.c:82 ../statistics.c:106
+#, c-format
+msgid "%u fragments received ok"
+msgstr "PoÄet v poÅ™Ã¡dku pÅ™ijatÃ½ch fragmentÅ¯: %u"
+
+#: ../statistics.c:83 ../statistics.c:107
+#, c-format
+msgid "%u fragments failed"
+msgstr "PoÄet chybnÃ½ch fragmentÅ¯: %u"
+
+#: ../statistics.c:84 ../statistics.c:108
+#, c-format
+msgid "%u fragments created"
+msgstr "PoÄet vytvoÅ™enÃ½ch fragmentÅ¯: %u"
+
+#: ../statistics.c:91
+#, c-format
+msgid "%u with packets too big"
+msgstr "PoÄet pÅ™Ã­liÅ¡ velkÃ½ch packetÅ¯: %u"
+
+#: ../statistics.c:92
+#, c-format
+msgid "%u incoming packets with no route"
+msgstr "PoÄet pÅ™Ã­chozÃ­ch paketÅ¯ bez odpovÃ­dajÃ­cÃ­ cesty: %u"
+
+#: ../statistics.c:95
+#, c-format
+msgid "%u with truncated packets"
+msgstr "PoÄet zkrÃ¡cenÃ½ch packetÅ¯: %u"
+
+#: ../statistics.c:109
+#, c-format
+msgid "%u incoming multicast packets"
+msgstr "PoÄet pÅ™Ã­chozÃ­ch multicastovÃ½ch paketÅ¯: %u"
+
+#: ../statistics.c:110
+#, c-format
+msgid "%u outgoing multicast packets"
+msgstr "PoÄet odchozÃ­ch multicastovÃ½ch paketÅ¯: %u"
+
+#: ../statistics.c:115 ../statistics.c:145
+#, c-format
+msgid "%u ICMP messages received"
+msgstr "PoÄet pÅ™ijatÃ½ch ICMP zprÃ¡v: %u"
+
+#: ../statistics.c:116 ../statistics.c:146
+#, c-format
+msgid "%u input ICMP message failed."
+msgstr "PoÄet chybnÃ½ch pÅ™Ã­chozÃ­ch ICMP zprÃ¡v: %u"
+
+#: ../statistics.c:117 ../statistics.c:130 ../statistics.c:147
+#: ../statistics.c:162
+#, c-format
+msgid "destination unreachable: %u"
+msgstr "AdresÃ¡t nedostupnÃ½: %u"
+
+#: ../statistics.c:118
+#, c-format
+msgid "timeout in transit: %u"
+msgstr "VyprÅ¡el Äas pÅ™i pÅ™enosu: %u"
+
+#: ../statistics.c:119 ../statistics.c:132
+#, c-format
+msgid "wrong parameters: %u"
+msgstr "ChybnÃ© parametry: %u"
+
+#. ?
+#: ../statistics.c:120
+#, c-format
+msgid "source quenches: %u"
+msgstr "ZahlcenÃ­ zdroje: %u"
+
+#: ../statistics.c:121 ../statistics.c:160 ../statistics.c:175
+#, c-format
+msgid "redirects: %u"
+msgstr "PoÄet pÅ™esmÄ›rovÃ¡nÃ­: %u"
+
+#: ../statistics.c:122 ../statistics.c:151 ../statistics.c:166
+#, c-format
+msgid "echo requests: %u"
+msgstr "Å½Ã¡dost o echo: %u"
+
+#: ../statistics.c:123 ../statistics.c:136 ../statistics.c:152
+#: ../statistics.c:167
+#, c-format
+msgid "echo replies: %u"
+msgstr "OdpovÄ›Ä na Å¾Ã¡dost o echo: %u"
+
+#: ../statistics.c:124
+#, c-format
+msgid "timestamp request: %u"
+msgstr "Å½Ã¡dost o Äas: %u"
+
+#: ../statistics.c:125
+#, c-format
+msgid "timestamp reply: %u"
+msgstr "OdpovÄ›Ä na Å¾Ã¡dost o Äas: %u"
+
+#: ../statistics.c:126
+#, c-format
+msgid "address mask request: %u"
+msgstr "Å½Ã¡dost o masku podsÃ­tÄ›: %u"
+
+#. ?
+#: ../statistics.c:127 ../statistics.c:140
+#, c-format
+msgid "address mask replies: %u"
+msgstr "OdpovÄ›Ä na Å¾Ã¡dost o masku podsÃ­tÄ›: %u"
+
+#. ?
+#: ../statistics.c:128 ../statistics.c:161
+#, c-format
+msgid "%u ICMP messages sent"
+msgstr "PoÄet odeslanÃ½ch ICMP zprÃ¡v: %u"
+
+#: ../statistics.c:129
+#, c-format
+msgid "%u ICMP messages failed"
+msgstr "PoÄet chybnÃ½ch ICMP zprÃ¡v: %u"
+
+#: ../statistics.c:131
+#, c-format
+msgid "time exceeded: %u"
+msgstr "VyprÅ¡enÃ­ Å¾ivotnosti: %u"
+
+#. ?
+#: ../statistics.c:133
+#, c-format
+msgid "source quench: %u"
+msgstr "ZahlcenÃ­ zdroje: %u"
+
+#: ../statistics.c:134
+#, c-format
+msgid "redirect: %u"
+msgstr "PoÄet pÅ™esmÄ›rovÃ¡nÃ­: %u"
+
+#: ../statistics.c:135
+#, c-format
+msgid "echo request: %u"
+msgstr "Å½Ã¡dost o echo: %u"
+
+#: ../statistics.c:137
+#, c-format
+msgid "timestamp requests: %u"
+msgstr "Å¾Ã¡dost o Äas: %u"
+
+#: ../statistics.c:138
+#, c-format
+msgid "timestamp replies: %u"
+msgstr "OdpovÄ›Ä na Å¾Ã¡dost o Äas: %u"
+
+#: ../statistics.c:139
+#, c-format
+msgid "address mask requests: %u"
+msgstr "Å½Ã¡dost o masku podsÃ­tÄ›: %u"
+
+#: ../statistics.c:148 ../statistics.c:163
+#, c-format
+msgid "packets too big: %u"
+msgstr "PÅ™Ã­liÅ¡ velkÃ½ch packetÅ¯: %u"
+
+#: ../statistics.c:149
+#, c-format
+msgid "received ICMPv6 time exceeded: %u"
+msgstr "PÅ™ijato ICMPv6 vyprÅ¡enÃ­ Å¾ivotnosti: %u"
+
+#: ../statistics.c:150 ../statistics.c:165
+#, c-format
+msgid "parameter problem: %u"
+msgstr "ProblÃ©m sÂ parametrem: %u"
+
+#: ../statistics.c:153 ../statistics.c:168
+#, c-format
+msgid "group member queries: %u"
+msgstr "DotazÅ¯ na ÄlenstvÃ­ ve skupinÄ›: %u"
+
+#: ../statistics.c:154 ../statistics.c:169
+#, c-format
+msgid "group member responses: %u"
+msgstr "OdpovÄ›dÃ­ na ÄlenstvÃ­ ve skupinÄ›: %u"
+
+#: ../statistics.c:155 ../statistics.c:170
+#, c-format
+msgid "group member reductions: %u"
+msgstr "PoÄet snÃ­Å¾enÃ­ ÄlenÅ¯ skupiny: %u"
+
+#: ../statistics.c:156 ../statistics.c:171
+#, c-format
+msgid "router solicits: %u"
+msgstr "PoÄet vÃ½zev smÄ›rovaÄi: %u"
+
+#: ../statistics.c:157 ../statistics.c:172
+#, c-format
+msgid "router advertisement: %u"
+msgstr "PoÄet oznÃ¡menÃ­ smÄ›rovaÄe: %u"
+
+#: ../statistics.c:158
+#, c-format
+msgid "neighbour solicits: %u"
+msgstr "PoÄet vÃ½zev sousedovi: %u"
+
+#: ../statistics.c:159
+#, c-format
+msgid "neighbour advertisement: %u"
+msgstr "PoÄet oznÃ¡menÃ­ souseda: %u"
+
+#: ../statistics.c:164
+#, c-format
+msgid "sent ICMPv6 time exceeded: %u"
+msgstr "PoÄet odeslanÃ½ch ICMPv6 vyprÅ¡enÃ­ Å¾ivotnosti: %u"
+
+#: ../statistics.c:173
+#, c-format
+msgid "neighbor solicits: %u"
+msgstr "PoÄet vÃ½zev sousedovi: %u"
+
+#: ../statistics.c:174
+#, c-format
+msgid "neighbor advertisements: %u"
+msgstr "PoÄet oznÃ¡menÃ­ souseda: %u"
+
+#: ../statistics.c:180
+#, c-format
+msgid "RTO algorithm is %s"
+msgstr "RTO algoritmus je %s"
+
+#: ../statistics.c:184
+#, c-format
+msgid "%u active connections openings"
+msgstr "PoÄet aktivnÄ› navÃ¡zanÃ½ch spojenÃ­: %u"
+
+#: ../statistics.c:185
+#, c-format
+msgid "%u passive connection openings"
+msgstr "PoÄet pasivnÄ› navÃ¡zanÃ½ch spojenÃ­: %u"
+
+#: ../statistics.c:186
+#, c-format
+msgid "%u failed connection attempts"
+msgstr "PoÄet neÃºspÄ›Å¡nÃ½ch pokusÅ¯ o spojenÃ­: %u"
+
+#: ../statistics.c:187
+#, c-format
+msgid "%u connection resets received"
+msgstr "PoÄet pÅ™ijatÃ½ch resetÅ¯ spojenÃ­: %u"
+
+#: ../statistics.c:188
+#, c-format
+msgid "%u connections established"
+msgstr "PoÄet navÃ¡zanÃ½ch spojenÃ­: %u"
+
+#: ../statistics.c:189
+#, c-format
+msgid "%u segments received"
+msgstr "PoÄet pÅ™ijatÃ½ch segmentÅ¯: %u"
+
+#: ../statistics.c:190
+#, c-format
+msgid "%u segments send out"
+msgstr "PoÄet odeslanÃ½ch segmentÅ¯: %u"
+
+#: ../statistics.c:191
+#, c-format
+msgid "%u segments retransmited"
+msgstr "PoÄet pÅ™enesenÃ½ch segmentÅ¯: %u"
+
+#: ../statistics.c:192
+#, c-format
+msgid "%u bad segments received."
+msgstr "PoÄet chybnÃ½ch pÅ™Ã­chozÃ­ch segmentÅ¯: %u"
+
+#: ../statistics.c:193
+#, c-format
+msgid "%u resets sent"
+msgstr "PoÄet odeslanÃ½ch resetÅ¯: %u"
+
+#: ../statistics.c:198 ../statistics.c:206
+#, c-format
+msgid "%u packets received"
+msgstr "PoÄet pÅ™ijatÃ½ch paketÅ¯: %u"
+
+#: ../statistics.c:199 ../statistics.c:207
+#, c-format
+msgid "%u packets to unknown port received."
+msgstr "PoÄet paketÅ¯ pÅ™ijatÃ½ch pro neznÃ¡mÃ½ port: %u"
+
+#: ../statistics.c:200 ../statistics.c:208
+#, c-format
+msgid "%u packet receive errors"
+msgstr "PoÄet chyb pÅ™i pÅ™Ã­jmu paketÅ¯: %u"
+
+#: ../statistics.c:201 ../statistics.c:209
+#, c-format
+msgid "%u packets sent"
+msgstr "PoÄet odeslanÃ½ch paketÅ¯: %u"
+
+#: ../statistics.c:214
+#, c-format
+msgid "%u SYN cookies sent"
+msgstr "PoÄet odeslanÃ½ch SYN cookies: %u"
 
-#: ../statistics.c:63
+#: ../statistics.c:215
 #, c-format
-msgid "Forwarding is %s"
-msgstr "Pøedávání je %s"
+msgid "%u SYN cookies received"
+msgstr "PoÄet pÅ™ijatÃ½ch SYN cookies: %u"
 
-#: ../statistics.c:64
+#: ../statistics.c:216
 #, c-format
-msgid "Default TTL is %d"
-msgstr "Implicitní TTL je %d"
+msgid "%u invalid SYN cookies received"
+msgstr "PoÄet chybnÃ½ch pÅ™Ã­chozÃ­ch SYN cookies: %u"
 
-#: ../statistics.c:65
+#: ../statistics.c:218
 #, c-format
-msgid "%d total packets received"
-msgstr "celkem pøijmutých paketù: %d"
+msgid "%u resets received for embryonic SYN_RECV sockets"
+msgstr "PoÄet resetÅ¯ pÅ™ijatÃ½ch pro sokety vÂ zÃ¡rodeÄnÃ©m stavu SYN_PÅ˜ÃCH: %u"
 
-#: ../statistics.c:66
+#: ../statistics.c:220
 #, c-format
-msgid "%d with invalid headers"
-msgstr "s nesprávnými hlavièkami: %d"
+msgid "%u packets pruned from receive queue because of socket buffer overrun"
+msgstr ""
+"PoÄet packetÅ¯ odstranÄ›nÃ½ch z pÅ™ijÃ­macÃ­ fronty kvÅ¯li pÅ™eteÄenÃ­ bufferu "
+"socketu: %u"
 
-#: ../statistics.c:67
+#. obsolete: 2.2.0 doesn't do that anymore
+#: ../statistics.c:223
 #, c-format
-msgid "%d with invalid addresses"
-msgstr "s nesprávnými adresami: %d"
+msgid "%u packets pruned from receive queue"
+msgstr "PoÄet packetÅ¯ odstranÄ›nÃ½ch zÂ pÅ™ijÃ­macÃ­ fronty: %u"
 
-#: ../statistics.c:68
+#: ../statistics.c:224
 #, c-format
-msgid "%d forwarded"
-msgstr "pøedáno: %d"
+msgid ""
+"%u packets dropped from out-of-order queue because of socket buffer overrun"
+msgstr ""
+"PoÄet packetÅ¯ zahozenÃ½ch z fronty mimo-poÅ™adÃ­ kvÅ¯li pÅ™eteÄenÃ­ bufferu "
+"socketu: %u"
 
-#: ../statistics.c:69
+#: ../statistics.c:226
 #, c-format
-msgid "%d with unknown protocol"
-msgstr "s neznámým protokolem: %d"
+msgid "%u ICMP packets dropped because they were out-of-window"
+msgstr "PoÄet ICMP packetÅ¯ zahozenÃ½ch, protoÅ¾e byly mimo okno: %u"
 
-#: ../statistics.c:70
+#: ../statistics.c:228
 #, c-format
-msgid "%d incoming packets discarded"
-msgstr "poèet zahozených pøíchozích paketù: %d"
+msgid "%u ICMP packets dropped because socket was locked"
+msgstr "PoÄet ICMP packetÅ¯ zahozenÃ½ch kvÅ¯li zamÄenÃ©mu socketu: %u"
 
-#: ../statistics.c:71
+#: ../statistics.c:230
 #, c-format
-msgid "%d incoming packets delivered"
-msgstr "poèet doruèených pøíchozích paketù: %d"
+msgid "%u TCP sockets finished time wait in fast timer"
+msgstr ""
+"PoÄet TCP socketÅ¯, kterÃ© ukonÄily fÃ¡zi time-wait uvnitÅ™ rychlÃ©ho ÄasovaÄe: %u"
 
-#: ../statistics.c:72
+#: ../statistics.c:231
 #, c-format
-msgid "%d requests sent out"
-msgstr "poèet odeslaných po¾adavkù: %d"
+msgid "%u time wait sockets recycled by time stamp"
+msgstr ""
+"PoÄet socketÅ¯ ve fÃ¡zi time-wait, kterÃ© byly znovu pouÅ¾ity dÃ­ky ÄasovÃ©mu "
+"razÃ­tku: %u"
 
-#. ?
-#: ../statistics.c:73
+#: ../statistics.c:232
 #, c-format
-msgid "%d outgoing packets dropped"
-msgstr "poèet zahozených odchozích paketù: %d"
+msgid "%u TCP sockets finished time wait in slow timer"
+msgstr ""
+"PoÄet TCPâ€¯socketÅ¯, kterÃ© ukonÄily fÃ¡zi time-wait uvnitÅ™ pomalÃ©ho ÄasovaÄe: %u"
 
-#: ../statistics.c:74
+#: ../statistics.c:233
 #, c-format
-msgid "%d dropped because of missing route"
-msgstr "zahozeno kvùli chybìjící cestì: %d"
+msgid "%u passive connections rejected because of time stamp"
+msgstr "PoÄet odmÃ­tnutÃ½ch pasivnÃ­ch spojenÃ­ kvÅ¯li ÄasovÃ©mu razÃ­tku: %u"
 
-#: ../statistics.c:75
+#: ../statistics.c:235
 #, c-format
-msgid "%d fragments dropped after timeout"
-msgstr "poèet fragmentù zahozených po vypr¹ení èasu: %d"
+msgid "%u active connections rejected because of time stamp"
+msgstr "PoÄet odmÃ­tnutÃ½ch aktivnÃ­ch spojenÃ­ kvÅ¯li ÄasovÃ©mu razÃ­tku: %u"
 
-#: ../statistics.c:76
+#: ../statistics.c:237
 #, c-format
-msgid "%d reassemblies required"
-msgstr "poèet nutných znovusestavení: %d"
+msgid "%u packets rejects in established connections because of timestamp"
+msgstr ""
+"PoÄet odmÃ­tnutÃ½ch packetÅ¯ uvnitÅ™ navÃ¡zanÃ©ho spojenÃ­ kvÅ¯li ÄasovÃ©mu razÃ­tku: %"
+"u"
 
-#. ?
-#: ../statistics.c:77
+#: ../statistics.c:239
 #, c-format
-msgid "%d packets reassembled ok"
-msgstr "poèet v poøádku znovu sestavených paketù: %d"
+msgid "%u delayed acks sent"
+msgstr "PoÄet odeslanÃ½ch zpoÅ¾dÄ›nÃ½ch potvrzenÃ­: %u"
 
-#: ../statistics.c:78
+#: ../statistics.c:240
 #, c-format
-msgid "%d packet reassembles failed"
-msgstr "poèet paketù, je¾ se nepodaøilo znovu sestavit: %d"
+msgid "%u delayed acks further delayed because of locked socket"
+msgstr ""
+"PoÄet zpoÅ¾dÄ›nÃ½ch potvrzenÃ­ dÃ¡le pozdrÅ¾enÃ½ch kvÅ¯li zamÄenÃ©mu socketu: %u"
 
-#: ../statistics.c:79
+#: ../statistics.c:242
 #, c-format
-msgid "%d fragments received ok"
-msgstr "poèet v poøádku pøijmutých fragmentù: %d"
+msgid "Quick ack mode was activated %u times"
+msgstr "PoÄet aktivovanÃ­ rychlÃ©ho potvrzovacÃ­ho reÅ¾imu: %u"
 
-#: ../statistics.c:80
+#: ../statistics.c:243
 #, c-format
-msgid "%d fragments failed"
-msgstr "poèet chybných fragmentù: %d"
+msgid "%u times the listen queue of a socket overflowed"
+msgstr "PoÄet pÅ™eteÄenÃ­ naslouchacÃ­ fronty socketu: %u"
 
-#: ../statistics.c:81
+#: ../statistics.c:245
 #, c-format
-msgid "%d fragments created"
-msgstr "poèet vytvoøených fragmentù: %d"
+msgid "%u SYNs to LISTEN sockets dropped"
+msgstr "PoÄet zahozenÃ½ch SYN packetÅ¯ urÄenÃ½ch naslouchajÃ­cÃ­mu socketu: %u"
 
-#: ../statistics.c:86
+#: ../statistics.c:246
 #, c-format
-msgid "%d ICMP messages received"
-msgstr "poèet pøijmutých ICMP zpráv: %d"
+msgid "%u packets directly queued to recvmsg prequeue."
+msgstr "PoÄet packetÅ¯ pÅ™Ã­mo zaÅ™azenÃ½ch do pÅ™edfronty recvmsg: %u"
 
-#: ../statistics.c:87
+#: ../statistics.c:248
 #, c-format
-msgid "%d input ICMP message failed."
-msgstr "poèet chybných pøíchozích ICMP zpráv: %d"
+msgid "%u bytes directly in process context from backlog"
+msgstr "PoÄet bajtÅ¯ pÅ™edanÃ½ch pÅ™Ã­mo zÂ backlogu do kontextu procesu: %u"
 
-#: ../statistics.c:88 ../statistics.c:101
+#: ../statistics.c:249
 #, c-format
-msgid "destination unreachable: %d"
-msgstr "adresát nedostupný: %d"
+msgid "%u bytes directly received in process context from prequeue"
+msgstr "PoÄet bajtÅ¯ pÅ™Ã­mo pÅ™ijatÃ½ch do kontextu procesu zÂ pÅ™edfronty: %u"
 
-#: ../statistics.c:89
+#: ../statistics.c:251
 #, c-format
-msgid "timeout in transit: %d"
-msgstr "vypr¹el èas pøi pøenosu: %d"
+msgid "%u packets dropped from prequeue"
+msgstr "PoÄet paketÅ¯ odstranÄ›nÃ½ch z pÅ™edfronty: %u"
 
-#: ../statistics.c:90 ../statistics.c:103
+#: ../statistics.c:252
 #, c-format
-msgid "wrong parameters: %d"
-msgstr "chybné parametry: %d"
+msgid "%u packet headers predicted"
+msgstr "PoÄet pÅ™edpovÄ›zenÃ½ch hlaviÄek packetÅ¯: %u"
 
-#. ?
-#: ../statistics.c:91
+#: ../statistics.c:253
 #, c-format
-msgid "source quenchs: %d"
-msgstr "øízení toku dat: %d"
+msgid "%u packets header predicted and directly queued to user"
+msgstr "PoÄet hlaviÄek packetÅ¯ pÅ™edpovÄ›zenÃ½ch a pÅ™Ã­mo pÅ™edanÃ½ch uÅ¾ivateli: %u"
 
-#: ../statistics.c:92
+#: ../statistics.c:255
 #, c-format
-msgid "redirects: %d"
-msgstr "zmìna cesty: %d"
+msgid "Ran %u times out of system memory during packet sending"
+msgstr "KolikrÃ¡t systÃ©mu doÅ¡la pamÄ›Å¥ pÅ™i odesÃ­lÃ¡nÃ­ packetu: %u"
 
-#: ../statistics.c:93
+#: ../statistics.c:257
 #, c-format
-msgid "echo requests: %d"
-msgstr "¾ádost o echo: %d"
+msgid "%u acknowledgments not containing data payload received"
+msgstr "PoÄet pÅ™ijatÃ½ch potvrzenÃ­ neobsahujÃ­cÃ­ data: %u"
 
-#: ../statistics.c:94 ../statistics.c:107
+#: ../statistics.c:258
 #, c-format
-msgid "echo replies: %d"
-msgstr "odpovìï na ¾ádost o echo: %d"
+msgid "%u predicted acknowledgments"
+msgstr "PoÄet pÅ™edpovÄ›zenÃ½ch potvrzenÃ­: %u"
 
-#: ../statistics.c:95
+#: ../statistics.c:259
 #, c-format
-msgid "timestamp request: %d"
-msgstr "¾ádost o èas: %d"
+msgid "%u times recovered from packet loss due to fast retransmit"
+msgstr "PoÄet zotavenÃ­ ze ztrÃ¡ty packetu kvÅ¯li rychle opakovanÃ©mu odeslÃ¡nÃ­: %u"
 
-#: ../statistics.c:96
+#: ../statistics.c:260
 #, c-format
-msgid "timestamp reply: %d"
-msgstr "odpovìï na ¾ádost o èas: %d"
+msgid "%u times recovered from packet loss by selective acknowledgements"
+msgstr "PoÄet zotavenÃ­ ze ztrÃ¡ty packetu pomocÃ­ vybÄ›rovÃ½ch potvrzenÃ­: %u"
 
-#: ../statistics.c:97
+#: ../statistics.c:261
 #, c-format
-msgid "address mask request: %d"
-msgstr "¾ádost o masku podsítì: %d"
+msgid "%u bad SACK blocks received"
+msgstr "PoÄet pÅ™ijatÃ½ch chybnÃ½ch SACK blokÅ¯: %u"
 
-#. ?
-#: ../statistics.c:98
-msgid "address mask replies"
-msgstr "odpovìdi na ¾ádost o masku podsítì"
+#: ../statistics.c:262
+#, c-format
+msgid "Detected reordering %u times using FACK"
+msgstr "KolikrÃ¡t byla nalezena zmÄ›na poÅ™adÃ­ pomocÃ­ FACK: %u"
 
-#. ?
-#: ../statistics.c:99
+#: ../statistics.c:263
 #, c-format
-msgid "%d ICMP messages sent"
-msgstr "poèet odeslaných ICMP zpráv: %d"
+msgid "Detected reordering %u times using SACK"
+msgstr "KolikrÃ¡t byla nalezena zmÄ›na poÅ™adÃ­ pomocÃ­ SACK: %u"
 
-#: ../statistics.c:100
+#: ../statistics.c:264
 #, c-format
-msgid "%d ICMP messages failed"
-msgstr "poèet chybných ICMP zpráv: %d"
+msgid "Detected reordering %u times using time stamp"
+msgstr "KolikrÃ¡t byla nalezena zmÄ›na poÅ™adÃ­ pomocÃ­ ÄasovÃ©ho razÃ­tka: %u"
 
-#: ../statistics.c:102
+#: ../statistics.c:265
 #, c-format
-msgid "time exceeded: %d"
-msgstr "vypr¹ení ¾ivotnosti: %d"
+msgid "Detected reordering %u times using reno fast retransmit"
+msgstr ""
+"KolikrÃ¡t byla nalezena zmÄ›na poÅ™adÃ­ kvÅ¯li rychlÃ©mu znovuodeslÃ¡nÃ­ Reno: %u"
 
-#. ?
-#: ../statistics.c:104
+#: ../statistics.c:266
 #, c-format
-msgid "source quench: %d"
-msgstr "øízení toku dat: %d"
+msgid "%u congestion windows fully recovered without slow start"
+msgstr "PoÄet plnÃ½ch zotavenÃ­ ze zahlcenÃ­ okna bez pomalÃ©ho startu: %u"
 
-#: ../statistics.c:105
+#: ../statistics.c:267
 #, c-format
-msgid "redirect: %d"
-msgstr "zmìna cesty: %d"
+msgid "%u congestion windows partially recovered using Hoe heuristic"
+msgstr "PoÄet ÄÃ¡steÄnÃ½ch zotavenÃ­ ze zahlcenÃ­ okna pomocÃ­ heuristiky Hoe: %u"
 
-#: ../statistics.c:106
+#: ../statistics.c:268
 #, c-format
-msgid "echo request: %d"
-msgstr "¾ádost o echo: %d"
+msgid "%u congestion window recovered without slow start using DSACK"
+msgstr "PoÄet zotavenÃ­ ze zahlcenÃ©ho okna bez pomalÃ©ho startu pomocÃ­ DSACK: %u"
 
-#: ../statistics.c:108
+#: ../statistics.c:269
 #, c-format
-msgid "timestamp requests: %d"
-msgstr "¾ádost o èas: %d"
+msgid "%u congestion windows recovered without slow start after partial ack"
+msgstr ""
+"PoÄet zotavenÃ­ ze zahlcenÃ­ okna bez pomalÃ©ho startu po ÄÃ¡steÄnÃ©m potvrzenÃ­: %"
+"u"
 
-#: ../statistics.c:109
+#: ../statistics.c:270
 #, c-format
-msgid "timestamp replies: %d"
-msgstr "odpovìï na ¾ádost o èas: %d"
+msgid "%u retransmits lost"
+msgstr "PoÄet ztracenÃ½ch opakovanÃ½ch odeslÃ¡nÃ­: %u"
 
-#: ../statistics.c:110
+#: ../statistics.c:271
 #, c-format
-msgid "address mask requests: %d"
-msgstr "¾ádost o masku podsítì: %d"
+msgid "%u timeouts after reno fast retransmit"
+msgstr "PoÄet vyprÅ¡enÃ­ Äasu po rychlÃ©m opakovanÃ©m odeslÃ¡nÃ­ Reno: %u"
 
-#: ../statistics.c:111
+#: ../statistics.c:272
 #, c-format
-msgid "address mask replies: %d"
-msgstr "odpovìï na ¾ádost o masku podsítì: %d"
+msgid "%u timeouts after SACK recovery"
+msgstr "PoÄet vyprÅ¡enÃ­ Äasu po zotavenÃ­ pomocÃ­ SACK: %u"
 
-#: ../statistics.c:116
+#: ../statistics.c:273
 #, c-format
-msgid "RTO algorithm is %s"
-msgstr "RTO algoritmus je %s"
+msgid "%u timeouts in loss state"
+msgstr "PoÄet vyprÅ¡enÃ­ Äasu ve stavu ztrÃ¡ty: %u"
 
-#: ../statistics.c:120
+#: ../statistics.c:274
 #, c-format
-msgid "%d active connections openings"
-msgstr "poèet aktivnì navázaných spojení: %d"
+msgid "%u fast retransmits"
+msgstr "PoÄet rychlÃ½ch opakovÃ¡nÃ­ odeslÃ¡nÃ­: %u"
 
-#: ../statistics.c:121
+#: ../statistics.c:275
 #, c-format
-msgid "%d passive connection openings"
-msgstr "poèet pasivnì navázaných spojení: %d"
+msgid "%u forward retransmits"
+msgstr "PoÄet dopÅ™ednÃ½ch opakovanÃ½ch odeslÃ¡nÃ­: %u"
 
-#: ../statistics.c:122
+#: ../statistics.c:276
 #, c-format
-msgid "%d failed connection attempts"
-msgstr "poèet neúspì¹ných pokusù o spojení: %d"
+msgid "%u retransmits in slow start"
+msgstr "PoÄet opakovanÃ½ch odeslÃ¡nÃ­ vÂ pomalÃ©m startu: %u"
 
-#: ../statistics.c:123
+#: ../statistics.c:277
 #, c-format
-msgid "%d connection resets received"
-msgstr "poèet pøijmutých resetù: %d"
+msgid "%u other TCP timeouts"
+msgstr "PoÄet jinÃ½ch vyprÅ¡enÃ­ ÄasovaÄe TCP: %u"
 
-#: ../statistics.c:124
+#: ../statistics.c:278
 #, c-format
-msgid "%d connections established"
-msgstr "poèet navázaných spojení: %d"
+msgid "%u reno fast retransmits failed"
+msgstr "PoÄet selhÃ¡nÃ­ rychlÃ½ch opakovanÃ½ch odeslÃ¡nÃ­ Reno: %u"
 
-#: ../statistics.c:125
+#: ../statistics.c:279
 #, c-format
-msgid "%d segments received"
-msgstr "poèet pøijmutých segmentù: %d"
+msgid "%u SACK retransmits failed"
+msgstr "PoÄet selhÃ¡nÃ­ opakovanÃ½ch odeslÃ¡nÃ­ SACK: %u"
 
-#: ../statistics.c:126
+#: ../statistics.c:280
 #, c-format
-msgid "%d segments send out"
-msgstr "poèet odeslaných segmentù: %d"
+msgid "%u times receiver scheduled too late for direct processing"
+msgstr "KolikrÃ¡t byl pÅ™ijÃ­maÄ naplÃ¡novÃ¡n pÅ™Ã­liÅ¡ pozdÄ› na pÅ™Ã­mÃ© zpracovanÃ­: %u"
 
-#: ../statistics.c:127
+#: ../statistics.c:281
 #, c-format
-msgid "%d segments retransmited"
-msgstr "poèet pøenesených segmentù: %d"
+msgid "%u packets collapsed in receive queue due to low socket buffer"
+msgstr ""
+"PoÄet packetÅ¯ slouÄenÃ½ch vÂ pÅ™ijÃ­macÃ­ frontÄ› kvÅ¯li malÃ©mu bufferu socketu: %u"
 
-#: ../statistics.c:128
+#: ../statistics.c:282
 #, c-format
-msgid "%d bad segments received."
-msgstr "poèet chybných pøíchozích segmentù: %d."
+msgid "%u DSACKs sent for old packets"
+msgstr "PoÄet packetÅ¯ DSACK odeslanÃ½ch kvÅ¯li starÃ½m packetÅ¯m: %u"
 
-#: ../statistics.c:129
+#: ../statistics.c:283
 #, c-format
-msgid "%d resets sent"
-msgstr "poèet odeslaných resetù: %d"
+msgid "%u DSACKs sent for out of order packets"
+msgstr "PoÄet packetÅ¯ DSCACK odeslanÃ½ch kvÅ¯li packetÅ¯m mimo poÅ™adÃ­: %u"
 
-#: ../statistics.c:134
+#: ../statistics.c:284
 #, c-format
-msgid "%d packets received"
-msgstr "poèet pøijmutých paketù: %d"
+msgid "%u DSACKs received"
+msgstr "PoÄet pÅ™ijatÃ½ch paketÅ¯ DSACK: %u"
 
-#: ../statistics.c:135
+#: ../statistics.c:285
 #, c-format
-msgid "%d packets to unknown port received."
-msgstr "poèet paketù pøijmutých pro neznámý port: %d."
+msgid "%u DSACKs for out of order packets received"
+msgstr "PoÄet packetÅ¯ DSACK pÅ™ijatÃ½ch kvÅ¯li packetÅ¯m mimo poÅ™adÃ­: %u"
 
-#: ../statistics.c:136
+#: ../statistics.c:286
 #, c-format
-msgid "%d packet receive errors"
-msgstr "poèet chyb pøi pøíjmu paketù: %d"
+msgid "%u connections reset due to unexpected SYN"
+msgstr "PoÄet resetÅ¯ spojenÃ­ kvÅ¯li neoÄekÃ¡vanÃ©mu SYN: %u"
 
-#: ../statistics.c:137
+#: ../statistics.c:287
 #, c-format
-msgid "%d packets sent"
-msgstr "poèet odeslaných paketù: %d"
+msgid "%u connections reset due to unexpected data"
+msgstr "PoÄet resetÅ¯ spojenÃ­ kvÅ¯li neoÄekÃ¡vanÃ½m datÅ¯m: %u"
 
-#: ../statistics.c:142
+#: ../statistics.c:288
 #, c-format
-msgid "%d SYN cookies sent"
-msgstr "poèet odeslaných SYN cookies: %d"
+msgid "%u connections reset due to early user close"
+msgstr "PoÄet resetÅ¯ spojenÃ­ kvÅ¯li ÄasnÃ©mu uzavÅ™enÃ­ uÅ¾ivatelem: %u"
 
-#: ../statistics.c:143
+#: ../statistics.c:289
 #, c-format
-msgid "%d SYN cookies received"
-msgstr "poèet pøijmutých SYN cookies: %d"
+msgid "%u connections aborted due to memory pressure"
+msgstr "PoÄet zruÅ¡enÃ½ch spojenÃ­ kvÅ¯li pamÄ›Å¥ovÃ© tÃ­sni: %u"
 
-#: ../statistics.c:144
+#: ../statistics.c:290
 #, c-format
-msgid "%d invalid SYN cookies received"
-msgstr "poèet chybných pøíchozích SYN cookies: %d"
+msgid "%u connections aborted due to timeout"
+msgstr "PoÄet zruÅ¡enÃ½ch spojenÃ­ kvÅ¯li vyprÅ¡enÃ­ ÄasovaÄe: %u"
 
-#: ../statistics.c:146
+#: ../statistics.c:291
 #, c-format
-msgid "%d resets received for embryonic SYN_RECV sockets"
-msgstr "poèet resetù pøijmutých pro sokety ve stavu SYN_PØÍCH: %d"
+msgid "%u connections aborted after user close in linger timeout"
+msgstr ""
+"PoÄet zruÅ¡enÃ½ch spojenÃ­ po tÃ©, co je uÅ¾ivatel uzavÅ™el ve fÃ¡zi doÅ¾itÃ­: %u"
 
-#: ../statistics.c:148
+#: ../statistics.c:292
 #, c-format
-msgid "%d packets pruned from receive queue because of socket buffer overrun"
-msgstr "poèet paketù odstranìných z fronty kvùli pøeteèení bufferu soketu: %d"
+msgid "%u times unabled to send RST due to no memory"
+msgstr "KolikrÃ¡t nebylo moÅ¾nÃ© odeslat RST kvÅ¯li nedostatku pamÄ›ti: %u"
 
-#. obsolete: 2.2.0 doesn't do that anymore
-#: ../statistics.c:151
+#: ../statistics.c:293
 #, c-format
-msgid "%d packets pruned from out-of-order queue"
-msgstr "poèet paketù odstranìných z fronty mimo-poøadí: %d"
+msgid "TCP ran low on memory %u times"
+msgstr "KolikrÃ¡t TCP zpomalilo kvÅ¯li pamÄ›ti: %u"
 
-#: ../statistics.c:152
+#: ../statistics.c:294
 #, c-format
-msgid ""
-"%d packets dropped from out-of-order queue because of socket buffer overrun"
-msgstr ""
-"poèet paketù zahozených z fronty mimo-poøadí kvùli pøeteèení bufferu soketu: "
-"%d"
+msgid "%u TCP data loss events"
+msgstr "PoÄet ztrÃ¡t dat TCP: %u"
 
-#: ../statistics.c:154
+#: ../statistics.c:295
 #, c-format
-msgid "%d ICMP packets dropped because they were out-of-window"
-msgstr "poèet ICMP paketù zahozených, proto¾e byly mimo-okno: %d"
+msgid "%u congestion windows recovered without slow start by DSACK"
+msgstr "PoÄet zotavenÃ­ ze zahlcenÃ­ okna bez pomalÃ©ho startu pomocÃ­ DSACK: %u"
 
-#: ../statistics.c:156
+#: ../statistics.c:297
 #, c-format
-msgid "%d ICMP packets dropped because socket was locked"
-msgstr "poèet ICMP paketù zahozených kvùli zamèenému soketu: %d"
+msgid "%u classic Reno fast retransmits failed"
+msgstr "PoÄet selhÃ¡nÃ­ klasickÃ©ho rychlÃ©ho opakovanÃ©ho odeslÃ¡nÃ­ Reno: %u"
 
-#: ../statistics.c:222
+#: ../statistics.c:373
 msgid "enabled"
 msgstr "zapnuto"
 
-#: ../statistics.c:222
+#: ../statistics.c:373
 msgid "disabled"
 msgstr "vypnuto"
 
-#: ../statistics.c:272
+#: ../statistics.c:511 ../statistics.c:555
+msgid "cannot open /proc/net/snmp"
+msgstr "/proc/net/snmp nelze otevÅ™Ã­t"
+
+#: ../statistics.c:516
 #, c-format
-msgid "unknown title %s\n"
-msgstr "titulek %s je neznámý\n"
+msgid "Problem while parsing /proc/net/snmp\n"
+msgstr "PotÃ­Å¾e pÅ™i pÅ™i zpracovÃ¡nÃ­ /proc/net/snmp\n"
 
-#: ../statistics.c:298
-msgid "error parsing /proc/net/snmp"
-msgstr "chyba pøi zpracování /proc/net/snmp"
+#: ../statistics.c:527
+#, c-format
+msgid "Problem while parsing /proc/net/netstat\n"
+msgstr "PotÃ­Å¾e pÅ™i pÅ™i zpracovÃ¡nÃ­ /proc/net/netstat\n"
 
-#: ../statistics.c:311
-msgid "cannot open /proc/net/snmp"
-msgstr "/proc/net/snmp nelze otevøít"
+#: ../statistics.c:545
+msgid "cannot open /proc/net/snmp6"
+msgstr "/proc/net/snmp6 nelze otevÅ™Ã­t"
 
 #: ../lib/activate.c:69
 #, c-format
 msgid "Hardware type `%s' not supported.\n"
-msgstr "Hardwarový typ `%s' není podporován.\n"
+msgstr "HardwarovÃ½ typ â€ž%sâ€œ nenÃ­ podporovÃ¡n.\n"
 
 #: ../lib/activate.c:73
 #, c-format
 msgid "Cannot change line discipline to `%s'.\n"
-msgstr "Linkovou disciplínu nelze na `%s' zmìnit.\n"
+msgstr "Linkovou disciplÃ­nu nelze na â€ž%sâ€œ zmÄ›nit.\n"
 
-#: ../lib/af.c:145 ../lib/hw.c:148
+#: ../lib/af.c:157 ../lib/hw.c:166
 msgid "UNSPEC"
-msgstr "NEZNÁM"
+msgstr "NEZNÃM"
 
-#: ../lib/af.c:147
+#: ../lib/af.c:159
 msgid "UNIX Domain"
-msgstr "Doména UNIX"
+msgstr "DomÃ©na UNIX"
 
-#: ../lib/af.c:150
+#: ../lib/af.c:162
 msgid "DARPA Internet"
 msgstr "DARPA Internet"
 
-#: ../lib/af.c:153
+#: ../lib/af.c:165
 msgid "IPv6"
 msgstr "IPv6"
 
-#: ../lib/af.c:156 ../lib/hw.c:169
+#: ../lib/af.c:168 ../lib/hw.c:187
 msgid "AMPR AX.25"
 msgstr "AMPR AX.25"
 
-#: ../lib/af.c:159 ../lib/hw.c:175
+#: ../lib/af.c:171 ../lib/hw.c:193
 msgid "AMPR NET/ROM"
 msgstr "AMPR NET/ROM"
 
-#: ../lib/af.c:162
+#: ../lib/af.c:174
 msgid "Novell IPX"
 msgstr "Novell IPX"
 
-#: ../lib/af.c:165
+#: ../lib/af.c:177
 msgid "Appletalk DDP"
 msgstr "Appletalk DDP"
 
-#: ../lib/af.c:168 ../lib/hw.c:207
+#: ../lib/af.c:180 ../lib/hw.c:228
 msgid "Econet"
 msgstr "Econet"
 
-#: ../lib/af.c:171 ../lib/hw.c:172
+#: ../lib/af.c:183
+msgid "CCITT X.25"
+msgstr "CCITT X.25"
+
+#: ../lib/af.c:186 ../lib/hw.c:190
 msgid "AMPR ROSE"
 msgstr "AMPR ROSE"
 
-#: ../lib/af.c:174 ../lib/hw.c:160
+#: ../lib/af.c:189 ../lib/hw.c:178
 msgid "Ash"
 msgstr "Ash"
 
-#: ../lib/af.c:232
+#: ../lib/af.c:247
+#, c-format
 msgid "Please don't supply more than one address family.\n"
-msgstr "Nezadávejte více ne¾ jednu tøídu adres.\n"
+msgstr "NezadÃ¡vejte vÃ­ce neÅ¾ jednu tÅ™Ã­du adres.\n"
 
-#: ../lib/af.c:293
+#: ../lib/af.c:308
+#, c-format
 msgid "Too much address family arguments.\n"
-msgstr "Bylo zadáno pøíli¹ mnoho tøíd adres.\n"
+msgstr "Bylo zadÃ¡no pÅ™Ã­liÅ¡ mnoho tÅ™Ã­d adres.\n"
 
-#: ../lib/af.c:304
+#: ../lib/af.c:319
 #, c-format
 msgid "Unknown address family `%s'.\n"
-msgstr "Tøída adres `%s' není známa.\n"
-
-#: ../lib/arcnet.c:53 ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52
-#: ../lib/fddi.c:67 ../lib/hippi.c:68 ../lib/inet.c:244 ../lib/inet.c:259
-#: ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78 ../lib/rose.c:71
-#: ../lib/rose.c:126 ../lib/unix.c:56 ../lib/unix.c:76
-msgid "[NONE SET]"
-msgstr "[NENASTAVENO]"
+msgstr "TÅ™Ã­da adres `%s' nenÃ­ znÃ¡ma.\n"
 
-#: ../lib/arcnet.c:81 ../lib/arcnet.c:96
+#: ../lib/arcnet.c:70 ../lib/arcnet.c:85
 #, c-format
 msgid "in_arcnet(%s): invalid arcnet address!\n"
-msgstr "in_arcnet(%s): chybná arcnet adresa!\n"
+msgstr "in_arcnet(%s): chybnÃ¡ arcnet adresa!\n"
 
-#: ../lib/arcnet.c:108
+#: ../lib/arcnet.c:97
 #, c-format
 msgid "in_arcnet(%s): trailing : ignored!\n"
-msgstr "in_arcnet(%s): nadbyteèné : ignorováno!\n"
+msgstr "in_arcnet(%s): nadbyteÄnÃ© : ignorovÃ¡no!\n"
 
-#: ../lib/arcnet.c:120
+#: ../lib/arcnet.c:109
 #, c-format
 msgid "in_arcnet(%s): trailing junk!\n"
-msgstr "in_arcnet(%s): nadbyteèné znaky!\n"
+msgstr "in_arcnet(%s): nadbyteÄnÃ© znaky!\n"
 
 #: ../lib/ash.c:81
+#, c-format
 msgid "Malformed Ash address"
-msgstr "Chybná Ash adresa"
+msgstr "ChybnÃ¡ Ash adresa"
+
+#: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
+#: ../lib/inet.c:259 ../lib/inet6.c:145 ../lib/ipx.c:81 ../lib/netrom.c:78
+#: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
+msgid "[NONE SET]"
+msgstr "[NENASTAVENO]"
 
 #: ../lib/ax25.c:97 ../lib/netrom.c:100
 msgid "Invalid callsign"
-msgstr "Nesprávný volací znak"
+msgstr "NesprÃ¡vnÃ½ volacÃ­ znak"
 
 #: ../lib/ax25.c:110 ../lib/netrom.c:113
 msgid "Callsign too long"
-msgstr "Volací znak je pøíli¹ dlouhý."
+msgstr "VolacÃ­ znak je pÅ™Ã­liÅ¡ dlouhÃ½."
 
 #: ../lib/ax25_gr.c:47
+#, c-format
 msgid "AX.25 not configured in this system.\n"
-msgstr "AX.25 není na tomto systému nakonfigurováno.\n"
+msgstr "AX.25 nenÃ­ na tomto systÃ©mu nakonfigurovÃ¡no.\n"
 
 #: ../lib/ax25_gr.c:50
+#, c-format
 msgid "Kernel AX.25 routing table\n"
-msgstr "Smìrovací tabulka v jádru pro AX.25\n"
+msgstr "SmÄ›rovacÃ­ tabulka v jÃ¡dru pro AX.25\n"
 
 #. xxx
 #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
+#, c-format
 msgid "Destination  Iface    Use\n"
-msgstr "Adresát      Rozhraní U¾ití\n"
-
-#: ../lib/ddp_gr.c:21
-msgid "Routing table for `ddp' not yet supported.\n"
-msgstr "Smìrovací tabulka pro `ddp' není zatím podporována.\n"
+msgstr "AdresÃ¡t      RozhranÃ­ UÅ¾itÃ­\n"
 
 #: ../lib/ether.c:74 ../lib/ether.c:91
 #, c-format
 msgid "in_ether(%s): invalid ether address!\n"
-msgstr "in_ether(%s): chybná ethernetová adresa!\n"
+msgstr "in_ether(%s): chybnÃ¡ ethernetovÃ¡ adresa!\n"
 
 #: ../lib/ether.c:105
 #, c-format
 msgid "in_ether(%s): trailing : ignored!\n"
-msgstr "in_ether(%s): nadbyteèné : ignorováno!\n"
+msgstr "in_ether(%s): nadbyteÄnÃ© : ignorovÃ¡no!\n"
 
 #: ../lib/ether.c:117
 #, c-format
 msgid "in_ether(%s): trailing junk!\n"
-msgstr "in_ether(%s): nadbyteèné znaky!\n"
+msgstr "in_ether(%s): nadbyteÄnÃ© znaky!\n"
 
-#: ../lib/fddi.c:95 ../lib/fddi.c:110
+#: ../lib/fddi.c:84 ../lib/fddi.c:99
 #, c-format
 msgid "in_fddi(%s): invalid fddi address!\n"
-msgstr "in_fddi(%s): chybná fddi adresa!\n"
+msgstr "in_fddi(%s): chybnÃ¡ fddi adresa!\n"
 
-#: ../lib/fddi.c:122
+#: ../lib/fddi.c:111
 #, c-format
 msgid "in_fddi(%s): trailing : ignored!\n"
-msgstr "in_fddi(%s): nadbyteèné : ignorováno!\n"
+msgstr "in_fddi(%s): nadbyteÄnÃ© : ignorovÃ¡no!\n"
 
-#: ../lib/fddi.c:134
+#: ../lib/fddi.c:123
 #, c-format
 msgid "in_fddi(%s): trailing junk!\n"
-msgstr "in_fddi(%s): nadbyteèné znaky!\n"
+msgstr "in_fddi(%s): nadbyteÄnÃ© znaky!\n"
 
-#: ../lib/getroute.c:97 ../lib/setroute.c:76
+#: ../lib/getroute.c:101 ../lib/setroute.c:80
 #, c-format
 msgid "Address family `%s' not supported.\n"
-msgstr "Tøída adres `%s' není podporována.\n"
+msgstr "TÅ™Ã­da adres `%s' nenÃ­ podporovÃ¡na.\n"
 
-#: ../lib/getroute.c:103 ../lib/setroute.c:80
+#: ../lib/getroute.c:107 ../lib/setroute.c:84
 #, c-format
 msgid "No routing for address family `%s'.\n"
-msgstr "Pro tøídu adres `%s' není ¾ádné smìrování.\n"
+msgstr "Pro tÅ™Ã­du adres `%s' nenÃ­ Å¾Ã¡dnÃ© smÄ›rovÃ¡nÃ­.\n"
 
-#: ../lib/hippi.c:96 ../lib/hippi.c:111
+#: ../lib/hippi.c:84 ../lib/hippi.c:99
 #, c-format
 msgid "in_hippi(%s): invalid hippi address!\n"
-msgstr "in_hippi(%s): chybná hippi adresa!\n"
+msgstr "in_hippi(%s): chybnÃ¡ hippi adresa!\n"
 
-#: ../lib/hippi.c:123
+#: ../lib/hippi.c:111
 #, c-format
 msgid "in_hippi(%s): trailing : ignored!\n"
-msgstr "in_hippi(%s): nadbyteèné : ignorováno!\n"
+msgstr "in_hippi(%s): nadbyteÄnÃ© : ignorovÃ¡no!\n"
 
-#: ../lib/hippi.c:134
+#: ../lib/hippi.c:122
 #, c-format
 msgid "in_hippi(%s): trailing junk!\n"
-msgstr "in_hippi(%s): nadbyteèné znaky!\n"
+msgstr "in_hippi(%s): nadbyteÄnÃ© znaky!\n"
 
-#: ../lib/hw.c:147
+#: ../lib/hw.c:165
 msgid "Local Loopback"
-msgstr "Místní smyèka"
+msgstr "MÃ­stnÃ­ smyÄka"
 
-#: ../lib/hw.c:150
+#: ../lib/hw.c:168
 msgid "Serial Line IP"
-msgstr "IP po sériové lince"
+msgstr "IP po sÃ©riovÃ© lince"
 
-#: ../lib/hw.c:151
+#: ../lib/hw.c:169
 msgid "VJ Serial Line IP"
-msgstr "Vj IP po sériové lince"
+msgstr "VJ IP po sÃ©riovÃ© lince"
 
-#: ../lib/hw.c:152
+#: ../lib/hw.c:170
 msgid "6-bit Serial Line IP"
-msgstr "6bitový IP po sériové lince"
+msgstr "6bitovÃ½ IP po sÃ©riovÃ© lince"
 
-#: ../lib/hw.c:153
+#: ../lib/hw.c:171
 msgid "VJ 6-bit Serial Line IP"
-msgstr "6bitový VJ IP po sériové lince"
+msgstr "6bitovÃ½ VJ IP po sÃ©riovÃ© lince"
 
-#: ../lib/hw.c:154
+#: ../lib/hw.c:172
 msgid "Adaptive Serial Line IP"
-msgstr "Adaptivní IP po sériové lince"
+msgstr "AdaptivnÃ­ IP po sÃ©riovÃ© lince"
 
-#: ../lib/hw.c:157
+#: ../lib/hw.c:175
 msgid "Ethernet"
 msgstr "Ethernet"
 
-#: ../lib/hw.c:163
+#: ../lib/hw.c:181
 msgid "Fiber Distributed Data Interface"
 msgstr "Fiber Distributed Data Interface"
 
-#: ../lib/hw.c:166
+#: ../lib/hw.c:184
 msgid "HIPPI"
 msgstr "HIPPI"
 
-#: ../lib/hw.c:178
+#: ../lib/hw.c:196
+msgid "generic X.25"
+msgstr "obecnÃ© X.25"
+
+#: ../lib/hw.c:199
 msgid "IPIP Tunnel"
 msgstr "IPIP Tunnel"
 
-#: ../lib/hw.c:181
+#: ../lib/hw.c:202
 msgid "Point-to-Point Protocol"
-msgstr "Point-to-Point Protokol"
+msgstr "DvoubodovÃ½ protokol"
 
-#: ../lib/hw.c:184
+#: ../lib/hw.c:205
 msgid "(Cisco)-HDLC"
 msgstr "(Cisco)-HDLC"
 
-#: ../lib/hw.c:185
+#: ../lib/hw.c:206
 msgid "LAPB"
 msgstr "LAPB"
 
-#: ../lib/hw.c:188
+#: ../lib/hw.c:209
 msgid "ARCnet"
 msgstr "ARCnet"
 
-#: ../lib/hw.c:191
+#: ../lib/hw.c:212
 msgid "Frame Relay DLCI"
 msgstr "Frame Relay DLCI"
 
-#: ../lib/hw.c:192
+#: ../lib/hw.c:213
 msgid "Frame Relay Access Device"
-msgstr "Pøístupové zaøízení Frame Relay"
+msgstr "PÅ™Ã­stupovÃ© zaÅ™Ã­zenÃ­ Frame Relay"
 
-#: ../lib/hw.c:195
+#: ../lib/hw.c:216
 msgid "IPv6-in-IPv4"
 msgstr "IPv6-in-IPv4"
 
-#: ../lib/hw.c:198
+#: ../lib/hw.c:219
 msgid "IrLAP"
 msgstr "IrLAP"
 
-#: ../lib/hw.c:201
+#: ../lib/hw.c:222
 msgid "16/4 Mbps Token Ring"
 msgstr "Token Ring 16/4 Mb/s"
 
-#: ../lib/hw.c:203
-#, fuzzy
+#: ../lib/hw.c:224
 msgid "16/4 Mbps Token Ring (New)"
-msgstr "Token Ring 16/4 Mb/s"
+msgstr "Token Ring 16/4 Mb/s (NovÃ½)"
 
-#: ../lib/inet.c:153 ../lib/inet6.c:79
+#: ../lib/hw.c:231
+msgid "InfiniBand"
+msgstr "InfiniBand"
+
+#: ../lib/hw.c:234
+msgid "Generic EUI-64"
+msgstr "ObecnÃ© EUI-64"
+
+#: ../lib/inet.c:153 ../lib/inet6.c:94
 #, c-format
 msgid "rresolve: unsupport address family %d !\n"
-msgstr "rresolve: tøída adres %d není podporována!\n"
+msgstr "rresolve: tÅ™Ã­da adres %d nenÃ­ podporovÃ¡na!\n"
 
-#: ../lib/inet6_gr.c:79
+#: ../lib/inet6.c:147
+msgid "[UNKNOWN]"
+msgstr "[NEZNÃMÃ]"
+
+#: ../lib/inet6_gr.c:71
+#, c-format
 msgid "INET6 (IPv6) not configured in this system.\n"
-msgstr "INET6 (IPv6) není na tomto systému nakonfigurováno.\n"
+msgstr "INET6 (IPv6) nenÃ­ na tomto systÃ©mu nakonfigurovÃ¡no.\n"
 
-#: ../lib/inet6_gr.c:82
+#: ../lib/inet6_gr.c:76
+#, c-format
+msgid "Kernel IPv6 routing cache\n"
+msgstr "SmÄ›rovacÃ­ cache v jÃ¡dru pro IPv6\n"
+
+#: ../lib/inet6_gr.c:78
+#, c-format
 msgid "Kernel IPv6 routing table\n"
-msgstr "Smìrovací tabulka v jádru pro IPv6\n"
+msgstr "SmÄ›rovacÃ­ tabulka v jÃ¡dru pro IPv6\n"
 
-#: ../lib/inet6_gr.c:84
+#: ../lib/inet6_gr.c:80
+#, c-format
 msgid ""
-"Destination                                 Next Hop                         "
-"       Flags Metric Ref    Use Iface\n"
+"Destination                    Next Hop                   Flag Met Ref Use "
+"If\n"
 msgstr ""
-"Adresát                                     Dal¹í Smìrovaè                   "
-"       Pøízn Metrika Odkaz U¾it Rozhraní\n"
+"AdresÃ¡t                        DalÅ¡Ã­ smÄ›rovaÄ             PÅ™Ã­z Met Odk UÅ¾t "
+"Rozhr\n"
 
-#: ../lib/inet6_gr.c:158
+#: ../lib/inet6_gr.c:174
+#, c-format
 msgid "Kernel IPv6 Neighbour Cache\n"
-msgstr "Cache sousedù v jádru pro IPv6\n"
+msgstr "Cache sousedÅ¯ v jÃ¡dru pro IPv6\n"
 
-#: ../lib/inet6_gr.c:161
+#: ../lib/inet6_gr.c:177
+#, c-format
 msgid ""
 "Neighbour                                   HW Address        Iface    Flags "
 "Ref State\n"
 msgstr ""
-"Soused                                      HW Adresa         Rozhraní Pøízn "
+"Soused                                      HW Adresa         RozhranÃ­ PÅ™Ã­zn "
 "Odkazy Stav\n"
 
-#: ../lib/inet6_gr.c:165
+#: ../lib/inet6_gr.c:181
+#, c-format
 msgid ""
 "Neighbour                                   HW Address        Iface    Flags "
 "Ref State            Stale(sec) Delete(sec)\n"
 msgstr ""
-"Soused                                      HW Adresa         Rozhraní "
-"Pøíznaky Odkazy Stav          Pro¹lý(sec) Smazat(sec)\n"
+"Soused                                      HW Adresa         RozhranÃ­ "
+"PÅ™Ã­znaky Odkazy Stav          ProÅ¡lÃ½(sec) Smazat(sec)\n"
 
 #: ../lib/inet6_sr.c:46
+#, c-format
 msgid "Usage: inet6_route [-vF] del Target\n"
-msgstr "Pou¾ití: inet6_route [-vF] del Cíl\n"
+msgstr "PouÅ¾itÃ­: inet6_route [-vF] del CÃ­l\n"
 
 #: ../lib/inet6_sr.c:47
+#, c-format
 msgid "       inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
-msgstr "       inet6_route [-vF] add Cíl [gw Gw] [metrika M] [[dev] If]\n"
+msgstr "       inet6_route [-vF] add CÃ­l [gw Gw] [metrika M] [[dev] If]\n"
 
 #: ../lib/inet6_sr.c:48
+#, c-format
 msgid "       inet6_route [-FC] flush      NOT supported\n"
-msgstr "       inet6_route [-FC] flush      NENÍ podporováno\n"
+msgstr "       inet6_route [-FC] flush      NENÃ podporovÃ¡no\n"
 
-#: ../lib/inet6_sr.c:182
+#: ../lib/inet6_sr.c:188
+#, c-format
 msgid "Flushing `inet6' routing table not supported\n"
-msgstr "Smìrovací tabulku `inet6' nelze vyprazdòovat\n"
+msgstr "SmÄ›rovacÃ­ tabulku `inet6' nelze vyprazdÅˆovat\n"
 
 #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
+#, c-format
 msgid "INET (IPv4) not configured in this system.\n"
-msgstr "INET (IPv4) není na tomto systému nakonfigurováno.\n"
+msgstr "INET (IPv4) nenÃ­ na tomto systÃ©mu nakonfigurovÃ¡no.\n"
 
 #: ../lib/inet_gr.c:53
+#, c-format
 msgid "Kernel IP routing table\n"
-msgstr "Smìrovací tabulka v jádru pro IP\n"
+msgstr "SmÄ›rovacÃ­ tabulka v jÃ¡dru pro IP\n"
 
 #: ../lib/inet_gr.c:56
+#, c-format
 msgid ""
 "Destination     Gateway         Genmask         Flags Metric Ref    Use "
 "Iface\n"
 msgstr ""
-"Adresát         Brána           Maska           Pøízn Metrik Odkaz  U¾t "
-"Rozhraní\n"
+"AdresÃ¡t         BrÃ¡na           Maska           PÅ™Ã­zn Metrik OdkazÅ¯ UÅ¾t "
+"RozhranÃ­\n"
 
 #: ../lib/inet_gr.c:59
+#, c-format
 msgid ""
 "Destination     Gateway         Genmask         Flags   MSS Window  irtt "
 "Iface\n"
 msgstr ""
-"Adresát         Brána           Maska           Pøízn   MSS Okno    irtt "
-"Rozhraní\n"
+"AdresÃ¡t         BrÃ¡na           Maska           PÅ™Ã­zn   MSS Okno    irtt "
+"RozhranÃ­\n"
 
 #: ../lib/inet_gr.c:62
+#, c-format
 msgid ""
 "Destination     Gateway         Genmask         Flags Metric Ref    Use "
 "Iface    MSS   Window irtt\n"
 msgstr ""
-"Adresát         Brána           Maska           Pøízn Metrik Odkazy U¾t "
-"Rozhraní MSS   Okno   irtt\n"
+"AdresÃ¡t         BrÃ¡na           Maska           PÅ™Ã­zn Metrik Odkazy UÅ¾t "
+"RozhranÃ­ MSS   Okno   irtt\n"
 
 #: ../lib/inet_gr.c:237
+#, c-format
 msgid "Kernel IP routing cache\n"
-msgstr "Smìrovací cache v jádru pro IP\n"
+msgstr "SmÄ›rovacÃ­ cache v jÃ¡dru pro IP\n"
 
 #: ../lib/inet_gr.c:258
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags Metric Ref    Use "
 "Iface\n"
 msgstr ""
-"Odesílatel      Adresát         Maska           Pøízn Metrik Odkazy U¾t "
-"Rozhraní\n"
+"OdesÃ­latel      AdresÃ¡t         Maska           PÅ™Ã­zn Metrik Odkazy UÅ¾t "
+"RozhranÃ­\n"
 
 #: ../lib/inet_gr.c:261
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags   MSS Window  irtt "
 "Iface\n"
 msgstr ""
-"Odesílatel      Adresát         Maska           Pøízn   MSS Okno    irtt "
-"Rozhraní\n"
+"OdesÃ­latel      AdresÃ¡t         Maska           PÅ™Ã­zn   MSS Okno    irtt "
+"RozhranÃ­\n"
 
 #: ../lib/inet_gr.c:266
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags Metric Ref    Use "
 "Iface    MSS   Window irtt  HH  Arp\n"
 msgstr ""
-"Odesílatel      Adresát         Maska           Pøízn Metrik Odkazy U¾t "
-"Rozhraní MSS   Okno   irtt HH   Arp\n"
+"OdesÃ­latel      AdresÃ¡t         Maska           PÅ™Ã­zn Metrik Odkazy UÅ¾t "
+"RozhranÃ­ MSS   Okno   irtt HH   Arp\n"
 
 #: ../lib/inet_gr.c:290
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags Metric Ref    Use "
 "Iface    MSS   Window irtt  TOS HHRef HHUptod     SpecDst\n"
 msgstr ""
-"Odesílatel      Adresát         Maska           Pøízn Metrik Odkazy U¾t "
-"Rozhraní MSS    Okno irtt   TOS HHOdk HHAktuál    Zvlá¹tCíl\n"
+"OdesÃ­latel      AdresÃ¡t         Maska           PÅ™Ã­zn Metrik Odkazy UÅ¾t "
+"RozhranÃ­ MSS    Okno irtt   TOS HHOdk HHAktuÃ¡l    ZvlÃ¡Å¡tCÃ­l\n"
 
-#: ../lib/inet_sr.c:50
+#: ../lib/inet_sr.c:51
+#, c-format
 msgid ""
 "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
 "[[dev] If]\n"
 msgstr ""
-"Pou¾ití: inet_route [-vF] del {-host|-net} Cíl[/prefix] [gw Gw] [metrika M] "
+"PouÅ¾itÃ­: inet_route [-vF] del {-host|-net} CÃ­l[/prefix] [gw Gw] [metrika M] "
 "[[dev] If]\n"
 
-#: ../lib/inet_sr.c:51
+#: ../lib/inet_sr.c:52
+#, c-format
 msgid ""
 "       inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
 msgstr ""
-"       inet_route [-vF] add {-host|-net} Cíl[/prefix] [gw Gw] [metrika M]\n"
+"       inet_route [-vF] add {-host|-net} CÃ­l[/prefix] [gw Gw] [metrika M]\n"
 
-#: ../lib/inet_sr.c:52
+#: ../lib/inet_sr.c:53
+#, c-format
 msgid ""
 "                              [netmask N] [mss Mss] [window W] [irtt I]\n"
 msgstr ""
 "                              [netmask N] [mss Mss] [window W] [irtt I]\n"
 
-#: ../lib/inet_sr.c:53
+#: ../lib/inet_sr.c:54
+#, c-format
 msgid "                              [mod] [dyn] [reinstate] [[dev] If]\n"
 msgstr "                              [mod] [dyn] [reinstate] [[dev] If]\n"
 
-#: ../lib/inet_sr.c:54
+#: ../lib/inet_sr.c:55
+#, c-format
 msgid ""
 "       inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
 msgstr ""
-"       inet_route [-vF] add {-host|-net} Cíl/[prefix] [metrika M] reject\n"
+"       inet_route [-vF] add {-host|-net} CÃ­l/[prefix] [metrika M] reject\n"
 
-#: ../lib/inet_sr.c:55
+#: ../lib/inet_sr.c:56
+#, c-format
 msgid "       inet_route [-FC] flush      NOT supported\n"
-msgstr "       inet_route [-FC] flush      NENÍ podporováno\n"
+msgstr "       inet_route [-FC] flush      NENÃ podporovÃ¡no\n"
 
 #: ../lib/inet_sr.c:158
 #, c-format
 msgid "route: %s: cannot use a NETWORK as gateway!\n"
-msgstr "route: %s: sí» nelze pou¾ít jako bránu!\n"
+msgstr "route: %s: sÃ­Å¥ nelze pouÅ¾Ã­t jako brÃ¡nu!\n"
 
 #: ../lib/inet_sr.c:174
-#, fuzzy
+#, c-format
 msgid "route: Invalid MSS/MTU.\n"
-msgstr "route: Nesprávné NSS.\n"
+msgstr "route: NeplatnÃ© MSS/MTU.\n"
 
 #: ../lib/inet_sr.c:187
+#, c-format
 msgid "route: Invalid window.\n"
-msgstr "route: Nesprávné okno.\n"
+msgstr "route: NesprÃ¡vnÃ© okno.\n"
 
 #: ../lib/inet_sr.c:203
+#, c-format
 msgid "route: Invalid initial rtt.\n"
-msgstr "route: Nesprávné zahajovací rtt.\n"
+msgstr "route: NesprÃ¡vnÃ© zahajovacÃ­ rtt.\n"
 
 #: ../lib/inet_sr.c:261
 #, c-format
 msgid "route: netmask %.8x doesn't make sense with host route\n"
-msgstr "route: sí»ová maska %.8x nedává smysl, kdy¾ cílem je cesty poèítaè\n"
+msgstr "route: sÃ­Å¥ovÃ¡ maska %.8x nedÃ¡vÃ¡ smysl, kdyÅ¾ cÃ­lem je cesty poÄÃ­taÄ\n"
 
 #: ../lib/inet_sr.c:265
 #, c-format
 msgid "route: bogus netmask %s\n"
-msgstr "route: sí»ová maska %s je nesprávná\n"
+msgstr "route: sÃ­Å¥ovÃ¡ maska %s je nesprÃ¡vnÃ¡\n"
 
 #: ../lib/inet_sr.c:270
+#, c-format
 msgid "route: netmask doesn't match route address\n"
-msgstr "route: sí»ová maska nevyhovuje adrese cesty\n"
+msgstr "route: sÃ­Å¥ovÃ¡ maska nevyhovuje adrese cesty\n"
 
 #: ../lib/inet_sr.c:306
+#, c-format
 msgid "Flushing `inet' routing table not supported\n"
-msgstr "Smìrovací cache `inet' nelze vyprazdòovat\n"
+msgstr "SmÄ›rovacÃ­ cache `inet' nelze vyprazdÅˆovat\n"
 
 #: ../lib/inet_sr.c:310
+#, c-format
 msgid "Modifying `inet' routing cache not supported\n"
-msgstr "Smìrovací cache `inet' nelze mìnit\n"
+msgstr "SmÄ›rovacÃ­ cache `inet' nelze mÄ›nit\n"
 
-#: ../lib/ipx_gr.c:52
-msgid "IPX not configured in this system.\n"
-msgstr "IPX není na tomto systému nakonfigurováno.\n"
+#: ../lib/ipx_gr.c:53
+#, c-format
+msgid "IPX routing not in file %s or %s found.\n"
+msgstr "SmÄ›rovÃ¡nÃ­ IPX nenalezeno vÂ souboru %s nebo %s.\n"
 
-#: ../lib/ipx_gr.c:56
+#: ../lib/ipx_gr.c:62
+#, c-format
 msgid "Kernel IPX routing table\n"
-msgstr "Smìrovací tabulka v jádru pro IPX\n"
+msgstr "SmÄ›rovacÃ­ tabulka v jÃ¡dru pro IPX\n"
 
 #. xxx
-#: ../lib/ipx_gr.c:57
+#: ../lib/ipx_gr.c:63
+#, c-format
 msgid "Destination               Router Net                Router Node\n"
-msgstr "Cíl                       Smìrovaè Sí»              Smìrovaè Uzel\n"
+msgstr "CÃ­l                       SmÄ›rovaÄ SÃ­Å¥              SmÄ›rovaÄ Uzel\n"
 
 #: ../lib/ipx_sr.c:33
+#, c-format
 msgid "IPX: this needs to be written\n"
-msgstr "IPX: toto je tøeba ulo¾it\n"
+msgstr "IPX: toto je tÅ™eba uloÅ¾it\n"
 
-#: ../lib/masq_info.c:197
+#: ../lib/masq_info.c:198
+#, c-format
 msgid "IP masquerading entries\n"
-msgstr "IP maskovací polo¾ky\n"
+msgstr "IP maskovacÃ­ poloÅ¾ky\n"
 
-#: ../lib/masq_info.c:200
+#: ../lib/masq_info.c:201
+#, c-format
 msgid "prot   expire source               destination          ports\n"
-msgstr "prot   ¾ivot  zdroj                cíl                  porty\n"
+msgstr "prot   Å¾ivot  zdroj                cÃ­l                  porty\n"
 
-#: ../lib/masq_info.c:203
+#: ../lib/masq_info.c:204
+#, c-format
 msgid ""
-"prot   expire    initseq delta prevd source               destination        "
-"  ports\n"
+"prot   expire    initseq delta prevd source               "
+"destination          ports\n"
 msgstr ""
-"prot   ¾ivot     zahajsek delta pøedchd zdroj             cíl                "
-"   porty\n"
+"prot   Å¾ivot     zahajsek delta pÅ™edchd zdroj             "
+"cÃ­l                   porty\n"
 
 #: ../lib/netrom_gr.c:48
+#, c-format
 msgid "NET/ROM not configured in this system.\n"
-msgstr "NET/ROM není na tomto systému nakonfigurováno.\n"
+msgstr "NET/ROM nenÃ­ na tomto systÃ©mu nakonfigurovÃ¡no.\n"
 
 #: ../lib/netrom_gr.c:51
+#, c-format
 msgid "Kernel NET/ROM routing table\n"
-msgstr "Smìrovací tabulka v jádru pro NET/ROM\n"
+msgstr "SmÄ›rovacÃ­ tabulka v jÃ¡dru pro NET/ROM\n"
 
 #: ../lib/netrom_gr.c:52
+#, c-format
 msgid "Destination  Mnemonic  Quality  Neighbour  Iface\n"
-msgstr "Cíl          Mnemonika Kvalita  Soused     Rozhraní\n"
+msgstr "CÃ­l          Mnemonika Kvalita  Soused     RozhranÃ­\n"
 
 #: ../lib/netrom_sr.c:34
+#, c-format
 msgid "netrom usage\n"
-msgstr "pou¾ití netrom\n"
+msgstr "pouÅ¾itÃ­ netrom\n"
 
 #: ../lib/netrom_sr.c:44
+#, c-format
 msgid "NET/ROM: this needs to be written\n"
-msgstr "NET/ROM: toto je potøeba ulo¾it\n"
+msgstr "NET/ROM: toto je potÅ™eba uloÅ¾it\n"
 
 #: ../lib/ppp.c:44
+#, c-format
 msgid "You cannot start PPP with this program.\n"
-msgstr "Tímto programem nelze PPP spustit.\n"
+msgstr "TÃ­mto programem nelze PPP spustit.\n"
 
 #: ../lib/ppp_ac.c:38
+#, c-format
 msgid "Sorry, use pppd!\n"
-msgstr "Lituji, pou¾ijte pppd!\n"
+msgstr "Lituji, pouÅ¾ijte pppd!\n"
 
 #: ../lib/rose.c:87
 msgid "Node address must be ten digits"
-msgstr "Adresa uzlu musí mít 10 èíslic"
+msgstr "Adresa uzlu musÃ­ mÃ­t 10 ÄÃ­slic"
 
 #: ../lib/rose_gr.c:51
+#, c-format
 msgid "ROSE not configured in this system.\n"
-msgstr "ROSE není na tomto systému nakonfigurováno.\n"
+msgstr "ROSE nenÃ­ na tomto systÃ©mu nakonfigurovÃ¡no.\n"
 
 #: ../lib/rose_gr.c:54
+#, c-format
 msgid "Kernel ROSE routing table\n"
-msgstr "Smìrovací tabulka v jádru pro ROSE\n"
+msgstr "SmÄ›rovacÃ­ tabulka v jÃ¡dru pro ROSE\n"
 
-#: ../lib/tr.c:70 ../lib/tr.c:85
+#: ../lib/tr.c:86 ../lib/tr.c:101
 #, c-format
 msgid "in_tr(%s): invalid token ring address!\n"
-msgstr "in_tr(%s): nesprávná token ring adresa!\n"
+msgstr "in_tr(%s): nesprÃ¡vnÃ¡ token ring adresa!\n"
 
-#: ../lib/tr.c:97
+#: ../lib/tr.c:113
 #, c-format
 msgid "in_tr(%s): trailing : ignored!\n"
-msgstr "in_tr(%s): nadbyteèné: ignorováno!\n"
+msgstr "in_tr(%s): nadbyteÄnÃ©: ignorovÃ¡no!\n"
 
-#: ../lib/tr.c:109
+#: ../lib/tr.c:125
 #, c-format
 msgid "in_tr(%s): trailing junk!\n"
-msgstr "in_tr(%s): nadbyteèné znaky!\n"
+msgstr "in_tr(%s): nadbyteÄnÃ© znaky!\n"
 
-#: ../lib/interface.c:124
+#: ../lib/interface.c:176
 #, c-format
 msgid "warning: no inet socket available: %s\n"
-msgstr "varování: není dostupný ¾ádný inet soket: %s\n"
+msgstr "varovÃ¡nÃ­: nenÃ­ dostupnÃ½ Å¾Ã¡dnÃ½ inet soket: %s\n"
 
-#: ../lib/interface.c:270
+#: ../lib/interface.c:325
 #, c-format
 msgid "Warning: cannot open %s (%s). Limited output.\n"
-msgstr ""
+msgstr "Pozor: %s nelze otevÅ™Ã­t (%s). VÃ½stup omezen.\n"
 
 #. Give better error message for this case.
-#: ../lib/interface.c:504
+#: ../lib/interface.c:571
 msgid "Device not found"
-msgstr "Zaøízení nebylo nalezeno"
+msgstr "ZaÅ™Ã­zenÃ­ nebylo nalezeno"
 
-#: ../lib/interface.c:508
+#: ../lib/interface.c:575
 #, c-format
 msgid "%s: error fetching interface information: %s\n"
-msgstr "%s: chyba pøi získávání informací o rozhraní %s\n"
+msgstr "%s: chyba pÅ™i zÃ­skÃ¡vÃ¡nÃ­ informacÃ­ o rozhranÃ­ %s\n"
+
+#: ../lib/interface.c:608
+msgid "     - no statistics available -"
+msgstr "     - statistickÃ¡ data nejsou dostupnÃ¡ -"
+
+#: ../lib/interface.c:612
+#, c-format
+msgid "[NO FLAGS]"
+msgstr "[Å½ÃDNÃ‰ PÅ˜ÃZNAKY]"
+
+#: ../lib/interface.c:694
+msgid "UP,"
+msgstr "AKTIVOVÃNO,"
+
+#: ../lib/interface.c:696
+msgid "BROADCAST,"
+msgstr "VÅ ESMÄšR,"
+
+#: ../lib/interface.c:698
+msgid "DEBUG,"
+msgstr "LADÄšNÃ,"
+
+#: ../lib/interface.c:700
+msgid "LOOPBACK,"
+msgstr "SMYÄŒKA,"
+
+#: ../lib/interface.c:702
+msgid "POINTOPOINT,"
+msgstr "DVOUBODOVÃ‰,"
+
+# ??
+#: ../lib/interface.c:704
+msgid "NOTRAILERS,"
+msgstr "Å½ÃDNÃ‰_TRAILERS"
+
+#: ../lib/interface.c:706
+msgid "RUNNING,"
+msgstr "BÄšÅ½Ã,"
+
+#: ../lib/interface.c:708
+msgid "NOARP,"
+msgstr "NEARP,"
+
+#: ../lib/interface.c:710
+msgid "PROMISC,"
+msgstr "PROMISK,"
+
+#: ../lib/interface.c:712
+msgid "ALLMULTI,"
+msgstr "ALLMULTI,"
+
+#: ../lib/interface.c:714
+msgid "SLAVE,"
+msgstr "PODÅ˜ÃZENÃ,"
+
+#: ../lib/interface.c:716
+msgid "MASTER,"
+msgstr "NADÅ˜ÃZENÃ,"
+
+#: ../lib/interface.c:718
+msgid "MULTICAST,"
+msgstr "MULTICAST,"
+
+#: ../lib/interface.c:721
+msgid "DYNAMIC,"
+msgstr "DYNAMIC,"
+
+#: ../lib/interface.c:730
+#, c-format
+msgid "%s: %s  mtu %d  metric %d"
+msgstr "%s: %s  mtu %d  metrika %d"
+
+#: ../lib/interface.c:734
+#, c-format
+msgid "  outfill %d  keepalive %d"
+msgstr "  outfill %d  keepalive %d"
+
+#: ../lib/interface.c:743 ../lib/interface.c:841
+#, c-format
+msgid "        %s %s"
+msgstr "        %s %s"
+
+#: ../lib/interface.c:745
+#, c-format
+msgid "  netmask %s"
+msgstr " sÃ­Å¥ovÃ¡_maska %s"
+
+#: ../lib/interface.c:747
+#, c-format
+msgid "  broadcast %s"
+msgstr "  vÅ¡esmÄ›r %s"
+
+#: ../lib/interface.c:750
+#, c-format
+msgid "  destination %s"
+msgstr "  cÃ­l %s"
+
+#: ../lib/interface.c:769
+#, c-format
+msgid "        %s %s  prefixlen %d"
+msgstr "        %s %s  dÃ©lka_prefixu %d"
+
+#: ../lib/interface.c:773
+#, c-format
+msgid "  scopeid 0x%x"
+msgstr "  scopeid 0x%x"
+
+#: ../lib/interface.c:777
+msgid "compat,"
+msgstr "kompat,"
+
+#: ../lib/interface.c:781
+msgid "global,"
+msgstr "globÃ¡lnÃ­,"
+
+#: ../lib/interface.c:783
+msgid "link,"
+msgstr "linka,"
+
+#: ../lib/interface.c:785
+msgid "site,"
+msgstr "oblast,"
+
+#: ../lib/interface.c:787
+msgid "host,"
+msgstr "stroj,"
+
+#: ../lib/interface.c:805
+#, c-format
+msgid "        %s Ethernet-II   %s\n"
+msgstr "        %s Ethernet-II   %s\n"
+
+#: ../lib/interface.c:808
+#, c-format
+msgid "        %s Ethernet-SNAP %s\n"
+msgstr "        %s Ethernet-SNAP %s\n"
+
+#: ../lib/interface.c:811
+#, c-format
+msgid "        %s Ethernet802.2 %s\n"
+msgstr "        %s Ethernet802.2 %s\n"
+
+#: ../lib/interface.c:814
+#, c-format
+msgid "        %s Ethernet802.3 %s\n"
+msgstr "        %s Ethernet802.3 %s\n"
+
+#: ../lib/interface.c:824 ../lib/interface.c:833
+#, c-format
+msgid "        %s %s\n"
+msgstr "        %s %s\n"
+
+#: ../lib/interface.c:843
+#, c-format
+msgid "        %s"
+msgstr "        %s"
+
+#: ../lib/interface.c:845
+#, c-format
+msgid "  txqueuelen %d"
+msgstr " dÃ©lka_odchozÃ­_fronty %d"
+
+#: ../lib/interface.c:850
+#, c-format
+msgid "        media %s"
+msgstr "        mÃ©dium %s"
+
+#: ../lib/interface.c:852
+#, c-format
+msgid "autoselect"
+msgstr "automatika"
+
+#: ../lib/interface.c:903
+#, c-format
+msgid "RX packets %llu  bytes %llu (%lu.%lu %s)\n"
+msgstr "RX packetÅ¯ %llu  bajtÅ¯ %llu (%lu,%lu %s)\n"
+
+#: ../lib/interface.c:909
+#, c-format
+msgid "RX compressed:%lu\n"
+msgstr "RX komprimovÃ¡no %lu\n"
+
+#: ../lib/interface.c:912
+#, c-format
+msgid "RX errors %lu  dropped %lu  overruns %lu  frame %lu\n"
+msgstr "RX chyb %lu  zahozeno %lu  pÅ™eteÄenÃ­ %lu  rÃ¡mcÅ¯ %lu\n"
+
+#: ../lib/interface.c:918
+#, c-format
+msgid "TX packets %llu  bytes %llu (%lu.%lu %s)\n"
+msgstr "TX packetÅ¯ %llu  bajtÅ¯ %llu (%lu,%lu %s)\n"
+
+#: ../lib/interface.c:924
+#, c-format
+msgid "TX compressed %lu\n"
+msgstr "TX komprimovÃ¡no %lu\n"
+
+# carrier?
+#: ../lib/interface.c:927
+#, c-format
+msgid "TX errors %lu  dropped %lu overruns %lu  carrier %lu  collisions %lu\n"
+msgstr "TX chyb %lu  zahozeno %lu  pÅ™eteÄenÃ­ %lu  pÅ™enos %lu  kolizÃ­ %lu\n"
 
-#: ../lib/sockets.c:59
+#: ../lib/interface.c:937
+#, c-format
+msgid "interrupt %d  "
+msgstr "pÅ™eruÅ¡enÃ­ %d  "
+
+#. Only print devices using it for
+#. I/O maps
+#: ../lib/interface.c:940
+#, c-format
+msgid "base 0x%x  "
+msgstr "zÃ¡klad 0x%x  "
+
+#: ../lib/interface.c:942
+#, c-format
+msgid "memory 0x%lx-%lx  "
+msgstr "pamÄ›Å¥ 0x%lxâ€“%lx  "
+
+#: ../lib/interface.c:945
+#, c-format
+msgid "  dma 0x%x"
+msgstr "  DMA 0x%x"
+
+#: ../lib/sockets.c:63
+#, c-format
 msgid "No usable address families found.\n"
-msgstr "Nebyla nalezena ¾ádná pou¾itelná tøída adres.\n"
+msgstr "Nebyla nalezena Å¾Ã¡dnÃ¡ pouÅ¾itelnÃ¡ tÅ™Ã­da adres.\n"
 
 #: ../lib/util-ank.c:229
 #, c-format
 msgid "ip: %s is invalid inet address\n"
-msgstr "ip: %s není platnou inet adresou\n"
+msgstr "ip: %s nenÃ­ platnou inet adresou\n"
 
 #: ../lib/util-ank.c:238
 #, c-format
 msgid "ip: %s is invalid inet prefix\n"
-msgstr "ip: %s není platným inet prefixem\n"
+msgstr "ip: %s nenÃ­ platnÃ½m inet prefixem\n"
 
 #: ../lib/util-ank.c:248
 #, c-format
 msgid "ip: %s is invalid IPv4 address\n"
-msgstr "ip: %s není platnou IPv4 adresou\n"
+msgstr "ip: %s nenÃ­ platnou IPv4 adresou\n"
 
 #: ../lib/util-ank.c:256
 #, c-format
 msgid "ip: argument is wrong: %s\n"
-msgstr "ip: argument %s je nesprávný\n"
+msgstr "ip: argument %s je nesprÃ¡vnÃ½\n"
 
-#: ../ipmaddr.c:56
+#: ../ipmaddr.c:61
+#, c-format
 msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
-msgstr " Usage: ipmaddr [ add | del ] MULTIADR dev ØETÌZEC\n"
+msgstr " Usage: ipmaddr [ add | del ] MULTIADR dev Å˜ETÄšZEC\n"
 
-#: ../ipmaddr.c:57
+#: ../ipmaddr.c:62
+#, c-format
 msgid "       ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
-msgstr "       ipmaddr show [ dev ØETÌZEC ] [ ipv4 | ipv6 | link | all ]\n"
+msgstr "       ipmaddr show [ dev Å˜ETÄšZEC ] [ ipv4 | ipv6 | link | all ]\n"
 
-#: ../ipmaddr.c:58
+#: ../ipmaddr.c:63
+#, c-format
 msgid "       ipmaddr -V | -version\n"
 msgstr "       ipmaddr -V | -version\n"
 
-#: ../ipmaddr.c:258
+#: ../ipmaddr.c:263
 #, c-format
 msgid "family %d "
-msgstr "tøída %d "
+msgstr "tÅ™Ã­da %d "
 
-#: ../ipmaddr.c:267
+#: ../ipmaddr.c:272
 #, c-format
 msgid " users %d"
-msgstr " u¾ivatelé %d"
+msgstr " uÅ¾ivatelÃ© %d"
 
-#: ../ipmaddr.c:353
+#: ../ipmaddr.c:361
 msgid "Cannot create socket"
-msgstr "Soket nelze vytvoøit"
+msgstr "Soket nelze vytvoÅ™it"
 
 #: ../slattach.c:180
 #, c-format
 msgid "slattach: /dev/%s already locked!\n"
-msgstr "slattach: zaøízení /dev/%s je ji¾ zamèeno!\n"
+msgstr "slattach: zaÅ™Ã­zenÃ­ /dev/%s je jiÅ¾ zamÄeno!\n"
 
 #: ../slattach.c:186
 #, c-format
@@ -2433,80 +3184,169 @@ msgid "slattach: tty_lock: (%s): %s\n"
 msgstr "slattach: tty_lock: (%s): %s\n"
 
 #: ../slattach.c:192
+#, c-format
 msgid "slattach: cannot write PID file\n"
 msgstr "slattach: do PID souboru nelze zapisovat\n"
 
 #: ../slattach.c:202
 #, c-format
 msgid "slattach: tty_lock: UUCP user %s unknown!\n"
-msgstr "slattach: tty_lock: u¾ivatel UUCP %s není znám!\n"
+msgstr "slattach: tty_lock: uÅ¾ivatel UUCP %s nenÃ­ znÃ¡m!\n"
 
-#: ../slattach.c:430
+#: ../slattach.c:432
 #, c-format
 msgid "slattach: tty_hangup(DROP): %s\n"
 msgstr "slattach: tty_hangup(DROP): %s\n"
 
-#: ../slattach.c:437
+#: ../slattach.c:439
 #, c-format
 msgid "slattach: tty_hangup(RAISE): %s\n"
 msgstr "slattach: tty_hangup(RAISE): %s\n"
 
-#: ../slattach.c:486
+#: ../slattach.c:470
+#, c-format
+msgid "slattach: tty name too long\n"
+msgstr "slattach: nÃ¡zev TTY je pÅ™Ã­liÅ¡ dlouhÃ½\n"
+
+#: ../slattach.c:500
+#, c-format
 msgid "slattach: tty_open: cannot get current state!\n"
-msgstr "slattach: tty_open: aktuální stav nelze zjistit!\n"
+msgstr "slattach: tty_open: aktuÃ¡lnÃ­ stav nelze zjistit!\n"
 
-#: ../slattach.c:493
+#: ../slattach.c:507
+#, c-format
 msgid "slattach: tty_open: cannot get current line disc!\n"
-msgstr "slattach: tty_open: aktuální linkovou disciplínu nelze zjistit!\n"
+msgstr "slattach: tty_open: aktuÃ¡lnÃ­ linkovou disciplÃ­nu nelze zjistit!\n"
 
-#: ../slattach.c:501
+#: ../slattach.c:515
+#, c-format
 msgid "slattach: tty_open: cannot set RAW mode!\n"
-msgstr "slattach: tty_open: re¾im RAW nelze nastavit!\n"
+msgstr "slattach: tty_open: reÅ¾im RAW nelze nastavit!\n"
 
-#: ../slattach.c:508
+#: ../slattach.c:522
 #, c-format
 msgid "slattach: tty_open: cannot set %s bps!\n"
 msgstr "slattach: tty_open: %s bps nelze nastavit!\n"
 
-#: ../slattach.c:518
+#: ../slattach.c:532
+#, c-format
 msgid "slattach: tty_open: cannot set 8N1 mode!\n"
-msgstr "slattach: tty_open: re¾im 8N1 nelze nastavit!\n"
+msgstr "slattach: tty_open: reÅ¾im 8N1 nelze nastavit!\n"
+
+#: ../slattach.c:674
+#, c-format
+msgid "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
+msgstr "slattach: setvbuf(stdout, 0, _IOLBF, 0): %s\n"
 
-#: ../slattach.c:686
+#: ../slattach.c:706
 #, c-format
 msgid "%s started"
-msgstr "protokol %s spu¹tìn"
+msgstr "protokol %s spuÅ¡tÄ›n"
 
-#: ../slattach.c:687
+#: ../slattach.c:707
 #, c-format
 msgid " on %s"
 msgstr " na %s"
 
-#: ../slattach.c:688
+#: ../slattach.c:708
 #, c-format
 msgid " interface %s\n"
-msgstr " rozhraní %s\n"
+msgstr " rozhranÃ­ %s\n"
+
+#~ msgid ""
+#~ "  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [netmask <nm>] pub  "
+#~ "<-''-\n"
+#~ msgstr ""
+#~ "  arp [-v]   [<HW>] [-i <if>] -s <soubor> <hwadr> [sÃ­Å¥mask <ÄÃ­s>]  <-''-\n"
+
+#~ msgid "%-9.9s Link encap:%s  "
+#~ msgstr "%-9.9s ZapouzdÅ™enÃ­:%s  "
+
+#~ msgid "HWaddr %s  "
+#~ msgstr "HWadr %s  "
+
+#~ msgid "Media:%s"
+#~ msgstr "MÃ©dium:%s"
+
+#~ msgid "(auto)"
+#~ msgstr "(auto)"
+
+#~ msgid " P-t-P:%s "
+#~ msgstr " P-t-P:%s "
+
+# V ostatnÃ­ch katalozÃ­ch se pÅ™eklÃ¡dÃ¡ Broadcast -> vÅ¡esmÄ›rovÃ© vysÃ­lÃ¡nÃ­.
+# TudiÅ¾ bcast -> VÅ¡esmÄ›r :)
+#~ msgid " Bcast:%s "
+#~ msgstr " VÅ¡esmÄ›r:%s "
+
+#~ msgid " Mask:%s\n"
+#~ msgstr "Maska:%s\n"
+
+#~ msgid " Scope:"
+#~ msgstr " Rozsah:"
+
+#~ msgid "Unknown"
+#~ msgstr "NeznÃ¡m."
+
+#~ msgid "          EtherTalk Phase 2 addr:%s\n"
+#~ msgstr "          EtherTalk Phase 2 adr:%s\n"
+
+#~ msgid "          econet addr:%s\n"
+#~ msgstr "          econet adr:%s\n"
+
+# Hic sunt leones ...
+#~ msgid "[NO FLAGS] "
+#~ msgstr "[Å½ÃDNÃ‰ PÅ˜ÃZNAKY]"
+
+#~ msgid " MTU:%d  Metric:%d"
+#~ msgstr " MTU:%d  Metrika:%d"
+
+#~ msgid "             compressed:%lu\n"
+#~ msgstr "             komprimovÃ¡no:%lu\n"
+
+#~ msgid "          collisions:%lu "
+#~ msgstr "          kolizÃ­:%lu "
+
+#~ msgid "DMA chan:%x "
+#~ msgstr "KanÃ¡l DMA:%x "
+
+#~ msgid "%s: unknown interface: %s\n"
+#~ msgstr "%s: rozhranÃ­ %s nenÃ­ znÃ¡mo\n"
+
+#~ msgid "address mask replies"
+#~ msgstr "odpovÄ›di na Å¾Ã¡dost o masku podsÃ­tÄ›"
+
+#~ msgid "unknown title %s\n"
+#~ msgstr "titulek %s je neznÃ¡mÃ½\n"
+
+#~ msgid "Routing table for `ddp' not yet supported.\n"
+#~ msgstr "SmÄ›rovacÃ­ tabulka pro `ddp' nenÃ­ zatÃ­m podporovÃ¡na.\n"
+
+#~ msgid "IPX not configured in this system.\n"
+#~ msgstr "IPX nenÃ­ na tomto systÃ©mu nakonfigurovÃ¡no.\n"
 
 #~ msgid ""
-#~ "   This comand can read or set the hostname or the NIS domainname. You can\n"
+#~ "   This comand can read or set the hostname or the NIS domainname. You "
+#~ "can\n"
 #~ msgstr ""
-#~ "   Tento program zji¹»uje a nastavuje jméno poèítaèe èi NIS domény. Mù¾e "
-#~ "také\n"
+#~ "   Tento program zjiÅ¡Å¥uje a nastavuje jmÃ©no poÄÃ­taÄe Äi NIS domÃ©ny. MÅ¯Å¾e "
+#~ "takÃ©\n"
 
 #~ msgid ""
 #~ "   also read the DNS domain or the FQDN (fully qualified domain name).\n"
-#~ msgstr "   zjistit DNS doménu èi kanonické jméno poèítaèe.\n"
+#~ msgstr "   zjistit DNS domÃ©nu Äi kanonickÃ© jmÃ©no poÄÃ­taÄe.\n"
 
 #~ msgid ""
 #~ "   Unless you are using bind or NIS for host lookups you can change the\n"
 #~ msgstr ""
-#~ "   Pokud nepou¾íváte bind èi NIS pro vyhledávání jmen poèítaèù, pak mù¾ete\n"
+#~ "   Pokud nepouÅ¾Ã­vÃ¡te bind Äi NIS pro vyhledÃ¡vÃ¡nÃ­ jmen poÄÃ­taÄÅ¯, pak "
+#~ "mÅ¯Å¾ete\n"
 
 #~ msgid ""
 #~ "   FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
 #~ msgstr ""
-#~ "   zmìnit kanonické jméno poèítaèe a jméno DNS domény (je souèástí "
-#~ "kanonického\n"
+#~ "   zmÄ›nit kanonickÃ© jmÃ©no poÄÃ­taÄe a jmÃ©no DNS domÃ©ny (je souÄÃ¡stÃ­ "
+#~ "kanonickÃ©ho\n"
 
 #~ msgid "   part of the FQDN) in the /etc/hosts file.\n"
-#~ msgstr "   jména poèítaèe) v souboru /etc/hosts.\n"
+#~ msgstr "   jmÃ©na poÄÃ­taÄe) v souboru /etc/hosts.\n"
diff --git a/po/de.po b/po/de.po
index f884dd9..9f8f679 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,4 +1,4 @@
-# $Id: de.po,v 1.10 2000/08/01 03:19:48 ecki Exp $
+# $Id: de.po,v 1.11 2003/10/25 21:15:09 ecki Exp $
 # German translation for net-tools 1.51
 # Copyright (C) 1999 Ralf Bächle <ralf@gnu.org>
 msgid ""
@@ -9,7 +9,7 @@ msgstr ""
 "Last-Translator: Ralf Bächle <ralf@gnu.org>\n"
 "Language-Team:\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso8859-1\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 #: ../arp.c:110 ../arp.c:269
@@ -59,12 +59,16 @@ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
 msgstr "arp: Kann Eintrag auf Zeile %u von Etherdatei %s nicht setzen!\n"
 
 #: ../arp.c:437
-msgid "Address\t\t\tHWtype\tHWaddress\t    Flags Mask\t\t  Iface\n"
-msgstr "Adresse\t\t\tHWTyp\tHWAdresse\t    Flags   Maske\t\t  Iface\n"
+msgid ""
+"Address                  HWtype  HWaddress           Flags Mask            "
+"Iface\n"
+msgstr ""
+"Adresse                  HW-Typ  HW-Adresse          Flags Maske           "
+"Iface\n"
 
 #: ../arp.c:467
 msgid "(incomplete)"
-msgstr "(unvollsändig)"
+msgstr "(unvollständig)"
 
 #: ../arp.c:484
 #, c-format
diff --git a/po/et_EE.po b/po/et_EE.po
index d748410..827406d 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -1,66 +1,65 @@
 # Estonian translations for net-tools
-# Copyright (C) 1999 Free Software Foundation, Inc.
-# Meelis Roos <Meelis.Roos@mail.ee>, 1999.
+# Copyright (C) 1999-2001 Free Software Foundation, Inc.
+# Meelis Roos <mroos@linux.ee>, 1999-2001.
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: net-tools 1.58\n"
-"POT-Creation-Date: 2001-02-15 21:28+0200\n"
-"PO-Revision-Date: 2001-02-15 18:00+0300\n"
+"Project-Id-Version: net-tools 1.60\n"
+"POT-Creation-Date: 2001-04-16 20:24+0200\n"
+"PO-Revision-Date: 2001-04-16 20:30+0200\n"
 "Last-Translator: Meelis Roos <mroos@linux.ee>\n"
 "Language-Team: Estonian <linux-ee@eenet.ee>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-15\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../arp.c:110 ../arp.c:269
+#: ../arp.c:111 ../arp.c:270
 msgid "arp: need host name\n"
 msgstr "arp: puudub hosti nimi\n"
 
-#: ../arp.c:207 ../arp.c:221
+#: ../arp.c:208 ../arp.c:222
 #, c-format
 msgid "No ARP entry for %s\n"
 msgstr "%s jaoks pole ARP kirjet\n"
 
-#: ../arp.c:239
+#: ../arp.c:240
 #, c-format
 msgid "arp: cant get HW-Address for `%s': %s.\n"
 msgstr "arp: ei saa riistvaralist aadressi `%s' jaoks: %s\n"
 
-#: ../arp.c:243
+#: ../arp.c:244
 msgid "arp: protocol type mismatch.\n"
 msgstr "arp: vale protokolli tüüp\n"
 
-#: ../arp.c:252
+#: ../arp.c:253
 #, c-format
 msgid "arp: device `%s' has HW address %s `%s'.\n"
 msgstr "arp: seadmel `%s' on riistvaraline aadress %s `%s'\n"
 
-#: ../arp.c:282
+#: ../arp.c:283
 msgid "arp: need hardware address\n"
 msgstr "arp: puudub riistvaraline aadress\n"
 
-#: ../arp.c:290
+#: ../arp.c:291
 msgid "arp: invalid hardware address\n"
 msgstr "arp: vigane riistvaraline aadress\n"
 
-#: ../arp.c:387
+#: ../arp.c:388
 #, c-format
 msgid "arp: cannot open etherfile %s !\n"
 msgstr "arp: ei saa avada faili %s\n"
 
-#: ../arp.c:403
+#: ../arp.c:404
 #, c-format
 msgid "arp: format error on line %u of etherfile %s !\n"
 msgstr "arp: formaadiviga real %u failis %s\n"
 
-#: ../arp.c:416
+#: ../arp.c:417
 #, c-format
 msgid "arp: cannot set entry on line %u of etherfile %s !\n"
 msgstr "arp: ei saa kehtestada ARP kirjet real %u failis %s\n"
 
-#: ../arp.c:437
+#: ../arp.c:438
 msgid ""
 "Address                  HWtype  HWaddress           Flags Mask            "
 "Iface\n"
@@ -68,45 +67,45 @@ msgstr ""
 "Aadress                  HWtüüp  HWaadress           Lipud Mask            "
 "Liides\n"
 
-#: ../arp.c:467
+#: ../arp.c:468
 msgid "(incomplete)"
 msgstr "(mittetäielik)"
 
-#: ../arp.c:484
+#: ../arp.c:485
 #, c-format
 msgid "%s (%s) at "
 msgstr "%s (%s) aadressil "
 
-#: ../arp.c:490
+#: ../arp.c:491
 msgid "<incomplete> "
 msgstr "<mittetäielik>"
 
-#: ../arp.c:496
+#: ../arp.c:497
 #, c-format
 msgid "netmask %s "
 msgstr "võrgumask %s "
 
-#: ../arp.c:513
+#: ../arp.c:514
 #, c-format
 msgid "on %s\n"
 msgstr "liides %s\n"
 
-#: ../arp.c:592
+#: ../arp.c:593
 #, c-format
 msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
 msgstr "ARP kirjeid kokku: %s\tignoreerisin: %d\tleidsin: %d\n"
 
-#: ../arp.c:596
+#: ../arp.c:597
 #, c-format
 msgid "%s (%s) -- no entry\n"
 msgstr "%s (%s) -- pole kirjet\n"
 
-#: ../arp.c:598
+#: ../arp.c:599
 #, c-format
 msgid "arp: in %d entries no match found.\n"
 msgstr "arp: ei leidnud %d kirje hulgast sobivat\n"
 
-#: ../arp.c:613
+#: ../arp.c:614
 msgid ""
 "Usage:\n"
 "  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>]             <-Display ARP "
@@ -116,7 +115,7 @@ msgstr ""
 "ARP cache vaatamine:\n"
 "  arp [-vn]  [<HW>] [-i <if>] [-a] [<hosti nimi>]\n"
 
-#: ../arp.c:614
+#: ../arp.c:615
 msgid ""
 "  arp [-v]          [-i <if>] -d  <hostname> [pub][nopub]    <-Delete ARP "
 "entry\n"
@@ -124,7 +123,7 @@ msgstr ""
 "ARP kirje kustutamine:\n"
 "  arp [-v]          [-i <if>] -d  <hosti nimi> [pub] [nopub]\n"
 
-#: ../arp.c:615
+#: ../arp.c:616
 msgid ""
 "  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]              <-Add entry from "
 "file\n"
@@ -132,7 +131,7 @@ msgstr ""
 "ARP kirjete lisamine failist:\n"
 "  arp [-vnD] [<HW>] [-i <if>] -f  [<failinimi>]\n"
 
-#: ../arp.c:616
+#: ../arp.c:617
 msgid ""
 "  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [temp][nopub] <-Add "
 "entry\n"
@@ -140,14 +139,14 @@ msgstr ""
 "ARP kirje lisamine:\n"
 "  arp [-v]   [<HW>] [-i <if>] -s  <hosti nimi> <hwaddr> [temp] [nopub]\n"
 
-#: ../arp.c:617
+#: ../arp.c:618
 msgid ""
 "  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [netmask <nm>] pub  "
 "<-''-\n"
 msgstr ""
 "  arp [-v]   [<HW>] [-i <if>] -s  <hosti nimi> <hwaddr> [netmask <nm>] pub\n"
 
-#: ../arp.c:618
+#: ../arp.c:619
 msgid ""
 "  arp [-v]   [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub      "
 "<-''-\n"
@@ -156,7 +155,7 @@ msgstr ""
 "  arp [-v]   [<HW>] [-i <if>] -Ds <hosti nimi> <if> [netmask <nm>] pub\n"
 "\n"
 
-#: ../arp.c:620
+#: ../arp.c:621
 msgid ""
 "        -a                       display (all) hosts in alternative (BSD) "
 "style\n"
@@ -164,37 +163,37 @@ msgstr ""
 "        -a                       näita kõiki hoste alternatiivsel (BSD) "
 "kujul\n"
 
-#: ../arp.c:621
+#: ../arp.c:622
 msgid "        -s, --set                set a new ARP entry\n"
 msgstr "        -s, --set                uue ARP kirje seadmine\n"
 
-#: ../arp.c:622
+#: ../arp.c:623
 msgid "        -d, --delete             delete a specified entry\n"
 msgstr "        -d, --delete             määratud kirje kustutamine\n"
 
-#: ../arp.c:623 ../netstat.c:1485 ../route.c:85
+#: ../arp.c:624 ../netstat.c:1490 ../route.c:86
 msgid "        -v, --verbose            be verbose\n"
 msgstr "        -v, --verbose            jutukas väljund\n"
 
-#: ../arp.c:624
+#: ../arp.c:625 ../netstat.c:1491 ../route.c:87
 msgid "        -n, --numeric            don't resolve names\n"
 msgstr "        -n, --numeric            mitte lahendada nimesid\n"
 
-#: ../arp.c:625
+#: ../arp.c:626
 msgid ""
 "        -i, --device             specify network interface (e.g. eth0)\n"
 msgstr ""
 "        -i, --device             võrguliidese täpsustamine (näiteks eth0)\n"
 
-#: ../arp.c:626
+#: ../arp.c:627
 msgid "        -D, --use-device         read <hwaddr> from given device\n"
 msgstr "        -D, --use-device         lugeda <hwaddr> vastavalt liideselt\n"
 
-#: ../arp.c:627
+#: ../arp.c:628
 msgid "        -A, -p, --protocol       specify protocol family\n"
 msgstr "        -A, -p, --protocol       protokollipere määramine\n"
 
-#: ../arp.c:628
+#: ../arp.c:629
 msgid ""
 "        -f, --file               read new entries from file or from "
 "/etc/ethers\n"
@@ -204,125 +203,125 @@ msgstr ""
 "/etc/ethers'st\n"
 "\n"
 
-#: ../arp.c:630 ../rarp.c:181
+#: ../arp.c:631 ../rarp.c:182
 #, c-format
 msgid "  <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
 msgstr ""
 "  <HW>=kasutage '-H <hw>' riistvaralise aadressi määramiseks.\n"
 "       Vaikimisi: %s\n"
 
-#: ../arp.c:631 ../rarp.c:182
+#: ../arp.c:632 ../rarp.c:183
 msgid "  List of possible hardware types (which support ARP):\n"
 msgstr "  Võimalike ARP-i toetavate riistvara tüüpide nimekiri:\n"
 
-#: ../arp.c:664 ../arp.c:749
+#: ../arp.c:666 ../arp.c:751
 #, c-format
 msgid "%s: hardware type not supported!\n"
 msgstr "arp: riistvara tüüpi %s ei toetata\n"
 
-#: ../arp.c:668
+#: ../arp.c:670
 #, c-format
 msgid "%s: address family not supported!\n"
 msgstr "arp: aadressiperekonda %s ei toetata\n"
 
-#: ../arp.c:703
+#: ../arp.c:705
 msgid "arp: -N not yet supported.\n"
 msgstr "arp: -N toetust pole veel\n"
 
-#: ../arp.c:713
+#: ../arp.c:715
 #, c-format
 msgid "arp: %s: unknown address family.\n"
 msgstr "arp: tundmatu aadressiperekond %s\n"
 
-#: ../arp.c:722
+#: ../arp.c:724
 #, c-format
 msgid "arp: %s: unknown hardware type.\n"
 msgstr "arp: tundmatu riistvara tüüp %s\n"
 
-#: ../arp.c:741
+#: ../arp.c:743
 #, c-format
 msgid "arp: %s: kernel only supports 'inet'.\n"
 msgstr "arp: tuumas on ainult 'inet' aadressiperekonna toetus\n"
 
-#: ../arp.c:754
+#: ../arp.c:756
 #, c-format
 msgid "arp: %s: hardware type without ARP support.\n"
 msgstr "arp: riistvara tüübil %s pole ARP toetust\n"
 
-#: ../hostname.c:69
+#: ../hostname.c:70
 #, c-format
 msgid "Setting nodename to `%s'\n"
 msgstr "Sean sõlme nimeks `%s'\n"
 
-#: ../hostname.c:74
+#: ../hostname.c:75
 #, c-format
 msgid "%s: you must be root to change the node name\n"
 msgstr "%s: ainult root saab sõlme nime muuta\n"
 
-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
+#: ../hostname.c:78 ../hostname.c:98 ../hostname.c:117
 #, c-format
 msgid "%s: name too long\n"
 msgstr "%s: nimi on liiga pikk\n"
 
-#: ../hostname.c:89
+#: ../hostname.c:90
 #, c-format
 msgid "Setting hostname to `%s'\n"
 msgstr "Sean hosti nimeks `%s'\n"
 
-#: ../hostname.c:94
+#: ../hostname.c:95
 #, c-format
 msgid "%s: you must be root to change the host name\n"
 msgstr "%s: ainult root saab hosti nime muuta\n"
 
-#: ../hostname.c:108
+#: ../hostname.c:109
 #, c-format
 msgid "Setting domainname to `%s'\n"
 msgstr "Sean domeeni nimeks `%s'\n"
 
-#: ../hostname.c:113
+#: ../hostname.c:114
 #, c-format
 msgid "%s: you must be root to change the domain name\n"
 msgstr "%s: ainult root saab domeeni nime muuta\n"
 
-#: ../hostname.c:131
+#: ../hostname.c:132
 #, c-format
 msgid "Resolving `%s' ...\n"
 msgstr "Lahendan `%s' ...\n"
 
-#: ../hostname.c:137
+#: ../hostname.c:138
 #, c-format
 msgid "Result: h_name=`%s'\n"
 msgstr "Tulemus: h_name=`%s'\n"
 
-#: ../hostname.c:142
+#: ../hostname.c:143
 #, c-format
 msgid "Result: h_aliases=`%s'\n"
 msgstr "Tulemus: h_aliases=`%s'\n"
 
-#: ../hostname.c:147
+#: ../hostname.c:148
 #, c-format
 msgid "Result: h_addr_list=`%s'\n"
 msgstr "Tulemus: h_addr_list=`%s'\n"
 
-#: ../hostname.c:209
+#: ../hostname.c:210
 #, c-format
 msgid "%s: can't open `%s'\n"
 msgstr "%s: ei saa avada faili `%s'\n"
 
-#: ../hostname.c:223
+#: ../hostname.c:224
 msgid "Usage: hostname [-v] {hostname|-F file}      set hostname (from file)\n"
 msgstr ""
 "Kasutamine:\n"
 "  hostname [-v] {hosti nimi|-F fail}         hosti nime seadmine (ka "
 "failist)\n"
 
-#: ../hostname.c:224
+#: ../hostname.c:225
 msgid ""
 "       domainname [-v] {nisdomain|-F file}   set NIS domainname (from file)\n"
 msgstr ""
 "  domainname [-v] {nisdomeen|-F fail}        NIS domeeni nime seadmine\n"
 
-#: ../hostname.c:226
+#: ../hostname.c:227
 msgid ""
 "       nodename [-v] {nodename|-F file}      set DECnet node name (from "
 "file)\n"
@@ -330,18 +329,18 @@ msgstr ""
 "  nodename [-v] {nodename|-F fail}           DECneti võrgusõlme nime "
 "seadmine\n"
 
-#: ../hostname.c:228
+#: ../hostname.c:229
 msgid "       hostname [-v] [-d|-f|-s|-a|-i|-y|-n]  display formatted name\n"
 msgstr ""
 "  hostname [-v] [-d|-f|-s|-a|-i|-y|-n]       nime näitamine antud formaadis\n"
 
-#: ../hostname.c:229
+#: ../hostname.c:230
 msgid ""
 "       hostname [-v]                         display hostname\n"
 "\n"
 msgstr "  hostname [-v]                              hosti nime näitamine\n"
 
-#: ../hostname.c:230
+#: ../hostname.c:231
 msgid ""
 "       hostname -V|--version|-h|--help       print info and exit\n"
 "\n"
@@ -350,7 +349,7 @@ msgstr ""
 "  hostname -h|--help                         seesama abiinfo\n"
 "\n"
 
-#: ../hostname.c:231
+#: ../hostname.c:232
 msgid ""
 "    dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
 "\n"
@@ -358,36 +357,36 @@ msgstr ""
 "  dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
 "\n"
 
-#: ../hostname.c:232
+#: ../hostname.c:233
 msgid "    -s, --short           short host name\n"
 msgstr "    -s, --short           lühike hosti nimi\n"
 
-#: ../hostname.c:233
+#: ../hostname.c:234
 msgid "    -a, --alias           alias names\n"
 msgstr "     -a, --alias          alias-nimed\n"
 
-#: ../hostname.c:234
+#: ../hostname.c:235
 msgid "    -i, --ip-address      addresses for the hostname\n"
 msgstr "    -i, --ip-address      hosti IP aadressid\n"
 
-#: ../hostname.c:235
+#: ../hostname.c:236
 msgid "    -f, --fqdn, --long    long host name (FQDN)\n"
 msgstr ""
 "    -f, --fqdn, --long    pikk hosti nimi (FQDN - täielik süsteeminimi)\n"
 
-#: ../hostname.c:236
+#: ../hostname.c:237
 msgid "    -d, --domain          DNS domain name\n"
 msgstr "    -d, --domain          DNS domeeni nimi\n"
 
-#: ../hostname.c:237
+#: ../hostname.c:238
 msgid "    -y, --yp, --nis       NIS/YP domainname\n"
 msgstr "    -y, --yp, --nis       NIS/YP domeeni nimi\n"
 
-#: ../hostname.c:239
+#: ../hostname.c:240
 msgid "    -n, --node            DECnet node name\n"
 msgstr "    -n, --node            DECneti võrgusõlme nimi\n"
 
-#: ../hostname.c:241
+#: ../hostname.c:242
 msgid ""
 "    -F, --file            read hostname or NIS domainname from given file\n"
 "\n"
@@ -395,7 +394,7 @@ msgstr ""
 "    -F, --file            lugeda hosti või NIS domeeni nimi failist\n"
 "\n"
 
-#: ../hostname.c:243
+#: ../hostname.c:244
 msgid ""
 "   This command can read or set the hostname or the NIS domainname. You can\n"
 "   also read the DNS domain or the FQDN (fully qualified domain name).\n"
@@ -409,12 +408,12 @@ msgstr ""
 "   täielikku süsteeminime (FQDN) ja DNS domeeni nime (mis on täieliku nime\n"
 "   osa) muuta failist /etc/hosts.\n"
 
-#: ../hostname.c:338
+#: ../hostname.c:340
 #, c-format
 msgid "%s: You can't change the DNS domain name with this command\n"
 msgstr "%s: selle käsuga ei saa muuta DNS domeeni nime\n"
 
-#: ../hostname.c:339
+#: ../hostname.c:341
 msgid ""
 "\n"
 "Unless you are using bind or NIS for host lookups you can change the DNS\n"
@@ -422,26 +421,26 @@ msgstr ""
 "\n"
 "Kui Te EI kasuta bind'i ega NIS'i nimede lahendamiseks, saate DNS domeeni\n"
 
-#: ../hostname.c:340
+#: ../hostname.c:342
 msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
 msgstr "(mis on täieliku nime osa) nime muuta failist /etc/hosts.\n"
 
-#: ../hostname.c:357
+#: ../hostname.c:359
 #, c-format
 msgid "gethostname()=`%s'\n"
 msgstr "gethostname()=`%s'\n"
 
-#: ../hostname.c:374
+#: ../hostname.c:376
 #, c-format
 msgid "getdomainname()=`%s'\n"
 msgstr "getdomainname()=`%s'\n"
 
-#: ../hostname.c:389
+#: ../hostname.c:391
 #, c-format
 msgid "getnodename()=`%s'\n"
 msgstr "getnodename()=`%s'\n"
 
-#: ../ifconfig.c:110
+#: ../ifconfig.c:108
 msgid ""
 "Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR "
 "Flg\n"
@@ -449,16 +448,16 @@ msgstr ""
 "Liides  MTU Meetr. RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR "
 "Lip\n"
 
-#: ../ifconfig.c:132 ../ifconfig.c:164
+#: ../ifconfig.c:130 ../ifconfig.c:162
 #, c-format
 msgid "%s: unknown interface: %s\n"
 msgstr "ifconfig: tundmatu liides %s: %s\n"
 
-#: ../ifconfig.c:156 ../ifconfig.c:740 ../ifconfig.c:831 ../ifconfig.c:937
+#: ../ifconfig.c:154 ../ifconfig.c:734 ../ifconfig.c:825 ../ifconfig.c:936
 msgid "No support for INET on this system.\n"
 msgstr "Antud süsteem ei toeta INET aadressiperekonda\n"
 
-#: ../ifconfig.c:179
+#: ../ifconfig.c:177
 msgid ""
 "Usage:\n"
 "  ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"
@@ -466,51 +465,51 @@ msgstr ""
 "Kasutamine:\n"
 "  ifconfig [-a] [-i] [-v] [-s] <liides> [[<AF>] <aadress>]\n"
 
-#: ../ifconfig.c:181
+#: ../ifconfig.c:179
 msgid "  [add <address>[/<prefixlen>]]\n"
 msgstr "  [add <aadress>[/<prefiksi pikkus>]]\n"
 
-#: ../ifconfig.c:182
+#: ../ifconfig.c:180
 msgid "  [del <address>[/<prefixlen>]]\n"
 msgstr "  [del <aadress>[/<prefiksi pikkus>]]\n"
 
-#: ../ifconfig.c:183
+#: ../ifconfig.c:181
 msgid "  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]\n"
 msgstr "  [[-]broadcast [<aadress>]]  [[-]pointopoint [<aadress>]]\n"
 
-#: ../ifconfig.c:184
+#: ../ifconfig.c:182
 msgid "  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]\n"
 msgstr "  [netmask <aadress>]  [dstaddr <aadress>]  [tunnel <aadress>]\n"
 
-#: ../ifconfig.c:187
+#: ../ifconfig.c:185
 msgid "  [outfill <NN>] [keepalive <NN>]\n"
 msgstr "  [outfill <NN>] [keepalive <NN>]\n"
 
-#: ../ifconfig.c:189
+#: ../ifconfig.c:187
 msgid "  [hw <HW> <address>]  [metric <NN>]  [mtu <NN>]\n"
 msgstr "  [hw <HW> <aadress>]  [metric <NN>]  [mtu <NN>]\n"
 
-#: ../ifconfig.c:190
+#: ../ifconfig.c:188
 msgid "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
 msgstr "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
 
-#: ../ifconfig.c:191
+#: ../ifconfig.c:189
 msgid "  [multicast]  [[-]promisc]\n"
 msgstr "  [multicast]  [[-]promisc]\n"
 
-#: ../ifconfig.c:192
+#: ../ifconfig.c:190
 msgid "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]\n"
 msgstr "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <tüüp>]\n"
 
-#: ../ifconfig.c:194
+#: ../ifconfig.c:192
 msgid "  [txqueuelen <NN>]\n"
 msgstr "  [txqueuelen <NN>]\n"
 
-#: ../ifconfig.c:197
+#: ../ifconfig.c:195
 msgid "  [[-]dynamic]\n"
 msgstr "  [[-]dynamic]\n"
 
-#: ../ifconfig.c:199
+#: ../ifconfig.c:197
 msgid ""
 "  [up|down] ...\n"
 "\n"
@@ -518,73 +517,86 @@ msgstr ""
 "  [up|down] ...\n"
 "\n"
 
-#: ../ifconfig.c:201
+#: ../ifconfig.c:199
 msgid "  <HW>=Hardware Type.\n"
 msgstr "  <HW>=riistvara tüüp\n"
 
-#: ../ifconfig.c:202
+#: ../ifconfig.c:200
 msgid "  List of possible hardware types:\n"
 msgstr "  Võimalike riistvara tüüpide nimekiri:\n"
 
 #. 1 = ARPable
-#: ../ifconfig.c:204
+#: ../ifconfig.c:202
 #, c-format
 msgid "  <AF>=Address family. Default: %s\n"
 msgstr "  <AF>=aadressiperekond, vaikimisi %s\n"
 
-#: ../ifconfig.c:205
+#: ../ifconfig.c:203
 msgid "  List of possible address families:\n"
 msgstr "  Võimalike aadressiperekondade nimekiri:\n"
 
-#: ../ifconfig.c:361
+#: ../ifconfig.c:278
+#, c-format
+msgid "ifconfig: option `%s' not recognised.\n"
+msgstr ""
+
+#: ../ifconfig.c:280 ../ifconfig.c:925
+msgid "ifconfig: `--help' gives usage information.\n"
+msgstr ""
+
+#: ../ifconfig.c:355
 msgid "Unknown media type.\n"
 msgstr "Tundmatu meedia tüüp\n"
 
-#: ../ifconfig.c:653
+#: ../ifconfig.c:647
 #, c-format
 msgid "hw address type `%s' has no handler to set address. failed.\n"
 msgstr ""
 "riistvara aadressi tüübil `%s' pole käsitlejat aadressi seadmiseks - ebaõnn\n"
 
-#: ../ifconfig.c:662
+#: ../ifconfig.c:656
 #, c-format
 msgid "%s: invalid %s address.\n"
 msgstr "%s: vigane %s aadress\n"
 
-#: ../ifconfig.c:706 ../ifconfig.c:796 ../ifconfig.c:882
+#: ../ifconfig.c:700 ../ifconfig.c:790 ../ifconfig.c:876
 msgid "No support for INET6 on this system.\n"
 msgstr "Antud süsteem ei toeta INET6 aadressiperekonda\n"
 
-#: ../ifconfig.c:749 ../ifconfig.c:840
+#: ../ifconfig.c:743 ../ifconfig.c:834
 #, c-format
 msgid "Interface %s not initialized\n"
 msgstr "Liides %s pole initsialiseeritud\n"
 
-#: ../ifconfig.c:761 ../ifconfig.c:851
+#: ../ifconfig.c:755 ../ifconfig.c:845
 msgid "Bad address.\n"
 msgstr "Vigane aadress\n"
 
-#: ../ifconfig.c:854
+#: ../ifconfig.c:848
 msgid "Address deletion not supported on this system.\n"
 msgstr "Antud süsteem ei toeta aadresside kustutamist\n"
 
-#: ../ifconfig.c:947
+#: ../ifconfig.c:920
+msgid "ifconfig: Cannot set address for this protocol family.\n"
+msgstr "Ei oska seada aadresse selle aadressiperekonna jaoks\n"
+
+#: ../ifconfig.c:946
 msgid "No support for ECONET on this system.\n"
 msgstr "Antud süsteem ei toeta ECONET aadressiperekonda\n"
 
-#: ../ifconfig.c:955
+#: ../ifconfig.c:954
 #, c-format
 msgid "Don't know how to set addresses for family %d.\n"
 msgstr "Ei oska seada aadresse aadressiperekonna %d jaoks\n"
 
-#: ../netstat.c:429
+#: ../netstat.c:430
 #, c-format
 msgid ""
 "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
 msgstr ""
 "(\"-p\" jaoks ei saanud infot lugeda: geteuid()=%d, aga vaja oleks root'u)\n"
 
-#: ../netstat.c:433
+#: ../netstat.c:434
 msgid ""
 "(Not all processes could be identified, non-owned process info\n"
 " will not be shown, you would have to be root to see it all.)\n"
@@ -592,27 +604,27 @@ msgstr ""
 "(Mõnesid protsesse ei saanud identifitseerida, teiste kasutajate\n"
 "info lugemiseks peab olema root)\n"
 
-#: ../netstat.c:440 ../netstat.c:1171 ../netstat.c:1248
+#: ../netstat.c:441 ../netstat.c:1176 ../netstat.c:1253
 msgid "LISTENING"
 msgstr "LISTENING"
 
-#: ../netstat.c:441
+#: ../netstat.c:442
 msgid "CONN SENT"
 msgstr "CONN SENT"
 
-#: ../netstat.c:442 ../netstat.c:1250
+#: ../netstat.c:443 ../netstat.c:1255
 msgid "DISC SENT"
 msgstr "DISC SENT"
 
-#: ../netstat.c:443 ../netstat.c:510 ../netstat.c:889 ../netstat.c:1251
+#: ../netstat.c:444 ../netstat.c:511 ../netstat.c:894 ../netstat.c:1256
 msgid "ESTABLISHED"
 msgstr "ESTABLISHED"
 
-#: ../netstat.c:465
+#: ../netstat.c:466
 msgid "Active NET/ROM sockets\n"
 msgstr "Aktiivsed NET/ROM soklid\n"
 
-#: ../netstat.c:466
+#: ../netstat.c:467
 msgid ""
 "User       Dest       Source     Device  State        Vr/Vs    Send-Q  "
 "Recv-Q\n"
@@ -620,182 +632,182 @@ msgstr ""
 "Kasutaja   Sihtpunkt  Lähtepunkt Liides  Olek         Vr/Vs    SaatJrk "
 "VvJrk\n"
 
-#: ../netstat.c:476 ../netstat.c:1290
+#: ../netstat.c:477 ../netstat.c:1295
 #, c-format
 msgid "Problem reading data from %s\n"
 msgstr "Probleem andmete lugemisel failist %s\n"
 
-#: ../netstat.c:511
+#: ../netstat.c:512
 msgid "SYN_SENT"
 msgstr "SYN_SENT"
 
-#: ../netstat.c:512
+#: ../netstat.c:513
 msgid "SYN_RECV"
 msgstr "SYN_RECV"
 
-#: ../netstat.c:513
+#: ../netstat.c:514
 msgid "FIN_WAIT1"
 msgstr "FIN_WAIT1"
 
-#: ../netstat.c:514
+#: ../netstat.c:515
 msgid "FIN_WAIT2"
 msgstr "FIN_WAIT2"
 
-#: ../netstat.c:515
+#: ../netstat.c:516
 msgid "TIME_WAIT"
 msgstr "TIME_WAIT"
 
-#: ../netstat.c:516
+#: ../netstat.c:517
 msgid "CLOSE"
 msgstr "CLOSE"
 
-#: ../netstat.c:517
+#: ../netstat.c:518
 msgid "CLOSE_WAIT"
 msgstr "CLOSE_WAIT"
 
-#: ../netstat.c:518
+#: ../netstat.c:519
 msgid "LAST_ACK"
 msgstr "LAST_ACK"
 
-#: ../netstat.c:519
+#: ../netstat.c:520
 msgid "LISTEN"
 msgstr "LISTEN"
 
-#: ../netstat.c:520
+#: ../netstat.c:521
 msgid "CLOSING"
 msgstr "CLOSING"
 
-#: ../netstat.c:587
+#: ../netstat.c:592
 #, c-format
 msgid "warning, got bogus igmp6 line %d.\n"
 msgstr "Hoiatus - sain imeliku igmp6 rea (nr. %d)\n"
 
-#: ../netstat.c:592 ../netstat.c:630 ../netstat.c:751 ../netstat.c:883
-#: ../netstat.c:1014 ../netstat.c:1019
+#: ../netstat.c:597 ../netstat.c:635 ../netstat.c:756 ../netstat.c:888
+#: ../netstat.c:1019 ../netstat.c:1024
 #, c-format
 msgid "netstat: unsupported address family %d !\n"
 msgstr "netstat: aadressiperekonda %d ei toetata\n"
 
-#: ../netstat.c:605 ../netstat.c:610 ../netstat.c:618 ../netstat.c:625
+#: ../netstat.c:610 ../netstat.c:615 ../netstat.c:623 ../netstat.c:630
 #, c-format
 msgid "warning, got bogus igmp line %d.\n"
 msgstr "Hoiatus - sain imeliku igmp rea (nr. %d)\n"
 
-#: ../netstat.c:668
+#: ../netstat.c:673
 msgid "Active X.25 sockets\n"
 msgstr "Aktiivsed X.25 soklid\n"
 
 #. IMHO, Vr/Vs is not very usefull --SF
-#: ../netstat.c:670
+#: ../netstat.c:675
 msgid ""
 "Dest         Source          Device  LCI  State        Vr/Vs  Send-Q  "
 "Recv-Q\n"
 msgstr ""
 "Sihtpunkt    Lähtepunkt      Liides  LCI  Olek         Vr/Vs  SaatJrk VvJrk\n"
 
-#: ../netstat.c:747
+#: ../netstat.c:752
 msgid "warning, got bogus tcp line.\n"
 msgstr "Hoiatus - sain imeliku tcp rea\n"
 
-#: ../netstat.c:788 ../netstat.c:938 ../netstat.c:1057
+#: ../netstat.c:793 ../netstat.c:943 ../netstat.c:1062
 #, c-format
 msgid "off (0.00/%ld/%d)"
 msgstr "eikäi ((0.00/%ld/%d)"
 
-#: ../netstat.c:792
+#: ../netstat.c:797
 #, c-format
 msgid "on (%2.2f/%ld/%d)"
 msgstr "käib (%2.2f/%ld/%d)"
 
-#: ../netstat.c:797
+#: ../netstat.c:802
 #, c-format
 msgid "keepalive (%2.2f/%ld/%d)"
 msgstr "keepalive (%2.2f/%ld/%d)"
 
-#: ../netstat.c:802
+#: ../netstat.c:807
 #, c-format
 msgid "timewait (%2.2f/%ld/%d)"
 msgstr "timewait (%2.2f/%ld/%d)"
 
-#: ../netstat.c:807 ../netstat.c:947 ../netstat.c:1067
+#: ../netstat.c:812 ../netstat.c:952 ../netstat.c:1072
 #, c-format
 msgid "unkn-%d (%2.2f/%ld/%d)"
 msgstr "eitea-%d (%2.2f/%ld/%d)"
 
-#: ../netstat.c:879
+#: ../netstat.c:884
 msgid "warning, got bogus udp line.\n"
 msgstr "Hoiatus - sain imeliku udp rea\n"
 
-#: ../netstat.c:897 ../netstat.c:1157 ../netstat.c:1190
+#: ../netstat.c:902 ../netstat.c:1162 ../netstat.c:1195
 msgid "UNKNOWN"
 msgstr "TUNDMATU"
 
-#: ../netstat.c:943 ../netstat.c:1062
+#: ../netstat.c:948 ../netstat.c:1067
 #, c-format
 msgid "on%d (%2.2f/%ld/%d)"
 msgstr "käib-%d (%2.2f/%ld/%d)"
 
-#: ../netstat.c:1028
+#: ../netstat.c:1033
 msgid "warning, got bogus raw line.\n"
 msgstr "Hoiatus - sain imeliku raw rea\n"
 
-#: ../netstat.c:1110
+#: ../netstat.c:1115
 msgid "warning, got bogus unix line.\n"
 msgstr "Hoiatus - sain imeliku unix rea\n"
 
-#: ../netstat.c:1137
+#: ../netstat.c:1142
 msgid "STREAM"
 msgstr "STREAM"
 
-#: ../netstat.c:1141
+#: ../netstat.c:1146
 msgid "DGRAM"
 msgstr "DGRAM"
 
-#: ../netstat.c:1145
+#: ../netstat.c:1150
 msgid "RAW"
 msgstr "RAW"
 
-#: ../netstat.c:1149
+#: ../netstat.c:1154
 msgid "RDM"
 msgstr "RDM"
 
-#: ../netstat.c:1153
+#: ../netstat.c:1158
 msgid "SEQPACKET"
 msgstr "SEQPACKET"
 
-#: ../netstat.c:1162
+#: ../netstat.c:1167
 msgid "FREE"
 msgstr "VABA"
 
-#: ../netstat.c:1178
+#: ../netstat.c:1183
 msgid "CONNECTING"
 msgstr "ÜHENDUMAS"
 
-#: ../netstat.c:1182
+#: ../netstat.c:1187
 msgid "CONNECTED"
 msgstr "ÜHENDATUD"
 
-#: ../netstat.c:1186
+#: ../netstat.c:1191
 msgid "DISCONNECTING"
 msgstr "LAHTIÜHENDUMAS"
 
-#: ../netstat.c:1217
+#: ../netstat.c:1222
 msgid "Active UNIX domain sockets "
 msgstr "Aktiivsed UNIX domeeni soklid "
 
-#: ../netstat.c:1219 ../netstat.c:1729
+#: ../netstat.c:1224 ../netstat.c:1735
 msgid "(servers and established)"
 msgstr "(serverid ja ühendatud)"
 
-#: ../netstat.c:1222 ../netstat.c:1732
+#: ../netstat.c:1227 ../netstat.c:1738
 msgid "(only servers)"
 msgstr "(ainult serverid)"
 
-#: ../netstat.c:1224 ../netstat.c:1734
+#: ../netstat.c:1229 ../netstat.c:1740
 msgid "(w/o servers)"
 msgstr "(ilma serveriteta)"
 
-#: ../netstat.c:1227
+#: ../netstat.c:1232
 msgid ""
 "\n"
 "Proto RefCnt Flags       Type       State         I-Node"
@@ -803,32 +815,32 @@ msgstr ""
 "\n"
 "Proto Mitu   Lipud       Tüüp       Olek         I-kirje "
 
-#: ../netstat.c:1229
+#: ../netstat.c:1234
 msgid " Path\n"
 msgstr "Tee\n"
 
-#: ../netstat.c:1249
+#: ../netstat.c:1254
 msgid "SABM SENT"
 msgstr "SABM SENT"
 
-#: ../netstat.c:1252
+#: ../netstat.c:1257
 msgid "RECOVERY"
 msgstr "RECOVERY"
 
-#: ../netstat.c:1266
+#: ../netstat.c:1271
 msgid "Active AX.25 sockets\n"
 msgstr "Aktiivsed AX.25 soklid\n"
 
-#: ../netstat.c:1267
+#: ../netstat.c:1272
 msgid "Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-Q\n"
 msgstr "Sihtpunkt  Lähtepunkt Liides  Olek         Vr/Vs    SaatJrk VvJrk\n"
 
-#: ../netstat.c:1310
+#: ../netstat.c:1315
 #, c-format
 msgid "problem reading data from %s\n"
 msgstr "Probleem andmete lugemisel failist %s\n"
 
-#: ../netstat.c:1361
+#: ../netstat.c:1366
 msgid ""
 "Active IPX sockets\n"
 "Proto Recv-Q Send-Q Local Address              Foreign Address            "
@@ -838,23 +850,23 @@ msgstr ""
 "Proto VvJrk  SaatJrk Kohalik aadress           Väline aadress             "
 "Olek "
 
-#: ../netstat.c:1363
+#: ../netstat.c:1368
 msgid " User"
 msgstr " Kasutaja"
 
-#: ../netstat.c:1397
+#: ../netstat.c:1402
 msgid "ESTAB"
 msgstr "ESTAB"
 
-#: ../netstat.c:1405
+#: ../netstat.c:1410
 msgid "UNK."
 msgstr "UNK."
 
-#: ../netstat.c:1443
+#: ../netstat.c:1448
 msgid "Kernel Interface table\n"
 msgstr "Tuuma liideste tabel\n"
 
-#: ../netstat.c:1447
+#: ../netstat.c:1452
 msgid ""
 "Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR "
 "Flg\n"
@@ -862,11 +874,11 @@ msgstr ""
 "Liides  MTU Meetr RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR "
 "Lip\n"
 
-#: ../netstat.c:1451
+#: ../netstat.c:1456
 msgid "missing interface information"
 msgstr "Puudulik informatsioon liideste kohta"
 
-#: ../netstat.c:1474
+#: ../netstat.c:1479
 msgid ""
 "usage: netstat [-veenNcCF] [<Af>] -r         netstat "
 "{-V|--version|-h|--help}\n"
@@ -874,11 +886,11 @@ msgstr ""
 "Kasutamine: netstat [-veenNcCF] [<Af>] -r\n"
 "            netstat {-V|--version|-h|--help}\n"
 
-#: ../netstat.c:1475
+#: ../netstat.c:1480
 msgid "       netstat [-vnNcaeol] [<Socket> ...]\n"
 msgstr "            netstat [-vnNcaeol] [<Sokkel> ...]\n"
 
-#: ../netstat.c:1476
+#: ../netstat.c:1481
 msgid ""
 "       netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
 "\n"
@@ -886,25 +898,25 @@ msgstr ""
 "            netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
 "\n"
 
-#: ../netstat.c:1478
+#: ../netstat.c:1483
 msgid "        -r, --route              display routing table\n"
 msgstr "        -r, --route              ruutingutabeli näitamine\n"
 
-#: ../netstat.c:1479
+#: ../netstat.c:1484
 msgid "        -i, --interfaces         display interface table\n"
 msgstr "        -i, --interfaces         liideste tabeli näitamine\n"
 
-#: ../netstat.c:1480
+#: ../netstat.c:1485
 msgid "        -g, --groups             display multicast group memberships\n"
 msgstr "        -g, --groups             multiedastuse gruppide näitamine\n"
 
-#: ../netstat.c:1481
+#: ../netstat.c:1486
 msgid ""
 "        -s, --statistics         display networking statistics (like SNMP)\n"
 msgstr ""
 "        -s, --statistics         võrgu statistika näitamine (SNMP stiilis)\n"
 
-#: ../netstat.c:1483
+#: ../netstat.c:1488
 msgid ""
 "        -M, --masquerade         display masqueraded connections\n"
 "\n"
@@ -912,36 +924,32 @@ msgstr ""
 "        -M, --masquerade         maskeeritavate ühenduste näitamine\n"
 "\n"
 
-#: ../netstat.c:1486 ../route.c:86
-msgid "        -n, --numeric            dont resolve names\n"
-msgstr "        -n, --numeric            mitte lahendada numbreid nimedeks\n"
-
-#: ../netstat.c:1487
-msgid "        --numeric-hosts          dont resolve host names\n"
+#: ../netstat.c:1492
+msgid "        --numeric-hosts          don't resolve host names\n"
 msgstr "        --numeric-hosts          mitte lahendada hostinimesid\n"
 
-#: ../netstat.c:1488
-msgid "        --numeric-ports          dont resolve port names\n"
+#: ../netstat.c:1493
+msgid "        --numeric-ports          don't resolve port names\n"
 msgstr "        --numeric-ports          mitte lahendada pordinimesid\n"
 
-#: ../netstat.c:1489
-msgid "        --numeric-users          dont resolve user names\n"
+#: ../netstat.c:1494
+msgid "        --numeric-users          don't resolve user names\n"
 msgstr "        --numeric-users          mitte lahendada kasutajanimesid\n"
 
-#: ../netstat.c:1490
+#: ../netstat.c:1495
 msgid "        -N, --symbolic           resolve hardware names\n"
 msgstr "        -N, --symbolic           lahendada riistvara aadressid\n"
 
-#: ../netstat.c:1491 ../route.c:87
+#: ../netstat.c:1496 ../route.c:88
 msgid "        -e, --extend             display other/more information\n"
 msgstr "        -e, --extend             muu info/lisainfo näitamine\n"
 
-#: ../netstat.c:1492
+#: ../netstat.c:1497
 msgid "        -p, --programs           display PID/Program name for sockets\n"
 msgstr ""
 "        -p, --programs           soklite kohta PID/protsessi nime näitamine\n"
 
-#: ../netstat.c:1493
+#: ../netstat.c:1498
 msgid ""
 "        -c, --continuous         continuous listing\n"
 "\n"
@@ -949,22 +957,22 @@ msgstr ""
 "        -c, --continuous         pidevalt uuenev nimekiri\n"
 "\n"
 
-#: ../netstat.c:1494
+#: ../netstat.c:1499
 msgid "        -l, --listening          display listening server sockets\n"
 msgstr "        -l, --listening          kuulavate serversoklite näitamine\n"
 
-#: ../netstat.c:1495
+#: ../netstat.c:1500
 msgid ""
 "        -a, --all, --listening   display all sockets (default: connected)\n"
 msgstr ""
 "        -a, --all, --listening   kõigi soklite näitamine (vaikimisi "
 "ühendatud)\n"
 
-#: ../netstat.c:1496
+#: ../netstat.c:1501
 msgid "        -o, --timers             display timers\n"
 msgstr "        -o, --timers             taimerite näitamine\n"
 
-#: ../netstat.c:1497 ../route.c:88
+#: ../netstat.c:1502 ../route.c:89
 msgid ""
 "        -F, --fib                display Forwarding Information Base "
 "(default)\n"
@@ -972,7 +980,7 @@ msgstr ""
 "        -F, --fib                üldiste ruutingutabelite näitamine "
 "(vaikimisi)\n"
 
-#: ../netstat.c:1498 ../route.c:89
+#: ../netstat.c:1503 ../route.c:90
 msgid ""
 "        -C, --cache              display routing cache instead of FIB\n"
 "\n"
@@ -981,7 +989,7 @@ msgstr ""
 "näitamine\n"
 "\n"
 
-#: ../netstat.c:1500
+#: ../netstat.c:1505
 msgid ""
 "  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
 "--netrom\n"
@@ -989,20 +997,19 @@ msgstr ""
 "  <Sokkel>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
 "--netrom\n"
 
-#: ../netstat.c:1501 ../route.c:91
-#, c-format
-msgid "  <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
-msgstr "  <AF>=kasutage '-A <af>' või '--<af>' vaikimisi: %s\n"
+#: ../netstat.c:1506 ../route.c:92
+msgid "  <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
+msgstr "  <AF>=kasutage '-A <af>' või '--<af>'; vaikimisi: %s\n"
 
-#: ../netstat.c:1502 ../route.c:92
+#: ../netstat.c:1507 ../route.c:93
 msgid "  List of possible address families (which support routing):\n"
 msgstr "  Võimalike ruutingu toetavate aadressiperekondade nimekiri:\n"
 
-#: ../netstat.c:1726
+#: ../netstat.c:1732
 msgid "Active Internet connections "
 msgstr "Aktiivsed internetiühendused "
 
-#: ../netstat.c:1736
+#: ../netstat.c:1742
 msgid ""
 "\n"
 "Proto Recv-Q Send-Q Local Address           Foreign Address         State    "
@@ -1012,77 +1019,77 @@ msgstr ""
 "Proto  VvJrk SaatJrk Kohalik aadress        Väline aadress          Olek     "
 "  "
 
-#: ../netstat.c:1738
+#: ../netstat.c:1744
 msgid " User       Inode     "
 msgstr " Kasutaja   I-kirje   "
 
-#: ../netstat.c:1741
+#: ../netstat.c:1747
 msgid " Timer"
 msgstr " Taimer"
 
-#: ../netstat.c:1771
+#: ../netstat.c:1777
 msgid "IPv4 Group Memberships\n"
 msgstr "IPv4 grupikuuluvused\n"
 
-#: ../netstat.c:1772
+#: ../netstat.c:1778
 msgid "Interface       RefCnt Group\n"
 msgstr "Liides          Mitu   Grupp\n"
 
-#: ../rarp.c:43
+#: ../rarp.c:44
 msgid "This kernel does not support RARP.\n"
 msgstr "rarp: tuum ei toeta RARP'i\n"
 
-#: ../rarp.c:82
+#: ../rarp.c:83
 #, c-format
 msgid "no RARP entry for %s.\n"
 msgstr "rarp: %s jaoks pole RARP kirjet\n"
 
-#: ../rarp.c:95
+#: ../rarp.c:96
 #, c-format
 msgid "%s: bad hardware address\n"
 msgstr "rarp: vigane riistvaraline aadress %s\n"
 
-#: ../rarp.c:127
+#: ../rarp.c:128
 #, c-format
 msgid "rarp: cannot open file %s:%s.\n"
 msgstr "rarp: ei saa avada faili %s:%s\n"
 
-#: ../rarp.c:139
+#: ../rarp.c:140
 #, c-format
 msgid "rarp: format error at %s:%u\n"
 msgstr "rarp: vorminguviga failis %s real %u\n"
 
-#: ../rarp.c:143 ../rarp.c:287
+#: ../rarp.c:144 ../rarp.c:289
 #, c-format
 msgid "rarp: %s: unknown host\n"
 msgstr "rarp: tundmatu host %s\n"
 
-#: ../rarp.c:146
+#: ../rarp.c:147
 #, c-format
 msgid "rarp: cannot set entry from %s:%u\n"
 msgstr "rarp: ei saa kehtestada kirjet failist %s realt %u\n"
 
-#: ../rarp.c:175
+#: ../rarp.c:176
 msgid "Usage: rarp -a                               list entries in cache.\n"
 msgstr ""
 "Kasutamine:\n"
 "  rarp -a                              puhvris olevate kirjete vaatamine\n"
 
-#: ../rarp.c:176
+#: ../rarp.c:177
 msgid "       rarp -d <hostname>                    delete entry from cache.\n"
 msgstr "  rarp -d <hosti nimi>                 kirje kustutamine puhvrist\n"
 
-#: ../rarp.c:177
+#: ../rarp.c:178
 msgid "       rarp [<HW>] -s <hostname> <hwaddr>    add entry to cache.\n"
 msgstr "  rarp [<HW>] -s <hosti nimi> <hwaddr> kirje lisamine puhvrisse\n"
 
-#: ../rarp.c:178
+#: ../rarp.c:179
 msgid ""
 "       rarp -f                               add entries from /etc/ethers.\n"
 msgstr ""
 "  rarp -f                              kirjete lisamine failist /etc/ethers\n"
 
-#: ../rarp.c:179
+#: ../rarp.c:180
 msgid ""
 "       rarp -V                               display program version.\n"
 "\n"
@@ -1090,24 +1097,24 @@ msgstr ""
 "  rarp -V                              programmi versiooni näitamine\n"
 "\n"
 
-#: ../rarp.c:236
+#: ../rarp.c:238
 #, c-format
 msgid "%s: illegal option mix.\n"
 msgstr "%s: lubamatu võtmete kombinatsioon\n"
 
-#: ../rarp.c:267
+#: ../rarp.c:269
 #, c-format
 msgid "rarp: %s: unknown hardware type.\n"
 msgstr "rarp: tundmatu riistvara tüüp %s\n"
 
-#: ../route.c:79
+#: ../route.c:80
 msgid ""
 "Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables\n"
 msgstr ""
 "Kasutamine:\n"
 "    route [-nNvee] [-FC] [<AF>]           Tuuma ruutingutabeli näitamine\n"
 
-#: ../route.c:80
+#: ../route.c:81
 msgid ""
 "       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.\n"
 "\n"
@@ -1115,7 +1122,7 @@ msgstr ""
 "    route [-v] [-FC] {add|del|flush} ...  Tuuma ruutingutabeli muutmine\n"
 "\n"
 
-#: ../route.c:82
+#: ../route.c:83
 msgid ""
 "       route {-h|--help} [<AF>]              Detailed usage syntax for "
 "specified AF.\n"
@@ -1123,7 +1130,7 @@ msgstr ""
 "    route {-h|--help} [<AF>]              Detailne süntaks perekonna AF "
 "jaoks\n"
 
-#: ../route.c:83
+#: ../route.c:84
 msgid ""
 "       route {-V|--version}                  Display version/author and "
 "exit.\n"
@@ -1149,25 +1156,25 @@ msgstr "             plipconfig -V | --version\n"
 msgid "%s\tnibble %lu  trigger %lu\n"
 msgstr "%s\tnibble %lu  trigger %lu\n"
 
-#: ../iptunnel.c:84
+#: ../iptunnel.c:85
 msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
 msgstr "Kasutamine: iptunnel { add | change | del | show } [ NIMI ]\n"
 
-#: ../iptunnel.c:85
+#: ../iptunnel.c:86
 msgid ""
 "          [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
 msgstr ""
 "             [ mode { ipip | gre | sit } ] [ remote AADR ] [ local AADR ]\n"
 
-#: ../iptunnel.c:86
+#: ../iptunnel.c:87
 msgid "          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
 msgstr "             [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
 
-#: ../iptunnel.c:87
+#: ../iptunnel.c:88
 msgid "          [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
 msgstr "             [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev LIIDES ]\n"
 
-#: ../iptunnel.c:88
+#: ../iptunnel.c:89
 msgid ""
 "       iptunnel -V | --version\n"
 "\n"
@@ -1175,83 +1182,83 @@ msgstr ""
 "             iptunnel -V | --version\n"
 "\n"
 
-#: ../iptunnel.c:89
+#: ../iptunnel.c:90
 msgid "Where: NAME := STRING\n"
 msgstr "Kus:   NIMI := STRING\n"
 
-#: ../iptunnel.c:90
+#: ../iptunnel.c:91
 msgid "       ADDR := { IP_ADDRESS | any }\n"
 msgstr "       AADR := { IP_AADRESS | any }\n"
 
-#: ../iptunnel.c:91
+#: ../iptunnel.c:92
 msgid "       TOS  := { NUMBER | inherit }\n"
 msgstr "       TOS  := { ARV | inherit }\n"
 
-#: ../iptunnel.c:92
+#: ../iptunnel.c:93
 msgid "       TTL  := { 1..255 | inherit }\n"
 msgstr "       TTL  := { 1..255 | inherit }\n"
 
-#: ../iptunnel.c:93
+#: ../iptunnel.c:94
 msgid "       KEY  := { DOTTED_QUAD | NUMBER }\n"
 msgstr ""
 "       KEY  := { PUNKTIDEGA_ARVUNELIK | ARV }\n"
 "       LIIDES := FÜÜSILISE_LIIDESE_NIMI\n"
 
-#: ../iptunnel.c:331
+#: ../iptunnel.c:332
 msgid "Keys are not allowed with ipip and sit.\n"
 msgstr "ipip ja sit juures ei ole võtmed lubatud\n"
 
-#: ../iptunnel.c:351
+#: ../iptunnel.c:352
 msgid "Broadcast tunnel requires a source address.\n"
 msgstr "Leviedastusega tunnel vajab lähteaadressi\n"
 
-#: ../iptunnel.c:366
+#: ../iptunnel.c:367
 msgid "ttl != 0 and noptmudisc are incompatible\n"
 msgstr "ttl != 0 ning noptmudisc ei sobi kokku\n"
 
-#: ../iptunnel.c:378
+#: ../iptunnel.c:379
 msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
 msgstr "Ei suuda määrata tunneli moodi (ipip, gre või sit)\n"
 
-#: ../iptunnel.c:416
+#: ../iptunnel.c:417
 #, c-format
 msgid "%s: %s/ip  remote %s  local %s "
 msgstr "%s: %s/ip teises otsas %s  siin %s "
 
-#: ../iptunnel.c:420
+#: ../iptunnel.c:421
 msgid "unknown"
 msgstr "tundmatu"
 
-#: ../iptunnel.c:452
+#: ../iptunnel.c:453
 msgid "  Drop packets out of sequence.\n"
 msgstr "  Järjekorravälised paketid visatakse minema\n"
 
-#: ../iptunnel.c:454
+#: ../iptunnel.c:455
 msgid "  Checksum in received packet is required.\n"
 msgstr "  Vastuvõetavates pakettides on kontrollsumma kohustuslik\n"
 
-#: ../iptunnel.c:456
+#: ../iptunnel.c:457
 msgid "  Sequence packets on output.\n"
 msgstr "  Väljuvad paketid varustatakse järjekorranumbritega\n"
 
-#: ../iptunnel.c:458
+#: ../iptunnel.c:459
 msgid "  Checksum output packets.\n"
 msgstr "  Väljuvad paketid varustatakse kontrollsummaga\n"
 
-#: ../iptunnel.c:486
+#: ../iptunnel.c:487
 msgid "Wrong format of /proc/net/dev. Sorry.\n"
 msgstr "/proc/net/dev on vales formaadis. Vale tuuma versioon?\n"
 
-#: ../iptunnel.c:499
+#: ../iptunnel.c:500
 #, c-format
 msgid "Failed to get type of [%s]\n"
 msgstr "Ei suutnud kindlaks teha liidese %s tüüpi\n"
 
-#: ../iptunnel.c:515
+#: ../iptunnel.c:516
 msgid "RX: Packets    Bytes        Errors CsumErrs OutOfSeq Mcasts\n"
 msgstr "RX: Pakette    Baite        Vigu   KSumVigu JrkVigu  Levipakette\n"
 
-#: ../iptunnel.c:518
+#: ../iptunnel.c:519
 msgid "TX: Packets    Bytes        Errors DeadLoop NoRoute  NoBufs\n"
 msgstr "TX: Pakette    Baite        Vigu   DeadLoop EiRuudi  MäluOtsas\n"
 
@@ -1972,15 +1979,15 @@ msgstr "rresolve: toetuseta aadressiperekond %d\n"
 msgid "[UNKNOWN]"
 msgstr "[TUNDMATU]"
 
-#: ../lib/inet6_gr.c:79
+#: ../lib/inet6_gr.c:71
 msgid "INET6 (IPv6) not configured in this system.\n"
 msgstr "INET6 (IPv6) pole antud süsteemis konfigureeritud\n"
 
-#: ../lib/inet6_gr.c:82
+#: ../lib/inet6_gr.c:74
 msgid "Kernel IPv6 routing table\n"
 msgstr "Tuuma IPv6 ruutingutabel\n"
 
-#: ../lib/inet6_gr.c:84
+#: ../lib/inet6_gr.c:76
 msgid ""
 "Destination                                 Next Hop                         "
 "       Flags Metric Ref    Use Iface\n"
@@ -1988,11 +1995,11 @@ msgstr ""
 "Sihtpunkt                                   Järgmine samm                    "
 "       Lipud Meetr  Mitu Kasut Liides\n"
 
-#: ../lib/inet6_gr.c:158
+#: ../lib/inet6_gr.c:150
 msgid "Kernel IPv6 Neighbour Cache\n"
 msgstr "Tuuma IPv6 naabrite puhver\n"
 
-#: ../lib/inet6_gr.c:161
+#: ../lib/inet6_gr.c:153
 msgid ""
 "Neighbour                                   HW Address        Iface    Flags "
 "Ref State\n"
@@ -2000,7 +2007,7 @@ msgstr ""
 "Naaber                                      HW Aadress        Liides   Lipud "
 "Mitu Olek\n"
 
-#: ../lib/inet6_gr.c:165
+#: ../lib/inet6_gr.c:157
 msgid ""
 "Neighbour                                   HW Address        Iface    Flags "
 "Ref State            Stale(sec) Delete(sec)\n"
@@ -2538,29 +2545,29 @@ msgstr "iptunnel: %s on vigane IPv4 aadress\n"
 msgid "ip: argument is wrong: %s\n"
 msgstr "iptunnel: vale argument %s\n"
 
-#: ../ipmaddr.c:58
+#: ../ipmaddr.c:61
 msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
 msgstr "Kasutamine: ipmaddr [ add | del ] MULTIAADR dev STRING\n"
 
-#: ../ipmaddr.c:59
+#: ../ipmaddr.c:62
 msgid "       ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
 msgstr "            ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
 
-#: ../ipmaddr.c:60
+#: ../ipmaddr.c:63
 msgid "       ipmaddr -V | -version\n"
 msgstr "            ipmaddr -V | -version\n"
 
-#: ../ipmaddr.c:260
+#: ../ipmaddr.c:263
 #, c-format
 msgid "family %d "
 msgstr "perekond %d "
 
-#: ../ipmaddr.c:269
+#: ../ipmaddr.c:272
 #, c-format
 msgid " users %d"
 msgstr " kasutajaid %d"
 
-#: ../ipmaddr.c:355
+#: ../ipmaddr.c:358
 msgid "Cannot create socket"
 msgstr "Ei saa avada soklit"
 
diff --git a/po/fr.po b/po/fr.po
index e8e7542..e4e8245 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgstr ""
 "Last-Translator: J.M.Vansteene <vanstee@worldnet.fr>\n"
 "Language-Team:\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso8859-1\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 #: ../arp.c:110 ../arp.c:269
@@ -59,8 +59,12 @@ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
 msgstr "arp: ne peut définir l'entrée en ligne %u du fichier ether %s !\n"
 
 #: ../arp.c:437
-msgid "Address\t\t\tHWtype\tHWaddress\t    Flags Mask\t\t  Iface\n"
-msgstr "Adresse\t\t\tTypeMap\tAdresseMat\t   Indicateurs\t\t  Iface\n"
+msgid ""
+"Address                  HWtype  HWaddress           Flags Mask            "
+"Iface\n"
+msgstr ""
+"Adresse                  TypeMap AdresseMat          Indicateurs           "
+"Iface\n"
 
 #: ../arp.c:467
 msgid "(incomplete)"
diff --git a/po/net-tools.pot b/po/net-tools.pot
index 0231aac..cdeccc9 100644
--- a/po/net-tools.pot
+++ b/po/net-tools.pot
@@ -1,263 +1,285 @@
 # SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-04-15 15:40+0100\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-05-16 05:18+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
+"Content-Transfer-Encoding: 8bit\n"
 
-#: ../arp.c:111 ../arp.c:270
+#: ../arp.c:111 ../arp.c:276
+#, c-format
 msgid "arp: need host name\n"
 msgstr ""
 
-#: ../arp.c:208 ../arp.c:222
+#: ../arp.c:213 ../arp.c:228
 #, c-format
 msgid "No ARP entry for %s\n"
 msgstr ""
 
-#: ../arp.c:240
+#: ../arp.c:246
 #, c-format
 msgid "arp: cant get HW-Address for `%s': %s.\n"
 msgstr ""
 
-#: ../arp.c:244
+#: ../arp.c:250
+#, c-format
 msgid "arp: protocol type mismatch.\n"
 msgstr ""
 
-#: ../arp.c:253
+#: ../arp.c:259
 #, c-format
 msgid "arp: device `%s' has HW address %s `%s'.\n"
 msgstr ""
 
-#: ../arp.c:283
+#: ../arp.c:289
+#, c-format
 msgid "arp: need hardware address\n"
 msgstr ""
 
-#: ../arp.c:291
+#: ../arp.c:297
+#, c-format
 msgid "arp: invalid hardware address\n"
 msgstr ""
 
-#: ../arp.c:388
+#: ../arp.c:394
 #, c-format
 msgid "arp: cannot open etherfile %s !\n"
 msgstr ""
 
-#: ../arp.c:404
+#: ../arp.c:410
 #, c-format
 msgid "arp: format error on line %u of etherfile %s !\n"
 msgstr ""
 
-#: ../arp.c:417
+#: ../arp.c:423
 #, c-format
 msgid "arp: cannot set entry on line %u of etherfile %s !\n"
 msgstr ""
 
-#: ../arp.c:438
+#: ../arp.c:444
+#, c-format
 msgid ""
 "Address                  HWtype  HWaddress           Flags Mask            "
 "Iface\n"
 msgstr ""
 
-#: ../arp.c:468
+#: ../arp.c:472
+msgid "<from_interface>"
+msgstr ""
+
+#: ../arp.c:474
 msgid "(incomplete)"
 msgstr ""
 
-#: ../arp.c:485
+#: ../arp.c:491
 #, c-format
 msgid "%s (%s) at "
 msgstr ""
 
-#: ../arp.c:491
+#: ../arp.c:497
+#, c-format
 msgid "<incomplete> "
 msgstr ""
 
-#: ../arp.c:497
+#: ../arp.c:503
 #, c-format
 msgid "netmask %s "
 msgstr ""
 
-#: ../arp.c:514
+#: ../arp.c:520
 #, c-format
 msgid "on %s\n"
 msgstr ""
 
-#: ../arp.c:593
+#: ../arp.c:599
 #, c-format
 msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
 msgstr ""
 
-#: ../arp.c:597
+#: ../arp.c:603
 #, c-format
 msgid "%s (%s) -- no entry\n"
 msgstr ""
 
-#: ../arp.c:599
+#: ../arp.c:605
 #, c-format
 msgid "arp: in %d entries no match found.\n"
 msgstr ""
 
-#: ../arp.c:614
+#: ../arp.c:620
+#, c-format
 msgid ""
 "Usage:\n"
 "  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>]             <-Display ARP "
 "cache\n"
 msgstr ""
 
-#: ../arp.c:615
+#: ../arp.c:621
+#, c-format
 msgid ""
 "  arp [-v]          [-i <if>] -d  <hostname> [pub][nopub]    <-Delete ARP "
 "entry\n"
 msgstr ""
 
-#: ../arp.c:616
+#: ../arp.c:622
+#, c-format
 msgid ""
-"  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]              <-Add entry from "
+"  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]            <-Add entry from "
 "file\n"
 msgstr ""
 
-#: ../arp.c:617
+#: ../arp.c:623
+#, c-format
 msgid ""
 "  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [temp][nopub] <-Add "
 "entry\n"
 msgstr ""
 
-#: ../arp.c:618
-msgid ""
-"  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [netmask <nm>] pub  "
-"<-''-\n"
-msgstr ""
-
-#: ../arp.c:619
+#: ../arp.c:624
+#, c-format
 msgid ""
 "  arp [-v]   [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub      "
 "<-''-\n"
 "\n"
 msgstr ""
 
-#: ../arp.c:621
+#: ../arp.c:626
+#, c-format
 msgid ""
 "        -a                       display (all) hosts in alternative (BSD) "
 "style\n"
 msgstr ""
 
-#: ../arp.c:622
+#: ../arp.c:627
+#, c-format
 msgid "        -s, --set                set a new ARP entry\n"
 msgstr ""
 
-#: ../arp.c:623
+#: ../arp.c:628
+#, c-format
 msgid "        -d, --delete             delete a specified entry\n"
 msgstr ""
 
-#: ../arp.c:624 ../netstat.c:1490 ../route.c:86
+#: ../arp.c:629 ../netstat.c:1503 ../route.c:86
+#, c-format
 msgid "        -v, --verbose            be verbose\n"
 msgstr ""
 
-#: ../arp.c:625 ../netstat.c:1491 ../route.c:87
+#: ../arp.c:630 ../netstat.c:1504 ../route.c:87
+#, c-format
 msgid "        -n, --numeric            don't resolve names\n"
 msgstr ""
 
-#: ../arp.c:626
+#: ../arp.c:631
+#, c-format
 msgid ""
 "        -i, --device             specify network interface (e.g. eth0)\n"
 msgstr ""
 
-#: ../arp.c:627
+#: ../arp.c:632
+#, c-format
 msgid "        -D, --use-device         read <hwaddr> from given device\n"
 msgstr ""
 
-#: ../arp.c:628
+#: ../arp.c:633
+#, c-format
 msgid "        -A, -p, --protocol       specify protocol family\n"
 msgstr ""
 
-#: ../arp.c:629
+#: ../arp.c:634
+#, c-format
 msgid ""
-"        -f, --file               read new entries from file or from "
-"/etc/ethers\n"
+"        -f, --file               read new entries from file or from /etc/"
+"ethers\n"
 "\n"
 msgstr ""
 
-#: ../arp.c:631 ../rarp.c:182
+#: ../arp.c:636 ../rarp.c:182
 #, c-format
 msgid "  <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
 msgstr ""
 
-#: ../arp.c:632 ../rarp.c:183
+#: ../arp.c:637 ../rarp.c:183
+#, c-format
 msgid "  List of possible hardware types (which support ARP):\n"
 msgstr ""
 
-#: ../arp.c:666 ../arp.c:751
+#: ../arp.c:671 ../arp.c:756
 #, c-format
 msgid "%s: hardware type not supported!\n"
 msgstr ""
 
-#: ../arp.c:670
+#: ../arp.c:675
 #, c-format
 msgid "%s: address family not supported!\n"
 msgstr ""
 
-#: ../arp.c:705
+#: ../arp.c:710
+#, c-format
 msgid "arp: -N not yet supported.\n"
 msgstr ""
 
-#: ../arp.c:715
+#: ../arp.c:720
 #, c-format
 msgid "arp: %s: unknown address family.\n"
 msgstr ""
 
-#: ../arp.c:724
+#: ../arp.c:729
 #, c-format
 msgid "arp: %s: unknown hardware type.\n"
 msgstr ""
 
-#: ../arp.c:743
+#: ../arp.c:748
 #, c-format
 msgid "arp: %s: kernel only supports 'inet'.\n"
 msgstr ""
 
-#: ../arp.c:756
+#: ../arp.c:761
 #, c-format
 msgid "arp: %s: hardware type without ARP support.\n"
 msgstr ""
 
-#: ../hostname.c:70
+#: ../hostname.c:71
 #, c-format
 msgid "Setting nodename to `%s'\n"
 msgstr ""
 
-#: ../hostname.c:75
+#: ../hostname.c:76
 #, c-format
 msgid "%s: you must be root to change the node name\n"
 msgstr ""
 
-#: ../hostname.c:78 ../hostname.c:98 ../hostname.c:117
+#: ../hostname.c:79 ../hostname.c:100 ../hostname.c:118
 #, c-format
 msgid "%s: name too long\n"
 msgstr ""
 
-#: ../hostname.c:90
+#: ../hostname.c:92
 #, c-format
 msgid "Setting hostname to `%s'\n"
 msgstr ""
 
-#: ../hostname.c:95
+#: ../hostname.c:97
 #, c-format
 msgid "%s: you must be root to change the host name\n"
 msgstr ""
 
-#: ../hostname.c:109
+#: ../hostname.c:110
 #, c-format
 msgid "Setting domainname to `%s'\n"
 msgstr ""
 
-#: ../hostname.c:114
+#: ../hostname.c:115
 #, c-format
 msgid "%s: you must be root to change the domain name\n"
 msgstr ""
@@ -282,83 +304,99 @@ msgstr ""
 msgid "Result: h_addr_list=`%s'\n"
 msgstr ""
 
-#: ../hostname.c:210
+#: ../hostname.c:209
 #, c-format
 msgid "%s: can't open `%s'\n"
 msgstr ""
 
-#: ../hostname.c:224
+#: ../hostname.c:223
+#, c-format
 msgid "Usage: hostname [-v] {hostname|-F file}      set hostname (from file)\n"
 msgstr ""
 
-#: ../hostname.c:225
+#: ../hostname.c:224
+#, c-format
 msgid ""
 "       domainname [-v] {nisdomain|-F file}   set NIS domainname (from file)\n"
 msgstr ""
 
-#: ../hostname.c:227
+#: ../hostname.c:226
+#, c-format
 msgid ""
 "       nodename [-v] {nodename|-F file}      set DECnet node name (from "
 "file)\n"
 msgstr ""
 
-#: ../hostname.c:229
+#: ../hostname.c:228
+#, c-format
 msgid "       hostname [-v] [-d|-f|-s|-a|-i|-y|-n]  display formatted name\n"
 msgstr ""
 
-#: ../hostname.c:230
+#: ../hostname.c:229
+#, c-format
 msgid ""
 "       hostname [-v]                         display hostname\n"
 "\n"
 msgstr ""
 
-#: ../hostname.c:231
+#: ../hostname.c:230
+#, c-format
 msgid ""
 "       hostname -V|--version|-h|--help       print info and exit\n"
 "\n"
 msgstr ""
 
-#: ../hostname.c:232
+#: ../hostname.c:231
+#, c-format
 msgid ""
 "    dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
 "\n"
 msgstr ""
 
-#: ../hostname.c:233
+#: ../hostname.c:232
+#, c-format
 msgid "    -s, --short           short host name\n"
 msgstr ""
 
-#: ../hostname.c:234
+#: ../hostname.c:233
+#, c-format
 msgid "    -a, --alias           alias names\n"
 msgstr ""
 
-#: ../hostname.c:235
+#: ../hostname.c:234
+#, c-format
 msgid "    -i, --ip-address      addresses for the hostname\n"
 msgstr ""
 
-#: ../hostname.c:236
+#: ../hostname.c:235
+#, c-format
 msgid "    -f, --fqdn, --long    long host name (FQDN)\n"
 msgstr ""
 
-#: ../hostname.c:237
+#: ../hostname.c:236
+#, c-format
 msgid "    -d, --domain          DNS domain name\n"
 msgstr ""
 
-#: ../hostname.c:238
+#: ../hostname.c:237
+#, c-format
 msgid "    -y, --yp, --nis       NIS/YP domainname\n"
 msgstr ""
 
-#: ../hostname.c:240
+#: ../hostname.c:239
+#, c-format
 msgid "    -n, --node            DECnet node name\n"
 msgstr ""
 
-#: ../hostname.c:242
+#: ../hostname.c:241
+#, c-format
 msgid ""
 "    -F, --file            read hostname or NIS domainname from given file\n"
 "\n"
 msgstr ""
 
-#: ../hostname.c:244
+#: ../hostname.c:243
+#, c-format
 msgid ""
 "   This command can read or set the hostname or the NIS domainname. You can\n"
 "   also read the DNS domain or the FQDN (fully qualified domain name).\n"
@@ -373,12 +411,14 @@ msgid "%s: You can't change the DNS domain name with this command\n"
 msgstr ""
 
 #: ../hostname.c:341
+#, c-format
 msgid ""
 "\n"
 "Unless you are using bind or NIS for host lookups you can change the DNS\n"
 msgstr ""
 
 #: ../hostname.c:342
+#, c-format
 msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
 msgstr ""
 
@@ -397,557 +437,697 @@ msgstr ""
 msgid "getnodename()=`%s'\n"
 msgstr ""
 
-#: ../ifconfig.c:108
+#: ../ifconfig.c:107 ../netstat.c:1465
+#, c-format
 msgid ""
-"Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR "
+"Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR "
 "Flg\n"
 msgstr ""
 
-#: ../ifconfig.c:130 ../ifconfig.c:162
+#: ../ifconfig.c:129 ../ifconfig.c:161
 #, c-format
-msgid "%s: unknown interface: %s\n"
+msgid "%s: ERROR while getting interface flags: %s\n"
 msgstr ""
 
-#: ../ifconfig.c:154 ../ifconfig.c:734 ../ifconfig.c:825 ../ifconfig.c:936
+#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:791 ../ifconfig.c:884
+#: ../ifconfig.c:997
+#, c-format
 msgid "No support for INET on this system.\n"
 msgstr ""
 
-#: ../ifconfig.c:177
+#: ../ifconfig.c:193
+#, c-format
+msgid "%s: ERROR while testing interface flags: %s\n"
+msgstr ""
+
+#: ../ifconfig.c:202
+#, c-format
 msgid ""
 "Usage:\n"
-"  ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"
+"  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
 msgstr ""
 
-#: ../ifconfig.c:179
+#: ../ifconfig.c:204
+#, c-format
 msgid "  [add <address>[/<prefixlen>]]\n"
 msgstr ""
 
-#: ../ifconfig.c:180
+#: ../ifconfig.c:205
+#, c-format
 msgid "  [del <address>[/<prefixlen>]]\n"
 msgstr ""
 
-#: ../ifconfig.c:181
+#: ../ifconfig.c:206
+#, c-format
 msgid "  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]\n"
 msgstr ""
 
-#: ../ifconfig.c:182
+#: ../ifconfig.c:207
+#, c-format
 msgid "  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]\n"
 msgstr ""
 
-#: ../ifconfig.c:185
+#: ../ifconfig.c:210
+#, c-format
 msgid "  [outfill <NN>] [keepalive <NN>]\n"
 msgstr ""
 
-#: ../ifconfig.c:187
+#: ../ifconfig.c:212
+#, c-format
 msgid "  [hw <HW> <address>]  [metric <NN>]  [mtu <NN>]\n"
 msgstr ""
 
-#: ../ifconfig.c:188
+#: ../ifconfig.c:213
+#, c-format
 msgid "  [[-]trailers]  [[-]arp]  [[-]allmulti]\n"
 msgstr ""
 
-#: ../ifconfig.c:189
+#: ../ifconfig.c:214
+#, c-format
 msgid "  [multicast]  [[-]promisc]\n"
 msgstr ""
 
-#: ../ifconfig.c:190
+#: ../ifconfig.c:215
+#, c-format
 msgid "  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]\n"
 msgstr ""
 
-#: ../ifconfig.c:192
+#: ../ifconfig.c:217
+#, c-format
 msgid "  [txqueuelen <NN>]\n"
 msgstr ""
 
-#: ../ifconfig.c:195
+#: ../ifconfig.c:220
+#, c-format
 msgid "  [[-]dynamic]\n"
 msgstr ""
 
-#: ../ifconfig.c:197
+#: ../ifconfig.c:222
+#, c-format
 msgid ""
 "  [up|down] ...\n"
 "\n"
 msgstr ""
 
-#: ../ifconfig.c:199
+#: ../ifconfig.c:224
+#, c-format
 msgid "  <HW>=Hardware Type.\n"
 msgstr ""
 
-#: ../ifconfig.c:200
+#: ../ifconfig.c:225
+#, c-format
 msgid "  List of possible hardware types:\n"
 msgstr ""
 
 #. 1 = ARPable
-#: ../ifconfig.c:202
+#: ../ifconfig.c:227
 #, c-format
 msgid "  <AF>=Address family. Default: %s\n"
 msgstr ""
 
-#: ../ifconfig.c:203
+#: ../ifconfig.c:228
+#, c-format
 msgid "  List of possible address families:\n"
 msgstr ""
 
-#: ../ifconfig.c:278
+#: ../ifconfig.c:304
 #, c-format
 msgid "ifconfig: option `%s' not recognised.\n"
 msgstr ""
 
-#: ../ifconfig.c:280 ../ifconfig.c:925
+#: ../ifconfig.c:306 ../ifconfig.c:987
+#, c-format
 msgid "ifconfig: `--help' gives usage information.\n"
 msgstr ""
 
-#: ../ifconfig.c:355
+#: ../ifconfig.c:381
+#, c-format
 msgid "Unknown media type.\n"
 msgstr ""
 
-#: ../ifconfig.c:647
+#: ../ifconfig.c:418
+#, c-format
+msgid ""
+"Warning: Interface %s still in promisc mode... maybe other application is "
+"running?\n"
+msgstr ""
+
+#: ../ifconfig.c:430
+#, c-format
+msgid "Warning: Interface %s still in MULTICAST mode.\n"
+msgstr ""
+
+#: ../ifconfig.c:442
+#, c-format
+msgid "Warning: Interface %s still in ALLMULTI mode.\n"
+msgstr ""
+
+#: ../ifconfig.c:466
+#, c-format
+msgid "Warning: Interface %s still in DYNAMIC mode.\n"
+msgstr ""
+
+#: ../ifconfig.c:524
+#, c-format
+msgid "Warning: Interface %s still in BROADCAST mode.\n"
+msgstr ""
+
+#: ../ifconfig.c:535
+#, c-format
+msgid "ifconfig: Error resolving '%s' for broadcast\n"
+msgstr ""
+
+#: ../ifconfig.c:560
+#, c-format
+msgid "ifconfig: Error resolving '%s' for dstaddr\n"
+msgstr ""
+
+#: ../ifconfig.c:583
+#, c-format
+msgid "ifconfig: Error resolving '%s' for netmask\n"
+msgstr ""
+
+#: ../ifconfig.c:662
+#, c-format
+msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
+msgstr ""
+
+#: ../ifconfig.c:673
+#, c-format
+msgid "ifconfig: Error resolving '%s' for pointopoint\n"
+msgstr ""
+
+#: ../ifconfig.c:697
 #, c-format
 msgid "hw address type `%s' has no handler to set address. failed.\n"
 msgstr ""
 
-#: ../ifconfig.c:656
+#: ../ifconfig.c:706
 #, c-format
 msgid "%s: invalid %s address.\n"
 msgstr ""
 
-#: ../ifconfig.c:700 ../ifconfig.c:790 ../ifconfig.c:876
+#: ../ifconfig.c:746
+#, c-format
+msgid "ifconfig: Error resolving '%s' for add\n"
+msgstr ""
+
+#: ../ifconfig.c:757 ../ifconfig.c:847 ../ifconfig.c:935
+#, c-format
 msgid "No support for INET6 on this system.\n"
 msgstr ""
 
-#: ../ifconfig.c:743 ../ifconfig.c:834
+#: ../ifconfig.c:800 ../ifconfig.c:893
 #, c-format
 msgid "Interface %s not initialized\n"
 msgstr ""
 
-#: ../ifconfig.c:755 ../ifconfig.c:845
+#: ../ifconfig.c:812 ../ifconfig.c:904
+#, c-format
 msgid "Bad address.\n"
 msgstr ""
 
-#: ../ifconfig.c:848
+#: ../ifconfig.c:907
+#, c-format
 msgid "Address deletion not supported on this system.\n"
 msgstr ""
 
-#: ../ifconfig.c:920
+#: ../ifconfig.c:979
+#, c-format
 msgid "ifconfig: Cannot set address for this protocol family.\n"
 msgstr ""
 
-#: ../ifconfig.c:946
+#: ../ifconfig.c:986
+#, c-format
+msgid "ifconfig: error resolving '%s' to set address for af=%s\n"
+msgstr ""
+
+#: ../ifconfig.c:1007
+#, c-format
 msgid "No support for ECONET on this system.\n"
 msgstr ""
 
-#: ../ifconfig.c:954
+#: ../ifconfig.c:1015
 #, c-format
 msgid "Don't know how to set addresses for family %d.\n"
 msgstr ""
 
-#: ../netstat.c:430
+#: ../ifconfig.c:1050
+#, c-format
+msgid "WARNING: at least one error occured. (%d)\n"
+msgstr ""
+
+#: ../netstat.c:434
 #, c-format
 msgid ""
 "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
 msgstr ""
 
-#: ../netstat.c:434
+#: ../netstat.c:438
+#, c-format
 msgid ""
 "(Not all processes could be identified, non-owned process info\n"
 " will not be shown, you would have to be root to see it all.)\n"
 msgstr ""
 
-#: ../netstat.c:441 ../netstat.c:1176 ../netstat.c:1253
+#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
 msgid "LISTENING"
 msgstr ""
 
-#: ../netstat.c:442
+#: ../netstat.c:446
 msgid "CONN SENT"
 msgstr ""
 
-#: ../netstat.c:443 ../netstat.c:1255
+#: ../netstat.c:447 ../netstat.c:1268
 msgid "DISC SENT"
 msgstr ""
 
-#: ../netstat.c:444 ../netstat.c:511 ../netstat.c:894 ../netstat.c:1256
+#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
 msgid "ESTABLISHED"
 msgstr ""
 
-#: ../netstat.c:466
+#: ../netstat.c:470
+#, c-format
 msgid "Active NET/ROM sockets\n"
 msgstr ""
 
-#: ../netstat.c:467
+#: ../netstat.c:471
+#, c-format
 msgid ""
-"User       Dest       Source     Device  State        Vr/Vs    Send-Q  "
-"Recv-Q\n"
+"User       Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-"
+"Q\n"
 msgstr ""
 
-#: ../netstat.c:477 ../netstat.c:1295
+#: ../netstat.c:481 ../netstat.c:1308
 #, c-format
 msgid "Problem reading data from %s\n"
 msgstr ""
 
-#: ../netstat.c:512
+#: ../netstat.c:516
 msgid "SYN_SENT"
 msgstr ""
 
-#: ../netstat.c:513
+#: ../netstat.c:517
 msgid "SYN_RECV"
 msgstr ""
 
-#: ../netstat.c:514
+#: ../netstat.c:518
 msgid "FIN_WAIT1"
 msgstr ""
 
-#: ../netstat.c:515
+#: ../netstat.c:519
 msgid "FIN_WAIT2"
 msgstr ""
 
-#: ../netstat.c:516
+#: ../netstat.c:520
 msgid "TIME_WAIT"
 msgstr ""
 
-#: ../netstat.c:517
+#: ../netstat.c:521
 msgid "CLOSE"
 msgstr ""
 
-#: ../netstat.c:518
+#: ../netstat.c:522
 msgid "CLOSE_WAIT"
 msgstr ""
 
-#: ../netstat.c:519
+#: ../netstat.c:523
 msgid "LAST_ACK"
 msgstr ""
 
-#: ../netstat.c:520
+#: ../netstat.c:524
 msgid "LISTEN"
 msgstr ""
 
-#: ../netstat.c:521
+#: ../netstat.c:525
 msgid "CLOSING"
 msgstr ""
 
-#: ../netstat.c:592
+#: ../netstat.c:596
 #, c-format
 msgid "warning, got bogus igmp6 line %d.\n"
 msgstr ""
 
-#: ../netstat.c:597 ../netstat.c:635 ../netstat.c:756 ../netstat.c:888
-#: ../netstat.c:1019 ../netstat.c:1024
+#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
+#: ../netstat.c:1032 ../netstat.c:1037
 #, c-format
 msgid "netstat: unsupported address family %d !\n"
 msgstr ""
 
-#: ../netstat.c:610 ../netstat.c:615 ../netstat.c:623 ../netstat.c:630
+#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
 #, c-format
 msgid "warning, got bogus igmp line %d.\n"
 msgstr ""
 
-#: ../netstat.c:673
+#: ../netstat.c:677
+#, c-format
 msgid "Active X.25 sockets\n"
 msgstr ""
 
 #. IMHO, Vr/Vs is not very usefull --SF
-#: ../netstat.c:675
+#: ../netstat.c:679
+#, c-format
 msgid ""
-"Dest         Source          Device  LCI  State        Vr/Vs  Send-Q  "
-"Recv-Q\n"
+"Dest         Source          Device  LCI  State        Vr/Vs  Send-Q  Recv-"
+"Q\n"
 msgstr ""
 
-#: ../netstat.c:752
+#: ../netstat.c:759
+#, c-format
 msgid "warning, got bogus tcp line.\n"
 msgstr ""
 
-#: ../netstat.c:793 ../netstat.c:943 ../netstat.c:1062
+#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
 #, c-format
 msgid "off (0.00/%ld/%d)"
 msgstr ""
 
-#: ../netstat.c:797
+#: ../netstat.c:804
 #, c-format
 msgid "on (%2.2f/%ld/%d)"
 msgstr ""
 
-#: ../netstat.c:802
+#: ../netstat.c:809
 #, c-format
 msgid "keepalive (%2.2f/%ld/%d)"
 msgstr ""
 
-#: ../netstat.c:807
+#: ../netstat.c:814
 #, c-format
 msgid "timewait (%2.2f/%ld/%d)"
 msgstr ""
 
-#: ../netstat.c:812 ../netstat.c:952 ../netstat.c:1072
+#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
 #, c-format
 msgid "unkn-%d (%2.2f/%ld/%d)"
 msgstr ""
 
-#: ../netstat.c:884
+#: ../netstat.c:894
+#, c-format
 msgid "warning, got bogus udp line.\n"
 msgstr ""
 
-#: ../netstat.c:902 ../netstat.c:1162 ../netstat.c:1195
+#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
 msgid "UNKNOWN"
 msgstr ""
 
-#: ../netstat.c:948 ../netstat.c:1067
+#: ../netstat.c:958 ../netstat.c:1080
 #, c-format
 msgid "on%d (%2.2f/%ld/%d)"
 msgstr ""
 
-#: ../netstat.c:1033
+#: ../netstat.c:1046
+#, c-format
 msgid "warning, got bogus raw line.\n"
 msgstr ""
 
-#: ../netstat.c:1115
+#: ../netstat.c:1128
+#, c-format
 msgid "warning, got bogus unix line.\n"
 msgstr ""
 
-#: ../netstat.c:1142
+#: ../netstat.c:1155
 msgid "STREAM"
 msgstr ""
 
-#: ../netstat.c:1146
+#: ../netstat.c:1159
 msgid "DGRAM"
 msgstr ""
 
-#: ../netstat.c:1150
+#: ../netstat.c:1163
 msgid "RAW"
 msgstr ""
 
-#: ../netstat.c:1154
+#: ../netstat.c:1167
 msgid "RDM"
 msgstr ""
 
-#: ../netstat.c:1158
+#: ../netstat.c:1171
 msgid "SEQPACKET"
 msgstr ""
 
-#: ../netstat.c:1167
+#: ../netstat.c:1180
 msgid "FREE"
 msgstr ""
 
-#: ../netstat.c:1183
+#: ../netstat.c:1196
 msgid "CONNECTING"
 msgstr ""
 
-#: ../netstat.c:1187
+#: ../netstat.c:1200
 msgid "CONNECTED"
 msgstr ""
 
-#: ../netstat.c:1191
+#: ../netstat.c:1204
 msgid "DISCONNECTING"
 msgstr ""
 
-#: ../netstat.c:1222
+#: ../netstat.c:1235
+#, c-format
 msgid "Active UNIX domain sockets "
 msgstr ""
 
-#: ../netstat.c:1224 ../netstat.c:1735
+#: ../netstat.c:1237 ../netstat.c:1756
+#, c-format
 msgid "(servers and established)"
 msgstr ""
 
-#: ../netstat.c:1227 ../netstat.c:1738
+#: ../netstat.c:1240 ../netstat.c:1759
+#, c-format
 msgid "(only servers)"
 msgstr ""
 
-#: ../netstat.c:1229 ../netstat.c:1740
+#: ../netstat.c:1242 ../netstat.c:1761
+#, c-format
 msgid "(w/o servers)"
 msgstr ""
 
-#: ../netstat.c:1232
+#: ../netstat.c:1245
+#, c-format
 msgid ""
 "\n"
 "Proto RefCnt Flags       Type       State         I-Node"
 msgstr ""
 
-#: ../netstat.c:1234
+#: ../netstat.c:1247
+#, c-format
 msgid " Path\n"
 msgstr ""
 
-#: ../netstat.c:1254
+#: ../netstat.c:1267
 msgid "SABM SENT"
 msgstr ""
 
-#: ../netstat.c:1257
+#: ../netstat.c:1270
 msgid "RECOVERY"
 msgstr ""
 
-#: ../netstat.c:1271
+#: ../netstat.c:1284
+#, c-format
 msgid "Active AX.25 sockets\n"
 msgstr ""
 
-#: ../netstat.c:1272
+#: ../netstat.c:1285
+#, c-format
 msgid "Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-Q\n"
 msgstr ""
 
-#: ../netstat.c:1315
+#: ../netstat.c:1328
 #, c-format
 msgid "problem reading data from %s\n"
 msgstr ""
 
-#: ../netstat.c:1366
+#: ../netstat.c:1379
+#, c-format
 msgid ""
 "Active IPX sockets\n"
 "Proto Recv-Q Send-Q Local Address              Foreign Address            "
 "State"
 msgstr ""
 
-#: ../netstat.c:1368
+#: ../netstat.c:1381
+#, c-format
 msgid " User"
 msgstr ""
 
-#: ../netstat.c:1402
+#: ../netstat.c:1415
 msgid "ESTAB"
 msgstr ""
 
-#: ../netstat.c:1410
+#: ../netstat.c:1423
 msgid "UNK."
 msgstr ""
 
-#: ../netstat.c:1448
+#: ../netstat.c:1461
+#, c-format
 msgid "Kernel Interface table\n"
 msgstr ""
 
-#: ../netstat.c:1452
-msgid ""
-"Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR "
-"Flg\n"
-msgstr ""
-
-#: ../netstat.c:1456
+#: ../netstat.c:1469
 msgid "missing interface information"
 msgstr ""
 
-#: ../netstat.c:1479
+#: ../netstat.c:1492
+#, c-format
 msgid ""
-"usage: netstat [-veenNcCF] [<Af>] -r         netstat "
-"{-V|--version|-h|--help}\n"
+"usage: netstat [-veenNcCF] [<Af>] -r         netstat {-V|--version|-h|--"
+"help}\n"
 msgstr ""
 
-#: ../netstat.c:1480
+#: ../netstat.c:1493
+#, c-format
 msgid "       netstat [-vnNcaeol] [<Socket> ...]\n"
 msgstr ""
 
-#: ../netstat.c:1481
+#: ../netstat.c:1494
+#, c-format
 msgid ""
 "       netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
 "\n"
 msgstr ""
 
-#: ../netstat.c:1483
+#: ../netstat.c:1496
+#, c-format
 msgid "        -r, --route              display routing table\n"
 msgstr ""
 
-#: ../netstat.c:1484
+#: ../netstat.c:1497
+#, c-format
 msgid "        -i, --interfaces         display interface table\n"
 msgstr ""
 
-#: ../netstat.c:1485
+#: ../netstat.c:1498
+#, c-format
 msgid "        -g, --groups             display multicast group memberships\n"
 msgstr ""
 
-#: ../netstat.c:1486
+#: ../netstat.c:1499
+#, c-format
 msgid ""
 "        -s, --statistics         display networking statistics (like SNMP)\n"
 msgstr ""
 
-#: ../netstat.c:1488
+#: ../netstat.c:1501
+#, c-format
 msgid ""
 "        -M, --masquerade         display masqueraded connections\n"
 "\n"
 msgstr ""
 
-#: ../netstat.c:1492
+#: ../netstat.c:1505
+#, c-format
 msgid "        --numeric-hosts          don't resolve host names\n"
 msgstr ""
 
-#: ../netstat.c:1493
+#: ../netstat.c:1506
+#, c-format
 msgid "        --numeric-ports          don't resolve port names\n"
 msgstr ""
 
-#: ../netstat.c:1494
+#: ../netstat.c:1507
+#, c-format
 msgid "        --numeric-users          don't resolve user names\n"
 msgstr ""
 
-#: ../netstat.c:1495
+#: ../netstat.c:1508
+#, c-format
 msgid "        -N, --symbolic           resolve hardware names\n"
 msgstr ""
 
-#: ../netstat.c:1496 ../route.c:88
+#: ../netstat.c:1509 ../route.c:88
+#, c-format
 msgid "        -e, --extend             display other/more information\n"
 msgstr ""
 
-#: ../netstat.c:1497
+#: ../netstat.c:1510
+#, c-format
 msgid "        -p, --programs           display PID/Program name for sockets\n"
 msgstr ""
 
-#: ../netstat.c:1498
+#: ../netstat.c:1511
+#, c-format
 msgid ""
 "        -c, --continuous         continuous listing\n"
 "\n"
 msgstr ""
 
-#: ../netstat.c:1499
+#: ../netstat.c:1512
+#, c-format
 msgid "        -l, --listening          display listening server sockets\n"
 msgstr ""
 
-#: ../netstat.c:1500
+#: ../netstat.c:1513
+#, c-format
 msgid ""
 "        -a, --all, --listening   display all sockets (default: connected)\n"
 msgstr ""
 
-#: ../netstat.c:1501
+#: ../netstat.c:1514
+#, c-format
 msgid "        -o, --timers             display timers\n"
 msgstr ""
 
-#: ../netstat.c:1502 ../route.c:89
+#: ../netstat.c:1515 ../route.c:89
+#, c-format
 msgid ""
 "        -F, --fib                display Forwarding Information Base "
 "(default)\n"
 msgstr ""
 
-#: ../netstat.c:1503 ../route.c:90
+#: ../netstat.c:1516 ../route.c:90
+#, c-format
 msgid ""
 "        -C, --cache              display routing cache instead of FIB\n"
 "\n"
 msgstr ""
 
-#: ../netstat.c:1505
+#: ../netstat.c:1518
+#, c-format
 msgid ""
-"  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
-"--netrom\n"
+"  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
+"netrom\n"
 msgstr ""
 
-#: ../netstat.c:1506 ../route.c:92
+#: ../netstat.c:1519
 #, c-format
-msgid "  <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
+msgid "  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
 msgstr ""
 
-#: ../netstat.c:1507 ../route.c:93
+#: ../netstat.c:1520 ../route.c:93
+#, c-format
 msgid "  List of possible address families (which support routing):\n"
 msgstr ""
 
-#: ../netstat.c:1732
+#: ../netstat.c:1753
+#, c-format
 msgid "Active Internet connections "
 msgstr ""
 
-#: ../netstat.c:1742
+#: ../netstat.c:1763
+#, c-format
 msgid ""
 "\n"
-"Proto Recv-Q Send-Q Local Address           Foreign Address         State    "
-"  "
+"Proto Recv-Q Send-Q Local Address           Foreign Address         "
+"State      "
 msgstr ""
 
-#: ../netstat.c:1744
+#: ../netstat.c:1765
+#, c-format
 msgid " User       Inode     "
 msgstr ""
 
-#: ../netstat.c:1747
+#: ../netstat.c:1768
+#, c-format
 msgid " Timer"
 msgstr ""
 
-#: ../netstat.c:1777
+#: ../netstat.c:1798
+#, c-format
 msgid "IPv4 Group Memberships\n"
 msgstr ""
 
-#: ../netstat.c:1778
+#: ../netstat.c:1799
+#, c-format
 msgid "Interface       RefCnt Group\n"
 msgstr ""
 
@@ -986,23 +1166,28 @@ msgid "rarp: cannot set entry from %s:%u\n"
 msgstr ""
 
 #: ../rarp.c:176
+#, c-format
 msgid "Usage: rarp -a                               list entries in cache.\n"
 msgstr ""
 
 #: ../rarp.c:177
+#, c-format
 msgid "       rarp -d <hostname>                    delete entry from cache.\n"
 msgstr ""
 
 #: ../rarp.c:178
+#, c-format
 msgid "       rarp [<HW>] -s <hostname> <hwaddr>    add entry to cache.\n"
 msgstr ""
 
 #: ../rarp.c:179
+#, c-format
 msgid ""
 "       rarp -f                               add entries from /etc/ethers.\n"
 msgstr ""
 
 #: ../rarp.c:180
+#, c-format
 msgid ""
 "       rarp -V                               display program version.\n"
 "\n"
@@ -1019,38 +1204,50 @@ msgid "rarp: %s: unknown hardware type.\n"
 msgstr ""
 
 #: ../route.c:80
+#, c-format
 msgid ""
 "Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables\n"
 msgstr ""
 
 #: ../route.c:81
+#, c-format
 msgid ""
 "       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.\n"
 "\n"
 msgstr ""
 
 #: ../route.c:83
+#, c-format
 msgid ""
 "       route {-h|--help} [<AF>]              Detailed usage syntax for "
 "specified AF.\n"
 msgstr ""
 
 #: ../route.c:84
+#, c-format
 msgid ""
 "       route {-V|--version}                  Display version/author and "
 "exit.\n"
 "\n"
 msgstr ""
 
+#: ../route.c:92
+#, c-format
+msgid "  <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
+msgstr ""
+
 #: ../plipconfig.c:66
+#, c-format
 msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
 msgstr ""
 
 #: ../plipconfig.c:67
+#, c-format
 msgid "                  [nibble NN] [trigger NN]\n"
 msgstr ""
 
 #: ../plipconfig.c:68
+#, c-format
 msgid "       plipconfig -V | --version\n"
 msgstr ""
 
@@ -1060,61 +1257,75 @@ msgid "%s\tnibble %lu  trigger %lu\n"
 msgstr ""
 
 #: ../iptunnel.c:85
+#, c-format
 msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
 msgstr ""
 
 #: ../iptunnel.c:86
+#, c-format
 msgid ""
 "          [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
 msgstr ""
 
 #: ../iptunnel.c:87
+#, c-format
 msgid "          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
 msgstr ""
 
 #: ../iptunnel.c:88
+#, c-format
 msgid "          [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
 msgstr ""
 
 #: ../iptunnel.c:89
+#, c-format
 msgid ""
 "       iptunnel -V | --version\n"
 "\n"
 msgstr ""
 
 #: ../iptunnel.c:90
+#, c-format
 msgid "Where: NAME := STRING\n"
 msgstr ""
 
 #: ../iptunnel.c:91
+#, c-format
 msgid "       ADDR := { IP_ADDRESS | any }\n"
 msgstr ""
 
 #: ../iptunnel.c:92
+#, c-format
 msgid "       TOS  := { NUMBER | inherit }\n"
 msgstr ""
 
 #: ../iptunnel.c:93
+#, c-format
 msgid "       TTL  := { 1..255 | inherit }\n"
 msgstr ""
 
 #: ../iptunnel.c:94
+#, c-format
 msgid "       KEY  := { DOTTED_QUAD | NUMBER }\n"
 msgstr ""
 
 #: ../iptunnel.c:332
+#, c-format
 msgid "Keys are not allowed with ipip and sit.\n"
 msgstr ""
 
 #: ../iptunnel.c:352
+#, c-format
 msgid "Broadcast tunnel requires a source address.\n"
 msgstr ""
 
 #: ../iptunnel.c:367
+#, c-format
 msgid "ttl != 0 and noptmudisc are incompatible\n"
 msgstr ""
 
 #: ../iptunnel.c:379
+#, c-format
 msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
 msgstr ""
 
@@ -1128,22 +1339,27 @@ msgid "unknown"
 msgstr ""
 
 #: ../iptunnel.c:453
+#, c-format
 msgid "  Drop packets out of sequence.\n"
 msgstr ""
 
 #: ../iptunnel.c:455
+#, c-format
 msgid "  Checksum in received packet is required.\n"
 msgstr ""
 
 #: ../iptunnel.c:457
+#, c-format
 msgid "  Sequence packets on output.\n"
 msgstr ""
 
 #: ../iptunnel.c:459
+#, c-format
 msgid "  Checksum output packets.\n"
 msgstr ""
 
 #: ../iptunnel.c:487
+#, c-format
 msgid "Wrong format of /proc/net/dev. Sorry.\n"
 msgstr ""
 
@@ -1153,10 +1369,12 @@ msgid "Failed to get type of [%s]\n"
 msgstr ""
 
 #: ../iptunnel.c:516
+#, c-format
 msgid "RX: Packets    Bytes        Errors CsumErrs OutOfSeq Mcasts\n"
 msgstr ""
 
 #: ../iptunnel.c:519
+#, c-format
 msgid "TX: Packets    Bytes        Errors DeadLoop NoRoute  NoBufs\n"
 msgstr ""
 
@@ -1323,287 +1541,487 @@ msgstr ""
 
 #: ../statistics.c:99
 #, c-format
-msgid "address mask request: %u"
+msgid "address mask request: %u"
+msgstr ""
+
+#. ?
+#: ../statistics.c:100 ../statistics.c:113
+#, c-format
+msgid "address mask replies: %u"
+msgstr ""
+
+#. ?
+#: ../statistics.c:101
+#, c-format
+msgid "%u ICMP messages sent"
+msgstr ""
+
+#: ../statistics.c:102
+#, c-format
+msgid "%u ICMP messages failed"
+msgstr ""
+
+#: ../statistics.c:104
+#, c-format
+msgid "time exceeded: %u"
+msgstr ""
+
+#. ?
+#: ../statistics.c:106
+#, c-format
+msgid "source quench: %u"
+msgstr ""
+
+#: ../statistics.c:107
+#, c-format
+msgid "redirect: %u"
+msgstr ""
+
+#: ../statistics.c:108
+#, c-format
+msgid "echo request: %u"
+msgstr ""
+
+#: ../statistics.c:110
+#, c-format
+msgid "timestamp requests: %u"
+msgstr ""
+
+#: ../statistics.c:111
+#, c-format
+msgid "timestamp replies: %u"
+msgstr ""
+
+#: ../statistics.c:112
+#, c-format
+msgid "address mask requests: %u"
+msgstr ""
+
+#: ../statistics.c:118
+#, c-format
+msgid "RTO algorithm is %s"
+msgstr ""
+
+#: ../statistics.c:122
+#, c-format
+msgid "%u active connections openings"
+msgstr ""
+
+#: ../statistics.c:123
+#, c-format
+msgid "%u passive connection openings"
+msgstr ""
+
+#: ../statistics.c:124
+#, c-format
+msgid "%u failed connection attempts"
+msgstr ""
+
+#: ../statistics.c:125
+#, c-format
+msgid "%u connection resets received"
+msgstr ""
+
+#: ../statistics.c:126
+#, c-format
+msgid "%u connections established"
+msgstr ""
+
+#: ../statistics.c:127
+#, c-format
+msgid "%u segments received"
+msgstr ""
+
+#: ../statistics.c:128
+#, c-format
+msgid "%u segments send out"
+msgstr ""
+
+#: ../statistics.c:129
+#, c-format
+msgid "%u segments retransmited"
+msgstr ""
+
+#: ../statistics.c:130
+#, c-format
+msgid "%u bad segments received."
+msgstr ""
+
+#: ../statistics.c:131
+#, c-format
+msgid "%u resets sent"
+msgstr ""
+
+#: ../statistics.c:136
+#, c-format
+msgid "%u packets received"
+msgstr ""
+
+#: ../statistics.c:137
+#, c-format
+msgid "%u packets to unknown port received."
+msgstr ""
+
+#: ../statistics.c:138
+#, c-format
+msgid "%u packet receive errors"
+msgstr ""
+
+#: ../statistics.c:139
+#, c-format
+msgid "%u packets sent"
+msgstr ""
+
+#: ../statistics.c:144
+#, c-format
+msgid "%u SYN cookies sent"
+msgstr ""
+
+#: ../statistics.c:145
+#, c-format
+msgid "%u SYN cookies received"
+msgstr ""
+
+#: ../statistics.c:146
+#, c-format
+msgid "%u invalid SYN cookies received"
+msgstr ""
+
+#: ../statistics.c:148
+#, c-format
+msgid "%u resets received for embryonic SYN_RECV sockets"
+msgstr ""
+
+#: ../statistics.c:150
+#, c-format
+msgid "%u packets pruned from receive queue because of socket buffer overrun"
+msgstr ""
+
+#. obsolete: 2.2.0 doesn't do that anymore
+#: ../statistics.c:153
+#, c-format
+msgid "%u packets pruned from receive queue"
+msgstr ""
+
+#: ../statistics.c:154
+#, c-format
+msgid ""
+"%u packets dropped from out-of-order queue because of socket buffer overrun"
+msgstr ""
+
+#: ../statistics.c:156
+#, c-format
+msgid "%u ICMP packets dropped because they were out-of-window"
+msgstr ""
+
+#: ../statistics.c:158
+#, c-format
+msgid "%u ICMP packets dropped because socket was locked"
+msgstr ""
+
+#: ../statistics.c:160
+#, c-format
+msgid "%u TCP sockets finished time wait in fast timer"
+msgstr ""
+
+#: ../statistics.c:161
+#, c-format
+msgid "%u time wait sockets recycled by time stamp"
+msgstr ""
+
+#: ../statistics.c:162
+#, c-format
+msgid "%u TCP sockets finished time wait in slow timer"
+msgstr ""
+
+#: ../statistics.c:163
+#, c-format
+msgid "%u passive connections rejected because of time stamp"
+msgstr ""
+
+#: ../statistics.c:165
+#, c-format
+msgid "%u active connections rejected because of time stamp"
+msgstr ""
+
+#: ../statistics.c:167
+#, c-format
+msgid "%u packets rejects in established connections because of timestamp"
 msgstr ""
 
-#. ?
-#: ../statistics.c:100 ../statistics.c:113
+#: ../statistics.c:169
 #, c-format
-msgid "address mask replies: %u"
+msgid "%u delayed acks sent"
 msgstr ""
 
-#. ?
-#: ../statistics.c:101
+#: ../statistics.c:170
 #, c-format
-msgid "%u ICMP messages sent"
+msgid "%u delayed acks further delayed because of locked socket"
 msgstr ""
 
-#: ../statistics.c:102
+#: ../statistics.c:172
 #, c-format
-msgid "%u ICMP messages failed"
+msgid "Quick ack mode was activated %u times"
 msgstr ""
 
-#: ../statistics.c:104
+#: ../statistics.c:173
 #, c-format
-msgid "time exceeded: %u"
+msgid "%u times the listen queue of a socket overflowed"
 msgstr ""
 
-#. ?
-#: ../statistics.c:106
+#: ../statistics.c:175
 #, c-format
-msgid "source quench: %u"
+msgid "%u SYNs to LISTEN sockets dropped"
 msgstr ""
 
-#: ../statistics.c:107
+#: ../statistics.c:176
 #, c-format
-msgid "redirect: %u"
+msgid "%u packets directly queued to recvmsg prequeue."
 msgstr ""
 
-#: ../statistics.c:108
+#: ../statistics.c:178
 #, c-format
-msgid "echo request: %u"
+msgid "%u bytes directly in process context from backlog"
 msgstr ""
 
-#: ../statistics.c:110
+#: ../statistics.c:179
 #, c-format
-msgid "timestamp requests: %u"
+msgid "%u bytes directly received in process context from prequeue"
 msgstr ""
 
-#: ../statistics.c:111
+#: ../statistics.c:181
 #, c-format
-msgid "timestamp replies: %u"
+msgid "%u packets dropped from prequeue"
 msgstr ""
 
-#: ../statistics.c:112
+#: ../statistics.c:182
 #, c-format
-msgid "address mask requests: %u"
+msgid "%u packet headers predicted"
 msgstr ""
 
-#: ../statistics.c:118
+#: ../statistics.c:183
 #, c-format
-msgid "RTO algorithm is %s"
+msgid "%u packets header predicted and directly queued to user"
 msgstr ""
 
-#: ../statistics.c:122
+#: ../statistics.c:185
 #, c-format
-msgid "%u active connections openings"
+msgid "Ran %u times out of system memory during packet sending"
 msgstr ""
 
-#: ../statistics.c:123
+#: ../statistics.c:187
 #, c-format
-msgid "%u passive connection openings"
+msgid "%u acknowledgments not containing data payload received"
 msgstr ""
 
-#: ../statistics.c:124
+#: ../statistics.c:188
 #, c-format
-msgid "%u failed connection attempts"
+msgid "%u predicted acknowledgments"
 msgstr ""
 
-#: ../statistics.c:125
+#: ../statistics.c:189
 #, c-format
-msgid "%u connection resets received"
+msgid "%u times recovered from packet loss due to fast retransmit"
 msgstr ""
 
-#: ../statistics.c:126
+#: ../statistics.c:190
 #, c-format
-msgid "%u connections established"
+msgid "%u times recovered from packet loss by selective acknowledgements"
 msgstr ""
 
-#: ../statistics.c:127
+#: ../statistics.c:191
 #, c-format
-msgid "%u segments received"
+msgid "%u bad SACK blocks received"
 msgstr ""
 
-#: ../statistics.c:128
+#: ../statistics.c:192
 #, c-format
-msgid "%u segments send out"
+msgid "Detected reordering %u times using FACK"
 msgstr ""
 
-#: ../statistics.c:129
+#: ../statistics.c:193
 #, c-format
-msgid "%u segments retransmited"
+msgid "Detected reordering %u times using SACK"
 msgstr ""
 
-#: ../statistics.c:130
+#: ../statistics.c:194
 #, c-format
-msgid "%u bad segments received."
+msgid "Detected reordering %u times using time stamp"
 msgstr ""
 
-#: ../statistics.c:131
+#: ../statistics.c:195
 #, c-format
-msgid "%u resets sent"
+msgid "Detected reordering %u times using reno fast retransmit"
 msgstr ""
 
-#: ../statistics.c:136
+#: ../statistics.c:196
 #, c-format
-msgid "%u packets received"
+msgid "%u congestion windows fully recovered without slow start"
 msgstr ""
 
-#: ../statistics.c:137
+#: ../statistics.c:197
 #, c-format
-msgid "%u packets to unknown port received."
+msgid "%u congestion windows partially recovered using Hoe heuristic"
 msgstr ""
 
-#: ../statistics.c:138
+#: ../statistics.c:198
 #, c-format
-msgid "%u packet receive errors"
+msgid "%u congestion window recovered without slow start using DSACK"
 msgstr ""
 
-#: ../statistics.c:139
+#: ../statistics.c:199
 #, c-format
-msgid "%u packets sent"
+msgid "%u congestion windows recovered without slow start after partial ack"
 msgstr ""
 
-#: ../statistics.c:144
+#: ../statistics.c:200
 #, c-format
-msgid "%u SYN cookies sent"
+msgid "%u retransmits lost"
 msgstr ""
 
-#: ../statistics.c:145
+#: ../statistics.c:201
 #, c-format
-msgid "%u SYN cookies received"
+msgid "%u timeouts after reno fast retransmit"
 msgstr ""
 
-#: ../statistics.c:146
+#: ../statistics.c:202
 #, c-format
-msgid "%u invalid SYN cookies received"
+msgid "%u timeouts after SACK recovery"
 msgstr ""
 
-#: ../statistics.c:148
+#: ../statistics.c:203
 #, c-format
-msgid "%u resets received for embryonic SYN_RECV sockets"
+msgid "%u timeouts in loss state"
 msgstr ""
 
-#: ../statistics.c:150
+#: ../statistics.c:204
 #, c-format
-msgid "%u packets pruned from receive queue because of socket buffer overrun"
+msgid "%u fast retransmits"
 msgstr ""
 
-#. obsolete: 2.2.0 doesn't do that anymore
-#: ../statistics.c:153
+#: ../statistics.c:205
 #, c-format
-msgid "%u packets pruned from receive queue"
+msgid "%u forward retransmits"
 msgstr ""
 
-#: ../statistics.c:154
+#: ../statistics.c:206
 #, c-format
-msgid ""
-"%u packets dropped from out-of-order queue because of socket buffer overrun"
+msgid "%u retransmits in slow start"
 msgstr ""
 
-#: ../statistics.c:156
+#: ../statistics.c:207
 #, c-format
-msgid "%u ICMP packets dropped because they were out-of-window"
+msgid "%u other TCP timeouts"
 msgstr ""
 
-#: ../statistics.c:158
+#: ../statistics.c:208
 #, c-format
-msgid "%u ICMP packets dropped because socket was locked"
+msgid "%u reno fast retransmits failed"
 msgstr ""
 
-#: ../statistics.c:160
+#: ../statistics.c:209
 #, c-format
-msgid "%u TCP sockets finished time wait in fast timer"
+msgid "%u SACK retransmits failed"
 msgstr ""
 
-#: ../statistics.c:161
+#: ../statistics.c:210
 #, c-format
-msgid "%u time wait sockets recycled by time stamp"
+msgid "%u times receiver scheduled too late for direct processing"
 msgstr ""
 
-#: ../statistics.c:162
+#: ../statistics.c:211
 #, c-format
-msgid "%u TCP sockets finished time wait in slow timer"
+msgid "%u packets collapsed in receive queue due to low socket buffer"
 msgstr ""
 
-#: ../statistics.c:163
+#: ../statistics.c:212
 #, c-format
-msgid "%u passive connections rejected because of time stamp"
+msgid "%u DSACKs sent for old packets"
 msgstr ""
 
-#: ../statistics.c:165
+#: ../statistics.c:213
 #, c-format
-msgid "%u active connections rejected because of time stamp"
+msgid "%u DSACKs sent for out of order packets"
 msgstr ""
 
-#: ../statistics.c:167
+#: ../statistics.c:214
 #, c-format
-msgid "%u packets rejects in established connections because of timestamp"
+msgid "%u DSACKs received"
 msgstr ""
 
-#: ../statistics.c:169
+#: ../statistics.c:215
 #, c-format
-msgid "%u delayed acks sent"
+msgid "%u DSACKs for out of order packets received"
 msgstr ""
 
-#: ../statistics.c:170
+#: ../statistics.c:216
 #, c-format
-msgid "%u delayed acks further delayed because of locked socket"
+msgid "%u connections reset due to unexpected SYN"
 msgstr ""
 
-#: ../statistics.c:172
+#: ../statistics.c:217
 #, c-format
-msgid "Quick ack mode was activated %u times"
+msgid "%u connections reset due to unexpected data"
 msgstr ""
 
-#: ../statistics.c:173
+#: ../statistics.c:218
 #, c-format
-msgid "%u times the listen queue of a socket overflowed"
+msgid "%u connections reset due to early user close"
 msgstr ""
 
-#: ../statistics.c:175
+#: ../statistics.c:219
 #, c-format
-msgid "%u SYNs to LISTEN sockets ignored"
+msgid "%u connections aborted due to memory pressure"
 msgstr ""
 
-#: ../statistics.c:176
+#: ../statistics.c:220
 #, c-format
-msgid "%u packets directly queued to recvmsg prequeue."
+msgid "%u connections aborted due to timeout"
 msgstr ""
 
-#: ../statistics.c:178
+#: ../statistics.c:221
 #, c-format
-msgid "%u packets directly received from backlog"
+msgid "%u connections aborted after user close in linger timeout"
 msgstr ""
 
-#: ../statistics.c:180
+#: ../statistics.c:222
 #, c-format
-msgid "%u packets directly received from prequeue"
+msgid "%u times unabled to send RST due to no memory"
 msgstr ""
 
-#: ../statistics.c:182
+#: ../statistics.c:223
 #, c-format
-msgid "%u packets dropped from prequeue"
+msgid "TCP ran low on memory %u times"
 msgstr ""
 
-#: ../statistics.c:183
+#: ../statistics.c:224
 #, c-format
-msgid "%u packets header predicted"
+msgid "%u TCP data loss events"
 msgstr ""
 
-#: ../statistics.c:184
+#: ../statistics.c:225
 #, c-format
-msgid "%u packets header predicted and directly queued to user"
+msgid "%u congestion windows recovered without slow start by DSACK"
 msgstr ""
 
-#: ../statistics.c:186
+#: ../statistics.c:227
 #, c-format
-msgid "Ran %u times out of system memory during packet sending"
+msgid "%u classic Reno fast retransmits failed"
 msgstr ""
 
-#: ../statistics.c:253
+#: ../statistics.c:294
 msgid "enabled"
 msgstr ""
 
-#: ../statistics.c:253
+#: ../statistics.c:294
 msgid "disabled"
 msgstr ""
 
-#: ../statistics.c:336
+#: ../statistics.c:377
 msgid "error parsing /proc/net/snmp"
 msgstr ""
 
-#: ../statistics.c:349
+#: ../statistics.c:390
 msgid "cannot open /proc/net/snmp"
 msgstr ""
 
@@ -1617,7 +2035,7 @@ msgstr ""
 msgid "Cannot change line discipline to `%s'.\n"
 msgstr ""
 
-#: ../lib/af.c:153 ../lib/hw.c:156
+#: ../lib/af.c:153 ../lib/hw.c:161
 msgid "UNSPEC"
 msgstr ""
 
@@ -1633,11 +2051,11 @@ msgstr ""
 msgid "IPv6"
 msgstr ""
 
-#: ../lib/af.c:164 ../lib/hw.c:177
+#: ../lib/af.c:164 ../lib/hw.c:182
 msgid "AMPR AX.25"
 msgstr ""
 
-#: ../lib/af.c:167 ../lib/hw.c:183
+#: ../lib/af.c:167 ../lib/hw.c:188
 msgid "AMPR NET/ROM"
 msgstr ""
 
@@ -1649,7 +2067,7 @@ msgstr ""
 msgid "Appletalk DDP"
 msgstr ""
 
-#: ../lib/af.c:176 ../lib/hw.c:218
+#: ../lib/af.c:176 ../lib/hw.c:223
 msgid "Econet"
 msgstr ""
 
@@ -1657,19 +2075,21 @@ msgstr ""
 msgid "CCITT X.25"
 msgstr ""
 
-#: ../lib/af.c:182 ../lib/hw.c:180
+#: ../lib/af.c:182 ../lib/hw.c:185
 msgid "AMPR ROSE"
 msgstr ""
 
-#: ../lib/af.c:185 ../lib/hw.c:168
+#: ../lib/af.c:185 ../lib/hw.c:173
 msgid "Ash"
 msgstr ""
 
 #: ../lib/af.c:243
+#, c-format
 msgid "Please don't supply more than one address family.\n"
 msgstr ""
 
 #: ../lib/af.c:304
+#, c-format
 msgid "Too much address family arguments.\n"
 msgstr ""
 
@@ -1694,11 +2114,12 @@ msgid "in_arcnet(%s): trailing junk!\n"
 msgstr ""
 
 #: ../lib/ash.c:81
+#, c-format
 msgid "Malformed Ash address"
 msgstr ""
 
 #: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
-#: ../lib/inet.c:259 ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78
+#: ../lib/inet.c:259 ../lib/inet6.c:145 ../lib/ipx.c:81 ../lib/netrom.c:78
 #: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
 msgid "[NONE SET]"
 msgstr ""
@@ -1712,22 +2133,21 @@ msgid "Callsign too long"
 msgstr ""
 
 #: ../lib/ax25_gr.c:47
+#, c-format
 msgid "AX.25 not configured in this system.\n"
 msgstr ""
 
 #: ../lib/ax25_gr.c:50
+#, c-format
 msgid "Kernel AX.25 routing table\n"
 msgstr ""
 
 #. xxx
 #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
+#, c-format
 msgid "Destination  Iface    Use\n"
 msgstr ""
 
-#: ../lib/ddp_gr.c:21
-msgid "Routing table for `ddp' not yet supported.\n"
-msgstr ""
-
 #: ../lib/ether.c:74 ../lib/ether.c:91
 #, c-format
 msgid "in_ether(%s): invalid ether address!\n"
@@ -1783,225 +2203,260 @@ msgstr ""
 msgid "in_hippi(%s): trailing junk!\n"
 msgstr ""
 
-#: ../lib/hw.c:155
+#: ../lib/hw.c:160
 msgid "Local Loopback"
 msgstr ""
 
-#: ../lib/hw.c:158
+#: ../lib/hw.c:163
 msgid "Serial Line IP"
 msgstr ""
 
-#: ../lib/hw.c:159
+#: ../lib/hw.c:164
 msgid "VJ Serial Line IP"
 msgstr ""
 
-#: ../lib/hw.c:160
+#: ../lib/hw.c:165
 msgid "6-bit Serial Line IP"
 msgstr ""
 
-#: ../lib/hw.c:161
+#: ../lib/hw.c:166
 msgid "VJ 6-bit Serial Line IP"
 msgstr ""
 
-#: ../lib/hw.c:162
+#: ../lib/hw.c:167
 msgid "Adaptive Serial Line IP"
 msgstr ""
 
-#: ../lib/hw.c:165
+#: ../lib/hw.c:170
 msgid "Ethernet"
 msgstr ""
 
-#: ../lib/hw.c:171
+#: ../lib/hw.c:176
 msgid "Fiber Distributed Data Interface"
 msgstr ""
 
-#: ../lib/hw.c:174
+#: ../lib/hw.c:179
 msgid "HIPPI"
 msgstr ""
 
-#: ../lib/hw.c:186
+#: ../lib/hw.c:191
 msgid "generic X.25"
 msgstr ""
 
-#: ../lib/hw.c:189
+#: ../lib/hw.c:194
 msgid "IPIP Tunnel"
 msgstr ""
 
-#: ../lib/hw.c:192
+#: ../lib/hw.c:197
 msgid "Point-to-Point Protocol"
 msgstr ""
 
-#: ../lib/hw.c:195
+#: ../lib/hw.c:200
 msgid "(Cisco)-HDLC"
 msgstr ""
 
-#: ../lib/hw.c:196
+#: ../lib/hw.c:201
 msgid "LAPB"
 msgstr ""
 
-#: ../lib/hw.c:199
+#: ../lib/hw.c:204
 msgid "ARCnet"
 msgstr ""
 
-#: ../lib/hw.c:202
+#: ../lib/hw.c:207
 msgid "Frame Relay DLCI"
 msgstr ""
 
-#: ../lib/hw.c:203
+#: ../lib/hw.c:208
 msgid "Frame Relay Access Device"
 msgstr ""
 
-#: ../lib/hw.c:206
+#: ../lib/hw.c:211
 msgid "IPv6-in-IPv4"
 msgstr ""
 
-#: ../lib/hw.c:209
+#: ../lib/hw.c:214
 msgid "IrLAP"
 msgstr ""
 
-#: ../lib/hw.c:212
+#: ../lib/hw.c:217
 msgid "16/4 Mbps Token Ring"
 msgstr ""
 
-#: ../lib/hw.c:214
+#: ../lib/hw.c:219
 msgid "16/4 Mbps Token Ring (New)"
 msgstr ""
 
-#: ../lib/inet.c:153 ../lib/inet6.c:79
+#: ../lib/hw.c:226
+msgid "Generic EUI-64"
+msgstr ""
+
+#: ../lib/inet.c:153 ../lib/inet6.c:94
 #, c-format
 msgid "rresolve: unsupport address family %d !\n"
 msgstr ""
 
-#: ../lib/inet6.c:131
+#: ../lib/inet6.c:147
 msgid "[UNKNOWN]"
 msgstr ""
 
 #: ../lib/inet6_gr.c:71
+#, c-format
 msgid "INET6 (IPv6) not configured in this system.\n"
 msgstr ""
 
-#: ../lib/inet6_gr.c:74
+#: ../lib/inet6_gr.c:76
+#, c-format
+msgid "Kernel IPv6 routing cache\n"
+msgstr ""
+
+#: ../lib/inet6_gr.c:78
+#, c-format
 msgid "Kernel IPv6 routing table\n"
 msgstr ""
 
-#: ../lib/inet6_gr.c:76
+#: ../lib/inet6_gr.c:80
+#, c-format
 msgid ""
-"Destination                                 Next Hop                         "
-"       Flags Metric Ref    Use Iface\n"
+"Destination                    Next Hop                   Flag Met Ref Use "
+"If\n"
 msgstr ""
 
-#: ../lib/inet6_gr.c:150
+#: ../lib/inet6_gr.c:174
+#, c-format
 msgid "Kernel IPv6 Neighbour Cache\n"
 msgstr ""
 
-#: ../lib/inet6_gr.c:153
+#: ../lib/inet6_gr.c:177
+#, c-format
 msgid ""
 "Neighbour                                   HW Address        Iface    Flags "
 "Ref State\n"
 msgstr ""
 
-#: ../lib/inet6_gr.c:157
+#: ../lib/inet6_gr.c:181
+#, c-format
 msgid ""
 "Neighbour                                   HW Address        Iface    Flags "
 "Ref State            Stale(sec) Delete(sec)\n"
 msgstr ""
 
 #: ../lib/inet6_sr.c:46
+#, c-format
 msgid "Usage: inet6_route [-vF] del Target\n"
 msgstr ""
 
 #: ../lib/inet6_sr.c:47
+#, c-format
 msgid "       inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
 msgstr ""
 
 #: ../lib/inet6_sr.c:48
+#, c-format
 msgid "       inet6_route [-FC] flush      NOT supported\n"
 msgstr ""
 
 #: ../lib/inet6_sr.c:188
+#, c-format
 msgid "Flushing `inet6' routing table not supported\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
+#, c-format
 msgid "INET (IPv4) not configured in this system.\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:53
+#, c-format
 msgid "Kernel IP routing table\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:56
+#, c-format
 msgid ""
 "Destination     Gateway         Genmask         Flags Metric Ref    Use "
 "Iface\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:59
+#, c-format
 msgid ""
 "Destination     Gateway         Genmask         Flags   MSS Window  irtt "
 "Iface\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:62
+#, c-format
 msgid ""
 "Destination     Gateway         Genmask         Flags Metric Ref    Use "
 "Iface    MSS   Window irtt\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:237
+#, c-format
 msgid "Kernel IP routing cache\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:258
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags Metric Ref    Use "
 "Iface\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:261
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags   MSS Window  irtt "
 "Iface\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:266
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags Metric Ref    Use "
 "Iface    MSS   Window irtt  HH  Arp\n"
 msgstr ""
 
 #: ../lib/inet_gr.c:290
+#, c-format
 msgid ""
 "Source          Destination     Gateway         Flags Metric Ref    Use "
 "Iface    MSS   Window irtt  TOS HHRef HHUptod     SpecDst\n"
 msgstr ""
 
-#: ../lib/inet_sr.c:50
+#: ../lib/inet_sr.c:51
+#, c-format
 msgid ""
 "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
 "[[dev] If]\n"
 msgstr ""
 
-#: ../lib/inet_sr.c:51
+#: ../lib/inet_sr.c:52
+#, c-format
 msgid ""
 "       inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
 msgstr ""
 
-#: ../lib/inet_sr.c:52
+#: ../lib/inet_sr.c:53
+#, c-format
 msgid ""
 "                              [netmask N] [mss Mss] [window W] [irtt I]\n"
 msgstr ""
 
-#: ../lib/inet_sr.c:53
+#: ../lib/inet_sr.c:54
+#, c-format
 msgid "                              [mod] [dyn] [reinstate] [[dev] If]\n"
 msgstr ""
 
-#: ../lib/inet_sr.c:54
+#: ../lib/inet_sr.c:55
+#, c-format
 msgid ""
 "       inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
 msgstr ""
 
-#: ../lib/inet_sr.c:55
+#: ../lib/inet_sr.c:56
+#, c-format
 msgid "       inet_route [-FC] flush      NOT supported\n"
 msgstr ""
 
@@ -2011,14 +2466,17 @@ msgid "route: %s: cannot use a NETWORK as gateway!\n"
 msgstr ""
 
 #: ../lib/inet_sr.c:174
+#, c-format
 msgid "route: Invalid MSS/MTU.\n"
 msgstr ""
 
 #: ../lib/inet_sr.c:187
+#, c-format
 msgid "route: Invalid window.\n"
 msgstr ""
 
 #: ../lib/inet_sr.c:203
+#, c-format
 msgid "route: Invalid initial rtt.\n"
 msgstr ""
 
@@ -2033,73 +2491,90 @@ msgid "route: bogus netmask %s\n"
 msgstr ""
 
 #: ../lib/inet_sr.c:270
+#, c-format
 msgid "route: netmask doesn't match route address\n"
 msgstr ""
 
 #: ../lib/inet_sr.c:306
+#, c-format
 msgid "Flushing `inet' routing table not supported\n"
 msgstr ""
 
 #: ../lib/inet_sr.c:310
+#, c-format
 msgid "Modifying `inet' routing cache not supported\n"
 msgstr ""
 
 #: ../lib/ipx_gr.c:52
+#, c-format
 msgid "IPX not configured in this system.\n"
 msgstr ""
 
 #: ../lib/ipx_gr.c:56
+#, c-format
 msgid "Kernel IPX routing table\n"
 msgstr ""
 
 #. xxx
 #: ../lib/ipx_gr.c:57
+#, c-format
 msgid "Destination               Router Net                Router Node\n"
 msgstr ""
 
 #: ../lib/ipx_sr.c:33
+#, c-format
 msgid "IPX: this needs to be written\n"
 msgstr ""
 
 #: ../lib/masq_info.c:198
+#, c-format
 msgid "IP masquerading entries\n"
 msgstr ""
 
 #: ../lib/masq_info.c:201
+#, c-format
 msgid "prot   expire source               destination          ports\n"
 msgstr ""
 
 #: ../lib/masq_info.c:204
+#, c-format
 msgid ""
-"prot   expire    initseq delta prevd source               destination        "
-"  ports\n"
+"prot   expire    initseq delta prevd source               "
+"destination          ports\n"
 msgstr ""
 
 #: ../lib/netrom_gr.c:48
+#, c-format
 msgid "NET/ROM not configured in this system.\n"
 msgstr ""
 
 #: ../lib/netrom_gr.c:51
+#, c-format
 msgid "Kernel NET/ROM routing table\n"
 msgstr ""
 
 #: ../lib/netrom_gr.c:52
+#, c-format
 msgid "Destination  Mnemonic  Quality  Neighbour  Iface\n"
 msgstr ""
 
 #: ../lib/netrom_sr.c:34
+#, c-format
 msgid "netrom usage\n"
 msgstr ""
 
 #: ../lib/netrom_sr.c:44
+#, c-format
 msgid "NET/ROM: this needs to be written\n"
 msgstr ""
 
 #: ../lib/ppp.c:44
+#, c-format
 msgid "You cannot start PPP with this program.\n"
 msgstr ""
 
 #: ../lib/ppp_ac.c:38
+#, c-format
 msgid "Sorry, use pppd!\n"
 msgstr ""
 
@@ -2108,287 +2583,314 @@ msgid "Node address must be ten digits"
 msgstr ""
 
 #: ../lib/rose_gr.c:51
+#, c-format
 msgid "ROSE not configured in this system.\n"
 msgstr ""
 
 #: ../lib/rose_gr.c:54
+#, c-format
 msgid "Kernel ROSE routing table\n"
 msgstr ""
 
-#: ../lib/tr.c:70 ../lib/tr.c:85
+#: ../lib/tr.c:86 ../lib/tr.c:101
 #, c-format
 msgid "in_tr(%s): invalid token ring address!\n"
 msgstr ""
 
-#: ../lib/tr.c:97
+#: ../lib/tr.c:113
 #, c-format
 msgid "in_tr(%s): trailing : ignored!\n"
 msgstr ""
 
-#: ../lib/tr.c:109
+#: ../lib/tr.c:125
 #, c-format
 msgid "in_tr(%s): trailing junk!\n"
 msgstr ""
 
-#: ../lib/interface.c:164
+#: ../lib/interface.c:174
 #, c-format
 msgid "warning: no inet socket available: %s\n"
 msgstr ""
 
-#: ../lib/interface.c:316
+#: ../lib/interface.c:323
 #, c-format
 msgid "Warning: cannot open %s (%s). Limited output.\n"
 msgstr ""
 
 #. Give better error message for this case.
-#: ../lib/interface.c:556
+#: ../lib/interface.c:570
 msgid "Device not found"
 msgstr ""
 
-#: ../lib/interface.c:560
+#: ../lib/interface.c:574
 #, c-format
 msgid "%s: error fetching interface information: %s\n"
 msgstr ""
 
-#: ../lib/interface.c:593
+#: ../lib/interface.c:607
 msgid "     - no statistics available -"
 msgstr ""
 
-#: ../lib/interface.c:597
+#: ../lib/interface.c:611
+#, c-format
 msgid "[NO FLAGS]"
 msgstr ""
 
-#: ../lib/interface.c:673
+#: ../lib/interface.c:687
 #, c-format
 msgid "%-9.9s Link encap:%s  "
 msgstr ""
 
-#: ../lib/interface.c:678
+#: ../lib/interface.c:692
 #, c-format
 msgid "HWaddr %s  "
 msgstr ""
 
-#: ../lib/interface.c:681
+#: ../lib/interface.c:695
 #, c-format
 msgid "Media:%s"
 msgstr ""
 
-#: ../lib/interface.c:683
+#: ../lib/interface.c:697
+#, c-format
 msgid "(auto)"
 msgstr ""
 
-#: ../lib/interface.c:690
+#: ../lib/interface.c:704
 #, c-format
 msgid "          %s addr:%s "
 msgstr ""
 
-#: ../lib/interface.c:693
+#: ../lib/interface.c:707
 #, c-format
 msgid " P-t-P:%s "
 msgstr ""
 
-#: ../lib/interface.c:696
+#: ../lib/interface.c:710
 #, c-format
 msgid " Bcast:%s "
 msgstr ""
 
-#: ../lib/interface.c:698
+#: ../lib/interface.c:712
 #, c-format
 msgid " Mask:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:715
+#: ../lib/interface.c:729
 #, c-format
 msgid "          inet6 addr: %s/%d"
 msgstr ""
 
-#: ../lib/interface.c:717
+#: ../lib/interface.c:731
+#, c-format
 msgid " Scope:"
 msgstr ""
 
-#: ../lib/interface.c:720
+#: ../lib/interface.c:734
+#, c-format
 msgid "Global"
 msgstr ""
 
-#: ../lib/interface.c:723
+#: ../lib/interface.c:737
+#, c-format
 msgid "Link"
 msgstr ""
 
-#: ../lib/interface.c:726
+#: ../lib/interface.c:740
+#, c-format
 msgid "Site"
 msgstr ""
 
-#: ../lib/interface.c:729
+#: ../lib/interface.c:743
+#, c-format
 msgid "Compat"
 msgstr ""
 
-#: ../lib/interface.c:732
+#: ../lib/interface.c:746
+#, c-format
 msgid "Host"
 msgstr ""
 
-#: ../lib/interface.c:735
+#: ../lib/interface.c:749
+#, c-format
 msgid "Unknown"
 msgstr ""
 
-#: ../lib/interface.c:750
+#: ../lib/interface.c:764
 #, c-format
 msgid "          IPX/Ethernet II addr:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:753
+#: ../lib/interface.c:767
 #, c-format
 msgid "          IPX/Ethernet SNAP addr:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:756
+#: ../lib/interface.c:770
 #, c-format
 msgid "          IPX/Ethernet 802.2 addr:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:759
+#: ../lib/interface.c:773
 #, c-format
 msgid "          IPX/Ethernet 802.3 addr:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:769
+#: ../lib/interface.c:783
 #, c-format
 msgid "          EtherTalk Phase 2 addr:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:778
+#: ../lib/interface.c:792
 #, c-format
 msgid "          econet addr:%s\n"
 msgstr ""
 
-#: ../lib/interface.c:785
+#: ../lib/interface.c:799
+#, c-format
 msgid "[NO FLAGS] "
 msgstr ""
 
-#: ../lib/interface.c:787
+#: ../lib/interface.c:801
+#, c-format
 msgid "UP "
 msgstr ""
 
-#: ../lib/interface.c:789
+#: ../lib/interface.c:803
+#, c-format
 msgid "BROADCAST "
 msgstr ""
 
-#: ../lib/interface.c:791
+#: ../lib/interface.c:805
+#, c-format
 msgid "DEBUG "
 msgstr ""
 
-#: ../lib/interface.c:793
+#: ../lib/interface.c:807
+#, c-format
 msgid "LOOPBACK "
 msgstr ""
 
-#: ../lib/interface.c:795
+#: ../lib/interface.c:809
+#, c-format
 msgid "POINTOPOINT "
 msgstr ""
 
-#: ../lib/interface.c:797
+#: ../lib/interface.c:811
+#, c-format
 msgid "NOTRAILERS "
 msgstr ""
 
-#: ../lib/interface.c:799
+#: ../lib/interface.c:813
+#, c-format
 msgid "RUNNING "
 msgstr ""
 
-#: ../lib/interface.c:801
+#: ../lib/interface.c:815
+#, c-format
 msgid "NOARP "
 msgstr ""
 
-#: ../lib/interface.c:803
+#: ../lib/interface.c:817
+#, c-format
 msgid "PROMISC "
 msgstr ""
 
-#: ../lib/interface.c:805
+#: ../lib/interface.c:819
+#, c-format
 msgid "ALLMULTI "
 msgstr ""
 
-#: ../lib/interface.c:807
+#: ../lib/interface.c:821
+#, c-format
 msgid "SLAVE "
 msgstr ""
 
-#: ../lib/interface.c:809
+#: ../lib/interface.c:823
+#, c-format
 msgid "MASTER "
 msgstr ""
 
-#: ../lib/interface.c:811
+#: ../lib/interface.c:825
+#, c-format
 msgid "MULTICAST "
 msgstr ""
 
-#: ../lib/interface.c:814
+#: ../lib/interface.c:828
+#, c-format
 msgid "DYNAMIC "
 msgstr ""
 
 #. DONT FORGET TO ADD THE FLAGS IN ife_print_short
-#: ../lib/interface.c:817
+#: ../lib/interface.c:831
 #, c-format
 msgid " MTU:%d  Metric:%d"
 msgstr ""
 
-#: ../lib/interface.c:821
+#: ../lib/interface.c:835
 #, c-format
 msgid "  Outfill:%d  Keepalive:%d"
 msgstr ""
 
-#: ../lib/interface.c:835
+#: ../lib/interface.c:849
 #, c-format
 msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
 msgstr ""
 
-#: ../lib/interface.c:840
+#: ../lib/interface.c:854
 #, c-format
 msgid "             compressed:%lu\n"
 msgstr ""
 
-#: ../lib/interface.c:852
+#: ../lib/interface.c:894
 #, c-format
 msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
 msgstr ""
 
-#: ../lib/interface.c:856
+#: ../lib/interface.c:898
 #, c-format
 msgid "          collisions:%lu "
 msgstr ""
 
-#: ../lib/interface.c:858
+#: ../lib/interface.c:900
 #, c-format
 msgid "compressed:%lu "
 msgstr ""
 
-#: ../lib/interface.c:860
+#: ../lib/interface.c:902
 #, c-format
 msgid "txqueuelen:%d "
 msgstr ""
 
-#: ../lib/interface.c:862
+#: ../lib/interface.c:904
 #, c-format
 msgid "RX bytes:%llu (%lu.%lu %s)  TX bytes:%llu (%lu.%lu %s)\n"
 msgstr ""
 
-#: ../lib/interface.c:873
+#: ../lib/interface.c:915
 #, c-format
 msgid "Interrupt:%d "
 msgstr ""
 
 #. Only print devices using it for
 #. I/O maps
-#: ../lib/interface.c:876
+#: ../lib/interface.c:918
 #, c-format
 msgid "Base address:0x%x "
 msgstr ""
 
-#: ../lib/interface.c:878
+#: ../lib/interface.c:920
 #, c-format
 msgid "Memory:%lx-%lx "
 msgstr ""
 
-#: ../lib/interface.c:881
+#: ../lib/interface.c:923
 #, c-format
 msgid "DMA chan:%x "
 msgstr ""
 
 #: ../lib/sockets.c:63
+#, c-format
 msgid "No usable address families found.\n"
 msgstr ""
 
@@ -2413,14 +2915,17 @@ msgid "ip: argument is wrong: %s\n"
 msgstr ""
 
 #: ../ipmaddr.c:61
+#, c-format
 msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
 msgstr ""
 
 #: ../ipmaddr.c:62
+#, c-format
 msgid "       ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
 msgstr ""
 
 #: ../ipmaddr.c:63
+#, c-format
 msgid "       ipmaddr -V | -version\n"
 msgstr ""
 
@@ -2449,6 +2954,7 @@ msgid "slattach: tty_lock: (%s): %s\n"
 msgstr ""
 
 #: ../slattach.c:192
+#, c-format
 msgid "slattach: cannot write PID file\n"
 msgstr ""
 
@@ -2468,18 +2974,22 @@ msgid "slattach: tty_hangup(RAISE): %s\n"
 msgstr ""
 
 #: ../slattach.c:468
+#, c-format
 msgid "slattach: tty name too long\n"
 msgstr ""
 
 #: ../slattach.c:498
+#, c-format
 msgid "slattach: tty_open: cannot get current state!\n"
 msgstr ""
 
 #: ../slattach.c:505
+#, c-format
 msgid "slattach: tty_open: cannot get current line disc!\n"
 msgstr ""
 
 #: ../slattach.c:513
+#, c-format
 msgid "slattach: tty_open: cannot set RAW mode!\n"
 msgstr ""
 
@@ -2489,6 +2999,7 @@ msgid "slattach: tty_open: cannot set %s bps!\n"
 msgstr ""
 
 #: ../slattach.c:530
+#, c-format
 msgid "slattach: tty_open: cannot set 8N1 mode!\n"
 msgstr ""
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 7c5dd37..17f1e5a 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -2,7 +2,7 @@
 # Copyright (C) 2000 Free Software Foundation, Inc.
 # Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 2000.
 #
-# $Id: pt_BR.po,v 1.7 2000/02/13 22:28:11 ralf Exp $
+# $Id: pt_BR.po,v 1.8 2006/12/14 23:36:24 ecki Exp $
 # Brazilian portuguese translation for net-tools 1.54
 # Copyright (C) 1998, 1999 Free Software Foundation, Inc.
 # Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 1998-2000
@@ -14,7 +14,7 @@ msgstr ""
 "PO-Revision-Date: 1999-03-01 02:38+0100\n"
 "Last-Translator: Arnaldo Carvalho de Melo <acme@conectiva.com.br>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO8859-9\n"
+"Content-Type: text/plain; charset=iso-8859-9\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 #: ../arp.c:110 ../arp.c:269
@@ -64,8 +64,12 @@ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
 msgstr "arp: não foi possível configurar a linha %u do arquivo etherfile %s!\n"
 
 #: ../arp.c:437
-msgid "Address\t\t\tHWtype\tHWaddress\t    Flags Mask\t\t  Iface\n"
-msgstr "Endereço\t\tTipoHW\tEndereçoHW\t Flags Mascara\t\t Iface\n"
+msgid ""
+"Address                  HWtype  HWaddress           Flags Mask            "
+"Iface\n"
+msgstr ""
+"Endereço                 TipoHW  EndereçoHW          Flags Mascara         "
+"Iface\n"
 
 #: ../arp.c:467
 msgid "(incomplete)"
@@ -2361,17 +2365,15 @@ msgstr "aten
 msgid "Warning: cannot open %s (%s). Limited output.\n"
 msgstr "Atenção: não foi possível abrir %s (%s). Saída limitada.\n"
 
-#. Give better error message for this case.
+#. better translation?
 #: ../lib/interface.c:504
 msgid "Device not found"
-msgstr "%s: dispositivo não encontrado"
+msgstr "dispositivo não encontrado"
 
 #: ../lib/interface.c:508
 #, c-format
 msgid "%s: error fetching interface information: %s\n"
-msgstr ""
-"%s: erro obtendo informações da interface: %s\n"
-"\n"
+msgstr "%s: erro obtendo informações da interface: %s\n"
 
 #: ../lib/sockets.c:59
 msgid "No usable address families found.\n"
diff --git a/rarp.c b/rarp.c
index aab05b3..ab8f710 100644
--- a/rarp.c
+++ b/rarp.c
@@ -3,7 +3,7 @@
  *              that maintains the kernel's RARP cache.  It is derived
  *              from Fred N. van Kempen's arp command.
  *
- * Version:	$Id: rarp.c,v 1.6 2001/04/08 17:05:05 pb Exp $
+ * Version:	$Id: rarp.c,v 1.9 2007/12/02 02:19:52 ecki Exp $
  *
  * Usage:       rarp -d hostname                      Delete entry
  *              rarp -s hostname ethernet_address     Add entry
@@ -40,10 +40,11 @@
 #include "net-support.h"
 #include "version.h"
 #include "pathnames.h"
+#include "proc.h"
 
 static char no_rarp_message[] = N_("This kernel does not support RARP.\n");
 
-static char version_string[] = RELEASE "\nrarp 1.03 (2001-04-04)\n";
+static char *Release = RELEASE;
 
 static struct hwtype *hardware = NULL;
 
@@ -154,7 +155,7 @@ static int rarp_file(int fd, const char *name)
 
 static int display_cache(void)
 {
-    FILE *fd = fopen(_PATH_PROCNET_RARP, "r");
+    FILE *fd = proc_fopen(_PATH_PROCNET_RARP);
     char buffer[256];
     if (fd == NULL) {
 	if (errno == ENOENT)
@@ -225,7 +226,7 @@ int main(int argc, char **argv)
 	case 'h':
 	    usage();
 	case 'V':
-	    fprintf(stderr, version_string);
+	    fprintf(stderr, "%s\n", Release);
 	    exit(E_VERSION);
 	    break;
 	case 'v':
diff --git a/route.c b/route.c
index f8c2bc3..4eaed49 100644
--- a/route.c
+++ b/route.c
@@ -2,7 +2,7 @@
  * route        This file contains an implementation of the command
  *              that manages the IP routing table in the kernel.
  *
- * Version:     $Id: route.c,v 1.9 2001/04/15 14:41:17 pb Exp $
+ * Version:     $Id: route.c,v 1.10 2002/07/30 05:24:20 ecki Exp $
  *
  * Maintainer:  Bernd 'eckes' Eckenfels, <net-tools@lina.inka.de>
  *
@@ -10,7 +10,7 @@
  *              (derived from FvK's 'route.c     1.70    01/04/94')
  *
  * Modifications:
- *              Johannes Stille:        for Net-2Debugged by 
+ *              Johannes Stille:        for Net-2Debugged by
  *                                      <johannes@titan.os.open.de>
  *              Linus Torvalds:         Misc Changes
  *              Alan Cox:               add the new mtu/window stuff
@@ -19,7 +19,7 @@
  *       {1.80} Bernd Eckenfels:        reject, metric, irtt, 1.2.x support.
  *       {1.81} Bernd Eckenfels:        reject routes need a dummy device
  *960127 {1.82} Bernd Eckenfels:        'mod' and 'dyn' 'reinstate' added
- *960129 {1.83} Bernd Eckenfels:        resolve and getsock now in lib/, 
+ *960129 {1.83} Bernd Eckenfels:        resolve and getsock now in lib/,
  *                                      REJECT displays '-' as gatway.
  *960202 {1.84} Bernd Eckenfels:        net-features support added
  *960203 {1.85} Bernd Eckenfels:        "#ifdef' in '#if' for net-features
@@ -60,20 +60,21 @@
 #include "intl.h"
 #include "pathnames.h"
 #include "version.h"
+#include "util.h"
 
 #define DFLT_AF "inet"
 
 #define FEATURE_ROUTE
 #include "lib/net-features.h"	/* needs some of the system includes above! */
 
-char *Release = RELEASE, *Version = "route 1.98 (2001-04-15)";
+static char *Release = RELEASE;
 
-int opt_n = 0;			/* numerical output flag        */
-int opt_v = 0;			/* debugging output flag        */
-int opt_e = 1;			/* 1,2,3=type of routetable     */
-int opt_fc = 0;			/* routing cache/FIB */
-int opt_h = 0;			/* help selected                */
-struct aftype *ap;		/* current address family       */
+int opt_n = 0;     // numerical output FLAG_NUM | FLAG_SYM
+int opt_v = 0;     // debugging output flag
+int opt_e = 1;     // 1,2,3=type of routetable
+int opt_fc = 0;    // routing cache/FIB
+int opt_h = 0;     // help selected
+struct aftype *ap; // selected address family
 
 static void usage(void)
 {
@@ -89,7 +90,7 @@ static void usage(void)
     fprintf(stderr, _("        -F, --fib                display Forwarding Information Base (default)\n"));
     fprintf(stderr, _("        -C, --cache              display routing cache instead of FIB\n\n"));
 
-    fprintf(stderr, _("  <AF>=Use '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
+    fprintf(stderr, _("  <AF>=Use -4, -6, '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
     fprintf(stderr, _("  List of possible address families (which support routing):\n"));
     print_aflist(1); /* 1 = routeable */
     exit(E_USAGE);
@@ -98,7 +99,7 @@ static void usage(void)
 
 static void version(void)
 {
-    fprintf(stderr, "%s\n%s\n%s\n", Release, Version, Features);
+    fprintf(stderr, "%s\n%s\n", Release, Features);
     exit(E_VERSION);
 }
 
@@ -135,14 +136,12 @@ int main(int argc, char **argv)
 
     /* getopts and -net wont work :-/ */
     for (tmp = argv; *tmp; tmp++) {
-	if (!strcmp(*tmp, "-net"))
-	    strcpy(*tmp, "#net");
-	else if (!strcmp(*tmp, "-host"))
-	    strcpy(*tmp, "#host");
+        if (!strcmp(*tmp, "-net") || !strcmp(*tmp, "-host"))
+            (*tmp)[0]='#';
     }
 
     /* Fetch the command-line arguments. */
-    while ((i = getopt_long(argc, argv, "A:eCFhnNVv?", longopts, &lop)) != EOF)
+    while ((i = getopt_long(argc, argv, "A:eCFhnN64Vv?", longopts, &lop)) != EOF)
 	switch (i) {
 	case -1:
 	    break;
@@ -176,6 +175,14 @@ int main(int argc, char **argv)
 	    if ((i = aftrans_opt(optarg)))
 		exit(i);
 	    break;
+	case '6':
+	    if ((i = aftrans_opt("inet6")))
+		exit(i);
+	    break;
+	case '4':
+	    if ((i = aftrans_opt("inet")))
+		exit(i);
+	    break;
 	case 'V':
 	    version();
 	case 'h':
diff --git a/slattach.c b/slattach.c
index cedae1b..5c81584 100644
--- a/slattach.c
+++ b/slattach.c
@@ -40,7 +40,7 @@
 #include <limits.h>
 #include <pwd.h>
 #include <signal.h>
-#include <stdlib.h>          
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 #include <getopt.h>
@@ -62,26 +62,27 @@
 #include "util.h"
 
 #ifndef _PATH_LOCKD
-#define _PATH_LOCKD		"/var/lock"		/* lock files   */
+#define _PATH_LOCKD	"/var/lock"		/* lock files   */
 #endif
 #ifndef _UID_UUCP
-#define _UID_UUCP		"uucp"			/* owns locks   */
+#define _UID_UUCP	"uucp"			/* owns locks   */
+#endif
+#ifndef _PATH_DEVPTMX
+#define _PATH_DEVPTMX	"/dev/ptmx"		/* pseudo-terminal master */
 #endif
 
 
 #define DEF_PROTO	"cslip"
 
 
-const char *Release = RELEASE,
-	   *Version = "@(#) slattach 1.21 (1999-11-21)",
-	   *Signature = "net-tools, Fred N. van Kempen et al.";
+static char *Release = RELEASE, *Signature = "Fred N. van Kempen et al.";
 
 
 struct {
   const char	*speed;
   int	code;
 } tty_speeds[] = {			/* table of usable baud rates	*/
-  { "50",	B50	}, { "75",	B75  	},	
+  { "50",	B50	}, { "75",	B75  	},
   { "110",	B110	}, { "300",	B300	},
   { "600",	B600	}, { "1200",	B1200	},
   { "2400",	B2400	}, { "4800",	B4800	},
@@ -108,6 +109,7 @@ struct termios	tty_saved,		/* saved TTY device state	*/
 int		tty_sdisc,		/* saved TTY line discipline	*/
 		tty_ldisc,		/* current TTY line discipline	*/
 		tty_fd = -1;		/* TTY file descriptor		*/
+char *		path_pts = NULL;	/* slave pseudo-terminal device */
 int		opt_c = 0;		/* "command" to run at exit	*/
 int		opt_e = 0;		/* "activate only" flag		*/
 int		opt_h = 0;		/* "hangup" on carrier loss	*/
@@ -115,7 +117,7 @@ int		opt_h = 0;		/* "hangup" on carrier loss	*/
 int		opt_k = 0;		/* "keepalive" value		*/
 #endif
 int		opt_l = 0;		/* "lock it" flag		*/
-int		opt_L = 0;		/* clocal flag			*/
+int		opt_L = 0;		/* 3-wire mode flag		*/
 int		opt_m = 0;		/* "set RAW mode" flag		*/
 int		opt_n = 0;		/* "set No Mesg" flag		*/
 #ifdef SIOCSOUTFILL
@@ -149,7 +151,7 @@ tty_already_locked(char *nam)
   /* that lock.                                   */
   i = fscanf(fd, "%d", &pid);
   (void) fclose(fd);
- 
+
   if (i != 1) /* Lock file format's wrong! Kill't */
     return(0);
 
@@ -195,15 +197,18 @@ tty_lock(char *path, int mode)
 		return(-1);
 	}
 
-	(void) close(fd);
-
 	/* Make sure UUCP owns the lockfile.  Required by some packages. */
 	if ((pw = getpwnam(_UID_UUCP)) == NULL) {
 		if (opt_q == 0) fprintf(stderr, _("slattach: tty_lock: UUCP user %s unknown!\n"),
 					_UID_UUCP);
+		(void) close(fd);
 		return(0);	/* keep the lock anyway */
 	}
-	(void) chown(saved_path, pw->pw_uid, pw->pw_gid);
+	if (fchown(fd, pw->pw_uid, pw->pw_gid))
+		/* keep the lock anyway */;
+
+	(void) close(fd);
+
 	saved_lock = 1;
   } else {	/* unlock */
 	if (saved_lock != 1) return(0);
@@ -294,7 +299,7 @@ tty_set_parity(struct termios *tty, char *parity)
   switch(toupper(*parity)) {
 	case 'N':
 		tty->c_cflag &= ~(PARENB | PARODD);
-		break;  
+		break;
 
 	case 'O':
 		tty->c_cflag &= ~(PARENB | PARODD);
@@ -342,9 +347,11 @@ tty_set_raw(struct termios *tty)
   tty->c_oflag = (0);				/* output flags		*/
   tty->c_lflag = (0);				/* local flags		*/
   speed = (tty->c_cflag & CBAUD);		/* save current speed	*/
-  tty->c_cflag = (CRTSCTS | HUPCL | CREAD);	/* UART flags		*/
-  if (opt_L) 
+  tty->c_cflag = (HUPCL | CREAD);		/* UART flags		*/
+  if (opt_L)
 	tty->c_cflag |= CLOCAL;
+  else
+	tty->c_cflag |= CRTSCTS;
   tty->c_cflag |= speed;			/* restore speed	*/
   return(0);
 }
@@ -410,7 +417,7 @@ static int
 tty_get_name(char *name)
 {
   if (ioctl(tty_fd, SIOCGIFNAME, name) < 0) {
-	if (opt_q == 0) 
+	if (opt_q == 0)
 	    perror("tty_get_name");
 	return(-errno);
   }
@@ -464,7 +471,7 @@ tty_open(char *name, const char *speed)
   if (name != NULL) {
 	if (name[0] != '/') {
 		if (strlen(name + 6) > sizeof(pathbuf)) {
-			if (opt_q == 0) fprintf(stderr, 
+			if (opt_q == 0) fprintf(stderr,
 				_("slattach: tty name too long\n"));
 			return (-1);
 		}
@@ -488,7 +495,28 @@ tty_open(char *name, const char *speed)
 		return(-errno);
 	}
 	tty_fd = fd;
-	if (opt_d) printf("slattach: tty_open: %s (fd=%d) ", path_open, fd);
+	if (opt_d) printf("slattach: tty_open: %s (fd=%d)\n", path_open, fd);
+	if (!strcmp(path_open, _PATH_DEVPTMX)) {
+		if (opt_d) printf("slattach: tty_open: trying to grantpt and unlockpt\n");
+		if (grantpt(fd) < 0) {
+		    if (opt_q == 0) fprintf(stderr,
+			    "slattach: tty_open: grantpt: %s\n", strerror(errno));
+		    return(-errno);
+		}
+		if (unlockpt(fd) < 0) {
+		    if (opt_q == 0) fprintf(stderr,
+			    "slattach: tty_open: unlockpt: %s\n", strerror(errno));
+		    return(-errno);
+		}
+		path_pts = ptsname(fd);
+		if (path_pts == NULL) {
+		    if (opt_q == 0) fprintf(stderr,
+			    "slattach: tty_open: ptsname: %s\n", strerror(errno));
+		    return(-errno);
+		}
+		if (opt_d) printf("slattach: tty_open: %s: slave pseudo-terminal is %s\n",
+				  path_open, path_pts);
+	}
   } else {
 	tty_fd = 0;
   }
@@ -504,7 +532,7 @@ tty_open(char *name, const char *speed)
   if (tty_get_disc(&tty_sdisc) < 0) {
 	if (opt_q == 0) fprintf(stderr, _("slattach: tty_open: cannot get current line disc!\n"));
 	return(-errno);
-  } 
+  }
   tty_ldisc = tty_sdisc;
 
   /* Put this terminal line in a 8-bit transparent mode. */
@@ -565,15 +593,15 @@ usage(void)
 	  "[-c cmd] [-s speed] [-p protocol] tty | -\n"
 	  "       slattach -V | --version\n";
 
-  fprintf(stderr, usage_msg);
-  exit(1);
+  fputs(usage_msg, stderr);
+  exit(E_USAGE);
 }
 
 
-static void 
+static void
 version(void)
 {
-    printf("%s\n%s\n%s\n", Release, Version, Signature);
+    printf("%s\n%s\n", Release, Signature);
     exit(E_VERSION);
 }
 
@@ -581,7 +609,7 @@ version(void)
 int
 main(int argc, char *argv[])
 {
-  char path_buf[128];
+  char path_buf[128] = "";
   char *path_dev;
   char buff[128];
   const char *speed = NULL;
@@ -593,7 +621,6 @@ main(int argc, char *argv[])
     { NULL, 0, NULL, 0 }
   };
 
-  strcpy(path_buf, "");
   path_dev = path_buf;
 
   /* Scan command line for any arguments. */
@@ -667,7 +694,7 @@ main(int argc, char *argv[])
 		usage();
 		/*NOTREACHED*/
   }
-  
+
   if (setvbuf(stdout,0,_IOLBF,0)) {
 	if (opt_q == 0) fprintf(stderr, _("slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"),
 				strerror(errno));
@@ -703,6 +730,7 @@ main(int argc, char *argv[])
         if (tty_get_name(buff)) { return(3); }
 	printf(_("%s started"), proto);
 	if (path_dev != NULL) printf(_(" on %s"), path_dev);
+	if (path_pts != NULL) printf(_(" ptsname %s"), path_pts);
 	printf(_(" interface %s\n"), buff);
   }
 
@@ -738,7 +766,7 @@ main(int argc, char *argv[])
 
 	tty_close();
 	if(extcmd)	/* external command on exit */
-		system(extcmd);
+		exit(system(extcmd));
   }
   exit(0);
 }
diff --git a/statistics.c b/statistics.c
index a878df8..fe8ee4e 100644
--- a/statistics.c
+++ b/statistics.c
@@ -1,9 +1,9 @@
 /*
- * Copyright 1997,1999,2000 Andi Kleen. Subject to the GPL. 
- * $Id: statistics.c,v 1.14 2001/02/02 18:01:23 pb Exp $
- * 19980630 - i18n - Arnaldo Carvalho de Melo <acme@conectiva.com.br> 
- * 19981113 - i18n fixes - Arnaldo Carvalho de Melo <acme@conectiva.com.br> 
- * 19990101 - added net/netstat, -t, -u, -w supprt - Bernd Eckenfels 
+ * Copyright 1997,1999,2000 Andi Kleen. Subject to the GPL.
+ * $Id: statistics.c,v 1.23 2010-10-29 19:24:36 ecki Exp $
+ * 19980630 - i18n - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * 19981113 - i18n fixes - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * 19990101 - added net/netstat, -t, -u, -w supprt - Bernd Eckenfels
  */
 #include <ctype.h>
 #include <stdio.h>
@@ -11,6 +11,7 @@
 #include <string.h>
 #include "config.h"
 #include "intl.h"
+#include "proc.h"
 
 /* #define WARN 1 */
 
@@ -35,26 +36,26 @@ struct entry {
     enum State type;
 };
 
-struct statedesc { 
+struct statedesc {
     int indent;
-    char *title; 
-}; 
+    char *title;
+};
 
-struct statedesc states[] = { 
+struct statedesc states[] = {
     [number] = { 4, NULL },
-    [opt_number] = { 4, NULL }, 
+    [opt_number] = { 4, NULL },
     [i_forward] = { 4, NULL },
     [i_inp_icmp] = { 8, N_("ICMP input histogram:") },
     [i_outp_icmp] = { 8, N_("ICMP output histogram:") },
     [MaxState] = {0},
-}; 
+};
 
 static enum State state;
 
 #define I_STATIC (1<<16)	/* static configuration option. */
 #define I_TITLE  (1<<17)
 
-/* 
+/*
  * XXX check against the snmp mib rfc.
  *
  * Don't mark the first field as translatable! It's a snmp MIB standard.
@@ -63,54 +64,115 @@ static enum State state;
 struct entry Iptab[] =
 {
     {"Forwarding", N_("Forwarding is %s"), i_forward | I_STATIC},
-    {"DefaultTTL", N_("Default TTL is %u"), number | I_STATIC},
-    {"InReceives", N_("%u total packets received"), number},
-    {"InHdrErrors", N_("%u with invalid headers"), opt_number},
-    {"InAddrErrors", N_("%u with invalid addresses"), opt_number},
-    {"ForwDatagrams", N_("%u forwarded"), number},
-    {"InUnknownProtos", N_("%u with unknown protocol"), opt_number},
-    {"InDiscards", N_("%u incoming packets discarded"), number},
-    {"InDelivers", N_("%u incoming packets delivered"), number},
-    {"OutRequests", N_("%u requests sent out"), number},	/*? */
-    {"OutDiscards", N_("%u outgoing packets dropped"), opt_number},
-    {"OutNoRoutes", N_("%u dropped because of missing route"), opt_number},
-    {"ReasmTimeout", N_("%u fragments dropped after timeout"), opt_number},
-    {"ReasmReqds", N_("%u reassemblies required"), opt_number},	/* ? */
-    {"ReasmOKs", N_("%u packets reassembled ok"), opt_number},
-    {"ReasmFails", N_("%u packet reassembles failed"), opt_number},
-    {"FragOKs", N_("%u fragments received ok"), opt_number},
-    {"FragFails", N_("%u fragments failed"), opt_number},
-    {"FragCreates", N_("%u fragments created"), opt_number}
+    {"DefaultTTL", N_("Default TTL is %llu"), number | I_STATIC},
+    {"InReceives", N_("%llu total packets received"), number},
+    {"InHdrErrors", N_("%llu with invalid headers"), opt_number},
+    {"InAddrErrors", N_("%llu with invalid addresses"), opt_number},
+    {"ForwDatagrams", N_("%llu forwarded"), number},
+    {"InUnknownProtos", N_("%llu with unknown protocol"), opt_number},
+    {"InDiscards", N_("%llu incoming packets discarded"), number},
+    {"InDelivers", N_("%llu incoming packets delivered"), number},
+    {"OutRequests", N_("%llu requests sent out"), number},	/*? */
+    {"OutDiscards", N_("%llu outgoing packets dropped"), opt_number},
+    {"OutNoRoutes", N_("%llu dropped because of missing route"), opt_number},
+    {"ReasmTimeout", N_("%llu fragments dropped after timeout"), opt_number},
+    {"ReasmReqds", N_("%llu reassemblies required"), opt_number},	/* ? */
+    {"ReasmOKs", N_("%llu packets reassembled ok"), opt_number},
+    {"ReasmFails", N_("%llu packet reassembles failed"), opt_number},
+    {"FragOKs", N_("%llu fragments received ok"), opt_number},
+    {"FragFails", N_("%llu fragments failed"), opt_number},
+    {"FragCreates", N_("%llu fragments created"), opt_number}
+};
+
+struct entry Ip6tab[] =
+{
+    {"Ip6InReceives", N_("%llu total packets received"), number},
+    {"Ip6InHdrErrors", N_("%llu with invalid headers"), opt_number},
+    {"Ip6InTooBigErrors", N_("%llu with packets too big"), opt_number},
+    {"Ip6InNoRoutes", N_("%llu incoming packets with no route"), opt_number},
+    {"Ip6InAddrErrors", N_("%llu with invalid addresses"), opt_number},
+    {"Ip6InUnknownProtos", N_("%llu with unknown protocol"), opt_number},
+    {"Ip6InTruncatedPkts", N_("%llu with truncated packets"), opt_number},
+    {"Ip6InDiscards", N_("%llu incoming packets discarded"), number},
+    {"Ip6InDelivers", N_("%llu incoming packets delivered"), number},
+    {"Ip6OutForwDatagrams", N_("%llu forwarded"), number},
+    {"Ip6OutRequests", N_("%llu requests sent out"), number},     /*? */
+    {"Ip6OutDiscards", N_("%llu outgoing packets dropped"), opt_number},
+    {"Ip6OutNoRoutes", N_("%llu dropped because of missing route"), opt_number},
+    {"Ip6ReasmTimeout", N_("%llu fragments dropped after timeout"), opt_number},
+    {"Ip6ReasmReqds", N_("%llu reassemblies required"), opt_number}, /* ? */
+    {"Ip6ReasmOKs", N_("%llu packets reassembled ok"), opt_number},
+    {"Ip6ReasmFails", N_("%llu packet reassembles failed"), opt_number},
+    {"Ip6FragOKs", N_("%llu fragments received ok"), opt_number},
+    {"Ip6FragFails", N_("%llu fragments failed"), opt_number},
+    {"Ip6FragCreates", N_("%llu fragments created"), opt_number},
+    {"Ip6InMcastPkts", N_("%llu incoming multicast packets"), opt_number},
+    {"Ip6OutMcastPkts", N_("%llu outgoing multicast packets"), opt_number}
 };
 
 struct entry Icmptab[] =
 {
-    {"InMsgs", N_("%u ICMP messages received"), number},
-    {"InErrors", N_("%u input ICMP message failed."), number},
-    {"InDestUnreachs", N_("destination unreachable: %u"), i_inp_icmp | I_TITLE},
-    {"InTimeExcds", N_("timeout in transit: %u"), i_inp_icmp | I_TITLE},
-    {"InParmProbs", N_("wrong parameters: %u"), i_inp_icmp | I_TITLE},	/*? */
-    {"InSrcQuenchs", N_("source quenches: %u"), i_inp_icmp | I_TITLE},
-    {"InRedirects", N_("redirects: %u"), i_inp_icmp | I_TITLE},
-    {"InEchos", N_("echo requests: %u"), i_inp_icmp | I_TITLE},
-    {"InEchoReps", N_("echo replies: %u"), i_inp_icmp | I_TITLE},
-    {"InTimestamps", N_("timestamp request: %u"), i_inp_icmp | I_TITLE},
-    {"InTimestampReps", N_("timestamp reply: %u"), i_inp_icmp | I_TITLE},
-    {"InAddrMasks", N_("address mask request: %u"), i_inp_icmp | I_TITLE},	/*? */
-    {"InAddrMaskReps", N_("address mask replies: %u"), i_inp_icmp | I_TITLE},	/*? */
-    {"OutMsgs", N_("%u ICMP messages sent"), number},
-    {"OutErrors", N_("%u ICMP messages failed"), number},
-    {"OutDestUnreachs", N_("destination unreachable: %u"), i_outp_icmp | I_TITLE},
-    {"OutTimeExcds", N_("time exceeded: %u"), i_outp_icmp | I_TITLE},
-    {"OutParmProbs", N_("wrong parameters: %u"), i_outp_icmp | I_TITLE},	/*? */
-    {"OutSrcQuenchs", N_("source quench: %u"), i_outp_icmp | I_TITLE},
-    {"OutRedirects", N_("redirect: %u"), i_outp_icmp | I_TITLE},
-    {"OutEchos", N_("echo request: %u"), i_outp_icmp | I_TITLE},
-    {"OutEchoReps", N_("echo replies: %u"), i_outp_icmp | I_TITLE},
-    {"OutTimestamps", N_("timestamp requests: %u"), i_outp_icmp | I_TITLE},
-    {"OutTimestampReps", N_("timestamp replies: %u"), i_outp_icmp | I_TITLE},
-    {"OutAddrMasks", N_("address mask requests: %u"), i_outp_icmp | I_TITLE},
-    {"OutAddrMaskReps", N_("address mask replies: %u"), i_outp_icmp | I_TITLE},
+    {"InMsgs", N_("%llu ICMP messages received"), number},
+    {"InErrors", N_("%llu input ICMP message failed."), number},
+    {"InDestUnreachs", N_("destination unreachable: %llu"), i_inp_icmp | I_TITLE},
+    {"InTimeExcds", N_("timeout in transit: %llu"), i_inp_icmp | I_TITLE},
+    {"InParmProbs", N_("wrong parameters: %llu"), i_inp_icmp | I_TITLE},	/*? */
+    {"InSrcQuenchs", N_("source quenches: %llu"), i_inp_icmp | I_TITLE},
+    {"InRedirects", N_("redirects: %llu"), i_inp_icmp | I_TITLE},
+    {"InEchos", N_("echo requests: %llu"), i_inp_icmp | I_TITLE},
+    {"InEchoReps", N_("echo replies: %llu"), i_inp_icmp | I_TITLE},
+    {"InTimestamps", N_("timestamp request: %llu"), i_inp_icmp | I_TITLE},
+    {"InTimestampReps", N_("timestamp reply: %llu"), i_inp_icmp | I_TITLE},
+    {"InAddrMasks", N_("address mask request: %llu"), i_inp_icmp | I_TITLE},	/*? */
+    {"InAddrMaskReps", N_("address mask replies: %llu"), i_inp_icmp | I_TITLE},	/*? */
+    {"OutMsgs", N_("%llu ICMP messages sent"), number},
+    {"OutErrors", N_("%llu ICMP messages failed"), number},
+    {"OutDestUnreachs", N_("destination unreachable: %llu"), i_outp_icmp | I_TITLE},
+    {"OutTimeExcds", N_("time exceeded: %llu"), i_outp_icmp | I_TITLE},
+    {"OutParmProbs", N_("wrong parameters: %llu"), i_outp_icmp | I_TITLE},	/*? */
+    {"OutSrcQuenchs", N_("source quench: %llu"), i_outp_icmp | I_TITLE},
+    {"OutRedirects", N_("redirect: %llu"), i_outp_icmp | I_TITLE},
+    {"OutEchos", N_("echo request: %llu"), i_outp_icmp | I_TITLE},
+    {"OutEchoReps", N_("echo replies: %llu"), i_outp_icmp | I_TITLE},
+    {"OutTimestamps", N_("timestamp requests: %llu"), i_outp_icmp | I_TITLE},
+    {"OutTimestampReps", N_("timestamp replies: %llu"), i_outp_icmp | I_TITLE},
+    {"OutAddrMasks", N_("address mask requests: %llu"), i_outp_icmp | I_TITLE},
+    {"OutAddrMaskReps", N_("address mask replies: %llu"), i_outp_icmp | I_TITLE},
+};
+
+struct entry Icmp6tab[] =
+{
+    {"Icmp6InMsgs", N_("%llu ICMP messages received"), number},
+    {"Icmp6InErrors", N_("%llu input ICMP message failed."), number},
+    {"Icmp6InDestUnreachs", N_("destination unreachable: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InPktTooBigs", N_("packets too big: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InTimeExcds", N_("received ICMPv6 time exceeded: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InParmProblems", N_("parameter problem: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InEchos", N_("echo requests: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InEchoReplies", N_("echo replies: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InGroupMembQueries", N_("group member queries: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InGroupMembResponses", N_("group member responses: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InGroupMembReductions", N_("group member reductions: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InRouterSolicits", N_("router solicits: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InRouterAdvertisements", N_("router advertisement: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InNeighborSolicits", N_("neighbour solicits: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InNeighborAdvertisements", N_("neighbour advertisement: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6InRedirects", N_("redirects: %llu"), i_inp_icmp | I_TITLE},
+    {"Icmp6OutMsgs", N_("%llu ICMP messages sent"), number},
+    {"Icmp6OutDestUnreachs", N_("destination unreachable: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutPktTooBigs", N_("packets too big: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutTimeExcds", N_("sent ICMPv6 time exceeded: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutParmProblems", N_("parameter problem: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutEchos", N_("echo requests: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutEchoReplies", N_("echo replies: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutGroupMembQueries", N_("group member queries: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutGroupMembResponses", N_("group member responses: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutGroupMembReductions", N_("group member reductions: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutRouterSolicits", N_("router solicits: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutRouterAdvertisements ", N_("router advertisement: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutNeighborSolicits", N_("neighbor solicits: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutNeighborAdvertisements", N_("neighbor advertisements: %llu"), i_outp_icmp | I_TITLE},
+    {"Icmp6OutRedirects", N_("redirects: %llu"), i_outp_icmp | I_TITLE},
 };
 
 struct entry Tcptab[] =
@@ -119,79 +181,129 @@ struct entry Tcptab[] =
     {"RtoMin", "", number},
     {"RtoMax", "", number},
     {"MaxConn", "", number},
-    {"ActiveOpens", N_("%u active connections openings"), number},
-    {"PassiveOpens", N_("%u passive connection openings"), number},
-    {"AttemptFails", N_("%u failed connection attempts"), number},
-    {"EstabResets", N_("%u connection resets received"), number},
-    {"CurrEstab", N_("%u connections established"), number},
-    {"InSegs", N_("%u segments received"), number},
-    {"OutSegs", N_("%u segments send out"), number},
-    {"RetransSegs", N_("%u segments retransmited"), number},
-    {"InErrs", N_("%u bad segments received."), number},
-    {"OutRsts", N_("%u resets sent"), number},
+    {"ActiveOpens", N_("%llu active connections openings"), number},
+    {"PassiveOpens", N_("%llu passive connection openings"), number},
+    {"AttemptFails", N_("%llu failed connection attempts"), number},
+    {"EstabResets", N_("%llu connection resets received"), number},
+    {"CurrEstab", N_("%llu connections established"), number},
+    {"InSegs", N_("%llu segments received"), number},
+    {"OutSegs", N_("%llu segments send out"), number},
+    {"RetransSegs", N_("%llu segments retransmited"), number},
+    {"InErrs", N_("%llu bad segments received."), number},
+    {"OutRsts", N_("%llu resets sent"), number},
 };
 
 struct entry Udptab[] =
 {
-    {"InDatagrams", N_("%u packets received"), number},
-    {"NoPorts", N_("%u packets to unknown port received."), number},
-    {"InErrors", N_("%u packet receive errors"), number},
-    {"OutDatagrams", N_("%u packets sent"), number},
+    {"InDatagrams", N_("%llu packets received"), number},
+    {"NoPorts", N_("%llu packets to unknown port received."), number},
+    {"InErrors", N_("%llu packet receive errors"), number},
+    {"OutDatagrams", N_("%llu packets sent"), number},
+    {"RcvbufErrors", N_("%llu receive buffer errors"), number},
+    {"SndbufErrors", N_("%llu send buffer errors"), number},
+ };
+
+struct entry Udp6tab[] =
+{
+    {"Udp6InDatagrams", N_("%llu packets received"), number},
+    {"Udp6NoPorts", N_("%llu packets to unknown port received."), number},
+    {"Udp6InErrors", N_("%llu packet receive errors"), number},
+    {"Udp6OutDatagrams", N_("%llu packets sent"), number},
 };
 
 struct entry Tcpexttab[] =
 {
-    {"SyncookiesSent", N_("%u SYN cookies sent"), opt_number},
-    {"SyncookiesRecv", N_("%u SYN cookies received"), opt_number},
-    {"SyncookiesFailed", N_("%u invalid SYN cookies received"), opt_number},
-
-    { "EmbryonicRsts", N_("%u resets received for embryonic SYN_RECV sockets"),
-      opt_number },  
-    { "PruneCalled", N_("%u packets pruned from receive queue because of socket"
-			" buffer overrun"), opt_number },  
+    {"SyncookiesSent", N_("%llu SYN cookies sent"), opt_number},
+    {"SyncookiesRecv", N_("%llu SYN cookies received"), opt_number},
+    {"SyncookiesFailed", N_("%llu invalid SYN cookies received"), opt_number},
+
+    { "EmbryonicRsts", N_("%llu resets received for embryonic SYN_RECV sockets"),
+      opt_number },
+    { "PruneCalled", N_("%llu packets pruned from receive queue because of socket"
+			" buffer overrun"), opt_number },
     /* obsolete: 2.2.0 doesn't do that anymore */
-    { "RcvPruned", N_("%u packets pruned from receive queue"), opt_number },
-    { "OfoPruned", N_("%u packets dropped from out-of-order queue because of"
-		      " socket buffer overrun"), opt_number }, 
-    { "OutOfWindowIcmps", N_("%u ICMP packets dropped because they were "
-			     "out-of-window"), opt_number }, 
-    { "LockDroppedIcmps", N_("%u ICMP packets dropped because"
+    { "RcvPruned", N_("%llu packets pruned from receive queue"), opt_number },
+    { "OfoPruned", N_("%llu packets dropped from out-of-order queue because of"
+		      " socket buffer overrun"), opt_number },
+    { "OutOfWindowIcmps", N_("%llu ICMP packets dropped because they were "
+			     "out-of-window"), opt_number },
+    { "LockDroppedIcmps", N_("%llu ICMP packets dropped because"
 			     " socket was locked"), opt_number },
-    { "TW", N_("%u TCP sockets finished time wait in fast timer"), opt_number },
-    { "TWRecycled", N_("%u time wait sockets recycled by time stamp"), opt_number }, 
-    { "TWKilled", N_("%u TCP sockets finished time wait in slow timer"), opt_number },
-    { "PAWSPassive", N_("%u passive connections rejected because of"
+    { "TW", N_("%llu TCP sockets finished time wait in fast timer"), opt_number },
+    { "TWRecycled", N_("%llu time wait sockets recycled by time stamp"), opt_number },
+    { "TWKilled", N_("%llu TCP sockets finished time wait in slow timer"), opt_number },
+    { "PAWSPassive", N_("%llu passive connections rejected because of"
 			" time stamp"), opt_number },
-    { "PAWSActive", N_("%u active connections rejected because of "
+    { "PAWSActive", N_("%llu active connections rejected because of "
 		       "time stamp"), opt_number },
-    { "PAWSEstab", N_("%u packets rejects in established connections because of"
+    { "PAWSEstab", N_("%llu packets rejects in established connections because of"
 		      " timestamp"), opt_number },
-    { "DelayedACKs", N_("%u delayed acks sent"), opt_number },
-    { "DelayedACKLocked", N_("%u delayed acks further delayed because of"
+    { "DelayedACKs", N_("%llu delayed acks sent"), opt_number },
+    { "DelayedACKLocked", N_("%llu delayed acks further delayed because of"
 			     " locked socket"), opt_number },
-    { "DelayedACKLost", N_("Quick ack mode was activated %u times"), opt_number },
-    { "ListenOverflows", N_("%u times the listen queue of a socket overflowed"),
+    { "DelayedACKLost", N_("Quick ack mode was activated %llu times"), opt_number },
+    { "ListenOverflows", N_("%llu times the listen queue of a socket overflowed"),
       opt_number },
-    { "ListenDrops", N_("%u SYNs to LISTEN sockets ignored"), opt_number },
-    { "TCPPrequeued", N_("%u packets directly queued to recvmsg prequeue."), 
+    { "ListenDrops", N_("%llu SYNs to LISTEN sockets dropped"), opt_number },
+    { "TCPPrequeued", N_("%llu packets directly queued to recvmsg prequeue."),
       opt_number },
-    { "TCPDirectCopyFromBacklog", N_("%u packets directly received"
-				     " from backlog"), opt_number },
-    { "TCPDirectCopyFromPrequeue", N_("%u packets directly received"
-				      " from prequeue"), opt_number },
-    { "TCPPrequeueDropped", N_("%u packets dropped from prequeue"), opt_number },
-    { "TCPHPHits", N_("%u packets header predicted"), number },
-    { "TCPHPHitsToUser", N_("%u packets header predicted and "
+    { "TCPDirectCopyFromBacklog", N_("%llu bytes directly in process context from backlog"), opt_number },
+    { "TCPDirectCopyFromPrequeue", N_("%llu bytes directly received in process context from prequeue"),
+				      opt_number },
+    { "TCPPrequeueDropped", N_("%llu packets dropped from prequeue"), opt_number },
+    { "TCPHPHits", N_("%llu packet headers predicted"), number },
+    { "TCPHPHitsToUser", N_("%llu packets header predicted and "
 			    "directly queued to user"), opt_number },
-    { "SockMallocOOM", N_("Ran %u times out of system memory during " 
-			  "packet sending"), opt_number }, 
+    { "SockMallocOOM", N_("Ran %llu times out of system memory during "
+			  "packet sending"), opt_number },
+    { "TCPPureAcks", N_("%llu acknowledgments not containing data payload received"), opt_number },
+    { "TCPHPAcks", N_("%llu predicted acknowledgments"), opt_number },
+    { "TCPRenoRecovery", N_("%llu times recovered from packet loss due to fast retransmit"), opt_number },
+    { "TCPSackRecovery", N_("%llu times recovered from packet loss by selective acknowledgements"), opt_number },
+    { "TCPSACKReneging", N_("%llu bad SACK blocks received"), opt_number },
+    { "TCPFACKReorder", N_("Detected reordering %llu times using FACK"), opt_number },
+    { "TCPSACKReorder", N_("Detected reordering %llu times using SACK"), opt_number },
+    { "TCPTSReorder", N_("Detected reordering %llu times using time stamp"), opt_number },
+    { "TCPRenoReorder", N_("Detected reordering %llu times using reno fast retransmit"), opt_number },
+    { "TCPFullUndo", N_("%llu congestion windows fully recovered without slow start"), opt_number },
+    { "TCPPartialUndo", N_("%llu congestion windows partially recovered using Hoe heuristic"), opt_number },
+    { "TCPDSackUndo", N_("%llu congestion window recovered without slow start using DSACK"), opt_number },
+    { "TCPLossUndo", N_("%llu congestion windows recovered without slow start after partial ack"), opt_number },
+    { "TCPLostRetransmits", N_("%llu retransmits lost"), opt_number },
+    { "TCPRenoFailures",  N_("%llu timeouts after reno fast retransmit"), opt_number },
+    { "TCPSackFailures",  N_("%llu timeouts after SACK recovery"), opt_number },
+    { "TCPLossFailures",  N_("%llu timeouts in loss state"), opt_number },
+    { "TCPFastRetrans", N_("%llu fast retransmits"), opt_number },
+    { "TCPForwardRetrans", N_("%llu forward retransmits"), opt_number },
+    { "TCPSlowStartRetrans", N_("%llu retransmits in slow start"), opt_number },
+    { "TCPTimeouts", N_("%llu other TCP timeouts"), opt_number },
+    { "TCPRenoRecoveryFailed", N_("%llu reno fast retransmits failed"), opt_number },
+    { "TCPSackRecoveryFail", N_("%llu SACK retransmits failed"), opt_number },
+    { "TCPSchedulerFailed", N_("%llu times receiver scheduled too late for direct processing"), opt_number },
+    { "TCPRcvCollapsed", N_("%llu packets collapsed in receive queue due to low socket buffer"), opt_number },
+    { "TCPDSACKOldSent", N_("%llu DSACKs sent for old packets"), opt_number },
+    { "TCPDSACKOfoSent", N_("%llu DSACKs sent for out of order packets"), opt_number },
+    { "TCPDSACKRecv", N_("%llu DSACKs received"), opt_number },
+    { "TCPDSACKOfoRecv", N_("%llu DSACKs for out of order packets received"), opt_number },
+    { "TCPAbortOnSyn", N_("%llu connections reset due to unexpected SYN"), opt_number },
+    { "TCPAbortOnData", N_("%llu connections reset due to unexpected data"), opt_number },
+    { "TCPAbortOnClose", N_("%llu connections reset due to early user close"), opt_number },
+    { "TCPAbortOnMemory", N_("%llu connections aborted due to memory pressure"), opt_number },
+    { "TCPAbortOnTimeout", N_("%llu connections aborted due to timeout"), opt_number },
+    { "TCPAbortOnLinger", N_("%llu connections aborted after user close in linger timeout"), opt_number },
+    { "TCPAbortFailed", N_("%llu times unable to send RST due to no memory"), opt_number },
+    { "TCPMemoryPressures", N_("TCP ran low on memory %llu times"), opt_number },
+    { "TCPLoss", N_("%llu TCP data loss events"), opt_number },
+    { "TCPDSACKUndo", N_("%llu congestion windows recovered without slow start by DSACK"),
+	opt_number },
+    { "TCPRenoRecoveryFail", N_("%llu classic Reno fast retransmits failed"), opt_number },
 };
 
 struct tabtab {
     char *title;
     struct entry *tab;
     size_t size;
-    int *flag; 
+    int *flag;
 };
 
 struct tabtab snmptabs[] =
@@ -204,6 +316,15 @@ struct tabtab snmptabs[] =
     {NULL}
 };
 
+struct tabtab snmp6tabs[] =
+{
+    {"Ip6", Ip6tab, sizeof(Ip6tab), &f_raw},
+    {"Icmp6", Icmp6tab, sizeof(Icmp6tab), &f_raw},
+    {"Udp6", Udp6tab, sizeof(Udp6tab), &f_udp},
+    {"Tcp6", Tcptab, sizeof(Tcptab), &f_tcp},
+    {NULL}
+};
+
 /* XXX IGMP */
 
 int cmpentries(const void *a, const void *b)
@@ -211,18 +332,19 @@ int cmpentries(const void *a, const void *b)
     return strcmp(((struct entry *) a)->title, ((struct entry *) b)->title);
 }
 
-void printval(struct tabtab *tab, char *title, int val)
+void printval(struct tabtab *tab, char *title, unsigned long long val)
 {
     struct entry *ent = NULL, key;
     int type;
     char buf[512];
 
     key.title = title;
-	if (tab->tab) 
+	if (tab->tab)
 	    ent = bsearch(&key, tab->tab, tab->size / sizeof(struct entry),
 			  sizeof(struct entry), cmpentries);
     if (!ent) {			/* try our best */
-	printf("%*s%s: %d\n", states[state].indent, "", title, val);
+	if (val)
+		printf("%*s%s: %llu\n", states[state].indent, "", title, val);
 	return;
     }
     type = ent->type;
@@ -242,7 +364,7 @@ void printval(struct tabtab *tab, char *title, int val)
     buf[0] = '\0';
     switch (type) {
     case opt_number:
-	if (val == 0) 
+	if (val == 0)
 	    break;
 	/*FALL THOUGH*/
     case number:
@@ -272,7 +394,7 @@ struct tabtab *newtable(struct tabtab *tabs, char *title)
 {
     struct tabtab *t;
 	static struct tabtab dummytab;
-	
+
     for (t = tabs; t->title; t++) {
 		if (!strcmp(title, t->title)) {
 	    	if (*(t->flag))
@@ -281,22 +403,25 @@ struct tabtab *newtable(struct tabtab *tabs, char *title)
 	   		return t;
 		}
 	}
-	if (!f_unknown) 
-		return NULL; 
+	if (!f_unknown)
+		return NULL;
 	printf("%s:\n", _(title));
 	dummytab.title = title;
-	dummytab.flag = &f_unknown; 
+	dummytab.flag = &f_unknown;
 	return &dummytab;
 }
 
-void process_fd(FILE *f)
+int process_fd(FILE *f, int all, char *filter)
 {
-    char buf1[1024], buf2[1024];
+    char buf1[2048], buf2[2048];
     char *sp, *np, *p;
     while (fgets(buf1, sizeof buf1, f)) {
 	int endflag;
 	struct tabtab *tab;
 
+        if (buf1[0] == '\n') // skip empty first line in 2.6 kernels
+            continue;
+
 	if (!fgets(buf2, sizeof buf2, f))
 	    break;
 	sp = strchr(buf1, ':');
@@ -305,6 +430,10 @@ void process_fd(FILE *f)
 	    goto formaterr;
 	*sp = '\0';
 
+        if (!all)
+           if (strncmp(buf1, filter, strlen(filter)))
+               continue;
+
 	tab = newtable(snmptabs, buf1);
 	if (tab == NULL) {
 		printf("unknown %s\n", buf1);
@@ -315,8 +444,8 @@ void process_fd(FILE *f)
 
 	endflag = 0;
 	while (!endflag) {
-	    sp += strspn(sp, " \t\n"); 
-	    np += strspn(np, " \t\n"); 
+	    sp += strspn(sp, " \t\n");
+	    np += strspn(np, " \t\n");
 	    /*if (*np == '\0') goto formaterr; */
 
 	    p = sp+strcspn(sp, " \t\n");
@@ -324,51 +453,116 @@ void process_fd(FILE *f)
 		endflag = 1;
 	    *p = '\0';
 
-	    if (*sp != '\0' && *(tab->flag)) 	
-		printval(tab, sp, strtoul(np, &np, 10));
+	    if (*sp != '\0' && *(tab->flag))
+		printval(tab, sp, strtoull(np, &np, 10));
 
 	    sp = p + 1;
 	}
     }
-  return;
-  
+  return 0;
+
 formaterr:
-  perror(_("error parsing /proc/net/snmp"));
-  return;
+  return -1;
 }
 
+void cpytitle(char *original, char *new)
+{
+     char *ptr = original;
+     while(*ptr != '6' && *ptr != '\0') {
+           *new = *ptr;
+            new++;
+            ptr++;
+     }
+    *new = *ptr;
+    new++;
+    *new = '\0';
+}
+
+void process6_fd(FILE *f)
+{
+   char buf1[1024],buf2[50],buf3[1024];
+   unsigned long long val;
+   struct tabtab *tab = NULL;
+   int cpflg = 0;
+
+   while (fgets(buf1, sizeof buf1, f)) {
+          sscanf(buf1, "%s %llu", buf2, &val);
+          if(!cpflg) {
+             cpytitle(buf2, buf3);
+             tab = newtable(snmp6tabs, buf3);
+             cpflg = 1;
+          }
+          if(!strstr(buf2, buf3)) {
+             cpytitle(buf2, buf3);
+             tab = newtable(snmp6tabs, buf3);
+          }
+          if (*(tab->flag))
+             printval(tab, buf2, val);
+   }
+
+}
 
 void parsesnmp(int flag_raw, int flag_tcp, int flag_udp)
 {
     FILE *f;
 
     f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp;
-    
-    f = fopen("/proc/net/snmp", "r");
+
+    f = proc_fopen("/proc/net/snmp");
     if (!f) {
 	perror(_("cannot open /proc/net/snmp"));
 	return;
     }
-    process_fd(f);
+
+    if (process_fd(f, 1, NULL) < 0)
+      fprintf(stderr, _("Problem while parsing /proc/net/snmp\n"));
 
     if (ferror(f))
 	perror("/proc/net/snmp");
 
     fclose(f);
 
-    f = fopen("/proc/net/netstat", "r");
+    f = proc_fopen("/proc/net/netstat");
 
     if (f) {
-    	process_fd(f);
+    	if (process_fd(f, 1, NULL) <0)
+          fprintf(stderr, _("Problem while parsing /proc/net/netstat\n"));
 
         if (ferror(f))
 	    perror("/proc/net/netstat");
-    
+
         fclose(f);
     }
     return;
 }
-    
+
+void parsesnmp6(int flag_raw, int flag_tcp, int flag_udp)
+{
+    FILE *f;
+
+    f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp;
+
+    f = fopen("/proc/net/snmp6", "r");
+    if (!f) {
+        perror(_("cannot open /proc/net/snmp6"));
+        return;
+    }
+    process6_fd(f);
+    if (ferror(f))
+        perror("/proc/net/snmp6");
+
+    fclose(f);
+    f = fopen("/proc/net/snmp", "r");
+    if (!f) {
+        perror(_("cannot open /proc/net/snmp"));
+        return;
+    }
+    process_fd(f, 0, "Tcp");
+    if (ferror(f))
+        perror("/proc/net/snmp");
+
+    fclose(f);
+}
 
 void inittab(void)
 {
@@ -379,3 +573,13 @@ void inittab(void)
 	qsort(t->tab, t->size / sizeof(struct entry),
 	      sizeof(struct entry), cmpentries);
 }
+
+void inittab6(void)
+{
+    struct tabtab *t;
+
+    for (t = snmp6tabs; t->title; t++)
+        qsort(t->tab, t->size / sizeof(struct entry),
+              sizeof(struct entry), cmpentries);
+}
+
