Nagios 4.4.14
Dev docs for Nagios core and neb-module hackers
Loading...
Searching...
No Matches
nsock.h
Go to the documentation of this file.
1#ifndef LIBNAGIOS_NSOCK_H_INCLUDED
2#define LIBNAGIOS_NSOCK_H_INCLUDED
3#include <errno.h>
4
5/**
6 * @file nsock.h
7 * @brief Nagios socket helper library
8 *
9 * This is a pretty stupid library, but since so many addons and
10 * now Nagios core itself makes use of sockets, we might as well
11 * have some simple wrappers for it that handle the most common
12 * cases.
13 *
14 * @{
15 */
16
17#define NSOCK_EBIND (-1) /**< failed to bind() */
18#define NSOCK_ELISTEN (-2) /**< failed to listen() */
19#define NSOCK_ESOCKET (-3) /**< failed to socket() */
20#define NSOCK_EUNLINK (-4) /**< failed to unlink() */
21#define NSOCK_ECONNECT (-5) /**< failed to connect() */
22#define NSOCK_EFCNTL (-6) /**< failed to fcntl() */
23#define NSOCK_EINVAL (-EINVAL) /**< -22, normally */
24
25/* flags for the various create calls */
26#define NSOCK_TCP (1 << 0) /**< use tcp mode */
27#define NSOCK_UDP (1 << 1) /**< use udp mode */
28#define NSOCK_UNLINK (1 << 2) /**< unlink existing path (only nsock_unix) */
29#define NSOCK_REUSE (1 << 2) /**< reuse existing address */
30#define NSOCK_CONNECT (1 << 3) /**< connect rather than create */
31#define NSOCK_BLOCK (1 << 4) /**< socket should be in blocking mode */
32
33/**
34 * Grab an error string relating to nsock_unix()
35 * @param code The error code return by the nsock library
36 * @return An error string describing the error
37 */
38extern const char *nsock_strerror(int code);
39
40/**
41 * Create or connect to a unix socket
42 * To control permissions on sockets when NSOCK_LISTEN is specified,
43 * callers will have to modify their umask() before (and possibly
44 * after) the nsock_unix() call.
45 *
46 * @param path The path to connect to or create
47 * @param flags Various options controlling the mode of the socket
48 * @return An NSOCK_E macro on errors, the created socket on success
49 */
50extern int nsock_unix(const char *path, unsigned int flags);
51
52/**
53 * Write a nul-terminated message to the socket pointed to by sd.
54 * This isn't quite the same as dprintf(), which doesn't include
55 * the terminating nul byte.
56 * @note This function may block, so poll(2) for writability
57 * @param sd The socket to write to
58 * @param fmt The format string
59 * @return Whatever write() returns
60 */
61extern int nsock_printf_nul(int sd, const char *fmt, ...)
62 __attribute__((__format__(__printf__, 2, 3)));
63
64/**
65 * Write a printf()-formatted string to the socket pointed to by sd.
66 * This is identical to dprintf(), which is unfortunately GNU only.
67 * @note This function may block, so poll(2) for writability
68 * @param sd The socket to write to
69 * @param fmt The format string
70 * @return Whatever write() returns
71 */
72extern int nsock_printf(int sd, const char *fmt, ...)
73 __attribute__((__format__(__printf__, 2, 3)));
74
75/** @} */
76#endif /* LIBNAGIOS_NSOCK_H_INCLUDED */
int nsock_printf_nul(int sd, const char *fmt,...) __attribute__((__format__(__printf__
Write a nul-terminated message to the socket pointed to by sd.
int int nsock_printf(int sd, const char *fmt,...) __attribute__((__format__(__printf__
Write a printf()-formatted string to the socket pointed to by sd.
int nsock_unix(const char *path, unsigned int flags)
Create or connect to a unix socket To control permissions on sockets when NSOCK_LISTEN is specified,...
const char * nsock_strerror(int code)
Grab an error string relating to nsock_unix()