summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter/data.h4
-rw-r--r--filter/f-inst.c2
-rw-r--r--proto/bgp/config.Y6
3 files changed, 7 insertions, 5 deletions
diff --git a/filter/data.h b/filter/data.h
index 6d588204..924bbf3e 100644
--- a/filter/data.h
+++ b/filter/data.h
@@ -20,6 +20,9 @@ enum f_type {
/* Nothing. Simply nothing. */
T_VOID = 0,
+/* Something but inaccessible. */
+ T_OPAQUE = 0xee,
+
/* User visible types, which fit in int */
T_INT = 0x10,
T_BOOL = 0x11,
@@ -41,7 +44,6 @@ enum f_type {
T_ENUM_AF = 0x38,
/* new enums go here */
- T_ENUM_EMPTY = 0x3f, /* Special hack for atomic_aggr */
#define T_ENUM T_ENUM_LO ... T_ENUM_HI
diff --git a/filter/f-inst.c b/filter/f-inst.c
index 11ca1e28..75a53499 100644
--- a/filter/f-inst.c
+++ b/filter/f-inst.c
@@ -704,7 +704,7 @@
RESULT_(T_QUAD, i, e->u.data);
break;
case EAF_TYPE_OPAQUE:
- RESULT_(T_ENUM_EMPTY, i, 0);
+ RESULT_(T_OPAQUE, ad, e->u.ptr);
break;
case EAF_TYPE_IP_ADDRESS:
RESULT_(T_IP, ip, *((ip_addr *) e->u.ptr->data));
diff --git a/proto/bgp/config.Y b/proto/bgp/config.Y
index 04920941..86124bfb 100644
--- a/proto/bgp/config.Y
+++ b/proto/bgp/config.Y
@@ -328,9 +328,9 @@ dynamic_attr: BGP_MED
dynamic_attr: BGP_LOCAL_PREF
{ $$ = f_new_dynamic_attr(EAF_TYPE_INT, T_INT, EA_CODE(PROTOCOL_BGP, BA_LOCAL_PREF)); } ;
dynamic_attr: BGP_ATOMIC_AGGR
- { $$ = f_new_dynamic_attr(EAF_TYPE_OPAQUE, T_ENUM_EMPTY, EA_CODE(PROTOCOL_BGP, BA_ATOMIC_AGGR)); } ;
+ { $$ = f_new_dynamic_attr(EAF_TYPE_OPAQUE, T_OPAQUE, EA_CODE(PROTOCOL_BGP, BA_ATOMIC_AGGR)); } ;
dynamic_attr: BGP_AGGREGATOR
- { $$ = f_new_dynamic_attr(EAF_TYPE_OPAQUE, T_ENUM_EMPTY, EA_CODE(PROTOCOL_BGP, BA_AGGREGATOR)); } ;
+ { $$ = f_new_dynamic_attr(EAF_TYPE_OPAQUE, T_OPAQUE, EA_CODE(PROTOCOL_BGP, BA_AGGREGATOR)); } ;
dynamic_attr: BGP_COMMUNITY
{ $$ = f_new_dynamic_attr(EAF_TYPE_INT_SET, T_CLIST, EA_CODE(PROTOCOL_BGP, BA_COMMUNITY)); } ;
dynamic_attr: BGP_ORIGINATOR_ID
@@ -340,7 +340,7 @@ dynamic_attr: BGP_CLUSTER_LIST
dynamic_attr: BGP_EXT_COMMUNITY
{ $$ = f_new_dynamic_attr(EAF_TYPE_EC_SET, T_ECLIST, EA_CODE(PROTOCOL_BGP, BA_EXT_COMMUNITY)); } ;
dynamic_attr: BGP_AIGP
- { $$ = f_new_dynamic_attr(EAF_TYPE_OPAQUE, T_ENUM_EMPTY, EA_CODE(PROTOCOL_BGP, BA_AIGP)); } ;
+ { $$ = f_new_dynamic_attr(EAF_TYPE_OPAQUE, T_OPAQUE, EA_CODE(PROTOCOL_BGP, BA_AIGP)); } ;
dynamic_attr: BGP_LARGE_COMMUNITY
{ $$ = f_new_dynamic_attr(EAF_TYPE_LC_SET, T_LCLIST, EA_CODE(PROTOCOL_BGP, BA_LARGE_COMMUNITY)); } ;