mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Merge branch 'int-new' into nexthop-merged
This commit is contained in:
@@ -957,7 +957,7 @@ fragment_val_str(u8 val)
|
||||
return "???";
|
||||
}
|
||||
|
||||
static int
|
||||
static uint
|
||||
net_format_flow(char *buf, uint blen, const byte *data, uint dlen, int ipv6)
|
||||
{
|
||||
buffer b = {
|
||||
@@ -1125,7 +1125,7 @@ net_format_flow(char *buf, uint blen, const byte *data, uint dlen, int ipv6)
|
||||
* of written chars. If final string is too large, the string will ends the with
|
||||
* ' ...}' sequence and zero-terminator.
|
||||
*/
|
||||
int
|
||||
uint
|
||||
flow4_net_format(char *buf, uint blen, const net_addr_flow4 *f)
|
||||
{
|
||||
return net_format_flow(buf, blen, f->data, f->length - sizeof(net_addr_flow4), 0);
|
||||
@@ -1141,7 +1141,7 @@ flow4_net_format(char *buf, uint blen, const net_addr_flow4 *f)
|
||||
* of written chars. If final string is too large, the string will ends the with
|
||||
* ' ...}' sequence and zero-terminator.
|
||||
*/
|
||||
int
|
||||
uint
|
||||
flow6_net_format(char *buf, uint blen, const net_addr_flow6 *f)
|
||||
{
|
||||
return net_format_flow(buf, blen, f->data, f->length - sizeof(net_addr_flow6), 1);
|
||||
|
@@ -42,6 +42,9 @@ const char *flow_type_str(enum flow_type type, int ipv6);
|
||||
|
||||
uint flow_write_length(byte *data, u16 len);
|
||||
|
||||
static inline u16 flow_hdr_length(const byte *data)
|
||||
{ return ((*data & 0xf0) == 0xf0) ? 2 : 1; }
|
||||
|
||||
static inline u16 flow_read_length(const byte *data)
|
||||
{ return ((*data & 0xf0) == 0xf0) ? get_u16(data) & 0x0fff : *data; }
|
||||
|
||||
@@ -128,7 +131,7 @@ void flow6_validate_cf(net_addr_flow6 *f);
|
||||
* Net Formatting
|
||||
*/
|
||||
|
||||
int flow4_net_format(char *buf, uint blen, const net_addr_flow4 *f);
|
||||
int flow6_net_format(char *buf, uint blen, const net_addr_flow6 *f);
|
||||
uint flow4_net_format(char *buf, uint blen, const net_addr_flow4 *f);
|
||||
uint flow6_net_format(char *buf, uint blen, const net_addr_flow6 *f);
|
||||
|
||||
#endif /* _BIRD_FLOWSPEC_H_ */
|
||||
|
@@ -30,20 +30,17 @@ t_read_length(void)
|
||||
{
|
||||
byte data[] = { 0xcc, 0xcc, 0xcc };
|
||||
|
||||
u16 get;
|
||||
u16 expect;
|
||||
|
||||
for (uint expect = 0; expect < 0xf0; expect++)
|
||||
{
|
||||
*data = expect;
|
||||
get = flow_read_length(data);
|
||||
uint get = flow_read_length(data);
|
||||
bt_assert_msg(get == expect, "Testing get length 0x%02x (get 0x%02x)", expect, get);
|
||||
}
|
||||
|
||||
for (uint expect = 0; expect <= 0xfff; expect++)
|
||||
{
|
||||
put_u16(data, expect | 0xf000);
|
||||
get = flow_read_length(data);
|
||||
uint get = flow_read_length(data);
|
||||
bt_assert_msg(get == expect, "Testing get length 0x%03x (get 0x%03x)", expect, get);
|
||||
}
|
||||
|
||||
@@ -54,12 +51,10 @@ static int
|
||||
t_write_length(void)
|
||||
{
|
||||
byte data[] = { 0xcc, 0xcc, 0xcc };
|
||||
uint offset;
|
||||
byte *c;
|
||||
|
||||
for (uint expect = 0; expect <= 0xfff; expect++)
|
||||
{
|
||||
offset = flow_write_length(data, expect);
|
||||
uint offset = flow_write_length(data, expect);
|
||||
|
||||
uint set = (expect < 0xf0) ? *data : (get_u16(data) & 0x0fff);
|
||||
bt_assert_msg(set == expect, "Testing set length 0x%03x (set 0x%03x)", expect, set);
|
||||
|
@@ -25,6 +25,12 @@
|
||||
(v).data = mb_allocz(pool, HASH_SIZE(v) * sizeof(* (v).data)); \
|
||||
})
|
||||
|
||||
#define HASH_FREE(v) \
|
||||
({ \
|
||||
mb_free((v).data); \
|
||||
(v) = (typeof(v)){ }; \
|
||||
})
|
||||
|
||||
#define HASH_FIND(v,id,key...) \
|
||||
({ \
|
||||
u32 _h = HASH_FN(v, id, key); \
|
||||
|
Reference in New Issue
Block a user