summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ospf6d/ospf6_asbr.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 5cf879b8cf..2b11d89a31 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -1643,10 +1643,15 @@ DEFUN (ospf6_redistribute,
return CMD_WARNING_CONFIG_FAILED;
red = ospf6_redist_lookup(ospf6, type, 0);
- if (!red)
+ if (!red) {
ospf6_redist_add(ospf6, type, 0);
- else
+ } else {
+ /* To check, if user is providing same config */
+ if (ROUTEMAP_NAME(red) == NULL)
+ return CMD_SUCCESS;
+
ospf6_asbr_redistribute_unset(ospf6, red, type);
+ }
ospf6_asbr_redistribute_set(ospf6, type);
@@ -1674,10 +1679,16 @@ DEFUN (ospf6_redistribute_routemap,
return CMD_WARNING_CONFIG_FAILED;
red = ospf6_redist_lookup(ospf6, type, 0);
- if (!red)
+ if (!red) {
red = ospf6_redist_add(ospf6, type, 0);
- else
+ } else {
+ /* To check, if user is providing same route map */
+ if ((ROUTEMAP_NAME(red) != NULL)
+ && (strcmp(argv[idx_word]->arg, ROUTEMAP_NAME(red)) == 0))
+ return CMD_SUCCESS;
+
ospf6_asbr_redistribute_unset(ospf6, red, type);
+ }
ospf6_asbr_routemap_set(red, argv[idx_word]->arg);
ospf6_asbr_redistribute_set(ospf6, type);