summaryrefslogtreecommitdiffstats
path: root/freebsd/contrib/tcpdump/print-beep.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2015-06-15 17:42:23 +1000
committerChris Johns <chrisj@rtems.org>2015-06-15 17:42:23 +1000
commit8440506ee8945ad57f5e20e9962084d67808eb22 (patch)
tree38f567b1c56846b88f5f0828bd244b05519998ba /freebsd/contrib/tcpdump/print-beep.c
parentUpdate LibBSD doco. (diff)
downloadrtems-libbsd-8440506ee8945ad57f5e20e9962084d67808eb22.tar.bz2
Add tcpdump and libpcap.
- Update the file builder generator to handle generator specific cflags and includes. The tcpdump and libpcap have localised headers and need specific headers paths to see them. There are also module specific flags and these need to be passed to the lex and yacc generators. - Add the tcpdump support.
Diffstat (limited to 'freebsd/contrib/tcpdump/print-beep.c')
-rw-r--r--freebsd/contrib/tcpdump/print-beep.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/freebsd/contrib/tcpdump/print-beep.c b/freebsd/contrib/tcpdump/print-beep.c
new file mode 100644
index 00000000..30b5cb0c
--- /dev/null
+++ b/freebsd/contrib/tcpdump/print-beep.c
@@ -0,0 +1,73 @@
+#include <machine/rtems-bsd-user-space.h>
+
+/*
+ * Copyright (C) 2000, Richard Sharpe
+ *
+ * This software may be distributed either under the terms of the
+ * BSD-style licence that accompanies tcpdump or under the GNU GPL
+ * version 2 or later.
+ *
+ * print-beep.c
+ *
+ */
+
+#ifndef lint
+static const char rcsid[] _U_ =
+ "@(#) $Header: /tcpdump/master/tcpdump/print-beep.c,v 1.6 2003-11-16 09:36:13 guy Exp $";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "interface.h"
+#include "extract.h"
+
+/* Check for a string but not go beyond length
+ * Return TRUE on match, FALSE otherwise
+ *
+ * Looks at the first few chars up to tl1 ...
+ */
+
+static int l_strnstart(const char *, u_int, const char *, u_int);
+
+static int
+l_strnstart(const char *tstr1, u_int tl1, const char *str2, u_int l2)
+{
+
+ if (tl1 > l2)
+ return 0;
+
+ return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0);
+}
+
+void
+beep_print(const u_char *bp, u_int length)
+{
+
+ if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */
+ printf(" BEEP MSG");
+ else if (l_strnstart("RPY ", 4, (const char *)bp, length))
+ printf(" BEEP RPY");
+ else if (l_strnstart("ERR ", 4, (const char *)bp, length))
+ printf(" BEEP ERR");
+ else if (l_strnstart("ANS ", 4, (const char *)bp, length))
+ printf(" BEEP ANS");
+ else if (l_strnstart("NUL ", 4, (const char *)bp, length))
+ printf(" BEEP NUL");
+ else if (l_strnstart("SEQ ", 4, (const char *)bp, length))
+ printf(" BEEP SEQ");
+ else if (l_strnstart("END", 4, (const char *)bp, length))
+ printf(" BEEP END");
+ else
+ printf(" BEEP (payload or undecoded)");
+}