diff --git a/pmc.c b/pmc.c index a5633b5..eebb92d 100644 --- a/pmc.c +++ b/pmc.c @@ -101,7 +101,7 @@ struct management_id idtab[] = { { "ACCEPTABLE_MASTER_TABLE_ENABLED", ACCEPTABLE_MASTER_TABLE_ENABLED, not_supported }, { "ALTERNATE_MASTER", ALTERNATE_MASTER, not_supported }, { "TRANSPARENT_CLOCK_PORT_DATA_SET", TRANSPARENT_CLOCK_PORT_DATA_SET, not_supported }, - { "DELAY_MECHANISM", DELAY_MECHANISM, not_supported }, + { "DELAY_MECHANISM", DELAY_MECHANISM, do_get_action }, { "LOG_MIN_PDELAY_REQ_INTERVAL", LOG_MIN_PDELAY_REQ_INTERVAL, not_supported }, }; @@ -415,6 +415,11 @@ static void pmc_show(struct ptp_message *msg, FILE *fp) fprintf(fp, "VERSION_NUMBER " IFMT "versionNumber %hhu", mtd->val); break; + case DELAY_MECHANISM: + mtd = (struct management_tlv_datum *) mgt->data; + fprintf(fp, "DELAY_MECHANISM " + IFMT "delayMechanism %hhu", mtd->val); + break; } out: fprintf(fp, "\n"); diff --git a/port.c b/port.c index f6b11db..7d1165a 100644 --- a/port.c +++ b/port.c @@ -582,6 +582,15 @@ static int port_management_get_response(struct port *target, datalen = sizeof(*mtd); respond = 1; break; + case DELAY_MECHANISM: + mtd = (struct management_tlv_datum *) tlv->data; + if (target->delayMechanism) + mtd->val = target->delayMechanism; + else + mtd->val = DM_E2E; + datalen = sizeof(*mtd); + respond = 1; + break; } if (respond) { if (datalen % 2) {