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 license that accompanies tcpdump or under the GNU GPL
      6  * version 2 or later.
      7  *
      8  * print-beep.c
      9  *
     10  */
     11 
     12 /* \summary: Blocks Extensible Exchange Protocol (BEEP) printer */
     13 
     14 #ifdef HAVE_CONFIG_H
     15 #include "config.h"
     16 #endif
     17 
     18 #include <netdissect-stdinc.h>
     19 
     20 #include <string.h>
     21 
     22 #include "netdissect.h"
     23 
     24 /* Check for a string but not go beyond length
     25  * Return TRUE on match, FALSE otherwise
     26  *
     27  * Looks at the first few chars up to tl1 ...
     28  */
     29 
     30 static int
     31 l_strnstart(const char *tstr1, u_int tl1, const char *str2, u_int l2)
     32 {
     33 
     34 	if (tl1 > l2)
     35 		return 0;
     36 
     37 	return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0);
     38 }
     39 
     40 void
     41 beep_print(netdissect_options *ndo, const u_char *bp, u_int length)
     42 {
     43 
     44 	if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */
     45 		ND_PRINT((ndo, " BEEP MSG"));
     46 	else if (l_strnstart("RPY ", 4, (const char *)bp, length))
     47 		ND_PRINT((ndo, " BEEP RPY"));
     48 	else if (l_strnstart("ERR ", 4, (const char *)bp, length))
     49 		ND_PRINT((ndo, " BEEP ERR"));
     50 	else if (l_strnstart("ANS ", 4, (const char *)bp, length))
     51 		ND_PRINT((ndo, " BEEP ANS"));
     52 	else if (l_strnstart("NUL ", 4, (const char *)bp, length))
     53 		ND_PRINT((ndo, " BEEP NUL"));
     54 	else if (l_strnstart("SEQ ", 4, (const char *)bp, length))
     55 		ND_PRINT((ndo, " BEEP SEQ"));
     56 	else if (l_strnstart("END", 4, (const char *)bp, length))
     57 		ND_PRINT((ndo, " BEEP END"));
     58 	else
     59 		ND_PRINT((ndo, " BEEP (payload or undecoded)"));
     60 }
     61