Hi, Ilya Maximets.
    I sincerely apologize. I attempted to submit the patch within the 
original email thread by executing the command:git send-email --to 
[email protected] --cc [email protected] 
--in-reply-to="<[email protected]&gt;" 
--subject-prefix="ovs-dev] [PATCH v6" 
v6-0001-bridge-Check-controller-parameters.patch
&nbsp; &nbsp; However, after submission, I noticed on Patchwork that it still 
created a new patch entry instead of associating with the original thread. As I 
have no prior experience submitting patches to open-source communities, I 
apologize for any inconvenience caused.


Best&nbsp;regards,&nbsp;Lingfei&nbsp;Yao.


屋顶上睡觉的猫
[email protected]



        



         原始邮件
         
       
发件人:Ilya Maximets <[email protected]&gt;
发件时间:2025年9月3日 20:29
收件人:屋顶上睡觉的猫 <[email protected]&gt;, dev <[email protected]&gt;
抄送:i.maximets <[email protected]&gt;
主题:Re: 回复: [ovs-dev] [PATCH v5] ovs-vsctl: Check controller parameters.



       On&nbsp;8/27/25&nbsp;5:38&nbsp;AM,&nbsp;屋顶上睡觉的猫&nbsp;wrote:
&gt;&nbsp;Hi,&nbsp;Ilya&nbsp;Maximets.
&gt;&nbsp;
&gt;&nbsp;Thank&nbsp;you&nbsp;for&nbsp;taking&nbsp;the&nbsp;time&nbsp;to&nbsp;review&nbsp;my&nbsp;patch,&nbsp;and&nbsp;I&nbsp;truly&nbsp;admire&nbsp;your
&gt;&nbsp;dedication&nbsp;to&nbsp;the&nbsp;OVS&nbsp;community.
&gt;&nbsp;
&gt;&nbsp;If&nbsp;duplicate&nbsp;controller&nbsp;parameters&nbsp;are&nbsp;set,&nbsp;OVS&nbsp;should&nbsp;establish&nbsp;multiple
&gt;&nbsp;connections&nbsp;with&nbsp;the&nbsp;controller.&nbsp;If&nbsp;the&nbsp;controller&nbsp;does&nbsp;not&nbsp;perform&nbsp;relevant
&gt;&nbsp;verification,&nbsp;it&nbsp;may&nbsp;send&nbsp;flows&nbsp;to&nbsp;the&nbsp;same&nbsp;OVS.&nbsp;It&nbsp;may&nbsp;cause&nbsp;some&nbsp;abnormalities.
&gt;&nbsp;Our&nbsp;operations&nbsp;colleagues&nbsp;configure&nbsp;OVS&nbsp;deployment&nbsp;through&nbsp;the&nbsp;command&nbsp;line.
&gt;&nbsp;The&nbsp;frequency&nbsp;is&nbsp;relatively&nbsp;low,&nbsp;but&nbsp;this&nbsp;situation&nbsp;has&nbsp;occurred&nbsp;several&nbsp;times.
&gt;&nbsp;All&nbsp;caused&nbsp;by&nbsp;misoperation
&gt;&nbsp;
&gt;&nbsp;There&nbsp;are&nbsp;mainly&nbsp;the&nbsp;following&nbsp;reasons&nbsp;for&nbsp;implementing&nbsp;this&nbsp;function&nbsp;in&nbsp;the
&gt;&nbsp;ovs-vsctl&nbsp;module:
&gt;&nbsp;1.fix&nbsp;this&nbsp;on&nbsp;the&nbsp;OVSDB&nbsp;side&nbsp;is&nbsp;indeed&nbsp;more&nbsp;comprehensive;&nbsp;however,&nbsp;fix&nbsp;this
&gt;&nbsp;&nbsp;&nbsp;on&nbsp;the&nbsp;ovs-vsctl&nbsp;side&nbsp;eliminates&nbsp;the&nbsp;need&nbsp;for&nbsp;database&nbsp;access,&nbsp;making&nbsp;it
&gt;&nbsp;&nbsp;&nbsp;faster&nbsp;and&nbsp;more&nbsp;lightweight&nbsp;in&nbsp;terms&nbsp;of&nbsp;overhead.
&gt;&nbsp;2.For&nbsp;more&nbsp;manual&nbsp;operations,&nbsp;the&nbsp;command&nbsp;line&nbsp;is&nbsp;often&nbsp;chosen&nbsp;for&nbsp;configuration,
&gt;&nbsp;&nbsp;&nbsp;which&nbsp;leads&nbsp;to&nbsp;a&nbsp;higher&nbsp;probability&nbsp;of&nbsp;misoperations.&nbsp;Direct&nbsp;access&nbsp;to&nbsp;the
&gt;&nbsp;&nbsp;&nbsp;OVSDB&nbsp;database&nbsp;is&nbsp;generally&nbsp;implemented&nbsp;through&nbsp;interface&nbsp;calls&nbsp;between
&gt;&nbsp;&nbsp;&nbsp;functional&nbsp;modules,&nbsp;so&nbsp;the&nbsp;probability&nbsp;of&nbsp;duplicate&nbsp;parameters&nbsp;should&nbsp;be
&gt;&nbsp;&nbsp;&nbsp;relatively&nbsp;low.
&gt;&nbsp;
&gt;&nbsp;I&nbsp;understand&nbsp;that&nbsp;this&nbsp;implementation&nbsp;has&nbsp;its&nbsp;advantages,&nbsp;and&nbsp;at&nbsp;the&nbsp;very&nbsp;least,
&gt;&nbsp;it&nbsp;has&nbsp;no&nbsp;negative&nbsp;effects.&nbsp;Additionally,&nbsp;sufficient&nbsp;testing&nbsp;has&nbsp;been&nbsp;conducted.

