Skip to content

Commit

Permalink
[libu] net += getsockopt wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
tho committed Dec 26, 2009
1 parent 69339fe commit 9848b18
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
3 changes: 2 additions & 1 deletion configure
@@ -1,6 +1,6 @@
#!/bin/sh
#
# $Id: configure,v 1.82 2009/12/24 18:30:51 tho Exp $
# $Id: configure,v 1.83 2009/12/26 13:34:04 tho Exp $

export makl_conf_h="include/u/libu_conf.h"

Expand Down Expand Up @@ -83,6 +83,7 @@ makl_checktype 0 "in_addr_t" \
makl_checksymbol 0 "TCP_NODELAY" "<sys/types.h>" "<netinet/tcp.h>"
makl_checkfunc 0 "daemon" 2 "" "<stdlib.h>"
makl_checkfunc 0 "setsockopt" 5 "" "<sys/socket.h>"
makl_checkfunc 0 "getsockopt" 5 "" "<sys/socket.h>"
makl_checkfunc 0 "getpid" 0 "" "<unistd.h>"
makl_checkfunc 0 "link" 2 "" "<unistd.h>"
makl_checkfunc 0 "unlink" 1 "" "<unistd.h>"
Expand Down
2 changes: 2 additions & 0 deletions include/toolbox/net.h
Expand Up @@ -178,11 +178,13 @@ int u_connect (int sd, const struct sockaddr *addr, socklen_t addrlen);
int u_accept(int ld, struct sockaddr *addr, socklen_t *addrlen);
int u_bind (int sd, const struct sockaddr *addr, socklen_t addrlen);
int u_setsockopt (int sd, int lev, int oname, const void *oval, socklen_t olen);
int u_getsockopt (int sd, int lev, int oname, void *oval, socklen_t *olen);
#else
int u_connect (int sd, const struct sockaddr *addr, int addrlen);
int u_accept(int ld, struct sockaddr *addr, int *addrlen);
int u_bind (int sd, const struct sockaddr *addr, int addrlen);
int u_setsockopt (int sd, int lev, int oname, const void *oval, int olen);
int u_getsockopt (int sd, int lev, int oname, void *oval, int *olen);
#endif /* HAVE_SOCKLEN_T */
int u_listen (int sd, int backlog);

Expand Down
26 changes: 25 additions & 1 deletion srcs/toolbox/net.c
Expand Up @@ -100,7 +100,7 @@ struct u_net_addr_s
* endpoint, a \a server socket (\c U_NET_SSOCK) by its local address.
*
* The identification is done via a family of private URIs:
* - {sct,tc,ud}p[46]://&lt;host&gt;:&lt;port&gt; for TCP/UDP/SCTP over IPv[46]
* - {tc,ud,sct}p[46]://&lt;host&gt;:&lt;port&gt; for TCP/UDP/SCTP over IPv[46]
* addresses,
* - unix://&lt;abs_path&gt; for UNIX IPC pathnames.
*
Expand Down Expand Up @@ -740,6 +740,30 @@ int u_setsockopt (int sd, int lev, int oname, const void *oval, int olen)
#endif /* HAVE_SETSOCKOPT */
}

/** \brief getsockopt(2) wrapper */
#ifdef HAVE_SOCKLEN_T
int u_getsockopt (int sd, int lev, int oname, void *oval, socklen_t *olen)
#else
int u_getsockopt (int sd, int lev, int oname, void *oval, int *olen)
#endif /* HAVE_SOCKLEN_T */
{
#ifdef HAVE_GETSOCKOPT
int rc = getsockopt(sd, lev, oname, oval, olen);

#ifdef U_NET_TRACE
dbg("getsockopt(%d, %d, %d, %p, %p) = %d", sd, lev, oname, oval, olen, rc);
#endif

dbg_err_sif (rc == -1);
err:
return rc;
#else
u_unused_args(sd, lev, oname, oval, olen);
info("getsockopt not implemented on this platform");
return -1;
#endif /* HAVE_GETSOCKOPT */
}

/**
* \brief Disable Nagle algorithm on the supplied TCP socket
*
Expand Down

0 comments on commit 9848b18

Please sign in to comment.