- update to lldpd-0.7.7

ok sthen@
This commit is contained in:
jasper 2013-11-11 12:23:13 +00:00
parent 9cb41d64bb
commit 23e25a8639
6 changed files with 4 additions and 178 deletions

View File

@ -1,9 +1,8 @@
# $OpenBSD: Makefile,v 1.4 2013/08/15 09:21:10 sthen Exp $
# $OpenBSD: Makefile,v 1.5 2013/11/11 12:23:13 jasper Exp $
COMMENT= LLDP (802.1ab)/CDP/EDP/SONMP/FDP daemon and SNMP subagent
DISTNAME= lldpd-0.7.6
REVISION= 1
DISTNAME= lldpd-0.7.7
SHARED_LIBS += lldpctl 0.0 # 1.0

View File

@ -1,2 +1,2 @@
SHA256 (lldpd-0.7.6.tar.gz) = 5MFPnoZyOYW7jtBKO8q6hYpvshEc1c12RDSkojLGcUk=
SIZE (lldpd-0.7.6.tar.gz) = 1459094
SHA256 (lldpd-0.7.7.tar.gz) = qB9fH4UICOMf6kLXSBn2IJeEpRyJmYHHgRlRg/JSrak=
SIZE (lldpd-0.7.7.tar.gz) = 1481777

View File

