]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-lldp: drop state field
authorLennart Poettering <lennart@poettering.net>
Tue, 16 Feb 2016 17:56:37 +0000 (18:56 +0100)
committerLennart Poettering <lennart@poettering.net>
Sat, 20 Feb 2016 21:42:29 +0000 (22:42 +0100)
There's really no point in maintaining a state, the state machine is trivial,
and we actually never look at the state anyway, we just keep updating it.

src/libsystemd-network/sd-lldp.c

index 885ca62425d8e03b836c890b2bb76b18334066c2..97fa5b23f84bf0a133af3b07aaf3c7d16bc8208d 100644 (file)
 #include "siphash24.h"
 #include "string-util.h"
 
-typedef enum LLDPAgentRXState {
-        LLDP_AGENT_RX_WAIT_PORT_OPERATIONAL = 4,
-        LLDP_AGENT_RX_DELETE_AGED_INFO,
-        LLDP_AGENT_RX_LLDP_INITIALIZE,
-        LLDP_AGENT_RX_WAIT_FOR_FRAME,
-        LLDP_AGENT_RX_RX_FRAME,
-        LLDP_AGENT_RX_DELETE_INFO,
-        LLDP_AGENT_RX_UPDATE_INFO,
-        _LLDP_AGENT_RX_STATE_MAX,
-        _LLDP_AGENT_RX_INVALID = -1,
-} LLDPAgentRXState;
-
 /* Section 10.5.2.2 Reception counters */
 struct lldp_agent_statistics {
         uint64_t stats_ageouts_total;
@@ -65,7 +53,6 @@ struct sd_lldp {
 
         void *userdata;
 
-        LLDPAgentRXState rx_state;
         lldp_agent_statistics statistics;
 };
 
@@ -103,8 +90,6 @@ static const struct hash_ops chassis_id_hash_ops = {
 };
 
 static void lldp_mib_delete_objects(sd_lldp *lldp);
-static void lldp_set_state(sd_lldp *lldp, LLDPAgentRXState state);
-static void lldp_run_state_machine(sd_lldp *ll);
 
 static int lldp_receive_frame(sd_lldp *lldp, tlv_packet *tlv) {
         int r;
@@ -113,18 +98,15 @@ static int lldp_receive_frame(sd_lldp *lldp, tlv_packet *tlv) {
         assert(tlv);
 
         /* Remove expired packets */
-        if (prioq_size(lldp->by_expiry) > 0) {
-
-                lldp_set_state(lldp, LLDP_AGENT_RX_DELETE_INFO);
-
+        if (prioq_size(lldp->by_expiry) > 0)
                 lldp_mib_delete_objects(lldp);
-        }
 
         r = lldp_mib_add_objects(lldp->by_expiry, lldp->neighbour_mib, tlv);
         if (r < 0)
                 goto out;
 
-        lldp_set_state(lldp, LLDP_AGENT_RX_UPDATE_INFO);
+        if (lldp->cb)
+                lldp->cb(lldp, SD_LLDP_EVENT_UPDATE_INFO, lldp->userdata);
 
         log_lldp("Packet added. MIB size: %d , PQ size: %d",
                  hashmap_size(lldp->neighbour_mib),
@@ -136,8 +118,6 @@ static int lldp_receive_frame(sd_lldp *lldp, tlv_packet *tlv) {
         if (r < 0)
                 log_lldp("Receive frame failed: %s", strerror(-r));
 
-        lldp_set_state(lldp, LLDP_AGENT_RX_WAIT_FOR_FRAME);
-
         return 0;
 }
 
@@ -162,8 +142,6 @@ int lldp_handle_packet(tlv_packet *tlv, uint16_t length) {
                 goto out;
         }
 
-        lldp_set_state(lldp, LLDP_AGENT_RX_RX_FRAME);
-
         p = tlv->pdu;
         p += sizeof(struct ether_header);
 
@@ -350,8 +328,6 @@ int lldp_handle_packet(tlv_packet *tlv, uint16_t length) {
         return lldp_receive_frame(lldp, tlv);
 
  out:
-        lldp_set_state(lldp, LLDP_AGENT_RX_WAIT_FOR_FRAME);
-
         if (malformed) {
                 lldp->statistics.stats_frames_discarded_total ++;
                 lldp->statistics.stats_frames_in_errors_total ++;
@@ -374,29 +350,6 @@ static int ttl_expiry_item_prioq_compare_func(const void *a, const void *b) {
         return 0;
 }
 
-static void lldp_set_state(sd_lldp *lldp, LLDPAgentRXState state) {
-
-        assert(lldp);
-        assert(state < _LLDP_AGENT_RX_STATE_MAX);
-
-        lldp->rx_state = state;
-
-        lldp_run_state_machine(lldp);
-}
-
-static void lldp_run_state_machine(sd_lldp *lldp) {
-        if (!lldp->cb)
-                return;
-
-        switch (lldp->rx_state) {
-        case LLDP_AGENT_RX_UPDATE_INFO:
-                lldp->cb(lldp, SD_LLDP_EVENT_UPDATE_INFO, lldp->userdata);
-                break;
-        default:
-                break;
-        }
-}
-
 /* 10.5.5.2.1 mibDeleteObjects ()
  * The mibDeleteObjects () procedure deletes all information in the LLDP remote
  * systems MIB associated with the MSAP identifier if an LLDPDU is received with
@@ -597,21 +550,15 @@ int sd_lldp_start(sd_lldp *lldp) {
 
         lldp->port->status = LLDP_PORT_STATUS_ENABLED;
 
-        lldp_set_state(lldp, LLDP_AGENT_RX_LLDP_INITIALIZE);
-
         r = lldp_port_start(lldp->port);
         if (r < 0) {
                 log_lldp("Failed to start Port : %s , %s",
                          lldp->port->ifname,
                          strerror(-r));
 
-                lldp_set_state(lldp, LLDP_AGENT_RX_WAIT_PORT_OPERATIONAL);
-
                 return r;
         }
 
-        lldp_set_state(lldp, LLDP_AGENT_RX_WAIT_FOR_FRAME);
-
         return 0;
 }
 
@@ -715,8 +662,6 @@ int sd_lldp_new(int ifindex,
         if (r < 0)
                 return r;
 
-        lldp->rx_state = LLDP_AGENT_RX_WAIT_PORT_OPERATIONAL;
-
         *ret = lldp;
         lldp = NULL;