]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrp_fsm.c
zebra: Allow ns delete to happen after under/over flow checks
[mirror_frr.git] / eigrpd / eigrp_fsm.c
index a4ee5b11dcae078319eec305311a7732860fe6dd..374114cf559dd279fa4935c895d8e8dddb756df9 100644 (file)
@@ -67,8 +67,8 @@
  * 7- state not changed, usually by receiving not last reply
  */
 
-#include <thread.h>
 #include <zebra.h>
+#include <thread.h>
 
 #include "prefix.h"
 #include "table.h"
@@ -170,7 +170,7 @@ struct {
        },
 };
 
-static const char *packet_type2str(u_char packet_type)
+static const char *packet_type2str(uint8_t packet_type)
 {
        if (packet_type == EIGRP_OPC_UPDATE)
                return "Update";
@@ -222,9 +222,9 @@ static const char *fsm_state2str(enum eigrp_fsm_events event)
        case EIGRP_FSM_EVENT_LR:
                return "Last Reply Event";
        case EIGRP_FSM_EVENT_Q_FCN:
-               return "Query Event Feasability not satisified";
+               return "Query Event Feasability not satisfied";
        case EIGRP_FSM_EVENT_LR_FCS:
-               return "Last Reply Event Feasability satisified";
+               return "Last Reply Event Feasability satisfied";
        case EIGRP_FSM_EVENT_DINC:
                return "Distance Increase Event";
        case EIGRP_FSM_EVENT_QACT:
@@ -264,7 +264,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg)
        // struct eigrp *eigrp = msg->eigrp;
        struct eigrp_prefix_entry *prefix = msg->prefix;
        struct eigrp_nexthop_entry *entry = msg->entry;
-       u_char actual_state = prefix->state;
+       uint8_t actual_state = prefix->state;
        enum metric_change change;
 
        if (entry == NULL) {
@@ -453,7 +453,7 @@ int eigrp_fsm_event_nq_fcn(struct eigrp_fsm_action_message *msg)
                                         // neighbors left
        }
 
-       list_delete_and_null(&successors);
+       list_delete(&successors);
 
        return 1;
 }
@@ -479,13 +479,14 @@ int eigrp_fsm_event_q_fcn(struct eigrp_fsm_action_message *msg)
                                         // neighbors left
        }
 
-       list_delete_and_null(&successors);
+       list_delete(&successors);
 
        return 1;
 }
 
 int eigrp_fsm_event_keep_state(struct eigrp_fsm_action_message *msg)
 {
+       struct eigrp *eigrp;
        struct eigrp_prefix_entry *prefix = msg->prefix;
        struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries);
 
@@ -498,9 +499,10 @@ int eigrp_fsm_event_keep_state(struct eigrp_fsm_action_message *msg)
                        if (msg->packet_type == EIGRP_OPC_QUERY)
                                eigrp_send_reply(msg->adv_router, prefix);
                        prefix->req_action |= EIGRP_FSM_NEED_UPDATE;
-                       listnode_add(
-                               (eigrp_lookup())->topology_changes_internalIPV4,
-                               prefix);
+                       eigrp = eigrp_lookup();
+                       assert(eigrp);
+                       listnode_add(eigrp->topology_changes_internalIPV4,
+                                    prefix);
                }
                eigrp_topology_update_node_flags(prefix);
                eigrp_update_routing_table(prefix);
@@ -528,7 +530,7 @@ int eigrp_fsm_event_lr(struct eigrp_fsm_action_message *msg)
 
                ne = listnode_head(successors);
                eigrp_send_reply(ne->adv_router, prefix);
-               list_delete_and_null(&successors);
+               list_delete(&successors);
        }
 
        prefix->state = EIGRP_FSM_STATE_PASSIVE;
@@ -558,7 +560,7 @@ int eigrp_fsm_event_dinc(struct eigrp_fsm_action_message *msg)
                        msg);
 
 
-       list_delete_and_null(&successors);
+       list_delete(&successors);
        return 1;
 }
 
@@ -582,7 +584,7 @@ int eigrp_fsm_event_lr_fcs(struct eigrp_fsm_action_message *msg)
                ne = listnode_head(successors);
                eigrp_send_reply(ne->adv_router, prefix);
 
-               list_delete_and_null(&successors);
+               list_delete(&successors);
        }
        prefix->req_action |= EIGRP_FSM_NEED_UPDATE;
        listnode_add(eigrp->topology_changes_internalIPV4, prefix);
@@ -618,7 +620,7 @@ int eigrp_fsm_event_lr_fcn(struct eigrp_fsm_action_message *msg)
                                         // neighbors left
        }
 
-       list_delete_and_null(&successors);
+       list_delete(&successors);
 
        return 1;
 }
@@ -634,6 +636,6 @@ int eigrp_fsm_event_qact(struct eigrp_fsm_action_message *msg)
        msg->prefix->state = EIGRP_FSM_STATE_ACTIVE_2;
        msg->prefix->distance = ne->distance;
 
-       list_delete_and_null(&successors);
+       list_delete(&successors);
        return 1;
 }