@ -1,86 +0,0 @@
$OpenBSD: patch-src_daemon_event_c,v 1.1 2013/07/15 19:12:07 jasper Exp $
From bec75f842fa401558a72d62bfbee04bc726407d6 Mon Sep 17 00:00:00 2001
From: Vincent Bernat <bernat@luffy.cx>
Date: Mon, 15 Jul 2013 20:56:00 +0200
Subject: [PATCH] event: replace `evutil_make_socket_nonblocking()` by an
idempotent version
https://github.com/vincentbernat/lldpd/commit/bec75f842fa401558a72d62bfbee04bc726407d6
--- src/daemon/event.c.orig Sat Jun 8 14:35:53 2013
+++ src/daemon/event.c Mon Jul 15 21:07:28 2013
@@ -21,6 +21,7 @@
#include <signal.h>
#include <errno.h>
#include <time.h>
+#include <fcntl.h>
#include <event2/event.h>
#include <event2/bufferevent.h>
#include <event2/buffer.h>
@@ -104,7 +105,7 @@ levent_snmp_add_fd(struct lldpd *cfg, int fd)
log_warn("event", "unable to allocate memory for new SNMP event");
return;
}
- evutil_make_socket_nonblocking(fd);
+ levent_make_socket_nonblocking(fd);
if ((snmpfd->ev = event_new(base, fd,
EV_READ | EV_PERSIST,
levent_snmp_read,
@@ -358,7 +359,7 @@ levent_ctl_accept(evutil_socket_t fd, short what, void
goto accept_failed;
}
client->cfg = cfg;
- evutil_make_socket_nonblocking(s);
+ levent_make_socket_nonblocking(s);
TAILQ_INSERT_TAIL(&lldpd_clients, client, next);
if ((client->bev = bufferevent_socket_new(cfg->g_base, s,
BEV_OPT_CLOSE_ON_FREE)) == NULL) {
@@ -458,7 +459,7 @@ levent_init(struct lldpd *cfg)
/* Setup unix socket */
log_debug("event", "register Unix socket");
TAILQ_INIT(&lldpd_clients);
- evutil_make_socket_nonblocking(cfg->g_ctl);
+ levent_make_socket_nonblocking(cfg->g_ctl);
if ((cfg->g_ctl_event = event_new(cfg->g_base, cfg->g_ctl,
EV_READ|EV_PERSIST, levent_ctl_accept, cfg)) == NULL)
fatalx("unable to setup control socket event");
@@ -547,7 +548,7 @@ levent_hardware_add_fd(struct lldpd_hardware *hardware
hardware->h_ifname);
return;
}
- evutil_make_socket_nonblocking(fd);
+ levent_make_socket_nonblocking(fd);
if ((hfd->ev = event_new(hardware->h_cfg->g_base, fd,
EV_READ | EV_PERSIST,
levent_hardware_recv,
@@ -647,7 +648,7 @@ levent_iface_subscribe(struct lldpd *cfg, int socket)
{
log_debug("event", "subscribe to interface changes from socket %d",
socket);
- evutil_make_socket_nonblocking(socket);
+ levent_make_socket_nonblocking(socket);
cfg->g_iface_event = event_new(cfg->g_base, socket,
EV_READ | EV_PERSIST, levent_iface_recv, cfg);
if (cfg->g_iface_event == NULL) {
@@ -762,4 +763,20 @@ levent_schedule_pdu(struct lldpd_hardware *hardware)
hardware->h_timer = NULL;
return;
}
+}
+
+int
+levent_make_socket_nonblocking(int fd)
+{
+ int flags;
+ if ((flags = fcntl(fd, F_GETFL, NULL)) < 0) {
+ log_warn("event", "fcntl(%d, F_GETFL)", fd);
+ return -1;
+ }
+ if (flags & O_NONBLOCK) return 0;
+ if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {
+ log_warn("event", "fcntl(%d, F_SETFL)", fd);
+ return -1;
+ }
+ return 0;
}

View File

@ -1,20 +0,0 @@
$OpenBSD: patch-src_daemon_lldpd_h,v 1.1 2013/07/15 19:12:07 jasper Exp $
From bec75f842fa401558a72d62bfbee04bc726407d6 Mon Sep 17 00:00:00 2001
From: Vincent Bernat <bernat@luffy.cx>
Date: Mon, 15 Jul 2013 20:56:00 +0200
Subject: [PATCH] event: replace `evutil_make_socket_nonblocking()` by an
idempotent version
https://github.com/vincentbernat/lldpd/commit/bec75f842fa401558a72d62bfbee04bc726407d6
--- src/daemon/lldpd.h.orig Thu Jul 11 23:13:26 2013
+++ src/daemon/lldpd.h Mon Jul 15 21:07:28 2013
@@ -150,6 +150,7 @@ void levent_update_now(struct lldpd *);
int levent_iface_subscribe(struct lldpd *, int);
void levent_schedule_pdu(struct lldpd_hardware *);
void levent_schedule_cleanup(struct lldpd *);
+int levent_make_socket_nonblocking(int);
/* lldp.c */
int lldp_send(PROTO_SEND_SIG);

View File

@ -1,23 +0,0 @@
$OpenBSD: patch-src_daemon_priv-bsd_c,v 1.1 2013/07/15 19:12:07 jasper Exp $
From bec75f842fa401558a72d62bfbee04bc726407d6 Mon Sep 17 00:00:00 2001
From: Vincent Bernat <bernat@luffy.cx>
Date: Mon, 15 Jul 2013 20:56:00 +0200
Subject: [PATCH] event: replace `evutil_make_socket_nonblocking()` by an
idempotent version
https://github.com/vincentbernat/lldpd/commit/bec75f842fa401558a72d62bfbee04bc726407d6
--- src/daemon/priv-bsd.c.orig Wed Jul 3 22:36:43 2013
+++ src/daemon/priv-bsd.c Mon Jul 15 21:07:28 2013
@@ -125,7 +125,9 @@ asroot_iface_init_os(int ifindex, char *name, int *fd)
#endif
#ifdef BIOCLOCK
- /* Lock interface */
+ /* Lock interface, but first make it non blocking since we cannot do
+ * this later */
+ levent_make_socket_nonblocking(*fd);
if (ioctl(*fd, BIOCLOCK, (caddr_t)&enable) < 0) {
rc = errno;
log_info("privsep", "unable to lock BPF interface %s",

View File

@ -1,44 +0,0 @@
$OpenBSD: patch-src_daemon_priv_c,v 1.1 2013/07/15 21:35:46 sthen Exp $
From 5c4fa9bdc202c7f474cb50f77a79acbea2abd009 Mon Sep 17 00:00:00 2001
From: Vincent Bernat <vincent.bernat@dailymotion.com>
Date: Mon, 15 Jul 2013 15:28:46 +0200
Subject: [PATCH] priv: use `sigaction()` instead of `signal()` to install
non-default signals
`signal()` is not portable to install non-default signals.
---
src/daemon/priv.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
--- src/daemon/priv.c.orig Thu Jul 11 22:13:52 2013
+++ src/daemon/priv.c Mon Jul 15 22:32:23 2013
@@ -490,12 +490,22 @@ priv_init(const char *chrootdir, int ctl, uid_t uid, g
if (atexit(priv_exit) != 0)
fatal("privsep", "unable to set exit function");
- signal(SIGALRM, sig_pass_to_chld);
- signal(SIGTERM, sig_pass_to_chld);
- signal(SIGHUP, sig_pass_to_chld);
- signal(SIGINT, sig_pass_to_chld);
- signal(SIGQUIT, sig_pass_to_chld);
- signal(SIGCHLD, sig_chld);
+ /* Install signal handlers */
+ const struct sigaction pass_to_child = {
+ .sa_handler = sig_pass_to_chld,
+ .sa_flags = SA_RESTART
+ };
+ sigaction(SIGALRM, &pass_to_child, NULL);
+ sigaction(SIGTERM, &pass_to_child, NULL);
+ sigaction(SIGHUP, &pass_to_child, NULL);
+ sigaction(SIGINT, &pass_to_child, NULL);
+ sigaction(SIGQUIT, &pass_to_child, NULL);
+ const struct sigaction child = {
+ .sa_handler = sig_chld,
+ .sa_flags = SA_RESTART
+ };
+ sigaction(SIGCHLD, &child, NULL);
+
if (waitpid(monitored, &status, WNOHANG) != 0)
/* Child is already dead */
_exit(1);