12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (C) 2000, Richard Sharpe
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * This software may be distributed either under the terms of the
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * BSD-style licence that accompanies tcpdump or under the GNU GPL
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * version 2 or later.
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * print-beep.c
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ =
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  "@(#) $Header: /tcpdump/master/tcpdump/print-beep.c,v 1.6 2003/11/16 09:36:13 guy Exp $";
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h"
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h>
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_MEMORY_H
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <memory.h>
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h>
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdlib.h>
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <string.h>
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h"
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "extract.h"
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Check for a string but not go beyond length
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Return TRUE on match, FALSE otherwise
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Looks at the first few chars up to tl1 ...
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int l_strnstart(const char *, u_int, const char *, u_int);
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectl_strnstart(const char *tstr1, u_int tl1, const char *str2, u_int l2)
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (tl1 > l2)
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		return 0;
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0);
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvoid
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectbeep_print(const u_char *bp, u_int length)
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP MSG");
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else if (l_strnstart("RPY ", 4, (const char *)bp, length))
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP RPY");
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else if (l_strnstart("ERR ", 4, (const char *)bp, length))
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP ERR");
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else if (l_strnstart("ANS ", 4, (const char *)bp, length))
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP ANS");
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else if (l_strnstart("NUL ", 4, (const char *)bp, length))
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP NUL");
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else if (l_strnstart("SEQ ", 4, (const char *)bp, length))
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP SEQ");
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else if (l_strnstart("END", 4, (const char *)bp, length))
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP END");
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" BEEP (payload or undecoded)");
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
72