Add missing managements TLVs to pmc_tlv_datalen. Ensure alignment to 16 bits.
Signed-off-by: Erez Geva <erez.geva....@siemens.com> --- pmc_common.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/pmc_common.c b/pmc_common.c index 1141957..43ad22c 100644 --- a/pmc_common.c +++ b/pmc_common.c @@ -54,6 +54,25 @@ #define EMPTY_CLOCK_DESCRIPTION 22 /* Includes one extra byte to make length even. */ #define EMPTY_PTP_TEXT 2 +/* Field Len Type + * ------------------------------------------------------- + * portIdentity 10 UInteger16 + 8 * Octets + * port_state 1 uint8_t + * timestamping 1 uint8_t + * interface 1 PTPText + * extra 1 make length even + * ------------------------------------------------------- + * TOTAL 14 + */ +#define EMPTY_PORT_PROPERTIES_NP 14 +/* Field Len Type + * ------------------------------------------------------- + * actualTableSize 2 UInteger16 + * unicast_masters 0 Zero length array + * ------------------------------------------------------- + * TOTAL 2 + */ +#define EMPTY_UNICAST_MASTER_TABLE_NP 2 static void do_get_action(struct pmc *pmc, int action, int index, char *str); static void do_set_action(struct pmc *pmc, int action, int index, char *str); @@ -517,6 +536,7 @@ static int pmc_tlv_datalen(struct pmc *pmc, int id) case MID_TRACEABILITY_PROPERTIES: case MID_TIMESCALE_PROPERTIES: case MID_MASTER_ONLY: + case MID_SYNCHRONIZATION_UNCERTAIN_NP: len += sizeof(struct management_tlv_datum); break; case MID_TIME_STATUS_NP: @@ -525,6 +545,9 @@ static int pmc_tlv_datalen(struct pmc *pmc, int id) case MID_GRANDMASTER_SETTINGS_NP: len += sizeof(struct grandmaster_settings_np); break; + case MID_SUBSCRIBE_EVENTS_NP: + len += sizeof(struct subscribe_events_np); + break; case MID_NULL_MANAGEMENT: break; case MID_CLOCK_DESCRIPTION: @@ -536,6 +559,21 @@ static int pmc_tlv_datalen(struct pmc *pmc, int id) case MID_PORT_DATA_SET_NP: len += sizeof(struct port_ds_np); break; + case MID_PORT_PROPERTIES_NP: + len += EMPTY_PORT_PROPERTIES_NP; + break; + case MID_PORT_STATS_NP: + len += sizeof(struct port_stats_np); + break; + case MID_PORT_SERVICE_STATS_NP: + len += sizeof(struct port_service_stats_np); + break; + case MID_UNICAST_MASTER_TABLE_NP: + len += EMPTY_UNICAST_MASTER_TABLE_NP; + break; + case MID_PORT_HWCLOCK_NP: + len += sizeof(struct port_hwclock_np); + break; case MID_LOG_ANNOUNCE_INTERVAL: case MID_ANNOUNCE_RECEIPT_TIMEOUT: case MID_LOG_SYNC_INTERVAL: @@ -545,7 +583,7 @@ static int pmc_tlv_datalen(struct pmc *pmc, int id) len += sizeof(struct management_tlv_datum); break; } - return len; + return len + len % 2; } int pmc_get_transport_fd(struct pmc *pmc) -- 2.30.2 _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel