Hi
Why initialize the local variable datalen to zero at start? Start value is not 
used.

/Anders

-----Ursprungligt meddelande-----
Från: Richard Cochran [mailto:richardcoch...@gmail.com] 
Skickat: den 1 mars 2018 20:21
Till: linuxptp-devel@lists.sourceforge.net
Ämne: [Linuxptp-devel] [PATCH RFC 04/10] port: Simplify management response 
logic.

The code uses a local variable for program flow control in a silly way.
This patch simplifies the logic by using the common switch/case/default pattern 
instead.

Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 port.c | 35 ++++++++++++++---------------------
 1 file changed, 14 insertions(+), 21 deletions(-)

diff --git a/port.c b/port.c
index 76af2ae..263638c 100644
--- a/port.c
+++ b/port.c
@@ -703,7 +703,6 @@ static const Octet profile_id_p2p[] = {0x00, 0x1B, 0x19, 
0x00, 0x02, 0x00};  static int port_management_fill_response(struct port 
*target,
                                         struct ptp_message *rsp, int id)
 {
-       int datalen = 0, respond = 0;
        struct mgmt_clock_description *cd;
        struct management_tlv_datum *mtd;
        struct clock_description *desc;
@@ -711,6 +710,7 @@ static int port_management_fill_response(struct port 
*target,
        struct management_tlv *tlv;
        struct port_ds_np *pdsnp;
        struct portDS *pds;
+       int datalen = 0;
        uint8_t *buf;
        uint16_t u16;
 
@@ -721,7 +721,6 @@ static int port_management_fill_response(struct port 
*target,
        switch (id) {
        case TLV_NULL_MANAGEMENT:
                datalen = 0;
-               respond = 1;
                break;
        case TLV_CLOCK_DESCRIPTION:
                cd = &rsp->last_tlv.cd;
@@ -782,7 +781,6 @@ static int port_management_fill_response(struct port 
*target,
                }
                buf += PROFILE_ID_LEN;
                datalen = buf - tlv->data;
-               respond = 1;
                break;
        case TLV_PORT_DATA_SET:
                pds = (struct portDS *) tlv->data;
@@ -805,31 +803,26 @@ static int port_management_fill_response(struct port 
*target,
                pds->logMinPdelayReqInterval = target->logMinPdelayReqInterval;
                pds->versionNumber           = target->versionNumber;
                datalen = sizeof(*pds);
-               respond = 1;
                break;
        case TLV_LOG_ANNOUNCE_INTERVAL:
                mtd = (struct management_tlv_datum *) tlv->data;
                mtd->val = target->logAnnounceInterval;
                datalen = sizeof(*mtd);
-               respond = 1;
                break;
        case TLV_ANNOUNCE_RECEIPT_TIMEOUT:
                mtd = (struct management_tlv_datum *) tlv->data;
                mtd->val = target->announceReceiptTimeout;
                datalen = sizeof(*mtd);
-               respond = 1;
                break;
        case TLV_LOG_SYNC_INTERVAL:
                mtd = (struct management_tlv_datum *) tlv->data;
                mtd->val = target->logSyncInterval;
                datalen = sizeof(*mtd);
-               respond = 1;
                break;
        case TLV_VERSION_NUMBER:
                mtd = (struct management_tlv_datum *) tlv->data;
                mtd->val = target->versionNumber;
                datalen = sizeof(*mtd);
-               respond = 1;
                break;
        case TLV_DELAY_MECHANISM:
                mtd = (struct management_tlv_datum *) tlv->data; @@ -838,20 
+831,17 @@ static int port_management_fill_response(struct port *target,
                else
                        mtd->val = DM_E2E;
                datalen = sizeof(*mtd);
-               respond = 1;
                break;
        case TLV_LOG_MIN_PDELAY_REQ_INTERVAL:
                mtd = (struct management_tlv_datum *) tlv->data;
                mtd->val = target->logMinPdelayReqInterval;
                datalen = sizeof(*mtd);
-               respond = 1;
                break;
        case TLV_PORT_DATA_SET_NP:
                pdsnp = (struct port_ds_np *) tlv->data;
                pdsnp->neighborPropDelayThresh = 
target->neighborPropDelayThresh;
                pdsnp->asCapable = target->asCapable;
                datalen = sizeof(*pdsnp);
-               respond = 1;
                break;
        case TLV_PORT_PROPERTIES_NP:
                ppn = (struct port_properties_np *)tlv->data; @@ -863,19 
+853,22 @@ static int port_management_fill_response(struct port *target,
                ppn->timestamping = target->timestamping;
                ptp_text_set(&ppn->interface, target->iface->ts_label);
                datalen = sizeof(*ppn) + ppn->interface.length;
-               respond = 1;
                break;
+       default:
+               /* The caller should *not* respond to this message. */
+               return 0;
        }
-       if (respond) {
-               if (datalen % 2) {
-                       tlv->data[datalen] = 0;
-                       datalen++;
-               }
-               tlv->length = sizeof(tlv->id) + datalen;
-               rsp->header.messageLength += sizeof(*tlv) + datalen;
-               rsp->tlv_count = 1;
+
+       if (datalen % 2) {
+               tlv->data[datalen] = 0;
+               datalen++;
        }
-       return respond;
+       tlv->length = sizeof(tlv->id) + datalen;
+       rsp->header.messageLength += sizeof(*tlv) + datalen;
+       rsp->tlv_count = 1;
+
+       /* The caller can respond to this message. */
+       return 1;
 }
 
 static int port_management_get_response(struct port *target,
--
2.11.0


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to