From a061256bbda768e73d96b6c178d7da1e3f10ad15 Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Fri, 23 Feb 2018 23:20:26 -0800 Subject: [PATCH] msg: Use the TLV list on transmit. Now that the list is in place and is used on all transmit paths, simply iterate through the list when converting to network byte order. Signed-off-by: Richard Cochran --- msg.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/msg.c b/msg.c index 9434d42..348b7b5 100644 --- a/msg.c +++ b/msg.c @@ -221,18 +221,14 @@ static int suffix_post_recv(struct ptp_message *msg, uint8_t *ptr, int len) return 0; } -static void suffix_pre_send(uint8_t *ptr, int cnt, struct tlv_extra *last) +static void suffix_pre_send(struct ptp_message *msg) { - int i; + struct tlv_extra *extra; struct TLV *tlv; - if (!ptr) - return; - - for (i = 0; i < cnt; i++) { - tlv = (struct TLV *) ptr; - tlv_pre_send(tlv, i == cnt - 1 ? last : NULL); - ptr += sizeof(struct TLV) + tlv->length; + TAILQ_FOREACH(extra, &msg->tlv_list, list) { + tlv = extra->tlv; + tlv_pre_send(tlv, extra); tlv->type = htons(tlv->type); tlv->length = htons(tlv->length); } @@ -406,7 +402,6 @@ int msg_post_recv(struct ptp_message *m, int cnt) int msg_pre_send(struct ptp_message *m) { int type; - uint8_t *suffix = NULL; if (hdr_pre_send(&m->header)) return -1; @@ -426,34 +421,28 @@ int msg_pre_send(struct ptp_message *m) break; case FOLLOW_UP: timestamp_pre_send(&m->follow_up.preciseOriginTimestamp); - suffix = m->follow_up.suffix; break; case DELAY_RESP: timestamp_pre_send(&m->delay_resp.receiveTimestamp); m->delay_resp.requestingPortIdentity.portNumber = htons(m->delay_resp.requestingPortIdentity.portNumber); - suffix = m->delay_resp.suffix; break; case PDELAY_RESP_FOLLOW_UP: timestamp_pre_send(&m->pdelay_resp_fup.responseOriginTimestamp); port_id_pre_send(&m->pdelay_resp_fup.requestingPortIdentity); - suffix = m->pdelay_resp_fup.suffix; break; case ANNOUNCE: announce_pre_send(&m->announce); - suffix = m->announce.suffix; break; case SIGNALING: - suffix = m->signaling.suffix; break; case MANAGEMENT: port_id_pre_send(&m->management.targetPortIdentity); - suffix = m->management.suffix; break; default: return -1; } - suffix_pre_send(suffix, m->tlv_count, m->last_tlv); + suffix_pre_send(m); return 0; }