Age | Commit message (Collapse) | Author |
|
|
|
Macro METHOD_R() is used for simplest methods, there is no place to
define argument types, so let's force it to be 0.
|
|
No need to have toksym in symbol_known, as defined symbols are preferred
(by scope) to keywords anyway. Adding it just creates grammar conflicts.
|
|
|
|
|
|
|
|
|
|
Methods can now be called as x.m(y), as long as x can have its type
inferred in config time. If used as a command, it modifies the object,
if used as a value, it keeps the original object intact.
Also functions add(x,y), delete(x,y), filter(x,y) and prepend(x,y) now
spit a warning and are considered deprecated.
It's also possible to call a method on a constant, see filter/test.conf
for examples like bgp_path = +empty+.prepend(1).
Inside instruction definitions (filter/f-inst.c), a METHOD_CONSTRUCTOR()
call is added, which registers the instruction as a method for the type
of its first argument. Each type has its own method symbol table and
filter parser switches between them based on the inferred type of the
object calling the method.
Also FI_CLIST_(ADD|DELETE|FILTER) instructions have been split to allow
for this method dispatch. With type inference, it's now possible.
|
|
|
|
|
|
|
|
To allow for future dynamic method definition, parsing method names is
done via a dedicated keyword hash/scope.
|
|
|
|
|
|
|
|
This is just a preparationary refactoring to allow type-based method
tables.
|
|
This avoids unnecessary collapsed soft scopes caused by keyword symbol multiallocation.
|
|
This is a backport cherry-pick of commits
165156beeb2926472bbceca3c103aacc3f81a8cc
cce974e8ea992d0e6d2f649eca7880b436d91d71
from the v3.0 branch as we need symbol hashes directly inside their
scopes for more general usage than before.
|
|
|
|
between v2 and v3
|
|
According to RFC 5882, system should not interpret the local or remote
session state transition to AdminDown as failure. We followed that for
the local session state but not for the remote session state (which
just triggered a transition of the local state to Down). The patch
fixes that.
We do not properly generate AdminDown on our side, so the patch is
relevant just for interoperability with other systems.
Thanks to Sunnat Samadov for the bugreport.
|
|
|
|
|
|
|
|
|
|
Use 51820 (default wireguard port) as default tunnel type.
|
|
Refer to RFC 9012, The BGP Tunnel Encapsulation Attribute.
|
|
|
|
Problem with listen_port dead lock in wireguard-go.
|
|
Unix socket implementation for wireguard-go.
Use abstract unix sockets on Android
|
|
Add to makefile.
|
|
Add literal for empty set "empty", which works for clist, eclist
and lclist, by using existing constant promotion mechanism.
|
|
Implement byte string literals on the format b"xxx" and b64"xxx"
which can be used as literals and in constants.
The format b"xxx" supports character data and octal and
hexadecimal data using C escapes (\n, \nn, \nnn, \xn and \xnn).
The format b64"xxx" supports base64 encoded strings (RFC1341).
|
|
Support abstract socket in sk_unix_connect
Implement SK_UNIX_ACTIVE
|
|
Most syntactic constructs in BIRD configuration (e.g. protocol options)
are defined as keywords, which are distinct from symbols (user-defined
names for protocols, variables, ...). That may cause backwards
compatibility issue when a new feature is added, as it may collide with
existing user names.
We can allow keywords to be shadowed by symbols in almost all cases to
avoid this issue.
This replaces the previous mechanism, where shadowable symbols have to be
explictly added to kw_syms.
|
|
The previous approach (use VOID constant for variable initialization)
failed due to dynamic type check failure.
Thanks to Alexander Zubkov <green@qrator.net> for the bugreport.
|
|
|
|
Thanks to Alexander Zubkov for the notice.
|
|
|
|
|
|
Nonterminal bytestring allows to provide expressions to be evaluated in
places where BYTETEXT is used now: passwords, radv custom option.
Based on the patch from Alexander Zubkov <green@qrator.net>, thanks!
|
|
Replace f_eval_int() function with a type-generic variant: cf_eval().
Implement similar fuction: cf_eval_int() via inline call to cf_eval().
|
|
- Rename BYTESTRING lexem to BYTETEXT, not to collide with 'bytestring' type name
- Add bytestring type with id T_BYTESTRING (0x2c)
- Add from_hex() filter function to create bytestring from hex string
- Add filter test cases for bytestring type
Minor changes by committer.
|
|
Based on patch from Alexander Zubkov, thanks!
|
|
Despite not having defined 'master interface', VRF interfaces should be
treated as being inside respective VRFs. They behave as a loopback for
respective VRFs. Treating the VRF interface as inside the VRF allows
e.g. OSPF to pick up IP addresses defined on the VRF interface.
For this, we also need to tell apart VRF interfaces and regular interfaces.
Extend Netlink code to parse interface type and mark VRF interfaces with
IF_VRF flag.
Based on the patch from Erin Shepherd, thanks!
|
|
|
|
It seems all Fedora packages are built from epel7 branch.
|
|
The test was written by Maria Matejka, thanks!
Run this using
apkg test
|
|
This will allow compatibility on future apkg config updates.
|
|
Mirrors debian patch.
|