Commit ed7a1381 authored by Adam Wujek's avatar Adam Wujek 💬

tools/ptpdump: fix printing VLANs for UDP

Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent 94439c03
......@@ -20,7 +20,7 @@ static int bare_net_recv(struct pp_instance *ppi, void *pkt, int len,
ret = sys_recv(ppi->ch[PP_NP_GEN].fd, pkt, len, 0);
if (ret > 0 && pp_diag_allow(ppi, frames, 2))
dump_1588pkt("recv: ", pkt, ret, t);
dump_1588pkt("recv: ", pkt, ret, t, ppi->peer_vid);
return ret;
}
......@@ -48,7 +48,7 @@ static int bare_net_send(struct pp_instance *ppi, void *pkt, int len,
ret = sys_send(ppi->ch[PP_NP_GEN].fd, pkt, len, 0);
if (ret > 0 && pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", pkt, len, t);
dump_1588pkt("send: ", pkt, len, t, ppi->peer_vid);
return ret;
}
......
......@@ -149,7 +149,7 @@ static int unix_net_recv(struct pp_instance *ppi, void *pkt, int len,
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);
dump_1588pkt("recv: ", pkt, ret, t, -1);
}
return ret;
......@@ -223,7 +223,7 @@ static int unix_net_send(struct pp_instance *ppi, void *pkt, int len,
return ret;
}
if (pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", pkt, len, t);
dump_1588pkt("send: ", pkt, len, t, -1);
return ret;
case PPSI_PROTO_VLAN:
......@@ -246,7 +246,7 @@ static int unix_net_send(struct pp_instance *ppi, void *pkt, int len,
return ret;
}
if (pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", vhdr, len, t);
dump_1588pkt("send: ", vhdr, len, t, ppi->peer_vid);
case PPSI_PROTO_UDP:
addr.sin_family = AF_INET;
......
......@@ -295,7 +295,7 @@ static int wrs_net_recv(struct pp_instance *ppi, void *pkt, int len,
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);
dump_1588pkt("recv: ", pkt, ret, t, -1);
}
break;
......@@ -490,7 +490,7 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,
break;
if (pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", pkt, len, t);
dump_1588pkt("send: ", pkt, len, t, -1);
pp_diag(ppi, time, 1, "send stamp: (correct %i) %9li.%09li\n",
t->correct, (long)t->seconds,
(long)t->nanoseconds);
......@@ -525,7 +525,7 @@ static int wrs_net_send(struct pp_instance *ppi, void *pkt, int len,
break;
if (pp_diag_allow(ppi, frames, 2))
dump_1588pkt("send: ", pkt, len, t);
dump_1588pkt("send: ", pkt, len, t, ppi->peer_vid);
pp_diag(ppi, time, 1, "send stamp: (correct %i) %9li.%09li\n",
t->correct, (long)t->seconds,
(long)t->nanoseconds);
......
......@@ -10,6 +10,8 @@
#include "decent_types.h"
#include "ptpdump.h"
static int dump_vlan(char *prefix, int vlan);
static int dumpstruct(char *p1, char *p2, char *name, void *ptr, int size)
{
int ret, i;
......@@ -257,7 +259,8 @@ out:
}
/* This dumps a complete udp frame, starting from the eth header */
int dump_udppkt(char *prefix, void *buf, int len, struct TimeInternal *ti)
int dump_udppkt(char *prefix, void *buf, int len, struct TimeInternal *ti,
int vlan)
{
struct ethhdr *eth = buf;
struct iphdr *ip;
......@@ -267,6 +270,8 @@ int dump_udppkt(char *prefix, void *buf, int len, struct TimeInternal *ti)
if (ti)
dump_time(prefix, ti);
dump_vlan(prefix, vlan);
ip = buf + dump_eth(prefix, eth);
dump_ip(prefix, ip);
......@@ -289,22 +294,24 @@ int dump_payloadpkt(char *prefix, void *buf, int len, struct TimeInternal *ti)
}
/* This dumps everything, used for raw frames with headers and ptp payload */
int dump_1588pkt(char *prefix, void *buf, int len, struct TimeInternal *ti)
int dump_1588pkt(char *prefix, void *buf, int len, struct TimeInternal *ti,
int vlan)
{
struct ethhdr *eth = buf;
void *payload;
if (ti)
dump_time(prefix, ti);
dump_vlan(prefix, vlan);
payload = buf + dump_eth(prefix, eth);
dump_payload(prefix, payload, len - (payload - buf));
return 0;
}
int dump_vlan(char *prefix, int vlan)
static int dump_vlan(char *prefix, int vlan)
{
if (vlan != 0)
if (vlan >= 0)
printf("%sVLAN %i\n", prefix, vlan);
return 0;
......
......@@ -171,7 +171,7 @@ int main(int argc, char **argv)
proto = ntohs(eth->h_proto);
/* get the VLAN for incomming frames */
vlan = 0;
vlan = -1;
if (aux) {
/* already in the network order */
vlan = aux->tp_vlan_tci & 0xfff;
......@@ -202,16 +202,13 @@ int main(int argc, char **argv)
if (udpdest != 319 && udpdest != 320)
continue;
print_spaces(&ti);
ret = dump_udppkt("", buf, len, &ti);
ret = dump_udppkt("", buf, len, &ti, vlan);
break;
}
case ETH_P_1588:
print_spaces(&ti);
ret = dump_vlan("", vlan);
if (ret != 0)
break;
ret = dump_1588pkt("", buf, len, &ti);
ret = dump_1588pkt("", buf, len, &ti, vlan);
break;
default:
ret = -1;
......
......@@ -13,9 +13,10 @@
#define printf pp_printf
#endif
int dump_udppkt(char *prefix, void *buf, int len, struct TimeInternal *ti);
int dump_udppkt(char *prefix, void *buf, int len, struct TimeInternal *ti,
int vlan);
int dump_payloadpkt(char *prefix, void *buf, int len, struct TimeInternal *ti);
int dump_1588pkt(char *prefix, void *buf, int len, struct TimeInternal *ti);
int dump_vlan(char *prefix, int vlan);
int dump_1588pkt(char *prefix, void *buf, int len, struct TimeInternal *ti,
int vlan);
#endif /* __PTPDUMP_H__ */
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