]>
git.ipfire.org Git - thirdparty/bird.git/blob - nest/attrs.h
2 * BIRD Internet Routing Daemon -- Attribute Operations
4 * (c) 2000 Martin Mares <mj@ucw.cz>
6 * Can be freely distributed and used under the terms of the GNU GPL.
10 #define _BIRD_ATTRS_H_
14 #define AS_PATH_SET 1 /* Types of path segments */
15 #define AS_PATH_SEQUENCE 2
16 #define AS_PATH_CONFED_SEQUENCE 3
17 #define AS_PATH_CONFED_SET 4
19 #define AS_PATH_MAXLEN 10000
21 #define AS_TRANS 23456
22 /* AS_TRANS is used when we need to store 32bit ASN larger than 0xFFFF
23 * to 16bit slot (like in 16bit AS_PATH). See RFC 4893 for details
26 struct adata
*as_path_prepend(struct linpool
*pool
, struct adata
*olda
, u32 as
);
27 int as_path_convert_to_old(struct adata
*path
, byte
*dst
, int *new_used
);
28 int as_path_convert_to_new(struct adata
*path
, byte
*dst
, int req_as
);
29 void as_path_format(struct adata
*path
, byte
*buf
, unsigned int size
);
30 int as_path_getlen(struct adata
*path
);
31 int as_path_get_first(struct adata
*path
, u32
*orig_as
);
32 int as_path_get_last(struct adata
*path
, u32
*last_as
);
33 int as_path_is_member(struct adata
*path
, u32 as
);
41 struct f_path_mask
*next
;
46 int as_path_match(struct adata
*path
, struct f_path_mask
*mask
);
50 void int_set_format(struct adata
*set
, int way
, byte
*buf
, unsigned int size
);
51 struct adata
*int_set_add(struct linpool
*pool
, struct adata
*list
, u32 val
);
52 int int_set_contains(struct adata
*list
, u32 val
);
53 struct adata
*int_set_del(struct linpool
*pool
, struct adata
*list
, u32 val
);
55 static inline int int_set_get_size(struct adata
*list
)
56 { return list
->length
/ 4; }