0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-10-18 01:54:08 +00:00

Conf: Bytestrings with hex: should use the same general format as ones without.

Either hex:01234567, or hex:01:23:45:67. No confusing formats like
hex:0123:4567🆎cdef, which looks like there is an implicit zero byte.
This commit is contained in:
Ondrej Zajicek 2023-10-06 02:36:59 +02:00
parent e83beb70bd
commit c5c3a22bcc
3 changed files with 12 additions and 16 deletions

View File

@ -242,7 +242,7 @@ WHITE [ \t]
return IP4;
}
({XIGIT}{2}){16,}|{XIGIT}{2}(:{XIGIT}{2}){15,}|hex:({XIGIT}{2}(:?{XIGIT}{2})*)? {
({XIGIT}{2}){16,}|{XIGIT}{2}(:{XIGIT}{2}){15,}|hex:({XIGIT}{2}*|{XIGIT}{2}(:{XIGIT}{2})*) {
char *s = yytext;
struct adata *bs;

View File

@ -1561,22 +1561,18 @@ in the foot).
This is a sequences of arbitrary bytes. There are no ways to modify
bytestrings in filters. You can pass them between function, assign
them to variables of type <cf/bytestring/, print such values,
compare bytestings (<cf/=, !=/). Bytestring literals are written
in several ways:
compare bytestings (<cf/=, !=/).
A sequence of hexadecimal digit pairs, optionally colon-separated.
A bytestring specified this way must be at least 16 bytes (32 digits)
long: <cf/01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef/ or
<cf/0123456789abcdef0123456789abcdef/.
A sequence of hexadecimal digit pairs of any lengh (including zero)
with the <cf/hex:/ prefix. Colon separators can be inserted
arbitrarily between any bytes: <cf/hex:/, <cf/hex:1234/,
<cf/hex:1234:56:78/.
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
<cf/hex:/ prefix: <cf/01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef/,
<cf/0123456789abcdef0123456789abcdef/, <cf/hex:/, <cf/hex:12:34:56/,
<cf/hex:12345678/.
A bytestring can be made from a hex string using <cf/from_hex()/
function. Source strings can use any number of colons, hyphens and
spaces as byte separators: <cf/from_hex(" 1234 56:78 ab-cd-ef ")/.
function. Source strings can use any number of dots, colons, hyphens
and spaces as byte separators: <cf/from_hex(" 12.34 56:78 ab-cd-ef ")/.
<tag><label id="type-ip">ip</tag>
This type can hold a single IP address. The IPv4 addresses are stored as
@ -5006,7 +5002,7 @@ definitions, prefix definitions and DNS definitions:
<label id="radv-custom-option-exam">
<p><code>
custom option type 38 value hex:0e10:2001:0db8:000a:000b:0000:0000;
custom option type 38 value hex:0e:10:20:01:0d:b8:00:0a:00:0b:00:00:00:00;
</code>
<tag><label id="radv-trigger">trigger <m/prefix/</tag>

View File

@ -87,7 +87,7 @@ bstrhextobin(const char *s, byte *b)
int v = fromxdigit(*s);
if (v < 0)
{
if (strchr(" :-", *s) && !hi)
if (strchr(" -.:", *s) && !hi)
continue;
else
return -1;