/
githubmirror
/
rsyslog
Обзор
Документация
Войти
/
githubmirror
/
rsyslog
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
runtime/nsd.h
114 строк
6 KB
Rainer Gerhards
omfwd: add TCP user timeout action option
16 июн 2026, 13:51
16 июн 2026, 13:51
d1b71d9
Код
Авторство
О чём код?
/* The interface definition for "NetStream Drivers" (nsd). * * This is just an abstract driver interface, which needs to be * implemented by concrete classes. As such, no nsd data type itself * is defined. * * Copyright 2008-2025 Adiscon GmbH. * * This file is part of the rsyslog runtime library. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * -or- * see COPYING.ASL20 in the source distribution * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef INCLUDED_NSD_H #define INCLUDED_NSD_H #include <sys/socket.h> enum nsdsel_waitOp_e { NSDSEL_RD = 1, NSDSEL_WR = 2, NSDSEL_RDWR = 3 }; /**< the operation we wait for */ /* nsd_t is actually obj_t (which is somewhat better than void* but in essence * much the same). */ /* interface */ BEGINinterface(nsd) /* name must also be changed in ENDinterface macro! */ rsRetVal (*Construct)(nsd_t **ppThis); rsRetVal (*Destruct)(nsd_t **ppThis); rsRetVal (*Abort)(nsd_t *pThis); rsRetVal (*Rcv)(nsd_t *pThis, uchar *pRcvBuf, ssize_t *pLenBuf, int *oserr, unsigned *nextIODirection); rsRetVal (*Send)(nsd_t *pThis, uchar *pBuf, ssize_t *pLenBuf); rsRetVal (*Connect)(nsd_t *pThis, int family, unsigned char *port, unsigned char *host, char *device); rsRetVal (*AcceptConnReq)(nsd_t *pThis, nsd_t **ppThis, char *connInfo); rsRetVal (*GetRemoteHName)(nsd_t *pThis, uchar **pszName); rsRetVal (*GetRemoteIP)(nsd_t *pThis, prop_t **ip); rsRetVal (*SetMode)(nsd_t *pThis, int mode); /* sets a driver specific mode - see driver doc for details */ rsRetVal (*SetAuthMode)(nsd_t *pThis, uchar *); /* sets a driver specific mode - see driver doc for details */ rsRetVal (*SetPermitExpiredCerts)(nsd_t *pThis, uchar *); /* sets a driver specific permitexpiredcerts mode */ rsRetVal (*SetPermPeers)(nsd_t *pThis, permittedPeers_t *); /* sets driver permitted peers for auth needs */ rsRetVal (*CheckConnection)(nsd_t *pThis); /* This is a trick mostly for plain tcp syslog */ rsRetVal (*GetSock)(nsd_t *pThis, int *pSock); rsRetVal (*SetSock)(nsd_t *pThis, int sock); /* GetSock() and SetSock() return an error if the driver does not use plain * OS sockets. This interface is primarily meant as an internal aid for * those drivers that utilize the nsd_ptcp to do some of their work. */ rsRetVal (*GetRemAddr)(nsd_t *pThis, struct sockaddr_storage **ppAddr); /* getRemAddr() is an aid needed by the legacy ACL system. It exposes the remote * peer's socket addr structure, so that the legacy matching functions can work on * it. Note that this ties netstream drivers to things that can be implemented over * sockets - not really desirable, but not the end of the world... */ /* v5 */ rsRetVal (*EnableKeepAlive)(nsd_t *pThis); /* v8 */ rsRetVal (*SetKeepAliveIntvl)(nsd_t *pThis, int keepAliveIntvl); rsRetVal (*SetKeepAliveProbes)(nsd_t *pThis, int keepAliveProbes); rsRetVal (*SetKeepAliveTime)(nsd_t *pThis, int keepAliveTime); rsRetVal (*SetTcpUserTimeout)(nsd_t *pThis, int tcpUserTimeout); rsRetVal (*SetGnutlsPriorityString)(nsd_t *pThis, uchar *gnutlsPriorityString); /* v12 -- parameter pszLstnPortFileName added to LstnInit()*/ rsRetVal(ATTR_NONNULL(1, 3, 5) * LstnInit)(netstrms_t * pNS, void *pUsr, rsRetVal (*)(void *, netstrm_t *), const int iSessMax, const tcpLstnParams_t *const cnf_params); /* v13 -- two new binary flags added to gtls driver enabling stricter operation */ rsRetVal (*SetCheckExtendedKeyUsage)(nsd_t *pThis, int ChkExtendedKeyUsage); rsRetVal (*SetPrioritizeSAN)(nsd_t *pThis, int prioritizeSan); /* v14 -- Tls functions */ rsRetVal (*SetTlsVerifyDepth)(nsd_t *pThis, int verifyDepth); /* v15 -- Tls functions */ rsRetVal (*SetTlsCAFile)(nsd_t *pThis, const uchar *); rsRetVal (*SetTlsKeyFile)(nsd_t *pThis, const uchar *); rsRetVal (*SetTlsCertFile)(nsd_t *pThis, const uchar *); /* v16 - Tls CRL */ rsRetVal (*SetTlsCRLFile)(nsd_t *pThis, const uchar *); /* v17 - Remote Port */ rsRetVal (*GetRemotePort)(nsd_t *pThis, int *); rsRetVal (*FmtRemotePortStr)(const int port, uchar *const buf, const size_t len); /* v18 -- allow remote server's TLS SNI to be set manually */ rsRetVal (*SetRemoteSNI)(nsd_t *pThis, uchar *pszRemoteSNI); /* v19 -- TLS revocation checking (OCSP/CRL) */ rsRetVal (*SetTlsRevocationCheck)(nsd_t *pThis, int enabled); ENDinterface(nsd) #define nsdCURR_IF_VERSION 20 /* increment whenever you change the interface structure! */ /* interface version 4 added GetRemAddr() * interface version 5 added EnableKeepAlive() -- rgerhards, 2009-06-02 * interface version 6 changed return of CheckConnection from void to rsRetVal -- alorbach, 2012-09-06 * interface version 7 changed signature ofGetRempoteIP() -- rgerhards, 2013-01-21 * interface version 8 added keep alive parameter set functions * interface version 9 changed signature of Connect() -- dsa, 2016-11-14 * interface version 10 added SetGnutlsPriorityString() -- PascalWithopf, 2017-08-08 * interface version 11 added oserr to Rcv() signature -- rgerhards, 2017-09-04 * interface version 18 added SetRemoteSNI -- jfcantu, 2020-01-15 * interface version 20 added SetTcpUserTimeout */ #endif /* #ifndef INCLUDED_NSD_H */