aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/openbgpd/Makefile7
-rw-r--r--net/openbgpd/distinfo9
-rw-r--r--net/openbgpd/files/patch-bgpctl_Makefile15
-rw-r--r--net/openbgpd/files/patch-bgpctl_bgpctl.813
-rw-r--r--net/openbgpd/files/patch-bgpctl_bgpctl.c24
-rw-r--r--net/openbgpd/files/patch-bgpctl_fmt_scaled.c126
-rw-r--r--net/openbgpd/files/patch-bgpctl_util.h123
-rw-r--r--net/openbgpd/files/patch-bgpd_bgpd.88
-rw-r--r--net/openbgpd/files/patch-bgpd_bgpd.conf.513
-rw-r--r--net/openbgpd/files/patch-bgpd_carp.c21
-rw-r--r--net/openbgpd/files/patch-bgpd_kroute.c166
-rw-r--r--net/openbgpd/files/patch-bgpd_parse.y19
-rw-r--r--net/openbgpd/files/patch-bgpd_printconf.c11
-rw-r--r--net/openbgpd/files/patch-bgpd_rde_attr.c20
-rw-r--r--net/openbgpd/files/patch-bgpd_rde_rib.c17
-rw-r--r--net/openbgpd/files/patch-bgpd_rde_update.c19
-rw-r--r--net/openbgpd/files/patch-bgpd_session.c13
-rw-r--r--net/openbgpd/files/patch-bgpd_util.c10
18 files changed, 521 insertions, 113 deletions
diff --git a/net/openbgpd/Makefile b/net/openbgpd/Makefile
index b9e3f249e420..4c58cb6e622d 100644
--- a/net/openbgpd/Makefile
+++ b/net/openbgpd/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME?= openbgpd
-PORTVERSION?= 4.0
+PORTVERSION?= 4.2
PORTREVISION?= 0
CATEGORIES= net
MASTER_SITES= ftp://ftp.openbsd.org/pub/OpenBSD/OpenBGPD/:openbsd \
@@ -68,7 +68,9 @@ post-patch:
@${REINPLACE_CMD} -e "s|__dead||" \
${WRKSRC}/bgpd/bgpd.c \
${WRKSRC}/bgpd/bgpd.h \
- ${WRKSRC}/bgpctl/bgpctl.c
+ ${WRKSRC}/bgpctl/bgpctl.c \
+ ${WRKSRC}/bgpctl/irrfilter.h \
+ ${WRKSRC}/bgpctl/irrfilter.c
@${REINPLACE_CMD} -e "s|SIMPLEQ|STAILQ|" ${WRKSRC}/bgpd/*.[chy]
@${REINPLACE_CMD} -e "s|<net/if_media.h>|\"if_media.h\"|" ${WRKSRC}/bgpctl/bgpctl.c
@${REINPLACE_CMD} -e "s|pfkey.c|pfkey_compat.c|" ${WRKSRC}/bgpd/Makefile
@@ -78,6 +80,7 @@ post-patch:
${WRKSRC}/bgpd/rde_update.c
@${REINPLACE_CMD} -e "s|rtm_fmask|rtm_use|" ${WRKSRC}/bgpd/kroute.c
@${REINPLACE_CMD} -e "s|RTLABEL_LEN|PFTABLE_LEN|" ${WRKSRC}/bgpd/bgpd.h
+ @${REINPLACE_CMD} -e "s|ulong|unsigned\ long|" ${WRKSRC}/bgpctl/irr_parser.c
do-build:
.for i in ${SUBDIRS}
diff --git a/net/openbgpd/distinfo b/net/openbgpd/distinfo
index 10a64396bd71..50f81c01f67f 100644
--- a/net/openbgpd/distinfo
+++ b/net/openbgpd/distinfo
@@ -1,12 +1,9 @@
-MD5 (openbgpd/openbgpd-4.0.tgz) = aced25bd206de43738f9be9c87a6a322
-SHA256 (openbgpd/openbgpd-4.0.tgz) = bc2f3f40e81824a4a7bebb18f1230658b9d0449cccddadbd3dd4f528b4f28b30
-SIZE (openbgpd/openbgpd-4.0.tgz) = 141510
+MD5 (openbgpd/openbgpd-4.2.tgz) = e5f16db7f76648f08eec67727dc5342f
+SHA256 (openbgpd/openbgpd-4.2.tgz) = fb64f17acb9360bf91c7d76f406b86fbb04578c256a48d178e9e7e198e28e0de
+SIZE (openbgpd/openbgpd-4.2.tgz) = 158762
MD5 (openbgpd/if_media.h) = 4ff9297f5c133425dafe3ca565c0f811
SHA256 (openbgpd/if_media.h) = 58225d0ed363c2beb23426f0f8254089d4541c3334776f3750ba434d4491a1d1
SIZE (openbgpd/if_media.h) = 23762
-MD5 (openbgpd/pfkey_compat.c) = 8c3bdf02fd308b327bd30e09674c1858
-SHA256 (openbgpd/pfkey_compat.c) = 46f559c945552ec11174d218c24eeacb3d0bc1dc010a80f07af525b751df1180
-SIZE (openbgpd/pfkey_compat.c) = 360
MD5 (openbgpd/hash.h) = 0c397692b9b152f1bca968b6248bc09c
SHA256 (openbgpd/hash.h) = 0c5561c6765325f49d82d5c5fd9471dbfadf21f44e554758eb112a23f7c317b1
SIZE (openbgpd/hash.h) = 3488
diff --git a/net/openbgpd/files/patch-bgpctl_Makefile b/net/openbgpd/files/patch-bgpctl_Makefile
index aa22b8ca803d..d3c1aca3f17e 100644
--- a/net/openbgpd/files/patch-bgpctl_Makefile
+++ b/net/openbgpd/files/patch-bgpctl_Makefile
@@ -1,15 +1,10 @@
---- bgpctl/Makefile 17 Aug 2006 16:46:38 -0000 1.7
-+++ bgpctl/Makefile 8 Feb 2007 10:32:19 -0000
-@@ -4,6 +4,7 @@
-
- PROG= bgpctl
+--- bgpctl/Makefile 2007-03-03 12:45:30.000000000 +0100
++++ bgpctl/Makefile 2008-03-18 13:27:29.000000000 +0100
+@@ -6,6 +6,7 @@
SRCS= bgpctl.c parser.c buffer.c imsg.c util.c
+ SRCS+= irrfilter.c whois.c irr_asset.c irr_prefix.c irr_output.c
+ SRCS+= irr_parser.c
+SRCS+= fmt_scaled.c
CFLAGS+= -Wall
CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes
CFLAGS+= -Wmissing-declarations
-Index: bgpctl.c
-===================================================================
-RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v
-retrieving revision 1.110
-diff -u -p -r1.110 bgpctl.c
diff --git a/net/openbgpd/files/patch-bgpctl_bgpctl.8 b/net/openbgpd/files/patch-bgpctl_bgpctl.8
index 9000ace56664..1cdd3fec17fc 100644
--- a/net/openbgpd/files/patch-bgpctl_bgpctl.8
+++ b/net/openbgpd/files/patch-bgpctl_bgpctl.8
@@ -1,15 +1,10 @@
-
-$FreeBSD$
-
---- bgpctl/bgpctl.8.orig
-+++ bgpctl/bgpctl.8
-@@ -138,8 +138,8 @@
- and message counters.
+--- bgpctl/bgpctl.8 2007-05-31 21:20:22.000000000 +0200
++++ bgpctl/bgpctl.8 2008-03-18 14:51:41.000000000 +0100
+@@ -240,7 +240,7 @@
.El
.Sh FILES
--.Bl -tag -width "/etc/bgpd.conf" -compact
+ .Bl -tag -width "/var/run/bgpd.sockXXX" -compact
-.It Pa /etc/bgpd.conf
-+.Bl -tag -width "%%PREFIX%%/etc/bgpd.conf" -compact
+.It Pa %%PREFIX%%/etc/bgpd.conf
default
.Xr bgpd 8
diff --git a/net/openbgpd/files/patch-bgpctl_bgpctl.c b/net/openbgpd/files/patch-bgpctl_bgpctl.c
index 98a35f311807..ff3e155fb20f 100644
--- a/net/openbgpd/files/patch-bgpctl_bgpctl.c
+++ b/net/openbgpd/files/patch-bgpctl_bgpctl.c
@@ -1,6 +1,14 @@
---- bgpctl/bgpctl.c 28 Aug 2006 05:28:49 -0000 1.110
-+++ bgpctl/bgpctl.c 8 Feb 2007 10:32:19 -0000
-@@ -29,13 +29,13 @@
+--- bgpctl/bgpctl.c 2007-08-06 21:16:06.000000000 +0200
++++ bgpctl/bgpctl.c 2008-03-18 14:27:24.000000000 +0100
+@@ -20,7 +20,6 @@
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <net/if.h>
+-#include <net/if_media.h>
+ #include <net/if_types.h>
+
+ #include <err.h>
+@@ -29,14 +28,19 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -12,10 +20,12 @@
#include "log.h"
#include "parser.h"
+#include "util.h"
+ #include "irrfilter.h"
++#include "if_media.h"
++
++#if defined(__FreeBSD__) /* FreeBSD has no LINK_STATE_IS_UP macro. */
++#define LINK_STATE_IS_UP(_s) ((_s) >= LINK_STATE_UP)
++#endif /* defined(__FreeBSD__) */
enum neighbor_views {
NV_DEFAULT,
-Index: fmt_scaled.c
-===================================================================
-RCS file: fmt_scaled.c
-diff -N fmt_scaled.c
diff --git a/net/openbgpd/files/patch-bgpctl_fmt_scaled.c b/net/openbgpd/files/patch-bgpctl_fmt_scaled.c
index fb39929e296b..66e5b90ef4c9 100644
--- a/net/openbgpd/files/patch-bgpctl_fmt_scaled.c
+++ b/net/openbgpd/files/patch-bgpctl_fmt_scaled.c
@@ -1,7 +1,7 @@
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ bgpctl/fmt_scaled.c 8 Feb 2007 10:32:19 -0000
-@@ -0,0 +1,152 @@
-+/* $OpenBSD: fmt_scaled.c,v 1.8 2005/10/19 18:48:11 deraadt Exp $ */
++++ bgpctl/fmt_scaled.c 2008-03-18 13:27:29.000000000 +0100
+@@ -0,0 +1,268 @@
++/* $OpenBSD: fmt_scaled.c,v 1.9 2007/03/20 03:42:52 tedu Exp $ */
+
+/*
+ * Copyright (c) 2001, 2002, 2003 Ian F. Darwin. All rights reserved.
@@ -68,6 +68,122 @@
+
+#define MAX_DIGITS (SCALE_LENGTH * 3) /* XXX strlen(sprintf("%lld", -1)? */
+
++/** Convert the given input string "scaled" into numeric in "result".
++ * Return 0 on success, -1 and errno set on error.
++ */
++int
++scan_scaled(char *scaled, long long *result)
++{
++ char *p = scaled;
++ int sign = 0;
++ unsigned int i, ndigits = 0, fract_digits = 0;
++ long long scale_fact = 1, whole = 0, fpart = 0;
++
++ /* Skip leading whitespace */
++ while (isascii(*p) && isspace(*p))
++ ++p;
++
++ /* Then at most one leading + or - */
++ while (*p == '-' || *p == '+') {
++ if (*p == '-') {
++ if (sign) {
++ errno = EINVAL;
++ return -1;
++ }
++ sign = -1;
++ ++p;
++ } else if (*p == '+') {
++ if (sign) {
++ errno = EINVAL;
++ return -1;
++ }
++ sign = +1;
++ ++p;
++ }
++ }
++
++ /* Main loop: Scan digits, find decimal point, if present.
++ * We don't allow exponentials, so no scientific notation
++ * (but note that E for Exa might look like e to some!).
++ * Advance 'p' to end, to get scale factor.
++ */
++ for (; isascii(*p) && (isdigit(*p) || *p=='.'); ++p) {
++ if (*p == '.') {
++ if (fract_digits > 0) { /* oops, more than one '.' */
++ errno = EINVAL;
++ return -1;
++ }
++ fract_digits = 1;
++ continue;
++ }
++
++ i = (*p) - '0'; /* whew! finally a digit we can use */
++ if (fract_digits > 0) {
++ if (fract_digits >= MAX_DIGITS-1)
++ /* ignore extra fractional digits */
++ continue;
++ fract_digits++; /* for later scaling */
++ fpart *= 10;
++ fpart += i;
++ } else { /* normal digit */
++ if (++ndigits >= MAX_DIGITS) {
++ errno = ERANGE;
++ return -1;
++ }
++ whole *= 10;
++ whole += i;
++ }
++ }
++
++ if (sign) {
++ whole *= sign;
++ fpart *= sign;
++ }
++
++ /* If no scale factor given, we're done. fraction is discarded. */
++ if (!*p) {
++ *result = whole;
++ return 0;
++ }
++
++ /* Validate scale factor, and scale whole and fraction by it. */
++ for (i = 0; i < SCALE_LENGTH; i++) {
++
++ /** Are we there yet? */
++ if (*p == scale_chars[i] ||
++ *p == tolower(scale_chars[i])) {
++
++ /* If it ends with alphanumerics after the scale char, bad. */
++ if (isalnum(*(p+1))) {
++ errno = EINVAL;
++ return -1;
++ }
++ scale_fact = scale_factors[i];
++
++ /* scale whole part */
++ whole *= scale_fact;
++
++ /* truncate fpart so it does't overflow.
++ * then scale fractional part.
++ */
++ while (fpart >= LLONG_MAX / scale_fact) {
++ fpart /= 10;
++ fract_digits--;
++ }
++ fpart *= scale_fact;
++ if (fract_digits > 0) {
++ for (i = 0; i < fract_digits -1; i++)
++ fpart /= 10;
++ }
++ whole += fpart;
++ *result = whole;
++ return 0;
++ }
++ }
++ errno = ERANGE;
++ return -1;
++}
++
+/* Format the given "number" into human-readable form in "result".
+ * Result must point to an allocated buffer of length FMT_SCALED_STRSIZE.
+ * Return 0 on success, -1 and errno set if error.
@@ -153,7 +269,3 @@
+ return 0;
+}
+#endif
-Index: util.h
-===================================================================
-RCS file: util.h
-diff -N util.h
diff --git a/net/openbgpd/files/patch-bgpctl_util.h b/net/openbgpd/files/patch-bgpctl_util.h
index a2d4cd97ba20..47ad44a5d6ac 100644
--- a/net/openbgpd/files/patch-bgpctl_util.h
+++ b/net/openbgpd/files/patch-bgpctl_util.h
@@ -1,11 +1,122 @@
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ bgpctl/util.h 8 Feb 2007 10:32:19 -0000
-@@ -0,0 +1,8 @@
+--- /dev/null 1970-01-01 01:00:00.000000000 +0100
++++ bgpctl/util.h 2008-03-18 13:27:29.000000000 +0100
+@@ -0,0 +1,119 @@
++/* $OpenBSD: util.h,v 1.27 2006/06/14 02:14:25 krw Exp $ */
++/* $NetBSD: util.h,v 1.2 1996/05/16 07:00:22 thorpej Exp $ */
++
++/*-
++ * Copyright (c) 1995
++ * The Regents of the University of California. All rights reserved.
++ * Portions Copyright (c) 1996, Jason Downs. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#ifndef _UTIL_H_
++#define _UTIL_H_
++
++#include <sys/cdefs.h>
++#include <sys/types.h>
++
++/*
++ * fparseln() specific operation flags.
++ */
++#define FPARSELN_UNESCESC 0x01
++#define FPARSELN_UNESCCONT 0x02
++#define FPARSELN_UNESCCOMM 0x04
++#define FPARSELN_UNESCREST 0x08
++#define FPARSELN_UNESCALL 0x0f
++
+/*
-+ * Written by Claudio Jeker, Public Domain
++ * opendev() specific operation flags.
+ */
++#define OPENDEV_PART 0x01 /* Try to open the raw partition. */
++#define OPENDEV_BLCK 0x04 /* Open block, not character device. */
+
-+#define FMT_SCALED_STRSIZE 7
++/*
++ * uucplock(3) specific flags.
++ */
++#define UU_LOCK_INUSE (1)
++#define UU_LOCK_OK (0)
++#define UU_LOCK_OPEN_ERR (-1)
++#define UU_LOCK_READ_ERR (-2)
++#define UU_LOCK_CREAT_ERR (-3)
++#define UU_LOCK_WRITE_ERR (-4)
++#define UU_LOCK_LINK_ERR (-5)
++#define UU_LOCK_TRY_ERR (-6)
++#define UU_LOCK_OWNER_ERR (-7)
++
++/*
++ * fmt_scaled(3) specific flags.
++ */
++#define FMT_SCALED_STRSIZE 7 /* minus sign, 4 digits, suffix, null byte */
++
++/*
++ * stub struct definitions.
++ */
++struct __sFILE;
++struct login_cap;
++struct passwd;
++struct termios;
++struct utmp;
++struct winsize;
+
-+int fmt_scaled(long long number, char *result);
++__BEGIN_DECLS
++char *fparseln(struct __sFILE *, size_t *, size_t *, const char[3], int);
++void login(struct utmp *);
++int login_tty(int);
++int logout(const char *);
++void logwtmp(const char *, const char *, const char *);
++int opendev(char *, int, int, char **);
++int pidfile(const char *);
++void pw_setdir(const char *);
++char *pw_file(const char *);
++int pw_lock(int retries);
++int pw_mkdb(char *, int);
++int pw_abort(void);
++void pw_init(void);
++void pw_edit(int, const char *);
++void pw_prompt(void);
++void pw_copy(int, int, const struct passwd *, const struct passwd *);
++int pw_scan(char *, struct passwd *, int *);
++void pw_error(const char *, int, int);
++int openpty(int *, int *, char *, struct termios *, struct winsize *);
++int opendisk(const char *path, int flags, char *buf, size_t buflen,
++ int iscooked);
++pid_t forkpty(int *, char *, struct termios *, struct winsize *);
++int getmaxpartitions(void);
++int getrawpartition(void);
++void login_fbtab(const char *, uid_t, gid_t);
++int login_check_expire(struct __sFILE *, struct passwd *, char *, int);
++char *readlabelfs(char *, int);
++const char *uu_lockerr(int _uu_lockresult);
++int uu_lock(const char *_ttyname);
++int uu_lock_txfr(const char *_ttyname, pid_t _pid);
++int uu_unlock(const char *_ttyname);
++int fmt_scaled(long long number, char *result);
++int scan_scaled(char *scaled, long long *result);
++__END_DECLS
+
++#endif /* !_UTIL_H_ */
diff --git a/net/openbgpd/files/patch-bgpd_bgpd.8 b/net/openbgpd/files/patch-bgpd_bgpd.8
index f9de7f4f879a..a13141fb74d2 100644
--- a/net/openbgpd/files/patch-bgpd_bgpd.8
+++ b/net/openbgpd/files/patch-bgpd_bgpd.8
@@ -1,5 +1,5 @@
---- bgpd/bgpd.8.orig Tue May 16 17:14:46 2006
-+++ bgpd/bgpd.8 Tue May 16 17:16:27 2006
+--- bgpd/bgpd.8 2007-05-31 21:20:22.000000000 +0200
++++ bgpd/bgpd.8 2008-03-18 14:54:19.000000000 +0100
@@ -48,9 +48,9 @@
.Nm
is usually started at boot time, and can be enabled by
@@ -12,7 +12,7 @@
.Pp
See
.Xr rc 8
-@@ -92,7 +92,7 @@
+@@ -117,7 +117,7 @@
.Ar file
as the configuration file,
instead of the default
@@ -21,7 +21,7 @@
.It Fl n
Configtest mode.
Only check the configuration file for validity.
-@@ -110,7 +110,7 @@
+@@ -135,7 +135,7 @@
.El
.Sh FILES
.Bl -tag -width "/var/run/bgpd.sockXXX" -compact
diff --git a/net/openbgpd/files/patch-bgpd_bgpd.conf.5 b/net/openbgpd/files/patch-bgpd_bgpd.conf.5
index 4946c71f101a..40b519c40bc6 100644
--- a/net/openbgpd/files/patch-bgpd_bgpd.conf.5
+++ b/net/openbgpd/files/patch-bgpd_bgpd.conf.5
@@ -1,9 +1,6 @@
-
-$FreeBSD$
-
---- bgpd/bgpd.conf.5.orig
-+++ bgpd/bgpd.conf.5
-@@ -431,11 +431,11 @@
+--- bgpd/bgpd.conf.5 2007-05-31 21:20:22.000000000 +0200
++++ bgpd/bgpd.conf.5 2008-03-18 14:55:31.000000000 +0100
+@@ -611,11 +611,11 @@
With
.Xr isakmpd 8 ,
it is sufficient to copy the peer's public key, found in
@@ -17,8 +14,8 @@ $FreeBSD$
The local public key must be copied to the peer in the same way.
As
.Xr bgpd 8
-@@ -819,8 +819,8 @@
- .Em AS path .
+@@ -1133,8 +1133,8 @@
+ is a local non-transitive attribute and a bgpd-specific extension.
.El
.Sh FILES
-.Bl -tag -width "/etc/bgpd.conf" -compact
diff --git a/net/openbgpd/files/patch-bgpd_carp.c b/net/openbgpd/files/patch-bgpd_carp.c
index eb6c4e3b10cb..fee9e485761e 100644
--- a/net/openbgpd/files/patch-bgpd_carp.c
+++ b/net/openbgpd/files/patch-bgpd_carp.c
@@ -1,6 +1,6 @@
---- bgpd/carp.c 19 Jun 2006 12:06:24 -0000 1.3
-+++ bgpd/carp.c 8 Feb 2007 10:31:16 -0000
-@@ -102,28 +102,7 @@ carp_demote_shutdown(void)
+--- bgpd/carp.c 2007-04-23 16:52:28.000000000 +0200
++++ bgpd/carp.c 2008-03-18 13:27:29.000000000 +0100
+@@ -102,28 +102,7 @@
int
carp_demote_get(char *group)
{
@@ -21,16 +21,15 @@
- else
- log_warn("carp_demote_get: ioctl");
- close(s);
-- return (-1);
+ return (-1);
- }
-
- close(s);
- return ((int)ifgr.ifgr_attrib.ifg_carp_demoted);
-+ return (-1);
}
int
-@@ -156,26 +135,5 @@ carp_demote_set(char *group, int demote)
+@@ -156,26 +135,5 @@
int
carp_demote_ioctl(char *group, int demote)
{
@@ -39,7 +38,7 @@
-
- if ((s = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
- log_warn("carp_demote_get: socket");
-- return (-1);
+ return (-1);
- }
-
- bzero(&ifgr, sizeof(ifgr));
@@ -54,12 +53,6 @@
- log_info("%s the demote state of group '%s'",
- (demote > 0) ? "incremented" : "decremented", group);
-
-- close (s);
+- close(s);
- return (res);
-+ return (-1);
}
-Index: kroute.c
-===================================================================
-RCS file: /cvs/src/usr.sbin/bgpd/kroute.c,v
-retrieving revision 1.147
-diff -u -p -r1.147 kroute.c
diff --git a/net/openbgpd/files/patch-bgpd_kroute.c b/net/openbgpd/files/patch-bgpd_kroute.c
index a1c80cf25798..4dddba4398f4 100644
--- a/net/openbgpd/files/patch-bgpd_kroute.c
+++ b/net/openbgpd/files/patch-bgpd_kroute.c
@@ -1,50 +1,136 @@
---- bgpd/kroute.c 3 Aug 2006 22:40:25 -0000 1.147
-+++ bgpd/kroute.c 8 Feb 2007 10:31:16 -0000
-@@ -1732,7 +1732,9 @@ send_rtmsg(int fd, int action, struct kr
- struct sockaddr_in prefix;
- struct sockaddr_in nexthop;
- struct sockaddr_in mask;
-+#if 0
- struct sockaddr_rtlabel label;
-+#endif
- } r;
+--- bgpd/kroute.c 2007-05-11 13:27:59.000000000 +0200
++++ bgpd/kroute.c 2008-05-28 11:04:19.000000000 +0200
+@@ -1738,7 +1738,9 @@
+ struct sockaddr_in prefix;
+ struct sockaddr_in nexthop;
+ struct sockaddr_in mask;
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ struct sockaddr_rtlabel label;
++#endif /* !defined(__FreeBSD__) */
+ int iovcnt = 0;
if (kr_state.fib_sync == 0)
-@@ -1765,9 +1767,11 @@ send_rtmsg(int fd, int action, struct kr
- r.mask.sin_family = AF_INET;
- r.mask.sin_addr.s_addr = htonl(prefixlen2mask(kroute->prefixlen));
-
-+#if 0
- r.label.sr_len = sizeof(r.label);
- strlcpy(r.label.sr_label, rtlabel_id2name(kroute->labelid),
- sizeof(r.label.sr_label));
+@@ -1748,14 +1750,16 @@
+ bzero(&hdr, sizeof(hdr));
+ hdr.rtm_version = RTM_VERSION;
+ hdr.rtm_type = action;
++#if !defined(__FreeBSD__) /* XXX: FreeBSD has no multiple routing tables */
+ hdr.rtm_tableid = kr_state.rtableid;
+#endif
+ hdr.rtm_flags = RTF_PROTO1;
+ if (kroute->flags & F_BLACKHOLE)
+ hdr.rtm_flags |= RTF_BLACKHOLE;
+ if (kroute->flags & F_REJECT)
+ hdr.rtm_flags |= RTF_REJECT;
+ if (action == RTM_CHANGE) /* reset these flags on change */
+- hdr.rtm_fmask = RTF_REJECT|RTF_BLACKHOLE;
++ hdr.rtm_use = RTF_REJECT|RTF_BLACKHOLE;
+ hdr.rtm_seq = kr_state.rtseq++; /* overflow doesn't matter */
+ hdr.rtm_msglen = sizeof(hdr);
+ /* adjust iovec */
+@@ -1799,6 +1803,7 @@
+ iov[iovcnt++].iov_len = sizeof(mask);
+
+ if (kroute->labelid) {
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ bzero(&label, sizeof(label));
+ label.sr_len = sizeof(label);
+ strlcpy(label.sr_label, rtlabel_id2name(kroute->labelid),
+@@ -1809,6 +1814,7 @@
+ /* adjust iovec */
+ iov[iovcnt].iov_base = &label;
+ iov[iovcnt++].iov_len = sizeof(label);
++#endif /* !defined(__FreeBSD__) */
+ }
retry:
- if (write(fd, &r, sizeof(r)) == -1) {
-@@ -1808,7 +1812,9 @@ send_rt6msg(int fd, int action, struct k
- struct sockaddr_in6 prefix;
- struct sockaddr_in6 nexthop;
- struct sockaddr_in6 mask;
-+#if 0
- struct sockaddr_rtlabel label;
-+#endif
- } r;
+@@ -1850,7 +1856,9 @@
+ struct sockaddr_in6 prefix;
+ struct sockaddr_in6 nexthop;
+ struct sockaddr_in6 mask;
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ struct sockaddr_rtlabel label;
++#endif /* !defined(__FreeBSD__) */
+ int iovcnt = 0;
if (kr_state.fib_sync == 0)
-@@ -1841,9 +1847,11 @@ send_rt6msg(int fd, int action, struct k
- memcpy(&r.mask.sin6_addr, prefixlen2mask6(kroute->prefixlen),
- sizeof(struct in6_addr));
-
-+#if 0
- r.label.sr_len = sizeof(r.label);
- strlcpy(r.label.sr_label, rtlabel_id2name(kroute->labelid),
- sizeof(r.label.sr_label));
+@@ -1860,14 +1868,16 @@
+ bzero(&hdr, sizeof(hdr));
+ hdr.rtm_version = RTM_VERSION;
+ hdr.rtm_type = action;
++#if !defined(__FreeBSD__) /* XXX: FreeBSD has no multiple routing tables */
+ hdr.rtm_tableid = kr_state.rtableid;
+#endif
+ hdr.rtm_flags = RTF_PROTO1;
+ if (kroute->flags & F_BLACKHOLE)
+ hdr.rtm_flags |= RTF_BLACKHOLE;
+ if (kroute->flags & F_REJECT)
+ hdr.rtm_flags |= RTF_REJECT;
+ if (action == RTM_CHANGE) /* reset these flags on change */
+- hdr.rtm_fmask = RTF_REJECT|RTF_BLACKHOLE;
++ hdr.rtm_use = RTF_REJECT|RTF_BLACKHOLE;
+ hdr.rtm_seq = kr_state.rtseq++; /* overflow doesn't matter */
+ hdr.rtm_msglen = sizeof(hdr);
+ /* adjust iovec */
+@@ -1914,6 +1924,7 @@
+ iov[iovcnt++].iov_len = sizeof(mask);
+
+ if (kroute->labelid) {
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ bzero(&label, sizeof(label));
+ label.sr_len = sizeof(label);
+ strlcpy(label.sr_label, rtlabel_id2name(kroute->labelid),
+@@ -1924,6 +1935,7 @@
+ /* adjust iovec */
+ iov[iovcnt].iov_base = &label;
+ iov[iovcnt++].iov_len = sizeof(label);
++#endif /* !defined(__FreeBSD__) */
+ }
retry:
- if (write(fd, &r, sizeof(r)) == -1) {
-Index: pfkey_compat.c
-===================================================================
-RCS file: pfkey_compat.c
-diff -N pfkey_compat.c
+@@ -1960,8 +1972,8 @@
+ int
+ fetchtable(u_int rtableid, int connected_only)
+ {
+- size_t len;
+- int mib[7];
++ size_t len;
++ int mib[6];
+ char *buf, *next, *lim;
+ struct rt_msghdr *rtm;
+ struct sockaddr *sa, *gw, *rti_info[RTAX_MAX];
+@@ -1976,9 +1988,8 @@
+ mib[3] = 0;
+ mib[4] = NET_RT_DUMP;
+ mib[5] = 0;
+- mib[6] = rtableid;
+
+- if (sysctl(mib, 7, NULL, &len, NULL, 0) == -1) {
++ if (sysctl(mib, 6, NULL, &len, NULL, 0) == -1) {
+ if (rtableid != 0 && errno == EINVAL) /* table nonexistant */
+ return (0);
+ log_warn("sysctl");
+@@ -1988,7 +1999,7 @@
+ log_warn("fetchtable");
+ return (-1);
+ }
+- if (sysctl(mib, 7, buf, &len, NULL, 0) == -1) {
++ if (sysctl(mib, 6, buf, &len, NULL, 0) == -1) {
+ log_warn("sysctl");
+ free(buf);
+ return (-1);
+@@ -2240,12 +2251,14 @@
+ continue;
+
+ connected_only = 0;
++#if !defined(__FreeBSD__) /* XXX: FreeBSD has no multiple routing tables */
+ if (rtm->rtm_tableid != kr_state.rtableid) {
+ if (rtm->rtm_tableid == 0)
+ connected_only = 1;
+ else
+ continue;
+ }
++#endif
+
+ if (dispatch_rtmsg_addr(rtm, rti_info,
+ connected_only) == -1)
diff --git a/net/openbgpd/files/patch-bgpd_parse.y b/net/openbgpd/files/patch-bgpd_parse.y
new file mode 100644
index 000000000000..6aaa95076670
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_parse.y
@@ -0,0 +1,19 @@
+--- bgpd/parse.y 2007-05-31 20:38:58.000000000 +0200
++++ bgpd/parse.y 2008-03-18 13:27:29.000000000 +0100
+@@ -523,11 +523,16 @@
+ free($4);
+ }
+ | RTABLE number {
++#ifdef __FreeBSD__
++ yyerror("rtable id not supported in FreeBSD, yet");
++ YYERROR;
++#else
+ if ($2 > RT_TABLEID_MAX || $2 < 0) {
+ yyerror("invalid rtable id");
+ YYERROR;
+ }
+ conf->rtableid = $2;
++#endif
+ }
+ ;
+
diff --git a/net/openbgpd/files/patch-bgpd_printconf.c b/net/openbgpd/files/patch-bgpd_printconf.c
new file mode 100644
index 000000000000..13c49d806fbc
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_printconf.c
@@ -0,0 +1,11 @@
+--- bgpd/printconf.c 2008-03-18 15:24:06.000000000 +0100
++++ bgpd/printconf.c 2008-03-18 13:27:29.000000000 +0100
+@@ -24,6 +24,8 @@
+ #include "mrt.h"
+ #include "session.h"
+
++#include <limits.h>
++
+ void print_op(enum comp_ops);
+ void print_community(int, int);
+ void print_set(struct filter_set_head *);
diff --git a/net/openbgpd/files/patch-bgpd_rde_attr.c b/net/openbgpd/files/patch-bgpd_rde_attr.c
new file mode 100644
index 000000000000..cc1b62d1a386
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_rde_attr.c
@@ -0,0 +1,20 @@
+--- bgpd/rde_attr.c 2007-05-22 16:03:31.000000000 +0200
++++ bgpd/rde_attr.c 2008-03-18 15:30:31.000000000 +0100
+@@ -17,7 +17,6 @@
+ */
+
+ #include <sys/types.h>
+-#include <sys/hash.h>
+ #include <sys/queue.h>
+
+ #include <netinet/in.h>
+@@ -28,6 +27,9 @@
+
+ #include "bgpd.h"
+ #include "rde.h"
++#include "hash.h"
++
++#include <limits.h>
+
+ int
+ attr_write(void *p, u_int16_t p_len, u_int8_t flags, u_int8_t type,
diff --git a/net/openbgpd/files/patch-bgpd_rde_rib.c b/net/openbgpd/files/patch-bgpd_rde_rib.c
new file mode 100644
index 000000000000..b5a329b7f017
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_rde_rib.c
@@ -0,0 +1,17 @@
+--- bgpd/rde_rib.c 2008-03-18 15:39:58.000000000 +0100
++++ bgpd/rde_rib.c 2008-03-18 15:31:36.000000000 +0100
+@@ -18,13 +18,13 @@
+
+ #include <sys/types.h>
+ #include <sys/queue.h>
+-#include <sys/hash.h>
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include "bgpd.h"
+ #include "rde.h"
++#include "hash.h"
+
+ /*
+ * BGP RIB -- Routing Information Base
diff --git a/net/openbgpd/files/patch-bgpd_rde_update.c b/net/openbgpd/files/patch-bgpd_rde_update.c
new file mode 100644
index 000000000000..81d786c3e868
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_rde_update.c
@@ -0,0 +1,19 @@
+--- bgpd/rde_update.c 2008-03-18 15:40:50.000000000 +0100
++++ bgpd/rde_update.c 2008-03-18 15:32:21.000000000 +0100
+@@ -17,13 +17,15 @@
+ */
+ #include <sys/types.h>
+ #include <sys/queue.h>
+-#include <sys/hash.h>
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include "bgpd.h"
+ #include "rde.h"
++#include "hash.h"
++
++#include <limits.h>
+
+ in_addr_t up_get_nexthop(struct rde_peer *, struct rde_aspath *);
+ int up_generate_mp_reach(struct rde_peer *, struct update_attr *,
diff --git a/net/openbgpd/files/patch-bgpd_session.c b/net/openbgpd/files/patch-bgpd_session.c
new file mode 100644
index 000000000000..4bcaad94d8b7
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_session.c
@@ -0,0 +1,13 @@
+--- bgpd/session.c 2008-03-18 15:24:06.000000000 +0100
++++ bgpd/session.c 2008-03-18 13:27:29.000000000 +0100
+@@ -52,6 +52,10 @@
+ #define PFD_SOCK_RCTL 4
+ #define PFD_LISTENERS_START 5
+
++#if defined(__FreeBSD__) /* FreeBSD has no LINK_STATE_IS_UP macro. */
++#define LINK_STATE_IS_UP(_s) ((_s) >= LINK_STATE_UP)
++#endif /* defined(__FreeBSD__) */
++
+ void session_sighdlr(int);
+ int setup_listeners(u_int *);
+ void init_conf(struct bgpd_config *);
diff --git a/net/openbgpd/files/patch-bgpd_util.c b/net/openbgpd/files/patch-bgpd_util.c
new file mode 100644
index 000000000000..cc25aeab5c70
--- /dev/null
+++ b/net/openbgpd/files/patch-bgpd_util.c
@@ -0,0 +1,10 @@
+--- bgpd/util.c 2008-03-18 15:24:06.000000000 +0100
++++ bgpd/util.c 2008-03-18 13:27:29.000000000 +0100
+@@ -18,6 +18,7 @@
+ */
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <sys/limits.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <netdb.h>