mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-05-08 22:06:10 +02:00
ryu/lib/ofctl_v1_3: port name decoding fix
The patch resolves issue experienced when decoding certain values of name field in OFPMP_PORT_DESCRIPTION body. Non-decodable bytes are replaced with utf-8 replacement character. This issue was observed while retrieving OFPMP_PORT_DESC reply from OpenFlow 1.3 compliant HP switch. One of ofp_struct structures describing OFPP_LOCAL port has a name field with value 4f 46 50 50 5f 4c 4f 43 41 4c 00 81 ff ff ff ff that translates to OFPP_LOCAL....... Attempt to decode the value, as in modified line, raises an exception "UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in position 11: invalid start byte". In the submitted patch, non-decodable characters are replaced with utf-8 REPLACEMENT CHARACTER (U+FFFD), which is sufficient for the get_port_desc method to work seamlessly. Similar usages of str.decode method may be found in ofctl_v1_3, ofctl_v1_4, ofctl_v1_5 and need to be fixed in the future. Signed-off-by: Michal Rzepka <mrzepka@student.agh.edu.pl> Reviewed-by: Iwase Yusuke <iwase.yusuke0@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
6522ea1c83
commit
8d93787a6c
@ -1014,7 +1014,7 @@ def get_port_desc(dp, waiters, to_user=True):
|
||||
stats = msg.body
|
||||
for stat in stats:
|
||||
d = {'hw_addr': stat.hw_addr,
|
||||
'name': stat.name.decode('utf-8'),
|
||||
'name': stat.name.decode('utf-8', errors='replace'),
|
||||
'config': stat.config,
|
||||
'state': stat.state,
|
||||
'curr': stat.curr,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user