summaryrefslogtreecommitdiff
path: root/src/print-beep.c
diff options
context:
space:
mode:
author杨威 <[email protected]>2020-09-28 14:31:40 +0800
committer杨威 <[email protected]>2020-09-28 14:31:40 +0800
commit1b3ff3f1f7111dfa2d774b2206ca80973c9332d6 (patch)
tree488fb2ff4ac37ab3df1de0247ef2f816c480e436 /src/print-beep.c
parent5427b568de89bcca1bc5a6dcd2a5cf724704a1c3 (diff)
parent453f442a037a03b038ad67383b18e259649e94b6 (diff)
Merge branch 'dev' into 'master'v1.0.1
支持CI Closes #1 See merge request common_tools/tcpdump_mesa!1
Diffstat (limited to 'src/print-beep.c')
-rw-r--r--src/print-beep.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/print-beep.c b/src/print-beep.c
new file mode 100644
index 0000000..1240a3e
--- /dev/null
+++ b/src/print-beep.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2000, Richard Sharpe
+ *
+ * This software may be distributed either under the terms of the
+ * BSD-style license that accompanies tcpdump or under the GNU GPL
+ * version 2 or later.
+ *
+ * print-beep.c
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <netdissect-stdinc.h>
+
+#include <string.h>
+
+#include "netdissect.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 *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(netdissect_options *ndo, const u_char *bp, u_int length)
+{
+
+ if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */
+ ND_PRINT((ndo, " BEEP MSG"));
+ else if (l_strnstart("RPY ", 4, (const char *)bp, length))
+ ND_PRINT((ndo, " BEEP RPY"));
+ else if (l_strnstart("ERR ", 4, (const char *)bp, length))
+ ND_PRINT((ndo, " BEEP ERR"));
+ else if (l_strnstart("ANS ", 4, (const char *)bp, length))
+ ND_PRINT((ndo, " BEEP ANS"));
+ else if (l_strnstart("NUL ", 4, (const char *)bp, length))
+ ND_PRINT((ndo, " BEEP NUL"));
+ else if (l_strnstart("SEQ ", 4, (const char *)bp, length))
+ ND_PRINT((ndo, " BEEP SEQ"));
+ else if (l_strnstart("END", 4, (const char *)bp, length))
+ ND_PRINT((ndo, " BEEP END"));
+ else
+ ND_PRINT((ndo, " BEEP (payload or undecoded)"));
+}