Age | Commit message (Collapse) | Author |
|
|
|
The bgpmask literals can include expressions. This is OK but they have
to be interpreted as soon as the code is run, not in the time the code
is used as value.
This led to strange behavior like rewriting bgpmasks when they shan't
be rewritten:
function mask_generator(int as)
{
return [= * as * =];
}
function another()
bgpmask m1;
bgpmask m2;
{
m1 = mask_generator(10);
m2 = mask_generator(20);
if (m1 == m2) {
print("strange"); # this would happen
}
}
Moreover, sending this to CLI would cause stack overflow and knock down the
whole BIRD, as soon as there is at least one route to execute the given
filter on.
show route filter bgpmask mmm; bgppath ppp; { ppp = +empty+; mmm = [= (ppp ~ mmm) =]; print(mmm); accept; }
The magic match operator (~) inside the bgpmask literal would try to
resolve mmm, which points to the same bgpmask so it would resolve
itself, call the magic match operator and vice versa.
After this patch, the bgpmask literal will get resolved as soon as it's
assigned to mmm and it also will return a type error as bool is not
convertible to ASN in BIRD.
|
|
|
|
This instruction was removed in the commit linked below
and never used ever again. Rest in peace.
commit 84c7e1943f0dbf896b1dd8d02a21120aa00463f4
Author: Pavel Machek <pavel@ucw.cz>
Date: Tue Mar 2 19:49:28 1999 +0000
|
|
|
|
It was supposed to do tail-recursion in interpret() but it didn't
compile as such. Converting it to loop makes a significant filter
performance improvement for flat filters.
|
|
The two-letter instructions were quite messy but they could be easily
read from memory dumps. Now GDB (since 2012) supports pretty printing
enum values and GCC checks the switch construction for missing enum
values so we are converting the nice two-byte values to enums.
Anyway, the enum still keeps the old two-byte values to be able to read
the instruction codes even without GDB from plain memory dump.
|
|
Uncommented an old test.
|
|
|
|
|
|
All keywords used in Babel config have to be declared locally.
Thanks to Leo Vandewoestijne for the bugreport.
|
|
|
|
For those who prefer cscope to etags
Thanks to Toke Hoiland-Jorgensen for the patch.
|
|
Fix an accidental bitwise or assignment that was supposed to be a
comparison.
Thanks to Toke Hoiland-Jorgensen for the patch.
|
|
This patch adds support for source-specific routing to the Babel protocol.
It changes the protocol to support both NET_IP6 and NET_IP6_SADR channels
for IPv6 addresses. If only a NET_IP6 channel is configured,
source-specific updates are ignored. Otherwise, non-source-specific
routes are simply treated as source-specific routes with SADR prefix 0.
Thanks to Toke Hoiland-Jorgensen for the original patch.
Minor changes by Ondrej Santiago Zajicek.
|
|
This patch adds support for source-specific IPv6 routes to BIRD core.
This is based on Dean Luga's original patch, with the review comments
addressed. SADR support is added to network address parsing in confbase.Y
and to the kernel protocol on Linux.
Currently there is no way to mix source-specific and non-source-specific
routes (i.e., SADR tables cannot be connected to non-SADR tables).
Thanks to Toke Hoiland-Jorgensen for the original patch.
Minor changes by Ondrej Santiago Zajicek.
|
|
|
|
Internal table used for route learn was created with non-matching net
type for IPv6 kernel proto.
Thanks to Toke Hoiland-Jorgensen for the bugreport
|
|
Thanks to Svenne Krap for the bugreport.
|
|
|
|
|
|
On Linux, setting the ToS will also set the priority and the range of
accepted values is quite limited (masked by 0x1e). Therefore, 0xc0 is
translated to a priority of 0, not something we want, overriding the
"7" priority which was set previously explicitely. To avoid that, just
move setting priority later in the code.
Thanks to Vincent Bernat for the patch.
|
|
|
|
|
|
|
|
|
|
When pipe inherited from template, every channel config was lost.
|
|
The option allows to specify that some cease subcodes should
disable the protocol when received.
|
|
A filter should log messages only if executed explicitly (e.g., during
route export or route import). When a filter is executed for technical
reasons (e.g., to establish whether a route was exported before), it
should run silently.
|
|
|
|
|
|
To comply with RFC 8212 requirements.
|
|
|
|
Old way to set direct routes is to use local IP as gateway, but that does
not work properly on newer FreeBSDs. Now we use sockaddr_dl containing
interface index as gateway.
|
|
|
|
Multiple definitions of same channels are forbidden, but inherited
channel can be redefined. In such case channel options are merged.
|
|
|
|
Function filter_same() must be called with arguments in proper order,
otherwise it breaks the new filter, causing crash during route
processing.
|
|
The same is already done for clists. Also fixes defined() to work
properly for paths and clists.
|
|
|
|
|
|
|
|
Should use remote value, not local value.
|
|
According to GNU Readline developers, if we link with libreadline then
there is no need to link with libhistory at all.
|
|
|
|
|
|
|
|
|
|
|
|
|