/* BGP Community list.
- 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. */
+ * 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 this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#ifndef _QUAGGA_BGP_CLIST_H
#define _QUAGGA_BGP_CLIST_H
#define LARGE_COMMUNITY_LIST_EXPANDED 5 /* Expanded Large community-list. */
/* Community-list. */
-struct community_list
-{
- /* Name of the community-list. */
- char *name;
+struct community_list {
+ /* Name of the community-list. */
+ char *name;
- /* String or number. */
- int sort;
+ /* String or number. */
+ int sort;
- /* Link to upper list. */
- struct community_list_list *parent;
+ /* Link to upper list. */
+ struct community_list_list *parent;
- /* Linked list for other community-list. */
- struct community_list *next;
- struct community_list *prev;
+ /* Linked list for other community-list. */
+ struct community_list *next;
+ struct community_list *prev;
- /* Community-list entry in this community-list. */
- struct community_entry *head;
- struct community_entry *tail;
+ /* Community-list entry in this community-list. */
+ struct community_entry *head;
+ struct community_entry *tail;
};
/* Each entry in community-list. */
-struct community_entry
-{
- struct community_entry *next;
- struct community_entry *prev;
+struct community_entry {
+ struct community_entry *next;
+ struct community_entry *prev;
- /* Permit or deny. */
- u_char direct;
+ /* Permit or deny. */
+ uint8_t direct;
- /* Standard or expanded. */
- u_char style;
+ /* Standard or expanded. */
+ uint8_t style;
- /* Any match. */
- u_char any;
+ /* Any match. */
+ uint8_t any;
- /* Community structure. */
- union
- {
- struct community *com;
- struct ecommunity *ecom;
- struct lcommunity *lcom;
- } u;
+ /* Community structure. */
+ union {
+ struct community *com;
+ struct ecommunity *ecom;
+ struct lcommunity *lcom;
+ } u;
- /* Configuration string. */
- char *config;
+ /* Configuration string. */
+ char *config;
- /* Expanded community-list regular expression. */
- regex_t *reg;
+ /* Expanded community-list regular expression. */
+ regex_t *reg;
};
/* Linked list of community-list. */
-struct community_list_list
-{
- struct community_list *head;
- struct community_list *tail;
+struct community_list_list {
+ struct community_list *head;
+ struct community_list *tail;
};
/* Master structure of community-list and extcommunity-list. */
-struct community_list_master
-{
- struct community_list_list num;
- struct community_list_list str;
+struct community_list_master {
+ struct community_list_list num;
+ struct community_list_list str;
};
/* Community-list handler. community_list_init() returns this
structure as handler. */
-struct community_list_handler
-{
- /* Community-list. */
- struct community_list_master community_list;
+struct community_list_handler {
+ /* Community-list. */
+ struct community_list_master community_list;
- /* Exteded community-list. */
- struct community_list_master extcommunity_list;
+ /* Exteded community-list. */
+ struct community_list_master extcommunity_list;
- /* Large community-list. */
- struct community_list_master lcommunity_list;
+ /* Large community-list. */
+ struct community_list_master lcommunity_list;
};
/* Error code of community-list. */
extern struct community_list_handler *bgp_clist;
/* Prototypes. */
-extern struct community_list_handler *community_list_init (void);
-extern void community_list_terminate (struct community_list_handler *);
-
-extern int community_list_set (struct community_list_handler *ch,
+extern struct community_list_handler *community_list_init(void);
+extern void community_list_terminate(struct community_list_handler *);
+
+extern int community_list_set(struct community_list_handler *ch,
+ const char *name, const char *str, int direct,
+ int style);
+extern int community_list_unset(struct community_list_handler *ch,
+ const char *name, const char *str, int direct,
+ int style);
+extern int extcommunity_list_set(struct community_list_handler *ch,
+ const char *name, const char *str, int direct,
+ int style);
+extern int extcommunity_list_unset(struct community_list_handler *ch,
+ const char *name, const char *str,
+ int direct, int style);
+extern int lcommunity_list_set(struct community_list_handler *ch,
const char *name, const char *str, int direct,
int style);
-extern int community_list_unset (struct community_list_handler *ch,
- const char *name, const char *str,
- int direct, int style, int delete_all);
-extern int extcommunity_list_set (struct community_list_handler *ch,
- const char *name, const char *str,
- int direct, int style);
-extern int extcommunity_list_unset (struct community_list_handler *ch,
- const char *name, const char *str,
- int direct, int style, int delete_all);
-extern int lcommunity_list_set (struct community_list_handler *ch,
- const char *name, const char *str,
- int direct, int style);
-extern int lcommunity_list_unset (struct community_list_handler *ch,
- const char *name, const char *str,
- int direct, int style);
+extern int lcommunity_list_unset(struct community_list_handler *ch,
+ const char *name, const char *str, int direct,
+ int style);
extern struct community_list_master *
-community_list_master_lookup (struct community_list_handler *, int);
+community_list_master_lookup(struct community_list_handler *, int);
extern struct community_list *
-community_list_lookup (struct community_list_handler *, const char *, int);
-
-extern int community_list_match (struct community *, struct community_list *);
-extern int ecommunity_list_match (struct ecommunity *, struct community_list *);
-extern int lcommunity_list_match (struct lcommunity *, struct community_list *);
-extern int community_list_exact_match (struct community *,
- struct community_list *);
-extern struct community *
-community_list_match_delete (struct community *, struct community_list *);
+community_list_lookup(struct community_list_handler *, const char *, int);
+
+extern int community_list_match(struct community *, struct community_list *);
+extern int ecommunity_list_match(struct ecommunity *, struct community_list *);
+extern int lcommunity_list_match(struct lcommunity *, struct community_list *);
+extern int community_list_exact_match(struct community *,
+ struct community_list *);
+extern struct community *community_list_match_delete(struct community *,
+ struct community_list *);
extern struct lcommunity *
-lcommunity_list_match_delete (struct lcommunity *lcom,
- struct community_list *list);
+lcommunity_list_match_delete(struct lcommunity *lcom,
+ struct community_list *list);
#endif /* _QUAGGA_BGP_CLIST_H */