From ce0421fc6deae75bd7d51d4b2a487a328daa8ef7 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Mon, 24 Jul 2017 09:41:25 +0200
Subject: [PATCH] Flags: use str(obj) rather than obj.flagrepr() (more
 "Pythonic")

---
 scapy/fields.py       | 9 ++++++---
 scapy/modules/nmap.py | 2 +-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/scapy/fields.py b/scapy/fields.py
index 822fd100..21314afd 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -1065,6 +1065,9 @@ class FlagValue(object):
         return bool(self.value)
     __bool__ = __nonzero__
     def flagrepr(self):
+        warning("obj.flagrepr() is obsolete. Use str(obj) instead.")
+        return str(self)
+    def __str__(self):
         i = 0
         r = []
         x = int(self)
@@ -1075,7 +1078,7 @@ class FlagValue(object):
             x >>= 1
         return ("+" if self.multi else "").join(r)
     def __repr__(self):
-        return "<Flag %d (%s)>" % (self, self.flagrepr())
+        return "<Flag %d (%s)>" % (self, self)
     def __deepcopy__(self, memo):
         return self.__class__(int(self), self.names)
     def __getattr__(self, attr):
@@ -1144,9 +1147,9 @@ class FlagsField(BitField):
     def i2repr(self, pkt, x):
         if isinstance(x, (list, tuple)):
             return repr(type(x)(
-                None if v is None else FlagValue(v, self.names).flagrepr()
+                None if v is None else str(FlagValue(v, self.names))
                 for v in x))
-        return None if x is None else FlagValue(x, self.names).flagrepr()
+        return None if x is None else str(FlagValue(x, self.names))
 
 
 MultiFlagsEntry = collections.namedtuple('MultiFlagEntry', ['short', 'long'])
diff --git a/scapy/modules/nmap.py b/scapy/modules/nmap.py
index efe6c7dc..a6017fd9 100644
--- a/scapy/modules/nmap.py
+++ b/scapy/modules/nmap.py
@@ -95,7 +95,7 @@ def nmap_tcppacket_sig(pkt):
         res["DF"] = "Y" if pkt.flags.DF else "N"
         res["W"] = "%X" % pkt.window
         res["ACK"] = "S++" if pkt.ack == 2 else "S" if pkt.ack == 1 else "O"
-        res["Flags"] = pkt[TCP].flags.flagrepr()[::-1]
+        res["Flags"] = str(pkt[TCP].flags)[::-1]
         res["Ops"] = "".join(x[0][0] for x in pkt[TCP].options)
     else:
         res["Resp"] = "N"
-- 
GitLab