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