The new tables will be used in a later patch as follows:
table=37, OFTABLE_OUTPUT_INIT: becomes an initial entry point into the
egress pipeline that serves a semantic goal. (Not doing any actual
processing at the moment.)
table=38, OFTABLE_OUTPUT_LARGE_PKT_DETECT: detect "too-big" IP packets
and mark them for later processing in table=39.
table=39, OFTABLE_OUTPUT_LARGE_PKT_PROCESS: process "too-big" IP packets
detected in table=38 by sending ICMPv4 Fragmentation Needed / ICMPv6 Too
Big errors back to the originating port.
All previous table indices shifted by 3 (old table=37 becomes table=40).
Otherwise, no changes to existing tables and flows introduced.
Conflicts:
tests/ovn-controller.at
tests/ovn.at
tests/system-ovn-kmod.at
Acked-by: Dumitru Ceara
Signed-off-by: Ihar Hrachyshka
Signed-off-by: Mark Michelson
(cherry picked from commit b17ee2e124a9d0173dc0c5df0996d9ff0532f36e)
This cherry-pick also includes the following patch that fixes test
failure.
test: Fix expected OpenFlow table numbers.
Commit 549e8ccebca7 ("ovn-controller.c: Fix assertion failure during
address set update.") added a new ovn-controller.at test and commit
740f23c19577 ("Add new egress tables to accommodate for too-big packets
handling") went in without updating the expected numbers for that test.
Fixes: 740f23c19577 ("Add new egress tables to accommodate for too-big packets
handling")
Signed-off-by: Dumitru Ceara
Reviewed-By: Ihar Hrachyshka
(cherry picked from commit a5428a8e58dfcd239d9ae05c1adf2fd4605a8a3f)
(cherry picked from commit 84c55880d5b5d87072942c3692e86bbe93b8dd55)
---
controller/lflow.c | 4 +-
controller/lflow.h | 49 ---
controller/physical.c| 77 +++
controller/pinctrl.c | 8 +-
ovn-architecture.7.xml | 71 +-
tests/ovn-controller.at | 180 -
tests/ovn.at | 282 +++
tests/system-ovn-kmod.at | 2 +-
tests/system-ovn.at | 8 +-
9 files changed, 355 insertions(+), 326 deletions(-)
diff --git a/controller/lflow.c b/controller/lflow.c
index 0b071138d..22faaf013 100644
--- a/controller/lflow.c
+++ b/controller/lflow.c
@@ -397,7 +397,7 @@ consider_lflow_for_added_as_ips__(
: OFTABLE_LOG_EGRESS_PIPELINE);
uint8_t ptable = first_ptable + lflow->table_id;
uint8_t output_ptable = (ingress
- ? OFTABLE_REMOTE_OUTPUT
+ ? OFTABLE_OUTPUT_INIT
: OFTABLE_SAVE_INPORT);
uint64_t ovnacts_stub[1024 / 8];
@@ -1067,7 +1067,7 @@ consider_logical_flow__(const struct sbrec_logical_flow
*lflow,
: OFTABLE_LOG_EGRESS_PIPELINE);
uint8_t ptable = first_ptable + lflow->table_id;
uint8_t output_ptable = (ingress
- ? OFTABLE_REMOTE_OUTPUT
+ ? OFTABLE_OUTPUT_INIT
: OFTABLE_SAVE_INPORT);
/* Parse OVN logical actions.
diff --git a/controller/lflow.h b/controller/lflow.h
index dd742257b..b804e61e5 100644
--- a/controller/lflow.h
+++ b/controller/lflow.h
@@ -63,27 +63,34 @@ struct uuid;
*
* These are heavily documented in ovn-architecture(7), please update it if
* you make any changes. */
-#define OFTABLE_PHY_TO_LOG0
-#define OFTABLE_LOG_INGRESS_PIPELINE 8 /* First of LOG_PIPELINE_LEN tables. */
-#define OFTABLE_REMOTE_OUTPUT37
-#define OFTABLE_LOCAL_OUTPUT 38
-#define OFTABLE_CHECK_LOOPBACK 39
-#define OFTABLE_LOG_EGRESS_PIPELINE 40 /* First of LOG_PIPELINE_LEN tables. */
-#define OFTABLE_SAVE_INPORT 64
-#define OFTABLE_LOG_TO_PHY 65
-#define OFTABLE_MAC_BINDING 66
-#define OFTABLE_MAC_LOOKUP 67
-#define OFTABLE_CHK_LB_HAIRPIN 68
-#define OFTABLE_CHK_LB_HAIRPIN_REPLY 69
-#define OFTABLE_CT_SNAT_HAIRPIN 70
-#define OFTABLE_GET_FDB 71
-#define OFTABLE_LOOKUP_FDB 72
-#define OFTABLE_CHK_IN_PORT_SEC 73
-#define OFTABLE_CHK_IN_PORT_SEC_ND 74
-#define OFTABLE_CHK_OUT_PORT_SEC 75
-#define OFTABLE_ECMP_NH_MAC 76
-#define OFTABLE_ECMP_NH 77
-#define OFTABLE_CHK_LB_AFFINITY 78
+#define OFTABLE_PHY_TO_LOG0
+
+/* Start of LOG_PIPELINE_LEN tables. */
+#define OFTABLE_LOG_INGRESS_PIPELINE 8
+#define OFTABLE_OUTPUT_INIT 37
+#define OFTABLE_OUTPUT_LARGE_PKT_DETECT 38
+#define OFTABLE_OUTPUT_LARGE_PKT_PROCESS 39
+#define OFTABLE_REMOTE_OUTPUT40
+#define OFTABLE_LOCAL_OUTPUT 41
+#define OFTABLE_CHECK_LOOPBACK 42
+
+/* Start of LOG_PIPELINE_LEN tables. */
+#define OFTABLE_LOG_EGRESS_PIPELINE 43
+#define OFTABLE_SAVE_INPORT 64
+#define OFTABLE_LOG_TO_PHY 65
+#define OFTABLE_MAC_BINDING 66
+#define OFTABLE_MAC_LOOKUP 67
+#define OFTABLE_CHK_LB_HAIRPIN 68
+