diff -u -urN xosview-1.8.0/linux/MeterMaker.cc xosview-1.8.0.sep.if/linux/MeterMaker.cc
--- xosview-1.8.0/linux/MeterMaker.cc	Thu Aug 21 19:03:28 2003
+++ xosview-1.8.0.sep.if/linux/MeterMaker.cc	Thu Aug 21 19:15:35 2003
@@ -20,6 +20,7 @@
 #endif
 #include "loadmeter.h"
 #include "btrymeter.h"
+#include <fstream.h>
 #include "diskmeter.h"
 #include "raidmeter.h"
 #include "lmstemp.h"
@@ -52,8 +53,16 @@
     push(new PageMeter(_xos, atof(_xos->getResource("pageBandwidth"))));
 
   // check for the net meter
-  if (_xos->isResourceTrue("net"))
-    push(new NetMeter(_xos, atof(_xos->getResource("netBandwidth"))));
+static const char _netfilename[] = "/proc/net/dev";
+ifstream stat( _netfilename );
+if ( stat ) {
+	if (_xos->isResourceTrue("net")){
+	int ethCount = NetMeter::countdevices();
+	int start = (ethCount == -1) ? -1 : 0;
+	if (ethCount != -1) {
+	for (int i = start ; i <= ethCount ; i++)
+    push(new NetMeter(_xos, atof(_xos->getResource("netBandwidth")), i, NetMeter::ethStr(i)));
+} } }
 
   if (_xos->isResourceTrue("disk"))
       push(new DiskMeter(_xos, atof(_xos->getResource("diskBandwidth"))));
diff -u -urN xosview-1.8.0/linux/memmeter.cc xosview-1.8.0.sep.if/linux/memmeter.cc
--- xosview-1.8.0/linux/memmeter.cc	Thu Aug 21 19:03:57 2003
+++ xosview-1.8.0.sep.if/linux/memmeter.cc	Thu Aug 21 21:44:36 2003
@@ -162,7 +162,8 @@
     unsigned long val;
     line >> ignore >> val;
     /*  All stats are in KB.  */
-    infos[inum].setVal(val*1024);	/*  Multiply by 1024 bytes per K  */
+//    infos[inum].setVal(val*1024);	/*  Multiply by 1024 bytes per K  */
+    infos[inum].setVal(val);
 
     inum++;
     if (inum >= ninfos)
diff -u -urN xosview-1.8.0/linux/netmeter.cc xosview-1.8.0.sep.if/linux/netmeter.cc
--- xosview-1.8.0/linux/netmeter.cc	Thu Aug 21 19:03:28 2003
+++ xosview-1.8.0.sep.if/linux/netmeter.cc	Thu Aug 21 21:02:11 2003
@@ -27,7 +27,6 @@
 
 
 #include "netmeter.h"
-#include "xosview.h"
 
 #include <unistd.h>
 #include <iomanip.h>
@@ -45,9 +44,13 @@
 #include <errno.h>
 #include <iostream.h>
 #include <iomanip.h>
+#include <strstream>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
 
-NetMeter::NetMeter( XOSView *parent, float max )
-  : FieldMeterGraph( parent, 3, "NET", "IN/OUT/IDLE" ){
+NetMeter::NetMeter( XOSView *parent, float max, int ID, const char *ethID )
+  : FieldMeterGraph( parent, 3, ethID, "IN/OUT/IDLE" ), _number(ID) {
   _timer.start();
   maxpackets_ = max;
   _lastBytesIn = _lastBytesOut = 0;
@@ -164,34 +167,50 @@
 
 	ifs.ignore(1024, '\n');
         }
-    else
-        {
-	  ifs.ignore(1024, '\n');
-	  ifs.ignore(1024, '\n');
+    else {
+
+  static char ethbuf[32];
+  std::ostrstream eth(ethbuf, 32);
+  eth << "eth";
+    eth << _number;
+  eth << ends;
+
+char newbuf[1024];
+int counter = 0;  
+int reached = 0;
+while (!ifs.eof()) {
+ifs >> newbuf;
+if (strncmp(newbuf, ethbuf, strlen(ethbuf))) {
+if ( reached != 1) {
+counter++; }}else{
+counter++;
+reached = 1; }
+ifs.getline(newbuf, 1024);
+}
+
+ifstream ifs(_netfilename);
+
+for (int i = 2 ; i < counter; i = i+1 ) {
+ifs.getline(buf, 1024); }                
+
+              ifs.getline(buf, 1024);
 
-	  while (ifs)
-	      {
 	      ifs.ignore(1024, ':');
 	      ifs >> in >> ig >> ig >> ig >> ig >> ig >> ig >> ig >> out;
-
 	      if (ifs.eof())
 		  {
 		  ifs.ignore(1024, '\n');
-		  break;
+//		  break;
 		  }
 
 	      if (ifs.fail())
 		  {
 		  ifs.clear();
-		  ifs.ignore(1024, '\n');
-		  continue;
+//		  continue;
 		  }
+			totin = in;
+			totout = out;
 
-	      totin += in;
-	      totout += out;
-
-	      ifs.ignore(1024, '\n');
-	      }
 	}
 
     float t = 1000000.0 / _timer.report_usecs();
@@ -315,3 +334,36 @@
         fields_[2] = total_ - fields_[0] - fields_[1];
         }
     }
+int NetMeter::countdevices(void){
+  ifstream ethinfo( "/proc/net/dev" );
+
+  if ( !ethinfo ){
+    cerr <<"Can not open file : " <<"/proc/net/dev" <<endl;
+    exit( 1 );                                        
+  }
+   
+char buf[1024];
+
+  int ethCount = -1;
+  while (!ethinfo.eof()){
+    ethinfo.getline(buf, 1024);
+        ethinfo >> buf;
+//if (!ethinfo.eof()){ 
+if (!strncmp(buf, "eth", 3))
+          ethCount++;
+  }
+//}
+
+  return ethCount;
+}
+
+const char *NetMeter::ethStr(int num){
+  static char buffer[32];
+  std::ostrstream str(buffer, 32);
+  
+  str << "eth";
+    str << (num);
+  str << ends;
+   
+  return buffer;
+}
diff -u -urN xosview-1.8.0/linux/netmeter.h xosview-1.8.0.sep.if/linux/netmeter.h
--- xosview-1.8.0/linux/netmeter.h	Sun Nov  7 21:22:11 1999
+++ xosview-1.8.0.sep.if/linux/netmeter.h	Thu Aug 21 19:15:35 2003
@@ -16,13 +16,17 @@
 
 class NetMeter : public FieldMeterGraph {
 public:
-  NetMeter(XOSView *parent, float max);
+  NetMeter(XOSView *parent, float max, int ID = 0, const char *ethID = "eth");
   ~NetMeter( void );
 
   const char *name( void ) const { return "NetMeter"; }  
   void checkevent( void );
 
   void checkResources( void );
+  static int countdevices(void);
+  static const char *ethStr(int num);
+  char ethID[256];
+
 protected:
   float maxpackets_;
 
@@ -39,6 +43,10 @@
 
   void checkeventOld(void);
   void checkeventNew(void);
+  int _number;
+  int eth;
+  int counter;
+  int reached;
 };
 
 #endif