So&nbsp;I&nbsp;looked&nbsp;again&nbsp;and&nbsp;we&nbsp;can't&nbsp;really&nbsp;check&nbsp;that&nbsp;from&nbsp;the&nbsp;database&nbsp;side,
because&nbsp;we&nbsp;want&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;configure&nbsp;the&nbsp;same&nbsp;controller&nbsp;with&nbsp;different
parameters&nbsp;for&nbsp;different&nbsp;bridges.&nbsp;&nbsp;Database&nbsp;schema&nbsp;will&nbsp;not&nbsp;allow&nbsp;us&nbsp;to
create&nbsp;a&nbsp;restriction&nbsp;like&nbsp;this.&nbsp;&nbsp;So,&nbsp;instead&nbsp;ovs-vswitchd&nbsp;should&nbsp;be&nbsp;doing
the&nbsp;check.&nbsp;&nbsp;This&nbsp;can&nbsp;be&nbsp;done&nbsp;by&nbsp;looking&nbsp;up&nbsp;the&nbsp;entry&nbsp;in&nbsp;the&nbsp;'ocs'&nbsp;shash&nbsp;in
bridge_configure_remotes()&nbsp;in&nbsp;vswitchd/bridge.c&nbsp;before&nbsp;adding&nbsp;the&nbsp;new&nbsp;one,
and&nbsp;printing&nbsp;a&nbsp;warning&nbsp;in&nbsp;the&nbsp;log.

&gt;&nbsp;Is&nbsp;it&nbsp;possible&nbsp;to&nbsp;merge&nbsp;this&nbsp;patch&nbsp;first,&nbsp;and&nbsp;I&nbsp;will&nbsp;figure&nbsp;out&nbsp;how&nbsp;to&nbsp;fix&nbsp;this
&gt;&nbsp;on&nbsp;the&nbsp;database&nbsp;side&nbsp;later?

