No description
Find a file
2025-06-29 19:01:29 +03:00
.gitignore Initial commit 2023-03-06 20:31:23 +02:00
go.mod Add io_uring mode option 2025-06-29 18:46:54 +03:00
go.sum Add io_uring mode option 2025-06-29 18:46:54 +03:00
http.go Ensure client has been added before starting the streamServer 2024-07-18 00:46:29 +03:00
main.go Add io_uring mode option 2025-06-29 18:46:54 +03:00
Makefile Add Makefile 2025-06-29 19:01:29 +03:00
README.md Add Makefile 2025-06-29 19:01:29 +03:00
screenshot.png Initial commit 2023-03-06 20:31:23 +02:00
template.html Remove unnecessary clientID, fix imageSmoothing parameter reset 2024-07-17 19:09:18 +03:00

ColorPing

IPv6 Canvas example

How does it work?

Each IPv6 address in a /64 IPv6 subnet is associated to one pixel with color (RGB) information.
When an address is pinged, the corresponding pixel is changed on the canvas and displayed to all viewers via a webpage.

Setup

Run and assign a /64 IPv6 subnet to the created interface named canvas. The program needs to run as root or with the CAP_NET_ADMIN capability.

Access the webpage where the canvas is displayed at: http://localhost:9090/

Example

./ColorPing
ip addr add fdcf:8538:9ad5:3333::1/64 dev canvas
ip link set up canvas

Ping format

????:????:????:????:XXXX:YYYY:11RR:GGBB

Where:

  • ???? can be anything
  • XXXX must be the target X coordinate of the canvas, encoded as hexadecimal
  • YYYY must be the target Y coordinate of the canvas, encoded as hexadecimal
  • RR target "red" value (0255), encoded as hexadecimal
  • GG target "green" value (0255), encoded as hexadecimal
  • BB target "blue" value (0255), encoded as hexadecimal

Experimental io_uring option

For Linux kernel versions >= 5.1, an experimental option was added to use io_uring to improve performance. To use this option, add the -io-uring commandline flag.