]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_community.h
*: make consistent & update GPLv2 file headers
[mirror_frr.git] / bgpd / bgp_community.h
index 58b3f9e68c6e16acfe743ddaa41b0eb05fa1c11a..cda079c1305ccf61ba441e968f0371004bbf58bf 100644 (file)
@@ -1,22 +1,27 @@
 /* Community attribute related functions.
-   Copyright (C) 1998 Kunihiro Ishiguro
+ * Copyright (C) 1998 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
+ */
 
-This file is part of GNU Zebra.
+#ifndef _QUAGGA_BGP_COMMUNITY_H
+#define _QUAGGA_BGP_COMMUNITY_H
 
-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.  */
+#include "lib/json.h"
 
 /* Communities attribute.  */
 struct community 
@@ -30,6 +35,9 @@ struct community
   /* Communities value.  */
   u_int32_t *val;
 
+  /* Communities as a json object */
+  json_object *json;
+
   /* String of community attribute.  This sring is used by vty output
      and expanded community-list for regular expression match.  */
   char *str;
@@ -48,21 +56,25 @@ struct community
 #define com_nthval(X,n)  ((X)->val + (n))
 
 /* Prototypes of communities attribute functions.  */
-void community_init ();
-void community_free (struct community *);
-struct community *community_uniq_sort (struct community *);
-struct community *community_parse (char *, u_short);
-struct community *community_intern (struct community *);
-void community_unintern (struct community *);
-char *community_str (struct community *);
-unsigned int community_hash_make (struct community *);
-struct community *community_str2com (char *);
-int community_match (struct community *, struct community *);
-int community_cmp (struct community *, struct community *);
-struct community *community_merge (struct community *, struct community *);
-struct community *community_delete (struct community *, struct community *);
-struct community *community_dup (struct community *);
-int community_include (struct community *, u_int32_t);
-void community_del_val (struct community *, u_int32_t *);
-unsigned long community_count ();
-struct hash *community_hash ();
+extern void community_init (void);
+extern void community_finish (void);
+extern void community_free (struct community *);
+extern struct community *community_uniq_sort (struct community *);
+extern struct community *community_parse (u_int32_t *, u_short);
+extern struct community *community_intern (struct community *);
+extern void community_unintern (struct community **);
+extern char *community_str (struct community *);
+extern unsigned int community_hash_make (struct community *);
+extern struct community *community_str2com (const char *);
+extern int community_match (const struct community *, const struct community *);
+extern int community_cmp (const struct community *, const struct community *);
+extern struct community *community_merge (struct community *, struct community *);
+extern struct community *community_delete (struct community *, struct community *);
+extern struct community *community_dup (struct community *);
+extern int community_include (struct community *, u_int32_t);
+extern void community_del_val (struct community *, u_int32_t *);
+extern unsigned long community_count (void);
+extern struct hash *community_hash (void);
+extern u_int32_t community_val_get (struct community *com, int i);
+
+#endif /* _QUAGGA_BGP_COMMUNITY_H */