lunp
 Tutto Strutture dati File Funzioni Variabili Ridefinizioni di tipo (typedef) Tipi enumerati (enum) Valori del tipo enumerato Definizioni
lunp.h
Vai alla documentazione di questo file.
1 /* include unph */
2 /* Our own header. Tabs are set for 4 spaces, not 8 */
3 
4 #ifndef __lunp_h
5 #define __lunp_h
6 
7 #include "config.h" /* configuration options for current OS */
8  /* "../config.h" is generated by configure */
9 
10 /* If anything changes in the following list of #includes, must change
11  acsite.m4 also, for configure's tests. */
12 
13 #include <sys/types.h> /* basic system data types */
14 #include <sys/socket.h> /* basic socket definitions */
15 #if TIME_WITH_SYS_TIME
16 #include <sys/time.h> /* timeval{} for select() */
17 #include <time.h> /* timespec{} for pselect() */
18 #else
19 #if HAVE_SYS_TIME_H
20 #include <sys/time.h> /* includes <time.h> unsafely */
21 #else
22 #include <time.h> /* old system? */
23 #endif
24 #endif
25 #include <netinet/in.h> /* sockaddr_in{} and other Internet defns */
26 #include <arpa/inet.h> /* inet(3) functions */
27 #include <errno.h>
28 #include <fcntl.h> /* for nonblocking */
29 #include <netdb.h>
30 #include <signal.h>
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <string.h>
34 #include <sys/stat.h> /* for S_xxx file mode constants */
35 #include <sys/uio.h> /* for iovec{} and readv/writev */
36 #include <unistd.h>
37 #include <sys/wait.h>
38 #include <sys/un.h> /* for Unix domain sockets */
39 
40 #ifdef HAVE_SYS_SELECT_H
41 # include <sys/select.h> /* for convenience */
42 #endif
43 
44 #ifdef HAVE_SYS_SYSCTL_H
45 #ifdef HAVE_SYS_PARAM_H
46 # include <sys/param.h> /* OpenBSD prereq for sysctl.h */
47 #endif
48 # include <sys/sysctl.h>
49 #endif
50 
51 #ifdef HAVE_POLL_H
52 # include <poll.h> /* for convenience */
53 #endif
54 
55 #ifdef HAVE_SYS_EVENT_H
56 # include <sys/event.h> /* for kqueue */
57 #endif
58 
59 #ifdef HAVE_STRINGS_H
60 # include <strings.h> /* for convenience */
61 #endif
62 
63 /* Three headers are normally needed for socket/file ioctl's:
64  * <sys/ioctl.h>, <sys/filio.h>, and <sys/sockio.h>.
65  */
66 #ifdef HAVE_SYS_IOCTL_H
67 # include <sys/ioctl.h>
68 #endif
69 #ifdef HAVE_SYS_FILIO_H
70 # include <sys/filio.h>
71 #endif
72 #ifdef HAVE_SYS_SOCKIO_H
73 # include <sys/sockio.h>
74 #endif
75 
76 #ifdef HAVE_PTHREAD_H
77 # include <pthread.h>
78 #endif
79 
80 #ifdef HAVE_NET_IF_DL_H
81 # include <net/if_dl.h>
82 #endif
83 
84 #ifdef HAVE_NETINET_SCTP_H
85 #include <netinet/sctp.h>
86 #endif
87 
88 /* OSF/1 actually disables recv() and send() in <sys/socket.h> */
89 #ifdef __osf__
90 #undef recv
91 #undef send
92 #define recv(a,b,c,d) recvfrom(a,b,c,d,0,0)
93 #define send(a,b,c,d) sendto(a,b,c,d,0,0)
94 #endif
95 
96 #ifndef INADDR_NONE
97 /* $$.Ic INADDR_NONE$$ */
98 #define INADDR_NONE 0xffffffff /* should have been in <netinet/in.h> */
99 #endif
100 
101 #ifndef SHUT_RD /* these three POSIX names are new */
102 #define SHUT_RD 0 /* shutdown for reading */
103 #define SHUT_WR 1 /* shutdown for writing */
104 #define SHUT_RDWR 2 /* shutdown for reading and writing */
105 /* $$.Ic SHUT_RD$$ */
106 /* $$.Ic SHUT_WR$$ */
107 /* $$.Ic SHUT_RDWR$$ */
108 #endif
109 
110 /* *INDENT-OFF* */
111 #ifndef INET_ADDRSTRLEN
112 /* $$.Ic INET_ADDRSTRLEN$$ */
113 #define INET_ADDRSTRLEN 16 /* "ddd.ddd.ddd.ddd\0"
114  1234567890123456 */
115 #endif
116 
117 /* Define following even if IPv6 not supported, so we can always allocate
118  an adequately sized buffer without #ifdefs in the code. */
119 #ifndef INET6_ADDRSTRLEN
120 /* $$.Ic INET6_ADDRSTRLEN$$ */
121 #define INET6_ADDRSTRLEN 46 /* max size of IPv6 address string:
122  "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" or
123  "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:ddd.ddd.ddd.ddd\0"
124  1234567890123456789012345678901234567890123456 */
125 #endif
126 /* *INDENT-ON* */
127 
128 /* Define bzero() as a macro if it's not in standard C library. */
129 #ifndef HAVE_BZERO
130 #define bzero(ptr,n) memset(ptr, 0, n)
131 /* $$.If bzero$$ */
132 /* $$.If memset$$ */
133 #endif
134 
135 /* Older resolvers do not have gethostbyname2() */
136 #ifndef HAVE_GETHOSTBYNAME2
137 #define gethostbyname2(host,family) gethostbyname((host))
138 #endif
139 
140 /* The structure returned by recvfrom_flags() */
142  struct in_addr ipi_addr; /* dst IPv4 address */
143  int ipi_ifindex;/* received interface index */
144 };
145 /* $$.It unp_in_pktinfo$$ */
146 /* $$.Ib ipi_addr$$ */
147 /* $$.Ib ipi_ifindex$$ */
148 
149 /* We need the newer CMSG_LEN() and CMSG_SPACE() macros, but few
150  implementations support them today. These two macros really need
151  an ALIGN() macro, but each implementation does this differently. */
152 #ifndef CMSG_LEN
153 /* $$.Im CMSG_LEN$$ */
154 #define CMSG_LEN(size) (sizeof(struct cmsghdr) + (size))
155 #endif
156 #ifndef CMSG_SPACE
157 /* $$.Im CMSG_SPACE$$ */
158 #define CMSG_SPACE(size) (sizeof(struct cmsghdr) + (size))
159 #endif
160 
161 /* POSIX requires the SUN_LEN() macro, but not all implementations DefinE
162  it (yet). Note that this 4.4BSD macro works regardless whether there is
163  a length field or not. */
164 #ifndef SUN_LEN
165 /* $$.Im SUN_LEN$$ */
166 # define SUN_LEN(su) \
167  (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
168 #endif
169 
170 /* POSIX renames "Unix domain" as "local IPC."
171  Not all systems DefinE AF_LOCAL and PF_LOCAL (yet). */
172 #ifndef AF_LOCAL
173 #define AF_LOCAL AF_UNIX
174 #endif
175 #ifndef PF_LOCAL
176 #define PF_LOCAL PF_UNIX
177 #endif
178 
179 /* POSIX requires that an #include of <poll.h> DefinE INFTIM, but many
180  systems still DefinE it in <sys/stropts.h>. We don't want to include
181  all the STREAMS stuff if it's not needed, so we just DefinE INFTIM here.
182  This is the standard value, but there's no guarantee it is -1. */
183 #ifndef INFTIM
184 #define INFTIM (-1) /* infinite poll timeout */
185 /* $$.Ic INFTIM$$ */
186 #ifdef HAVE_POLL_H
187 #define INFTIM_UNPH /* tell unpxti.h we defined it */
188 #endif
189 #endif
190 
191 /* Following could be derived from SOMAXCONN in <sys/socket.h>, but many
192  kernels still #define it as 5, while actually supporting many more */
193 #define LISTENQ 1024 /* 2nd argument to listen() */
194 
195 /* Miscellaneous constants */
196 #define MAXLINE 4096 /* max text line length */
197 #define BUFFSIZE 8192 /* buffer size for reads and writes */
198 
199 /* Define some port number that can be used for our examples */
200 #define SERV_PORT 9877 /* TCP and UDP */
201 #define SERV_PORT_STR "9877" /* TCP and UDP */
202 #define UNIXSTR_PATH "/tmp/unix.str" /* Unix domain stream */
203 #define UNIXDG_PATH "/tmp/unix.dg" /* Unix domain datagram */
204 /* $$.ix [LISTENQ]~constant,~definition~of$$ */
205 /* $$.ix [MAXLINE]~constant,~definition~of$$ */
206 /* $$.ix [BUFFSIZE]~constant,~definition~of$$ */
207 /* $$.ix [SERV_PORT]~constant,~definition~of$$ */
208 /* $$.ix [UNIXSTR_PATH]~constant,~definition~of$$ */
209 /* $$.ix [UNIXDG_PATH]~constant,~definition~of$$ */
210 
211 /* Following shortens all the typecasts of pointer arguments: */
212 #define SA struct sockaddr
213 
214 #ifndef HAVE_STRUCT_SOCKADDR_STORAGE
215 /*
216  * RFC 3493: protocol-independent placeholder for socket addresses
217  */
218 #define __SS_MAXSIZE 128
219 #define __SS_ALIGNSIZE (sizeof(int64_t))
220 #ifdef HAVE_SOCKADDR_SA_LEN
221 #define __SS_PAD1SIZE (__SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t))
222 #else
223 #define __SS_PAD1SIZE (__SS_ALIGNSIZE - sizeof(sa_family_t))
224 #endif
225 #define __SS_PAD2SIZE (__SS_MAXSIZE - 2*__SS_ALIGNSIZE)
226 
227 struct sockaddr_storage {
228 #ifdef HAVE_SOCKADDR_SA_LEN
229  u_char ss_len;
230 #endif
231  sa_family_t ss_family;
232  char __ss_pad1[__SS_PAD1SIZE];
233  int64_t __ss_align;
234  char __ss_pad2[__SS_PAD2SIZE];
235 };
236 #endif
237 
238 #define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
239  /* default file access permissions for new files */
240 #define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
241  /* default permissions for new directories */
242 
243 typedef void Sigfunc(int); /* for signal handlers */
244 
245 #define min(a,b) ((a) < (b) ? (a) : (b))
246 #define max(a,b) ((a) > (b) ? (a) : (b))
247 
248 #ifndef HAVE_ADDRINFO_STRUCT
249 # include "../lib/addrinfo.h"
250 #endif
251 
252 #ifndef HAVE_IF_NAMEINDEX_STRUCT
253 struct if_nameindex {
254  unsigned int if_index; /* 1, 2, ... */
255  char *if_name; /* null-terminated name: "le0", ... */
256 };
257 /* $$.It if_nameindex$$ */
258 /* $$.Ib if_index$$ */
259 /* $$.Ib if_name$$ */
260 #endif
261 
262 #ifndef HAVE_TIMESPEC_STRUCT
263 struct timespec {
264  time_t tv_sec; /* seconds */
265  long tv_nsec; /* and nanoseconds */
266 };
267 /* $$.It timespec$$ */
268 /* $$.Ib tv_sec$$ */
269 /* $$.Ib tv_nsec$$ */
270 #endif
271 /* end unph */
272 
273  /* prototypes for our own library functions */
274 int connect_nonb(int, const SA *, socklen_t, int);
275 int connect_timeo(int, const SA *, socklen_t, int);
276 int daemon_init(const char *, int);
277 void daemon_inetd(const char *, int);
278 void dg_cli(FILE *, int, const SA *, socklen_t);
279 void dg_echo(int, SA *, socklen_t);
280 int family_to_level(int);
281 char *gf_time(void);
282 void heartbeat_cli(int, int, int);
283 void heartbeat_serv(int, int, int);
284 struct addrinfo *host_serv(const char *, const char *, int, int);
285 int inet_srcrt_add(char *);
286 u_char *inet_srcrt_init(int);
287 void inet_srcrt_print(u_char *, int);
288 void inet6_srcrt_print(void *);
289 char **my_addrs(int *);
290 int readable_timeo(int, int);
291 ssize_t readline(int, void *, size_t);
292 ssize_t readn(int, void *, size_t);
293 ssize_t read_fd(int, void *, size_t, int *);
294 ssize_t recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *,
295  struct unp_in_pktinfo *);
296 Sigfunc *signal_intr(int, Sigfunc *);
297 int sock_bind_wild(int, int);
298 int sock_cmp_addr(const SA *, const SA *, socklen_t);
299 int sock_cmp_port(const SA *, const SA *, socklen_t);
300 int sock_get_port(const SA *, socklen_t);
301 void sock_set_addr(SA *, socklen_t, const void *);
302 void sock_set_port(SA *, socklen_t, int);
303 void sock_set_wild(SA *, socklen_t);
304 char *sock_ntop(const SA *, socklen_t);
305 char *sock_ntop_host(const SA *, socklen_t);
306 int sockfd_to_family(int);
307 void str_echo(int);
308 void str_cli(FILE *, int);
309 int tcp_connect(const char *, const char *);
310 int tcp_listen(const char *, const char *, socklen_t *);
311 void tv_sub(struct timeval *, struct timeval *);
312 int udp_client(const char *, const char *, SA **, socklen_t *);
313 int udp_connect(const char *, const char *);
314 int udp_server(const char *, const char *, socklen_t *);
315 int writable_timeo(int, int);
316 ssize_t writen(int, const void *, size_t);
317 ssize_t write_fd(int, void *, size_t, int);
318 
319 #ifdef MCAST
320 int mcast_leave(int, const SA *, socklen_t);
321 int mcast_join(int, const SA *, socklen_t, const char *, u_int);
322 int mcast_leave_source_group(int sockfd, const SA *src, socklen_t srclen,
323  const SA *grp, socklen_t grplen);
324 int mcast_join_source_group(int sockfd, const SA *src, socklen_t srclen,
325  const SA *grp, socklen_t grplen,
326  const char *ifname, u_int ifindex);
327 int mcast_block_source(int sockfd, const SA *src, socklen_t srclen,
328  const SA *grp, socklen_t grplen);
329 int mcast_unblock_source(int sockfd, const SA *src, socklen_t srclen,
330  const SA *grp, socklen_t grplen);
331 int mcast_get_if(int);
332 int mcast_get_loop(int);
333 int mcast_get_ttl(int);
334 int mcast_set_if(int, const char *, u_int);
335 int mcast_set_loop(int, int);
336 int mcast_set_ttl(int, int);
337 
338 void Mcast_leave(int, const SA *, socklen_t);
339 void Mcast_join(int, const SA *, socklen_t, const char *, u_int);
340 void Mcast_leave_source_group(int sockfd, const SA *src, socklen_t srclen,
341  const SA *grp, socklen_t grplen);
342 void Mcast_join_source_group(int sockfd, const SA *src, socklen_t srclen,
343  const SA *grp, socklen_t grplen,
344  const char *ifname, u_int ifindex);
345 void Mcast_block_source(int sockfd, const SA *src, socklen_t srclen,
346  const SA *grp, socklen_t grplen);
347 void Mcast_unblock_source(int sockfd, const SA *src, socklen_t srclen,
348  const SA *grp, socklen_t grplen);
349 int Mcast_get_if(int);
350 int Mcast_get_loop(int);
351 int Mcast_get_ttl(int);
352 void Mcast_set_if(int, const char *, u_int);
353 void Mcast_set_loop(int, int);
354 void Mcast_set_ttl(int, int);
355 #endif
356 
357 uint16_t in_cksum(uint16_t *, int);
358 
359 #ifndef HAVE_GETADDRINFO_PROTO
360 int getaddrinfo(const char *, const char *, const struct addrinfo *,
361  struct addrinfo **);
362 void freeaddrinfo(struct addrinfo *);
363 char *gai_strerror(int);
364 #endif
365 
366 #ifndef HAVE_GETNAMEINFO_PROTO
367 int getnameinfo(const SA *, socklen_t, char *, size_t, char *, size_t, int);
368 #endif
369 
370 #ifndef HAVE_GETHOSTNAME_PROTO
371 int gethostname(char *, int);
372 #endif
373 
374 #ifndef HAVE_HSTRERROR_PROTO
375 const char *hstrerror(int);
376 #endif
377 
378 #ifndef HAVE_IF_NAMETOINDEX_PROTO
379 unsigned int if_nametoindex(const char *);
380 char *if_indextoname(unsigned int, char *);
381 void if_freenameindex(struct if_nameindex *);
382 struct if_nameindex *if_nameindex(void);
383 #endif
384 
385 #ifndef HAVE_INET_PTON_PROTO
386 int inet_pton(int, const char *, void *);
387 const char *inet_ntop(int, const void *, char *, size_t);
388 #endif
389 
390 #ifndef HAVE_INET_ATON_PROTO
391 int inet_aton(const char *, struct in_addr *);
392 #endif
393 
394 #ifndef HAVE_PSELECT_PROTO
395 int pselect(int, fd_set *, fd_set *, fd_set *,
396  const struct timespec *, const sigset_t *);
397 #endif
398 
399 #ifndef HAVE_SOCKATMARK_PROTO
400 int sockatmark(int);
401 #endif
402 
403 #ifndef HAVE_SNPRINTF_PROTO
404 int snprintf(char *, size_t, const char *, ...);
405 #endif
406 
407  /* prototypes for our own library wrapper functions */
408 void Connect_timeo(int, const SA *, socklen_t, int);
409 int Family_to_level(int);
410 struct addrinfo *Host_serv(const char *, const char *, int, int);
411 const char *Inet_ntop(int, const void *, char *, size_t);
412 void Inet_pton(int, const char *, void *);
413 char *If_indextoname(unsigned int, char *);
414 unsigned int If_nametoindex(const char *);
415 struct if_nameindex *If_nameindex(void);
416 char **My_addrs(int *);
417 ssize_t Read_fd(int, void *, size_t, int *);
418 int Readable_timeo(int, int);
419 ssize_t Recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *,
420  struct unp_in_pktinfo *);
421 Sigfunc *Signal(int, Sigfunc *);
422 Sigfunc *Signal_intr(int, Sigfunc *);
423 int Sock_bind_wild(int, int);
424 char *Sock_ntop(const SA *, socklen_t);
425 char *Sock_ntop_host(const SA *, socklen_t);
426 int Sockfd_to_family(int);
427 int Tcp_connect(const char *, const char *);
428 int Tcp_listen(const char *, const char *, socklen_t *);
429 int Udp_client(const char *, const char *, SA **, socklen_t *);
430 int Udp_connect(const char *, const char *);
431 int Udp_server(const char *, const char *, socklen_t *);
432 ssize_t Write_fd(int, void *, size_t, int);
433 int Writable_timeo(int, int);
434 
435  /* prototypes for our Unix wrapper functions: see {Sec errors} */
436 void *Calloc(size_t, size_t);
437 void Close(int);
438 void Dup2(int, int);
439 int Fcntl(int, int, int);
440 void Gettimeofday(struct timeval *, void *);
441 int Ioctl(int, int, void *);
442 pid_t Fork(void);
443 void *Malloc(size_t);
444 int Mkstemp(char *);
445 void *Mmap(void *, size_t, int, int, int, off_t);
446 int Open(const char *, int, mode_t);
447 void Pipe(int *fds);
448 ssize_t Read(int, void *, size_t);
449 void Sigaddset(sigset_t *, int);
450 void Sigdelset(sigset_t *, int);
451 void Sigemptyset(sigset_t *);
452 void Sigfillset(sigset_t *);
453 int Sigismember(const sigset_t *, int);
454 void Sigpending(sigset_t *);
455 void Sigprocmask(int, const sigset_t *, sigset_t *);
456 char *Strdup(const char *);
457 long Sysconf(int);
458 void Sysctl(int *, u_int, void *, size_t *, void *, size_t);
459 void Unlink(const char *);
460 pid_t Wait(int *);
461 pid_t Waitpid(pid_t, int *, int);
462 void Write(int, void *, size_t);
463 
464  /* prototypes for our stdio wrapper functions: see {Sec errors} */
465 void Fclose(FILE *);
466 FILE *Fdopen(int, const char *);
467 char *Fgets(char *, int, FILE *);
468 FILE *Fopen(const char *, const char *);
469 void Fputs(const char *, FILE *);
470 
471  /* prototypes for our socket wrapper functions: see {Sec errors} */
472 int Accept(int, SA *, socklen_t *);
473 void Bind(int, const SA *, socklen_t);
474 void Connect(int, const SA *, socklen_t);
475 void Getpeername(int, SA *, socklen_t *);
476 void Getsockname(int, SA *, socklen_t *);
477 void Getsockopt(int, int, int, void *, socklen_t *);
478 #ifdef HAVE_INET6_RTH_INIT
479 int Inet6_rth_space(int, int);
480 void *Inet6_rth_init(void *, socklen_t, int, int);
481 void Inet6_rth_add(void *, const struct in6_addr *);
482 void Inet6_rth_reverse(const void *, void *);
483 int Inet6_rth_segments(const void *);
484 struct in6_addr *Inet6_rth_getaddr(const void *, int);
485 #endif
486 #ifdef HAVE_KQUEUE
487 int Kqueue(void);
488 int Kevent(int, const struct kevent *, int,
489  struct kevent *, int, const struct timespec *);
490 #endif
491 void Listen(int, int);
492 #ifdef HAVE_POLL
493 int Poll(struct pollfd *, unsigned long, int);
494 #endif
495 ssize_t Readline(int, void *, size_t);
496 ssize_t Readn(int, void *, size_t);
497 ssize_t Recv(int, void *, size_t, int);
498 ssize_t Recvfrom(int, void *, size_t, int, SA *, socklen_t *);
499 ssize_t Recvmsg(int, struct msghdr *, int);
500 int Select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
501 void Send(int, const void *, size_t, int);
502 void Sendto(int, const void *, size_t, int, const SA *, socklen_t);
503 void Sendmsg(int, const struct msghdr *, int);
504 void Setsockopt(int, int, int, const void *, socklen_t);
505 void Shutdown(int, int);
506 int Sockatmark(int);
507 int Socket(int, int, int);
508 void Socketpair(int, int, int, int *);
509 void Writen(int, void *, size_t);
510 
511 void err_dump(const char *, ...);
512 void err_msg(const char *, ...);
513 void err_quit(const char *, ...);
514 void err_ret(const char *, ...);
515 void err_sys(const char *, ...);
516 
517 
518 #include "mylunp.h"
519 
520 #endif /* __lunp_h */
int sock_get_port(const SA *, socklen_t)
void Mcast_leave(int, const SA *, socklen_t)
ssize_t Recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *, struct unp_in_pktinfo *)
ssize_t Readn(int, void *, size_t)
Definition: readn.c:30
int mcast_set_loop(int, int)
ssize_t Recvfrom(int, void *, size_t, int, SA *, socklen_t *)
int mcast_block_source(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen)
void Close(int)
Definition: wrapunix.c:32
int mcast_get_ttl(int)
long Sysconf(int)
Definition: wrapunix.c:212
const char * Inet_ntop(int, const void *, char *, size_t)
Definition: wraplib.c:9
char * sock_ntop_host(const SA *, socklen_t)
void Listen(int, int)
Definition: wrapsock.c:166
void Write(int, void *, size_t)
Definition: wrapunix.c:260
pid_t Waitpid(pid_t, int *, int)
Definition: wrapunix.c:250
int mcast_join(int, const SA *, socklen_t, const char *, u_int)
int mcast_set_ttl(int, int)
int Family_to_level(int)
void Fclose(FILE *)
Definition: wrapstdio.c:8
void sock_set_port(SA *, socklen_t, int)
void Sysctl(int *, u_int, void *, size_t *, void *, size_t)
Definition: wrapunix.c:224
int family_to_level(int)
int readable_timeo(int, int)
uint16_t in_cksum(uint16_t *, int)
void Mcast_set_if(int, const char *, u_int)
int udp_server(const char *, const char *, socklen_t *)
Definition: udp_server.c:5
int sock_bind_wild(int, int)
int mcast_get_loop(int)
void Sendmsg(int, const struct msghdr *, int)
Definition: wrapsock.c:250
unsigned int If_nametoindex(const char *)
void * Mmap(void *, size_t, int, int, int, off_t)
Definition: wrapunix.c:113
int mcast_leave_source_group(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen)
void Pipe(int *fds)
Definition: wrapunix.c:133
char * Sock_ntop_host(const SA *, socklen_t)
pid_t Wait(int *)
Definition: wrapunix.c:240
int Mkstemp(char *)
Definition: wrapunix.c:94
int Poll(struct pollfd *, unsigned long, int)
Definition: wrapsock.c:181
ssize_t write_fd(int, void *, size_t, int)
void Sigemptyset(sigset_t *)
Definition: wrapunix.c:164
int sock_cmp_port(const SA *, const SA *, socklen_t)
void daemon_inetd(const char *, int)
ssize_t readline(int, void *, size_t)
Definition: readline.c:29
int Ioctl(int, int, void *)
Definition: wrapunix.c:64
ssize_t recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *, struct unp_in_pktinfo *)
void err_quit(const char *,...)
Definition: error.c:71
int ipi_ifindex
Definition: lunp.h:143
void inet6_srcrt_print(void *)
void * Malloc(size_t)
Definition: wrapunix.c:84
int udp_client(const char *, const char *, SA **, socklen_t *)
Definition: udp_client.c:5
int writable_timeo(int, int)
void heartbeat_cli(int, int, int)
int Fcntl(int, int, int)
Definition: wrapunix.c:46
struct addrinfo * Host_serv(const char *, const char *, int, int)
void err_ret(const char *,...)
Definition: error.c:14
char * gf_time(void)
void Shutdown(int, int)
Definition: wrapsock.c:271
int Socket(int, int, int)
Definition: wrapsock.c:289
void Getsockopt(int, int, int, void *, socklen_t *)
Definition: wrapsock.c:69
struct if_nameindex * If_nameindex(void)
ssize_t Write_fd(int, void *, size_t, int)
int Accept(int, SA *, socklen_t *)
ssize_t Recvmsg(int, struct msghdr *, int)
Definition: wrapsock.c:214
int Sockfd_to_family(int)
void Sigprocmask(int, const sigset_t *, sigset_t *)
Definition: wrapunix.c:195
int Mcast_get_if(int)
void Getpeername(int, SA *, socklen_t *)
int Udp_server(const char *, const char *, socklen_t *)
Definition: udp_server.c:44
FILE * Fdopen(int, const char *)
Definition: wrapstdio.c:15
void sock_set_addr(SA *, socklen_t, const void *)
void Connect_timeo(int, const SA *, socklen_t, int)
int mcast_leave(int, const SA *, socklen_t)
int tcp_listen(const char *, const char *, socklen_t *)
Definition: tcp_listen.c:5
ssize_t read_fd(int, void *, size_t, int *)
void Sigfunc(int)
Definition: lunp.h:243
void Mcast_set_loop(int, int)
Sigfunc * signal_intr(int, Sigfunc *)
struct in_addr ipi_addr
Definition: lunp.h:142
void Sigfillset(sigset_t *)
Definition: wrapunix.c:171
void tv_sub(struct timeval *, struct timeval *)
int connect_nonb(int, const SA *, socklen_t, int)
void Dup2(int, int)
Definition: wrapunix.c:39
char * If_indextoname(unsigned int, char *)
int Sock_bind_wild(int, int)
int tcp_connect(const char *, const char *)
Definition: tcp_connect.c:5
int mcast_get_if(int)
int Mcast_get_loop(int)
void err_sys(const char *,...)
Definition: error.c:28
void Mcast_leave_source_group(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen)
char * Strdup(const char *)
Definition: wrapunix.c:202
void Mcast_unblock_source(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen)
void dg_echo(int, SA *, socklen_t)
char * sock_ntop(const SA *, socklen_t)
char ** My_addrs(int *)
int Open(const char *, int, mode_t)
Definition: wrapunix.c:123
ssize_t writen(int, const void *, size_t)
Definition: writen.c:5
int Writable_timeo(int, int)
int daemon_init(const char *, int)
int inet_srcrt_add(char *)
void heartbeat_serv(int, int, int)
char ** my_addrs(int *)
void Setsockopt(int, int, int, const void *, socklen_t)
Definition: wrapsock.c:264
void Mcast_join(int, const SA *, socklen_t, const char *, u_int)
void Connect(int, const SA *, socklen_t)
void Sendto(int, const void *, size_t, int, const SA *, socklen_t)
void Mcast_join_source_group(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen, const char *ifname, u_int ifindex)
ssize_t Recv(int, void *, size_t, int)
Definition: wrapsock.c:193
int sockfd_to_family(int)
int sock_cmp_addr(const SA *, const SA *, socklen_t)
int mcast_join_source_group(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen, const char *ifname, u_int ifindex)
void Socketpair(int, int, int, int *)
Definition: wrapsock.c:300
int Readable_timeo(int, int)
void str_echo(int)
void Sigdelset(sigset_t *, int)
Definition: wrapunix.c:157
void Mcast_block_source(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen)
int Udp_connect(const char *, const char *)
void Gettimeofday(struct timeval *, void *)
Definition: wrapunix.c:56
void dg_cli(FILE *, int, const SA *, socklen_t)
struct addrinfo * host_serv(const char *, const char *, int, int)
char * Sock_ntop(const SA *, socklen_t)
int Select(int, fd_set *, fd_set *, fd_set *, struct timeval *)
Definition: wrapsock.c:224
ssize_t Read_fd(int, void *, size_t, int *)
void Fputs(const char *, FILE *)
Definition: wrapstdio.c:48
int Sockatmark(int)
Definition: wrapsock.c:278
int Mcast_get_ttl(int)
void Writen(int, void *, size_t)
Definition: writen.c:29
void Sigpending(sigset_t *)
Definition: wrapunix.c:188
pid_t Fork(void)
Definition: wrapunix.c:74
FILE * Fopen(const char *, const char *)
Definition: wrapstdio.c:37
u_char * inet_srcrt_init(int)
ssize_t readn(int, void *, size_t)
Definition: readn.c:5
int mcast_unblock_source(int sockfd, const SA *src, socklen_t srclen, const SA *grp, socklen_t grplen)
Definition: lunp.h:141
void Bind(int, const SA *, socklen_t)
int Sigismember(const sigset_t *, int)
Definition: wrapunix.c:178
void Unlink(const char *)
Definition: wrapunix.c:233
void sock_set_wild(SA *, socklen_t)
int udp_connect(const char *, const char *)
Sigfunc * Signal_intr(int, Sigfunc *)
#define SA
Definition: lunp.h:212
void err_msg(const char *,...)
Definition: error.c:57
ssize_t Readline(int, void *, size_t)
Definition: readline.c:61
int Tcp_connect(const char *, const char *)
Definition: tcp_connect.c:46
void inet_srcrt_print(u_char *, int)
Sigfunc * Signal(int, Sigfunc *)
Definition: signal.c:28
void Inet_pton(int, const char *, void *)
Definition: wraplib.c:21
void str_cli(FILE *, int)
void Sigaddset(sigset_t *, int)
Definition: wrapunix.c:150
void Getsockname(int, SA *, socklen_t *)
ssize_t Read(int, void *, size_t)
Definition: wrapunix.c:140
void * Calloc(size_t, size_t)
Definition: wrapunix.c:22
int mcast_set_if(int, const char *, u_int)
int connect_timeo(int, const SA *, socklen_t, int)
void Mcast_set_ttl(int, int)
void err_dump(const char *,...)
Definition: error.c:42
void Send(int, const void *, size_t, int)
Definition: wrapsock.c:235
char * Fgets(char *, int, FILE *)
Definition: wrapstdio.c:26
int Tcp_listen(const char *, const char *, socklen_t *)
Definition: tcp_listen.c:54
int Udp_client(const char *, const char *, SA **, socklen_t *)
Definition: udp_client.c:39