Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Mar 2008 15:27:35 GMT
From:      Matthieu Guegan <matthieu@virtua.ch>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/121831: [PATCH] net/openbgpd: [SUMMARIZE CHANGES]
Message-ID:  <200803181527.m2IFRZuO037864@www.freebsd.org>
Resent-Message-ID: <200803181530.m2IFU0CK084854@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         121831
>Category:       ports
>Synopsis:       [PATCH] net/openbgpd: [SUMMARIZE CHANGES]
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 18 15:30:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Matthieu Guegan
>Release:        FreeBSD 7.0-STABLE i386
>Organization:
Virtua SA
>Environment:
FreeBSD 7.0-STABLE #6: Fri Mar 14 12:34:02 CET 2008
>Description:
As for OpenOSPFd port, OpenBGPd port is still on version 4.0.
See the attached file to apply a patch against current version to update it to the latest stable release (4.2).

The following changes were done :
 
o Provide LINK_STATE_IS_UP macros that is missing in FreeBSD.
o Disable CARP demotion: FreeBSD has no support for it.
o Disable check for the routing table number: FreeBSD has
  single routing table now.
o Disable route labeling: FreeBSD has no support for it.

Thanks to Eygene Ryabinkin who made a patch[1] for OpenOSPFd : this one have similar modifications.

Port maintainer (farrokhi@FreeBSD.org) is cc'd.

[1] http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/120788

>How-To-Repeat:

>Fix:
Apply the patch submitted with this PR

!! WARNING !!

This patch was _not_ tested in production environment.
Everything is compiling fine, but it's possible that the core engine is broken by this patch.

Please do some tests and reports success/fails here.

Patch attached with submission follows:

diff -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/Makefile /usr/ports/net/openbgpd/Makefile
--- /usr/ports/net/openbgpd.orig/Makefile	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/Makefile	2008-03-18 15:55:34.000000000 +0100
@@ -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 @@
 	@${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 @@
 		${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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/distinfo /usr/ports/net/openbgpd/distinfo
--- /usr/ports/net/openbgpd.orig/distinfo	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/distinfo	2008-03-18 15:56:24.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpctl_Makefile /usr/ports/net/openbgpd/files/patch-bgpctl_Makefile
--- /usr/ports/net/openbgpd.orig/files/patch-bgpctl_Makefile	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpctl_Makefile	2008-03-18 15:56:12.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpctl_bgpctl.8 /usr/ports/net/openbgpd/files/patch-bgpctl_bgpctl.8
--- /usr/ports/net/openbgpd.orig/files/patch-bgpctl_bgpctl.8	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpctl_bgpctl.8	2008-03-18 15:56:11.000000000 +0100
@@ -1,15 +1,10 @@
-
-$FreeBSD: ports/net/openbgpd/files/patch-bgpctl_bgpctl.8,v 1.1 2005/05/17 14:46:42 flz Exp $
-
---- 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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpctl_bgpctl.c /usr/ports/net/openbgpd/files/patch-bgpctl_bgpctl.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpctl_bgpctl.c	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpctl_bgpctl.c	2008-03-18 15:56:10.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpctl_fmt_scaled.c /usr/ports/net/openbgpd/files/patch-bgpctl_fmt_scaled.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpctl_fmt_scaled.c	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpctl_fmt_scaled.c	2008-03-18 15:56:10.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpctl_util.h /usr/ports/net/openbgpd/files/patch-bgpctl_util.h
--- /usr/ports/net/openbgpd.orig/files/patch-bgpctl_util.h	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpctl_util.h	2008-03-18 15:56:09.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_bgpd.8 /usr/ports/net/openbgpd/files/patch-bgpd_bgpd.8
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_bgpd.8	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_bgpd.8	2008-03-18 15:56:08.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_bgpd.conf.5 /usr/ports/net/openbgpd/files/patch-bgpd_bgpd.conf.5
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_bgpd.conf.5	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_bgpd.conf.5	2008-03-18 15:56:08.000000000 +0100
@@ -1,9 +1,6 @@
-
-$FreeBSD: ports/net/openbgpd/files/patch-bgpd_bgpd.conf.5,v 1.1 2005/05/17 14:46:42 flz Exp $
-
---- 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 @@
  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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_carp.c /usr/ports/net/openbgpd/files/patch-bgpd_carp.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_carp.c	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_carp.c	2008-03-18 15:56:06.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_kroute.c /usr/ports/net/openbgpd/files/patch-bgpd_kroute.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_kroute.c	2008-03-18 15:55:09.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_kroute.c	2008-03-18 15:56:05.000000000 +0100
@@ -1,50 +1,105 @@
---- 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-03-18 14:45:43.000000000 +0100
+@@ -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
+@@ -2240,12 +2252,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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_parse.y /usr/ports/net/openbgpd/files/patch-bgpd_parse.y
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_parse.y	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_parse.y	2008-03-18 15:55:57.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_printconf.c /usr/ports/net/openbgpd/files/patch-bgpd_printconf.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_printconf.c	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_printconf.c	2008-03-18 15:55:50.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_rde_attr.c /usr/ports/net/openbgpd/files/patch-bgpd_rde_attr.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_rde_attr.c	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_rde_attr.c	2008-03-18 15:55:50.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_rde_rib.c /usr/ports/net/openbgpd/files/patch-bgpd_rde_rib.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_rde_rib.c	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_rde_rib.c	2008-03-18 15:55:50.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_rde_update.c /usr/ports/net/openbgpd/files/patch-bgpd_rde_update.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_rde_update.c	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_rde_update.c	2008-03-18 15:55:50.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_session.c /usr/ports/net/openbgpd/files/patch-bgpd_session.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_session.c	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_session.c	2008-03-18 15:55:50.000000000 +0100
@@ -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 -ruN --exclude=CVS /usr/ports/net/openbgpd.orig/files/patch-bgpd_util.c /usr/ports/net/openbgpd/files/patch-bgpd_util.c
--- /usr/ports/net/openbgpd.orig/files/patch-bgpd_util.c	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/net/openbgpd/files/patch-bgpd_util.c	2008-03-18 15:55:50.000000000 +0100
@@ -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>


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803181527.m2IFRZuO037864>