Commit d53b4b35 authored by Jean-Claude BAU's avatar Jean-Claude BAU

Bug fixes on packed and unpacked messages

- The ntohx() is now used to unpack messages and htohx() to pack them.
Most of the time only htohx() was used for paking and unpacking
messages.
- Code optimization
parent c9a5cfc9
......@@ -145,7 +145,7 @@ typedef struct MsgHeader {
/* Announce Message (table 25, page 129) */
typedef struct MsgAnnounce {
Timestamp originTimestamp;
struct pp_time originTimestamp;
Integer16 currentUtcOffset;
UInteger8 grandmasterPriority1;
ClockQuality grandmasterClockQuality;
......
......@@ -258,7 +258,7 @@ static int wr_pack_announce(struct pp_instance *ppi)
static void wr_unpack_announce(void *buf, MsgAnnounce *ann)
{
int msg_len = htons(*(UInteger16 *) (buf + 2));
int msg_len = ntohs(*(UInteger16 *) (buf + 2));
pp_diag(NULL, ext, 2, "hook: %s\n", __func__);
if (msg_len >= WR_ANNOUNCE_LENGTH)
......
......@@ -91,14 +91,14 @@ void msg_unpack_announce_wr_tlv(void *buf, MsgAnnounce *ann)
UInteger16 tlv_wrMessageID;
tlv_type = (UInteger16)get_be16(buf+64);
tlv_organizationID = htons(*(UInteger16 *)(buf+68)) << 8;
tlv_organizationID = htons(*(UInteger16 *)(buf+70)) >> 8
tlv_organizationID = ntohs(*(UInteger16 *)(buf+68)) << 8;
tlv_organizationID = ntohs(*(UInteger16 *)(buf+70)) >> 8
| tlv_organizationID;
tlv_magicNumber = 0xFF00 & (htons(*(UInteger16 *)(buf+70)) << 8);
tlv_magicNumber = htons(*(UInteger16 *)(buf+72)) >> 8
tlv_magicNumber = 0xFF00 & (ntohs(*(UInteger16 *)(buf+70)) << 8);
tlv_magicNumber = ntohs(*(UInteger16 *)(buf+72)) >> 8
| tlv_magicNumber;
tlv_versionNumber = 0xFF & htons(*(UInteger16 *)(buf+72));
tlv_wrMessageID = htons(*(UInteger16 *)(buf+74));
tlv_versionNumber = 0xFF & ntohs(*(UInteger16 *)(buf+72));
tlv_wrMessageID = ntohs(*(UInteger16 *)(buf+74));
if (tlv_type == TLV_TYPE_ORG_EXTENSION &&
tlv_organizationID == WR_TLV_ORGANIZATION_ID &&
......@@ -220,13 +220,13 @@ void msg_unpack_wrsig(struct pp_instance *ppi, void *buf,
wrsig_msg->targetPortIdentity.portNumber = (UInteger16)get_be16(buf+42);
tlv_type = (UInteger16)get_be16(buf + 44);
tlv_organizationID = htons(*(UInteger16 *)(buf + 48)) << 8;
tlv_organizationID = htons(*(UInteger16 *)(buf + 50)) >> 8
tlv_organizationID = ntohs(*(UInteger16 *)(buf + 48)) << 8;
tlv_organizationID = ntohs(*(UInteger16 *)(buf + 50)) >> 8
| tlv_organizationID;
tlv_magicNumber = 0xFF00 & (htons(*(UInteger16 *)(buf + 50)) << 8);
tlv_magicNumber = htons(*(UInteger16 *)(buf + 52)) >> 8
tlv_magicNumber = 0xFF00 & (ntohs(*(UInteger16 *)(buf + 50)) << 8);
tlv_magicNumber = ntohs(*(UInteger16 *)(buf + 52)) >> 8
| tlv_magicNumber;
tlv_versionNumber = 0xFF & htons(*(UInteger16 *)(buf + 52));
tlv_versionNumber = 0xFF & ntohs(*(UInteger16 *)(buf + 52));
if (tlv_type != TLV_TYPE_ORG_EXTENSION) {
pp_diag(ppi, frames, 1, "handle Signaling msg, failed, This is not "
......@@ -252,7 +252,7 @@ void msg_unpack_wrsig(struct pp_instance *ppi, void *buf,
return;
}
wr_msg_id = htons(*(UInteger16 *)(buf + 54));
wr_msg_id = ntohs(*(UInteger16 *)(buf + 54));
if (pwr_msg_id) {
*pwr_msg_id = wr_msg_id;
......
This diff is collapsed.
......@@ -303,6 +303,10 @@ static int wrs_net_recv(struct pp_instance *ppi, void *pkt, int len,
struct pp_channel *ch1, *ch2;
struct ethhdr *hdr = pkt;
int ret = -1;
char prefix[32];
if (pp_diag_allow(ppi, frames, 2) || pp_diag_allow(ppi, time, 1) )
sprintf(prefix,"recv-%s: ",(ppi ? ppi->port_name: "ppsi"));
switch(ppi->proto) {
case PPSI_PROTO_RAW:
......@@ -315,8 +319,8 @@ static int wrs_net_recv(struct pp_instance *ppi, void *pkt, int len,
memcpy(ppi->peer, hdr->h_source, ETH_ALEN);
if (pp_diag_allow(ppi, frames, 2)) {
if (ppi->proto == PPSI_PROTO_VLAN)
pp_printf("recv: VLAN %i\n", ppi->peer_vid);
dump_1588pkt("recv: ", pkt, ret, t, -1);
pp_printf("%sVLAN %i\n",prefix, ppi->peer_vid);
dump_1588pkt(prefix, pkt, ret, t, -1);
}
break;
......@@ -332,7 +336,7 @@ static int wrs_net_recv(struct pp_instance *ppi, void *pkt, int len,
if (ret < 0)
break;
if (pp_diag_allow(ppi, frames, 2))
dump_payloadpkt("recv: ", pkt, ret, t);
dump_payloadpkt(prefix, pkt, ret, t);
break;
default:
......@@ -341,7 +345,7 @@ static int wrs_net_recv(struct pp_instance *ppi, void *pkt, int len,
if (ret < 0)
return ret;
pp_diag(ppi, time, 1, "recv stamp: %s\n", fmt_time(t));
pp_diag(ppi, time, 1, "%sstamp: %s\n", prefix, fmt_time(t));
return ret;
}
......@@ -471,6 +475,7 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,enum pp_msg_
};
struct wrs_socket *s;
int ret, fd, drop;
char prefix[32];
s = (struct wrs_socket *)ppi->ch[PP_NP_GEN].arch_data;
......@@ -480,6 +485,8 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,enum pp_msg_
* hardware stamp. Thus, remember if we drop, and use this info.
*/
drop = ppsi_drop_tx();
if (pp_diag_allow(ppi, frames, 2))
sprintf(prefix,"send-%s: ",(ppi ? ppi->port_name: "ppsi"));
switch (ppi->proto) {
case PPSI_PROTO_RAW:
......@@ -507,7 +514,7 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,enum pp_msg_
break;
if (pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", pkt, len, t, -1);
dump_1588pkt(prefix, pkt, len, t, -1);
pp_diag(ppi, time, 1, "send stamp: %s\n", fmt_time(t));
return ret;
......@@ -540,7 +547,7 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,enum pp_msg_
break;
if (pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", pkt, len, t, ppi->peer_vid);
dump_1588pkt(prefix, pkt, len, t, ppi->peer_vid);
pp_diag(ppi, time, 1, "send stamp: %s\n", fmt_time(t));
return ret;
......@@ -564,7 +571,7 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,enum pp_msg_
break;
if (pp_diag_allow(ppi, frames, 2))
dump_payloadpkt("send: ", pkt, len, t);
dump_payloadpkt(prefix, pkt, len, t);
pp_diag(ppi, time, 1, "send stamp: %s\n", fmt_time(t));
return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment