Commit 85e0820d authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch 'pr-p4-fix' into 'develop'

fix(device): avoid conversion to canonical bytes

See merge request !8
parents 82ba0a55 fb997698
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -42,7 +42,8 @@ class GlobalOptions:
    option_helpstrings = {
        Options.canonical_bytestrings: """
Use byte-padded legacy format for binary strings sent to the P4Runtime server,
instead of the canonical representation. See P4Runtime specification for details.
instead of the canonical representation. See P4Runtime specification for
details.
"""
    }

@@ -199,6 +200,7 @@ def make_canonical_if_option_set(bytes_):
    :return: canonical bytes
    """

    if GLOBAL_OPTIONS.get_option(Options.canonical_bytestrings):
        return to_canonical_bytes(bytes_)
    # TODO: Fix canonical representation issue
    # if GLOBAL_OPTIONS.get_option(Options.canonical_bytestrings):
    #     return to_canonical_bytes(bytes_)
    return bytes_
+2 −20
Original line number Diff line number Diff line
@@ -175,9 +175,7 @@ def insert_table_entry_exact(
    try:
        table_entry.insert()
        LOGGER.info("Inserted exact table entry: %s", table_entry)
    except P4RuntimeWriteException as ex:
        ex_msg = str(ex)
    except P4RuntimeException as ex:
    except (P4RuntimeException, P4RuntimeWriteException) as ex:
        raise P4RuntimeException from ex

    # Table entry exists, needs to be modified
@@ -230,9 +228,7 @@ def insert_table_entry_ternary(
    try:
        table_entry.insert()
        LOGGER.info("Inserted ternary table entry: %s", table_entry)
    except P4RuntimeWriteException as ex:
        ex_msg = str(ex)
    except P4RuntimeException as ex:
    except (P4RuntimeException, P4RuntimeWriteException) as ex:
        raise P4RuntimeException from ex

    # Table entry exists, needs to be modified
@@ -893,10 +889,6 @@ class P4Manager:

        # Exact match is supported
        if get_table_type(table) == p4info_pb2.MatchField.EXACT:
            if priority != 0:
                msg = f"Table {table_name} is non-ternary, priority must be 0"
                LOGGER.error(msg)
                raise UserError(msg)
            return insert_table_entry_exact(
                table_name, match_map, action_name, action_params, metadata,
                cnt_pkt, cnt_byte)
@@ -904,10 +896,6 @@ class P4Manager:
        # Ternary and LPM matches are supported
        if get_table_type(table) in \
                [p4info_pb2.MatchField.TERNARY, p4info_pb2.MatchField.LPM]:
            if priority == 0:
                msg = f"Table {table_name} is ternary, priority must be != 0"
                LOGGER.error(msg)
                raise UserError(msg)
            return insert_table_entry_ternary(
                table_name, match_map, action_name, action_params, metadata,
                priority, cnt_pkt, cnt_byte)
@@ -955,12 +943,6 @@ class P4Manager:
        for action_k, action_v in action_params.items():
            table_entry.action[action_k] = action_v

        if get_table_type(table) == p4info_pb2.MatchField.EXACT:
            if priority != 0:
                msg = f"Table {table_name} is non-ternary, priority must be 0"
                LOGGER.error(msg)
                raise UserError(msg)

        if get_table_type(table) in \
                [p4info_pb2.MatchField.TERNARY, p4info_pb2.MatchField.LPM]:
            if priority == 0: