aboutsummaryrefslogtreecommitdiff
path: root/eperd/traceroute.c
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2015-06-23 14:17:10 +0200
committerBjørn Mork <bjorn@mork.no>2015-06-23 14:17:10 +0200
commit8c746b3a2bfb67addbfa4d3d4b7c0dbc2e8ba985 (patch)
treea75585d0e66fc2b54d2fb2e38241eee7d248885b /eperd/traceroute.c
parent13762fce1926efb6b553bf20df256ccf6586f518 (diff)
ripe-atlas-fw: imported version 46804680
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Diffstat (limited to 'eperd/traceroute.c')
-rw-r--r--eperd/traceroute.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/eperd/traceroute.c b/eperd/traceroute.c
index 06f6ac1..fbeb025 100644
--- a/eperd/traceroute.c
+++ b/eperd/traceroute.c
@@ -1021,7 +1021,8 @@ static void send_pkt(struct trtstate *state)
icmp_hdr->icmp_type= ICMP_ECHO;
icmp_hdr->icmp_code= 0;
icmp_hdr->icmp_cksum= 0;
- icmp_hdr->icmp_id= htons(state->index);
+ icmp_hdr->icmp_id= htons(state->index |
+ (instance_id << TRT_ICMP4_INSTANCE_ID_SHIFT));
icmp_hdr->icmp_seq= htons(state->seq);
icmp_hdr->icmp_data[0]= '\0';
icmp_hdr->icmp_data[1]= '\0';
@@ -1857,6 +1858,12 @@ printf("curpacksize: %d\n", state->curpacksize);
}
ind= ntohs(eicmp->icmp_id);
+ if ((ind >> TRT_ICMP4_INSTANCE_ID_SHIFT) != instance_id)
+ {
+ printf("wrong instance id\n");
+ return;
+ }
+ ind &= ~TRT_ICMP4_INSTANCE_ID_MASK;
if (ind >= base->tabsiz)
{
@@ -2134,6 +2141,12 @@ printf("%s, %d: sin6_family = %d\n", __FILE__, __LINE__, state->sin6.sin6_family
}
ind= ntohs(icmp->icmp_id);
+ if ((ind >> TRT_ICMP4_INSTANCE_ID_SHIFT) != instance_id)
+ {
+ printf("wrong instance id\n");
+ return;
+ }
+ ind &= ~TRT_ICMP4_INSTANCE_ID_MASK;
if (ind >= base->tabsiz)
{