0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-10-18 09:58:43 +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; 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; char *s = yytext;
struct adata *bs; 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 This is a sequences of arbitrary bytes. There are no ways to modify
bytestrings in filters. You can pass them between function, assign bytestrings in filters. You can pass them between function, assign
them to variables of type <cf/bytestring/, print such values, them to variables of type <cf/bytestring/, print such values,
compare bytestings (<cf/=, !=/). Bytestring literals are written compare bytestings (<cf/=, !=/).
in several ways:
A sequence of hexadecimal digit pairs, optionally colon-separated. Bytestring literals are written as a sequence of hexadecimal digit
A bytestring specified this way must be at least 16 bytes (32 digits) pairs, optionally colon-separated. A bytestring specified this way
long: <cf/01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef/ or must be either at least 16 bytes (32 digits) long, or prefixed by the
<cf/0123456789abcdef0123456789abcdef/. <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/,
A sequence of hexadecimal digit pairs of any lengh (including zero) <cf/hex:12345678/.
with the <cf/hex:/ prefix. Colon separators can be inserted
arbitrarily between any bytes: <cf/hex:/, <cf/hex:1234/,
<cf/hex:1234:56:78/.
A bytestring can be made from a hex string using <cf/from_hex()/ A bytestring can be made from a hex string using <cf/from_hex()/
function. Source strings can use any number of colons, hyphens and function. Source strings can use any number of dots, colons, hyphens
spaces as byte separators: <cf/from_hex(" 1234 56:78 ab-cd-ef ")/. and spaces as byte separators: <cf/from_hex(" 12.34 56:78 ab-cd-ef ")/.
<tag><label id="type-ip">ip</tag> <tag><label id="type-ip">ip</tag>
This type can hold a single IP address. The IPv4 addresses are stored as 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"> <label id="radv-custom-option-exam">
<p><code> <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> </code>
<tag><label id="radv-trigger">trigger <m/prefix/</tag> <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); int v = fromxdigit(*s);
if (v < 0) if (v < 0)
{ {
if (strchr(" :-", *s) && !hi) if (strchr(" -.:", *s) && !hi)
continue; continue;
else else
return -1; return -1;