diff options
Diffstat (limited to 'net/darkstat/patches/patch-aa')
-rw-r--r-- | net/darkstat/patches/patch-aa | 63 |
1 files changed, 46 insertions, 17 deletions
diff --git a/net/darkstat/patches/patch-aa b/net/darkstat/patches/patch-aa index 589b5e55014..3175faab8b2 100644 --- a/net/darkstat/patches/patch-aa +++ b/net/darkstat/patches/patch-aa @@ -1,19 +1,48 @@ -$NetBSD: patch-aa,v 1.1.1.1 2006/07/19 04:41:47 minskim Exp $ +$NetBSD: patch-aa,v 1.2 2006/10/07 07:49:01 obache Exp $ ---- queue.h.orig 2006-03-14 10:10:02.000000000 +0100 -+++ queue.h -@@ -51,12 +51,14 @@ struct { \ +--- decode.c.orig 2006-08-07 02:26:32.000000000 +0200 ++++ decode.c +@@ -54,6 +54,8 @@ static void decode_ether(u_char *, const + const u_char *); + static void decode_loop(u_char *, const struct pcap_pkthdr *, + const u_char *); ++static void decode_ppp(u_char *, const struct pcap_pkthdr *, ++ const u_char *); + static void decode_pppoe(u_char *, const struct pcap_pkthdr *, + const u_char *); + static void decode_linux_sll(u_char *, const struct pcap_pkthdr *, +@@ -67,7 +69,10 @@ static const linkhdr_t linkhdrs[] = { + { DLT_EN10MB, ETHER_HDR_LEN, decode_ether }, + { DLT_LOOP, NULL_HDR_LEN, decode_loop }, + { DLT_NULL, NULL_HDR_LEN, decode_loop }, +- { DLT_PPP, PPP_HDR_LEN, NULL }, ++ { DLT_PPP, PPP_HDR_LEN, decode_ppp }, ++#if defined(__NetBSD__) ++ { DLT_PPP_SERIAL, PPP_HDR_LEN, decode_ppp }, ++#endif + { DLT_FDDI, FDDI_HDR_LEN, NULL }, + { DLT_PPP_ETHER, PPPOE_HDR_LEN, decode_pppoe }, + { DLT_LINUX_SLL, SLL_HDR_LEN, decode_linux_sll }, +@@ -172,6 +177,22 @@ decode_loop(u_char *user _unused_, + } - #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) - -+#undef STAILQ_INSERT_TAIL - #define STAILQ_INSERT_TAIL(head, elm, field) do { \ - STAILQ_NEXT((elm), field) = NULL; \ - *(head)->stqh_last = (elm); \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - } while (0) - -+#undef STAILQ_REMOVE_HEAD - #define STAILQ_REMOVE_HEAD(head, field) do { \ - if ((STAILQ_FIRST((head)) = \ - STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + static void ++decode_ppp(u_char *user _unused_, ++ const struct pcap_pkthdr *pheader, ++ const u_char *pdata) ++{ ++ pktsummary sm; ++ memset(&sm, 0, sizeof(sm)); ++ ++ if (pdata[2] == 0x00 && pdata[3] == 0x21) { ++ decode_ip(pdata + PPP_HDR_LEN, pheader->caplen - PPP_HDR_LEN, &sm); ++ sm.time = pheader->ts.tv_sec; ++ acct_for(&sm); ++ } else ++ verbosef("non-IP PPP packet; ignoring."); ++} ++ ++static void + decode_pppoe(u_char *user _unused_, + const struct pcap_pkthdr *pheader, + const u_char *pdata) |