summaryrefslogtreecommitdiff
path: root/filter/filter.h
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2016-10-01 12:50:29 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2016-10-03 12:48:56 +0200
commit66dbdbd993115c57acafdb776d2165d0b4a90a45 (patch)
tree802ed0a7926d5edca62fa0adeaf73ba203d2b2fb /filter/filter.h
parentf51b1f556595108d53b9f4580bfcb96bfbc85442 (diff)
BGP: Support for large communities
Add support for large communities (draft-ietf-idr-large-community), 96bit alternative to RFC 1997 communities. Thanks to Matt Griswold for the original patch.
Diffstat (limited to 'filter/filter.h')
-rw-r--r--filter/filter.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/filter/filter.h b/filter/filter.h
index e59c8226..e0f34e4f 100644
--- a/filter/filter.h
+++ b/filter/filter.h
@@ -38,6 +38,17 @@ struct f_inst_roa_check {
struct roa_table_config *rtc;
};
+struct f_inst3 {
+ struct f_inst i;
+ union {
+ int i;
+ void *p;
+ } a3;
+};
+
+#define INST3(x) (((struct f_inst3 *) x)->a3)
+
+
struct f_prefix {
ip_addr ip;
int len;
@@ -53,6 +64,7 @@ struct f_val {
union {
uint i;
u64 ec;
+ lcomm lc;
/* ip_addr ip; Folded into prefix */
struct f_prefix px;
char *s;
@@ -168,8 +180,10 @@ void val_format(struct f_val v, buffer *buf);
#define T_PATH_MASK 0x23 /* mask for BGP path */
#define T_PATH 0x24 /* BGP path */
#define T_CLIST 0x25 /* Community list */
-#define T_ECLIST 0x26 /* Extended community list */
-#define T_EC 0x27 /* Extended community value, u64 */
+#define T_EC 0x26 /* Extended community value, u64 */
+#define T_ECLIST 0x27 /* Extended community list */
+#define T_LC 0x28 /* Large community value, lcomm */
+#define T_LCLIST 0x29 /* Large community list */
#define T_RETURN 0x40
#define T_SET 0x80