Annotation of embedaddon/quagga/bgpd/bgp_community.h, revision 1.1.1.2
1.1 misho 1: /* Community attribute related functions.
2: Copyright (C) 1998 Kunihiro Ishiguro
3:
4: This file is part of GNU Zebra.
5:
6: GNU Zebra is free software; you can redistribute it and/or modify it
7: under the terms of the GNU General Public License as published by the
8: Free Software Foundation; either version 2, or (at your option) any
9: later version.
10:
11: GNU Zebra is distributed in the hope that it will be useful, but
12: WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with GNU Zebra; see the file COPYING. If not, write to the Free
18: Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19: 02111-1307, USA. */
20:
21: #ifndef _QUAGGA_BGP_COMMUNITY_H
22: #define _QUAGGA_BGP_COMMUNITY_H
23:
24: /* Communities attribute. */
25: struct community
26: {
27: /* Reference count of communities value. */
28: unsigned long refcnt;
29:
30: /* Communities value size. */
31: int size;
32:
33: /* Communities value. */
34: u_int32_t *val;
35:
36: /* String of community attribute. This sring is used by vty output
37: and expanded community-list for regular expression match. */
38: char *str;
39: };
40:
41: /* Well-known communities value. */
42: #define COMMUNITY_INTERNET 0x0
43: #define COMMUNITY_NO_EXPORT 0xFFFFFF01
44: #define COMMUNITY_NO_ADVERTISE 0xFFFFFF02
45: #define COMMUNITY_NO_EXPORT_SUBCONFED 0xFFFFFF03
46: #define COMMUNITY_LOCAL_AS 0xFFFFFF03
47:
48: /* Macros of community attribute. */
49: #define com_length(X) ((X)->size * 4)
50: #define com_lastval(X) ((X)->val + (X)->size - 1)
51: #define com_nthval(X,n) ((X)->val + (n))
52:
53: /* Prototypes of communities attribute functions. */
54: extern void community_init (void);
55: extern void community_finish (void);
56: extern void community_free (struct community *);
57: extern struct community *community_uniq_sort (struct community *);
58: extern struct community *community_parse (u_int32_t *, u_short);
59: extern struct community *community_intern (struct community *);
60: extern void community_unintern (struct community **);
61: extern char *community_str (struct community *);
62: extern unsigned int community_hash_make (struct community *);
63: extern struct community *community_str2com (const char *);
64: extern int community_match (const struct community *, const struct community *);
65: extern int community_cmp (const struct community *, const struct community *);
66: extern struct community *community_merge (struct community *, struct community *);
67: extern struct community *community_delete (struct community *, struct community *);
68: extern struct community *community_dup (struct community *);
69: extern int community_include (struct community *, u_int32_t);
70: extern void community_del_val (struct community *, u_int32_t *);
71: extern unsigned long community_count (void);
72: extern struct hash *community_hash (void);
1.1.1.2 ! misho 73: extern u_int32_t community_val_get (struct community *com, int i);
1.1 misho 74:
75: #endif /* _QUAGGA_BGP_COMMUNITY_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>