1*c1f8818cSbluhm /* $OpenBSD: syslogd.h,v 1.37 2023/10/12 22:36:54 bluhm Exp $ */ 2ea1c22ccSbluhm 338182445Savsm /* 43836e309Sbluhm * Copyright (c) 2014-2017 Alexander Bluhm <bluhm@genua.de> 538182445Savsm * Copyright (c) 2003 Anil Madhavapeddy <anil@recoil.org> 638182445Savsm * 738182445Savsm * Permission to use, copy, modify, and distribute this software for any 838182445Savsm * purpose with or without fee is hereby granted, provided that the above 938182445Savsm * copyright notice and this permission notice appear in all copies. 1038182445Savsm * 1138182445Savsm * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1238182445Savsm * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1338182445Savsm * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1438182445Savsm * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1538182445Savsm * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1638182445Savsm * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1738182445Savsm * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1838182445Savsm */ 1938182445Savsm 2097f3a029Sdjm #include <sys/types.h> 2197f3a029Sdjm #include <sys/socket.h> 22d4d4d7d2Smillert #include <sys/uio.h> 2397f3a029Sdjm 24bafa06e1Sbluhm #include <stdarg.h> 25bafa06e1Sbluhm 262a99deb5Smartijn extern int ZuluTime; 272a99deb5Smartijn 2838182445Savsm /* Privilege separation */ 29ece520b1Sbluhm void priv_init(int, int, int, char **); 30ece520b1Sbluhm __dead void priv_exec(char *, int, int, int, char **); 3138182445Savsm int priv_open_tty(const char *); 3238182445Savsm int priv_open_log(const char *); 3338182445Savsm FILE *priv_open_utmp(void); 3438182445Savsm FILE *priv_open_config(void); 3538182445Savsm void priv_config_parse_done(void); 3638182445Savsm int priv_config_modified(void); 37*c1f8818cSbluhm int priv_getaddrinfo(const char *, const char *, const char *, 38*c1f8818cSbluhm struct sockaddr *, size_t); 39bd6df507Sbluhm int priv_getnameinfo(struct sockaddr *, socklen_t, char *, size_t); 4038182445Savsm 4139a8af49Sbluhm #define IOVCNT 7 42e4c12d7aSbluhm 4338182445Savsm /* Terminal message */ 44c65505c8Sbluhm #define TTYMSGTIME 1 /* timeout used by ttymsg */ 45959a7adfSbluhm #define TTYMAXDELAY 256 /* max events in ttymsg */ 46e4c12d7aSbluhm void ttymsg(char *, struct iovec *); 4738182445Savsm 4838182445Savsm /* File descriptor send/recv */ 4938182445Savsm void send_fd(int, int); 5038182445Savsm int receive_fd(int); 5138182445Savsm 52c65505c8Sbluhm #define ERRBUFSIZE 256 53bafa06e1Sbluhm void vlogmsg(int pri, const char *, const char *, va_list); 54bafa06e1Sbluhm __dead void die(int); 5538182445Savsm extern int Debug; 56314b0d41Sdjm 57c1d2012aSdjm struct ringbuf { 58c1d2012aSdjm char *buf; 59c1d2012aSdjm size_t len, start, end; 60c1d2012aSdjm }; 61c1d2012aSdjm 62c1d2012aSdjm struct ringbuf *ringbuf_init(size_t); 63e735b9b4Sdjm void ringbuf_free(struct ringbuf *); 64c1d2012aSdjm void ringbuf_clear(struct ringbuf *); 65c1d2012aSdjm size_t ringbuf_used(struct ringbuf *); 66c1d2012aSdjm int ringbuf_append_line(struct ringbuf *, char *); 67c1d2012aSdjm ssize_t ringbuf_to_string(char *, size_t, struct ringbuf *); 68