Date: Wed, 4 Dec 2013 22:08:36 +0000 (UTC) From: "Alexander V. Chernikov" <melifaro@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r335639 - in head/net: bird bird/files bird6 bird6/files Message-ID: <201312042208.rB4M8a2W006904@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: melifaro (src committer) Date: Wed Dec 4 22:08:35 2013 New Revision: 335639 URL: http://svnweb.freebsd.org/changeset/ports/335639 Log: * net/bird6 is now slave port for net/bird * Add source address selection fix from upstream * Bump PORTREVISION Reviewed by: timur Added: head/net/bird/files/bird6.in (contents, props changed) head/net/bird/files/patch-bfd-saddr.patch (contents, props changed) Deleted: head/net/bird6/distinfo head/net/bird6/files/ Modified: head/net/bird/Makefile head/net/bird/pkg-plist head/net/bird6/Makefile Modified: head/net/bird/Makefile ============================================================================== --- head/net/bird/Makefile Wed Dec 4 21:53:13 2013 (r335638) +++ head/net/bird/Makefile Wed Dec 4 22:08:35 2013 (r335639) @@ -1,30 +1,35 @@ # Created by: Pav Lucistnik <pav@FreeBSD.org> # $FreeBSD$ -PORTNAME= bird +PORTNAME?= bird PORTVERSION= 1.4.0 +PORTREVISION= 1 CATEGORIES= net MASTER_SITES= ftp://bird.network.cz/pub/bird/ \ http://bird.mpls.in/distfiles/bird/ MAINTAINER= melifaro@ipfw.ru -COMMENT= Dynamic IP routing daemon (IPv4 version) +COMMENT?= Dynamic IP routing daemon (IPv4 version) LICENSE= GPLv2 USES= bison gmake GNU_CONFIGURE= yes -CONFIGURE_ARGS= --localstatedir=/var +CONFIGURE_ARGS+= --localstatedir=/var USE_CSTD= gnu89 -OPTIONS_DEFINE= FIREWALL AGG +OPTIONS_DEFINE?= FIREWALL AGG FIREWALL_DESC= Enable firewall protocol AGG_DESC= Enable aggregation protocol (EXPERIMENTAL) NO_OPTIONS_SORT= yes MAKE_JOBS_UNSAFE= yes -USE_RC_SUBR= bird +USE_RC_SUBR= ${PORTNAME} + +SUB_LIST+= PORTNAME=${PORTNAME} + +PLIST_SUB?= VER="" NO_STAGE= yes .include <bsd.port.pre.mk> @@ -55,9 +60,9 @@ post-patch: .endif post-install: - @if [ ! -f ${PREFIX}/etc/bird.conf ]; then \ - ${CP} -p ${PREFIX}/etc/bird.conf.example ${PREFIX}/etc/bird.conf ; \ - ${CHMOD} 0640 ${PREFIX}/etc/bird.conf ; \ + @if [ ! -f ${PREFIX}/etc/${PORTNAME}.conf ]; then \ + ${CP} -p ${PREFIX}/etc/${PORTNAME}.conf.example ${PREFIX}/etc/${PORTNAME}.conf ; \ + ${CHMOD} 0640 ${PREFIX}/etc/${PORTNAME}.conf ; \ fi .include <bsd.port.post.mk> Added: head/net/bird/files/bird6.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/bird/files/bird6.in Wed Dec 4 22:08:35 2013 (r335639) @@ -0,0 +1,32 @@ +#!/bin/sh + +# $FreeBSD$ +# +# PROVIDE: bird6 dynamicrouting +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# bird6_enable (bool): Set to NO by default. +# Set it to YES to enable bird6. +# bird6_config (path): Set to %%PREFIX%%/etc/bird6.conf +# by default. +# + +. /etc/rc.subr + +name="bird6" +rcvar=bird6_enable + +command=%%PREFIX%%/sbin/${name} + +load_rc_config $name + +: ${bird6_enable="NO"} +: ${bird6_config="%%PREFIX%%/etc/bird6.conf"} + +command_args="-c $bird6_config" + +run_rc_command "$1" Added: head/net/bird/files/patch-bfd-saddr.patch ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/bird/files/patch-bfd-saddr.patch Wed Dec 4 22:08:35 2013 (r335639) @@ -0,0 +1,184 @@ +diff --git a/nest/iface.h b/nest/iface.h +index 697ea54..56710e4 100644 +--- nest/iface.h ++++ nest/iface.h +@@ -108,6 +108,7 @@ typedef struct neighbor { + node n; /* Node in global neighbor list */ + node if_n; /* Node in per-interface neighbor list */ + ip_addr addr; /* Address of the neighbor */ ++ struct ifa *ifa; /* Ifa on related iface */ + struct iface *iface; /* Interface it's connected to */ + struct proto *proto; /* Protocol this belongs to */ + void *data; /* Protocol-specific data */ +diff --git a/nest/neighbor.c b/nest/neighbor.c +index 11a980b..48b6b6a 100644 +--- nest/neighbor.c ++++ nest/neighbor.c +@@ -56,14 +56,20 @@ neigh_hash(struct proto *p, ip_addr *a) + } + + static int +-if_connected(ip_addr *a, struct iface *i) /* -1=error, 1=match, 0=no match */ ++if_connected(ip_addr *a, struct iface *i, struct ifa **ap) + { + struct ifa *b; + + if (!(i->flags & IF_UP)) ++ { ++ *ap = NULL; + return -1; ++ } ++ + WALK_LIST(b, i->addrs) + { ++ *ap = b; ++ + if (ipa_equal(*a, b->ip)) + return SCOPE_HOST; + if (b->flags & IA_PEER) +@@ -79,13 +85,18 @@ if_connected(ip_addr *a, struct iface *i) /* -1=error, 1=match, 0=no match */ + if ((b->pxlen < (BITS_PER_IP_ADDRESS - 1)) && + (ipa_equal(*a, b->prefix) || /* Network address */ + ipa_equal(*a, b->brd))) /* Broadcast */ ++ { ++ *ap = NULL; + return -1; ++ } + #endif + + return b->scope; + } + } + } ++ ++ *ap = NULL; + return -1; + } + +@@ -117,6 +128,7 @@ neigh_find2(struct proto *p, ip_addr *a, struct iface *ifa, unsigned flags) + int class, scope = -1; + unsigned int h = neigh_hash(p, a); + struct iface *i; ++ struct ifa *addr; + + WALK_LIST(n, neigh_hash_table[h]) /* Search the cache */ + if (n->proto == p && ipa_equal(*a, n->addr) && (!ifa || (ifa == n->iface))) +@@ -132,7 +144,7 @@ neigh_find2(struct proto *p, ip_addr *a, struct iface *ifa, unsigned flags) + + if (ifa) + { +- scope = if_connected(a, ifa); ++ scope = if_connected(a, ifa, &addr); + flags |= NEF_BIND; + + if ((scope < 0) && (flags & NEF_ONLINK)) +@@ -140,7 +152,7 @@ neigh_find2(struct proto *p, ip_addr *a, struct iface *ifa, unsigned flags) + } + else + WALK_LIST(i, iface_list) +- if ((scope = if_connected(a, i)) >= 0) ++ if ((scope = if_connected(a, i, &addr)) >= 0) + { + ifa = i; + break; +@@ -165,6 +177,7 @@ neigh_find2(struct proto *p, ip_addr *a, struct iface *ifa, unsigned flags) + scope = -1; + } + n->iface = ifa; ++ n->ifa = addr; + n->proto = p; + n->data = NULL; + n->aux = 0; +@@ -216,9 +229,10 @@ neigh_dump_all(void) + } + + static void +-neigh_up(neighbor *n, struct iface *i, int scope) ++neigh_up(neighbor *n, struct iface *i, int scope, struct ifa *a) + { + n->iface = i; ++ n->ifa = a; + n->scope = scope; + add_tail(&i->neighbors, &n->if_n); + rem_node(&n->n); +@@ -235,6 +249,7 @@ neigh_down(neighbor *n) + rem_node(&n->if_n); + if (! (n->flags & NEF_BIND)) + n->iface = NULL; ++ n->ifa = NULL; + n->scope = -1; + if (n->proto->neigh_notify && n->proto->core_state != FS_FLUSHING) + n->proto->neigh_notify(n); +@@ -245,13 +260,14 @@ neigh_down(neighbor *n) + + /* Respawn neighbor if there is another matching prefix */ + struct iface *i; ++ struct ifa *a; + int scope; + + if (!n->iface) + WALK_LIST(i, iface_list) +- if ((scope = if_connected(&n->addr, i)) >= 0) ++ if ((scope = if_connected(&n->addr, i, &a)) >= 0) + { +- neigh_up(n, i, scope); ++ neigh_up(n, i, scope, a); + return; + } + } +@@ -272,13 +288,14 @@ neigh_down(neighbor *n) + void + neigh_if_up(struct iface *i) + { ++ struct ifa *a; + neighbor *n, *next; + int scope; + + WALK_LIST_DELSAFE(n, next, sticky_neigh_list) + if ((!n->iface || n->iface == i) && +- ((scope = if_connected(&n->addr, i)) >= 0)) +- neigh_up(n, i, scope); ++ ((scope = if_connected(&n->addr, i, &a)) >= 0)) ++ neigh_up(n, i, scope, a); + } + + /** +@@ -339,8 +356,9 @@ neigh_ifa_update(struct ifa *a) + /* Remove all neighbors whose scope has changed */ + WALK_LIST_DELSAFE(x, y, i->neighbors) + { ++ struct ifa *aa; + neighbor *n = SKIP_BACK(neighbor, if_n, x); +- if (if_connected(&n->addr, i) != n->scope) ++ if (if_connected(&n->addr, i, &aa) != n->scope) + neigh_down(n); + } + +diff --git a/proto/bfd/bfd.c b/proto/bfd/bfd.c +index 8935548..b697e84 100644 +--- proto/bfd/bfd.c ++++ proto/bfd/bfd.c +@@ -740,7 +740,7 @@ bfd_neigh_notify(struct neighbor *nb) + + if ((nb->scope > 0) && !n->req) + { +- ip_addr local = ipa_nonzero(n->local) ? n->local : nb->iface->addr->ip; ++ ip_addr local = ipa_nonzero(n->local) ? n->local : nb->ifa->ip; + n->req = bfd_request_session(p->p.pool, n->addr, local, nb->iface, NULL, NULL); + } + +diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c +index f5b6b8f..7cd0b0a 100644 +--- proto/bgp/bgp.c ++++ proto/bgp/bgp.c +@@ -718,9 +718,8 @@ bgp_start_neighbor(struct bgp_proto *p) + { + /* Called only for single-hop BGP sessions */ + +- /* Remove this ? */ + if (ipa_zero(p->source_addr)) +- p->source_addr = p->neigh->iface->addr->ip; ++ p->source_addr = p->neigh->ifa->ip; + + #ifdef IPV6 + { Modified: head/net/bird/pkg-plist ============================================================================== --- head/net/bird/pkg-plist Wed Dec 4 21:53:13 2013 (r335638) +++ head/net/bird/pkg-plist Wed Dec 4 22:08:35 2013 (r335639) @@ -1,6 +1,6 @@ -@unexec if cmp -s %D/etc/bird.conf.example %D/etc/bird.conf; then rm -f %D/etc/bird.conf; fi -etc/bird.conf.example -@exec if [ ! -f %D/etc/bird.conf ] ; then cp -p %D/%F %B/bird.conf; fi -sbin/bird -sbin/birdc -sbin/birdcl +@unexec if cmp -s %D/etc/bird%%VER%%.conf.example %D/etc/bird%%VER%%.conf; then rm -f %D/etc/bird%%VER%%.conf; fi +etc/bird%%VER%%.conf.example +@exec if [ ! -f %D/etc/bird%%VER%%.conf ] ; then cp -p %D/%F %B/bird%%VER%%.conf; fi +sbin/bird%%VER%% +sbin/birdc%%VER%% +sbin/birdcl%%VER%% Modified: head/net/bird6/Makefile ============================================================================== --- head/net/bird6/Makefile Wed Dec 4 21:53:13 2013 (r335638) +++ head/net/bird6/Makefile Wed Dec 4 22:08:35 2013 (r335639) @@ -2,30 +2,17 @@ # $FreeBSD$ PORTNAME= bird6 -PORTVERSION= 1.4.0 -CATEGORIES= net -MASTER_SITES= ftp://bird.network.cz/pub/bird/ \ - http://bird.mpls.in/distfiles/bird/ -DISTNAME= bird-${PORTVERSION} - -MAINTAINER= melifaro@ipfw.ru COMMENT= Dynamic IP routing daemon (IPv6 version) +DISTNAME= bird-${PORTVERSION} -LICENSE= GPLv2 +MASTERDIR= ${.CURDIR}/../bird -USES= bison gmake -GNU_CONFIGURE= yes -CONFIGURE_ARGS= --enable-ipv6 --localstatedir=/var -USE_CSTD= gnu89 +OPTIONS_DEFINE= -MAKE_JOBS_UNSAFE= yes +USE_RC_SUBR= ${PORTNAME} -USE_RC_SUBR= bird6 +PLIST_SUB= VER="6" -NO_STAGE= yes -post-install: - @if [ ! -f ${PREFIX}/etc/bird6.conf ]; then \ - ${CP} -p ${PREFIX}/etc/bird6.conf.example ${PREFIX}/etc/bird6.conf ; \ - fi +CONFIGURE_ARGS= --enable-ipv6 -.include <bsd.port.mk> +.include "${MASTERDIR}/Makefile"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312042208.rB4M8a2W006904>