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)
diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c
index 0b6a2e8..3cf1d2e 100644
--- a/bgpd/bgp_clist.c
+++ b/bgpd/bgp_clist.c
@@ -42,12 +42,12 @@
       case COMMUNITY_LIST_STANDARD:
       case COMMUNITY_LIST_EXPANDED:
       case COMMUNITY_LIST_AUTO:
-	return &ch->community_list;
-	break;
+        return &ch->community_list;
+        break;
       case EXTCOMMUNITY_LIST_STANDARD:
       case EXTCOMMUNITY_LIST_EXPANDED:
       case EXTCOMMUNITY_LIST_AUTO:
-	return &ch->extcommunity_list;
+        return &ch->extcommunity_list;
       }
   return NULL;
 }
@@ -71,22 +71,22 @@
     {
     case COMMUNITY_LIST_STANDARD:
       if (entry->u.com)
-	community_free (entry->u.com);
+        community_free (entry->u.com);
       break;
     case EXTCOMMUNITY_LIST_STANDARD:
       /* In case of standard extcommunity-list, configuration string
-	 is made by ecommunity_ecom2str().  */
+         is made by ecommunity_ecom2str().  */
       if (entry->config)
-	XFREE (MTYPE_ECOMMUNITY_STR, entry->config);
+        XFREE (MTYPE_ECOMMUNITY_STR, entry->config);
       if (entry->u.ecom)
-	ecommunity_free (entry->u.ecom);
+        ecommunity_free (entry->u.ecom);
       break;
     case COMMUNITY_LIST_EXPANDED:
     case EXTCOMMUNITY_LIST_EXPANDED:
       if (entry->config)
-	XFREE (MTYPE_COMMUNITY_LIST_CONFIG, entry->config);
+        XFREE (MTYPE_COMMUNITY_LIST_CONFIG, entry->config);
       if (entry->reg)
-	bgp_regex_free (entry->reg);
+        bgp_regex_free (entry->reg);
     default:
       break;
     }
@@ -115,7 +115,7 @@
 
 struct community_list *
 community_list_insert (struct community_list_handler *ch,
-		       char *name, int style)
+                       char *name, int style)
 {
   int i;
   long number;
@@ -126,7 +126,7 @@
 
   /* Lookup community-list master.  */
   cm = community_list_master_lookup (ch, style);
-  if (! cm)
+  if (!cm)
     return NULL;
 
   /* Allocate new community_list and copy given name. */
@@ -138,9 +138,9 @@
   for (number = 0, i = 0; i < strlen (name); i++)
     {
       if (isdigit ((int) name[i]))
-	number = (number * 10) + (name[i] - '0');
+        number = (number * 10) + (name[i] - '0');
       else
-	break;
+        break;
     }
 
   /* In case of name is all digit character */
@@ -152,8 +152,8 @@
       list = &cm->num;
 
       for (point = list->head; point; point = point->next)
-	if (atol (point->name) >= number)
-	  break;
+        if (atol (point->name) >= number)
+          break;
     }
   else
     {
@@ -161,11 +161,11 @@
 
       /* Set access_list to string list. */
       list = &cm->str;
-  
+
       /* Set point to insertion point. */
       for (point = list->head; point; point = point->next)
-	if (strcmp (point->name, name) >= 0)
-	  break;
+        if (strcmp (point->name, name) >= 0)
+          break;
     }
 
   /* Link to upper list.  */
@@ -209,16 +209,16 @@
 
 struct community_list *
 community_list_lookup (struct community_list_handler *ch,
-		       char *name, int style)
+                       char *name, int style)
 {
   struct community_list *list;
   struct community_list_master *cm;
 
-  if (! name)
+  if (!name)
     return NULL;
 
   cm = community_list_master_lookup (ch, style);
-  if (! cm)
+  if (!cm)
     return NULL;
 
   for (list = cm->num.head; list; list = list->next)
@@ -237,7 +237,7 @@
   struct community_list *list;
 
   list = community_list_lookup (ch, name, style);
-  if (! list)
+  if (!list)
     list = community_list_insert (ch, name, style);
   return list;
 }
