Skip to content

Enable full IPv6 support across Pulse probes (ICMP, TCP, HTTP) #166

Description

@abishekve

Here’s a polished version of your description formatted as a GitHub issue:


Title: Enable full IPv6 support across Pulse probes (ICMP, TCP, HTTP)

Description:
Currently, Pulse only supports probing IPv4 hosts. This change enables admins to configure and monitor IPv6-only or dual-stack endpoints via YAML config.

Scope of Work:

  • YAML Schema: Update config.schema.json to validate IPv6 addresses (regex exists – confirm and test).

  • EF Core Entity: Endpoint.Host supports 253 chars, sufficient for IPv6; validate storage/indexing.

  • Probe Drivers:

    • ICMP probe: add IPv6 ping support.
    • TCP probe: allow IPv6 sockets (AF_INET6).
    • HTTP probe: ensure DNS resolution includes AAAA records.
  • Tests:

    • ICMP ping to IPv6-only test host.
    • TCP connect to IPv6 service.
    • HTTP GET via IPv6 address.
  • UI & Examples: Update YAML examples to include IPv6 targets.

  • Verify rollup and outage detection continue to work unchanged.

Acceptance Criteria:

  • Admin can add an IPv6 host in YAML config and Pulse successfully probes it.
  • Live board shows status for IPv6 endpoints like IPv4.
  • Error handling distinguishes "host unreachable (IPv6)" vs "host unreachable (IPv4)".
  • Semaphores / batching logic work for IPv6 endpoints.
  • Automated tests cover ICMP, TCP, and HTTP over IPv6.
  • CIDR safety: IPv6 CIDR expansion blocked by default for prefixes < /120.
  • Logs provide clear messages: “IPv6 probe attempt failed — OS fell back to IPv4”.

Developer Notes:

Tests Added / Updated:

  • ConfigurationValidationTests [updated]
  • ProbeService tests [added]

Discussions:

  • IPv4 | IPv6 | Dual option for HTTP ping handled by DNS provider.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions