]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/link_state.c
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / lib / link_state.c
index 752030cd47ce5f34de97c7c9141a2dbe18e49371..58727a568b5304039631b31747966d954e125018 100644 (file)
@@ -497,7 +497,6 @@ void ls_vertex_del(struct ls_ted *ted, struct ls_vertex *vertex)
        /* Then remove Vertex from Link State Data Base and free memory */
        vertices_del(&ted->vertices, vertex);
        XFREE(MTYPE_LS_DB, vertex);
-       vertex = NULL;
 }
 
 void ls_vertex_del_all(struct ls_ted *ted, struct ls_vertex *vertex)
@@ -956,7 +955,10 @@ struct ls_subnet *ls_find_subnet(struct ls_ted *ted,
 {
        struct ls_subnet subnet = {};
 
-       subnet.key = *prefix;
+       if (!prefix)
+               return NULL;
+
+       prefix_copy(&subnet.key, prefix);
        return subnets_find(&ted->subnets, &subnet);
 }
 
@@ -1779,9 +1781,10 @@ struct ls_vertex *ls_msg2vertex(struct ls_ted *ted, struct ls_message *msg,
        case LS_MSG_EVENT_DELETE:
                vertex = ls_find_vertex_by_id(ted, node->adv);
                if (vertex) {
-                       if (delete)
+                       if (delete) {
                                ls_vertex_del_all(ted, vertex);
-                       else
+                               vertex = NULL;
+                       } else
                                vertex->status = DELETE;
                }
                break;
@@ -1858,9 +1861,10 @@ struct ls_subnet *ls_msg2subnet(struct ls_ted *ted, struct ls_message *msg,
        case LS_MSG_EVENT_DELETE:
                subnet = ls_find_subnet(ted, &pref->pref);
                if (subnet) {
-                       if (delete)
+                       if (delete) {
                                ls_subnet_del_all(ted, subnet);
-                       else
+                               subnet = NULL;
+                       } else
                                subnet->status = DELETE;
                }
                break;