aboutsummaryrefslogtreecommitdiffstats
path: root/wsutil
diff options
context:
space:
mode:
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