VCL-LDPRELOAD: fix iperf3 socket_test.sh
[vpp.git] / extras / vcl-ldpreload / src / libvcl-ldpreload / vcom_socket.c
index 1686c4f..96108af 100644 (file)
@@ -1256,24 +1256,17 @@ vcom_socket_bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     }
 
   rv = vppcom_session_bind (vsock->sid, &ep);
-  /* TBD: remove libc_bind code snippet
-   * once vppcom implements vppcom_session_getsockname */
-  if (rv == 0)
-    {
-      rv = libc_bind (__fd, __addr, __len);
-      if (rv != 0)
-       {
-         rv = -errno;
-       }
-    }
   return rv;
 }
 
 int
 vppcom_session_getsockname (int sid, vppcom_endpt_t * ep)
 {
-  /* TBD: move it to vppcom */
-  return 0;
+  int rv;
+  uint32_t size = sizeof (*ep);
+
+  rv = vppcom_session_attr (sid, VPPCOM_ATTR_GET_LCL_ADDR, ep, &size);
+  return rv;
 }
 
 int
@@ -1305,18 +1298,6 @@ vcom_socket_getsockname (int __fd, __SOCKADDR_ARG __addr,
       return -EINVAL;
     }
 
-  /* TBD: remove libc_getsockname code snippet
-   * once vppcom implements vppcom_session_getsockname */
-  rv = libc_getsockname (__fd, __addr, __len);
-  if (rv != 0)
-    {
-      rv = -errno;
-      return rv;
-    }
-
-  /* TBD: use the below code snippet when vppcom
-   * implements vppcom_session_getsockname */
-#if 0
   vppcom_endpt_t ep;
   ep.ip = (u8 *) & ((const struct sockaddr_in *) __addr)->sin_addr;
   rv = vppcom_session_getsockname (vsock->sid, &ep);
@@ -1342,7 +1323,6 @@ vcom_socket_getsockname (int __fd, __SOCKADDR_ARG __addr,
            }
        }
     }
-#endif
 
   return rv;
 }
@@ -1394,8 +1374,11 @@ vcom_socket_connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
 int
 vppcom_session_getpeername (int sid, vppcom_endpt_t * ep)
 {
-  /* TBD: move it to vppcom */
-  return 0;
+  int rv;
+  uint32_t size = sizeof (*ep);
+
+  rv = vppcom_session_attr (sid, VPPCOM_ATTR_GET_PEER_ADDR, ep, &size);
+  return rv;
 }
 
 int
@@ -1427,32 +1410,6 @@ vcom_socket_getpeername (int __fd, __SOCKADDR_ARG __addr,
       return -EINVAL;
     }
 
-  /* DAW: hack to allow iperf3 to be happy w/ getpeername output */
-  {
-    uint8_t *a;
-    ((struct sockaddr_in *) __addr)->sin_family = AF_INET;
-    ((struct sockaddr_in *) __addr)->sin_port = 0x1000;
-    a = (uint8_t *) & ((struct sockaddr_in *) __addr)->sin_addr;
-    a[0] = 0x7f;
-    a[1] = 0x00;
-    a[2] = 0x00;
-    a[3] = 0x01;
-    *__len = sizeof (struct sockaddr_in);
-    return 0;
-  }
-
-  /* TBD: remove libc_getpeername code snippet
-   * once vppcom implements vppcom_session_getpeername */
-  rv = libc_getpeername (__fd, __addr, __len);
-  if (rv != 0)
-    {
-      rv = -errno;
-      return rv;
-    }
-
-  /* TBD: use the below code snippet when vppcom
-   * implements vppcom_session_getpeername */
-#if 0
   vppcom_endpt_t ep;
   ep.ip = (u8 *) & ((const struct sockaddr_in *) __addr)->sin_addr;
   rv = vppcom_session_getpeername (vsock->sid, &ep);
@@ -1478,7 +1435,6 @@ vcom_socket_getpeername (int __fd, __SOCKADDR_ARG __addr,
            }
        }
     }
-#endif
 
   return rv;
 }
@@ -1775,12 +1731,7 @@ vppcom_getsockopt (int __sid, int __level, int __optname,
 {
   /* 1. for socket level options that are NOT socket attributes
    *    and that has corresponding vpp options get from vppcom */
-#if 0
   return 0;
-#endif
-
-  /* 2. unhandled options */
-  return -ENOPROTOOPT;
 }
 
 int