summaryrefslogtreecommitdiff
path: root/sysutils/pftop
diff options
context:
space:
mode:
authorpeter <peter>2008-06-15 14:09:03 +0000
committerpeter <peter>2008-06-15 14:09:03 +0000
commit951608c5277a6ece5911858c9b315e5fa26eb38a (patch)
tree2446a64bde7edf72d98ecc314bb74a6aae94afad /sysutils/pftop
parent0d44596eeac81b6990d31f4826d967731ec7ff4f (diff)
downloadpkgsrc-951608c5277a6ece5911858c9b315e5fa26eb38a.tar.gz
Update pftop to version 0.7. Tested on NetBSD 3.1, 4.0 and yamt-pf42.
Changes in version 0.7: This version adds state filtering, which is funded by backcountry.com, many thanks. It is now possible to select which states are displayed using a tcpdump(8) like filtering language. The filter can be specified on the command line, using the '-f' switch. It is also possible to change the filter interactively using the 'f' command key. Some sample, not necessarily practical, filters are given below: - Do not show pfsync or carp traffic: not (pfsync or carp) not pfsync and not carp - DNS traffic not going to or coming from the DNS servers: port 53 and not host (10.0.0.10 or 10.0.0.11) - States with input bytes greater than 1M: inb > 1000000 - Traffic with very small average packet size: ((inb / inp) + (outb / outp))/2 < 100 inb / inp + outb / outp < 200 Changes in version 0.6: No functional changes. It now compiles and runs on OpenBSD 4.1-current after pf interface changes. This version also contains separated pf and display code. This should make adding new views easier. Changes in version 0.5: This version displays all active pf rules by traversing the ruleset tree. In addition HFSC queues are now displayed correctly thanks to Jared Spiegel. This version also incorporates other patches and comments I have received since the previous release. Many thanks to all who have contributed. - New command-line switch 'S' to start the display at a given state. - Display HFCS statistics in the queue page. - Fixed state and rule byte and packet counters - Fixed state sorting by packets and bytes - Fixed some minor display problems - The rule view now traverses all rulesets, and displays all active rules, together with anchor (ruleset) names. - Anchor and Label fields dynamically resize themselves
Diffstat (limited to 'sysutils/pftop')
-rw-r--r--sysutils/pftop/Makefile10
-rw-r--r--sysutils/pftop/distinfo20
-rw-r--r--sysutils/pftop/patches/patch-aa39
-rw-r--r--sysutils/pftop/patches/patch-ab449
-rw-r--r--sysutils/pftop/patches/patch-ac43
-rw-r--r--sysutils/pftop/patches/patch-ad261
-rw-r--r--sysutils/pftop/patches/patch-ae28
-rw-r--r--sysutils/pftop/patches/patch-af12
-rw-r--r--sysutils/pftop/patches/patch-ag120
-rw-r--r--sysutils/pftop/patches/patch-ah53
-rw-r--r--sysutils/pftop/patches/patch-ai33
11 files changed, 587 insertions, 481 deletions
diff --git a/sysutils/pftop/Makefile b/sysutils/pftop/Makefile
index 14c6f96efe2..27ed0617bac 100644
--- a/sysutils/pftop/Makefile
+++ b/sysutils/pftop/Makefile
@@ -1,10 +1,10 @@
-# $NetBSD: Makefile,v 1.9 2008/06/12 02:14:46 joerg Exp $
+# $NetBSD: Makefile,v 1.10 2008/06/15 14:09:03 peter Exp $
-DISTNAME= pftop-0.4
+DISTNAME= pftop-0.7
CATEGORIES= sysutils net
MASTER_SITES= http://www.eee.metu.edu.tr/~canacar/
-MAINTAINER= pkgsrc-users@NetBSD.org
+MAINTAINER= peter@NetBSD.org
HOMEPAGE= http://www.eee.metu.edu.tr/~canacar/pftop/
COMMENT= Utility for real-time display of statistics for PF
@@ -15,9 +15,13 @@ CFLAGS+= -I${PREFIX}/include
INSTALLATION_DIRS= ${PKGMANDIR}/man8 sbin
+post-patch:
+ @${ECHO} "#include <pcap.h>" > ${WRKSRC}/pcap-int.h
+
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/pftop ${DESTDIR}${PREFIX}/sbin
${INSTALL_MAN} ${WRKSRC}/pftop.8 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man8
+.include "../../net/libpcap/buildlink3.mk"
.include "../../security/pflkm/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/sysutils/pftop/distinfo b/sysutils/pftop/distinfo
index 3816823453c..f766e56c7f4 100644
--- a/sysutils/pftop/distinfo
+++ b/sysutils/pftop/distinfo
@@ -1,8 +1,14 @@
-$NetBSD: distinfo,v 1.5 2006/03/06 23:02:07 peter Exp $
+$NetBSD: distinfo,v 1.6 2008/06/15 14:09:03 peter Exp $
-SHA1 (pftop-0.4.tar.gz) = 717d8a9527a412cf21c1a6b7e6fa054bf0298ab2
-RMD160 (pftop-0.4.tar.gz) = fc08e6ec45fbfdca30e32bd0d90f04968e323dc4
-Size (pftop-0.4.tar.gz) = 23631 bytes
-SHA1 (patch-aa) = f8b273c9c81edf44b42d6379aa7ac92ceb1147f7
-SHA1 (patch-ab) = 00289cfe2f36b3c7839487ea5253403c073a0138
-SHA1 (patch-ac) = 75b7deb28a396c3259e95f9f22d85c604699a261
+SHA1 (pftop-0.7.tar.gz) = 651afa532cfc8cf59c3598704deb9bf3788ac9e9
+RMD160 (pftop-0.7.tar.gz) = 0e0c09e5feeb07deba8b540233dcb946ba0b4508
+Size (pftop-0.7.tar.gz) = 59765 bytes
+SHA1 (patch-aa) = ffae9a5ab95b793fa8b677a58a2b69644da37de2
+SHA1 (patch-ab) = 9e54f7d6f6e6c4c54f924b86080359efea9ba369
+SHA1 (patch-ac) = 4d5ffc354258fb39c0a4655457b0c78e4f5709cb
+SHA1 (patch-ad) = 658c26cef386c31fbed99a138be0a94bc9ca1278
+SHA1 (patch-ae) = 54619b846899a7c4f260191a772e41e1c07c178c
+SHA1 (patch-af) = 59b907b20fa215b3f0a1e690c9c71d2f7077e322
+SHA1 (patch-ag) = ea63b7e7a0ec078a0369b6a416a790538fa0a87d
+SHA1 (patch-ah) = b634d591b0fefdbf272970253eb2789a6d1cd6c2
+SHA1 (patch-ai) = 629c1668eab0d819e590fb62b7afa6c85709fd15
diff --git a/sysutils/pftop/patches/patch-aa b/sysutils/pftop/patches/patch-aa
index c33f4881f2c..b4499afbf43 100644
--- a/sysutils/pftop/patches/patch-aa
+++ b/sysutils/pftop/patches/patch-aa
@@ -1,15 +1,28 @@
-$NetBSD: patch-aa,v 1.1.1.1 2004/11/05 15:08:33 peter Exp $
+$NetBSD: patch-aa,v 1.2 2008/06/15 14:09:03 peter Exp $
---- config.h.orig 2003-08-05 03:19:58.000000000 +0200
-+++ config.h 2004-10-25 13:20:55.000000000 +0200
-@@ -24,8 +24,8 @@
- #if OS_LEVEL > 32
- #define HAVE_ADDR_MASK
- #define HAVE_ADDR_TYPE
--#define HAVE_ALTQ
--#define HAVE_RULE_ANCHOR
-+/*#define HAVE_ALTQ*/
-+/*#define HAVE_RULE_ANCHOR*/
- #define HAVE_RULE_TOS
- #endif
+--- Makefile.old 2007-11-07 07:34:18.000000000 +0100
++++ Makefile 2008-06-15 00:43:41.000000000 +0200
+@@ -6,17 +6,21 @@
+ PROG= pftop
+ SRCS= pftop.c cache.c engine.c
+-SRCS+= sf-gencode.c sf-grammer.y sf-scanner.l pcap-nametoaddr.c
++SRCS+= sf-gencode.c sf-grammer.c sf-scanner.l pcap-nametoaddr.c
+ SRCS+= bpf_optimize.c bpf_filter.c bpf_dump.c bpf_image.c
+ MAN= pftop.8
+
++CLEANFILES+= sf-grammer.c
++
+ CFLAGS+= -Wall -DOS_LEVEL=${OSLEVEL}
+ LDADD+= -lcurses
+
++NOGCCERROR=yes
++
+ MANDIR=${LOCALBASE}/man/cat
+ BINDIR=${LOCALBASE}/sbin
+
+-.y.c:
++sf-grammer.c: sf-grammer.y
+ ${YACC.y} -d -b ${.TARGET:R} -o ${.TARGET} ${.IMPSRC}
+
+ .include <bsd.prog.mk>
diff --git a/sysutils/pftop/patches/patch-ab b/sysutils/pftop/patches/patch-ab
index bbd435f582c..a2b5a7a58cc 100644
--- a/sysutils/pftop/patches/patch-ab
+++ b/sysutils/pftop/patches/patch-ab
@@ -1,449 +1,24 @@
-$NetBSD: patch-ab,v 1.4 2006/03/06 23:02:08 peter Exp $
+$NetBSD: patch-ab,v 1.5 2008/06/15 14:09:03 peter Exp $
---- pftop.c.orig 2003-08-05 03:20:39.000000000 +0200
-+++ pftop.c 2006-03-06 23:52:20.000000000 +0100
-@@ -31,6 +31,11 @@
- */
- #include "config.h"
-
-+#ifdef __NetBSD__
-+#include <sys/param.h>
-+#include <sys/syslimits.h>
-+#endif
-+
- #include <sys/types.h>
- #include <sys/ioctl.h>
- #include <sys/socket.h>
-@@ -39,7 +44,11 @@
+--- cache.c.old 2008-06-14 17:43:59.000000000 +0200
++++ cache.c 2008-06-15 01:15:37.000000000 +0200
+@@ -23,7 +23,11 @@
#include <netinet/in.h>
- #define TCPSTATES
+
#include <netinet/tcp_fsm.h>
+#ifdef __DragonFly__
+#include <net/pf/pfvar.h>
+#else
#include <net/pfvar.h>
-+#endif
++#endif /* !__DragonFly__ */
#include <arpa/inet.h>
- #ifdef HAVE_ALTQ
-@@ -54,7 +63,9 @@
- #include <err.h>
- #include <errno.h>
- #include <fcntl.h>
-+#include <limits.h>
- #include <netdb.h>
-+#include <poll.h>
- #include <signal.h>
#include <stdio.h>
- #include <stdlib.h>
-@@ -192,9 +203,6 @@
-
- volatile sig_atomic_t gotsig_close = 0;
- volatile sig_atomic_t gotsig_resize = 0;
--volatile sig_atomic_t gotsig_alarm = 0;
--int need_update = 0;
--int need_sort = 0;
-
- #define FLD_ALIGN_LEFT 0
- #define FLD_ALIGN_RIGHT 1
-@@ -506,7 +514,6 @@
-
- int
- tbprintf(char *format, ...)
-- GCC_PRINTFLIKE(1,2) /* defined in curses.h */
- {
- int len;
- va_list arg;
-@@ -543,6 +550,10 @@
- }
- }
-
-+#ifndef MIN
-+#define MIN(x,y) ((x) < (y) ? (x) : (y))
-+#endif
-+
- void
- print_str(int len, const char *str)
- {
-@@ -758,7 +769,6 @@
- }
-
- if ((curr_view != NULL) && (curr_view->mgr != v->mgr)) {
-- gotsig_alarm = 1;
- if (v->mgr != NULL && v->mgr->select_fn != NULL)
- v->mgr->select_fn();
- }
-@@ -766,7 +776,6 @@
- curr_view = v;
- curr_mgr = v->mgr;
- field_setup();
-- need_update = 1;
- }
-
- void
-@@ -849,11 +858,9 @@
- if (cachestates) {
- show_field(FLD_SI);
- show_field(FLD_SP);
-- gotsig_alarm = 1;
- } else {
- hide_field(FLD_SI);
- hide_field(FLD_SP);
-- need_update = 1;
- }
- field_setup();
- }
-@@ -1212,7 +1219,7 @@
- ps.ps_buf = (char *) state_buf;
-
- if (ioctl(dev, DIOCGETSTATES, &ps) < 0) {
-- errx(1, "DIOCGETSTATES");
-+ err(1, "DIOCGETSTATES");
- }
- num_states = ps.ps_len / sizeof(struct pf_state);
-
-@@ -1303,7 +1310,7 @@
- tbprintf(" PAUSED");
-
- if (rawmode)
-- printf("\n\n%s\n", tmp_buf);
-+ printf("\n%s", tmp_buf);
- else
- mvprintw(0, 0, "%s", tmp_buf);
-
-@@ -1319,7 +1326,10 @@
- len = columns - strlen(tmp_buf);
- if (len < 0)
- len = 0;
-- mvprintw(0, len, "%s", tmp_buf);
-+ if (rawmode)
-+ printf(" %s\n", tmp_buf);
-+ else
-+ mvprintw(0, len, "%s", tmp_buf);
- }
-
- tb_end();
-@@ -1645,7 +1655,7 @@
- dispstart = 0;
-
- if (ioctl(dev, DIOCGETSTATUS, &status)) {
-- warnx("DIOCGETSTATUS");
-+ warn("DIOCGETSTATUS");
- return (-1);
- }
-
-@@ -1681,7 +1691,7 @@
-
- memset(&pr, 0, sizeof(pr));
- if (ioctl(dev, DIOCGETRULES, &pr)) {
-- warnx("DIOCGETRULES");
-+ warn("DIOCGETRULES");
- return (-1);
- }
-
-@@ -1704,7 +1714,7 @@
- for (nr = 0; nr < num_rules; ++nr) {
- pr.nr = nr;
- if (ioctl(dev, DIOCGETRULE, &pr)) {
-- warnx("DIOCGETRULE");
-+ warn("DIOCGETRULE");
- return (-1);
- }
- rules[nr] = pr.rule;
-@@ -1802,7 +1812,11 @@
- PF_AZERO(PT_MASK(src), AF_INET6))
- tbprintf("any ");
- else {
-+#if OS_LEVEL > 35
-+ if (src->neg)
-+#else
- if (src->not)
-+#endif
- tbprintf("! ");
- #ifdef HAVE_ADDR_WRAP
- tb_print_addrw(&src->addr, PT_MASK(src), af);
-@@ -1823,7 +1837,11 @@
- PF_AZERO(PT_MASK(dst), AF_INET6))
- tbprintf("any ");
- else {
-+#if OS_LEVEL > 35
-+ if (dst->neg)
-+#else
- if (dst->not)
-+#endif
- tbprintf("! ");
- #ifdef HAVE_ADDR_WRAP
- tb_print_addrw(&dst->addr, PT_MASK(dst), af);
-@@ -1890,8 +1908,13 @@
- #ifdef HAVE_RULE_STATES
- print_fld_size(FLD_STATS, pr->states);
- #endif
-+#if OS_LEVEL > 37
-+ print_fld_size(FLD_PKTS, pr->packets[0] + pr->packets[1]);
-+ print_fld_size(FLD_BYTES, pr->bytes[0] + pr->bytes[1]);
-+#else
- print_fld_size(FLD_PKTS, pr->packets);
- print_fld_size(FLD_BYTES, pr->bytes);
-+#endif
- print_fld_uint(FLD_RULE, pr->nr);
- print_fld_str(FLD_DIR, pr->direction == PF_OUT ? "Out" : "In");
- if (pr->quick)
-@@ -2486,12 +2509,6 @@
- }
-
- void
--sig_alarm(int signal)
--{
-- gotsig_alarm = 1;
--}
--
--void
- usage()
- {
- extern char *__progname;
-@@ -2544,7 +2561,9 @@
- line++;
- mvprintw(line++, 6, "press any key to continue ...");
-
-+ timeout(-1);
- while (getch() == ERR);
-+ timeout(0);
- }
-
- void
-@@ -2577,8 +2596,9 @@
- keypad(stdscr, TRUE);
- intrflush(stdscr, FALSE);
-
-- halfdelay(10);
-+ cbreak();
- noecho();
-+ timeout(0);
- }
-
- if (maxstates == 0)
-@@ -2597,7 +2617,6 @@
- cmdbuf[0] = 0;
- }
- curr_cmd = cmd;
-- need_update = 1;
- return prev;
- }
-
-@@ -2618,10 +2637,8 @@
- {
- int del;
- del = atoi(cmdbuf);
-- if (del > 0) {
-+ if (del > 0)
- delay = del;
-- gotsig_alarm = 1;
-- }
- }
-
- void
-@@ -2646,7 +2663,6 @@
- if (cmd_len < sizeof(cmdbuf) - 1) {
- cmdbuf[cmd_len++] = ch;
- cmdbuf[cmd_len] = 0;
-- need_update = 1;
- } else
- beep();
- }
-@@ -2663,10 +2679,9 @@
- case KEY_BACKSPACE:
- case KEY_DC:
- case CTRL_H:
-- if (cmd_len > 0) {
-+ if (cmd_len > 0)
- cmdbuf[--cmd_len] = 0;
-- need_update = 1;
-- } else
-+ else
- beep();
- break;
- default:
-@@ -2687,9 +2702,6 @@
- }
-
- switch (ch) {
-- case ' ':
-- gotsig_alarm = 1;
-- break;
- case 'c':
- cachestates = !cachestates;
- update_cache();
-@@ -2698,25 +2710,21 @@
- /* FALLTHROUGH */
- case 'h':
- show_help();
-- need_update = 1;
- break;
- case 'n':
- command_set(&cm_count);
- break;
- case 'o':
- next_order();
-- need_sort = 1;
- break;
- case 'p':
- paused = !paused;
-- gotsig_alarm = 1;
- break;
- case 'q':
- gotsig_close = 1;
- break;
- case 'r':
- sortdir *= -1;
-- need_sort = 1;
- break;
- case 's':
- command_set(&cm_delay);
-@@ -2737,49 +2745,40 @@
- /* FALLTHROUGH */
- case CTRL_N:
- dispstart++;
-- need_update = 1;
- break;
- case KEY_UP:
- /* FALLTHROUGH */
- case CTRL_P:
- dispstart--;
-- need_update = 1;
- break;
- case KEY_NPAGE:
- /* FALLTHROUGH */
- case CTRL_V:
- dispstart += maxprint;
-- need_update = 1;
- break;
- case KEY_PPAGE:
- /* FALLTHROUGH */
- case META_V:
- dispstart -= maxprint;
-- need_update = 1;
- break;
- case KEY_HOME:
- /* FALLTHROUGH */
- case CTRL_A:
- dispstart = 0;
-- need_update = 1;
- break;
- case KEY_END:
- /* FALLTHROUGH */
- case CTRL_E:
- dispstart = num_disp;
-- need_update = 1;
- break;
- case CTRL_L:
- clear();
-- need_update = 1;
- break;
- default:
- break;
- }
-
-- if (set_order_hotkey(ch))
-- need_sort = 1;
-- else
-+ if (!set_order_hotkey(ch))
- set_view_hotkey(ch);
- }
-
-@@ -2790,6 +2789,7 @@
- extern int optind;
-
- struct pf_status status;
-+ struct pollfd set[1];
-
- char *orderstr = NULL;
- char *viewstr = NULL;
-@@ -2872,7 +2872,6 @@
- signal(SIGINT, sig_close);
- signal(SIGQUIT, sig_close);
- signal(SIGWINCH, sig_resize);
-- signal(SIGALRM, sig_alarm);
-
- #ifdef HAVE_DEVICE_RO
- dev = open("/dev/pf", O_RDONLY);
-@@ -2884,7 +2883,7 @@
-
- /* preallocate existing states if possible */
- if (ioctl(dev, DIOCGETSTATUS, &status)) {
-- warnx("DIOCGETSTATUS");
-+ warn("DIOCGETSTATUS");
- alloc_buf(0);
- } else
- alloc_buf(status.states);
-@@ -2910,36 +2909,7 @@
- if (rawmode && countmax == 0)
- countmax = 1;
-
-- gotsig_alarm = 1;
- for (;;) {
-- if (gotsig_alarm) {
-- read_view(dev);
-- need_sort = 1;
-- gotsig_alarm = 0;
-- alarm(delay);
-- }
--
-- if (need_sort) {
-- sort_view();
-- need_sort = 0;
-- need_update = 1;
--
-- /* XXX if sort took too long */
-- if (gotsig_alarm) {
-- gotsig_alarm = 0;
-- alarm(delay);
-- }
-- }
--
-- if (need_update) {
-- erase();
-- disp_update(dev);
-- end_page();
-- need_update = 0;
-- if (countmax && ++count >= countmax)
-- break;
-- }
--
- if (gotsig_close)
- break;
- if (gotsig_resize) {
-@@ -2947,12 +2917,30 @@
- endwin();
- setup_term(maxstates);
- gotsig_resize = 0;
-- need_update = 1;
- }
+@@ -40,6 +44,7 @@
-- if (interactive && need_update == 0)
-- keyboard();
-- else if (interactive == 0)
-+ read_view(dev);
-+ sort_view();
-+
-+ if (rawmode == 0)
-+ erase();
-+ disp_update(dev);
-+ end_page();
-+
-+ if (countmax && ++count >= countmax)
-+ break;
-+
-+ if (interactive) {
-+ set[0].fd = STDIN_FILENO;
-+ set[0].events = POLLIN;
-+ if (poll(set, 1, delay * 1000) == -1) {
-+ if (errno == EINTR)
-+ continue;
-+ break;
-+ }
-+ if ((set[0].revents & POLLIN) != 0)
-+ keyboard();
-+ } else
- sleep(delay);
- }
+ /* initialize the tree and queue */
+ RB_HEAD(sc_tree, sc_ent) sctree;
++RB_PROTOTYPE(sc_tree, sc_ent, tlink, sc_cmp);
+ TAILQ_HEAD(sc_queue, sc_ent) scq1, scq2, scq_free;
+ RB_GENERATE(sc_tree, sc_ent, tlink, sc_cmp);
diff --git a/sysutils/pftop/patches/patch-ac b/sysutils/pftop/patches/patch-ac
index 8f71e9eb4b1..f9c190c841f 100644
--- a/sysutils/pftop/patches/patch-ac
+++ b/sysutils/pftop/patches/patch-ac
@@ -1,24 +1,25 @@
-$NetBSD: patch-ac,v 1.2 2006/03/06 23:02:08 peter Exp $
+$NetBSD: patch-ac,v 1.3 2008/06/15 14:09:03 peter Exp $
---- cache.c.orig 2003-08-05 03:20:29.000000000 +0200
-+++ cache.c 2006-03-06 23:52:42.000000000 +0100
-@@ -37,7 +37,11 @@
- #include <netinet/in.h>
+--- config.h.old 2008-06-15 01:19:59.000000000 +0200
++++ config.h 2008-06-15 12:16:51.000000000 +0200
+@@ -42,7 +42,9 @@
+ #if OS_LEVEL > 32
+ #define HAVE_ADDR_MASK
+ #define HAVE_ADDR_TYPE
++#ifndef __NetBSD__
+ #define HAVE_ALTQ
++#endif /* !__NetBSD__ */
+ #define HAVE_RULE_TOS
+ #define HAVE_OP_RRG
+ #endif
+@@ -64,6 +66,10 @@
- #include <netinet/tcp_fsm.h>
-+#ifdef __DragonFly__
-+#include <net/pf/pfvar.h>
-+#else
- #include <net/pfvar.h>
-+#endif
- #include <arpa/inet.h>
-
- #include <stdio.h>
-@@ -54,6 +58,7 @@
-
- /* initialize the tree and queue */
- RB_HEAD(sc_tree, sc_ent) sctree;
-+RB_PROTOTYPE(sc_tree, sc_ent, tlink, sc_cmp);
- TAILQ_HEAD(sc_queue, sc_ent) scq1, scq2, scq_free;
- RB_GENERATE(sc_tree, sc_ent, tlink, sc_cmp);
+ #if OS_LEVEL > 37
+ #define HAVE_INOUT_COUNT_RULES
++#ifdef __NetBSD__
++/* NetBSD has pf/ALTQ since 4.0, which shipped with pf 3.7 */
++#define HAVE_ALTQ
++#endif /* __NetBSD__ */
+ #endif
+ #if OS_LEVEL > 38
diff --git a/sysutils/pftop/patches/patch-ad b/sysutils/pftop/patches/patch-ad
new file mode 100644
index 00000000000..103bac0527c
--- /dev/null
+++ b/sysutils/pftop/patches/patch-ad
@@ -0,0 +1,261 @@
+$NetBSD: patch-ad,v 1.1 2008/06/15 14:09:03 peter Exp $
+
+--- engine.c.old 2008-06-14 17:38:55.000000000 +0200
++++ engine.c 2008-06-15 12:41:47.000000000 +0200
+@@ -22,7 +22,10 @@
+
+ #include <ctype.h>
+ #include <curses.h>
++#include <errno.h>
++#include <poll.h>
+ #include <signal.h>
++#include <stdarg.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+@@ -33,6 +36,10 @@
+ #define MIN(a,b) (((a)<(b))?(a):(b))
+ #endif
+
++#ifndef CIRCLEQ_END
++#define CIRCLEQ_END(head) ((void *)(head))
++#endif
++
+ /* circular linked list of views */
+ CIRCLEQ_HEAD(view_list, view_ent) view_head =
+ CIRCLEQ_HEAD_INITIALIZER(view_head);
+@@ -55,9 +62,6 @@
+
+ volatile sig_atomic_t gotsig_close = 0;
+ volatile sig_atomic_t gotsig_resize = 0;
+-volatile sig_atomic_t gotsig_alarm = 0;
+-int need_update = 0;
+-int need_sort = 0;
+
+ SCREEN *screen;
+
+@@ -105,7 +109,6 @@
+
+ int
+ tbprintf(char *format, ...)
+- GCC_PRINTFLIKE(1,2) /* defined in curses.h */
+ {
+ int len;
+ va_list arg;
+@@ -482,7 +485,6 @@
+ v = ve->view;
+
+ if ((curr_view != NULL) && (curr_mgr != v->mgr)) {
+- gotsig_alarm = 1;
+ if (v->mgr != NULL && v->mgr->select_fn != NULL)
+ v->mgr->select_fn();
+ }
+@@ -491,7 +493,6 @@
+ curr_view = v;
+ curr_mgr = v->mgr;
+ field_setup();
+- need_update = 1;
+ }
+
+ void
+@@ -905,12 +906,6 @@
+ }
+
+ void
+-sig_alarm(int signal)
+-{
+- gotsig_alarm = 1;
+-}
+-
+-void
+ setup_term(int dmax)
+ {
+ max_disp = dmax;
+@@ -941,8 +936,9 @@
+ keypad(stdscr, TRUE);
+ intrflush(stdscr, FALSE);
+
+- halfdelay(10);
++ cbreak();
+ noecho();
++ timeout(0);
+ }
+
+ if (dmax == 0)
+@@ -970,7 +966,6 @@
+ }
+ curr_message = NULL;
+ curr_cmd = cmd;
+- need_update = 1;
+ return prev;
+ }
+
+@@ -987,7 +982,6 @@
+
+ int
+ msgprintf(char *format, ...)
+- GCC_PRINTFLIKE(1,2) /* defined in curses.h */
+ {
+ static char buf[1024];
+ int len;
+@@ -1085,28 +1079,21 @@
+ if (curr_message != NULL) {
+ if (ch > 0) {
+ curr_message = NULL;
+- need_update = 1;
+ }
+ }
+
+ switch (ch) {
+- case ' ':
+- gotsig_alarm = 1;
+- break;
+ case 'o':
+ next_order();
+- need_sort = 1;
+ break;
+ case 'p':
+ paused = !paused;
+- gotsig_alarm = 1;
+ break;
+ case 'q':
+ gotsig_close = 1;
+ break;
+ case 'r':
+ sortdir *= -1;
+- need_sort = 1;
+ break;
+ case 'v':
+ /* FALLTHROUGH */
+@@ -1124,49 +1111,40 @@
+ /* FALLTHROUGH */
+ case CTRL_N:
+ dispstart++;
+- need_update = 1;
+ break;
+ case KEY_UP:
+ /* FALLTHROUGH */
+ case CTRL_P:
+ dispstart--;
+- need_update = 1;
+ break;
+ case KEY_NPAGE:
+ /* FALLTHROUGH */
+ case CTRL_V:
+ dispstart += maxprint;
+- need_update = 1;
+ break;
+ case KEY_PPAGE:
+ /* FALLTHROUGH */
+ case META_V:
+ dispstart -= maxprint;
+- need_update = 1;
+ break;
+ case KEY_HOME:
+ /* FALLTHROUGH */
+ case CTRL_A:
+ dispstart = 0;
+- need_update = 1;
+ break;
+ case KEY_END:
+ /* FALLTHROUGH */
+ case CTRL_E:
+ dispstart = num_disp;
+- need_update = 1;
+ break;
+ case CTRL_L:
+ clear();
+- need_update = 1;
+ break;
+ default:
+ break;
+ }
+
+- if (set_order_hotkey(ch))
+- need_sort = 1;
+- else
++ if (!set_order_hotkey(ch))
+ set_view_hotkey(ch);
+ }
+
+@@ -1177,43 +1155,15 @@
+ signal(SIGINT, sig_close);
+ signal(SIGQUIT, sig_close);
+ signal(SIGWINCH, sig_resize);
+- signal(SIGALRM, sig_alarm);
+ }
+
+ void
+ engine_loop(int countmax)
+ {
++ struct pollfd set[1];
+ int count = 0;
+
+ for (;;) {
+- if (gotsig_alarm) {
+- read_view();
+- need_sort = 1;
+- gotsig_alarm = 0;
+- alarm(delay);
+- }
+-
+- if (need_sort) {
+- sort_view();
+- need_sort = 0;
+- need_update = 1;
+-
+- /* XXX if sort took too long */
+- if (gotsig_alarm) {
+- gotsig_alarm = 0;
+- alarm(delay);
+- }
+- }
+-
+- if (need_update) {
+- erase();
+- disp_update();
+- end_page();
+- need_update = 0;
+- if (countmax && ++count >= countmax)
+- break;
+- }
+-
+ if (gotsig_close)
+ break;
+ if (gotsig_resize) {
+@@ -1221,13 +1171,31 @@
+ endwin();
+ setup_term(max_disp);
+ gotsig_resize = 0;
+- need_update = 1;
+ }
+
+- if (interactive && need_update == 0)
+- keyboard();
+- else if (interactive == 0)
++ read_view();
++ sort_view();
++
++ if (rawmode == 0)
++ erase();
++ disp_update();
++ end_page();
++ if (countmax && ++count >= countmax)
++ break;
++
++ if (interactive) {
++ set[0].fd = STDIN_FILENO;
++ set[0].events = POLLIN;
++ if (poll(set, 1, delay * 1000) == -1) {
++ if (errno == EINTR)
++ continue;
++ break;
++ }
++ if ((set[0].revents & POLLIN) != 0)
++ keyboard();
++ } else {
+ sleep(delay);
++ }
+ }
+
+ if (rawmode == 0)
diff --git a/sysutils/pftop/patches/patch-ae b/sysutils/pftop/patches/patch-ae
new file mode 100644
index 00000000000..dc931b044ed
--- /dev/null
+++ b/sysutils/pftop/patches/patch-ae
@@ -0,0 +1,28 @@
+$NetBSD: patch-ae,v 1.1 2008/06/15 14:09:04 peter Exp $
+
+--- engine.h.old 2008-06-14 17:39:04.000000000 +0200
++++ engine.h 2008-06-15 12:38:21.000000000 +0200
+@@ -100,8 +100,8 @@
+
+ void tb_end(void);
+
+-int tbprintf(char *format, ...) GCC_PRINTFLIKE(1,2);
+-int msgprintf(char *format, ...) GCC_PRINTFLIKE(1,2);
++int tbprintf(char *format, ...);
++int msgprintf(char *format, ...);
+
+ void end_line(void);
+ void end_page(void);
+@@ -150,12 +150,8 @@
+ extern int rawwidth;
+ extern int columns, lines;
+
+-extern int need_update;
+-extern int need_sort;
+-
+ extern volatile sig_atomic_t gotsig_close;
+ extern volatile sig_atomic_t gotsig_resize;
+-extern volatile sig_atomic_t gotsig_alarm;
+
+ extern field_view *curr_view;
+ extern struct view_manager *curr_mgr;
diff --git a/sysutils/pftop/patches/patch-af b/sysutils/pftop/patches/patch-af
new file mode 100644
index 00000000000..d068aad2080
--- /dev/null
+++ b/sysutils/pftop/patches/patch-af
@@ -0,0 +1,12 @@
+$NetBSD: patch-af,v 1.1 2008/06/15 14:09:04 peter Exp $
+
+--- pftop.8.old 2008-06-14 18:16:37.000000000 +0200
++++ pftop.8 2008-06-14 18:16:47.000000000 +0200
+@@ -143,6 +143,7 @@
+ .It Fl w Ar width
+ Set the width of the display for batch mode.
+ The default width is 80.
++.El
+ .Sh INTERACTIVE MODE
+ When
+ .Nm
diff --git a/sysutils/pftop/patches/patch-ag b/sysutils/pftop/patches/patch-ag
new file mode 100644
index 00000000000..0b9a6d6f4ad
--- /dev/null
+++ b/sysutils/pftop/patches/patch-ag
@@ -0,0 +1,120 @@
+$NetBSD: patch-ag,v 1.1 2008/06/15 14:09:04 peter Exp $
+
+--- pftop.c.old 2008-06-14 17:41:08.000000000 +0200
++++ pftop.c 2008-06-15 12:42:06.000000000 +0200
+@@ -40,7 +40,11 @@
+ #include <netinet/in.h>
+ #define TCPSTATES
+ #include <netinet/tcp_fsm.h>
++#ifdef __DragonFly__
++#include <net/pf/pfvar.h>
++#else
+ #include <net/pfvar.h>
++#endif /* !__DragonFly__ */
+ #include <arpa/inet.h>
+
+ #ifdef HAVE_ALTQ
+@@ -55,6 +59,7 @@
+ #include <err.h>
+ #include <errno.h>
+ #include <fcntl.h>
++#include <limits.h>
+ #include <netdb.h>
+ #include <signal.h>
+ #include <stdio.h>
+@@ -736,7 +741,7 @@
+ } else {
+ num_states = 0;
+ for (n = 0; n<num_states_all; n++)
+- if (bpf_filter(filter_prog.bf_insns, (char *)(&state_buf[n]),
++ if (bpf_filter(filter_prog.bf_insns, (u_char *)(&state_buf[n]),
+ sizeof(pf_state_t), sizeof(pf_state_t)) > 0)
+ state_ord[num_states++] = n;
+ }
+@@ -828,7 +833,7 @@
+ tbprintf(" PAUSED");
+
+ if (rawmode)
+- printf("\n\n%s\n", tmp_buf);
++ printf("\n%s", tmp_buf);
+ else
+ mvprintw(0, 0, "%s", tmp_buf);
+
+@@ -843,7 +848,10 @@
+ len = columns - strlen(tmp_buf);
+ if (len < 0)
+ len = 0;
+- mvprintw(0, len, "%s", tmp_buf);
++ if (rawmode)
++ printf(" %s\n", tmp_buf);
++ else
++ mvprintw(0, len, "%s", tmp_buf);
+ }
+
+ tb_end();
+@@ -1244,7 +1252,6 @@
+ FLD_ANCHOR->max_width = mx;
+ FLD_ANCHOR->norm_width = nx;
+ field_setup();
+- need_update = 1;
+ }
+ }
+ #endif
+@@ -1279,7 +1286,6 @@
+ FLD_LABEL->norm_width = nw;
+ FLD_LABEL->max_width = mw;
+ field_setup();
+- need_update = 1;
+ }
+ }
+ #endif
+@@ -2041,11 +2047,9 @@
+ if (cachestates) {
+ show_field(FLD_SI);
+ show_field(FLD_SP);
+- gotsig_alarm = 1;
+ } else {
+ hide_field(FLD_SI);
+ hide_field(FLD_SP);
+- need_update = 1;
+ }
+ field_setup();
+ }
+@@ -2105,8 +2109,10 @@
+ line++;
+ mvprintw(line++, 6, "press any key to continue ...");
+
+- while (getch() == ERR);
+-
++ timeout(-1);
++ while (getch() == ERR)
++ continue;
++ timeout(0);
+ }
+
+
+@@ -2142,7 +2148,6 @@
+ del = atoi(cmdbuf);
+ if (del > 0) {
+ delay = del;
+- gotsig_alarm = 1;
+ }
+ }
+
+@@ -2175,7 +2180,6 @@
+ /* FALLTHROUGH */
+ case 'h':
+ show_help();
+- need_update = 1;
+ break;
+ case 'n':
+ command_set(&cm_count, NULL);
+@@ -2349,8 +2353,6 @@
+ if (rawmode && countmax == 0)
+ countmax = 1;
+
+- gotsig_alarm = 1;
+-
+ engine_loop(countmax);
+
+ close(pf_dev);
diff --git a/sysutils/pftop/patches/patch-ah b/sysutils/pftop/patches/patch-ah
new file mode 100644
index 00000000000..edfa2403609
--- /dev/null
+++ b/sysutils/pftop/patches/patch-ah
@@ -0,0 +1,53 @@
+$NetBSD: patch-ah,v 1.1 2008/06/15 14:09:04 peter Exp $
+
+--- sf-gencode.c.old 2008-06-14 17:44:52.000000000 +0200
++++ sf-gencode.c 2008-06-15 01:19:43.000000000 +0200
+@@ -32,8 +32,11 @@
+ #include <netinet/in.h>
+ #include <netinet/if_ether.h>
+
+-#include <net/if_pflog.h>
++#ifdef __DragonFly__
++#include <net/pf/pfvar.h>
++#else
+ #include <net/pfvar.h>
++#endif /* !__DragonFly__ */
+
+ #include <netdb.h>
+ #include <stdlib.h>
+@@ -44,7 +47,7 @@
+
+ #define INET6
+
+-#include <pcap-int.h>
++#include "pcap-int.h"
+ #include <pcap-namedb.h>
+ #include "sf-gencode.h"
+
+@@ -733,13 +736,17 @@
+ b1 = gen_proto(IPPROTO_ESP);
+ break;
+
++#ifdef IPPROTO_PFSYNC
+ case Q_PFSYNC:
+ b1 = gen_proto(IPPROTO_PFSYNC);
+ break;
++#endif /* IPPROTO_PFSYNC */
+
++#ifdef IPPROTO_CARP
+ case Q_CARP:
+ b1 = gen_proto(IPPROTO_CARP);
+ break;
++#endif /* IPPROTO_CARP */
+
+ default:
+ sf_error("Unknown protocol abbreviation");
+@@ -1560,7 +1567,7 @@
+ /* NOTREACHED */
+ }
+
+- b0 = gen_bcmp(off, strlen(ifname), ifname);
++ b0 = gen_bcmp(off, strlen(ifname), (const u_char *)ifname);
+ return (b0);
+ #else
+ sf_error("ifname not supported in this OpenBSD release");
diff --git a/sysutils/pftop/patches/patch-ai b/sysutils/pftop/patches/patch-ai
new file mode 100644
index 00000000000..549b54a2cc7
--- /dev/null
+++ b/sysutils/pftop/patches/patch-ai
@@ -0,0 +1,33 @@
+$NetBSD: patch-ai,v 1.1 2008/06/15 14:09:04 peter Exp $
+
+--- sf-scanner.l.old 2008-06-14 18:04:30.000000000 +0200
++++ sf-scanner.l 2008-06-14 18:19:59.000000000 +0200
+@@ -222,7 +222,8 @@
+ if (getaddrinfo(yytext, NULL, &hints, &res))
+ sf_error("bogus IPv6 address %s", yytext);
+ else {
+- yylval.e = sdup((char *)yytext); return HID6;
++ yylval.e = (u_char *)sdup((char *)yytext);
++ return HID6;
+ }
+ }
+ [A-Za-z0-9][-_.A-Za-z0-9]*[.A-Za-z0-9] {
+@@ -232,8 +233,17 @@
+ [^ \[\]\t\n\-_.A-Za-z0-9!<>()&|=]+ {
+ size_t len = strlen(yytext) * 4 + 1;
+ char *v = malloc(len);
+- if (v != NULL)
++ if (v != NULL) {
++#ifdef __NetBSD__
++ size_t len = strlen(yytext);
++ if (len > sizeof v) {
++ len = sizeof v;
++ }
++ strvisx(v, yytext, len, 0);
++#else
+ strnvis(v, yytext, len, 0);
++#endif /* !__NetBSD__ */
++ }
+ sf_error("illegal token: %s", v);
+ free(v);
+ }