summaryrefslogtreecommitdiff
path: root/proto/bgp
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2022-05-30 15:31:19 +0200
committerMaria Matejka <mq@ucw.cz>2022-05-30 15:31:19 +0200
commitd7b077f5d63625beaca1bcfe971e3b853dbfcc06 (patch)
tree7d0e8d62cca65ae2dd3d5e6231657f1e43630b5a /proto/bgp
parentd024f471ea5239a8cb6ce2ccd83b686a1d438aa5 (diff)
parent4a23ede2b056a41456790cc20a0c3d92a7137693 (diff)
Merge commit '4a23ede2b056a41456790cc20a0c3d92a7137693' into haugesund
Diffstat (limited to 'proto/bgp')
-rw-r--r--proto/bgp/Makefile3
-rw-r--r--proto/bgp/attrs.c8
-rw-r--r--proto/bgp/bgp.c5
-rw-r--r--proto/bgp/bgp.h4
-rw-r--r--proto/bgp/packets.c2
5 files changed, 13 insertions, 9 deletions
diff --git a/proto/bgp/Makefile b/proto/bgp/Makefile
index 00aaef5e..2a4cc99c 100644
--- a/proto/bgp/Makefile
+++ b/proto/bgp/Makefile
@@ -2,5 +2,6 @@ src := attrs.c bgp.c packets.c
obj := $(src-o-files)
$(all-daemon)
$(cf-local)
+$(call proto-build,bgp_build)
-tests_objs := $(tests_objs) $(src-o-files) \ No newline at end of file
+tests_objs := $(tests_objs) $(src-o-files)
diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c
index e2138679..f4f7d15a 100644
--- a/proto/bgp/attrs.c
+++ b/proto/bgp/attrs.c
@@ -106,7 +106,7 @@ bgp_set_attr(ea_list **attrs, struct linpool *pool, uint code, uint flags, uintp
({ REPORT(msg, ## args); s->err_withdraw = 1; return; })
#define UNSET(a) \
- ({ a->type = EAF_TYPE_UNDEF; return; })
+ ({ a->undef = 1; return; })
#define REJECT(msg, args...) \
({ log(L_ERR "%s: " msg, s->proto->p.name, ## args); s->err_reject = 1; return; })
@@ -1153,7 +1153,7 @@ bgp_export_attr(struct bgp_export_state *s, eattr *a, ea_list *to)
a->flags = (a->flags & BAF_PARTIAL) | desc->flags;
/* Set partial bit if new opt-trans attribute is attached to non-local route */
- if ((s->src != NULL) && (a->type & EAF_ORIGINATED) &&
+ if ((s->src != NULL) && (a->originated) &&
(a->flags & BAF_OPTIONAL) && (a->flags & BAF_TRANSITIVE))
a->flags |= BAF_PARTIAL;
@@ -1161,7 +1161,7 @@ bgp_export_attr(struct bgp_export_state *s, eattr *a, ea_list *to)
CALL(desc->export, s, a);
/* Attribute might become undefined in hook */
- if ((a->type & EAF_TYPE_MASK) == EAF_TYPE_UNDEF)
+ if (a->undef)
return;
}
else
@@ -1776,7 +1776,7 @@ bgp_update_attrs(struct bgp_proto *p, struct bgp_channel *c, rte *e, ea_list *at
/* MULTI_EXIT_DESC attribute - accept only if set in export filter */
a = bgp_find_attr(attrs0, BA_MULTI_EXIT_DISC);
- if (a && !(a->type & EAF_FRESH))
+ if (a && !(a->fresh))
bgp_unset_attr(&attrs, pool, BA_MULTI_EXIT_DISC);
}
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index f52eb2f0..220551f6 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -2592,3 +2592,8 @@ struct protocol proto_bgp = {
.get_route_info = bgp_get_route_info,
.show_proto_info = bgp_show_proto_info
};
+
+void bgp_build(void)
+{
+ proto_build(&proto_bgp);
+}
diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h
index 655b2636..022adb39 100644
--- a/proto/bgp/bgp.h
+++ b/proto/bgp/bgp.h
@@ -563,9 +563,7 @@ bgp_set_attr_data(ea_list **to, struct linpool *pool, uint code, uint flags, voi
bgp_set_attr(to, pool, code, flags, (uintptr_t) a);
}
-static inline void
-bgp_unset_attr(ea_list **to, struct linpool *pool, uint code)
-{ eattr *e = bgp_set_attr(to, pool, code, 0, 0); e->type = EAF_TYPE_UNDEF; }
+#define bgp_unset_attr(to, pool, code) ea_unset_attr(to, pool, 0, code)
int bgp_encode_mp_reach_mrt(struct bgp_write_state *s, eattr *a, byte *buf, uint size);
diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c
index adfaf2f1..c88165bc 100644
--- a/proto/bgp/packets.c
+++ b/proto/bgp/packets.c
@@ -1062,7 +1062,7 @@ bgp_use_next_hop(struct bgp_export_state *s, eattr *a)
return 1;
/* Keep it when explicitly set in export filter */
- if (a->type & EAF_FRESH)
+ if (a->fresh)
return 1;
/* Check for non-matching AF */