Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bird3 for openSUSE:Factory checked in at 2026-03-23 17:13:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bird3 (Old) and /work/SRC/openSUSE:Factory/.bird3.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bird3" Mon Mar 23 17:13:21 2026 rev:6 rq:1341906 version:3.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/bird3/bird3.changes 2025-09-23 17:45:53.825723417 +0200 +++ /work/SRC/openSUSE:Factory/.bird3.new.8177/bird3.changes 2026-03-23 17:14:32.864617890 +0100 @@ -1,0 +2,11 @@ +Tue Mar 3 23:33:29 UTC 2026 - Blake Purdie <[email protected]> + +- Update to version 3.2.0 + * BGP: Listening socket rework + * IGP metric: Split out local_metric again + * Table: Optimal and Any Export refactoring + * Various race condition fixes + * All fixes included in 3.1.0 -- 3.1.5 + * Merged 2.18 + +------------------------------------------------------------------- Old: ---- bird-3.1.4.tar.gz bird-doc-3.1.4.tar.gz New: ---- bird-3.2.0.tar.gz bird-doc-3.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bird3.spec ++++++ --- /var/tmp/diff_new_pack.fxYQHh/_old 2026-03-23 17:14:33.568647171 +0100 +++ /var/tmp/diff_new_pack.fxYQHh/_new 2026-03-23 17:14:33.568647171 +0100 @@ -17,7 +17,7 @@ %define bird_runtimedir %{_rundir}/bird Name: bird3 -Version: 3.1.4 +Version: 3.2.0 Release: 0 Summary: The BIRD Internet Routing Daemon License: GPL-2.0-or-later ++++++ bird-3.1.4.tar.gz -> bird-3.2.0.tar.gz ++++++ ++++ 19800 lines of diff (skipped) ++++++ bird-doc-3.1.4.tar.gz -> bird-doc-3.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-1.html new/bird-doc-3.2.0/doc/bird-1.html --- old/bird-doc-3.1.4/doc/bird-1.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-1.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Introduction</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Introduction</TITLE> <LINK HREF="bird-2.html" REL=next> <LINK HREF="bird.html#toc1" REL=contents> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-2.html new/bird-doc-3.2.0/doc/bird-2.html --- old/bird-doc-3.1.4/doc/bird-2.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-2.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Architecture</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Architecture</TITLE> <LINK HREF="bird-3.html" REL=next> <LINK HREF="bird-1.html" REL=previous> <LINK HREF="bird.html#toc2" REL=contents> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-3.html new/bird-doc-3.2.0/doc/bird-3.html --- old/bird-doc-3.1.4/doc/bird-3.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-3.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Configuration</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Configuration</TITLE> <LINK HREF="bird-4.html" REL=next> <LINK HREF="bird-2.html" REL=previous> <LINK HREF="bird.html#toc3" REL=contents> @@ -35,6 +35,13 @@ and than you can use any combination of numbers, letters, underscores, hyphens, dots and colons (e.g. <CODE>'1:strange-name'</CODE>, <CODE>'-NAME-'</CODE>, <CODE>'cool::name'</CODE>). <P> +<P>In most cases where options use an argument that is a basic data type (e.g. +number, string, IP address) it is possible to use a named constant (defined +by +<A HREF="#opt-define">define</A> statement), or a constant expression +enclosed in parenthesis (e.g. <CODE>(2 + 2)</CODE>). These expressions use +<A HREF="bird-5.html#filters">the BIRD filter language</A>. +<P> <P>Here is an example of a simple config file. It enables synchronization of routing tables with OS kernel, learns network interfaces and runs RIP on all network interfaces found. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-4.html new/bird-doc-3.2.0/doc/bird-4.html --- old/bird-doc-3.1.4/doc/bird-4.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-4.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Remote control</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Remote control</TITLE> <LINK HREF="bird-5.html" REL=next> <LINK HREF="bird-3.html" REL=previous> <LINK HREF="bird.html#toc4" REL=contents> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-5.html new/bird-doc-3.2.0/doc/bird-5.html --- old/bird-doc-3.1.4/doc/bird-5.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-5.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Filters</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Filters</TITLE> <LINK HREF="bird-6.html" REL=next> <LINK HREF="bird-4.html" REL=previous> <LINK HREF="bird.html#toc5" REL=contents> @@ -148,17 +148,20 @@ <A NAME="type-string"></A> string</CODE><DD><P>This is a string of characters. There are no ways to modify strings in filters. You can pass them between functions, assign them to variables of type <CODE>string</CODE>, print such variables, use standard string -comparison operations (e.g. <CODE>=, !=, <, >, <=, >=</CODE>), but -you can't concatenate two strings. String literals are written as -<CODE>"This is a string constant"</CODE>. Additionally matching (<CODE>~, -!~</CODE>) operators could be used to match a string value against -a shell pattern (represented also as a string). +comparison operations (e.g. <CODE>=, !=, <, >, <=, >=</CODE>), and +concatenate two strings with <CODE>append(<I>A</I>, <I>B</I>)</CODE> function or +<CODE>++</CODE> operator. +<P>String literals are written as <CODE>"This is a string constant"</CODE>. +Additionally matching (<CODE>~, !~</CODE>) operators could be used +to match a string value against a shell pattern (represented also as a +string). <P> <DT><CODE> <A NAME="type-bytestring"></A> bytestring</CODE><DD><P>This is a sequence of arbitrary bytes. There are no ways to modify bytestrings in filters. You can pass them between functions, assign -them to variables of type <CODE>bytestring</CODE>, print such values, and -compare bytestings (<CODE>=, !=</CODE>). +them to variables of type <CODE>bytestring</CODE>, print such values, compare +bytestings (<CODE>=, !=</CODE>), and concatenate two bytestrings with +<CODE>append(<I>A</I>, <I>B</I>)</CODE> function or <CODE>++</CODE> operator. <P>Bytestring literals are written as a sequence of hexadecimal digit pairs, optionally colon-separated. A bytestring specified this way must be either at least 16 bytes (32 digits) long, or prefixed by the @@ -416,6 +419,7 @@ parentheses <CODE>(a*(b+c))</CODE>, comparison <CODE>(a=b, a!=b, a<b, a>=b)</CODE>. <P>Logical operations include unary not (<CODE>!</CODE>), and (<CODE>&&</CODE>), and or (<CODE>||</CODE>). +<P>Strings and bytestrings can be concatenated with <CODE>++</CODE> operator. <P>Special operators include (<CODE>~</CODE>, <CODE>!~</CODE>) for "is (not) element of a set" operation - it can be used on: <UL> @@ -643,8 +647,21 @@ <DT><CODE> <A NAME="rta-igp-metric"></A> <I>int</I> igp_metric</CODE><DD><P>The optional attribute that can be used to specify a distance to the network for routes that do not have a native protocol metric attribute -(like <CODE>ospf_metric1</CODE> for OSPF routes). It is used mainly by BGP to -compare internal distances to boundary routers (see below). +(like <CODE>ospf_metric1</CODE> for OSPF routes). It is used to fill in +<A HREF="#rta-local-metric">local_metric</A> attribute when recursive +nexthops are resolved, so that BGP can compare internal distances +to boundary routers (see below). +<P> +<DT><CODE> +<A NAME="rta-local-metric"></A> <I>int</I> local_metric</CODE><DD><P>Attribute storing the route's metric to the resolved recursive nexthop, +mainly used by BGP best route selection. Also known as "interior cost" +in RFC 4271. +It's the copy of the underlying protocol's metric, e.g. +<CODE>ospf_metric1</CODE>, or the generic <CODE>igp_metric</CODE>. For recursive nexthops, +setting the <CODE>local_metric</CODE> attribute in the import filters is futile, +as the nexthop resolver overwrites it. +Note: In versions 3.0.x and 3.1.x, the <CODE>igp_metric</CODE> attribute was confusingly +used for this purpose. <P> <DT><CODE> <A NAME="rta-mpls-label"></A> <I>int</I> mpls_label</CODE><DD><P>Local MPLS label attached to the route. This attribute is produced by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-6.html new/bird-doc-3.2.0/doc/bird-6.html --- old/bird-doc-3.1.4/doc/bird-6.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-6.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Protocols</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Protocols</TITLE> <LINK HREF="bird-7.html" REL=next> <LINK HREF="bird-5.html" REL=previous> <LINK HREF="bird.html#toc6" REL=contents> @@ -691,7 +691,8 @@ <LI>Prefer IGP origin over EGP and EGP origin over incomplete.</LI> <LI>Prefer the lowest value of the Multiple Exit Discriminator.</LI> <LI>Prefer routes received via eBGP over ones received via iBGP.</LI> -<LI>Prefer routes with lower internal distance to a boundary router.</LI> +<LI>Prefer routes with lower +<A HREF="bird-5.html#rta-local-metric">internal distance</A> to a boundary router.</LI> <LI>Prefer the route with the lowest value of router ID of the advertising router.</LI> </UL> @@ -743,8 +744,10 @@ max long lived stale time <number>; }; local [<ip>] [port <number>] [as <number>]; - neighbor [<ip> | range <prefix>] [port <number>] [as <number>] [internal|external]; + neighbor [<ip> | range <prefix>] [onlink] [port <number>] [as <number>] [internal|external]; interface "<text>"; + interface range <interface pattern>; + onlink <switch>; direct; multihop [<number>]; source address <ip>; @@ -857,7 +860,13 @@ instances are spawned for incoming BGP connections (if source address matches the network prefix). It is possible to mix regular BGP instances with dynamic BGP instances and have multiple dynamic BGP instances with -different ranges. +different ranges. These spawned dynamic BGP instances share the parent +configuration, therefore by reconfiguring the parent protocol forces +reconfiguration of the spawned protocols. +<P>When the neighbor range is changed, all the spawned dynamic instances +shut down. Reconfiguration clears all dynamic instances which were +previously disabled by the <CODE>disable</CODE> CLI command. This may re-enable +connection of some clients otherwise blocked by the disabled instance. <P> <DT><CODE> <A NAME="bgp-iface"></A> interface "<I>text</I>"</CODE><DD><P>Define interface we should use for link-local BGP IPv6 sessions. @@ -867,6 +876,33 @@ specify an interface, but only for direct (not multihop) sessions. <P> <DT><CODE> +<A NAME="bgp-iface-range"></A> interface range <I>interface pattern</I></CODE><DD><P>Set interface pattern to which the connection will be bound. This is +mostly useful with the <CODE>neighbor range</CODE> option and either link-local +addresses or with the <CODE>onlink</CODE> option where it's not known up front +which interface the connection comes on but it needs to stay there. +<P>This option requires <CODE>strict bind</CODE> to be on and creates a separate +listening socket for every single interface matching the pattern. If the +local address is set, it also requires this exact address to be set on +that interface to create a listening socket. +<P>Also see <CODE>strict bind</CODE> and <CODE>free bind</CODE>. +<P> +<DT><CODE> +<A NAME="bgp-onlink"></A> onlink <I>switch</I></CODE><DD><P>For a direct neighbor, the BGP session starts immediately without +waiting for the neighbor's address to appear on any interface. +This option requires an interface to be configured. Next hops +of all routes from this session also have the <CODE>onlink</CODE> attribute. +<P>This option may generally lead to weird behavior without other +configuration in place. One may e.g. need to insert a working route +for the given neighbor manually to allow for ACKs from the incoming +connection to be routed back correctly. That route may also need to +be announced via IGP, or <CODE>next hop self</CODE> in iBGP may be needed. +<P>When trying setups with no neighbor route in containerized environments, +we got some results with <CODE>strict bind</CODE>. As of Linux 6.12, we can't +recommend running that setup though. +<P>Onlink behavior may also be specified inside the <CODE>neighbor</CODE> option. +Default: disabled. +<P> +<DT><CODE> <A NAME="bgp-direct"></A> direct</CODE><DD><P>Specify that the neighbor is directly connected. The IP address of the neighbor must be from a directly reachable IP range (i.e. associated with one of your router's interfaces), otherwise the BGP session @@ -902,19 +938,29 @@ <P> <DT><CODE> <A NAME="bgp-strict-bind"></A> strict bind <I>switch</I></CODE><DD><P>Specify whether BGP listening socket should be bound to a specific local -address (the same as the <CODE>source address</CODE>) and associated interface, +address (the same as the <CODE>source address</CODE>) and associated interface or to all addresses. Binding to a specific address could be useful in cases like running multiple BIRD instances on a machine, each using its -IP address. Note that listening sockets bound to a specific address and -to all addresses collide, therefore either all BGP protocols (of the -same address family and using the same local port) should have set -<CODE>strict bind</CODE>, or none of them. Default: disabled. +IP address. +<P>Note that listening sockets bound to a specific address and +to all addresses collide. Also listening sockets bound +to a specific interface and to all interfaces may behave weirdly. +Therefore, all BGP protocols (of the same address family and using +the same local port) should have set <CODE>strict bind</CODE>, or none of them, +and in the same way, all should have a <CODE>interface</CODE> or <CODE>interface range</CODE> +or none of them. +<P>Default: disabled. <P> <DT><CODE> <A NAME="bgp-free-bind"></A> free bind <I>switch</I></CODE><DD><P>Use IP_FREEBIND socket option for the listening socket, which allows binding to an IP address not (yet) assigned to an interface. Note that all BGP instances that share a listening socket should have the same -value of the <CODE>freebind</CODE> option. Default: disabled. +value of the <CODE>free bind</CODE> option. +<P>If <CODE>interface range</CODE> is set together with a local address +and <CODE>free bind</CODE> as well, it creates a free-bind listening socket +for every interface regardless of the assigned address. This is +an experimental feature. +<P>Default: disabled. <P> <DT><CODE> <A NAME="bgp-check-link"></A> check link <I>switch</I></CODE><DD><P>BGP could use hardware link state into consideration. If enabled, @@ -1084,14 +1130,15 @@ other means. Default: 0 (no local AS number allowed). <P> <DT><CODE> -<A NAME="bgp-allow-as-sets"></A> allow as sets <I>switch</I></CODE><DD><P>AS path attribute received with BGP routes may contain not only -sequences of AS numbers, but also sets of AS numbers. These rarely used -artifacts are results of inter-AS route aggregation. AS sets are -deprecated (<A HREF="http://www.rfc-editor.org/info/rfc6472">RFC 6472</A>), and likely to be rejected in the future, -as they complicate security features like RPKI validation. When this -option is disabled, then received AS paths with AS sets are rejected as -malformed and corresponding BGP updates are treated as withdraws. -Default: on. +<A NAME="bgp-allow-as-sets"></A> allow as sets <I>switch</I></CODE><DD><P>Historically, AS path attribute received with BGP routes may have +contained not only sequences of AS numbers, but also sets of AS numbers. +These rarely used artifacts were results of inter-AS route aggregation. +AS sets are deprecated (<A HREF="http://www.rfc-editor.org/info/rfc6472">RFC 6472</A>, <A HREF="http://www.rfc-editor.org/info/rfc9774">RFC 9774</A>) and AS paths +containing them (or AS confed sets) are considered malformed. +Corresponding BGP updates are therefore treated as withdraws. +When this option is enabled, then received AS paths containing these +deprecated AS sets or AS confed sets are accepted. +Default: off (since 2.18 and 3.2). <P> <DT><CODE> <A NAME="bgp-enforce-first-as"></A> enforce first as <I>switch</I></CODE><DD><P>Routes received from an EBGP neighbor are generally expected to have the @@ -1481,19 +1528,23 @@ interface. <P> <DT><CODE> -<A NAME="bgp-next-hop-prefer"></A> next hop prefer global</CODE><DD><P>Prefer global IPv6 address to link-local IPv6 address for immediate next -hops of received routes. For IPv6 routes, the Next Hop attribute may -contain both a global IP address and a link-local IP address. For IBGP -sessions, the global IP address is resolved ( -<A HREF="#bgp-gateway">gateway recursive</A>) through an IGP routing table -( -<A HREF="#bgp-igp-table">igp table</A>) to get an immediate next -hop. If the resulting IGP route is a direct route (i.e., the next hop is -a direct neighbor), then the link-local IP address from the Next Hop -attribute is used as the immediate next hop. This option change it to -use the global IP address instead. Note that even with this option -enabled a route may end with a link-local immediate next hop when the -IGP route has one. Default: disabled. +<A NAME="bgp-next-hop-prefer"></A> next hop prefer global|local</CODE><DD><P>For IPv6 routes, the Next Hop attribute may contain both a global IP +address and a link-local IP address. For IBGP sessions, the global IP +address is resolved ( +<A HREF="#bgp-gateway">gateway recursive</A>) +through an IGP routing table ( +<A HREF="#bgp-igp-table">igp table</A>) +to get an immediate next hop. If the resulting IGP route is a direct +route (i.e., the next hop is a direct neighbor), then the link-local +IP address from the Next Hop attribute is used as the immediate next hop. +This option changes it to prefer global or link-local IP address, +respectively. Note that even with this option set to global, route may +end with a link-local immediate next hop when the IGP route has one. +<P>When set to <CODE>local</CODE>, prefer link-local IPv6 addresses over global +addresses for immediate next hops of received routes. When set to +<CODE>global</CODE>, prefer global IPv6 address to link-local IPv6 address for +immediate next hops of received routes. Default: global in direct mode +(EBGP), local in recursive mode (IBGP). <P> <DT><CODE> <A NAME="bgp-link-local-next-hop-format"></A> link local next hop format native|single|double</CODE><DD><P>For IPv6 routes, BGP assumes that the Next Hop attribute contains a @@ -1731,7 +1782,6 @@ <P> <UL> <LI><CODE>export</CODE></LI> -<LI><CODE>next hop address</CODE></LI> <LI><CODE>next hop self</CODE></LI> <LI><CODE>next hop keep</CODE></LI> <LI><CODE>link local next hop format</CODE></LI> @@ -1758,6 +1808,7 @@ <LI><CODE>require hostname</CODE></LI> <LI><CODE>require graceful restart</CODE></LI> <LI><CODE>require long lived graceful restart</CODE></LI> +<LI><CODE>interface range</CODE> if the already existing option is updated to another value.</LI> </UL> <P> <P>Channel options that cause a restart when changed: @@ -1768,6 +1819,7 @@ <LI><CODE>graceful restart</CODE></LI> <LI><CODE>long lived graceful restart</CODE></LI> <LI><CODE>long lived stale time</CODE></LI> +<LI><CODE>next hop address</CODE></LI> <LI><CODE>extended next hop</CODE></LI> <LI><CODE>add paths</CODE></LI> <LI><CODE>import table</CODE></LI> @@ -1784,6 +1836,10 @@ <LI><CODE>max long lived stale time</CODE></LI> </UL> <P> +<P>All these configuration changes apply also to the spawned dynamic BGP sessions +and therefore reconfiguring the parent protocol may lead to shutdown of some or all +of the dynamic BGP sessions. +<P> <H3><A NAME="bgp-attr"></A> Attributes</H3> <P>BGP defines several route attributes. Some of them (those marked with @@ -2353,18 +2409,18 @@ <A NAME="l3vpn-rd"></A> rd <I>rd</I></CODE><DD><P>A shorthand for the option <CODE>route distinguisher</CODE>. <P> <DT><CODE> -<A NAME="l3vpn-import-target"></A> import target <I>ec</I>|<I>ec-set</I></CODE><DD><P>Route target extended communities specifying which routes should be +<A NAME="l3vpn-import-target"></A> import target <I>ec</I>|<I>ec-set</I>|none|all</CODE><DD><P>Route target extended communities specifying which routes should be imported. Either one community or a set. A route is imported if there is non-empty intersection between extended communities of the route and the import target of the L3VPN protocol. Mandatory. <P> <DT><CODE> -<A NAME="l3vpn-export-target"></A> export target <I>ec</I>|<I>ec-set</I></CODE><DD><P>Route target extended communities that are attached to the route in the +<A NAME="l3vpn-export-target"></A> export target <I>ec</I>|<I>ec-set</I>|none</CODE><DD><P>Route target extended communities that are attached to the route in the export direction. Either one community or a set. Other route target extended communities are removed. Mandatory. <P> <DT><CODE> -<A NAME="l3vpn-route-target"></A> route target <I>ec</I>|<I>ec-set</I></CODE><DD><P>A shorthand for both <CODE>import target</CODE> and <CODE>export target</CODE>. +<A NAME="l3vpn-route-target"></A> route target <I>ec</I>|<I>ec-set</I>|none</CODE><DD><P>A shorthand for both <CODE>import target</CODE> and <CODE>export target</CODE>. </DL> <P> <H3><A NAME="l3vpn-attr"></A> Attributes</H3> @@ -3489,6 +3545,11 @@ stateless autoconfiguration. Default: yes <P> <DT><CODE> +<A NAME="radv-prefix-pd-preferred"></A> pd preferred<I>switch</I></CODE><DD><P>This option specifies whether hosts should use prefix delegation in DHCPv6 +instead of using stateless address autoconfiguration (SLAAC). +Default: no. +<P> +<DT><CODE> <A NAME="radv-prefix-valid-lifetime"></A> valid lifetime <I>expr</I> [sensitive <I>switch</I>]</CODE><DD><P>This option specifies the time (in seconds) how long (after the receipt of RA) the prefix information is valid, i.e., autoconfigured IP addresses can be assigned and hosts with that IP addresses are diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird-7.html new/bird-doc-3.2.0/doc/bird-7.html --- old/bird-doc-3.1.4/doc/bird-7.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird-7.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide: Conclusions</TITLE> + <TITLE>BIRD 3.2.0 User's Guide: Conclusions</TITLE> <LINK HREF="bird-6.html" REL=previous> <LINK HREF="bird.html#toc7" REL=contents> </HEAD> @@ -35,22 +35,21 @@ (<A HREF="mailto:[email protected]">[email protected]</A>) where you can share your experiences with the other users and consult your problems with the authors. To subscribe to the list, visit -<A HREF="http://bird.network.cz/?m_list">http://bird.network.cz/?m_list</A>. -The home page of BIRD can be found at <A HREF="http://bird.network.cz/">http://bird.network.cz/</A>. +<A HREF="https://bird.network.cz/mailman/listinfo/bird-users">https://bird.network.cz/mailman/listinfo/bird-users</A>. +The home page of BIRD can be found at <A HREF="http://bird.nic.cz/">http://bird.nic.cz/</A>. <P> <P>BIRD is a relatively young system and it probably contains some bugs. You can report any problems to the bird-users list and the authors will be glad to solve them, but before you do so, please make sure you have read the available documentation and that you are running the latest version (available at -<A HREF="ftp://bird.network.cz/pub/bird">bird.network.cz:/pub/bird</A>). +<A HREF="https://bird.nic.cz/get-bird">https://bird.nic.cz/get-bird</A>). (Of course, a patch which fixes the bug is always welcome as an attachment.) <P> <P>If you want to understand what is going inside, Internet standards are a good and interesting reading. You can get them from -<A HREF="ftp://ftp.rfc-editor.org/">ftp.rfc-editor.org</A> (or a -nicely sorted version from <A HREF="ftp://atrey.karlin.mff.cuni.cz/pub/rfc">atrey.karlin.mff.cuni.cz:/pub/rfc</A>). +<A HREF="ftp://ftp.rfc-editor.org/">ftp.rfc-editor.org</A>. <P> -<P><I>Good luck!</I> +<P><I>Good luck and happy routing!</I> <P> <HR> Next diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/bird.html new/bird-doc-3.2.0/doc/bird.html --- old/bird-doc-3.1.4/doc/bird.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/bird.html 2025-12-26 17:16:05.000000000 +0100 @@ -2,7 +2,7 @@ <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9"> - <TITLE>BIRD 3.1.4 User's Guide</TITLE> + <TITLE>BIRD 3.2.0 User's Guide</TITLE> <LINK HREF="bird-1.html" REL=next> @@ -12,12 +12,12 @@ Previous Contents <HR> -<H1>BIRD 3.1.4 User's Guide</H1> +<H1>BIRD 3.2.0 User's Guide</H1> <H2>Ondrej Filip <I><[email protected]></I>, Martin Mares <I><[email protected]></I>, Maria Matejka <I><[email protected]></I>, -Ondrej Zajicek <I><[email protected]></I></H2> +Ondrej Zajicek <I><[email protected]></I></H2>Fri, 26 Dec 2025 17:16:05 +0100bird-userdoc <P><HR> <EM>This document contains user documentation for the BIRD Internet Routing Daemon project.</EM> <HR> Binary files old/bird-doc-3.1.4/doc/bird.pdf and new/bird-doc-3.2.0/doc/bird.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/prog-2.html new/bird-doc-3.2.0/doc/prog-2.html --- old/bird-doc-3.1.4/doc/prog-2.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/prog-2.html 2025-12-26 17:16:05.000000000 +0100 @@ -301,6 +301,77 @@ <HR><H3>Function</H3> +<P><I>bool</I> +<B>export_filter</B> +(<I>struct channel *</I> <B>c</B>, <I>rte *</I> <B>rt</B>, <I>int</I> <B>silent</B>) -- evaluate export filters +<P> +<H3>Arguments</H3> +<P> +<DL> +<DT><I>struct channel *</I> <B>c</B><DD><P>related channel +<DT><I>rte *</I> <B>rt</B><DD><P>route to evaluate; mutable, may be modified by the filters (!) +<DT><I>int</I> <B>silent</B><DD><P>no logging, reuse old results +</DL> +<H3>Description</H3> +<P>Evaluate the filters on the export, including the preexport hook +of the exporting protocol. Returns the result of the filter, i.e. +true if accept, false if reject. + + +<HR><H3>Function</H3> +<P><I>void</I> +<B>do_rt_notify</B> +(<I>struct channel *</I> <B>c</B>, <I>const net_addr *</I> <B>net</B>, <I>rte *</I> <B>new</B>, <I>const rte *</I> <B>old</B>) -- actually export the route to the protocol +<P> +<H3>Arguments</H3> +<P> +<DL> +<DT><I>struct channel *</I> <B>c</B><DD><P>channel to use +<DT><I>const net_addr *</I> <B>net</B><DD><P>related network +<DT><I>rte *</I> <B>new</B><DD><P>announced route +<DT><I>const rte *</I> <B>old</B><DD><P>withdrawn route +</DL> +<H3>Description</H3> +<P>This function does all the common things which must happen before the +protocol's <B>rt_notify()</B> hook is called, most notably channel limit checks, +stats update and logging. + + +<HR><H3>Function</H3> +<P><I>void</I> +<B>rt_notify_basic</B> +(<I>struct channel *</I> <B>c</B>, <I>const rte *</I> <B>new</B>, <I>const rte *</I> <B>old</B>, <I>const rte *</I> <B>trte</B>) -- common route exporter for RA_OPTIMAL and RA_ANY +<P> +<H3>Arguments</H3> +<P> +<DL> +<DT><I>struct channel *</I> <B>c</B><DD><P>channel to use +<DT><I>const rte *</I> <B>new</B><DD><P>announced route +<DT><I>const rte *</I> <B>old</B><DD><P>withdrawn route +<DT><I>const rte *</I> <B>trte</B><DD><P>-- undescribed -- +</DL> +<H3>Description</H3> +<P>This function expects to get refined pairs of announced and withdrawn route +which have already been selected so that the old route has been seen before. + + +<HR><H3>Function</H3> +<P><I>void</I> +<B>channel_notify_optimal</B> +(<I>void *</I> <B>_channel</B>) -- process the export queue for RA_OPTIMAL +<P> +<H3>Arguments</H3> +<P> +<DL> +<DT><I>void *</I> <B>_channel</B><DD><P>channel to use +</DL> +<H3>Description</H3> +<P>Actually an event hook. Walks the export journal and distills pairs of +announced and withdrawn routes for <B>rt_notify_basic()</B>. Scheduled when the +journal gets some new items. + + +<HR><H3>Function</H3> <P><I>void</I> <B>rt_refresh_begin</B> (<I>struct rt_import_request *</I> <B>req</B>) -- start a refresh cycle diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/prog-4.html new/bird-doc-3.2.0/doc/prog-4.html --- old/bird-doc-3.1.4/doc/prog-4.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/prog-4.html 2025-12-26 17:16:05.000000000 +0100 @@ -127,11 +127,12 @@ <HR><H3>Function</H3> <P><I>struct f_tree *</I> <B>build_tree</B> -(<I>struct f_tree *</I> <B>from</B>) +(<I>struct f_tree *</I> <B>from</B>, <I>bool</I> <B>merge</B>) <H3>Arguments</H3> <P> <DL> <DT><I>struct f_tree *</I> <B>from</B><DD><P>degenerated tree (linked by <B>tree</B>->left) to be transformed into form suitable for <B>find_tree()</B> +<DT><I>bool</I> <B>merge</B><DD><P>-- undescribed -- </DL> <H3>Description</H3> <P>Transforms degenerated tree into balanced tree. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/prog-5.html new/bird-doc-3.2.0/doc/prog-5.html --- old/bird-doc-3.1.4/doc/prog-5.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/prog-5.html 2025-12-26 17:16:05.000000000 +0100 @@ -518,6 +518,37 @@ <P> <P><HR><H3>Function</H3> <P><I>int</I> +<B>bgp_open</B> +(<I>struct bgp_proto *</I> <B>p</B>) -- open a BGP instance +<P> +<H3>Arguments</H3> +<P> +<DL> +<DT><I>struct bgp_proto *</I> <B>p</B><DD><P>BGP instance +</DL> +<H3>Description</H3> +<P>This function allocates and configures shared BGP resources, mainly listening +sockets. Should be called as the last step during initialization (when lock +is acquired and neighbor is ready). When error, caller should change state to +PS_DOWN and return immediately. + + +<HR><H3>Function</H3> +<P><I>void</I> +<B>bgp_close</B> +(<I>struct bgp_proto *</I> <B>p</B>) -- close a BGP instance +<P> +<H3>Arguments</H3> +<P> +<DL> +<DT><I>struct bgp_proto *</I> <B>p</B><DD><P>BGP instance +</DL> +<H3>Description</H3> +<P>This function frees and deconfigures shared BGP resources. + + +<HR><H3>Function</H3> +<P><I>int</I> <B>bgp_enable_ao_keys</B> (<I>struct bgp_proto *</I> <B>p</B>) -- Enable TCP-AO keys <P> @@ -572,37 +603,6 @@ <HR><H3>Function</H3> <P><I>void</I> -<B>bgp_close</B> -(<I>struct bgp_proto *</I> <B>p</B>) -- close a BGP instance -<P> -<H3>Arguments</H3> -<P> -<DL> -<DT><I>struct bgp_proto *</I> <B>p</B><DD><P>BGP instance -</DL> -<H3>Description</H3> -<P>This function frees and deconfigures shared BGP resources. - - -<HR><H3>Function</H3> -<P><I>void</I> -<B>bgp_open</B> -(<I>struct bgp_proto *</I> <B>p</B>) -- open a BGP instance -<P> -<H3>Arguments</H3> -<P> -<DL> -<DT><I>struct bgp_proto *</I> <B>p</B><DD><P>BGP instance -</DL> -<H3>Description</H3> -<P>This function allocates and configures shared BGP resources, mainly listening -sockets. Should be called as the last step during initialization (when lock -is acquired and neighbor is ready). When error, caller should change state to -PS_DOWN and return immediately. - - -<HR><H3>Function</H3> -<P><I>void</I> <B>bgp_start_timer</B> (<I>struct bgp_proto *</I> <B>p</B>, <I>timer *</I> <B>t</B>, <I>uint</I> <B>value</B>) -- start a BGP timer <P> @@ -756,13 +756,14 @@ <HR><H3>Function</H3> -<P><I>struct bgp_proto *</I> +<P><I>struct bgp_listen_request *</I> <B>bgp_find_proto</B> -(<I>sock *</I> <B>sk</B>) -- find existing proto for incoming connection +(<I>struct bgp_socket_private *</I> <B>bs</B>, <I>sock *</I> <B>sk</B>) -- find existing proto for incoming connection <P> <H3>Arguments</H3> <P> <DL> +<DT><I>struct bgp_socket_private *</I> <B>bs</B><DD><P>-- undescribed -- <DT><I>sock *</I> <B>sk</B><DD><P>TCP socket </DL> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/prog-7.html new/bird-doc-3.2.0/doc/prog-7.html --- old/bird-doc-3.1.4/doc/prog-7.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/prog-7.html 2025-12-26 17:16:05.000000000 +0100 @@ -790,7 +790,7 @@ </DL> <H3>Description</H3> <P>Finish MAC computation and return a pointer to the result. No more -<B>mac_update</B>() calls could be done, but the context may be reinitialized +<B>mac_update()</B> calls could be done, but the context may be reinitialized later. <P>Note that the returned pointer points into data in the <B>ctx</B> context. If it ceases to exist, the pointer becomes invalid. @@ -809,7 +809,7 @@ <H3>Description</H3> <P>Cleanup MAC context after computation (by filling with zeros). Not strictly necessary, just to erase sensitive data from stack. This also invalidates the -pointer returned by <B>mac_final</B>(). +pointer returned by <B>mac_final()</B>. <HR><H3>Function</H3> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bird-doc-3.1.4/doc/prog.html new/bird-doc-3.2.0/doc/prog.html --- old/bird-doc-3.1.4/doc/prog.html 2025-09-22 21:35:49.000000000 +0200 +++ new/bird-doc-3.2.0/doc/prog.html 2025-12-26 17:16:05.000000000 +0100 @@ -17,7 +17,7 @@ <H2>Ondrej Filip <I><[email protected]></I>, Martin Mares <I><[email protected]></I>, Ondrej Zajicek <I><[email protected]></I> -Maria Matejka <I><[email protected]></I>,</H2> +Maria Matejka <I><[email protected]></I>,</H2>bird-progdoc <P><HR> <EM>This document contains programmer's documentation for the BIRD Internet Routing Daemon project.</EM> <HR> Binary files old/bird-doc-3.1.4/doc/prog.pdf and new/bird-doc-3.2.0/doc/prog.pdf differ
