⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bgp_routemap.c

📁 大名鼎鼎的路由器源码。程序分ZEBRA、OSPFRIP等3个包。程序框架采用一个路由协议一个进程的方式
💻 C
📖 第 1 页 / 共 5 页
字号:
ALIAS (no_match_metric,       no_match_metric_val_cmd,       "no match metric <0-4294967295>",       NO_STR       MATCH_STR       "Match metric of route\n"       "Metric value\n");DEFUN (match_community,        match_community_cmd,       "match community (<1-99>|<100-199>|WORD)",       MATCH_STR       "Match BGP community list\n"       "Community-list number (standard)\n"       "Community-list number (expanded)\n"       "Community-list name\n"){  return bgp_route_match_add (vty, vty->index, "community", argv[0]);}DEFUN (match_community_exact,        match_community_exact_cmd,       "match community (<1-99>|<100-199>|WORD) exact-match",       MATCH_STR       "Match BGP community list\n"       "Community-list number (standard)\n"       "Community-list number (expanded)\n"       "Community-list name\n"       "Do exact matching of communities\n"){  int ret;  char *argstr;  argstr = XMALLOC (MTYPE_ROUTE_MAP_COMPILED,		    strlen (argv[0]) + strlen ("exact-match") + 2);  sprintf (argstr, "%s exact-match", argv[0]);  ret = bgp_route_match_add (vty, vty->index, "community", argstr);  XFREE (MTYPE_ROUTE_MAP_COMPILED, argstr);  return ret;}DEFUN (no_match_community,       no_match_community_cmd,       "no match community",       NO_STR       MATCH_STR       "Match BGP community list\n"){  return bgp_route_match_delete (vty, vty->index, "community", NULL);}ALIAS (no_match_community,       no_match_community_val_cmd,       "no match community (<1-99>|<100-199>|WORD)",       NO_STR       MATCH_STR       "Match BGP community list\n"       "Community-list number (standard)\n"       "Community-list number (expanded)\n"       "Community-list name\n");ALIAS (no_match_community,       no_match_community_exact_cmd,       "no match community (<1-99>|<100-199>|WORD) exact-match",       NO_STR       MATCH_STR       "Match BGP community list\n"       "Community-list number (standard)\n"       "Community-list number (expanded)\n"       "Community-list name\n"       "Do exact matching of communities\n");DEFUN (match_ecommunity,        match_ecommunity_cmd,       "match extcommunity (<1-99>|<100-199>|WORD)",       MATCH_STR       "Match BGP/VPN extended community list\n"       "Extended community-list number (standard)\n"       "Extended community-list number (expanded)\n"       "Extended community-list name\n"){  return bgp_route_match_add (vty, vty->index, "extcommunity", argv[0]);}DEFUN (no_match_ecommunity,       no_match_ecommunity_cmd,       "no match extcommunity",       NO_STR       MATCH_STR       "Match BGP/VPN extended community list\n"){  return bgp_route_match_delete (vty, vty->index, "extcommunity", NULL);}ALIAS (no_match_ecommunity,       no_match_ecommunity_val_cmd,       "no match extcommunity (<1-99>|<100-199>|WORD)",       NO_STR       MATCH_STR       "Match BGP/VPN extended community list\n"       "Extended community-list number (standard)\n"       "Extended community-list number (expanded)\n"       "Extended community-list name\n");DEFUN (match_aspath,       match_aspath_cmd,       "match as-path WORD",       MATCH_STR       "Match BGP AS path list\n"       "AS path access-list name\n"){  return bgp_route_match_add (vty, vty->index, "as-path", argv[0]);}DEFUN (no_match_aspath,       no_match_aspath_cmd,       "no match as-path",       NO_STR       MATCH_STR       "Match BGP AS path list\n"){  return bgp_route_match_delete (vty, vty->index, "as-path", NULL);}ALIAS (no_match_aspath,       no_match_aspath_val_cmd,       "no match as-path WORD",       NO_STR       MATCH_STR       "Match BGP AS path list\n"       "AS path access-list name\n");DEFUN (match_origin,       match_origin_cmd,       "match origin (egp|igp|incomplete)",       MATCH_STR       "BGP origin code\n"       "remote EGP\n"       "local IGP\n"       "unknown heritage\n"){  if (strncmp (argv[0], "igp", 2) == 0)    return bgp_route_match_add (vty, vty->index, "origin", "igp");  if (strncmp (argv[0], "egp", 1) == 0)    return bgp_route_match_add (vty, vty->index, "origin", "egp");  if (strncmp (argv[0], "incomplete", 2) == 0)    return bgp_route_match_add (vty, vty->index, "origin", "incomplete");  return CMD_WARNING;}DEFUN (no_match_origin,       no_match_origin_cmd,       "no match origin",       NO_STR       MATCH_STR       "BGP origin code\n"){  return bgp_route_match_delete (vty, vty->index, "origin", NULL);}ALIAS (no_match_origin,       no_match_origin_val_cmd,       "no match origin (egp|igp|incomplete)",       NO_STR       MATCH_STR       "BGP origin code\n"       "remote EGP\n"       "local IGP\n"       "unknown heritage\n");DEFUN (set_ip_nexthop,       set_ip_nexthop_cmd,       "set ip next-hop (A.B.C.D|peer-address)",       SET_STR       IP_STR       "Next hop address\n"       "IP address of next hop\n"       "Use peer address (for BGP only)\n"){  union sockunion su;  int ret;  if (strncmp (argv[0], "peer-address", 1) == 0)    return bgp_route_set_add (vty, vty->index, "ip next-hop", "peer-address");  ret = str2sockunion (argv[0], &su);  if (ret < 0)    {      vty_out (vty, "%% Malformed Next-hop address%s", VTY_NEWLINE);      return CMD_WARNING;    }   return bgp_route_set_add (vty, vty->index, "ip next-hop", argv[0]);}DEFUN (no_set_ip_nexthop,       no_set_ip_nexthop_cmd,       "no set ip next-hop",       NO_STR       SET_STR       IP_STR       "Next hop address\n"){  if (argc == 0 || strncmp (argv[0], "peer-address", 1) == 0)    return bgp_route_set_delete (vty, vty->index, "ip next-hop", NULL);  return bgp_route_set_delete (vty, vty->index, "ip next-hop", argv[0]);}ALIAS (no_set_ip_nexthop,       no_set_ip_nexthop_val_cmd,       "no set ip next-hop (A.B.C.D|peer-address)",       NO_STR       SET_STR       IP_STR       "Next hop address\n"       "IP address of next hop\n"       "Use peer address (for BGP only)\n");DEFUN (set_metric,       set_metric_cmd,       "set metric <0-4294967295>",       SET_STR       "Metric value for destination routing protocol\n"       "Metric value\n"){  return bgp_route_set_add (vty, vty->index, "metric", argv[0]);}ALIAS (set_metric,       set_metric_addsub_cmd,       "set metric <+/-metric>",       SET_STR       "Metric value for destination routing protocol\n"       "Add or subtract BGP metric\n");DEFUN (no_set_metric,       no_set_metric_cmd,       "no set metric",       NO_STR       SET_STR       "Metric value for destination routing protocol\n"){  if (argc == 0)    return bgp_route_set_delete (vty, vty->index, "metric", NULL);  return bgp_route_set_delete (vty, vty->index, "metric", argv[0]);}ALIAS (no_set_metric,       no_set_metric_val_cmd,       "no set metric <0-4294967295>",       NO_STR       SET_STR       "Metric value for destination routing protocol\n"       "Metric value\n");DEFUN (set_local_pref,       set_local_pref_cmd,       "set local-preference <0-4294967295>",       SET_STR       "BGP local preference path attribute\n"       "Preference value\n"){  return bgp_route_set_add (vty, vty->index, "local-preference", argv[0]);}DEFUN (no_set_local_pref,       no_set_local_pref_cmd,       "no set local-preference",       NO_STR       SET_STR       "BGP local preference path attribute\n"){  if (argc == 0)    return bgp_route_set_delete (vty, vty->index, "local-preference", NULL);  return bgp_route_set_delete (vty, vty->index, "local-preference", argv[0]);}ALIAS (no_set_local_pref,       no_set_local_pref_val_cmd,       "no set local-preference <0-4294967295>",       NO_STR       SET_STR       "BGP local preference path attribute\n"       "Preference value\n");DEFUN (set_weight,       set_weight_cmd,       "set weight <0-4294967295>",       SET_STR       "BGP weight for routing table\n"       "Weight value\n"){  return bgp_route_set_add (vty, vty->index, "weight", argv[0]);}DEFUN (no_set_weight,       no_set_weight_cmd,       "no set weight",       NO_STR       SET_STR       "BGP weight for routing table\n"){  if (argc == 0)    return bgp_route_set_delete (vty, vty->index, "weight", NULL);    return bgp_route_set_delete (vty, vty->index, "weight", argv[0]);}ALIAS (no_set_weight,       no_set_weight_val_cmd,       "no set weight <0-4294967295>",       NO_STR       SET_STR       "BGP weight for routing table\n"       "Weight value\n");DEFUN (set_aspath_prepend,       set_aspath_prepend_cmd,       "set as-path prepend .<1-65535>",       SET_STR       "Prepend string for a BGP AS-path attribute\n"       "Prepend to the as-path\n"       "AS number\n"){  int ret;  char *str;  str = argv_concat (argv, argc, 0);  ret = bgp_route_set_add (vty, vty->index, "as-path prepend", str);  XFREE (MTYPE_TMP, str);  return ret;}DEFUN (no_set_aspath_prepend,       no_set_aspath_prepend_cmd,       "no set as-path prepend",       NO_STR       SET_STR       "Prepend string for a BGP AS-path attribute\n"       "Prepend to the as-path\n"){  return bgp_route_set_delete (vty, vty->index, "as-path prepend", NULL);}ALIAS (no_set_aspath_prepend,       no_set_aspath_prepend_val_cmd,       "no set as-path prepend .<1-65535>",       NO_STR       SET_STR       "Prepend string for a BGP AS-path attribute\n"       "Prepend to the as-path\n"       "AS number\n");DEFUN (set_community,       set_community_cmd,       "set community .AA:NN",       SET_STR       "BGP community attribute\n"       "Community number in aa:nn format or local-AS|no-advertise|no-export|internet or additive\n"){  int i;  int first = 0;  int additive = 0;  struct buffer *b;  struct community *com = NULL;  char *str;  char *argstr;  int ret;  b = buffer_new (1024);  for (i = 0; i < argc; i++)    {      if (strncmp (argv[i], "additive", strlen (argv[i])) == 0) 	{ 	  additive = 1; 	  continue; 	}      if (first)	buffer_putc (b, ' ');      else	first = 1;      if (strncmp (argv[i], "internet", strlen (argv[i])) == 0) 	{	  buffer_putstr (b, "internet"); 	  continue; 	}      if (strncmp (argv[i], "local-AS", strlen (argv[i])) == 0) 	{	  buffer_putstr (b, "local-AS"); 	  continue; 	}      if (strncmp (argv[i], "no-a", strlen ("no-a")) == 0	  && strncmp (argv[i], "no-advertise", strlen (argv[i])) == 0) 	{	  buffer_putstr (b, "no-advertise"); 	  continue; 	}      if (strncmp (argv[i], "no-e", strlen ("no-e"))== 0	  && strncmp (argv[i], "no-export", strlen (argv[i])) == 0) 	{	  buffer_putstr (b, "no-export"); 	  continue; 	}      buffer_putstr (b, argv[i]);    }  buffer_putc (b, '\0');  /* Fetch result string then compile it to communities attribute.  */  str = buffer_getstr (b);  buffer_free (b);  if (str)    {      com = community_str2com (str);      free (str);    }  /* Can't compile user input into communities attribute.  */  if (! com)    {      vty_out (vty, "%% Malformed communities attribute%s", VTY_NEWLINE);      return CMD_WARNING;    }  /* Set communites attribute string.  */  str = community_str (com);  if (additive)    {      argstr = XCALLOC (MTYPE_TMP, strlen (str) + strlen (" additive") + 1);      strcpy (argstr, str);      strcpy (argstr + strlen (str), " additive");      ret =  bgp_route_set_add (vty, vty->index, "community", argstr);      XFREE (MTYPE_TMP, argstr);    }  else    ret =  bgp_route_set_add (vty, vty->index, "community", str);  community_free (com);  return ret;}DEFUN (set_community_none,       set_community_none_cmd,       "set community none",       SET_STR       "BGP community attribute\n"       "No community attribute\n"){  return bgp_route_set_add (vty, vty->index, "community", "none");}DEFUN (no_set_community,       no_set_community_cmd,       "no set community",       NO_STR       SET_STR       "BGP community attribute\n"){  return bgp_route_set_delete (vty, vty->index, "community", NULL);}ALIAS (no_set_community,       no_set_community_val_cmd,       "no set community .AA:NN",       NO_STR       SET_STR       "BGP community attribute\n"       "Community number in aa:nn format or local-AS|no-advertise|no-export|internet or additive\n");ALIAS (no_set_community,       no_set_community_none_cmd,       "no set community none",       NO_STR       SET_STR       "BGP community attribute\n"       "No community attribute\n");DEFUN (set_community_delete,       set_community_delete_cmd,       "set comm-list (<1-99>|<100-199>|WORD) delete",       SET_STR       "set BGP community list (for deletion)\n"       "Community-list number (standard)\n"       "Communitly-list number (expanded)\n"       "Community-list name\n"       "Delete matching communities\n"){  char *str;  str = XCALLOC (MTYPE_TMP, strlen (argv[0]) + strlen (" delete") + 1);  strcpy (str, argv[0]);  strcpy (str + strlen (argv[0]), " delete");  bgp_route_set_add (vty, vty->index, "comm-list", str);  XFREE (MTYPE_TMP, str);  return CMD_SUCCESS;}DEFUN (no_set_community_delete,       no_set_community_delete_cmd,       "no set comm-list",       NO_STR       SET_STR       "set BGP community list (for deletion)\n"){  return bgp_route_set_delete (vty, vty->index, "comm-list", NULL);}ALIAS (no_set_community_delete,       no_set_community_delete_val_cmd,       "no set comm-list (<1-99>|<100-199>|WORD) delete",       NO_STR       SET_STR       "set BGP community list (for deletion)\n"       "Community-list number (standard)\n"       "Communitly-list number (expanded)\n"       "Community-list name\n"       "Delete matching communities\n");DEFUN (set_ecommunity_rt,       set_ecommunity_rt_cmd,       "set extcommunity rt .ASN:nn_or_IP-address:nn",       SET_STR       "BGP extended community attribute\n"       "Route Target extened communityt\n"       "VPN extended community\n"){  int ret;  char *str;  str = argv_concat (argv, argc, 0);  ret = bgp_route_set_add (vty, vty->index, "extcommunity rt", str);  XFREE (MTYPE_TMP, str);  return ret;}DEFUN (no_set_ecommunity_rt,       no_set_ecommunity_rt_cmd,       "no set extcommunity rt",       NO_STR       SET_STR       "BGP ext

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -