1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

29 Commits

Author SHA1 Message Date
Benjamin Valentin
3b40ca2b26 shell/gnrc_icmpv6_echo: test for ICMPv6 echo reply corruption
The Linux ping utility has the nice feature that fills the ICMPv6 echo
request payload with a pattern `payload_index & 0xFF`.
Then the ICMPv6 echo response payload is checked to verify that the pattern
is still intact.

This way corrupted messages can be detected.
In the past that revealed some 6lo-fragmentation bugs in Linux when
corrupted replies arrived.

This feature is also useful for RIOT, so implement it in RIOTs `ping`
command.
2021-08-11 12:04:22 +02:00
Benjamin Valentin
657be1c488 sys/shell/commands: gnrc_icmpv6_echo: use netutils_get_ipv6() 2021-07-20 22:44:40 +02:00
017d33825f sys/shell/commands: gnrc_icmpv6_echo: use msg_avail() 2021-07-05 10:35:40 +02:00
Marian Buschsieweke
b50964f6fc
sys/net/gnrc: fix in-band signaling of no RSSI
Previously a value of 0 was used for the RSSI to signal that this value is not
present in `gnrc_netif_hdr_t`. However, an RSSI of 0 dBm is legal and even very
plausible data.

This commit defines `GNRC_NETIF_HDR_NO_RSSI` as `INT16_MIN`, which is below the
noise floor in the vacuum of outer space and hence impossible to receive.
For consistency, also GNRC_NETIF_HDR_NO_LQI is defined.
2021-01-13 08:53:33 +01:00
c1874c8d89 all: add missing limits.h includes
Removal of kernel_types.h make these necessary.
2020-11-25 17:52:34 +01:00
0b801c4de0 all: adapt to moved sched defines 2020-11-23 16:56:34 +01:00
Martine Lenders
45144fb4a4
treewide: use new gnrc_pkt API functions instead of utlist.h macros 2020-10-13 13:32:53 +02:00
Marian Buschsieweke
5a04f48238
sys/shell/commands/gnrc_icmpv6_echo: Fix alignment
Fix unaligned memory access in `ping6` shell command
2020-09-25 12:42:02 +02:00
Marian Buschsieweke
3b6fa61829
sys: Cleanup access to internal variables
Replace direct accesses to sched_active_thread and sched_active_pid with
the helper functions thread_getpid() and thread_get_active(). This serves
two purposes:

1. It makes accidental writes to those variable from outside core less likely.
2. Casting off the volatile qualifier is now well contained to those two
   functions
2020-08-24 20:28:11 +02:00
Chamaeleon-
547d3a0620
sys/shell/commands: fixing typo in ping6 help
reponse -> response in -W <ms timeout>
2020-06-24 12:49:05 +02:00
Benjamin Valentin
e1ce24abec shell/gnrc_icmpv6_echo: replace incorrect use of gnrc_netif_highlander()
We want to check if there *is* only one interface, not if there *can*
be no more than one interface here.
2020-03-27 15:07:38 +01:00
Jose Alamos
e451570219 gnrc_netif: remove GNRC_NETIF_NUMOF macro 2020-03-26 11:12:23 +01:00
Jose Alamos
6ace7b5472 gnrc_netif: use gnrc_netif_single where possible 2020-03-17 10:54:30 +01:00
Benjamin Valentin
fa4447241f sock_dns: make sock_dns_query() return the length of the address
The implementation already did that, now also reflect this in the
documentation.
2020-02-24 14:29:17 +01:00
Benjamin Valentin
367f19d390 shell/gnrc_icmpv6_echo: don't do DNS lookup for plain IP
When using ping6 with an IP address, don't do a DNS lookup.
Hostnames can't contain ':', so use that to tell them apart
from plain IP addressees.
2020-02-24 14:21:54 +01:00
Benjamin Valentin
a65daf7a31 shell/gnrc_icmpv6_echo: set success state if DNS query succeeded
We need to set `res` to 0 to signal success, otherwise we end up
in the print usage case.
2020-02-24 14:21:54 +01:00
Benjamin Valentin
f5a5c5dd2c shell/gnrc_icmpv6_echo: fix build with USEMODULE += sock_dns
To be able to call sock_dns_query() in _configure(), we also
need to include the header file.
2020-02-21 23:56:33 +01:00
Benjamin Valentin
d572db83e1 shell/gnrc_icmpv6_echo: print interface id in reply
If there is more than one interface, print the id of the receiving
interface for convenience.

