@@ -379,10 +379,15 @@ struct xlio_api_t *extra_api()
379
379
SET_EXTRA_API (xlio_poll_group_poll, xlio_poll_group_poll, XLIO_EXTRA_API_XLIO_SOCKET);
380
380
SET_EXTRA_API (xlio_socket_create, xlio_socket_create, XLIO_EXTRA_API_XLIO_SOCKET);
381
381
SET_EXTRA_API (xlio_socket_destroy, xlio_socket_destroy, XLIO_EXTRA_API_XLIO_SOCKET);
382
+ SET_EXTRA_API (xlio_socket_update, xlio_socket_update, XLIO_EXTRA_API_XLIO_SOCKET);
382
383
SET_EXTRA_API (xlio_socket_setsockopt, xlio_socket_setsockopt, XLIO_EXTRA_API_XLIO_SOCKET);
384
+ SET_EXTRA_API (xlio_socket_getpeername, xlio_socket_getpeername, XLIO_EXTRA_API_XLIO_SOCKET);
383
385
SET_EXTRA_API (xlio_socket_bind, xlio_socket_bind, XLIO_EXTRA_API_XLIO_SOCKET);
384
386
SET_EXTRA_API (xlio_socket_connect, xlio_socket_connect, XLIO_EXTRA_API_XLIO_SOCKET);
387
+ SET_EXTRA_API (xlio_socket_listen, xlio_socket_listen, XLIO_EXTRA_API_XLIO_SOCKET);
385
388
SET_EXTRA_API (xlio_socket_get_pd, xlio_socket_get_pd, XLIO_EXTRA_API_XLIO_SOCKET);
389
+ SET_EXTRA_API (xlio_socket_detach_group, xlio_socket_detach_group, XLIO_EXTRA_API_XLIO_SOCKET);
390
+ SET_EXTRA_API (xlio_socket_attach_group, xlio_socket_attach_group, XLIO_EXTRA_API_XLIO_SOCKET);
386
391
SET_EXTRA_API (xlio_socket_send, xlio_socket_send, XLIO_EXTRA_API_XLIO_SOCKET);
387
392
SET_EXTRA_API (xlio_socket_sendv, xlio_socket_sendv, XLIO_EXTRA_API_XLIO_SOCKET);
388
393
SET_EXTRA_API (xlio_poll_group_flush, xlio_poll_group_flush, XLIO_EXTRA_API_XLIO_SOCKET);
@@ -503,6 +508,12 @@ extern "C" int xlio_socket_destroy(xlio_socket_t sock)
503
508
return 0 ;
504
509
}
505
510
511
+ extern " C" int xlio_socket_update (xlio_socket_t sock, unsigned flags, uintptr_t userdata_sq)
512
+ {
513
+ sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
514
+ return si->update_xlio_socket (flags, userdata_sq);
515
+ }
516
+
506
517
extern " C" int xlio_socket_setsockopt (xlio_socket_t sock, int level, int optname,
507
518
const void *optval, socklen_t optlen)
508
519
{
@@ -516,6 +527,13 @@ extern "C" int xlio_socket_setsockopt(xlio_socket_t sock, int level, int optname
516
527
return rc;
517
528
}
518
529
530
+ extern " C" int xlio_socket_getpeername (xlio_socket_t sock, struct sockaddr *addr,
531
+ socklen_t *addrlen)
532
+ {
533
+ sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
534
+ return si->getpeername (addr, addrlen);
535
+ }
536
+
519
537
extern " C" int xlio_socket_bind (xlio_socket_t sock, const struct sockaddr *addr, socklen_t addrlen)
520
538
{
521
539
sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
@@ -542,6 +560,18 @@ extern "C" int xlio_socket_connect(xlio_socket_t sock, const struct sockaddr *to
542
560
return rc;
543
561
}
544
562
563
+ extern " C" int xlio_socket_listen (xlio_socket_t sock)
564
+ {
565
+ sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
566
+ poll_group *group = si->get_poll_group ();
567
+
568
+ if (!group->m_socket_accept_cb ) {
569
+ errno = ENOTCONN;
570
+ return -1 ;
571
+ }
572
+ return si->listen (-1 );
573
+ }
574
+
545
575
extern " C" struct ibv_pd *xlio_socket_get_pd (xlio_socket_t sock)
546
576
{
547
577
sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
@@ -550,6 +580,21 @@ extern "C" struct ibv_pd *xlio_socket_get_pd(xlio_socket_t sock)
550
580
return ctx ? ctx->get_ibv_pd () : nullptr ;
551
581
}
552
582
583
+ int xlio_socket_detach_group (xlio_socket_t sock)
584
+ {
585
+ sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
586
+
587
+ return si->detach_xlio_group ();
588
+ }
589
+
590
+ int xlio_socket_attach_group (xlio_socket_t sock, xlio_poll_group_t group)
591
+ {
592
+ sockinfo_tcp *si = reinterpret_cast <sockinfo_tcp *>(sock);
593
+ poll_group *grp = reinterpret_cast <poll_group *>(group);
594
+
595
+ return si->attach_xlio_group (grp);
596
+ }
597
+
553
598
static void xlio_buf_free (struct xlio_buf *buf)
554
599
{
555
600
mem_buf_desc_t *desc = mem_buf_desc_t::from_xlio_buf (buf);
0 commit comments