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 28enum prefix_list_type 29{ 30 PREFIX_DENY, 31 PREFIX_PERMIT, 32}; 33 34enum prefix_name_type 35{ 36 PREFIX_TYPE_STRING, 37 PREFIX_TYPE_NUMBER 38}; 39 40struct 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 59struct orf_prefix 60{ 61 u_int32_t seq; 62 u_char ge; 63 u_char le; 64 struct prefix p; 65}; 66 67/* Prototypes. */ 68extern void prefix_list_init (void); 69extern void prefix_list_reset (void); 70extern void prefix_list_add_hook (void (*func) (struct prefix_list *)); 71extern void prefix_list_delete_hook (void (*func) (struct prefix_list *)); 72 73extern struct prefix_list *prefix_list_lookup (afi_t, const char *); 74extern enum prefix_list_type prefix_list_apply (struct prefix_list *, void *); 75 76extern struct stream * prefix_bgp_orf_entry (struct stream *, 77 struct prefix_list *, 78 u_char, u_char, u_char); 79extern int prefix_bgp_orf_set (char *, afi_t, struct orf_prefix *, int, int); 80extern void prefix_bgp_orf_remove_all (char *); 81extern int prefix_bgp_show_prefix_list (struct vty *, afi_t, char *); 82 83#endif /* _QUAGGA_PLIST_H */ 84