You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
968 B

10 years ago
  1. /* -*- coding: utf-8 -*-
  2. * ----------------------------------------------------------------------
  3. * Copyright © 2009-2012, RedJack, LLC.
  4. * All rights reserved.
  5. *
  6. * Please see the LICENSE.txt file in this distribution for license
  7. * details.
  8. * ----------------------------------------------------------------------
  9. */
  10. #include <libcork/core.h>
  11. #include "ipset/bdd/nodes.h"
  12. #include "ipset/ipset.h"
  13. void
  14. ipset_init(struct ip_set *set)
  15. {
  16. /* The set starts empty, so every value assignment should yield
  17. * false. */
  18. set->cache = ipset_node_cache_new();
  19. set->set_bdd = ipset_terminal_node_id(false);
  20. }
  21. struct ip_set *
  22. ipset_new(void)
  23. {
  24. struct ip_set *result = cork_new(struct ip_set);
  25. ipset_init(result);
  26. return result;
  27. }
  28. void
  29. ipset_done(struct ip_set *set)
  30. {
  31. ipset_node_decref(set->cache, set->set_bdd);
  32. ipset_node_cache_free(set->cache);
  33. }
  34. void
  35. ipset_free(struct ip_set *set)
  36. {
  37. ipset_done(set);
  38. free(set);
  39. }