filter.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Route filtering function.
  3. * Copyright (C) 1998 Kunihiro Ishiguro
  4. *
  5. * This file is part of GNU Zebra.
  6. *
  7. * GNU Zebra is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published
  9. * by the Free Software Foundation; either version 2, or (at your
  10. * option) any later version.
  11. *
  12. * GNU Zebra is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with GNU Zebra; see the file COPYING. If not, write to the
  19. * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  20. * Boston, MA 02111-1307, USA.
  21. */
  22. #ifndef _ZEBRA_FILTER_H
  23. #define _ZEBRA_FILTER_H
  24. #include "if.h"
  25. /* Filter direction. */
  26. #define FILTER_IN 0
  27. #define FILTER_OUT 1
  28. #define FILTER_MAX 2
  29. /* Filter type is made by `permit', `deny' and `dynamic'. */
  30. enum filter_type
  31. {
  32. FILTER_DENY,
  33. FILTER_PERMIT,
  34. FILTER_DYNAMIC
  35. };
  36. enum access_type
  37. {
  38. ACCESS_TYPE_STRING,
  39. ACCESS_TYPE_NUMBER
  40. };
  41. /* Access list */
  42. struct access_list
  43. {
  44. char *name;
  45. char *remark;
  46. struct access_master *master;
  47. enum access_type type;
  48. struct access_list *next;
  49. struct access_list *prev;
  50. struct filter *head;
  51. struct filter *tail;
  52. };
  53. /* Prototypes for access-list. */
  54. extern void access_list_init (void);
  55. extern void access_list_reset (void);
  56. extern void access_list_add_hook (void (*func) (const char *));
  57. extern void access_list_delete_hook (void (*func) (const char *));
  58. extern struct access_list *access_list_lookup (afi_t, const char *);
  59. extern enum filter_type access_list_apply (struct access_list *, void *);
  60. #endif /* _ZEBRA_FILTER_H */