aboutsummaryrefslogtreecommitdiff
path: root/net/bird
diff options
context:
space:
mode:
authorOlivier Cochard <olivier@FreeBSD.org>2018-11-10 23:02:44 +0000
committerOlivier Cochard <olivier@FreeBSD.org>2018-11-10 23:02:44 +0000
commit1895053da975f9d030b88687bbda53a5f33882f0 (patch)
treebb8f821c96a74a7f6ed024e863d519858806c407 /net/bird
parenta2465c456ee5986d514c6b578acd03bd3d309876 (diff)
Fixes wrong LSA collision detection and add birdvty group
PR: 232231 Submitted by: Julien Charbon <jcharbon@verisign.com> Submitted by: Asbjorn Mikkelsen <amikkelsen@verisign.com> Sponsored by: Verisign
Notes
Notes: svn path=/head/; revision=484648
Diffstat (limited to 'net/bird')
-rw-r--r--net/bird/Makefile1
-rw-r--r--net/bird/files/bird.in3
-rw-r--r--net/bird/files/bird6.in3
-rw-r--r--net/bird/files/patch-proto__ospf__lsupd.c11
-rw-r--r--net/bird/files/patch-proto__ospf__topology.c32
5 files changed, 48 insertions, 2 deletions
diff --git a/net/bird/Makefile b/net/bird/Makefile
index 365366a0f362..4c6d45199343 100644
--- a/net/bird/Makefile
+++ b/net/bird/Makefile
@@ -3,6 +3,7 @@
PORTNAME= bird
PORTVERSION= 1.6.4
+PORTREVISION= 1
CATEGORIES= net
MASTER_SITES= ftp://bird.network.cz/pub/bird/
diff --git a/net/bird/files/bird.in b/net/bird/files/bird.in
index e2f7223be393..9bfc89ac4b2c 100644
--- a/net/bird/files/bird.in
+++ b/net/bird/files/bird.in
@@ -28,7 +28,8 @@ extra_commands="reload"
: ${bird_enable="NO"}
: ${bird_config="%%PREFIX%%/etc/bird.conf"}
+: ${bird_group="birdvty"}
-command_args="-P /var/run/${name}.pid -c $bird_config"
+command_args="-P /var/run/${name}.pid -c $bird_config -g $bird_group"
run_rc_command "$1"
diff --git a/net/bird/files/bird6.in b/net/bird/files/bird6.in
index 8fab16e013df..304e877fc519 100644
--- a/net/bird/files/bird6.in
+++ b/net/bird/files/bird6.in
@@ -28,7 +28,8 @@ extra_commands="reload"
: ${bird6_enable="NO"}
: ${bird6_config="%%PREFIX%%/etc/bird6.conf"}
+: ${bird6_group="birdvty"}
-command_args="-P /var/run/${name}.pid -c $bird6_config"
+command_args="-P /var/run/${name}.pid -c $bird6_config -g $bird6_group"
run_rc_command "$1"
diff --git a/net/bird/files/patch-proto__ospf__lsupd.c b/net/bird/files/patch-proto__ospf__lsupd.c
new file mode 100644
index 000000000000..7366734a6b61
--- /dev/null
+++ b/net/bird/files/patch-proto__ospf__lsupd.c
@@ -0,0 +1,11 @@
+--- proto/ospf/lsupd.c 2015-04-22 14:41:44.000000000 +0000
++++ proto/ospf/lsupd.c 2016-03-22 13:09:59.000000000 +0000
+@@ -593,7 +593,7 @@
+ if ((lsa.rt == p->router_id) ||
+ (ospf_is_v2(p) && (lsa_type == LSA_T_NET) && ospf_addr_is_local(p, ifa->oa, ipa_from_u32(lsa.id))))
+ {
+- OSPF_TRACE(D_EVENTS, "Received unexpected self-originated LSA");
++ log(L_INFO "Received unexpected self-originated LSA");
+ ospf_advance_lsa(p, en, &lsa, lsa_type, lsa_domain, body);
+ continue;
+ }
diff --git a/net/bird/files/patch-proto__ospf__topology.c b/net/bird/files/patch-proto__ospf__topology.c
new file mode 100644
index 000000000000..2564ecc6ecee
--- /dev/null
+++ b/net/bird/files/patch-proto__ospf__topology.c
@@ -0,0 +1,32 @@
+--- proto/ospf/topology.c 2015-04-22 14:41:44.000000000 +0000
++++ proto/ospf/topology.c 2016-03-24 13:36:04.000000000 +0000
+@@ -79,8 +79,12 @@
+ * then we have en->mode from the postponed LSA origination.
+ */
+
+- OSPF_TRACE(D_EVENTS, "Installing LSA: Type: %04x, Id: %R, Rt: %R, Seq: %08x, Age: %u",
+- en->lsa_type, en->lsa.id, en->lsa.rt, en->lsa.sn, en->lsa.age);
++ if (en->lsa.rt == p->router_id || (p->p.debug & D_EVENTS) ||
++ OSPF_FORCE_DEBUG)
++ {
++ log(L_INFO "Installing LSA: Type: %04x, Id: %R, Rt: %R, Seq: %08x, Age: %u",
++ en->lsa_type, en->lsa.id, en->lsa.rt, en->lsa.sn, en->lsa.age);
++ }
+
+ if (change)
+ ospf_schedule_rtcalc(p);
+@@ -281,6 +285,14 @@
+ if (!en->nf || !en->lsa_body)
+ en->nf = lsa->nf;
+
++ if (en->lsa_body && (en->lsa.age == LSA_MAXAGE))
++ {
++ /* en could be an unexpected self-originated lsa in which case nf is NULL */
++ log(L_INFO "%s: Found flushing LSA while originating %I/%d with fib: %p",
++ p->p.name, lsa->nf->fn.prefix, lsa->nf->fn.pxlen, en->nf);
++ en->nf = lsa->nf;
++ }
++
+ if (en->nf != lsa->nf)
+ {
+ log(L_ERR "%s: LSA ID collision for %I/%d",