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