@@ -269,7 +269,7 @@
   community_list_free (list);
 }
 
-int 
+int
 community_list_empty_p (struct community_list *list)
 {
   return (list->head == NULL && list->tail == NULL) ? 1 : 0;
@@ -277,8 +277,8 @@
 
 /* Add community-list entry to the list.  */
 static void
-community_list_entry_add (struct community_list *list, 
-			  struct community_entry *entry)
+community_list_entry_add (struct community_list *list,
+                          struct community_entry *entry)
 {
   entry->next = NULL;
   entry->prev = list->tail;
@@ -293,7 +293,7 @@
 /* Delete community-list entry from the list.  */
 static void
 community_list_entry_delete (struct community_list *list,
-			     struct community_entry *entry, int style)
+                             struct community_entry *entry, int style)
 {
   if (entry->next)
     entry->next->prev = entry->prev;
@@ -314,30 +314,30 @@
 /* Lookup community-list entry from the list.  */
 static struct community_entry *
 community_list_entry_lookup (struct community_list *list, void *arg,
-			     int direct)
+                             int direct)
 {
   struct community_entry *entry;
 
   for (entry = list->head; entry; entry = entry->next)
     {
       switch (entry->style)
-	{
-	case COMMUNITY_LIST_STANDARD:
-	  if (community_cmp (entry->u.com, arg))
-	    return entry;
-	  break;
-	case EXTCOMMUNITY_LIST_STANDARD:
-	  if (ecommunity_cmp (entry->u.ecom, arg))
-	    return entry;
-	  break;
-	case COMMUNITY_LIST_EXPANDED:
-	case EXTCOMMUNITY_LIST_EXPANDED:
-	  if (strcmp (entry->config, arg) == 0)
-	    return entry;
-	  break;
-	default:
-	  break;
-	}
+        {
+        case COMMUNITY_LIST_STANDARD:
+          if (community_cmp (entry->u.com, arg))
+            return entry;
+          break;
+        case EXTCOMMUNITY_LIST_STANDARD:
+          if (ecommunity_cmp (entry->u.ecom, arg))
+            return entry;
+          break;
+        case COMMUNITY_LIST_EXPANDED:
+        case EXTCOMMUNITY_LIST_EXPANDED:
+          if (strcmp (entry->config, arg) == 0)
+            return entry;
+          break;
+        default:
+          break;
+        }
     }
   return NULL;
 }
@@ -345,7 +345,7 @@
 /* Internal function to perform regular expression match for community
    attribute.  */
 static int
-community_regexp_match (struct community *com, regex_t *reg)
+community_regexp_match (struct community *com, regex_t * reg)
 {
   char *str;
 
@@ -364,10 +364,30 @@
   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
    modified communites attribute.  */
 static struct community *
-community_regexp_delete (struct community *com, regex_t *reg)
+community_regexp_delete (struct community *com, regex_t * reg)
 {
   int i;
   u_int32_t comval;
@@ -375,7 +395,7 @@
   char c[12];
   char *str;
 
-  if (! com)
+  if (!com)
     return NULL;
 
   i = 0;
@@ -385,29 +405,29 @@
       comval = ntohl (comval);
 
       switch (comval)
-	{
-	case COMMUNITY_INTERNET:
-	  str = "internet";
-	  break;
-	case COMMUNITY_NO_EXPORT:
-	  str = "no-export";
-	  break;
-	case COMMUNITY_NO_ADVERTISE:
-	  str = "no-advertise";
-	  break;
-	case COMMUNITY_LOCAL_AS:
-	  str = "local-AS";
-	  break;
-	default:
-	  sprintf (c, "%d:%d", (comval >> 16) & 0xFFFF, comval & 0xFFFF);
-	  str = c;
-	  break;
-	}
+        {
+        case COMMUNITY_INTERNET:
+          str = "internet";
+          break;
+        case COMMUNITY_NO_EXPORT:
+          str = "no-export";
+          break;
+        case COMMUNITY_NO_ADVERTISE:
+          str = "no-advertise";
+          break;
+        case COMMUNITY_LOCAL_AS:
+          str = "local-AS";
+          break;
+        default:
+          sprintf (c, "%d:%d", (comval >> 16) & 0xFFFF, comval & 0xFFFF);
+          str = c;
+          break;
+        }
 
       if (regexec (reg, str, 0, NULL, 0) == 0)
-	community_del_val (com, com_nthval (com, i));
+        community_del_val (com, com_nthval (com, i));
       else
-	i++;
+        i++;
     }
   return com;
 }
@@ -422,21 +442,45 @@
   for (entry = list->head; entry; entry = entry->next)
     {
       if (entry->any)
-	return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
 
       if (entry->style == COMMUNITY_LIST_STANDARD)
-	{
-	  if (community_include (entry->u.com, COMMUNITY_INTERNET))
-	    return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        {
+          if (community_include (entry->u.com, COMMUNITY_INTERNET))
+            return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
 
-	  if (community_match (com, entry->u.com))
-	    return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
-	}
+          if (community_match (com, entry->u.com))
+            return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        }
       else if (entry->style == COMMUNITY_LIST_EXPANDED)
-	{
-	  if (community_regexp_match (com, entry->reg))
-	    return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
-	}
+        {
+          if (community_regexp_match (com, entry->reg))
+            return entry->direct == COMMUNITY_PERMIT ? 1 : 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;
 }
@@ -444,61 +488,62 @@
 /* Perform exact matching.  In case of expanded community-list, do
    same thing as community_list_match().  */
 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;
 
   for (entry = list->head; entry; entry = entry->next)
     {
       if (entry->any)
-	return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
 
       if (entry->style == COMMUNITY_LIST_STANDARD)
-	{
-	  if (community_include (entry->u.com, COMMUNITY_INTERNET))
-	    return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        {
+          if (community_include (entry->u.com, COMMUNITY_INTERNET))
+            return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
 
-	  if (community_cmp (com, entry->u.com))
-	    return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
-	}
+          if (community_cmp (com, entry->u.com))
+            return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        }
       else if (entry->style == COMMUNITY_LIST_EXPANDED)
-	{
-	  if (community_regexp_match (com, entry->reg))
-	    return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
-	}
+        {
+          if (community_regexp_match (com, entry->reg))
+            return entry->direct == COMMUNITY_PERMIT ? 1 : 0;
+        }
     }
   return 0;
 }
 
-/* Delete all permitted communities in the list from com1 */
+/* Delete all permitted communities in the list from com.  */
 struct community *
 community_list_match_delete (struct community *com,
-			     struct community_list *list)
+                             struct community_list *list)
 {
   struct community_entry *entry;
 
   for (entry = list->head; entry; entry = entry->next)
     {
       if (entry->any && entry->direct == COMMUNITY_PERMIT)
-	{
-	  /* This is a tricky part.  Currently only
-	     route_set_community_delete() uses this function.  In the
-	     function com->size is zero, it free the community
-	     structure.  */
-	  com->size = 0;
-	  return com;
-	}
+        {
+          /* This is a tricky part.  Currently only
+             route_set_community_delete() uses this function.  In the
+             function com->size is zero, it free the community
+             structure.  */
+          com->size = 0;
+          return com;
+        }
 
       if (entry->style == COMMUNITY_LIST_STANDARD)
-	{
-	  if (entry->direct == COMMUNITY_PERMIT)
-	    community_delete (com, entry->u.com);
-	}
+        {
+          if (entry->direct == COMMUNITY_PERMIT)
+            community_delete (com, entry->u.com);
+        }
       else if (entry->style == COMMUNITY_LIST_EXPANDED)
-	{
-	  if (entry->direct == COMMUNITY_PERMIT)
-	    community_regexp_delete (com, entry->reg);
-	}
+        {
+          if (entry->direct == COMMUNITY_PERMIT)
+            community_regexp_delete (com, entry->reg);
+        }
     }
   return com;
 }
