Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/3600

Change subject: misc: Fix building the m5tap utility.
......................................................................

misc: Fix building the m5tap utility.

Use printf instead of cprintf to avoid having to have .o files from gem5.
Switch to libdumbnet which seems to be what libdnet is called on Ubuntu.
Stop disabling optimization. Placate the style checker by rearranging the
header include order. Include some missing standard headers. Switch from
the deprecated -I- gcc option to using -iquote. Make the "program"
variable a const char *. When checking the return value of getopt, don't
check against the char c which may mask the -1 return value. Instead,
store the return value in an int, and then later cast it to a char when
it's actually consumed.

Change-Id: Ibec51927d0cdbd98db8e53081be2c4931e20333c
---
M util/tap/Makefile
M util/tap/tap.cc
2 files changed, 32 insertions(+), 35 deletions(-)



diff --git a/util/tap/Makefile b/util/tap/Makefile
index d961ea8..1b8560e 100644
--- a/util/tap/Makefile
+++ b/util/tap/Makefile
@@ -29,20 +29,13 @@
 CC= gcc
 CXX= g++

-CURDIR?= $(shell /bin/pwd)
-SRCDIR?= .
-M5_SRCDIR?= $(SRCDIR)/../..
-
-vpath % $(M5_SRCDIR)/base
-vpath % $(M5_SRCDIR)/sim
-
-INCLDIRS= -I. -I$(M5_SRCDIR) -I- -I/usr/local/include
-CCFLAGS= -g -O0 -MMD $(INCLDIRS)
+INCLDIRS= -iquote . -I /usr/local/include
+CCFLAGS= -g -MMD $(INCLDIRS)

 default: m5tap

-m5tap: tap.o cprintf.o
-       $(CXX) $(LFLAGS) -o $@ $^ -lpcap -L/usr/local/lib -ldnet
+m5tap: tap.o
+       $(CXX) $(LFLAGS) -o $@ $^ -lpcap -L/usr/local/lib -ldumbnet

 install: m5tap
        $(SUDO) install -o root -m 555 m5tap /usr/local/bin
diff --git a/util/tap/tap.cc b/util/tap/tap.cc
index 2cc7de4..06a3c52 100644
--- a/util/tap/tap.cc
+++ b/util/tap/tap.cc
@@ -30,36 +30,38 @@

 extern "C" {
 #include <pcap.h>
+
 }

 #include <arpa/inet.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <dnet.h>
+#include <dumbnet.h>
 #include <fcntl.h>
 #include <libgen.h>
 #include <netdb.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
 #include <poll.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <sys/types.h>
 #include <unistd.h>

 #include <cerrno>
 #include <csignal>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <list>
 #include <string>

-#include "base/cprintf.hh"
-
 #define panic(arg...) \
-  do { cprintf("Panic: " arg); exit(1); } while (0)
+  do { printf("Panic: " arg); exit(1); } while (0)

-char *program = "ethertap";
+const char *program = "ethertap";
 void
 usage()
 {
-    cprintf(
+    printf(
         "usage: \n"
"\t%s [-b bufsize] [-d] [-f filter] [-p port] [-v] <device> <host>\n" "\t%s [-b bufsize] [-d] [-f filter] [-l] [-p port] [-v] <device>\n",
@@ -70,7 +72,7 @@
 int verbose = 0;
 #define DPRINTF(args...) do { \
     if (verbose >= 1) \
-        cprintf(args); \
+        printf(args); \
 } while (0)

 #define DDUMP(args...) do { \
@@ -84,26 +86,26 @@
         int c, i, j;

         for (i = 0; i < len; i += 16) {
-                cprintf("%08x  ", i);
+                printf("%08x  ", i);
                 c = len - i;
                 if (c > 16) c = 16;

                 for (j = 0; j < c; j++) {
-                        cprintf("%02x ", data[i + j] & 0xff);
+                        printf("%02x ", data[i + j] & 0xff);
                         if ((j & 0xf) == 7 && j > 0)
-                                cprintf(" ");
+                                printf(" ");
                 }

                 for (; j < 16; j++)
-                        cprintf("   ");
-                cprintf("  ");
+                        printf("   ");
+                printf("  ");

                 for (j = 0; j < c; j++) {
                         int ch = data[i + j] & 0x7f;
-                        cprintf("%c", (char)(isprint(ch) ? ch : ' '));
+                        printf("%c", (char)(isprint(ch) ? ch : ' '));
                 }

-                cprintf("\n");
+                printf("\n");

                 if (c < 16)
                         break;
@@ -178,7 +180,7 @@
         struct hostent *hp;
         hp = ::gethostbyname(host.c_str());
         if (!hp)
-            panic("Host %s not found\n", host);
+            panic("Host %s not found\n", host.c_str());

         sockaddr.sin_family = hp->h_addrtype;
         memcpy(&sockaddr.sin_addr, hp->h_addr, hp->h_length);
@@ -186,9 +188,9 @@

     sockaddr.sin_port = htons(port);
     if (::connect(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) != 0)
-        panic("could not connect to %s on port %d\n", host, port);
+        panic("could not connect to %s on port %d\n", host.c_str(), port);

-    DPRINTF("connected to %s on port %d\n", host, port);
+    DPRINTF("connected to %s on port %d\n", host.c_str(), port);
 }

 class Ethernet
@@ -335,7 +337,9 @@

     program = basename(argv[0]);

-    while ((c = getopt(argc, argv, "b:df:lp:tv")) != -1) {
+    int ret;
+    while ((ret = getopt(argc, argv, "b:df:lp:tv")) != -1) {
+        char c = ret;
         switch (c) {
           case 'b':
             bufsize = atoi(optarg);
@@ -435,7 +439,7 @@

     DPRINTF("Begin poll loop\n");
     while (!quit) {
-        int ret = ::poll(pfds, npfds, INFTIM);
+        int ret = ::poll(pfds, npfds, -1);
         if (ret < 0)
             continue;


--
To view, visit https://gem5-review.googlesource.com/3600
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibec51927d0cdbd98db8e53081be2c4931e20333c
Gerrit-Change-Number: 3600
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to