1: /*
2: * Prefix list functions.
3: * Copyright (C) 1999 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:
23: #ifndef _QUAGGA_PLIST_H
24: #define _QUAGGA_PLIST_H
25:
26: #define AFI_ORF_PREFIX 65535
27:
28: enum prefix_list_type
29: {
30: PREFIX_DENY,
31: PREFIX_PERMIT,
32: };
33:
34: enum prefix_name_type
35: {
36: PREFIX_TYPE_STRING,
37: PREFIX_TYPE_NUMBER
38: };
39:
40: struct prefix_list
41: {
42: char *name;
43: char *desc;
44:
45: struct prefix_master *master;
46:
47: enum prefix_name_type type;
48:
49: int count;
50: int rangecount;
51:
52: struct prefix_list_entry *head;
53: struct prefix_list_entry *tail;
54:
55: struct prefix_list *next;
56: struct prefix_list *prev;
57: };
58:
59: struct orf_prefix
60: {
61: u_int32_t seq;
62: u_char ge;
63: u_char le;
64: struct prefix p;
65: };
66:
67: /* Prototypes. */
68: extern void prefix_list_init (void);
69: extern void prefix_list_reset (void);
70: extern void prefix_list_add_hook (void (*func) (struct prefix_list *));
71: extern void prefix_list_delete_hook (void (*func) (struct prefix_list *));
72:
73: extern struct prefix_list *prefix_list_lookup (afi_t, const char *);
74: extern enum prefix_list_type prefix_list_apply (struct prefix_list *, void *);
75:
76: extern struct stream * prefix_bgp_orf_entry (struct stream *,
77: struct prefix_list *,
78: u_char, u_char, u_char);
79: extern int prefix_bgp_orf_set (char *, afi_t, struct orf_prefix *, int, int);
80: extern void prefix_bgp_orf_remove_all (char *);
81: extern int prefix_bgp_show_prefix_list (struct vty *, afi_t, char *);
82:
83: #endif /* _QUAGGA_PLIST_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>