diff options
author | Jan Moskyto Matejka <mq@ucw.cz> | 2017-02-22 11:58:04 +0100 |
---|---|---|
committer | Jan Moskyto Matejka <mq@ucw.cz> | 2017-02-22 11:58:04 +0100 |
commit | c609d039860f97f400d2cf0e9ca2b4e87b3fd1cc (patch) | |
tree | 6141291f6d6fbc0a90320f39c01bde49a119eadf /nest/a-set.c | |
parent | 62e64905b76b88da72c522eac9276a74f60c9592 (diff) | |
parent | 2be9218a3b1dfcc8e42c8d118e95f2074d9f7a7c (diff) |
Merge branch 'int-new' into nexthop-merged
Diffstat (limited to 'nest/a-set.c')
-rw-r--r-- | nest/a-set.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/nest/a-set.c b/nest/a-set.c index 82bf8b0d..a2fb6953 100644 --- a/nest/a-set.c +++ b/nest/a-set.c @@ -233,6 +233,26 @@ lc_set_contains(struct adata *list, lcomm val) return 0; } +struct adata * +int_set_prepend(struct linpool *pool, struct adata *list, u32 val) +{ + struct adata *res; + int len; + + if (int_set_contains(list, val)) + return list; + + len = list ? list->length : 0; + res = lp_alloc(pool, sizeof(struct adata) + len + 4); + res->length = len + 4; + + if (list) + memcpy(res->data + 4, list->data, list->length); + + * (u32 *) res->data = val; + + return res; +} struct adata * int_set_add(struct linpool *pool, struct adata *list, u32 val) @@ -250,8 +270,7 @@ int_set_add(struct linpool *pool, struct adata *list, u32 val) if (list) memcpy(res->data, list->data, list->length); - u32 *c = (u32 *) (res->data + len); - *c = val; + * (u32 *) (res->data + len) = val; return res; } |