xref: /minix3/external/bsd/tcpdump/dist/print-beep.c (revision b636d99d91c3d54204248f643c14627405d4afd1)
1*b636d99dSDavid van Moolenbroek /*
2*b636d99dSDavid van Moolenbroek  * Copyright (C) 2000, Richard Sharpe
3*b636d99dSDavid van Moolenbroek  *
4*b636d99dSDavid van Moolenbroek  * This software may be distributed either under the terms of the
5*b636d99dSDavid van Moolenbroek  * BSD-style licence that accompanies tcpdump or under the GNU GPL
6*b636d99dSDavid van Moolenbroek  * version 2 or later.
7*b636d99dSDavid van Moolenbroek  *
8*b636d99dSDavid van Moolenbroek  * print-beep.c
9*b636d99dSDavid van Moolenbroek  *
10*b636d99dSDavid van Moolenbroek  */
11*b636d99dSDavid van Moolenbroek 
12*b636d99dSDavid van Moolenbroek #include <sys/cdefs.h>
13*b636d99dSDavid van Moolenbroek #ifndef lint
14*b636d99dSDavid van Moolenbroek __RCSID("$NetBSD: print-beep.c,v 1.4 2014/11/20 03:05:03 christos Exp $");
15*b636d99dSDavid van Moolenbroek #endif
16*b636d99dSDavid van Moolenbroek 
17*b636d99dSDavid van Moolenbroek #define NETDISSECT_REWORKED
18*b636d99dSDavid van Moolenbroek #ifdef HAVE_CONFIG_H
19*b636d99dSDavid van Moolenbroek #include "config.h"
20*b636d99dSDavid van Moolenbroek #endif
21*b636d99dSDavid van Moolenbroek 
22*b636d99dSDavid van Moolenbroek #include <tcpdump-stdinc.h>
23*b636d99dSDavid van Moolenbroek 
24*b636d99dSDavid van Moolenbroek #include <string.h>
25*b636d99dSDavid van Moolenbroek 
26*b636d99dSDavid van Moolenbroek #include "interface.h"
27*b636d99dSDavid van Moolenbroek 
28*b636d99dSDavid van Moolenbroek /* Check for a string but not go beyond length
29*b636d99dSDavid van Moolenbroek  * Return TRUE on match, FALSE otherwise
30*b636d99dSDavid van Moolenbroek  *
31*b636d99dSDavid van Moolenbroek  * Looks at the first few chars up to tl1 ...
32*b636d99dSDavid van Moolenbroek  */
33*b636d99dSDavid van Moolenbroek 
34*b636d99dSDavid van Moolenbroek static int
l_strnstart(const char * tstr1,u_int tl1,const char * str2,u_int l2)35*b636d99dSDavid van Moolenbroek l_strnstart(const char *tstr1, u_int tl1, const char *str2, u_int l2)
36*b636d99dSDavid van Moolenbroek {
37*b636d99dSDavid van Moolenbroek 
38*b636d99dSDavid van Moolenbroek 	if (tl1 > l2)
39*b636d99dSDavid van Moolenbroek 		return 0;
40*b636d99dSDavid van Moolenbroek 
41*b636d99dSDavid van Moolenbroek 	return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0);
42*b636d99dSDavid van Moolenbroek }
43*b636d99dSDavid van Moolenbroek 
44*b636d99dSDavid van Moolenbroek void
beep_print(netdissect_options * ndo,const u_char * bp,u_int length)45*b636d99dSDavid van Moolenbroek beep_print(netdissect_options *ndo, const u_char *bp, u_int length)
46*b636d99dSDavid van Moolenbroek {
47*b636d99dSDavid van Moolenbroek 
48*b636d99dSDavid van Moolenbroek 	if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */
49*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP MSG"));
50*b636d99dSDavid van Moolenbroek 	else if (l_strnstart("RPY ", 4, (const char *)bp, length))
51*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP RPY"));
52*b636d99dSDavid van Moolenbroek 	else if (l_strnstart("ERR ", 4, (const char *)bp, length))
53*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP ERR"));
54*b636d99dSDavid van Moolenbroek 	else if (l_strnstart("ANS ", 4, (const char *)bp, length))
55*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP ANS"));
56*b636d99dSDavid van Moolenbroek 	else if (l_strnstart("NUL ", 4, (const char *)bp, length))
57*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP NUL"));
58*b636d99dSDavid van Moolenbroek 	else if (l_strnstart("SEQ ", 4, (const char *)bp, length))
59*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP SEQ"));
60*b636d99dSDavid van Moolenbroek 	else if (l_strnstart("END", 4, (const char *)bp, length))
61*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP END"));
62*b636d99dSDavid van Moolenbroek 	else
63*b636d99dSDavid van Moolenbroek 		ND_PRINT((ndo, " BEEP (payload or undecoded)"));
64*b636d99dSDavid van Moolenbroek }
65