From cf07d8ad79273a3bbf0617c17e438602e4b64ece Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Thu, 14 Apr 2022 18:32:19 +0200 Subject: Replaced boilerplate eattr allocation by ea_set_attr() --- lib/route.h | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'lib/route.h') diff --git a/lib/route.h b/lib/route.h index ba7bab61..ad3f3fb7 100644 --- a/lib/route.h +++ b/lib/route.h @@ -217,10 +217,7 @@ ea_list *ea_normalize(const ea_list *e); uint ea_list_size(ea_list *); void ea_list_copy(ea_list *dest, ea_list *src, uint size); -struct ea_one_attr_list { - ea_list l; - eattr a; -}; +#define EA_LOCAL_LIST(N) struct { ea_list l; eattr a[N]; } #define EA_LITERAL_EMBEDDED(_id, _type, _flags, _val) ({ \ ASSERT_DIE(_type & EAF_EMBEDDED); \ @@ -243,16 +240,16 @@ struct ea_one_attr_list { static inline eattr * ea_set_attr(ea_list **to, eattr a) { - struct ea_one_attr_list *ea = tmp_alloc(sizeof(*ea)); - *ea = (struct ea_one_attr_list) { + EA_LOCAL_LIST(1) *ea = tmp_alloc(sizeof(*ea)); + *ea = (typeof(*ea)) { .l.flags = EALF_SORTED, .l.count = 1, .l.next = *to, - .a = a, + .a[0] = a, }; *to = &ea->l; - return &ea->a; + return &ea->a[0]; } static inline void -- cgit v1.2.3