summaryrefslogtreecommitdiff
path: root/nest/a-set.c
diff options
context:
space:
mode:
authorJan Moskyto Matejka <mq@ucw.cz>2017-02-22 11:58:04 +0100
committerJan Moskyto Matejka <mq@ucw.cz>2017-02-22 11:58:04 +0100
commitc609d039860f97f400d2cf0e9ca2b4e87b3fd1cc (patch)
tree6141291f6d6fbc0a90320f39c01bde49a119eadf /nest/a-set.c
parent62e64905b76b88da72c522eac9276a74f60c9592 (diff)
parent2be9218a3b1dfcc8e42c8d118e95f2074d9f7a7c (diff)
Merge branch 'int-new' into nexthop-merged
Diffstat (limited to 'nest/a-set.c')
-rw-r--r--nest/a-set.c23
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;
}