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