From 066b1d5d0dc7a8ca2c26ae75d8fc86c77fb262e7 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Fri, 8 Sep 2017 17:28:37 +0200
Subject: [PATCH] Make FlagValue objects hashable

This will make them usable as set elements or dict or Counter keys.
---
 scapy/fields.py     | 2 ++
 test/regression.uts | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/scapy/fields.py b/scapy/fields.py
index ceabf1a9..28ff64d9 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -1039,6 +1039,8 @@ class FlagValue(object):
         self.multi = isinstance(names, list)
         self.names = names
         self.value = self._fixvalue(value)
+    def __hash__(self):
+        return hash(self.value)
     def __int__(self):
         return self.value
     def __eq__(self, other):
diff --git a/test/regression.uts b/test/regression.uts
index c0ed1b31..64397d93 100644
--- a/test/regression.uts
+++ b/test/regression.uts
@@ -8185,6 +8185,8 @@ assert pkt.flags.DF
 assert pkt.flags.evil
 assert repr(pkt.flags) == '<Flag 6 (DF+evil)>'
 
+assert len({IP().flags, IP().flags}) == 1
+
 = TCP flags
 ~ TCP
 
-- 
GitLab