mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-01-25 18:41:56 +01:00
skip malformed OF messages and continue instead of stopping
Needs to catch more kinds of exceptions (e.g. TypeError). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
16307833b4
commit
4cb7683f2f
@ -164,14 +164,15 @@ class Datapath(object):
|
||||
msg = ofproto_parser.msg(self,
|
||||
version, msg_type, msg_len, xid, buf)
|
||||
#LOG.debug('queue msg %s cls %s', msg, msg.__class__)
|
||||
ev = ofp_event.ofp_msg_to_ev(msg)
|
||||
self.ofp_brick.send_event_to_observers(ev, self.state)
|
||||
if msg:
|
||||
ev = ofp_event.ofp_msg_to_ev(msg)
|
||||
self.ofp_brick.send_event_to_observers(ev, self.state)
|
||||
|
||||
handlers = [handler for handler in
|
||||
self.ofp_brick.get_handlers(ev) if self.state in
|
||||
handler.dispatchers]
|
||||
for handler in handlers:
|
||||
handler(ev)
|
||||
handlers = [handler for handler in
|
||||
self.ofp_brick.get_handlers(ev) if
|
||||
self.state in handler.dispatchers]
|
||||
for handler in handlers:
|
||||
handler(ev)
|
||||
|
||||
buf = buf[required_len:]
|
||||
required_len = ofproto_common.OFP_HEADER_SIZE
|
||||
|
||||
@ -54,13 +54,13 @@ def msg(datapath, version, msg_type, msg_len, xid, buf):
|
||||
|
||||
try:
|
||||
return msg_parser(datapath, version, msg_type, msg_len, xid, buf)
|
||||
except struct.error:
|
||||
except:
|
||||
LOG.exception(
|
||||
'Encounter an error during parsing OpenFlow packet from switch.'
|
||||
'This implies switch sending a malfold OpenFlow packet.'
|
||||
'version 0x%02x msg_type %d msg_len %d xid %d buf %s',
|
||||
version, msg_type, msg_len, xid, utils.bytearray_to_hex(buf))
|
||||
raise
|
||||
return None
|
||||
|
||||
|
||||
def create_list_of_base_attributes(f):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user