Whoops, the "add" part of this got mixed up in the 1/8 patch...
(Thanks Donald for pointing that out!)
Should've noticed that myself looking at the diffstat...

I'll go fix & resend.

-David

On Tue, May 24, 2016 at 06:26:49PM +0200, David Lamparter wrote:
> From: Christian Franke <nob...@nowhere.ws>
> 
> Move out basic area configuration (metric type, overload and attachment
> bits, dynamic hostname extension enable) into isis_vty.c.
> 
> Signed-off-by: David Lamparter <equi...@opensourcerouting.org>
> ---
>  isisd/isisd.c | 224 
> ++++++----------------------------------------------------
>  isisd/isisd.h |   6 ++
>  2 files changed, 29 insertions(+), 201 deletions(-)
> 
> diff --git a/isisd/isisd.c b/isisd/isisd.c
> index 26b7125..edf0ab6 100644
> --- a/isisd/isisd.c
> +++ b/isisd/isisd.c
> @@ -2173,213 +2173,47 @@ ALIAS (no_lsp_gen_interval_l2,
>         "Set interval for level 2 only\n"
>         "Minimum interval in seconds\n")
>  
> -static int
> -validate_metric_style_narrow (struct vty *vty, struct isis_area *area)
> +void isis_area_metricstyle_set(struct isis_area *area, bool old_metric,
> +                            bool new_metric)
>  {
> -  struct isis_circuit *circuit;
> -  struct listnode *node;
> -  
> -  if (! vty)
> -    return CMD_ERR_AMBIGUOUS;
> -
> -  if (! area)
> -    {
> -      vty_out (vty, "ISIS area is invalid%s", VTY_NEWLINE);
> -      return CMD_ERR_AMBIGUOUS;
> -    }
> -
> -  for (ALL_LIST_ELEMENTS_RO (area->circuit_list, node, circuit))
> +  if (area->oldmetric != old_metric
> +      || area->newmetric != new_metric)
>      {
> -      if ((area->is_type & IS_LEVEL_1) &&
> -          (circuit->is_type & IS_LEVEL_1) &&
> -          (circuit->te_metric[0] > MAX_NARROW_LINK_METRIC))
> -        {
> -          vty_out (vty, "ISIS circuit %s metric is invalid%s",
> -                   circuit->interface->name, VTY_NEWLINE);
> -          return CMD_ERR_AMBIGUOUS;
> -        }
> -      if ((area->is_type & IS_LEVEL_2) &&
> -          (circuit->is_type & IS_LEVEL_2) &&
> -          (circuit->te_metric[1] > MAX_NARROW_LINK_METRIC))
> -        {
> -          vty_out (vty, "ISIS circuit %s metric is invalid%s",
> -                   circuit->interface->name, VTY_NEWLINE);
> -          return CMD_ERR_AMBIGUOUS;
> -        }
> +      area->oldmetric = old_metric;
> +      area->newmetric = new_metric;
> +      lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 1);
>      }
> -
> -  return CMD_SUCCESS;
>  }
>  
> -DEFUN (metric_style,
> -       metric_style_cmd,
> -       "metric-style (narrow|transition|wide)",
> -       "Use old-style (ISO 10589) or new-style packet formats\n"
> -       "Use old style of TLVs with narrow metric\n"
> -       "Send and accept both styles of TLVs during transition\n"
> -       "Use new style of TLVs to carry wider metric\n")
> +void isis_area_overload_bit_set(struct isis_area *area, bool overload_bit)
>  {
> -  struct isis_area *area;
> -  int ret;
> +  char new_overload_bit = overload_bit ? LSPBIT_OL : 0;
>  
> -  area = vty->index;
> -  assert (area);
> -
> -  if (strncmp (argv[0], "w", 1) == 0)
> +  if (new_overload_bit != area->overload_bit)
>      {
> -      area->newmetric = 1;
> -      area->oldmetric = 0;
> +      area->overload_bit = new_overload_bit;
> +      lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 1);
>      }
> -  else
> -    {
> -      ret = validate_metric_style_narrow (vty, area);
> -      if (ret != CMD_SUCCESS)
> -        return ret;
> -
> -      if (strncmp (argv[0], "t", 1) == 0)
> -     {
> -       area->newmetric = 1;
> -       area->oldmetric = 1;
> -     }
> -      else if (strncmp (argv[0], "n", 1) == 0)
> -     {
> -       area->newmetric = 0;
> -       area->oldmetric = 1;
> -     }
> -    }
> -
> -  return CMD_SUCCESS;
> -}
> -
> -DEFUN (no_metric_style,
> -       no_metric_style_cmd,
> -       "no metric-style",
> -       NO_STR
> -       "Use old-style (ISO 10589) or new-style packet formats\n")
> -{
> -  struct isis_area *area;
> -  int ret;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  ret = validate_metric_style_narrow (vty, area);
> -  if (ret != CMD_SUCCESS)
> -    return ret;
> -
> -  /* Default is narrow metric. */
> -  area->newmetric = 0;
> -  area->oldmetric = 1;
> -
> -  return CMD_SUCCESS;
> -}
> -
> -DEFUN (set_overload_bit,
> -       set_overload_bit_cmd,
> -       "set-overload-bit",
> -       "Set overload bit to avoid any transit traffic\n"
> -       "Set overload bit\n")
> -{
> -  struct isis_area *area;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  area->overload_bit = LSPBIT_OL;
> -  lsp_regenerate_schedule (area, IS_LEVEL_1 | IS_LEVEL_2, 1);
> -
> -  return CMD_SUCCESS;
>  }
>  
> -DEFUN (no_set_overload_bit,
> -       no_set_overload_bit_cmd,
> -       "no set-overload-bit",
> -       "Reset overload bit to accept transit traffic\n"
> -       "Reset overload bit\n")
> +void isis_area_attached_bit_set(struct isis_area *area, bool attached_bit)
>  {
> -  struct isis_area *area;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  area->overload_bit = 0;
> -  lsp_regenerate_schedule (area, IS_LEVEL_1 | IS_LEVEL_2, 1);
> -
> -  return CMD_SUCCESS;
> -}
> +  char new_attached_bit = attached_bit ? LSPBIT_ATT : 0;
>  
> -DEFUN (set_attached_bit,
> -       set_attached_bit_cmd,
> -       "set-attached-bit",
> -       "Set attached bit to identify as L1/L2 router for inter-area 
> traffic\n"
> -       "Set attached bit\n")
> -{
> -  struct isis_area *area;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  area->attached_bit = LSPBIT_ATT;
> -  lsp_regenerate_schedule (area, IS_LEVEL_1 | IS_LEVEL_2, 1);
> -
> -  return CMD_SUCCESS;
> -}
> -
> -DEFUN (no_set_attached_bit,
> -       no_set_attached_bit_cmd,
> -       "no set-attached-bit",
> -       "Reset attached bit\n")
> -{
> -  struct isis_area *area;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  area->attached_bit = 0;
> -  lsp_regenerate_schedule (area, IS_LEVEL_1 | IS_LEVEL_2, 1);
> -
> -  return CMD_SUCCESS;
> -}
> -
> -DEFUN (dynamic_hostname,
> -       dynamic_hostname_cmd,
> -       "hostname dynamic",
> -       "Dynamic hostname for IS-IS\n"
> -       "Dynamic hostname\n")
> -{
> -  struct isis_area *area;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  if (!area->dynhostname)
> -   {
> -     area->dynhostname = 1;
> -     lsp_regenerate_schedule (area, IS_LEVEL_1 | IS_LEVEL_2, 0);
> -   }
> -
> -  return CMD_SUCCESS;
> +  if (new_attached_bit != area->attached_bit)
> +    {
> +      area->attached_bit = new_attached_bit;
> +      lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 1);
> +    }
>  }
>  
> -DEFUN (no_dynamic_hostname,
> -       no_dynamic_hostname_cmd,
> -       "no hostname dynamic",
> -       NO_STR
> -       "Dynamic hostname for IS-IS\n"
> -       "Dynamic hostname\n")
> +void isis_area_dynhostname_set(struct isis_area *area, bool dynhostname)
>  {
> -  struct isis_area *area;
> -
> -  area = vty->index;
> -  assert (area);
> -
> -  if (area->dynhostname)
> +  if (area->dynhostname != dynhostname)
>      {
> -      area->dynhostname = 0;
> -      lsp_regenerate_schedule (area, IS_LEVEL_1 | IS_LEVEL_2, 0);
> +      area->dynhostname = dynhostname;
> +      lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0);
>      }
> -
> -  return CMD_SUCCESS;
>  }
>  
>  DEFUN (spf_interval,
> @@ -3433,18 +3267,6 @@ isis_init ()
>    install_element (ISIS_NODE, &no_lsp_refresh_interval_l2_cmd);
>    install_element (ISIS_NODE, &no_lsp_refresh_interval_l2_arg_cmd);
>  
> -  install_element (ISIS_NODE, &set_overload_bit_cmd);
> -  install_element (ISIS_NODE, &no_set_overload_bit_cmd);
> -
> -  install_element (ISIS_NODE, &set_attached_bit_cmd);
> -  install_element (ISIS_NODE, &no_set_attached_bit_cmd);
> -
> -  install_element (ISIS_NODE, &dynamic_hostname_cmd);
> -  install_element (ISIS_NODE, &no_dynamic_hostname_cmd);
> -
> -  install_element (ISIS_NODE, &metric_style_cmd);
> -  install_element (ISIS_NODE, &no_metric_style_cmd);
> -
>    install_element (ISIS_NODE, &log_adj_changes_cmd);
>    install_element (ISIS_NODE, &no_log_adj_changes_cmd);
>  
> diff --git a/isisd/isisd.h b/isisd/isisd.h
> index 592b8f1..7e89c27 100644
> --- a/isisd/isisd.h
> +++ b/isisd/isisd.h
> @@ -141,6 +141,12 @@ struct isis_area *isis_area_lookup (const char *);
>  int isis_area_get (struct vty *vty, const char *area_tag);
>  void print_debug(struct vty *, int, int);
>  
> +void isis_area_overload_bit_set(struct isis_area *area, bool overload_bit);
> +void isis_area_attached_bit_set(struct isis_area *area, bool attached_bit);
> +void isis_area_dynhostname_set(struct isis_area *area, bool dynhostname);
> +void isis_area_metricstyle_set(struct isis_area *area, bool old_metric,
> +                            bool new_metric);
> +
>  void isis_vty_init (void);
>  
>  /* Master of threads. */
> -- 
> 2.3.6
> 
> 
> _______________________________________________
> Quagga-dev mailing list
> Quagga-dev@lists.quagga.net
> https://lists.quagga.net/mailman/listinfo/quagga-dev

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to