2003-06-07 Paul Jakma <paul@dishone.st>

* (bgp_clist.c): Run it through indent -nut (all indentation to
	   be spaced, get rid of mix of tabs and spaces)
This commit is contained in:
paul 2003-06-07 02:03:11 +00:00
parent f38a471c6f
commit 8708b74fd3

View File

@ -126,7 +126,7 @@ community_list_insert (struct community_list_handler *ch,
/* Lookup community-list master. */ /* Lookup community-list master. */
cm = community_list_master_lookup (ch, style); cm = community_list_master_lookup (ch, style);
if (! cm) if (!cm)
return NULL; return NULL;
/* Allocate new community_list and copy given name. */ /* Allocate new community_list and copy given name. */
@ -214,11 +214,11 @@ community_list_lookup (struct community_list_handler *ch,
struct community_list *list; struct community_list *list;
struct community_list_master *cm; struct community_list_master *cm;
if (! name) if (!name)
return NULL; return NULL;
cm = community_list_master_lookup (ch, style); cm = community_list_master_lookup (ch, style);
if (! cm) if (!cm)
return NULL; return NULL;
for (list = cm->num.head; list; list = list->next) for (list = cm->num.head; list; list = list->next)
@ -237,7 +237,7 @@ community_list_get (struct community_list_handler *ch, char *name, int style)
struct community_list *list; struct community_list *list;
list = community_list_lookup (ch, name, style); list = community_list_lookup (ch, name, style);
if (! list) if (!list)
list = community_list_insert (ch, name, style); list = community_list_insert (ch, name, style);
return list; return list;
} }
@ -345,7 +345,7 @@ community_list_entry_lookup (struct community_list *list, void *arg,
/* Internal function to perform regular expression match for community /* Internal function to perform regular expression match for community
attribute. */ attribute. */
static int static int
community_regexp_match (struct community *com, regex_t *reg) community_regexp_match (struct community *com, regex_t * reg)
{ {
char *str; char *str;
@ -364,10 +364,30 @@ community_regexp_match (struct community *com, regex_t *reg)
return 0; return 0;
} }
static int
ecommunity_regexp_match (struct ecommunity *ecom, regex_t * reg)
{
char *str;
/* When there is no communities attribute it is treated as empty
string. */
if (ecom == NULL || ecom->size == 0)
str = "";
else
str = ecommunity_str (ecom);
/* Regular expression match. */
if (regexec (reg, str, 0, NULL, 0) == 0)
return 1;
/* No match. */
return 0;
}
/* Delete community attribute using regular expression match. Return /* Delete community attribute using regular expression match. Return
modified communites attribute. */ modified communites attribute. */
static struct community * static struct community *
community_regexp_delete (struct community *com, regex_t *reg) community_regexp_delete (struct community *com, regex_t * reg)
{ {
int i; int i;
u_int32_t comval; u_int32_t comval;
@ -375,7 +395,7 @@ community_regexp_delete (struct community *com, regex_t *reg)
char c[12]; char c[12];
char *str; char *str;
if (! com) if (!com)
return NULL; return NULL;
i = 0; i = 0;
@ -441,10 +461,35 @@ community_list_match (struct community *com, struct community_list *list)
return 0; return 0;
} }
int
ecommunity_list_match (struct ecommunity *ecom, struct community_list *list)
{
struct community_entry *entry;
for (entry = list->head; entry; entry = entry->next)
{
if (entry->any)
return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
if (entry->style == EXTCOMMUNITY_LIST_STANDARD)
{
if (ecommunity_match (ecom, entry->u.ecom))
return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
}
else if (entry->style == EXTCOMMUNITY_LIST_EXPANDED)
{
if (ecommunity_regexp_match (ecom, entry->reg))
return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
}
}
return 0;
}
/* Perform exact matching. In case of expanded community-list, do /* Perform exact matching. In case of expanded community-list, do
same thing as community_list_match(). */ same thing as community_list_match(). */
int int
community_list_exact_match (struct community *com, struct community_list *list) community_list_exact_match (struct community *com,
struct community_list *list)
{ {
struct community_entry *entry; struct community_entry *entry;
@ -470,7 +515,7 @@ community_list_exact_match (struct community *com, struct community_list *list)
return 0; return 0;
} }
/* Delete all permitted communities in the list from com1 */ /* Delete all permitted communities in the list from com. */
struct community * struct community *
community_list_match_delete (struct community *com, community_list_match_delete (struct community *com,
struct community_list *list) struct community_list *list)
@ -565,7 +610,7 @@ community_list_set (struct community_list_handler *ch,
/* When community-list already has entry, new entry should have same /* When community-list already has entry, new entry should have same
style. If you want to have mixed style community-list, you can style. If you want to have mixed style community-list, you can
comment out this check. */ comment out this check. */
if (! community_list_empty_p (list)) if (!community_list_empty_p (list))
{ {
struct community_entry *first; struct community_entry *first;
@ -582,7 +627,7 @@ community_list_set (struct community_list_handler *ch,
} }
/* When str is NULL, it is matches any. */ /* When str is NULL, it is matches any. */
if (! str) if (!str)
{ {
entry = community_entry_new (); entry = community_entry_new ();
entry->direct = direct; entry->direct = direct;
@ -616,7 +661,7 @@ community_list_set (struct community_list_handler *ch,
/* Expanded community-list parse. String may include regular /* Expanded community-list parse. String may include regular
expression. */ expression. */
if (! entry && (style == COMMUNITY_LIST_EXPANDED if (!entry && (style == COMMUNITY_LIST_EXPANDED
|| style == COMMUNITY_LIST_AUTO)) || style == COMMUNITY_LIST_AUTO))
{ {
regex = bgp_regcomp (str); regex = bgp_regcomp (str);
@ -661,7 +706,7 @@ community_list_unset (struct community_list_handler *ch,
return COMMUNITY_LIST_ERR_CANT_FIND_LIST; return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
/* Delete all of entry belongs to this community-list. */ /* Delete all of entry belongs to this community-list. */
if (! str) if (!str)
{ {
community_list_delete (list); community_list_delete (list);
return 0; return 0;
@ -686,7 +731,7 @@ community_list_unset (struct community_list_handler *ch,
/* Expanded community-list parse. String may include regular /* Expanded community-list parse. String may include regular
expression. */ expression. */
if (! entry if (!entry
&& (style == COMMUNITY_LIST_EXPANDED || style == COMMUNITY_LIST_AUTO)) && (style == COMMUNITY_LIST_EXPANDED || style == COMMUNITY_LIST_AUTO))
{ {
regex = bgp_regcomp (str); regex = bgp_regcomp (str);
@ -699,7 +744,7 @@ community_list_unset (struct community_list_handler *ch,
return COMMUNITY_LIST_ERR_MALFORMED_VAL; return COMMUNITY_LIST_ERR_MALFORMED_VAL;
} }
if (! entry) if (!entry)
return COMMUNITY_LIST_ERR_CANT_FIND_LIST; return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
community_list_entry_delete (list, entry, style); community_list_entry_delete (list, entry, style);
@ -725,7 +770,7 @@ extcommunity_list_set (struct community_list_handler *ch,
/* When community-list already has entry, new entry should have same /* When community-list already has entry, new entry should have same
style. If you want to have mixed style community-list, you can style. If you want to have mixed style community-list, you can
comment out this check. */ comment out this check. */
if (! community_list_empty_p (list)) if (!community_list_empty_p (list))
{ {
struct community_entry *first; struct community_entry *first;
@ -742,7 +787,7 @@ extcommunity_list_set (struct community_list_handler *ch,
} }
/* When str is NULL, it is matches any. */ /* When str is NULL, it is matches any. */
if (! str) if (!str)
{ {
entry = community_entry_new (); entry = community_entry_new ();
entry->direct = direct; entry->direct = direct;
@ -765,8 +810,10 @@ extcommunity_list_set (struct community_list_handler *ch,
{ {
entry = community_entry_new (); entry = community_entry_new ();
entry->config entry->config
= ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_COMMUNITY_LIST); =
ecom->str = ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_DISPLAY); ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_COMMUNITY_LIST);
ecom->str =
ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_DISPLAY);
entry->u.ecom = ecom; entry->u.ecom = ecom;
entry->direct = direct; entry->direct = direct;
entry->style = EXTCOMMUNITY_LIST_STANDARD; entry->style = EXTCOMMUNITY_LIST_STANDARD;
@ -781,7 +828,7 @@ extcommunity_list_set (struct community_list_handler *ch,
/* Expanded extcommunity-list parse. String may include regular /* Expanded extcommunity-list parse. String may include regular
expression. */ expression. */
if (! entry && (style == EXTCOMMUNITY_LIST_EXPANDED if (!entry && (style == EXTCOMMUNITY_LIST_EXPANDED
|| style == EXTCOMMUNITY_LIST_AUTO)) || style == EXTCOMMUNITY_LIST_AUTO))
{ {
regex = bgp_regcomp (str); regex = bgp_regcomp (str);
@ -826,7 +873,7 @@ extcommunity_list_unset (struct community_list_handler *ch,
return COMMUNITY_LIST_ERR_CANT_FIND_LIST; return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
/* Delete all of entry belongs to this extcommunity-list. */ /* Delete all of entry belongs to this extcommunity-list. */
if (! str) if (!str)
{ {
community_list_delete (list); community_list_delete (list);
return 0; return 0;
@ -851,7 +898,7 @@ extcommunity_list_unset (struct community_list_handler *ch,
/* Expanded community-list parse. String may include regular /* Expanded community-list parse. String may include regular
expression. */ expression. */
if (! entry if (!entry
&& (style == COMMUNITY_LIST_EXPANDED || style == COMMUNITY_LIST_AUTO)) && (style == COMMUNITY_LIST_EXPANDED || style == COMMUNITY_LIST_AUTO))
{ {
regex = bgp_regcomp (str); regex = bgp_regcomp (str);
@ -864,7 +911,7 @@ extcommunity_list_unset (struct community_list_handler *ch,
return COMMUNITY_LIST_ERR_MALFORMED_VAL; return COMMUNITY_LIST_ERR_MALFORMED_VAL;
} }
if (! entry) if (!entry)
return COMMUNITY_LIST_ERR_CANT_FIND_LIST; return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
community_list_entry_delete (list, entry, style); community_list_entry_delete (list, entry, style);