diff options
author | Olivier Cochard <olivier@FreeBSD.org> | 2018-11-10 23:02:44 +0000 |
---|---|---|
committer | Olivier Cochard <olivier@FreeBSD.org> | 2018-11-10 23:02:44 +0000 |
commit | 1895053da975f9d030b88687bbda53a5f33882f0 (patch) | |
tree | bb8f821c96a74a7f6ed024e863d519858806c407 /net/bird | |
parent | a2465c456ee5986d514c6b578acd03bd3d309876 (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/Makefile | 1 | ||||
-rw-r--r-- | net/bird/files/bird.in | 3 | ||||
-rw-r--r-- | net/bird/files/bird6.in | 3 | ||||
-rw-r--r-- | net/bird/files/patch-proto__ospf__lsupd.c | 11 | ||||
-rw-r--r-- | net/bird/files/patch-proto__ospf__topology.c | 32 |
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", |