diff --git a/src/modules/_Stdio/socket.c b/src/modules/_Stdio/socket.c index 75b369cbedfed955cccac0ead16af102e25747a8..50270f724cd5fe745e184e06acd36aff07f273b8 100644 --- a/src/modules/_Stdio/socket.c +++ b/src/modules/_Stdio/socket.c @@ -63,7 +63,6 @@ #ifdef HAVE_SYS_UN_H #include <sys/un.h> #endif - #include "dmalloc.h" /*! @module Stdio @@ -735,6 +734,17 @@ static void exit_port_struct(struct object *UNUSED(o)) /* map_variable takes care of id and accept_callback. */ } +int fd_from_portobject( struct object *p ) +{ + struct port *po = get_storage( p, port_program ); + if(!po) return -1; + return po->box.fd; +} + +static void port_query_fd(INT32 UNUSED(args)) +{ + push_int(fd_from_portobject(Pike_fp->current_object)); +} /*! @endclass */ @@ -787,17 +797,19 @@ void init_stdio_port(void) tVoid), 0); ADD_FUNCTION ("set_backend", port_set_backend, tFunc(tObj,tVoid), 0); ADD_FUNCTION ("query_backend", port_query_backend, tFunc(tVoid,tObj), 0); + ADD_FUNCTION ("query_fd", port_query_fd, tFunc(tVoid,tInt), 0); +#ifdef SO_REUSEPORT + ADD_INT_CONSTANT( "SO_REUSEPORT_SUPPORT", SO_REUSEPORT, 0 ); +#endif +#ifdef TCP_FASTOPEN + ADD_INT_CONSTANT( "TCP_FASTOPEN_SUPPORT", TCP_FASTOPEN, 0 ); +#endif set_init_callback(init_port_struct); set_exit_callback(exit_port_struct); port_program = end_program(); add_program_constant( "_port", port_program, 0 ); -} -int fd_from_portobject( struct object *p ) -{ - struct port *po = get_storage( p, port_program ); - if(!po) return -1; - return po->box.fd; } + diff --git a/src/pike_netlib.h b/src/pike_netlib.h index 33586862414b3cbfd98bf278861d9535134408b3..0403d964832b218162713e7e6c4e47a8c87d1853 100644 --- a/src/pike_netlib.h +++ b/src/pike_netlib.h @@ -18,6 +18,7 @@ #endif /* HAVE_SYS_SOCKET_H */ #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> +#include <netinet/tcp.h> #endif /* HAVE_NETINET_IN_H */ #ifdef HAVE_WINSOCK2_H