X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=config.h;h=6dfb236186b47c64d1a56bf62477c13d6ab082b4;hp=5623a40fcd0022ec74d2ee2f6e44b845e1291941;hb=14fae227e03e69df2bf8af4c1490929459727ca8;hpb=3fa53680c85a6e029a3e7b4d673bffee4795fa52 diff --git a/config.h b/config.h index 5623a40..6dfb236 100644 --- a/config.h +++ b/config.h @@ -25,12 +25,24 @@ struct config_param_list { const struct config_param_list *next[]; }; -struct config_state { - struct blob_attr *data; - unsigned int version; -}; +#ifndef BITS_PER_LONG +#define BITS_PER_LONG (8 * sizeof(unsigned long)) +#endif + +static inline void set_bit(unsigned long *bits, int bit) +{ + bits[bit / BITS_PER_LONG] |= (1UL << (bit % BITS_PER_LONG)); +} + +static inline bool test_bit(unsigned long *bits, int bit) +{ + return !!(bits[bit / BITS_PER_LONG] & (1UL << (bit % BITS_PER_LONG))); +} void config_init_interfaces(const char *name); -void config_set_state(struct config_state *state, const struct blob_attr *attr); +bool config_check_equal(struct blob_attr *c1, struct blob_attr *c2, + const struct config_param_list *config); +bool config_diff(struct blob_attr **tb1, struct blob_attr **tb2, + const struct config_param_list *config, unsigned long *diff); #endif