This&nbsp;isn't&nbsp;really&nbsp;a&nbsp;bug&nbsp;fix,&nbsp;just&nbsp;an&nbsp;enhancement,&nbsp;and&nbsp;the&nbsp;next&nbsp;OVS&nbsp;release
is&nbsp;in&nbsp;February,&nbsp;so&nbsp;there&nbsp;is&nbsp;plenty&nbsp;of&nbsp;time&nbsp;to&nbsp;make&nbsp;the&nbsp;better&nbsp;change&nbsp;from
the&nbsp;beginning.

See&nbsp;also&nbsp;a&nbsp;couple&nbsp;of&nbsp;small&nbsp;comments&nbsp;for&nbsp;the&nbsp;patch,&nbsp;to&nbsp;avoid&nbsp;them&nbsp;in&nbsp;future
submissions.

Also,&nbsp;please,&nbsp;try&nbsp;to&nbsp;reply&nbsp;to&nbsp;the&nbsp;original&nbsp;thread&nbsp;instead&nbsp;of&nbsp;writing&nbsp;a&nbsp;new
email.&nbsp;&nbsp;This&nbsp;one&nbsp;was&nbsp;not&nbsp;a&nbsp;reply&nbsp;to&nbsp;my&nbsp;previous&nbsp;email,&nbsp;i.e.&nbsp;it&nbsp;doesn't
have&nbsp;In-Reply-To&nbsp;or&nbsp;References&nbsp;headers.&nbsp;&nbsp;This&nbsp;breaks&nbsp;tracking&nbsp;in&nbsp;patchwork
and&nbsp;mail&nbsp;clients&nbsp;in&nbsp;general.

Best&nbsp;regards,&nbsp;Ilya&nbsp;Maximets.

&gt;&nbsp;
&gt; Best&nbsp;regards,&nbsp;Lingfei&nbsp;Yao.
&gt;&nbsp;
&gt;&nbsp;
&gt;&nbsp;------------------&nbsp;原始邮件&nbsp;------------------
&gt;&nbsp;*发件人:*&nbsp;"Ilya&nbsp;Maximets"&nbsp;<[email protected]&gt;;
&gt;&nbsp;*发送时间:*&nbsp;2025年8月27日(星期三)&nbsp;凌晨4:18
&gt;&nbsp;*收件人:*&nbsp;"屋顶上睡觉的猫"<[email protected]&gt;;"dev"<[email protected]&gt;;
&gt;&nbsp;*抄送:*&nbsp;"i.maximets"<[email protected]&gt;;
&gt;&nbsp;*主题:*&nbsp;Re:&nbsp;[ovs-dev]&nbsp;[PATCH&nbsp;v5]&nbsp;ovs-vsctl:&nbsp;Check&nbsp;controller&nbsp;parameters.
&gt;&nbsp;
&gt;&nbsp;On&nbsp;8/19/25&nbsp;9:41&nbsp;AM,&nbsp;yaolingfei&nbsp;via&nbsp;dev&nbsp;wrote:
&gt;&gt;&nbsp;Check&nbsp;the&nbsp;parameters&nbsp;when&nbsp;setting&nbsp;up&nbsp;the&nbsp;controller.&nbsp;The&nbsp;parameters&nbsp;will
&gt;&gt;&nbsp;only&nbsp;take&nbsp;effect&nbsp;when&nbsp;none&nbsp;of&nbsp;the&nbsp;following&nbsp;three&nbsp;parameters&nbsp;are
&gt;&gt;&nbsp;repeated;&nbsp;Otherwise,&nbsp;a&nbsp;prompt&nbsp;message&nbsp;will&nbsp;be&nbsp;returned
&gt;&gt;&nbsp;1.ip&nbsp;address
&gt;&gt;&nbsp;2.port&nbsp;no
&gt;&gt;&nbsp;3.protocol&nbsp;type
&gt;&gt;
&gt;&gt;&nbsp;v5:&nbsp;modified&nbsp;the&nbsp;subject&nbsp;summary
&gt;&gt;
&gt;&gt;&nbsp;Signed-off-by:&nbsp;yaolingfei&nbsp;<[email protected]&gt;

