[Toybox] Puzzle about ping implementation of toybox

Rob Landley rob at landley.net
Wed Feb 26 01:32:06 PST 2020


On 2/25/20 12:27 PM, Longjun Luo wrote:
> Hi guys:
> 
> Recently, I just got in touch with toybox. And I have some puzzles about ping
> implementation.
> 
> (1) toybox uses unprivileged ICMP sockets to avoid unnecessary root privilege. 
> However, it depends highly on kernel support. I can not use ping since my kernle
> is not linux and it does not support such usage.

I wrote it for (and tested it on) Linux.

> (2) toybox uses unprivileged ICMP but does not set socket with flag IP_HDRINCL.
> So, it is impossible to get ttl info when gets reply from aim host since we can
> not get ip header. Currently toybox will print "ttl = 0".
> I wonder if it is a balance of simple and feature.

Nobody had asked for it before,

IP_HDRINCL is a SOCK_RAW option, not a SOCK_DGRAM option. This ping is written
using the less-privileged interface (so it doesn't have to run as root), which
means we don't/can't create our own IP headers.

Is there a way to receive the IP headers without having to generate them on
output? A receive-only variant of IP_HDRINCL?

> I assume there are some reasons I do not find. So, i just send a patch to fix
> some trivial issues in ping.c. Hope someone can solve my puzzles.

I wrote enough to get it to do what I wanted and moved on. You want it to do
more. If you want to extend it, I'm interested.

Rob



More information about the Toybox mailing list