From: "zhouyuhao.philozhou" <[email protected]>

Because when check whether the new and old name are the same, only
compare the length of the new name.

Case:
  table 10: "good"
  There will be no change if mod the table's name with "g" "go" "goo".

Signed-off-by: zhouyuhao.philozhou <[email protected]>
---
 ofproto/ofproto.c |  4 +++-
 tests/ofproto.at  | 12 ++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 122a06f30..bf7ed91b1 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -9293,7 +9293,9 @@ oftable_set_name(struct oftable *table, const char *name, 
int level)
     if (level >= table->name_level) {
         if (name) {
             if (name[0]) {
-                if (!table->name || strncmp(name, table->name, len)) {
+                if (!table->name
+                    || strncmp(name, table->name, len)
+                    || len != strlen(table->name)) {
                     free(table->name);
                     table->name = xmemdup0(name, len);
                 }
diff --git a/tests/ofproto.at b/tests/ofproto.at
index 2889f81fb..b68881a27 100644
--- a/tests/ofproto.at
+++ b/tests/ofproto.at
@@ -2418,6 +2418,18 @@ AT_CHECK([ovs-ofctl -O OpenFlow15 dump-table-features 
br0 |grep '^  table'],
   table 253:
 ])
 
+# Make sure that the new name is old table's name prefix can also take effect.
+AT_CHECK([ovs-ofctl -O OpenFlow13 mod-table br0 3 name:thr])
+AT_CHECK([ovs-ofctl -O OpenFlow15 dump-table-features br0 |grep '^  table'],
+  [0], [dnl
+  table 0 ("zero"):
+  table 1 ("one"): ditto
+  table 2: ditto
+  table 3 ("thr"): ditto
+  tables 4...252: ditto
+  table 253:
+])
+
 # Set some table names via OVSDB.
 AT_CHECK(
   [ovs-vsctl \
-- 
2.39.3 (Apple Git-146)

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to