Merge tag 'upstream/1.2.4'
[quagga-debian.git] / lib / plist_int.h
1 /*
2  * Prefix list internal definitions.
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_INT_H
24 #define _QUAGGA_PLIST_INT_H
25
26 enum prefix_name_type
27 {
28   PREFIX_TYPE_STRING,
29   PREFIX_TYPE_NUMBER
30 };
31
32 struct prefix_list
33 {
34   char *name;
35   char *desc;
36
37   struct prefix_master *master;
38
39   enum prefix_name_type type;
40
41   int count;
42   int rangecount;
43
44   struct prefix_list_entry *head;
45   struct prefix_list_entry *tail;
46
47   struct prefix_list *next;
48   struct prefix_list *prev;
49 };
50
51 /* Each prefix-list's entry. */
52 struct prefix_list_entry
53 {
54   int seq;
55
56   int le;
57   int ge;
58
59   enum prefix_list_type type;
60
61   int any;
62   struct prefix prefix;
63
64   unsigned long refcnt;
65   unsigned long hitcnt;
66
67   struct prefix_list_entry *next;
68   struct prefix_list_entry *prev;
69 };
70
71 #endif /* _QUAGGA_PLIST_INT_H */