lib: hide internal prefix list structures
These are about to be touched and there's no point in other code
touching into prefix list's internas. Add some isolation.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 56837d8..fc02312 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -30,6 +30,9 @@
privs.h sigevent.h pqueue.h jhash.h zassert.h memtypes.h \
workqueue.h route_types.h libospf.h
+noinst_HEADERS = \
+ plist_int.h
+
EXTRA_DIST = \
regex.c regex-gnu.h \
queue.h \
diff --git a/lib/plist.c b/lib/plist.c
index 6107556..bdc31e8 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -30,25 +30,7 @@
#include "stream.h"
#include "log.h"
-/* Each prefix-list's entry. */
-struct prefix_list_entry
-{
- int seq;
-
- int le;
- int ge;
-
- enum prefix_list_type type;
-
- int any;
- struct prefix prefix;
-
- unsigned long refcnt;
- unsigned long hitcnt;
-
- struct prefix_list_entry *next;
- struct prefix_list_entry *prev;
-};
+#include "plist_int.h"
/* List of struct prefix_list. */
struct prefix_list_list
@@ -125,6 +107,11 @@
return NULL;
}
+const char *prefix_list_name (struct prefix_list *plist)
+{
+ return plist->name;
+}
+
/* Lookup prefix_list from list of prefix_list by name. */
struct prefix_list *
prefix_list_lookup (afi_t afi, const char *name)
diff --git a/lib/plist.h b/lib/plist.h
index fb3168a..1e621ff 100644
--- a/lib/plist.h
+++ b/lib/plist.h
@@ -31,30 +31,7 @@
PREFIX_PERMIT,
};
-enum prefix_name_type
-{
- PREFIX_TYPE_STRING,
- PREFIX_TYPE_NUMBER
-};
-
-struct prefix_list
-{
- char *name;
- char *desc;
-
- struct prefix_master *master;
-
- enum prefix_name_type type;
-
- int count;
- int rangecount;
-
- struct prefix_list_entry *head;
- struct prefix_list_entry *tail;
-
- struct prefix_list *next;
- struct prefix_list *prev;
-};
+struct prefix_list;
struct orf_prefix
{
@@ -70,6 +47,7 @@
extern void prefix_list_add_hook (void (*func) (struct prefix_list *));
extern void prefix_list_delete_hook (void (*func) (struct prefix_list *));
+extern const char *prefix_list_name (struct prefix_list *);
extern struct prefix_list *prefix_list_lookup (afi_t, const char *);
extern enum prefix_list_type prefix_list_apply (struct prefix_list *, void *);
diff --git a/lib/plist_int.h b/lib/plist_int.h
new file mode 100644
index 0000000..6459579
--- /dev/null
+++ b/lib/plist_int.h
@@ -0,0 +1,71 @@
+/*
+ * Prefix list internal definitions.
+ * Copyright (C) 1999 Kunihiro Ishiguro
+ *
+ * This file is part of GNU Zebra.
+ *
+ * GNU Zebra is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * GNU Zebra is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Zebra; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _QUAGGA_PLIST_INT_H
+#define _QUAGGA_PLIST_INT_H
+
+enum prefix_name_type
+{
+ PREFIX_TYPE_STRING,
+ PREFIX_TYPE_NUMBER
+};
+
+struct prefix_list
+{
+ char *name;
+ char *desc;
+
+ struct prefix_master *master;
+
+ enum prefix_name_type type;
+
+ int count;
+ int rangecount;
+
+ struct prefix_list_entry *head;
+ struct prefix_list_entry *tail;
+
+ struct prefix_list *next;
+ struct prefix_list *prev;
+};
+
+/* Each prefix-list's entry. */
+struct prefix_list_entry
+{
+ int seq;
+
+ int le;
+ int ge;
+
+ enum prefix_list_type type;
+
+ int any;
+ struct prefix prefix;
+
+ unsigned long refcnt;
+ unsigned long hitcnt;
+
+ struct prefix_list_entry *next;
+ struct prefix_list_entry *prev;
+};
+
+#endif /* _QUAGGA_PLIST_INT_H */