ports/147094: [PATCH] net/relayd: update to 4.3, take maintainership
Martin Matuska
mm at FreeBSD.org
Wed May 26 20:30:08 UTC 2010
>Number: 147094
>Category: ports
>Synopsis: [PATCH] net/relayd: update to 4.3, take maintainership
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Wed May 26 20:30:07 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Martin Matuska
>Release: FreeBSD 8.1-PRERELEASE amd64
>Organization:
>Environment:
System: FreeBSD neo.vx.sk 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #13 r208365M: Fri May 21 21:41:01 CEST
>Description:
- Update to 4.3
- Take maintainership
- Fix serveral serious bugs:
1. Control connection allocation bugfix
http://www.mail-archive.com/misc@openbsd.org/msg79451.html
Fix: import control.c diff rev. 1.23-1.24 (4.3 fix) and 1.35-1.36
2. "relayctl reload" and a configuration file with syntax errors
cause a segfault
Fix: import relayd.c diff rev. 1.65-1.66 (4.3 fix)
3. relayd does not cleanup tables and anchors properly on exit
Fix: import pfe_filter.c diff rev. 1.23-1.25 and 1.36-1.37
Added file(s):
- files/patch-d-control.c
- files/patch-d-hce.c
- files/pkg-install.in
Removed file(s):
- pkg-install
Port maintainer (kuriyama at FreeBSD.org) is cc'd.
Generated with FreeBSD Port Tools 0.99
>How-To-Repeat:
>Fix:
--- relayd-4.3.patch begins here ---
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/net/relayd/Makefile,v
retrieving revision 1.5
diff -u -r1.5 Makefile
--- Makefile 6 Jan 2009 17:59:12 -0000 1.5
+++ Makefile 26 May 2010 20:18:43 -0000
@@ -5,13 +5,11 @@
# $FreeBSD: ports/net/relayd/Makefile,v 1.5 2009/01/06 17:59:12 pav Exp $
PORTNAME= relayd
-PORTVERSION= 4.2.20071221
-PORTREVISION= 1
+PORTVERSION= 4.3
CATEGORIES= net
-MASTER_SITES= ${MASTER_SITE_LOCAL}
-MASTER_SITE_SUBDIR= kuriyama
+MASTER_SITES= http://people.freebsd.org/~mm/distfiles/
-MAINTAINER= kuriyama at FreeBSD.org
+MAINTAINER= mm at FreeBSD.org
COMMENT= OpenBSD Relay Daemon
LIB_DEPENDS= event-1.4:${PORTSDIR}/devel/libevent
@@ -28,6 +26,11 @@
_MAKE= ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_ARGS}
RUSER= _relayd
RGROUP= _relayd
+PKGINSTALL= ${WRKDIR}/pkginstall
+SUB_FILES+= pkg-install
+
+SUB_LIST+= RUSER=${RUSER} \
+ RGROUP=${RGROUP}
post-extract:
${MKDIR} ${WRKSRC}
@@ -44,7 +47,7 @@
(cd ${WRKSRCD}; ${_MAKE} ${ALL_TARGET})
pre-su-install:
- @${SETENV} PKG_PREFIX=${PREFIX} RUSER=${RUSER} RGROUP=${RGROUP} \
+ @${SETENV} PKG_PREFIX=${PREFIX} \
${SH} ${PKGINSTALL} ${PORTNAME} PRE-INSTALL
do-install:
Index: distinfo
===================================================================
RCS file: /home/pcvs/ports/net/relayd/distinfo,v
retrieving revision 1.1
diff -u -r1.1 distinfo
--- distinfo 20 Jan 2008 21:38:25 -0000 1.1
+++ distinfo 26 May 2010 20:18:43 -0000
@@ -1,3 +1,3 @@
-MD5 (relayd-4.2.20071221.tar.gz) = 3e6060c3228f2427d4dc3f3740cd4b15
-SHA256 (relayd-4.2.20071221.tar.gz) = e92d777408e87e9c60d5a439affddc6c2ea005fcb116ced937f3ce977e9b3d0d
-SIZE (relayd-4.2.20071221.tar.gz) = 84150
+MD5 (relayd-4.3.tar.gz) = ef1b9754dde65e46b206d36cbf99e77c
+SHA256 (relayd-4.3.tar.gz) = c1e8267b53638246859aa825267647491c319a07fa19b9173aeb892833273d68
+SIZE (relayd-4.3.tar.gz) = 88023
Index: pkg-install
===================================================================
RCS file: pkg-install
diff -N pkg-install
--- pkg-install 20 Jan 2008 21:38:25 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD: ports/net/relayd/pkg-install,v 1.1 2008/01/20 21:38:25 kuriyama Exp $
-
-case $2 in
-PRE-INSTALL)
- USER=${RUSER}
- GROUP=${RGROUP}
- UID=913
- GID=913
-
- if pw group show "${GROUP}" 2>/dev/null; then
- echo "You already have a group \"${GROUP}\", so I will use it."
- else
- if pw groupadd ${GROUP} -g ${GID}; then
- echo "Added group \"${GROUP}\"."
- else
- echo "Adding group \"${GROUP}\" failed..."
- exit 1
- fi
- fi
-
- if pw user show "${USER}" 2>/dev/null; then
- echo "You already have a user \"${USER}\", so I will use it."
- else
- if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
- -d /var/empty -c "Relay Daemon" -s /usr/sbin/nologin
- then
- echo "Added user \"${USER}\"."
- else
- echo "Adding user \"${USER}\" failed..."
- exit 1
- fi
- fi
- ;;
-esac
Index: files/patch-ctl-parser.c
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-ctl-parser.c,v
retrieving revision 1.1
diff -u -r1.1 patch-ctl-parser.c
--- files/patch-ctl-parser.c 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-ctl-parser.c 26 May 2010 20:18:43 -0000
@@ -1,5 +1,5 @@
---- relayctl/parser.c.orig Wed May 30 07:41:48 2007
-+++ relayctl/parser.c Mon Jan 7 21:32:16 2008
+--- relayctl/parser.c.orig 2007-12-20 21:15:43.000000000 +0100
++++ relayctl/parser.c 2010-05-26 21:57:33.759340784 +0200
@@ -18,7 +18,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
@@ -8,14 +8,32 @@
+#include <sys/param.h>
#include <sys/socket.h>
#include <sys/queue.h>
- #include <netinet/in.h>
-@@ -118,6 +118,9 @@
- };
+
+@@ -124,6 +124,9 @@
static struct parse_result res;
-+
+
+const struct token *match_token(const char *, const struct token []);
+void show_valid_args(const struct token []);
-
++
struct parse_result *
parse(int argc, char *argv[])
+ {
+@@ -157,7 +160,7 @@
+ }
+
+ const struct token *
+-match_token(const char *word, const struct token table[])
++match_token(const char *word, const struct token *table)
+ {
+ u_int i, match;
+ const struct token *t = NULL;
+@@ -234,7 +237,7 @@
+ }
+
+ void
+-show_valid_args(const struct token table[])
++show_valid_args(const struct token *table)
+ {
+ int i;
+
Index: files/patch-ctl-relayctl.c
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-ctl-relayctl.c,v
retrieving revision 1.2
diff -u -r1.2 patch-ctl-relayctl.c
--- files/patch-ctl-relayctl.c 8 Apr 2008 15:57:29 -0000 1.2
+++ files/patch-ctl-relayctl.c 26 May 2010 20:18:43 -0000
@@ -1,5 +1,5 @@
---- relayctl/relayctl.c.orig 2007-12-20 21:15:43.000000000 +0100
-+++ relayctl/relayctl.c 2008-03-20 17:15:14.000000000 +0100
+--- relayctl/relayctl.c.orig 2008-01-31 13:12:50.000000000 +0100
++++ relayctl/relayctl.c 2010-05-26 22:00:11.948860981 +0200
@@ -20,6 +20,7 @@
*/
@@ -8,7 +8,24 @@
#include <sys/socket.h>
#include <sys/queue.h>
#include <sys/un.h>
-@@ -297,7 +298,7 @@
+@@ -83,6 +84,7 @@
+ };
+
+ struct imsgbuf *ibuf;
++int error = 0;
+
+ __dead void
+ usage(void)
+@@ -239,7 +241,7 @@
+ close(ctl_sock);
+ free(ibuf);
+
+- return (0);
++ return (error ? 1 : 0);
+ }
+
+ struct imsgname *
+@@ -297,7 +299,7 @@
imn = monitor_lookup(imsg->hdr.type);
printf("%s: imsg type %u len %u peerid %u pid %d\n", imn->name,
imsg->hdr.type, imsg->hdr.len, imsg->hdr.peerid, imsg->hdr.pid);
@@ -17,7 +34,15 @@
if (imn->type == -1)
done = 1;
if (imn->func != NULL)
-@@ -508,7 +509,7 @@
+@@ -423,6 +425,7 @@
+ break;
+ case IMSG_CTL_FAIL:
+ printf("command failed\n");
++ error++;
+ break;
+ default:
+ errx(1, "wrong message in summary: %u", imsg->hdr.type);
+@@ -508,7 +511,7 @@
printf("\t%8s\ttotal: %llu sessions\n"
"\t%8s\tlast: %u/%us %u/h %u/d sessions\n"
"\t%8s\taverage: %u/%us %u/h %u/d sessions\n",
Index: files/patch-d-Makefile
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-Makefile,v
retrieving revision 1.1
diff -u -r1.1 patch-d-Makefile
--- files/patch-d-Makefile 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-Makefile 26 May 2010 20:18:43 -0000
@@ -1,13 +1,18 @@
---- relayd/Makefile.orig Tue Feb 27 04:35:43 2007
-+++ relayd/Makefile Tue Jun 5 20:57:45 2007
-@@ -6,13 +6,20 @@
- check_icmp.c check_tcp.c relay.c carp.c
+--- relayd/Makefile.orig 2008-02-11 11:42:50.000000000 +0100
++++ relayd/Makefile 2010-05-26 21:44:14.034705611 +0200
+@@ -3,17 +3,23 @@
+ PROG= relayd
+ SRCS= parse.y log.c control.c buffer.c imsg.c ssl.c ssl_privsep.c \
+ relayd.c pfe.c pfe_filter.c hce.c relay.c relay_udp.c \
+- carp.c check_icmp.c check_tcp.c check_script.c name2id.c \
+- snmp.c
++ carp.c check_icmp.c check_tcp.c check_script.c name2id.c
MAN= relayd.8 relayd.conf.5
-LDADD= -levent -lssl -lcrypto
+LDADD= -lmd -L${PREFIX}/lib -levent -lssl -lcrypto
DPADD= ${LIBEVENT} ${LIBSSL} ${LIBCRYPTO}
--CFLAGS+= -Wall -I${.CURDIR}
+-CFLAGS+= -Wall -I${.CURDIR} -I${.CURDIR}/../snmpd
+CFLAGS+= -Wall -I${.CURDIR} -I${PREFIX}/include -D__dead='' -DSHA1_DIGEST_LENGTH=SHA_DIGEST_LENGTH -DSHA1_DIGEST_STRING_LENGTH=SHA_DIGEST_LENGTH -DOPENSSL_NO_SHA -DOPENSSL_NO_MD5
CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes
CFLAGS+= -Wmissing-declarations
@@ -15,12 +20,12 @@
-CFLAGS+= -Wsign-compare -Wbounded
+CFLAGS+= -Wsign-compare
CLEANFILES+= y.tab.h
-+
+
+install:
+ $(INSTALL) -m 555 -g wheel -o root relayd $(PREFIX)/sbin
+
+install-man:
+ $(INSTALL) -m 444 -g wheel -o root relayd.conf.5 $(PREFIX)/man/man5
+ $(INSTALL) -m 444 -g wheel -o root relayd.8 $(PREFIX)/man/man8
-
++
.include <bsd.prog.mk>
Index: files/patch-d-check_tcp.c
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-check_tcp.c,v
retrieving revision 1.1
diff -u -r1.1 patch-d-check_tcp.c
--- files/patch-d-check_tcp.c 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-check_tcp.c 26 May 2010 20:18:43 -0000
@@ -1,5 +1,5 @@
---- relayd/check_tcp.c.orig 2007-12-08 02:17:00.000000000 +0900
-+++ relayd/check_tcp.c 2008-01-14 16:47:41.131892553 +0900
+--- relayd/check_tcp.c.orig 2008-03-03 17:58:41.000000000 +0100
++++ relayd/check_tcp.c 2010-05-26 21:58:57.147236785 +0200
@@ -31,7 +31,7 @@
#include <stdlib.h>
#include <errno.h>
@@ -9,7 +9,15 @@
#include <openssl/ssl.h>
-@@ -285,7 +285,7 @@
+@@ -89,6 +89,7 @@
+ }
+
+ cte->host->up = HOST_UP;
++ event_del(&cte->ev);
+ event_set(&cte->ev, s, EV_TIMEOUT|EV_WRITE, tcp_write, cte);
+ event_add(&cte->ev, &tv);
+ return;
+@@ -285,7 +286,7 @@
if (b == NULL)
fatal("out of memory");
*b = '\0';
@@ -18,7 +26,7 @@
cte->host->up = HOST_UP;
return (0);
}
-@@ -316,7 +316,7 @@
+@@ -316,7 +317,7 @@
fatal("out of memory");
*b = '\0';
@@ -27,7 +35,7 @@
host = cte->host;
if (strncmp(head, "HTTP/1.1 ", strlen("HTTP/1.1 ")) &&
strncmp(head, "HTTP/1.0 ", strlen("HTTP/1.0 "))) {
-@@ -363,7 +363,7 @@
+@@ -363,7 +364,7 @@
fatal("out of memory");
*b = '\0';
@@ -36,7 +44,7 @@
host = cte->host;
if ((head = strstr(head, "\r\n\r\n")) == NULL) {
log_debug("check_http_digest: %s failed "
-@@ -373,7 +373,7 @@
+@@ -373,7 +374,7 @@
}
head += strlen("\r\n\r\n");
Index: files/patch-d-control.c
===================================================================
RCS file: files/patch-d-control.c
diff -N files/patch-d-control.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/patch-d-control.c 26 May 2010 20:18:43 -0000
@@ -0,0 +1,58 @@
+--- relayd/control.c.orig 2008-01-31 10:33:39.000000000 +0100
++++ relayd/control.c 2010-05-26 21:52:05.399039423 +0200
+@@ -91,6 +91,7 @@
+
+ session_socket_blockmode(fd, BM_NONBLOCK);
+ control_state.fd = fd;
++ TAILQ_INIT(&ctl_conns);
+
+ return (0);
+ }
+@@ -141,7 +142,7 @@
+
+ session_socket_blockmode(connfd, BM_NONBLOCK);
+
+- if ((c = malloc(sizeof(struct ctl_conn))) == NULL) {
++ if ((c = calloc(1, sizeof(struct ctl_conn))) == NULL) {
+ close(connfd);
+ log_warn("control_accept");
+ return;
+@@ -173,8 +174,10 @@
+ {
+ struct ctl_conn *c;
+
+- if ((c = control_connbyfd(fd)) == NULL)
++ if ((c = control_connbyfd(fd)) == NULL) {
+ log_warn("control_close: fd %d: not found", fd);
++ return;
++ }
+
+ msgbuf_clear(&c->ibuf.w);
+ TAILQ_REMOVE(&ctl_conns, c, entry);
+@@ -199,22 +202,18 @@
+ return;
+ }
+
+- switch (event) {
+- case EV_READ:
++ if (event & EV_READ) {
+ if ((n = imsg_read(&c->ibuf)) == -1 || n == 0) {
+ control_close(fd);
+ return;
+ }
+- break;
+- case EV_WRITE:
++ }
++
++ if (event & EV_WRITE) {
+ if (msgbuf_write(&c->ibuf.w) < 0) {
+ control_close(fd);
+ return;
+ }
+- imsg_event_add(&c->ibuf);
+- return;
+- default:
+- fatalx("unknown event");
+ }
+
+ for (;;) {
Index: files/patch-d-hce.c
===================================================================
RCS file: files/patch-d-hce.c
diff -N files/patch-d-hce.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/patch-d-hce.c 26 May 2010 20:18:43 -0000
@@ -0,0 +1,23 @@
+--- relayd/hce.c.orig 2010-05-26 21:38:41.927187208 +0200
++++ relayd/hce.c 2010-05-26 21:39:18.852527924 +0200
+@@ -167,7 +167,9 @@
+ struct timeval tv;
+ struct table *table;
+
++#if 0
+ snmp_init(env, ibuf_main);
++#endif
+
+ if (!TAILQ_EMPTY(env->sc_tables)) {
+ evtimer_set(&env->sc_ev, hce_launch_checks, env);
+@@ -325,8 +327,10 @@
+ print_availability(host->check_cnt, host->up_cnt));
+ }
+
++#if 0
+ if (host->last_up != host->up)
+ snmp_hosttrap(table, host);
++#endif
+
+ host->last_up = host->up;
+ }
Index: files/patch-d-pfe_filter.c
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-pfe_filter.c,v
retrieving revision 1.1
diff -u -r1.1 patch-d-pfe_filter.c
--- files/patch-d-pfe_filter.c 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-pfe_filter.c 26 May 2010 20:18:43 -0000
@@ -1,45 +1,32 @@
---- relayd/pfe_filter.c.orig 2007-12-21 05:15:43.000000000 +0900
-+++ relayd/pfe_filter.c 2008-01-20 15:31:28.856798863 +0900
-@@ -89,6 +89,7 @@
- sizeof(tables[i].pfrt_name))
+--- relayd/pfe_filter.c.orig 2008-01-31 10:33:39.000000000 +0100
++++ relayd/pfe_filter.c 2010-05-26 21:33:25.449102207 +0200
+@@ -121,12 +121,14 @@
+ }
+
+ void
+-kill_tables(struct relayd *env) {
++kill_tables(struct relayd *env)
++{
+ struct pfioc_table io;
+ struct rdr *rdr;
++ int cnt = 0;
+
+- memset(&io, 0, sizeof(io));
+ TAILQ_FOREACH(rdr, env->sc_rdrs, entry) {
++ memset(&io, 0, sizeof(io));
+ if (strlcpy(io.pfrio_table.pfrt_anchor, RELAYD_ANCHOR "/",
+ sizeof(io.pfrio_table.pfrt_anchor)) >= PF_ANCHOR_NAME_SIZE)
+ goto toolong;
+@@ -134,9 +136,10 @@
+ sizeof(io.pfrio_table.pfrt_anchor)) >= PF_ANCHOR_NAME_SIZE)
goto toolong;
- tables[i].pfrt_flags |= PFR_TFLAG_PERSIST;
-+ log_debug("init_tables: prepare anchor \"%s\" and table \"%s\"", tables[i].pfrt_anchor, tables[i].pfrt_name);
- i++;
+ if (ioctl(env->sc_pf->dev, DIOCRCLRTABLES, &io) == -1)
+- fatal("kill_tables: ioctl faile: ioctl failed");
++ fatal("kill_tables: ioctl failed");
++ cnt += io.pfrio_ndel;
}
- if (i != env->rdrcount)
-@@ -239,10 +240,15 @@
- sizeof(io.pfrio_table.pfrt_name)) >=
- sizeof(io.pfrio_table.pfrt_name))
- goto toolong;
-+ /* pfctl -Tflush */
- if (ioctl(env->pf->dev, DIOCRCLRADDRS, &io) == -1)
- fatal("flush_table: cannot flush table addresses");
-+ /* pfctl -Tzero */
-+#if 0
-+ /* XXX: ioctl(DIOCRCLRTSTATS) requires io.pfrio_esize to be set as sizeof(struct pfr_table), but here doesn't set it. */
- if (ioctl(env->pf->dev, DIOCRCLRTSTATS, &io) == -1)
- fatal("flush_table: cannot flush table stats");
-+#endif
- log_debug("flush_table: flushed table %s", rdr->conf.name);
+- log_debug("kill_tables: deleted %d tables", io.pfrio_ndel);
++ log_debug("kill_tables: deleted %d tables", cnt);
return;
-@@ -321,7 +327,9 @@
- rio.rule.dst.addr.type = PF_ADDR_ADDRMASK;
- rio.rule.dst.port_op = PF_OP_EQ;
- rio.rule.dst.port[0] = address->port;
-+#if 0
- rio.rule.rtableid = -1; /* stay in the main routing table */
-+#endif
- rio.rule.action = PF_RDR;
- if (strlen(rdr->conf.tag))
- (void)strlcpy(rio.rule.tagname, rdr->conf.tag,
-@@ -362,7 +370,7 @@
-
- if (ioctl(env->pf->dev, DIOCADDRULE, &rio) == -1)
- fatal("cannot add rule");
-- log_debug("sync_ruleset: rule added");
-+ log_debug("sync_ruleset: rule added into anchor \"%s\", table \"%s\"", rio.anchor, pio.addr.addr.v.tblname);
- }
- if (transaction_commit(env) == -1)
- log_warn("sync_ruleset: add rules transaction failed");
+ toolong:
Index: files/patch-d-relay.c
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-relay.c,v
retrieving revision 1.1
diff -u -r1.1 patch-d-relay.c
--- files/patch-d-relay.c 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-relay.c 26 May 2010 20:18:43 -0000
@@ -1,5 +1,5 @@
---- relayd/relay.c.orig 2007-12-09 05:36:36.000000000 +0900
-+++ relayd/relay.c 2008-01-14 10:26:05.345356528 +0900
+--- relayd/relay.c.orig 2008-03-03 17:41:36.000000000 +0100
++++ relayd/relay.c 2010-05-26 21:30:14.618289339 +0200
@@ -16,7 +16,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
@@ -9,7 +9,7 @@
#include <sys/queue.h>
#include <sys/time.h>
#include <sys/stat.h>
-@@ -675,6 +675,7 @@
+@@ -662,6 +662,7 @@
&val, sizeof(val)) == -1)
goto bad;
}
@@ -17,7 +17,7 @@
if (proto->tcpflags & (TCPFLAG_SACK|TCPFLAG_NSACK)) {
if (proto->tcpflags & TCPFLAG_NSACK)
val = 0;
-@@ -684,6 +685,7 @@
+@@ -671,6 +672,7 @@
&val, sizeof(val)) == -1)
goto bad;
}
@@ -25,16 +25,17 @@
return (s);
-@@ -1000,7 +1002,7 @@
+@@ -987,7 +989,8 @@
}
}
if (strstr(val, "$TIMEOUT") != NULL) {
-- snprintf(ibuf, sizeof(ibuf), "%lu", rlay->conf.timeout.tv_sec);
-+ snprintf(ibuf, sizeof(ibuf), "%lu", (unsigned long)rlay->conf.timeout.tv_sec);
+- snprintf(ibuf, sizeof(ibuf), "%lu", rlay->rl_conf.timeout.tv_sec);
++ snprintf(ibuf, sizeof(ibuf), "%lu",
++ (unsigned long)rlay->rl_conf.timeout.tv_sec);
if (expand_string(buf, len, "$TIMEOUT", ibuf) != 0)
return (NULL);
}
-@@ -1565,7 +1567,7 @@
+@@ -1552,7 +1555,7 @@
switch (type) {
case DIGEST_SHA1:
case DIGEST_MD5:
@@ -43,16 +44,18 @@
relay_close_http(con, 500,
"failed to allocate digest", 0);
goto fail;
-@@ -2469,7 +2471,7 @@
+@@ -2456,8 +2459,8 @@
goto err;
/* Set session context to the local relay name */
-- if (!SSL_CTX_set_session_id_context(ctx, rlay->conf.name,
-+ if (!SSL_CTX_set_session_id_context(ctx, (unsigned char*)rlay->conf.name,
- strlen(rlay->conf.name)))
+- if (!SSL_CTX_set_session_id_context(ctx, rlay->rl_conf.name,
+- strlen(rlay->rl_conf.name)))
++ if (!SSL_CTX_set_session_id_context(ctx,
++ (unsigned char*)rlay->rl_conf.name, strlen(rlay->rl_conf.name)))
goto err;
-@@ -2849,7 +2851,7 @@
+ return (ctx);
+@@ -2841,7 +2844,7 @@
if (fstat(fd, &st) != 0)
goto fail;
size = st.st_size;
@@ -61,7 +64,7 @@
goto fail;
if (read(fd, buf, size) != size)
goto fail;
-@@ -2857,7 +2859,7 @@
+@@ -2849,7 +2852,7 @@
close(fd);
*len = size + 1;
Index: files/patch-d-relayd.c
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-relayd.c,v
retrieving revision 1.1
diff -u -r1.1 patch-d-relayd.c
--- files/patch-d-relayd.c 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-relayd.c 26 May 2010 20:18:43 -0000
@@ -1,6 +1,6 @@
---- relayd/relayd.c.orig 2008-01-14 10:00:21.487354557 +0900
-+++ relayd/relayd.c 2008-01-14 16:44:45.705572691 +0900
-@@ -16,7 +16,7 @@
+--- relayd/relayd.c.orig 2008-02-13 12:32:59.000000000 +0100
++++ relayd/relayd.c 2010-05-26 22:01:43.807973211 +0200
+@@ -17,7 +17,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
@@ -9,7 +9,7 @@
#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/wait.h>
-@@ -36,7 +36,7 @@
+@@ -37,7 +37,7 @@
#include <unistd.h>
#include <ctype.h>
#include <pwd.h>
@@ -18,7 +18,115 @@
#include <md5.h>
#include <openssl/ssl.h>
-@@ -943,7 +943,7 @@
+@@ -574,8 +574,8 @@
+ struct ctl_demote demote;
+
+ ibuf = ptr;
+- switch (event) {
+- case EV_READ:
++
++ if (event & EV_READ) {
+ if ((n = imsg_read(ibuf)) == -1)
+ fatal("imsg_read_error");
+ if (n == 0) {
+@@ -584,14 +584,13 @@
+ event_loopexit(NULL);
+ return;
+ }
+- break;
+- case EV_WRITE:
++ }
++
++ if (event & EV_WRITE) {
+ if (msgbuf_write(&ibuf->w) == -1)
+ fatal("msgbuf_write");
+ imsg_event_add(ibuf);
+ return;
+- default:
+- fatalx("unknown event");
+ }
+
+ for (;;) {
+@@ -636,8 +635,8 @@
+
+ env = relayd_env;
+ ibuf = ptr;
+- switch (event) {
+- case EV_READ:
++
++ if (event & EV_READ) {
+ if ((n = imsg_read(ibuf)) == -1)
+ fatal("imsg_read error");
+ if (n == 0) {
+@@ -646,14 +645,13 @@
+ event_loopexit(NULL);
+ return;
+ }
+- break;
+- case EV_WRITE:
++ }
++
++ if (event & EV_WRITE) {
+ if (msgbuf_write(&ibuf->w) == -1)
+ fatal("msgbuf_write");
+ imsg_event_add(ibuf);
+ return;
+- default:
+- fatalx("unknown event");
+ }
+
+ for (;;) {
+@@ -673,9 +671,11 @@
+ imsg_compose(ibuf_hce, IMSG_SCRIPT,
+ 0, 0, -1, &scr, sizeof(scr));
+ break;
++#if 0
+ case IMSG_SNMPSOCK:
+ (void)snmp_sendsock(ibuf);
+ break;
++#endif
+ default:
+ log_debug("main_dispatch_hce: unexpected imsg %d",
+ imsg.hdr.type);
+@@ -694,8 +694,8 @@
+ ssize_t n;
+
+ ibuf = ptr;
+- switch (event) {
+- case EV_READ:
++
++ if (event & EV_READ) {
+ if ((n = imsg_read(ibuf)) == -1)
+ fatal("imsg_read error");
+ if (n == 0) {
+@@ -704,14 +704,13 @@
+ event_loopexit(NULL);
+ return;
+ }
+- break;
+- case EV_WRITE:
++ }
++
++ if (event & EV_WRITE) {
+ if (msgbuf_write(&ibuf->w) == -1)
+ fatal("msgbuf_write");
+ imsg_event_add(ibuf);
+ return;
+- default:
+- fatalx("unknown event");
+ }
+
+ for (;;) {
+@@ -871,7 +870,7 @@
+ {
+ struct timeval tv_next, tv_now, tv;
+
+- if (gettimeofday(&tv_now, NULL))
++ if (gettimeofday(&tv_now, NULL) == -1)
+ fatal("event_again: gettimeofday");
+
+ bcopy(end, &tv_next, sizeof(tv_next));
+@@ -950,7 +949,7 @@
{
switch (type) {
case DIGEST_SHA1:
Index: files/patch-d-relayd.conf.5
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-relayd.conf.5,v
retrieving revision 1.1
diff -u -r1.1 patch-d-relayd.conf.5
--- files/patch-d-relayd.conf.5 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-relayd.conf.5 26 May 2010 20:18:43 -0000
@@ -1,5 +1,5 @@
---- relayd/relayd.conf.5.orig 2007-12-12 23:55:12.000000000 +0900
-+++ relayd/relayd.conf.5 2008-01-14 08:49:46.404074048 +0900
+--- relayd/relayd.conf.5.orig 2008-03-04 00:15:55.000000000 +0100
++++ relayd/relayd.conf.5 2010-05-26 21:43:22.925137304 +0200
@@ -101,20 +101,7 @@
Here are the settings that can be set globally:
.Pp
@@ -22,7 +22,24 @@
.Xc
Set the interval in seconds at which the hosts will be checked.
The default interval is 10 seconds.
-@@ -894,7 +881,7 @@
+@@ -147,16 +134,6 @@
+ runs 5 relay processes by default and every process will handle
+ all configured relays.
+ .Pp
+-.It Ic send trap
+-Send an SNMP trap when the state of a host changes.
+-.Xr relayd 8
+-will try to connect to
+-.Xr snmpd 8
+-and request it send a trap to the registered trap receivers;
+-see
+-.Xr snmpd.conf 5
+-for more information about the configuration.
+-.Pp
+ .It Xo
+ .Ic timeout Ar number
+ .Xc
+@@ -907,7 +884,7 @@
.El
.Sh FILES
.Bl -tag -width "/etc/ssl/private/address.keyXX" -compact
Index: files/patch-d-relayd.h
===================================================================
RCS file: /home/pcvs/ports/net/relayd/files/patch-d-relayd.h,v
retrieving revision 1.1
diff -u -r1.1 patch-d-relayd.h
--- files/patch-d-relayd.h 20 Jan 2008 21:38:26 -0000 1.1
+++ files/patch-d-relayd.h 26 May 2010 20:18:43 -0000
@@ -1,5 +1,5 @@
---- relayd/relayd.h.orig 2007-12-21 05:15:43.000000000 +0900
-+++ relayd/relayd.h 2008-01-14 10:02:42.803752108 +0900
+--- relayd/relayd.h.orig 2008-02-13 12:32:59.000000000 +0100
++++ relayd/relayd.h 2010-05-26 21:38:30.383078551 +0200
@@ -20,7 +20,7 @@
#include <sys/tree.h>
@@ -9,9 +9,9 @@
#define RELAYD_SOCKET "/var/run/relayd.sock"
#define PF_SOCKET "/dev/pf"
#define RELAYD_USER "_relayd"
-@@ -56,6 +56,15 @@
- #define PURGE_PROTOS 0x08
- #define PURGE_EVERYTHING 0xff
+@@ -64,6 +64,15 @@
+ #define DPRINTF(x...) do {} while(0)
+ #endif
+#define SIMPLEQ_HEAD STAILQ_HEAD
+#define SIMPLEQ_FIRST STAILQ_FIRST
@@ -25,3 +25,13 @@
/* buffer */
struct buf {
TAILQ_ENTRY(buf) entry;
+@@ -843,7 +852,9 @@
+ void pn_unref(u_int16_t);
+ void pn_ref(u_int16_t);
+
++#if 0
+ /* snmp.c */
+ void snmp_init(struct relayd *, struct imsgbuf *);
+ int snmp_sendsock(struct imsgbuf *);
+ void snmp_hosttrap(struct table *, struct host *);
++#endif
Index: files/pkg-install.in
===================================================================
RCS file: files/pkg-install.in
diff -N files/pkg-install.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/pkg-install.in 26 May 2010 20:18:43 -0000
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD$
+
+case $2 in
+PRE-INSTALL)
+ USER=%%RUSER%%
+ GROUP=%%RGROUP%%
+ UID=913
+ GID=913
+
+ if pw group show "${GROUP}" 2>/dev/null; then
+ echo "You already have a group \"${GROUP}\", so I will use it."
+ else
+ if pw groupadd ${GROUP} -g ${GID}; then
+ echo "Added group \"${GROUP}\"."
+ else
+ echo "Adding group \"${GROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if pw user show "${USER}" 2>/dev/null; then
+ echo "You already have a user \"${USER}\", so I will use it."
+ else
+ if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
+ -d /var/empty -c "Relay Daemon" -s /usr/sbin/nologin
+ then
+ echo "Added user \"${USER}\"."
+ else
+ echo "Adding user \"${USER}\" failed..."
+ exit 1
+ fi
+ fi
+ ;;
+esac
--- relayd-4.3.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list