The&nbsp;signed-off&nbsp;should&nbsp;generally&nbsp;be&nbsp;in&nbsp;'Firstname&nbsp;Lastname&nbsp;<email&gt;'&nbsp;format
if&nbsp;possible&nbsp;(and&nbsp;it&nbsp;should&nbsp;still&nbsp;match&nbsp;the&nbsp;commit&nbsp;author&nbsp;field).

&gt;&gt;&nbsp;---
&gt;&nbsp;
&gt;&nbsp;Hi,&nbsp;yaolingfei.&nbsp;&nbsp;Thanks&nbsp;for&nbsp;the&nbsp;patch.
&gt;&nbsp;
&gt;&nbsp;Could&nbsp;you,&nbsp;please,&nbsp;explain&nbsp;why&nbsp;this&nbsp;problem&nbsp;needs&nbsp;to&nbsp;be&nbsp;fixed?
&gt;&nbsp;Is&nbsp;it&nbsp;a&nbsp;common&nbsp;issue&nbsp;that&nbsp;users&nbsp;duplicate&nbsp;controllers&nbsp;on&nbsp;the&nbsp;command&nbsp;line?
&gt;&nbsp;Sounds&nbsp;a&nbsp;little&nbsp;unlikely.&nbsp;&nbsp;If&nbsp;it&nbsp;is,&nbsp;maybe&nbsp;we&nbsp;need&nbsp;to&nbsp;fix&nbsp;this&nbsp;on&nbsp;the
&gt;&nbsp;database&nbsp;side,&nbsp;e.g.&nbsp;by&nbsp;making&nbsp;the&nbsp;controller&nbsp;table&nbsp;indexed&nbsp;by&nbsp;the&nbsp;target.
&gt;&nbsp;If&nbsp;we&nbsp;just&nbsp;check&nbsp;on&nbsp;the&nbsp;command&nbsp;line&nbsp;level,&nbsp;users&nbsp;can&nbsp;still&nbsp;put&nbsp;duplicates
&gt;&nbsp;into&nbsp;the&nbsp;database.
&gt;&nbsp;
&gt;&nbsp;Best&nbsp;regards,&nbsp;Ilya&nbsp;Maximets.
&gt;&nbsp;
&gt;&nbsp;
&gt;&gt;&nbsp;&nbsp;tests/ovs-vsctl.at&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;4&nbsp;++++
&gt;&gt;&nbsp;&nbsp;utilities/ovs-vsctl.c&nbsp;|&nbsp;26&nbsp;+++++++++++++++++++++++++-
&gt;&gt;&nbsp;&nbsp;2&nbsp;files&nbsp;changed,&nbsp;29&nbsp;insertions(+),&nbsp;1&nbsp;deletion(-)
&gt;&gt;
&gt;&gt;&nbsp;diff&nbsp;--git&nbsp;a/tests/ovs-vsctl.at&nbsp;b/tests/ovs-vsctl.at
&gt;&gt;&nbsp;index&nbsp;59245fff8..76fe74414&nbsp;100644
&gt;&gt;&nbsp;---&nbsp;a/tests/ovs-vsctl.at
&gt;&gt;&nbsp;+++&nbsp;b/tests/ovs-vsctl.at
&gt;&gt;&nbsp;@@&nbsp;-492,6&nbsp;+492,8&nbsp;@@&nbsp;AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;[get-controller&nbsp;br0],
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;[--inactivity-probe=30000&nbsp;set-controller&nbsp;br0&nbsp;tcp:1.2.3.4],
&gt;&gt;&nbsp;+&nbsp;&nbsp;[get-controller&nbsp;br0],
&gt;&gt;&nbsp;+&nbsp;&nbsp;[set-controller&nbsp;br0&nbsp;tcp:8.9.10.11&nbsp;tcp:8.9.10.11],
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;[get-controller&nbsp;br0])],&nbsp;[0],&nbsp;[
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;@@&nbsp;-501,6&nbsp;+503,8&nbsp;@@&nbsp;tcp:4.5.6.7
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;&nbsp;tcp:5.4.3.2\ntcp:8.9.10.11
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;+tcp:1.2.3.4
&gt;&gt;&nbsp;+Controller&nbsp;parameter&nbsp;is&nbsp;duplicated
&gt;&gt;&nbsp;&nbsp;tcp:1.2.3.4
&gt;&gt;&nbsp;&nbsp;])
&gt;&gt;&nbsp;&nbsp;OVS_VSCTL_CLEANUP
&gt;&gt;&nbsp;diff&nbsp;--git&nbsp;a/utilities/ovs-vsctl.c&nbsp;b/utilities/ovs-vsctl.c
&gt;&gt;&nbsp;index&nbsp;d90db934b..f39952d72&nbsp;100644
&gt;&gt;&nbsp;---&nbsp;a/utilities/ovs-vsctl.c
&gt;&gt;&nbsp;+++&nbsp;b/utilities/ovs-vsctl.c
&gt;&gt;&nbsp;@@&nbsp;-2348,6&nbsp;+2348,24&nbsp;@@&nbsp;insert_controllers(struct&nbsp;ctl_context&nbsp;*ctx,&nbsp;char&nbsp;*targets[],&nbsp;size_t&nbsp;n)
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;controllers;
&gt;&gt;&nbsp;&nbsp;}
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;+static&nbsp;int
&gt;&gt;&nbsp;+check_dup_controllers(char&nbsp;*targets[],&nbsp;size_t&nbsp;n)
&gt;&gt;&nbsp;+{
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;i;
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;j;
&gt;&gt;&nbsp;+
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;check&nbsp;if&nbsp;the&nbsp;input&nbsp;parameters&nbsp;are&nbsp;duplicated&nbsp;*/

Comments&nbsp;should&nbsp;start&nbsp;with&nbsp;a&nbsp;capital&nbsp;letter&nbsp;and&nbsp;end&nbsp;with&nbsp;a&nbsp;period.
See&nbsp;the&nbsp;coding&nbsp;style&nbsp;guide.

&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;n;&nbsp;i++)&nbsp;{
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;i&nbsp;+&nbsp;1;&nbsp;j&nbsp;<&nbsp;n;&nbsp;j++)&nbsp;{
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!strcmp(targets[i],&nbsp;targets[j]))&nbsp;{
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;+
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;
&gt;&gt;&nbsp;+}
&gt;&gt;&nbsp;+
&gt;&gt;&nbsp;&nbsp;static&nbsp;void
&gt;&gt;&nbsp;&nbsp;cmd_set_controller(struct&nbsp;ctl_context&nbsp;*ctx)
&gt;&gt;&nbsp;&nbsp;{
&gt;&gt;&nbsp;@@&nbsp;-2361,9&nbsp;+2379,15&nbsp;@@&nbsp;cmd_set_controller(struct&nbsp;ctl_context&nbsp;*ctx)
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;br&nbsp;=&nbsp;find_real_bridge(vsctl_ctx,&nbsp;ctx-&gt;argv[1],&nbsp;true)-&gt;br_cfg;
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verify_controllers(br);
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;ctx-&gt;argc&nbsp;-&nbsp;2;
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!check_dup_controllers(&amp;ctx-&gt;argv[2],&nbsp;n))&nbsp;{
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;controller&nbsp;parameters&nbsp;are&nbsp;duplicated&nbsp;*/
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds_put_format(&amp;ctx-&gt;output,&nbsp;"Controller&nbsp;parameter&nbsp;is&nbsp;duplicated\n");
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
&gt;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;+
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete_controllers(br-&gt;controller,&nbsp;br-&gt;n_controller);
&gt;&gt;&nbsp;
&gt;&gt;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;ctx-&gt;argc&nbsp;-&nbsp;2;
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controllers&nbsp;=&nbsp;insert_controllers(ctx,&nbsp;&amp;ctx-&gt;argv[2],&nbsp;n);
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ovsrec_bridge_set_controller(br,&nbsp;controllers,&nbsp;n);
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(controllers);
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to