aboutsummaryrefslogtreecommitdiffstats
path: root/wsutil
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2016-04-08 05:18:13 +0100
committerJoão Valverde <j@v6e.pt>2016-04-09 23:36:44 +0000
commit320726b83e2096d9431f28208437a738b31d8ad9 (patch)
treea115f574dcefddb80f81de55efd8b59c539ec283 /wsutil
parentbf302d23c957e674f421cad627d1a3034a25e9f8 (diff)
Move IPv6 address utility functions to wsutil
Change-Id: Ica8babbf4760b02e4840557fc61241152b2763c5 Reviewed-on: https://code.wireshark.org/review/13025 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'wsutil')
-rw-r--r--wsutil/inet_ipv6.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/wsutil/inet_ipv6.h b/wsutil/inet_ipv6.h
index 85a09e7105..21543253c4 100644
--- a/wsutil/inet_ipv6.h
+++ b/wsutil/inet_ipv6.h
@@ -26,4 +26,34 @@ struct e_in6_addr {
guint8 bytes[16]; /**< 128 bit IP6 address */
};
+/**
+ * Unicast Scope
+ * Note that we must check topmost 10 bits only, not 16 bits (see RFC2373).
+ */
+#if 0 /* XXX Currently unused */
+static inline gboolean in6_is_addr_link_local(struct e_in6_addr *a) {
+ if ((a->bytes[0] == 0xfe) && ((a->bytes[1] & 0xc0) == 0x80)) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static inline gboolean in6_is_addr_sitelocal(struct e_in6_addr *a) {
+ if ((a->bytes[0] == 0xfe) && ((a->bytes[1] & 0xc0) == 0xc0)) {
+ return TRUE;
+ }
+ return FALSE;
+}
+#endif
+
+/**
+ * Multicast
+ */
+static inline gboolean in6_is_addr_multicast(struct e_in6_addr *a) {
+ if (a->bytes[0] == 0xff) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
#endif