Comments (5)
I believe this may have been fixed by #45, can you update to the latest commit of go-ping and try again?
from ping.
I think there are still issues with the size option.
When I set p.Size = 256
, tcpdump says the packet length is 394.
When I set p.Size = 321
, tcpdump says the packet length is 478.
When I set p.Size = 322
, tcpdump says the packet length is 482, and panics my prober.
panic: runtime error: slice bounds out of range
goroutine 39 [running]:
github.com/superq/smokeping_prober/ping.(*Pinger).processPacket(0xc000159110, 0xc0001609c0, 0x4, 0x3)
/home/ben/go/src/github.com/superq/smokeping_prober/ping/ping.go:435 +0x6be
github.com/superq/smokeping_prober/ping.(*Pinger).run(0xc000159110)
/home/ben/go/src/github.com/superq/smokeping_prober/ping/ping.go:321 +0x4e1
github.com/superq/smokeping_prober/ping.(*Pinger).Run(0xc000159110)
/home/ben/go/src/github.com/superq/smokeping_prober/ping/ping.go:270 +0x2b
created by main.main
/home/ben/go/src/github.com/superq/smokeping_prober/main.go:95 +0xf09
from ping.
I'm going to hazard a guess that this has something to do with the code still referencing timeSliceLength, which is used as a constant to initialize the size of the packet sent. This constant likely needs to be removed and the logic around it changed.
https://github.com/sparrc/go-ping/blob/ef3ab45e41b017889941ea5bb796dd502d2b5a1b/ping.go#L514
from ping.
Yea, that bit didn't look right to me at all, but I didn't have time to poke around.
from ping.
Using the latest commit on master
and with sudo tcpdump icmp
running in another terminal tab:
pinger.Size = 256
logs an ICMP echo request packet with length 264.pinger.Size = 321
logs an ICMP echo request packet with length 329.pinger.Size = 322
logs an ICMP echo request packet with length 330.pinger.Size = 1472
logs an ICMP echo request packet with length 1480.
ICMP packets have an 8-byte header so this all seams correct to me.
If you set a (IMHO silly) packet size pinger.Size = 60000
(or indeed anything above 1472 in most instances) then the ICMP datagram gets fragmented across multiple IP packets at the network MTU. I don't really think we can expect things to behave reliably is such circumstances so if the user sets Size > MTU then they get to keep both pieces.
from ping.
Related Issues (20)
- ping result is always same for different addresses HOT 2
- Event for detecting when a ping request times out HOT 1
- Pings not being returned after a certain number of IP addresses HOT 1
- Randomly running into issue while continously pinging 1.1.1.1 HOT 2
- logger.Fatal() causes entire app to exit HOT 5
- If the host is down ping blocks until the timeout is reached
- bind: cannot assign requested address HOT 2
- cannot find package HOT 2
- ping multiple hosts HOT 1
- 有时候莫名其妙的卡住 HOT 2
- In "mac", the call "pinger.Run()" struck for ever
- How to get network interface used to make the ping? HOT 3
- Some packet loss causes ping to hang forever HOT 3
- Is this project abandoned? HOT 3
- not support ipv6? HOT 1
- Decrease the number of digits after the decimal point HOT 1
- connection times out HOT 1
- What does it mean to ping over "udp"? HOT 1
- Mahsa1382
- Mahsa
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ping.