| 
version 1.1.1.1, 2012/02/21 17:26:12
 | 
version 1.1.1.3, 2016/11/02 10:09:11
 | 
| 
 Line 34  struct hash *disthash;
 | 
 Line 34  struct hash *disthash;
 | 
 |  /* Hook functions. */ | 
  /* Hook functions. */ | 
 |  void (*distribute_add_hook) (struct distribute *); | 
  void (*distribute_add_hook) (struct distribute *); | 
 |  void (*distribute_delete_hook) (struct distribute *); | 
  void (*distribute_delete_hook) (struct distribute *); | 
 |  | 
 |  static struct distribute * | 
  static struct distribute * | 
 |  distribute_new (void) | 
  distribute_new (void) | 
 |  { | 
  { | 
| 
 Line 133  distribute_cmp (const struct distribute *dist1, const 
 | 
 Line 133  distribute_cmp (const struct distribute *dist1, const 
 | 
 |      return 1; | 
      return 1; | 
 |    return 0; | 
    return 0; | 
 |  } | 
  } | 
 |  | 
 |  /* Set access-list name to the distribute list. */ | 
  /* Set access-list name to the distribute list. */ | 
 |  static struct distribute * | 
  static struct distribute * | 
 |  distribute_list_set (const char *ifname, enum distribute_type type,  | 
  distribute_list_set (const char *ifname, enum distribute_type type,  | 
| 
 Line 299  DEFUN (distribute_list_all,
 | 
 Line 299  DEFUN (distribute_list_all,
 | 
 |         "Filter outgoing routing updates\n") | 
         "Filter outgoing routing updates\n") | 
 |  { | 
  { | 
 |    enum distribute_type type; | 
    enum distribute_type type; | 
 |    struct distribute *dist; | 
   | 
 |   | 
   | 
 |    /* Check of distribute list type. */ | 
    /* Check of distribute list type. */ | 
 |    if (strncmp (argv[1], "i", 1) == 0) | 
    if (strncmp (argv[1], "i", 1) == 0) | 
| 
 Line 314  DEFUN (distribute_list_all,
 | 
 Line 313  DEFUN (distribute_list_all,
 | 
 |      } | 
      } | 
 |   | 
   | 
 |    /* Get interface name corresponding distribute list. */ | 
    /* Get interface name corresponding distribute list. */ | 
|   dist = distribute_list_set (NULL, type, argv[0]); |   distribute_list_set (NULL, type, argv[0]); | 
 |   | 
   | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  } | 
  } | 
| 
 Line 379  DEFUN (distribute_list,
 | 
 Line 378  DEFUN (distribute_list,
 | 
 |         "Interface name\n") | 
         "Interface name\n") | 
 |  { | 
  { | 
 |    enum distribute_type type; | 
    enum distribute_type type; | 
 |    struct distribute *dist; | 
   | 
 |   | 
   | 
 |    /* Check of distribute list type. */ | 
    /* Check of distribute list type. */ | 
 |    if (strncmp (argv[1], "i", 1) == 0) | 
    if (strncmp (argv[1], "i", 1) == 0) | 
| 
 Line 393  DEFUN (distribute_list,
 | 
 Line 391  DEFUN (distribute_list,
 | 
 |      } | 
      } | 
 |   | 
   | 
 |    /* Get interface name corresponding distribute list. */ | 
    /* Get interface name corresponding distribute list. */ | 
|   dist = distribute_list_set (argv[2], type, argv[0]); |   distribute_list_set (argv[2], type, argv[0]); | 
 |   | 
   | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  }        | 
  }        | 
| 
 Line 407  ALIAS (distribute_list,
 | 
 Line 405  ALIAS (distribute_list,
 | 
 |         "Filter outgoing routing updates\n" | 
         "Filter outgoing routing updates\n" | 
 |         "Interface name\n") | 
         "Interface name\n") | 
 |   | 
   | 
| DEFUN (no_districute_list, no_distribute_list_cmd, | DEFUN (no_distribute_list, no_distribute_list_cmd, | 
 |         "no distribute-list WORD (in|out) WORD", | 
         "no distribute-list WORD (in|out) WORD", | 
 |         NO_STR | 
         NO_STR | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
| 
 Line 439  DEFUN (no_districute_list, no_distribute_list_cmd,
 | 
 Line 437  DEFUN (no_districute_list, no_distribute_list_cmd,
 | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  }        | 
  }        | 
 |   | 
   | 
| ALIAS (no_districute_list, no_ipv6_distribute_list_cmd, | ALIAS (no_distribute_list, no_ipv6_distribute_list_cmd, | 
 |         "no distribute-list WORD (in|out) WORD", | 
         "no distribute-list WORD (in|out) WORD", | 
 |         NO_STR | 
         NO_STR | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
| 
 Line 448  ALIAS (no_districute_list, no_ipv6_distribute_list_cmd
 | 
 Line 446  ALIAS (no_districute_list, no_ipv6_distribute_list_cmd
 | 
 |         "Filter outgoing routing updates\n" | 
         "Filter outgoing routing updates\n" | 
 |         "Interface name\n") | 
         "Interface name\n") | 
 |   | 
   | 
| DEFUN (districute_list_prefix_all, | DEFUN (distribute_list_prefix_all, | 
 |         distribute_list_prefix_all_cmd, | 
         distribute_list_prefix_all_cmd, | 
 |         "distribute-list prefix WORD (in|out)", | 
         "distribute-list prefix WORD (in|out)", | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
| 
 Line 458  DEFUN (districute_list_prefix_all,
 | 
 Line 456  DEFUN (districute_list_prefix_all,
 | 
 |         "Filter outgoing routing updates\n") | 
         "Filter outgoing routing updates\n") | 
 |  { | 
  { | 
 |    enum distribute_type type; | 
    enum distribute_type type; | 
 |    struct distribute *dist; | 
   | 
 |   | 
   | 
 |    /* Check of distribute list type. */ | 
    /* Check of distribute list type. */ | 
 |    if (strncmp (argv[1], "i", 1) == 0) | 
    if (strncmp (argv[1], "i", 1) == 0) | 
| 
 Line 473  DEFUN (districute_list_prefix_all,
 | 
 Line 470  DEFUN (districute_list_prefix_all,
 | 
 |      } | 
      } | 
 |   | 
   | 
 |    /* Get interface name corresponding distribute list. */ | 
    /* Get interface name corresponding distribute list. */ | 
|   dist = distribute_list_prefix_set (NULL, type, argv[0]); |   distribute_list_prefix_set (NULL, type, argv[0]); | 
 |   | 
   | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  }        | 
  }        | 
 |   | 
   | 
| ALIAS (districute_list_prefix_all, | ALIAS (distribute_list_prefix_all, | 
 |         ipv6_distribute_list_prefix_all_cmd, | 
         ipv6_distribute_list_prefix_all_cmd, | 
 |         "distribute-list prefix WORD (in|out)", | 
         "distribute-list prefix WORD (in|out)", | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
| 
 Line 487  ALIAS (districute_list_prefix_all,
 | 
 Line 484  ALIAS (districute_list_prefix_all,
 | 
 |         "Filter incoming routing updates\n" | 
         "Filter incoming routing updates\n" | 
 |         "Filter outgoing routing updates\n") | 
         "Filter outgoing routing updates\n") | 
 |   | 
   | 
| DEFUN (no_districute_list_prefix_all, | DEFUN (no_distribute_list_prefix_all, | 
 |         no_distribute_list_prefix_all_cmd, | 
         no_distribute_list_prefix_all_cmd, | 
 |         "no distribute-list prefix WORD (in|out)", | 
         "no distribute-list prefix WORD (in|out)", | 
 |         NO_STR | 
         NO_STR | 
| 
 Line 521  DEFUN (no_districute_list_prefix_all,
 | 
 Line 518  DEFUN (no_districute_list_prefix_all,
 | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  }        | 
  }        | 
 |   | 
   | 
| ALIAS (no_districute_list_prefix_all, | ALIAS (no_distribute_list_prefix_all, | 
 |         no_ipv6_distribute_list_prefix_all_cmd, | 
         no_ipv6_distribute_list_prefix_all_cmd, | 
 |         "no distribute-list prefix WORD (in|out)", | 
         "no distribute-list prefix WORD (in|out)", | 
 |         NO_STR | 
         NO_STR | 
| 
 Line 531  ALIAS (no_districute_list_prefix_all,
 | 
 Line 528  ALIAS (no_districute_list_prefix_all,
 | 
 |         "Filter incoming routing updates\n" | 
         "Filter incoming routing updates\n" | 
 |         "Filter outgoing routing updates\n") | 
         "Filter outgoing routing updates\n") | 
 |   | 
   | 
| DEFUN (districute_list_prefix, distribute_list_prefix_cmd, | DEFUN (distribute_list_prefix, distribute_list_prefix_cmd, | 
 |         "distribute-list prefix WORD (in|out) WORD", | 
         "distribute-list prefix WORD (in|out) WORD", | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
 |         "Filter prefixes in routing updates\n" | 
         "Filter prefixes in routing updates\n" | 
| 
 Line 541  DEFUN (districute_list_prefix, distribute_list_prefix_
 | 
 Line 538  DEFUN (districute_list_prefix, distribute_list_prefix_
 | 
 |         "Interface name\n") | 
         "Interface name\n") | 
 |  { | 
  { | 
 |    enum distribute_type type; | 
    enum distribute_type type; | 
 |    struct distribute *dist; | 
   | 
 |   | 
   | 
 |    /* Check of distribute list type. */ | 
    /* Check of distribute list type. */ | 
 |    if (strncmp (argv[1], "i", 1) == 0) | 
    if (strncmp (argv[1], "i", 1) == 0) | 
| 
 Line 556  DEFUN (districute_list_prefix, distribute_list_prefix_
 | 
 Line 552  DEFUN (districute_list_prefix, distribute_list_prefix_
 | 
 |      } | 
      } | 
 |   | 
   | 
 |    /* Get interface name corresponding distribute list. */ | 
    /* Get interface name corresponding distribute list. */ | 
|   dist = distribute_list_prefix_set (argv[2], type, argv[0]); |   distribute_list_prefix_set (argv[2], type, argv[0]); | 
 |   | 
   | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  }        | 
  }        | 
 |   | 
   | 
| ALIAS (districute_list_prefix, ipv6_distribute_list_prefix_cmd, | ALIAS (distribute_list_prefix, ipv6_distribute_list_prefix_cmd, | 
 |         "distribute-list prefix WORD (in|out) WORD", | 
         "distribute-list prefix WORD (in|out) WORD", | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
 |         "Filter prefixes in routing updates\n" | 
         "Filter prefixes in routing updates\n" | 
| 
 Line 570  ALIAS (districute_list_prefix, ipv6_distribute_list_pr
 | 
 Line 566  ALIAS (districute_list_prefix, ipv6_distribute_list_pr
 | 
 |         "Filter outgoing routing updates\n" | 
         "Filter outgoing routing updates\n" | 
 |         "Interface name\n") | 
         "Interface name\n") | 
 |   | 
   | 
| DEFUN (no_districute_list_prefix, no_distribute_list_prefix_cmd, | DEFUN (no_distribute_list_prefix, no_distribute_list_prefix_cmd, | 
 |         "no distribute-list prefix WORD (in|out) WORD", | 
         "no distribute-list prefix WORD (in|out) WORD", | 
 |         NO_STR | 
         NO_STR | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
| 
 Line 604  DEFUN (no_districute_list_prefix, no_distribute_list_p
 | 
 Line 600  DEFUN (no_districute_list_prefix, no_distribute_list_p
 | 
 |    return CMD_SUCCESS; | 
    return CMD_SUCCESS; | 
 |  }        | 
  }        | 
 |   | 
   | 
| ALIAS (no_districute_list_prefix, no_ipv6_distribute_list_prefix_cmd, | ALIAS (no_distribute_list_prefix, no_ipv6_distribute_list_prefix_cmd, | 
 |         "no distribute-list prefix WORD (in|out) WORD", | 
         "no distribute-list prefix WORD (in|out) WORD", | 
 |         NO_STR | 
         NO_STR | 
 |         "Filter networks in routing updates\n" | 
         "Filter networks in routing updates\n" | 
| 
 Line 762  distribute_list_init (int node)
 | 
 Line 758  distribute_list_init (int node)
 | 
 |                            (int (*) (const void *, const void *)) distribute_cmp); | 
                            (int (*) (const void *, const void *)) distribute_cmp); | 
 |   | 
   | 
 |    if(node==RIP_NODE) { | 
    if(node==RIP_NODE) { | 
|     install_element (RIP_NODE, &distribute_list_all_cmd); |     install_element (node, &distribute_list_all_cmd); | 
|     install_element (RIP_NODE, &no_distribute_list_all_cmd); |     install_element (node, &no_distribute_list_all_cmd); | 
|     install_element (RIP_NODE, &distribute_list_cmd); |     install_element (node, &distribute_list_cmd); | 
|     install_element (RIP_NODE, &no_distribute_list_cmd); |     install_element (node, &no_distribute_list_cmd); | 
|     install_element (RIP_NODE, &distribute_list_prefix_all_cmd); |     install_element (node, &distribute_list_prefix_all_cmd); | 
|     install_element (RIP_NODE, &no_distribute_list_prefix_all_cmd); |     install_element (node, &no_distribute_list_prefix_all_cmd); | 
|     install_element (RIP_NODE, &distribute_list_prefix_cmd); |     install_element (node, &distribute_list_prefix_cmd); | 
|     install_element (RIP_NODE, &no_distribute_list_prefix_cmd); |     install_element (node, &no_distribute_list_prefix_cmd); | 
|   } else { |   } else if (node == RIPNG_NODE || node == BABEL_NODE) { | 
|     install_element (RIPNG_NODE, &ipv6_distribute_list_all_cmd); |     /* WARNING: two identical commands installed do a crash, so be worry with | 
|     install_element (RIPNG_NODE, &no_ipv6_distribute_list_all_cmd); |      aliases. For this reason, and because all these commands are aliases, Babel | 
|     install_element (RIPNG_NODE, &ipv6_distribute_list_cmd); |      is not set with RIP. */ | 
|     install_element (RIPNG_NODE, &no_ipv6_distribute_list_cmd); |     install_element (node, &ipv6_distribute_list_all_cmd); | 
|     install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_all_cmd); |     install_element (node, &no_ipv6_distribute_list_all_cmd); | 
|     install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_all_cmd); |     install_element (node, &ipv6_distribute_list_cmd); | 
|     install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_cmd); |     install_element (node, &no_ipv6_distribute_list_cmd); | 
|     install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_cmd); |     install_element (node, &ipv6_distribute_list_prefix_all_cmd); | 
|   |     install_element (node, &no_ipv6_distribute_list_prefix_all_cmd); | 
|   |     install_element (node, &ipv6_distribute_list_prefix_cmd); | 
|   |     install_element (node, &no_ipv6_distribute_list_prefix_cmd); | 
 |    } | 
    } | 
 |  } | 
  } |