From e213ff047984930a84d8c21c1a781f958671413b Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Mon, 2 Apr 2012 17:20:04 +0200 Subject: [PATCH] Add the peer delay messages into the message layer. Signed-off-by: Richard Cochran --- msg.c | 23 +++++++++++++++++++++-- msg.h | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/msg.c b/msg.c index e7168b0..ce04fce 100644 --- a/msg.c +++ b/msg.c @@ -113,6 +113,16 @@ static char *msg_type_string(int type) return "unknown"; } +static void port_id_post_recv(struct PortIdentity *pid) +{ + pid->portNumber = ntohs(pid->portNumber); +} + +static void port_id_pre_send(struct PortIdentity *pid) +{ + pid->portNumber = htons(pid->portNumber); +} + static void timestamp_post_recv(struct ptp_message *m, struct Timestamp *ts) { uint32_t lsb = ntohl(ts->seconds_lsb); @@ -179,6 +189,8 @@ int msg_post_recv(struct ptp_message *m, int cnt) case PDELAY_RESP: if (cnt < sizeof(struct pdelay_resp_msg)) return -1; + timestamp_post_recv(m, &m->pdelay_resp.requestReceiptTimestamp); + port_id_post_recv(&m->pdelay_resp.requestingPortIdentity); break; case FOLLOW_UP: if (cnt < sizeof(struct follow_up_msg)) @@ -193,6 +205,8 @@ int msg_post_recv(struct ptp_message *m, int cnt) case PDELAY_RESP_FOLLOW_UP: if (cnt < sizeof(struct pdelay_resp_fup_msg)) return -1; + timestamp_post_recv(m, &m->pdelay_resp_fup.responseOriginTimestamp); + port_id_post_recv(&m->pdelay_resp_fup.requestingPortIdentity); break; case ANNOUNCE: if (cnt < sizeof(struct announce_msg)) @@ -231,8 +245,11 @@ int msg_pre_send(struct ptp_message *m) case DELAY_REQ: break; case PDELAY_REQ: + break; case PDELAY_RESP: - return -1; + timestamp_pre_send(&m->pdelay_resp.requestReceiptTimestamp); + port_id_pre_send(&m->pdelay_resp.requestingPortIdentity); + break; case FOLLOW_UP: timestamp_pre_send(&m->follow_up.preciseOriginTimestamp); break; @@ -242,7 +259,9 @@ int msg_pre_send(struct ptp_message *m) htons(m->delay_resp.requestingPortIdentity.portNumber); break; case PDELAY_RESP_FOLLOW_UP: - return -1; + timestamp_pre_send(&m->pdelay_resp_fup.responseOriginTimestamp); + port_id_pre_send(&m->pdelay_resp_fup.requestingPortIdentity); + break; case ANNOUNCE: announce_pre_send(&m->announce); break; diff --git a/msg.h b/msg.h index 86021d2..09bc9a4 100644 --- a/msg.h +++ b/msg.h @@ -154,6 +154,8 @@ struct ptp_message { * - follow_up preciseOriginTimestamp * - sync originTimestamp * - delay_req originTimestamp + * - pdelay_resp requestReceiptTimestamp + * - pdelay_resp_fup responseOriginTimestamp */ struct timestamp pdu; /**