]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: fix crash on changing the circuit type of a passive interface
authorLu Feng <lu.feng@6wind.com>
Thu, 8 Jan 2015 01:21:02 +0000 (01:21 +0000)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Thu, 26 May 2016 15:24:51 +0000 (15:24 +0000)
Signed-off-by: Feng Lu <lu.feng@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 92cff4f7cd7e805e6689e73e63029aaccd145eca)

isisd/isis_events.c

index 79e5ab379d46ac741be45500d373762e01929f67..0dee9e6f524d2d7976c27ca26b896a9477f84138 100644 (file)
@@ -284,26 +284,29 @@ isis_event_circuit_type_change (struct isis_circuit *circuit, int newtype)
       return;
     }
 
-  switch (circuit->is_type)
+  if (! circuit->is_passive)
     {
-    case IS_LEVEL_1:
-      if (newtype == IS_LEVEL_2)
-       circuit_resign_level (circuit, 1);
-      circuit_commence_level (circuit, 2);
-      break;
-    case IS_LEVEL_1_AND_2:
-      if (newtype == IS_LEVEL_1)
-       circuit_resign_level (circuit, 2);
-      else
-       circuit_resign_level (circuit, 1);
-      break;
-    case IS_LEVEL_2:
-      if (newtype == IS_LEVEL_1)
-       circuit_resign_level (circuit, 2);
-      circuit_commence_level (circuit, 1);
-      break;
-    default:
-      break;
+      switch (circuit->is_type)
+        {
+        case IS_LEVEL_1:
+          if (newtype == IS_LEVEL_2)
+            circuit_resign_level (circuit, 1);
+          circuit_commence_level (circuit, 2);
+          break;
+        case IS_LEVEL_1_AND_2:
+          if (newtype == IS_LEVEL_1)
+            circuit_resign_level (circuit, 2);
+          else
+            circuit_resign_level (circuit, 1);
+          break;
+        case IS_LEVEL_2:
+          if (newtype == IS_LEVEL_1)
+            circuit_resign_level (circuit, 2);
+          circuit_commence_level (circuit, 1);
+          break;
+        default:
+          break;
+        }
     }
 
   circuit->is_type = newtype;