+ if (netdev_vport_needs_dst_port(dev)) {
+ const struct netdev_dev_vport *vport = netdev_vport_get_dev(netdev);
+ const char *type = netdev_dev_get_type(dev);
+ static char dpif_port_combined[IFNAMSIZ];
+
+ /*
+ * 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.
+ */
+ ovs_assert(strlen(type) + 10 < IFNAMSIZ);
+ snprintf(dpif_port_combined, IFNAMSIZ, "%s_sys_%d", type,
+ ntohs(vport->tnl_cfg.dst_port));
+ return dpif_port_combined;
+ } else {
+ dpif_port = (is_vport_class(class)
+ ? vport_class_cast(class)->dpif_port
+ : NULL);
+ }
+