}
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
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);
}
}
}
-#endif
return rv;
}
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
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);
}
}
}
-#endif
return rv;
}
{
/* 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