summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2013-06-10 15:58:55 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-06-10 07:58:01 -0700
commit178b1dd2bc0d773dd86eaec0054501ed06be9d70 (patch)
treeaca48deb95e7b0d75185c8f6bdb4e6aba1fcb4c7
parenta504815b55105fbf6b7605684d78156c0110499c (diff)
packet lib: add Packet.__contains__
you can do something like: if arp.arp in Packet(msg.data): a = arp.arp(...) if a in Packet(msg.data): >>> from ryu.lib.packet import packet >>> from ryu.lib.packet import arp >>> a = arp.arp_ip(1, 0, 0, 0, 0) >>> p = packet.Packet() >>> p.protocols = [a] >>> arp.arp in p True >>> a in p True Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/lib/packet/packet.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/ryu/lib/packet/packet.py b/ryu/lib/packet/packet.py
index def580b6..ff06cc3a 100644
--- a/ryu/lib/packet/packet.py
+++ b/ryu/lib/packet/packet.py
@@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import inspect
+
from . import packet_base
from . import ethernet
@@ -109,3 +111,9 @@ class Packet(object):
def __len__(self):
return len(self.protocols)
+
+ def __contains__(self, protocol):
+ if (inspect.isclass(protocol) and
+ issubclass(protocol, packet_base.PacketBase)):
+ return protocol in [p.__class__ for p in self.protocols]
+ return protocol in self.protocols