[ovs-dev] [PATCH 2/6] Modify dpif_linux_port_add() to set the destination port for VXLAN ports.

Kyle Mestery kmestery at cisco.com
Thu Feb 14 14:37:26 UTC 2013


Signed-off-by: Kyle Mestery <kmestery at cisco.com>
Acked-by: Ethan Jackson <ethan at nicira.com>
---
 lib/dpif-linux.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c
index b6eba39..34b9532 100644
--- a/lib/dpif-linux.c
+++ b/lib/dpif-linux.c
@@ -482,12 +482,14 @@ dpif_linux_port_add(struct dpif *dpif_, struct netdev *netdev,
                     uint32_t *port_nop)
 {
     struct dpif_linux *dpif = dpif_linux_cast(dpif_);
+    const struct netdev_tunnel_config *tnl_cfg;
     const char *name = netdev_vport_get_dpif_port(netdev);
     const char *type = netdev_get_type(netdev);
     struct dpif_linux_vport request, reply;
     struct nl_sock *sock = NULL;
     uint32_t upcall_pid;
     struct ofpbuf *buf;
+    struct ofpbuf options;
     int error;
 
     if (dpif->epoll_fd >= 0) {
@@ -514,6 +516,15 @@ dpif_linux_port_add(struct dpif *dpif_, struct netdev *netdev,
         netdev_linux_ethtool_set_flag(netdev, ETH_FLAG_LRO, "LRO", false);
     }
 
+    tnl_cfg = netdev_get_tunnel_config(netdev);
+    if (tnl_cfg && tnl_cfg->dst_port != 0) {
+        ofpbuf_init(&options, 64);
+        nl_msg_put_u16(&options, OVS_TUNNEL_ATTR_DST_PORT,
+                       htons(tnl_cfg->dst_port));
+        request.options = options.data;
+        request.options_len = options.size;
+    }
+
     request.port_no = *port_nop;
     upcall_pid = sock ? nl_sock_pid(sock) : 0;
     request.upcall_pid = &upcall_pid;
-- 
1.8.1




More information about the dev mailing list