@@ -506,43 +551,43 @@
 /* To avoid duplicated entry in the community-list, this function
    compares specified entry to existing entry.  */
 int
-community_list_dup_check (struct community_list *list, 
-			  struct community_entry *new)
+community_list_dup_check (struct community_list *list,
+                          struct community_entry *new)
 {
   struct community_entry *entry;
-  
+
   for (entry = list->head; entry; entry = entry->next)
     {
       if (entry->style != new->style)
-	continue;
+        continue;
 
       if (entry->direct != new->direct)
-	continue;
+        continue;
 
       if (entry->any != new->any)
-	continue;
+        continue;
 
       if (entry->any)
-	return 1;
+        return 1;
 
       switch (entry->style)
-	{
-	case COMMUNITY_LIST_STANDARD:
-	  if (community_cmp (entry->u.com, new->u.com))
-	    return 1;
-	  break;
-	case EXTCOMMUNITY_LIST_STANDARD:
-	  if (ecommunity_cmp (entry->u.ecom, new->u.ecom))
-	    return 1;
-	  break;
-	case COMMUNITY_LIST_EXPANDED:
-	case EXTCOMMUNITY_LIST_EXPANDED:
-	  if (strcmp (entry->config, new->config) == 0)
-	    return 1;
-	  break;
-	default:
-	  break;
-	}
+        {
+        case COMMUNITY_LIST_STANDARD:
+          if (community_cmp (entry->u.com, new->u.com))
+            return 1;
+          break;
+        case EXTCOMMUNITY_LIST_STANDARD:
+          if (ecommunity_cmp (entry->u.ecom, new->u.ecom))
+            return 1;
+          break;
+        case COMMUNITY_LIST_EXPANDED:
+        case EXTCOMMUNITY_LIST_EXPANDED:
+          if (strcmp (entry->config, new->config) == 0)
+            return 1;
+          break;
+        default:
+          break;
+        }
     }
   return 0;
 }
