filter.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 type is made by `permit', `deny' and `dynamic'. */
  26. enum filter_type
  27. {
  28. FILTER_DENY,
  29. FILTER_PERMIT,
  30. FILTER_DYNAMIC
  31. };
  32. enum access_type
  33. {
  34. ACCESS_TYPE_STRING,
  35. ACCESS_TYPE_NUMBER
  36. };
  37. /* Access list */
  38. struct access_list
  39. {
  40. char *name;
  41. char *remark;
  42. struct access_master *master;
  43. enum access_type type;
  44. struct access_list *next;
  45. struct access_list *prev;
  46. struct filter *head;
  47. struct filter *tail;
  48. };
  49. /* Prototypes for access-list. */
  50. extern void access_list_init (void);
  51. extern void access_list_reset (void);
  52. extern void access_list_add_hook (void (*func)(struct access_list *));
  53. extern void access_list_delete_hook (void (*func)(struct access_list *));
  54. extern struct access_list *access_list_lookup (afi_t, const char *);
  55. extern enum filter_type access_list_apply (struct access_list *, void *);
  56. #endif /* _ZEBRA_FILTER_H */