aboutsummaryrefslogtreecommitdiffstats
path: root/wsutil
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2017-10-29 19:10:46 -0700
committerGuy Harris <guy@alum.mit.edu>2017-10-30 02:11:22 +0000
commit39ba9d4e7fb52ca8017bd4e934d6e6f8acba8d4c (patch)
treeeacce8999646bf94f162514e92c94747ca03dc4f /wsutil
parentdd1c18dd031038cbee7e219e322cbea1eafc87ca (diff)
Add wsutil/inet_ipv4.h.
It defines a ws_in4_addr type, which is intended to hold IPv4 addresses in network byte order, and some macros to test for IPv4 addresses in the local network control block and multicast IPv4 addresses. Use those macros in places where dissectors had their own code for that purpose. Change-Id: I4252b410e37207157be85119a332e2a6913b332f Reviewed-on: https://code.wireshark.org/review/24178 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'wsutil')
-rw-r--r--wsutil/Makefile.am1
-rw-r--r--wsutil/inet_ipv4.h44
2 files changed, 45 insertions, 0 deletions
diff --git a/wsutil/Makefile.am b/wsutil/Makefile.am
index bea58f3dde..6cb212bbf9 100644
--- a/wsutil/Makefile.am
+++ b/wsutil/Makefile.am
@@ -59,6 +59,7 @@ WSUTIL_PUBLIC_INCLUDES = \
g711.h \
glib-compat.h \
inet_addr.h \
+ inet_ipv4.h \
inet_ipv6.h \
interface.h \
jsmn.h \
diff --git a/wsutil/inet_ipv4.h b/wsutil/inet_ipv4.h
new file mode 100644
index 0000000000..9c1094f5af
--- /dev/null
+++ b/wsutil/inet_ipv4.h
@@ -0,0 +1,44 @@
+/* inet_ipv4.h
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef __INET_IPV4_H__
+#define __INET_IPV4_H__
+
+#include <glib.h>
+
+typedef guint32 ws_in4_addr; /* 32 bit IPv4 address, in network byte order */
+
+/**
+ * Unicast Local
+ * Returns true if the address is in the 224.0.0.0/24 local network
+ * control block
+ */
+#define in4_addr_is_local_network_control_block(addr) \
+ ((addr & 0xffffff00) == 0xe0000000)
+
+/**
+ * Multicast
+ * Returns true if the address is in the 224.0.0.0/4 network block
+ */
+#define in4_addr_is_multicast(addr) \
+ ((addr & 0xf0000000) == 0xe0000000)
+
+#endif