@@ -550,7 +595,7 @@
 /* Set community-list.  */
 int
 community_list_set (struct community_list_handler *ch,
-		    char *name, char *str, int direct, int style)
+                    char *name, char *str, int direct, int style)
 {
   struct community_entry *entry;
   struct community_list *list;
@@ -565,72 +610,72 @@
   /* When community-list already has entry, new entry should have same
      style.  If you want to have mixed style community-list, you can
      comment out this check.  */
-  if (! community_list_empty_p (list))
+  if (!community_list_empty_p (list))
     {
       struct community_entry *first;
 
       first = list->head;
 
       if (style == COMMUNITY_LIST_AUTO)
-	style = first->style;
+        style = first->style;
       else if (style != first->style)
-	{
-	  return (first->style == COMMUNITY_LIST_STANDARD
-		  ? COMMUNITY_LIST_ERR_STANDARD_CONFLICT
-		  : COMMUNITY_LIST_ERR_EXPANDED_CONFLICT);
-	}
+        {
+          return (first->style == COMMUNITY_LIST_STANDARD
+                  ? COMMUNITY_LIST_ERR_STANDARD_CONFLICT
+                  : COMMUNITY_LIST_ERR_EXPANDED_CONFLICT);
+        }
     }
 
   /* When str is NULL, it is matches any.  */
-  if (! str)
+  if (!str)
     {
       entry = community_entry_new ();
       entry->direct = direct;
       entry->any = 1;
       if (style == COMMUNITY_LIST_AUTO)
-	entry->style = COMMUNITY_LIST_STANDARD;
+        entry->style = COMMUNITY_LIST_STANDARD;
       else
-	entry->style = style;
+        entry->style = style;
     }
   else
     {
       /* Standard community-list parse.  String must be converted into
-	 community structure without problem.  */
+         community structure without problem.  */
       if (style == COMMUNITY_LIST_STANDARD || style == COMMUNITY_LIST_AUTO)
-	{
-	  com = community_str2com (str);
-	  if (com)
-	    {
-	      entry = community_entry_new ();
-	      entry->u.com = com;
-	      entry->direct = direct;
-	      entry->style = COMMUNITY_LIST_STANDARD;
-	    }
-	  else if (style == COMMUNITY_LIST_STANDARD)
-	    return COMMUNITY_LIST_ERR_MALFORMED_VAL;
-	  
-	  /* We can't convert string into communities value.  When
-	     community-list type is auto, fall dawn to regular expression
-	     match.  */
-	}
+        {
+          com = community_str2com (str);
+          if (com)
+            {
+              entry = community_entry_new ();
+              entry->u.com = com;
+              entry->direct = direct;
+              entry->style = COMMUNITY_LIST_STANDARD;
+            }
+          else if (style == COMMUNITY_LIST_STANDARD)
+            return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+
+          /* We can't convert string into communities value.  When
+             community-list type is auto, fall dawn to regular expression
+             match.  */
+        }
 
       /* Expanded community-list parse.  String may include regular
-	 expression.  */
-      if (! entry && (style == COMMUNITY_LIST_EXPANDED
-		      || style == COMMUNITY_LIST_AUTO))
-	{
-	  regex = bgp_regcomp (str);
-	  if (regex)
-	    {
-	      entry = community_entry_new ();
-	      entry->reg = regex;
-	      entry->config = XSTRDUP (MTYPE_COMMUNITY_LIST_CONFIG, str);
-	      entry->direct = direct;
-	      entry->style = COMMUNITY_LIST_EXPANDED;
-	    }
-	  else
-	    return COMMUNITY_LIST_ERR_MALFORMED_VAL;
-	}
+         expression.  */
+      if (!entry && (style == COMMUNITY_LIST_EXPANDED
+                     || style == COMMUNITY_LIST_AUTO))
+        {
+          regex = bgp_regcomp (str);
+          if (regex)
+            {
+              entry = community_entry_new ();
+              entry->reg = regex;
+              entry->config = XSTRDUP (MTYPE_COMMUNITY_LIST_CONFIG, str);
+              entry->direct = direct;
+              entry->style = COMMUNITY_LIST_EXPANDED;
+            }
+          else
+            return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+        }
     }
 
   /* Do not put duplicated community entry.  */
@@ -646,7 +691,7 @@
    community-list entry belongs to the specified name.  */
 int
 community_list_unset (struct community_list_handler *ch,
-		      char *name, char *str, int direct, int style)
+                      char *name, char *str, int direct, int style)
 {
   struct community_entry *entry;
   struct community_list *list;
@@ -661,7 +706,7 @@
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
   /* Delete all of entry belongs to this community-list.  */
-  if (! str)
+  if (!str)
     {
       community_list_delete (list);
       return 0;
@@ -673,33 +718,33 @@
     {
       com = community_str2com (str);
       if (com)
-	{
-	  entry = community_list_entry_lookup (list, com, direct);
-	  community_free (com);
-	}
+        {
+          entry = community_list_entry_lookup (list, com, direct);
+          community_free (com);
+        }
       else if (style == COMMUNITY_LIST_STANDARD)
-	return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+        return COMMUNITY_LIST_ERR_MALFORMED_VAL;
 
       /* If we can't convert string into community and community-list
-	 type is auto, fall dawn to expanded community-list.  */
+         type is auto, fall dawn to expanded community-list.  */
     }
 
   /* Expanded community-list parse.  String may include regular
      expression.  */
-  if (! entry 
+  if (!entry
       && (style == COMMUNITY_LIST_EXPANDED || style == COMMUNITY_LIST_AUTO))
     {
       regex = bgp_regcomp (str);
       if (regex)
-	{
-	  entry = community_list_entry_lookup (list, str, direct);
-	  bgp_regex_free (regex);
-	}
+        {
+          entry = community_list_entry_lookup (list, str, direct);
+          bgp_regex_free (regex);
+        }
       else
-	return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+        return COMMUNITY_LIST_ERR_MALFORMED_VAL;
     }
 
-  if (! entry)
+  if (!entry)
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
   community_list_entry_delete (list, entry, style);
@@ -710,7 +755,7 @@
 /* Set extcommunity-list.  */
 int
 extcommunity_list_set (struct community_list_handler *ch,
-		       char *name, char *str, int direct, int style)
+                       char *name, char *str, int direct, int style)
 {
   struct community_entry *entry;
   struct community_list *list;
@@ -725,77 +770,79 @@
   /* When community-list already has entry, new entry should have same
      style.  If you want to have mixed style community-list, you can
      comment out this check.  */
-  if (! community_list_empty_p (list))
+  if (!community_list_empty_p (list))
     {
       struct community_entry *first;
 
       first = list->head;
 
       if (style == EXTCOMMUNITY_LIST_AUTO)
-	style = first->style;
+        style = first->style;
       else if (style != first->style)
-	{
-	  return (first->style == EXTCOMMUNITY_LIST_STANDARD
-		  ? COMMUNITY_LIST_ERR_STANDARD_CONFLICT
-		  : COMMUNITY_LIST_ERR_EXPANDED_CONFLICT);
-	}
+        {
+          return (first->style == EXTCOMMUNITY_LIST_STANDARD
+                  ? COMMUNITY_LIST_ERR_STANDARD_CONFLICT
+                  : COMMUNITY_LIST_ERR_EXPANDED_CONFLICT);
+        }
     }
 
   /* When str is NULL, it is matches any.  */
-  if (! str)
+  if (!str)
     {
       entry = community_entry_new ();
       entry->direct = direct;
       entry->any = 1;
       if (style == EXTCOMMUNITY_LIST_AUTO)
-	entry->style = EXTCOMMUNITY_LIST_STANDARD;
+        entry->style = EXTCOMMUNITY_LIST_STANDARD;
       else
-	entry->style = style;
+        entry->style = style;
     }
   else
     {
       /* Standard extcommunity-list parse.  String is converted into
-	 ecommunity structure.  */
+         ecommunity structure.  */
       if (style == EXTCOMMUNITY_LIST_STANDARD
-	  || style == EXTCOMMUNITY_LIST_AUTO)
-	{
-	  /* Type is unknown.  String includes keyword.  */
-	  ecom = ecommunity_str2com (str, 0, 1);
-	  if (ecom)
-	    {
-	      entry = community_entry_new ();
-	      entry->config 
-		= ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_COMMUNITY_LIST);
-	      ecom->str = ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_DISPLAY);
-	      entry->u.ecom = ecom;
-	      entry->direct = direct;
-	      entry->style = EXTCOMMUNITY_LIST_STANDARD;
-	    }
-	  else if (style == EXTCOMMUNITY_LIST_STANDARD)
-	    return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+          || style == EXTCOMMUNITY_LIST_AUTO)
+        {
+          /* Type is unknown.  String includes keyword.  */
+          ecom = ecommunity_str2com (str, 0, 1);
+          if (ecom)
+            {
+              entry = community_entry_new ();
+              entry->config
+                =
+                ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_COMMUNITY_LIST);
+              ecom->str =
+                ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_DISPLAY);
+              entry->u.ecom = ecom;
+              entry->direct = direct;
+              entry->style = EXTCOMMUNITY_LIST_STANDARD;
+            }
+          else if (style == EXTCOMMUNITY_LIST_STANDARD)
+            return COMMUNITY_LIST_ERR_MALFORMED_VAL;
 
-	  /* We can't convert string into communities value.  When
-	     community-list type is auto, fall dawn to regular expression
-	     match.  */
-	}
+          /* We can't convert string into communities value.  When
+             community-list type is auto, fall dawn to regular expression
+             match.  */
+        }
 
       /* Expanded extcommunity-list parse.  String may include regular
-	 expression.  */
-      if (! entry && (style == EXTCOMMUNITY_LIST_EXPANDED
-		      || style == EXTCOMMUNITY_LIST_AUTO))
-	{
-	  regex = bgp_regcomp (str);
-	  if (regex)
-	    {
-	      entry = community_entry_new ();
-	      entry->reg = regex;
-	      entry->config = XSTRDUP (MTYPE_COMMUNITY_LIST_CONFIG, str);
-	      entry->direct = direct;
-	      entry->style = EXTCOMMUNITY_LIST_EXPANDED;
-	    }
-	  else
-	    return COMMUNITY_LIST_ERR_MALFORMED_VAL;
-	}
+         expression.  */
+      if (!entry && (style == EXTCOMMUNITY_LIST_EXPANDED
+                     || style == EXTCOMMUNITY_LIST_AUTO))
+        {
+          regex = bgp_regcomp (str);
+          if (regex)
+            {
+              entry = community_entry_new ();
+              entry->reg = regex;
+              entry->config = XSTRDUP (MTYPE_COMMUNITY_LIST_CONFIG, str);
+              entry->direct = direct;
+              entry->style = EXTCOMMUNITY_LIST_EXPANDED;
+            }
+          else
+            return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+        }
     }
 
   /* Do not put duplicated community entry.  */
