On 2/9/26 4:19 PM, Eli Britstein wrote:
> A linux interface is limited to IFNAMSIZ length (16). In case a tap
> interface is created, add a validity check for it.

Hi, Eli.

OpenFlow and Linux have the same limit for the port name.
How is it possible to create a port that is larger?

> 
> Signed-off-by: Eli Britstein <[email protected]>
> ---
>  lib/netdev-linux.c |  7 +++++++
>  tests/ovs-ofctl.at | 21 +--------------------
>  2 files changed, 8 insertions(+), 20 deletions(-)
> 
> diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
> index f4d2685a2..32222b683 100644
> --- a/lib/netdev-linux.c
> +++ b/lib/netdev-linux.c
> @@ -962,6 +962,13 @@ netdev_linux_common_construct(struct netdev *netdev_)
>                       name);
>          return EINVAL;
>      }
> +    if (strlen(name) >= IFNAMSIZ) {
> +        static struct vlog_rate_limit rll = VLOG_RATE_LIMIT_INIT(1, 1);
> +
> +        VLOG_WARN_RL(&rll, "%s: Linux forbids network device with this name "
> +                     "(too long)", name);
> +        return ENAMETOOLONG;
> +    }
>  
>      /* The device could be in the same network namespace or in another one. 
> */
>      netnsid_unset(&netdev->netnsid);
> diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at
> index 751a934e4..871bdcc19 100644
> --- a/tests/ovs-ofctl.at
> +++ b/tests/ovs-ofctl.at
> @@ -3105,33 +3105,14 @@ AT_KEYWORDS([port names])
>  OVS_VSWITCHD_START([\
>      -- add-port br0 xyzzy -- set Interface xyzzy type=dummy -- \
>      -- add-port br0 x-y -- set Interface x-y type=dummy -- \
> -    -- add-port br0 abc123 -- set Interface abc123 type=dummy -- \
> -    -- add-port br0 reallyverylongportname -- set Interface 
> reallyverylongportname type=dummy -- \
> -    -- add-port br0 conflictinglongportname1 -- set Interface 
> conflictinglongportname1 type=dummy -- \
> -    -- add-port br0 conflictinglongportname2 -- set Interface 
> conflictinglongportname2 type=dummy])
> +    -- add-port br0 abc123 -- set Interface abc123 type=dummy])
>  
>  # These plain port names should be accepted.
>  AT_CHECK([ovs-ofctl add-flow br0 in_port=xyzzy,actions=x-y,abc123])
>  
> -# reallyverylongportname is accepted truncated, but not in full.
> -AT_CHECK([ovs-ofctl add-flow br0 in_port=reallyverylongp,actions=drop])
> -AT_CHECK([ovs-ofctl add-flow br0 
> in_port=reallyverylongportname,actions=drop],
> -  [1], [], [ovs-ofctl: reallyverylongportname: invalid or unknown port for 
> in_port
> -])
> -
> -# conflictinglongportname1 and 2 can't be accepted even truncated, since
> -# they conflict when truncated.
> -AT_CHECK([ovs-ofctl add-flow br0 
> in_port=conflictinglongportname1,actions=drop], [1], [], [ovs-ofctl: 
> conflictinglongportname1: invalid or unknown port for in_port
> -])
> -AT_CHECK([ovs-ofctl add-flow br0 
> in_port=conflictinglongportname2,actions=drop], [1], [], [ovs-ofctl: 
> conflictinglongportname2: invalid or unknown port for in_port
> -])
> -AT_CHECK([ovs-ofctl add-flow br0 in_port=conflictinglong,actions=drop], [1], 
> [], [ovs-ofctl: conflictinglong: invalid or unknown port for in_port
> -])
> -
>  # Show that the port names get displayed properly and that port names that
>  # aren't alphanumeric get quoted.
>  AT_CHECK([ovs-ofctl --names dump-flows br0 | ofctl_strip | sort], [0], [dnl
> - in_port=reallyverylongp actions=drop
>   in_port=xyzzy actions=output:"x-y",output:abc123
>  ])
>  OVS_VSWITCHD_STOP

This test seems completely valid to me.  It should stay as is.

Best regards, Ilya Maximets.

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

Reply via email to