X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=config.h;h=c4953c6ddc82abe0b307be29ef3f46a10a015c7b;hp=6403e1f47241b47bceff69fc7f8fef486de92a33;hb=8625bb7339d437ac3b827fa5c8dcc7b69bcf1e1b;hpb=f2382b059a30759d41b248c6235f32de8c26047f diff --git a/config.h b/config.h index 6403e1f..c4953c6 100644 --- a/config.h +++ b/config.h @@ -3,6 +3,8 @@ #include +extern bool config_init; + enum config_param_type { CONFIG_PARAM_TYPE_SIMPLE, CONFIG_PARAM_TYPE_LIST, @@ -15,10 +17,34 @@ union config_param_info { }; struct config_param_list { - const struct config_param_list *next; - int n_params; + int n_params, n_next; + const struct blobmsg_policy *params; const union config_param_info *info; + + const struct config_param_list *next[]; }; +#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); +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); + +struct blob_attr *config_memdup(struct blob_attr *attr); + #endif