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