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