pyloxi: fix of_wc_bmap_t for OF 1.2+
This field changed semantics, so the LOXI type probably should change too.
diff --git a/py_gen/codegen.py b/py_gen/codegen.py
index e552d61..d6d8b32 100644
--- a/py_gen/codegen.py
+++ b/py_gen/codegen.py
@@ -217,4 +217,4 @@
util.render_template(out, 'pp.py')
def generate_util(out, name, version):
- util.render_template(out, 'util.py')
+ util.render_template(out, 'util.py', version=version)
diff --git a/py_gen/oftype.py b/py_gen/oftype.py
index 3717036..3f37f57 100644
--- a/py_gen/oftype.py
+++ b/py_gen/oftype.py
@@ -55,7 +55,15 @@
elif self.base == 'of_ipv6_t':
v = repr('\x00' * 16)
elif self.base == 'of_wc_bmap_t':
- v = 'const.OFPFW_ALL'
+ if self.version in [1,2]:
+ v = 'const.OFPFW_ALL'
+ else:
+ v = 0
+ elif self.base == "of_match_bmap_t":
+ if self.version in [1,2]:
+ v = 'const.OFPFW_ALL'
+ else:
+ v = 0
elif self.base in ['of_octets_t', 'of_port_name_t', 'of_table_name_t',
'of_desc_str_t', 'of_serial_num_t']:
v = '""'
diff --git a/py_gen/templates/_pretty_print.py b/py_gen/templates/_pretty_print.py
index 5709227..86cb237 100644
--- a/py_gen/templates/_pretty_print.py
+++ b/py_gen/templates/_pretty_print.py
@@ -48,7 +48,7 @@
q.text(util.pretty_mac(self.${m.name}))
:: elif m.oftype.base == 'uint32_t' and m.name.startswith("ipv4"):
q.text(util.pretty_ipv4(self.${m.name}))
-:: elif m.oftype.base == 'of_wc_bmap_t':
+:: elif m.oftype.base == 'of_wc_bmap_t' and version in [1,2]:
q.text(util.pretty_wildcards(self.${m.name}))
:: elif m.oftype.base == 'of_port_no_t':
q.text(util.pretty_port(self.${m.name}))
diff --git a/py_gen/templates/util.py b/py_gen/templates/util.py
index f2f7a96..397c184 100644
--- a/py_gen/templates/util.py
+++ b/py_gen/templates/util.py
@@ -52,6 +52,7 @@
set_flags.append("%#x" % v)
return '|'.join(set_flags) or '0'
+:: if version in [1,2]:
def pretty_wildcards(v):
if v == const.OFPFW_ALL:
return 'OFPFW_ALL'
@@ -60,6 +61,7 @@
'OFPFW_NW_SRC_MASK', 'OFPFW_NW_DST_MASK', 'OFPFW_DL_VLAN_PCP',
'OFPFW_NW_TOS']
return pretty_flags(v, flag_names)
+:: #endif
def pretty_port(v):
named_ports = [(k,v2) for (k,v2) in const.__dict__.iteritems() if k.startswith('OFPP_')]
diff --git a/py_gen/tests/of11.py b/py_gen/tests/of11.py
index 2fdec9e..dd76b0d 100644
--- a/py_gen/tests/of11.py
+++ b/py_gen/tests/of11.py
@@ -69,9 +69,7 @@
self.klasses.sort(key=lambda x: str(x))
def test_serialization(self):
- expected_failures = [
- ofp.common.table_stats_entry,
- ]
+ expected_failures = []
for klass in self.klasses:
def fn():
obj = klass()
@@ -85,8 +83,7 @@
fn()
def test_show(self):
- expected_failures = [
- ]
+ expected_failures = []
for klass in self.klasses:
def fn():
obj = klass()
diff --git a/py_gen/tests/of12.py b/py_gen/tests/of12.py
index a176253..b557730 100644
--- a/py_gen/tests/of12.py
+++ b/py_gen/tests/of12.py
@@ -157,9 +157,7 @@
self.klasses.sort(key=lambda x: str(x))
def test_serialization(self):
- expected_failures = [
- ofp.common.table_stats_entry,
- ]
+ expected_failures = []
for klass in self.klasses:
def fn():
obj = klass()
@@ -173,9 +171,7 @@
fn()
def test_show(self):
- expected_failures = [
- ofp.common.table_stats_entry,
- ]
+ expected_failures = []
for klass in self.klasses:
def fn():
obj = klass()