]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/bitfield.h
Merge pull request #12780 from opensourcerouting/spdx-license-id
[mirror_frr.git] / lib / bitfield.h
index 6c4e661de114f8f25d81930de8ef09492962d06c..c4e2cbe4e1f0ed072c74adc7987b03a0b6269a41 100644 (file)
@@ -57,7 +57,8 @@ DECLARE_MTYPE(BITFIELD);
        do {                                                                   \
                (v).n = 0;                                                     \
                (v).m = ((N) / WORD_SIZE + 1);                                 \
-               (v).data = XCALLOC(MTYPE_BITFIELD, ((v).m * sizeof(word_t)));  \
+               (v).data = (word_t *)XCALLOC(MTYPE_BITFIELD,                   \
+                                            ((v).m * sizeof(word_t)));        \
        } while (0)
 
 /**
@@ -253,6 +254,19 @@ static inline unsigned int bf_find_next_set_bit(bitfield_t v,
                (v).data = NULL;                                               \
        } while (0)
 
+static inline bitfield_t bf_copy(bitfield_t src)
+{
+       bitfield_t dst;
+
+       assert(bf_is_inited(src));
+       bf_init(dst, WORD_SIZE * (src.m - 1));
+       for (size_t i = 0; i < src.m; i++)
+               dst.data[i] = src.data[i];
+       dst.n = src.n;
+       return dst;
+}
+
+
 #ifdef __cplusplus
 }
 #endif