From: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxxxxxxxx> I've hinted I've been working towards a regdb regulatory library. This pushes that idea further as I was inclined recently to develop a union algorithm and saw we still had quite a bit of work to be able to share more consistently. I'll likely be using the intersection code as basis for this and as such I've cleaned that up and also ran valgrind over most of the code. I believe I've fixed all reglib memory related issues the rest of things valgrind bitches about are due to netlink. mcgrof at frijol ~ $ cat .valgrindrc --memcheck:leak-check=full --memcheck:leak-resolution=high --memcheck:show-reachable=yes --memcheck:num-callers=50 If this looks OK I'll next start working towards the union code. The purpose of this is two fold: Help build regulatory domains out of arbitrary custom regulatory definitions and to also allow us to build more thorough world regulatory domains that have passive scan flags on regulatory rules that are do not fit the intersection. Luis R. Rodriguez (40): crda: make reg_rules_intersect() style match Linux crda: port over Linux is_valid_reg_rule() change bd05f28e crda: remove verbose errors out of regdom_intersect() crda: constify usage of struct ieee80211_regdomain crda: remove unused BUG_ON() from intersect.c crda: move regdom_intersect() to reglib crda: fix regression when using reglib_for_each_country() crda: move intersection if first attempt failed crda: do not double count on reglib_for_each_country() crda: annotate intersection worst case scenerio crda: fix intersect.c memory management crda: explicitly munmap() on reglib_get_rd_alpha2() crda: explicitly close file descriptor and munmap() on failures crda: separate crda_verify_db_signature() implementations crda: use gcry_sexp_release() on crda_verify_db_signature() crda: explicitly use close() and munmap() on reglib_get_rd_alpha2() crda: use gcry_mpi_release() when using gcry_mpi_scan() crda: rename world and prev_world on intersect.c crda: remove verbosity out of intersect.c crda: rename regdom_intersect() to reglib_intersect_rds() crda: rename crda_get_file_ptr() to reglib_get_file_ptr() crda: rename crda_verify_db_signature() to reglib_verify_db_signature() crda: rename print_regdom() to reglib_print_regdom() crda: add regdb_dfs_regions crda: make print-regdom use internal flags crda: move reg print helpers to reglib crda: rename is_world_regdom() to reglib_is_world_regdom() crda: rename isalpha_upper() to reglib_isalpha_upper() crda: rename is_alpha2() to reglib_is_alpha2() crda: rename is_valid_regdom() to reglib_is_valid_regdom() crda: rename max() to reglib_max() crda: rename min() to reglib_min() crda: fix spacing on reglib_for_each_country() crda: clarify intersect.c only computes an intersection crda: separate intersecting a full db into a helper crda: move reglib_intersect_regdb() to reglib crda: move regdbprint to its own helper crda: add reglib regdb context helpers: reglib_(malloc|free)_regdb_ctx() crda: pass struct reglib_regdb_ctx to country2rd() crda: make reglib_for_each_country() use the reglib context Makefile | 4 +- crda.c | 14 +- intersect.c | 264 ++--------------------------- print-regdom.c | 81 --------- regdb.h | 24 ++- regdbdump.c | 30 +++- reglib.c | 518 +++++++++++++++++++++++++++++++++++++++++++++----------- reglib.h | 125 +++++++++++--- 8 files changed, 589 insertions(+), 471 deletions(-) delete mode 100644 print-regdom.c -- 1.7.10.4