diff options
author | Isaku Yamahata <yamahata@valinux.co.jp> | 2013-06-10 15:58:55 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-06-10 07:58:01 -0700 |
commit | 178b1dd2bc0d773dd86eaec0054501ed06be9d70 (patch) | |
tree | aca48deb95e7b0d75185c8f6bdb4e6aba1fcb4c7 | |
parent | a504815b55105fbf6b7605684d78156c0110499c (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.py | 8 |
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 |