```
ping6 ff02::1
2020-02-20 18:19:38,644 # 12 bytes from fe80::d0ae:c1b:2054:58e%7: icmp_seq=0 ttl=64 rssi=-45 dBm time=4.801 ms
2020-02-20 18:19:38,652 # 12 bytes from fe80::d0ae:c1b:2054:58c%8: icmp_seq=0 ttl=64 rssi=-63 dBm time=13.422 ms (DUP!)
2020-02-20 18:19:38,661 # 12 bytes from fe80::c78:16d9:8aca:ba9a%8: icmp_seq=0 ttl=64 rssi=-44 dBm time=21.819 ms (DUP!)
2020-02-20 18:19:39,648 # 12 bytes from fe80::d0ae:c1b:2054:58e%7: icmp_seq=1 ttl=64 rssi=-44 dBm time=4.797 ms
2020-02-20 18:19:39,657 # 12 bytes from fe80::d0ae:c1b:2054:58c%8: icmp_seq=1 ttl=64 rssi=-61 dBm time=12.917 ms (DUP!)
2020-02-20 18:19:39,666 # 12 bytes from fe80::c78:16d9:8aca:ba9a%8: icmp_seq=1 ttl=64 rssi=-43 dBm time=21.679 ms (DUP!)
2020-02-20 18:19:40,657 # 12 bytes from fe80::d0ae:c1b:2054:58e%7: icmp_seq=2 ttl=64 rssi=-41 dBm time=4.795 ms
```
2020-02-21 13:59:52 +01:00
Leandro Lanzieri
edae993f63 shell/gnrc_icmpv6_echo: Adapt to change in ipv6_addr_split_iface 2019-11-15 14:02:50 +01:00
Martine Lenders
0c24bfcd0d shell_commands: fix ping6 response check for multicast 2019-09-10 21:50:23 +02:00
Francisco Molina
5e1558ba57 shell/commands: fix, only accept proper pong response 2019-09-03 09:07:29 +02:00
Francisco
56a6e5d53e
Merge pull request #11933 from miri64/shell/fix/check-sender
shell_commands: check ICMPv6 echo reply sender
2019-08-09 16:27:39 +02:00
Martine Lenders
1c7d4572a7 shell_commands/ping6: mix-in current time into ID
This prevents two fast executions of `ping6` behind each other to
confuse their respective responses.
2019-07-31 09:49:17 +02:00
Martine S. Lenders
4a723fe4fd shell_commands: check ICMPv6 echo reply sender
Fixes #11519 by checking the source address when an echo reply is
received by the `ping6` command.
2019-07-30 12:47:23 +02:00
Martine Lenders
d1abb29665 sc_gnrc_icmpv6_echo: check for correct ipv6_addr_split_iface() error 2019-07-26 16:48:28 +02:00
Martine S. Lenders
36e9d232a6 shell_commands/gnrc_icmpv6_echo: use gnrc_netif_hdr_set_netif() 2019-07-25 15:32:21 +02:00
Martine S. Lenders
6ad3c8d223 shell_commands/gnrc_icmpv6_echo: use netif pointer
... instead of numeric network interface identifier
2019-07-25 15:32:02 +02:00
Benjamin Valentin
d89dd0d9e9 shell_commands: include RSSI in ping output
I was looking for a quick way to gauge the link quality between two nodes,
so I added the rssi to the output of the ping6 command.

Maybe this is generally useful to have.
2019-03-06 10:58:09 +01:00
Martine Lenders
45ec766871 shell_commands: adapt ping6 to original-ping-like implementation
Loosely based on [the original ping] and [netutil]'s ping

New features (compared to old RIOT version):
 - non-positional parameters
 - Better duplicate detection (addresses #9387)
 - Better asynchronous behavior
 - Potential for future move to `sock_ip`
 - (Optional) DNS-support
 - Multithreading-safe (in case shell-command handler gets called
   from multiple threads)

[the original ping]: http://ftp.arl.army.mil/~mike/ping.html
[netutil]: https://www.gnu.org/software/inetutils/
2019-02-04 12:42:49 +01:00