tcpdump mailing list archives
Re: [tcpdump] After setjmp/longjmp update
From: Francois-Xavier Le Bail via tcpdump-workers <tcpdump-workers () lists tcpdump org>
Date: Fri, 18 Sep 2020 10:25:13 +0200
--- Begin Message --- From: Francois-Xavier Le Bail <devel.fx.lebail () orange fr>
Date: Fri, 18 Sep 2020 10:25:13 +0200
On 17/09/2020 22:05, Francois-Xavier Le Bail via tcpdump-workers wrote:On 17/09/2020 16:15, Denis Ovsienko via tcpdump-workers wrote:On Sat, 5 Sep 2020 18:20:42 +0200 Francois-Xavier Le Bail via tcpdump-workers <tcpdump-workers () lists tcpdump org> wrote:2) Process all the truncated cases with: ndo->ndo_ll_hdr_len = 0; longjmp(ndo->ndo_truncated, 1); (With a new macro, like 'ND_TRUNCATED' or 'ND_IS_TRUNCATED')The master branch now has a change along these lines. Whilst preparing changes to a couple decoders based on that (still work in progress), I managed to make some observations, will post as soon as it all looks good and makes sense.Should we have something like: if (setjmp(ndo->early_end) == 0) { /* Print the packet. */ (ndo->ndo_if_printer)(ndo, h, sp); } else { switch (ndo->early_end_reason) { case TRUNCATED: /* A printer quit because the packet was truncated; report it */ nd_print_trunc(ndo); break; case INVALID: ... } } (ndo->ndo_truncated -> ndo->early_end and ndo->early_end_reason = TRUNCATED/INVALID/other?Or perhaps better (no need for a 'early_end_reason' field): switch (setjmp(ndo->early_end)) { case 0: /* Print the packet. */ (ndo->ndo_if_printer)(ndo, h, sp); break; case ND_TRUNCATED: /* A printer quit because the packet was truncated; report it */ nd_print_trunc(ndo); break; case ND_INVALID: ND_PRINT(" (invalid)"); /* or calling a function that do the print */ } With: #define ND_TRUNCATED 1 #define ND_INVALID 2 and use longjmp(ndo->early_end, ND_TRUNCATED); /* for packet truncated cases */ longjmp(ndo->early_end, ND_INVALID); /* for invalid cases (bad length, etc.) */ -- Francois-Xavier
--- End Message ---
_______________________________________________ tcpdump-workers mailing list tcpdump-workers () lists tcpdump org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers
Current thread:
- [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 05)
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 07)
- Re: [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 07)
- Message not available
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 07)
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 07)
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 12)
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 17)
- Re: [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 17)
- Re: [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 18)
- Message not available
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 18)
- Message not available
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 24)
- Re: [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 17)
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 17)
- Re: [tcpdump] After setjmp/longjmp update Denis Ovsienko via tcpdump-workers (Sep 26)
- Message not available
- Re: [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 23)
- Message not available
- Re: [tcpdump] After setjmp/longjmp update Francois-Xavier Le Bail via tcpdump-workers (Sep 23)