Skip to content
This repository was archived by the owner on Apr 22, 2024. It is now read-only.

Commit 0a04446

Browse files
authored
Merge pull request #537 from viniarck/of13_support_errcodes_updated
Added support for OpenFlow 1.3 OFP_ERROR codes with the get_class method
2 parents 8250e1a + 355196c commit 0a04446

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

CHANGELOG.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ Security
2828
Added
2929
=====
3030
- [v0x04] Fixed bug when unpacking MultiPart messages (#529). Thanks @jondef95
31+
- [v0x04] Added support for for OpenFlow 1.3 OFP_ERROR codes with the get_class method
32+
- [v0x01 | v0x04] Added GenericFailedCode error PR #533
3133

3234
[2018.2b1] - "ernesto" beta1 - 2018-9-6
3335
***************************************

pyof/v0x01/asynchronous/error_msg.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
__all__ = ('ErrorMsg', 'ErrorType', 'BadActionCode', 'BadRequestCode',
1313
'FlowModFailedCode', 'HelloFailedCode', 'PortModFailedCode',
14-
'QueueOpFailedCode')
14+
'QueueOpFailedCode', 'GenericFailedCode')
1515

1616

1717
# Enums
@@ -49,7 +49,17 @@ def get_class(self):
4949
'OFPET_FLOW_MOD_FAILED': FlowModFailedCode,
5050
'OFPET_PORT_MOD_FAILED': PortModFailedCode,
5151
'OFPET_QUEUE_OP_FAILED': QueueOpFailedCode}
52-
return classes[self.name]
52+
return classes.get(self.name, GenericFailedCode)
53+
54+
55+
class GenericFailedCode(IntEnum):
56+
"""Error_msg 'code' values for OFPET_BAD_ACTION.
57+
58+
'data' contains at least the first 64 bytes of the failed request.
59+
"""
60+
61+
#: Unknown error
62+
GENERIC_ERROR = 0
5363

5464

5565
class HelloFailedCode(IntEnum):

pyof/v0x04/asynchronous/error_msg.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,22 @@
1515
'FlowModFailedCode', 'GroupModFailedCode', 'HelloFailedCode',
1616
'MeterModFailedCode', 'PortModFailedCode', 'QueueOpFailedCode',
1717
'RoleRequestFailedCode', 'SwitchConfigFailedCode',
18-
'TableFeaturesFailedCode', 'TableModFailedCode')
18+
'TableFeaturesFailedCode', 'TableModFailedCode',
19+
'GenericFailedCode')
1920

2021
# Enums
2122

2223

24+
class GenericFailedCode(IntEnum):
25+
"""Error_msg 'code' values for OFPET_BAD_ACTION.
26+
27+
'data' contains at least the first 64 bytes of the failed request.
28+
"""
29+
30+
#: Unknown error
31+
GENERIC_ERROR = 0
32+
33+
2334
class BadActionCode(IntEnum):
2435
"""Error_msg 'code' values for OFPET_BAD_ACTION.
2536
@@ -218,7 +229,7 @@ def get_class(self):
218229
'OFPET_METER_MOD_FAILED': MeterModFailedCode,
219230
'OFPET_TABLE_MOD_FAILED': TableModFailedCode,
220231
'OFPET_TABLE_FEATURES_FAILED': TableFeaturesFailedCode}
221-
return classes[self.name]
232+
return classes.get(self.name, GenericFailedCode)
222233

223234

224235
class FlowModFailedCode(IntEnum):

0 commit comments

Comments
 (0)