summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-09-26 05:08:19 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-09-27 02:43:33 +0900
commita6dce73e3399b5c50a0adf8be8fb77ac69fb5c07 (patch)
tree9a15ad1f5f0a38efbd37864a8d139df031b6bd55
parent239f4c7122f52e1b5622c55686da8b6e4e4ed9f9 (diff)
packet lib: add get_protocol API
get_protocols returns the list of protocols. This is useful for a packet including the same protocol multiple times (e.g. tunneling such GRE). However, it's a rare use case. Instead of 'get_protocols(hoge)[0]', let's do 'get_protocol(hoge)' simply. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/lib/packet/packet.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/ryu/lib/packet/packet.py b/ryu/lib/packet/packet.py
index f21edbe2..0661e9b2 100644
--- a/ryu/lib/packet/packet.py
+++ b/ryu/lib/packet/packet.py
@@ -97,6 +97,15 @@ class Packet(object):
assert issubclass(protocol, packet_base.PacketBase)
return [p for p in self.protocols if isinstance(p, protocol)]
+ def get_protocol(self, protocol):
+ """Returns the firstly found protocol that matches to the
+ specified protocol.
+ """
+ result = self.get_protocols(protocol)
+ if len(result) > 0:
+ return result[0]
+ return None
+
def next(self):
try:
p = self.protocols[self.protocol_idx]