@@ -811,7 +858,7 @@
    extcommunity-list entry belongs to the specified name.  */
 int
 extcommunity_list_unset (struct community_list_handler *ch,
-			 char *name, char *str, int direct, int style)
+                         char *name, char *str, int direct, int style)
 {
   struct community_entry *entry;
   struct community_list *list;
@@ -826,7 +873,7 @@
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
   /* Delete all of entry belongs to this extcommunity-list.  */
-  if (! str)
+  if (!str)
     {
       community_list_delete (list);
       return 0;
@@ -838,33 +885,33 @@
     {
       ecom = ecommunity_str2com (str, 0, 1);
       if (ecom)
-	{
-	  entry = community_list_entry_lookup (list, ecom, direct);
-	  ecommunity_free (ecom);
-	}
+        {
+          entry = community_list_entry_lookup (list, ecom, direct);
+          ecommunity_free (ecom);
+        }
       else if (style == COMMUNITY_LIST_STANDARD)
-	return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+        return COMMUNITY_LIST_ERR_MALFORMED_VAL;
 
       /* If we can't convert string into community and community-list
-	 type is auto, fall dawn to expanded community-list.  */
+         type is auto, fall dawn to expanded community-list.  */
     }
 
   /* Expanded community-list parse.  String may include regular
      expression.  */
-  if (! entry 
+  if (!entry
       && (style == COMMUNITY_LIST_EXPANDED || style == COMMUNITY_LIST_AUTO))
     {
       regex = bgp_regcomp (str);
       if (regex)
-	{
-	  entry = community_list_entry_lookup (list, str, direct);
-	  bgp_regex_free (regex);
-	}
+        {
+          entry = community_list_entry_lookup (list, str, direct);
+          bgp_regex_free (regex);
+        }
       else
-	return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+        return COMMUNITY_LIST_ERR_MALFORMED_VAL;
     }
 
-  if (! entry)
+  if (!entry)
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
   community_list_entry_delete (list, entry, style);
@@ -878,7 +925,7 @@
 {
   struct community_list_handler *ch;
   ch = XCALLOC (MTYPE_COMMUNITY_LIST_HANDLER,
-		sizeof (struct community_list_handler));
+                sizeof (struct community_list_handler));
   return ch;
 }