198524Sfenner/* 298524Sfenner * Copyright (C) 2000, Richard Sharpe 398524Sfenner * 4127668Sbms * This software may be distributed either under the terms of the 5127668Sbms * BSD-style licence that accompanies tcpdump or under the GNU GPL 698524Sfenner * version 2 or later. 798524Sfenner * 898524Sfenner * print-beep.c 998524Sfenner * 1098524Sfenner */ 1198524Sfenner 1298524Sfenner#ifndef lint 13127668Sbmsstatic const char rcsid[] _U_ = 14190207Srpaulo "@(#) $Header: /tcpdump/master/tcpdump/print-beep.c,v 1.6 2003-11-16 09:36:13 guy Exp $"; 1598524Sfenner#endif 1698524Sfenner 1798524Sfenner#ifdef HAVE_CONFIG_H 1898524Sfenner#include "config.h" 1998524Sfenner#endif 2098524Sfenner 21127668Sbms#include <tcpdump-stdinc.h> 2298524Sfenner 2398524Sfenner#ifdef HAVE_MEMORY_H 2498524Sfenner#include <memory.h> 2598524Sfenner#endif 2698524Sfenner#include <stdio.h> 2798524Sfenner#include <stdlib.h> 2898524Sfenner#include <string.h> 2998524Sfenner 3098524Sfenner#include "interface.h" 3198524Sfenner#include "extract.h" 3298524Sfenner 3398524Sfenner/* Check for a string but not go beyond length 3498524Sfenner * Return TRUE on match, FALSE otherwise 35127668Sbms * 3698524Sfenner * Looks at the first few chars up to tl1 ... 3798524Sfenner */ 3898524Sfenner 3998524Sfennerstatic int l_strnstart(const char *, u_int, const char *, u_int); 4098524Sfenner 4198524Sfennerstatic int 4298524Sfennerl_strnstart(const char *tstr1, u_int tl1, const char *str2, u_int l2) 4398524Sfenner{ 4498524Sfenner 4598524Sfenner if (tl1 > l2) 4698524Sfenner return 0; 4798524Sfenner 4898524Sfenner return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0); 4998524Sfenner} 5098524Sfenner 5198524Sfennervoid 5298524Sfennerbeep_print(const u_char *bp, u_int length) 5398524Sfenner{ 5498524Sfenner 55111726Sfenner if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */ 5698524Sfenner printf(" BEEP MSG"); 57111726Sfenner else if (l_strnstart("RPY ", 4, (const char *)bp, length)) 5898524Sfenner printf(" BEEP RPY"); 59111726Sfenner else if (l_strnstart("ERR ", 4, (const char *)bp, length)) 6098524Sfenner printf(" BEEP ERR"); 61111726Sfenner else if (l_strnstart("ANS ", 4, (const char *)bp, length)) 6298524Sfenner printf(" BEEP ANS"); 63111726Sfenner else if (l_strnstart("NUL ", 4, (const char *)bp, length)) 6498524Sfenner printf(" BEEP NUL"); 65111726Sfenner else if (l_strnstart("SEQ ", 4, (const char *)bp, length)) 6698524Sfenner printf(" BEEP SEQ"); 67111726Sfenner else if (l_strnstart("END", 4, (const char *)bp, length)) 6898524Sfenner printf(" BEEP END"); 69127668Sbms else 7098524Sfenner printf(" BEEP (payload or undecoded)"); 7198524Sfenner} 72