diff options
author | Maria Matejka <mq@ucw.cz> | 2022-04-14 18:32:19 +0200 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2022-05-04 15:38:40 +0200 |
commit | cf07d8ad79273a3bbf0617c17e438602e4b64ece (patch) | |
tree | f747ced6c101d48032e1f0185d0340b5fb3d69f3 /lib/route.h | |
parent | 1d309c4ce6e95b68c64a8f007f6dd2f1830a5707 (diff) |
Replaced boilerplate eattr allocation by ea_set_attr()
Diffstat (limited to 'lib/route.h')
-rw-r--r-- | lib/route.h | 13 |
1 files changed, 5 insertions, 8 deletions
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 |