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

📄 distribute.c

📁 zebra测试源代码用于 SOCKET 通信
💻 C
📖 第 1 页 / 共 2 页
字号:
    }  /* Get interface name corresponding distribute list. */  dist = distribute_list_set (argv[2], type, argv[0]);  return CMD_SUCCESS;}       ALIAS (distribute_list,       ipv6_distribute_list_cmd,       "distribute-list WORD (in|out) WORD",       "Filter networks in routing updates\n"       "Access-list name\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n");DEFUN (no_districute_list,       no_distribute_list_cmd,       "no distribute-list WORD (in|out) WORD",       NO_STR       "Filter networks in routing updates\n"       "Access-list name\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n"){  int ret;  enum distribute_type type;  /* Check of distribute list type. */  if (strncmp (argv[1], "i", 1) == 0)    type = DISTRIBUTE_IN;  else if (strncmp (argv[1], "o", 1) == 0)    type = DISTRIBUTE_OUT;  else    {      vty_out (vty, "distribute list direction must be [in|out]%s", VTY_NEWLINE);      return CMD_WARNING;    }  ret = distribute_list_unset (argv[2], type, argv[0]);  if (! ret)    {      vty_out (vty, "distribute list doesn't exist%s", VTY_NEWLINE);      return CMD_WARNING;    }  return CMD_SUCCESS;}       ALIAS (no_districute_list,       no_ipv6_distribute_list_cmd,       "no distribute-list WORD (in|out) WORD",       NO_STR       "Filter networks in routing updates\n"       "Access-list name\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n");DEFUN (districute_list_prefix_all,       distribute_list_prefix_all_cmd,       "distribute-list prefix WORD (in|out)",       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"){  enum distribute_type type;  struct distribute *dist;  /* Check of distribute list type. */  if (strncmp (argv[1], "i", 1) == 0)    type = DISTRIBUTE_IN;  else if (strncmp (argv[1], "o", 1) == 0)    type = DISTRIBUTE_OUT;  else    {      vty_out (vty, "distribute list direction must be [in|out]%s", 	       VTY_NEWLINE);      return CMD_WARNING;    }  /* Get interface name corresponding distribute list. */  dist = distribute_list_prefix_set (NULL, type, argv[0]);  return CMD_SUCCESS;}       ALIAS (districute_list_prefix_all,       ipv6_distribute_list_prefix_all_cmd,       "distribute-list prefix WORD (in|out)",       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n");DEFUN (no_districute_list_prefix_all,       no_distribute_list_prefix_all_cmd,       "no distribute-list prefix WORD (in|out)",       NO_STR       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"){  int ret;  enum distribute_type type;  /* Check of distribute list type. */  if (strncmp (argv[1], "i", 1) == 0)    type = DISTRIBUTE_IN;  else if (strncmp (argv[1], "o", 1) == 0)    type = DISTRIBUTE_OUT;  else    {      vty_out (vty, "distribute list direction must be [in|out]%s", 	       VTY_NEWLINE);      return CMD_WARNING;    }  ret = distribute_list_prefix_unset (NULL, type, argv[0]);  if (! ret)    {      vty_out (vty, "distribute list doesn't exist%s", VTY_NEWLINE);      return CMD_WARNING;    }  return CMD_SUCCESS;}       ALIAS (no_districute_list_prefix_all,       no_ipv6_distribute_list_prefix_all_cmd,       "no distribute-list prefix WORD (in|out)",       NO_STR       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n");DEFUN (districute_list_prefix, distribute_list_prefix_cmd,       "distribute-list prefix WORD (in|out) WORD",       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n"){  enum distribute_type type;  struct distribute *dist;  /* Check of distribute list type. */  if (strncmp (argv[1], "i", 1) == 0)    type = DISTRIBUTE_IN;  else if (strncmp (argv[1], "o", 1) == 0)    type = DISTRIBUTE_OUT;  else    {      vty_out (vty, "distribute list direction must be [in|out]%s", 	       VTY_NEWLINE);      return CMD_WARNING;    }  /* Get interface name corresponding distribute list. */  dist = distribute_list_prefix_set (argv[2], type, argv[0]);  return CMD_SUCCESS;}       ALIAS (districute_list_prefix,       ipv6_distribute_list_prefix_cmd,       "distribute-list prefix WORD (in|out) WORD",       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n");DEFUN (no_districute_list_prefix,       no_distribute_list_prefix_cmd,       "no distribute-list prefix WORD (in|out) WORD",       NO_STR       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n"){  int ret;  enum distribute_type type;  /* Check of distribute list type. */  if (strncmp (argv[1], "i", 1) == 0)    type = DISTRIBUTE_IN;  else if (strncmp (argv[1], "o", 1) == 0)    type = DISTRIBUTE_OUT;  else    {      vty_out (vty, "distribute list direction must be [in|out]%s", 	       VTY_NEWLINE);      return CMD_WARNING;    }  ret = distribute_list_prefix_unset (argv[2], type, argv[0]);  if (! ret)    {      vty_out (vty, "distribute list doesn't exist%s", VTY_NEWLINE);      return CMD_WARNING;    }  return CMD_SUCCESS;}       ALIAS (no_districute_list_prefix,       no_ipv6_distribute_list_prefix_cmd,       "no distribute-list prefix WORD (in|out) WORD",       NO_STR       "Filter networks in routing updates\n"       "Filter prefixes in routing updates\n"       "Name of an IP prefix-list\n"       "Filter incoming routing updates\n"       "Filter outgoing routing updates\n"       "Interface name\n");intconfig_show_distribute (struct vty *vty){  int i;  struct hash_backet *mp;  struct distribute *dist;  /* Output filter configuration. */  dist = distribute_lookup (NULL);  if (dist && (dist->list[DISTRIBUTE_OUT] || dist->prefix[DISTRIBUTE_OUT]))    {      vty_out (vty, "  Outgoing update filter list for all interface is");      if (dist->list[DISTRIBUTE_OUT])	vty_out (vty, " %s", dist->list[DISTRIBUTE_OUT]);      if (dist->prefix[DISTRIBUTE_OUT])	vty_out (vty, "%s (prefix-list) %s",		 dist->list[DISTRIBUTE_OUT] ? "," : "",		 dist->prefix[DISTRIBUTE_OUT]);      vty_out (vty, "%s", VTY_NEWLINE);    }  else    vty_out (vty, "  Outgoing update filter list for all interface is not set%s", VTY_NEWLINE);  for (i = 0; i < disthash->size; i++)    for (mp = disthash->index[i]; mp; mp = mp->next)      {	dist = mp->data;	if (dist->ifname)	  if (dist->list[DISTRIBUTE_OUT] || dist->prefix[DISTRIBUTE_OUT])	    {	      vty_out (vty, "    %s filtered by", dist->ifname);	      if (dist->list[DISTRIBUTE_OUT])		vty_out (vty, " %s", dist->list[DISTRIBUTE_OUT]);	      if (dist->prefix[DISTRIBUTE_OUT])		vty_out (vty, "%s (prefix-list) %s",			 dist->list[DISTRIBUTE_OUT] ? "," : "",			 dist->prefix[DISTRIBUTE_OUT]);	      vty_out (vty, "%s", VTY_NEWLINE);	    }      }  /* Input filter configuration. */  dist = distribute_lookup (NULL);  if (dist && (dist->list[DISTRIBUTE_IN] || dist->prefix[DISTRIBUTE_IN]))    {      vty_out (vty, "  Incoming update filter list for all interface is");      if (dist->list[DISTRIBUTE_IN])	vty_out (vty, " %s", dist->list[DISTRIBUTE_IN]);      if (dist->prefix[DISTRIBUTE_IN])	vty_out (vty, "%s (prefix-list) %s",		 dist->list[DISTRIBUTE_IN] ? "," : "",		 dist->prefix[DISTRIBUTE_IN]);      vty_out (vty, "%s", VTY_NEWLINE);    }  else    vty_out (vty, "  Incoming update filter list for all interface is not set%s", VTY_NEWLINE);  for (i = 0; i < disthash->size; i++)    for (mp = disthash->index[i]; mp; mp = mp->next)      {	dist = mp->data;	if (dist->ifname)	  if (dist->list[DISTRIBUTE_IN] || dist->prefix[DISTRIBUTE_IN])	    {	      vty_out (vty, "    %s filtered by", dist->ifname);	      if (dist->list[DISTRIBUTE_IN])		vty_out (vty, " %s", dist->list[DISTRIBUTE_IN]);	      if (dist->prefix[DISTRIBUTE_IN])		vty_out (vty, "%s (prefix-list) %s",			 dist->list[DISTRIBUTE_IN] ? "," : "",			 dist->prefix[DISTRIBUTE_IN]);	      vty_out (vty, "%s", VTY_NEWLINE);	    }      }  return 0;}/* Configuration write function. */intconfig_write_distribute (struct vty *vty){  int i;  struct hash_backet *mp;  int write = 0;  for (i = 0; i < disthash->size; i++)    for (mp = disthash->index[i]; mp; mp = mp->next)      {	struct distribute *dist;	dist = mp->data;	if (dist->list[DISTRIBUTE_IN])	  {	    vty_out (vty, " distribute-list %s in %s%s", 		     dist->list[DISTRIBUTE_IN],		     dist->ifname ? dist->ifname : "",		     VTY_NEWLINE);	    write++;	  }	if (dist->list[DISTRIBUTE_OUT])	  {	    vty_out (vty, " distribute-list %s out %s%s", 		     dist->list[DISTRIBUTE_OUT],		     dist->ifname ? dist->ifname : "",		     VTY_NEWLINE);	    write++;	  }	if (dist->prefix[DISTRIBUTE_IN])	  {	    vty_out (vty, " distribute-list prefix %s in %s%s",		     dist->prefix[DISTRIBUTE_IN],		     dist->ifname ? dist->ifname : "",		     VTY_NEWLINE);	    write++;	  }	if (dist->prefix[DISTRIBUTE_OUT])	  {	    vty_out (vty, " distribute-list prefix %s out %s%s",		     dist->prefix[DISTRIBUTE_OUT],		     dist->ifname ? dist->ifname : "",		     VTY_NEWLINE);	    write++;	  }      }  return write;}/* Clear all distribute list. */voiddistribute_list_reset (){  hash_clean (disthash, (void (*) (void *)) distribute_free);}/* Initialize distribute list related hash. */voiddistribute_list_init (int node){  disthash = hash_create (distribute_hash_make, distribute_cmp);  if (node == RIP_NODE)    {      install_element (RIP_NODE, &distribute_list_all_cmd);      install_element (RIP_NODE, &no_distribute_list_all_cmd);      install_element (RIP_NODE, &distribute_list_cmd);      install_element (RIP_NODE, &no_distribute_list_cmd);      install_element (RIP_NODE, &distribute_list_prefix_all_cmd);      install_element (RIP_NODE, &no_distribute_list_prefix_all_cmd);      install_element (RIP_NODE, &distribute_list_prefix_cmd);      install_element (RIP_NODE, &no_distribute_list_prefix_cmd);    }  else    {      install_element (RIPNG_NODE, &ipv6_distribute_list_all_cmd);      install_element (RIPNG_NODE, &no_ipv6_distribute_list_all_cmd);      install_element (RIPNG_NODE, &ipv6_distribute_list_cmd);      install_element (RIPNG_NODE, &no_ipv6_distribute_list_cmd);      install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_all_cmd);      install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_all_cmd);      install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_cmd);      install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_cmd);    }}

⌨️ 快捷键说明

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