]>
Commit | Line | Data |
---|---|---|
718e3744 | 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 | ||
00d252cb | 21 | #ifndef _QUAGGA_BGP_COMMUNITY_H |
22 | #define _QUAGGA_BGP_COMMUNITY_H | |
23 | ||
718e3744 | 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. */ | |
94f2b392 | 54 | extern void community_init (void); |
228da428 | 55 | extern void community_finish (void); |
94f2b392 | 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); | |
00d252cb | 73 | |
74 | #endif /* _QUAGGA_BGP_COMMUNITY_H */ |