In some cases, the names of tunnel protocols are longer than the maximum allowed after concatenating port numbers. This truncates names to the correct size rather than assert-failing on the assumption that collisions between names of protocols are rather rate.
Signed-off-by: Jesse Gross <je...@nicira.com> --- lib/netdev-vport.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c index c214bf7..4dca091 100644 --- a/lib/netdev-vport.c +++ b/lib/netdev-vport.c @@ -151,14 +151,12 @@ netdev_vport_get_dpif_port(const struct netdev *netdev, const char *type = netdev_get_type(netdev); /* - * Note: IFNAMSIZ is 16 bytes long. The maximum length of a VXLAN - * or LISP port name below is 15 or 14 bytes respectively. Still, - * assert here on the size of strlen(type) in case that changes - * in the future. + * Note: IFNAMSIZ is 16 bytes long. If the length of the type plus + * the rest of the name is greater than this, trucate the type to + * fit. The probability of collisions seems quite low. */ BUILD_ASSERT(NETDEV_VPORT_NAME_BUFSIZE >= IFNAMSIZ); - ovs_assert(strlen(type) + 10 < IFNAMSIZ); - snprintf(namebuf, bufsize, "%s_sys_%d", type, + snprintf(namebuf, bufsize, "%.5s_sys_%d", type, ntohs(vport->tnl_cfg.dst_port)); return namebuf; } else { -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev