Browse Source

new rpm: addrwatch

main
Nicolas Massé 5 years ago
parent
commit
4638601d86
  1. 14
      rpmbuild/SOURCES/addrwatch-fix-dbreconnect.patch
  2. 36
      rpmbuild/SOURCES/addrwatch-strsignal.patch
  3. 14
      rpmbuild/SOURCES/addrwatch.service
  4. 7
      rpmbuild/SOURCES/addrwatch.sysconfig
  5. 84
      rpmbuild/SPECS/addrwatch.spec

14
rpmbuild/SOURCES/addrwatch-fix-dbreconnect.patch

@ -0,0 +1,14 @@
diff --git a/src/addrwatch_mysql.c b/src/addrwatch_mysql.c
index 389153f..b4ed760 100644
--- a/src/addrwatch_mysql.c
+++ b/src/addrwatch_mysql.c
@@ -232,7 +232,7 @@ void db_disconnect(struct ctx_s *data)
data->dbh = NULL;
}
-inline void db_reconnect(struct ctx_s *data) {
+static inline void db_reconnect(struct ctx_s *data) {
while (1) {
if (data->dbh)
db_disconnect(data);

36
rpmbuild/SOURCES/addrwatch-strsignal.patch

@ -0,0 +1,36 @@
diff --git a/configure.ac b/configure.ac
index e70edc2..5d8b716 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,9 +58,6 @@ AC_CHECK_HEADERS([arpa/inet.h netinet/in.h stdint.h stdlib.h syslog.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
AC_TYPE_PID_T
-AC_CHECK_DECLS([sys_siglist], [], [
- AC_MSG_ERROR([Unable to find sys_siglist declaration.])
-], [[#include <signal.h>]])
AC_TYPE_UINT32_T
AC_TYPE_UINT16_T
AC_TYPE_UINT8_T
diff --git a/src/addrwatch.c b/src/addrwatch.c
index 139dd3b..d208fad 100644
--- a/src/addrwatch.c
+++ b/src/addrwatch.c
@@ -327,7 +327,7 @@ void reload_cb(evutil_socket_t fd, short events, void *arg)
void reload_cb(int fd, short events, void *arg)
#endif
{
- log_msg(LOG_DEBUG, "Received signal (%d), %s", fd, sys_siglist[fd]);
+ log_msg(LOG_DEBUG, "Received signal (%d), %s", fd, strsignal(fd));
log_msg(LOG_DEBUG, "Reopening output files");
output_flatfile_reload();
@@ -341,7 +341,7 @@ void stop_cb(evutil_socket_t fd, short events, void *arg)
void stop_cb(int fd, short events, void *arg)
#endif
{
- log_msg(LOG_DEBUG, "Received signal (%d), %s", fd, sys_siglist[fd]);
+ log_msg(LOG_DEBUG, "Received signal (%d), %s", fd, strsignal(fd));
#if HAVE_LIBEVENT2
event_base_loopbreak(cfg.eb);
#else

14
rpmbuild/SOURCES/addrwatch.service

@ -0,0 +1,14 @@
[Unit]
Description=A tool for IPv4/IPv6 and ethernet address pairing monitoring
Documentation=man:addrwatch(8) https://github.com/fln/addrwatch
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/addrwatch
Type=simple
ExecStart=/usr/bin/addrwatch -u $ADDRWATCH_USERNAME $ADDRWATCH_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target

7
rpmbuild/SOURCES/addrwatch.sysconfig

@ -0,0 +1,7 @@
#
# specify extra Arguments to addrwatch
ADDRWATCH_ARGS="-s /var/lib/addrwatch/addrwatch.sqlite"
# drop priviliges at boot
ADDRWATCH_USERNAME="addrwatch"

84
rpmbuild/SPECS/addrwatch.spec

@ -0,0 +1,84 @@
%global _hardened_build 1
Name: addrwatch
Version: 1.0.1
Release: 8%{?dist}
Summary: Monitoring IPv4/IPv6 and Ethernet address pairings
License: GPLv3
URL: https://github.com/fln/addrwatch
Source0: %{url}/fln/addrwatch/releases/download/v%{version}/%{name}-%{version}.tar.gz
Source1: %{name}.service
Source2: %{name}.sysconfig
# https://github.com/fln/addrwatch/issues/11
Patch0: addrwatch-fix-dbreconnect.patch
Patch1: addrwatch-strsignal.patch
%{?systemd_requires}
BuildRequires: libpcap-devel, libevent-devel, systemd, sqlite-devel, gcc
BuildRequires: autoconf automake
Requires(pre): shadow-utils
%description
It main purpose is to monitor network and log discovered Ethernet/IP pairings.
Main features of addrwatch:
* IPv4 and IPv6 address monitoring
* Monitoring multiple network interfaces with one daemon
* Monitoring of VLAN tagged (802.1Q) packets.
* Output to std-out, plain text file, syslog, sqlite3 db, MySQL db
* IP address usage history preserving output/logging
Addrwatch is extremely useful in networks with IPv6 auto configuration (RFC4862)
enabled. It allows to track IPv6 addresses of hosts using IPv6 privacy
extensions (RFC4941).
%prep
%autosetup -p1
#%setup -q
#%patch0 -p1
%build
autoreconf -fiv
%configure --enable-sqlite3
%make_build
%install
%make_install
mkdir -p %{buildroot}%{_unitdir}/
install -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig/
install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/addrwatch
mkdir -p %{buildroot}/var/lib/addrwatch
%files
%{_bindir}/addrwatch
%{_bindir}/addrwatch_stdout
%{_bindir}/addrwatch_syslog
%{_mandir}/man8/addrwatch.8*
%{_unitdir}/addrwatch.service
%config(noreplace) %{_sysconfdir}/sysconfig/addrwatch
%license COPYING
%attr(-, addrwatch, addrwatch) /var/lib/addrwatch
%pre
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || \
useradd -r -g %{name} -d /var/lib/%{name} -s /sbin/nologin \
-c "network neighborhoud watch" %{name}
exit 0
%post
%systemd_post %{name}.service
%preun
%systemd_preun %{name}.service
%postun
%systemd_postun_with_restart %{name}.service
%changelog
Loading…
Cancel
Save