Skip to content

Releases: Netis/cloud-probe

Cloud-Probe v0.9.4

Choose a tag to compare

@timmy21 timmy21 released this 30 Jun 05:41

✨ New Features

cpworker: Live Config Reload

Reload configuration without restarting the process.

  • Triggered via the SIGHUP signal or the reload_config command over the unix socket
  • A dedicated reload thread communicates with the main thread through a mailbox protocol (START / REUSED / EXCHANGE / DESTROY / DONE)
  • Tasks match identity across reloads via a fingerprint field, so unchanged tasks are reused without interrupting capture
  • New reload integration tests (reload_test.go, reload_support_test.go) covering task reuse, destination switching, and rebuild scenarios

cpworker: Pipeline Execution Model

A new optional pipelined execution model, alongside the default RTC (run-to-completion) model.

  • New execution_model config option (rtc | pipeline, default rtc)
  • New pipeline.buffer_size_mb to configure the pipeline buffer size
  • Backed by an SPSC ring buffer (ring_buffer.c, with mempool)
  • Documentation updated in docs/USAGE-CPWORKER.md and the Chinese version

🐛 Bug Fixes

cpdaemon: cgroup CPU limit management

  • Removing a CPU limit on a running worker failed: previously rmdir-ing a running worker's cgroup returned EBUSY because the worker was still a member of the group. The handle is now split into Reset (clear the quota to unlimited — safe on a live worker) and Cleanup (rmdir only after the worker exits). Added SetV1CpuUnlimited / SetV2CpuUnlimited helpers and cgroup tests.
  • Auto-detect cgroup version: cpdaemon now automatically detects and adapts to the host's cgroup v1 / v2.

Full Changelog: v0.9.3...v0.9.4

Cloud-Probe v0.9.3

Choose a tag to compare

@timmy21 timmy21 released this 12 Jun 08:19

This release focuses on capture-latency correctness, supply-chain/security hardening, and reducing external runtime dependencies. It contains no breaking changes to configuration or on-the-wire output.

🐛 Bug Fixes

  • cpworker: Fixed multi-second packet delivery latency under TPACKET_V3. With timeout_ms=0, blocks were delivered only when full (seconds at low/bursty rates). Now enables immediate mode for rate-independent delivery; the timeout_ms>0 path is unchanged, and older libpcap (<1.5.0) stays compatible.

🔒 Security

  • Upgraded go-chi/chi to v5.3.0 and removed middleware.RealIP, fixing three IP-spoofing advisories (zero behavior change).
  • Fixed CVE-2025-22869 (#210).
  • Bumped golang.org/x/crypto, golang.org/x/net, and transitive deps for known CVEs.

✨ Improvements

  • New cripid tool replaces external crictl — resolves a container's host PID via CRI v1 gRPC directly, dropping a large CVE-prone dependency. PID chain is now dockerpid → cripid → custom script. CRI v1 only; Docker/dockershim nodes use dockerpid. Requires Go 1.26.
  • Migrated dockerpid from the archived docker/docker to moby/moby/client.

🔧 CI / Tooling

  • CI gate (C + Go) on 0.9.x, Dependabot, PR template, from-source static libzmq (#211).
  • repro-env provisioning script (#212).

Full Changelog: v0.9.2...v0.9.3

Cloud-Probe v0.9.2

Choose a tag to compare

@timmy21 timmy21 released this 03 Jun 09:16

⚠️ Breaking Changes

  • cpctl CLI restructured. The worker subcommand layer has been removed;
    ping, info, and stats are now top-level commands
    (e.g. cpctl worker statscpctl stats).
  • Flag renamed. --control / -s is now --unix / -u and takes a raw
    unix socket path. Update any scripts or automation that invoke cpctl.

✨ Features

  • ZMQ heartbeat packets. When no real traffic is flowing, cpworker now emits
    lightweight MPLS-encapsulated heartbeat packets so the ZMQ receiver (RecvZMQ)
    can keep advancing its merge watermark. Configurable via zmq.heartbeat_ms
    (default 1000, set to 0 to disable).
  • cpctl improvements. New ping and info control commands, and a new
    --timeout flag plumbed through RPC context deadlines.

🐛 Bug Fixes

  • GRE / VXLAN pmtudisc=0 now honored. Previously only values > 0 were
    applied, making it impossible to explicitly disable PMTU discovery
    (IP_PMTUDISC_DONT). A value of 0 is now passed through to setsockopt.
  • BPF filter now excludes output hosts across all tasks. When multiple tasks
    share a capture interface, each task's filter must exclude every output host
    from all tasks to avoid capturing forwarded traffic. Output hosts are now
    deduplicated so each appears only once.

🔒 Hardening

  • Build scripts no longer leak the SSH root password. run_ssh_root pipes
    the password through ssh stdin instead of interpolating it into the remote
    command string, so it no longer appears in ps on either end (also fixes
    breakage when the password contained a single quote).
  • unix-manager slow-reader protection. Client connections now use a 5s send
    timeout (SO_SNDTIMEO). A client that opens the socket and stops draining can
    no longer stall the single-threaded select loop serving other clients; the
    send returns EAGAIN and the stuck client is torn down.

🛠 Internal / Tooling

  • Added a justfile and scripts/routers/* to unify local / SSH / OrbStack
    build dispatch.
  • Expanded integration and Go / C / shell unit tests (including a
    zmq_heartbeat case); added the CPW_SKIP_ENV_LOCAL escape hatch.

Upgrade note

zmq.heartbeat_ms defaults to 1000ms, so ZMQ outputs will start emitting
heartbeat packets after upgrading. Set zmq.heartbeat_ms: 0 to preserve the
previous (no-heartbeat) behavior.

Full Changelog: v0.9.1...v0.9.2

Cloud-Probe v0.9.2-rc.1

Pre-release

Choose a tag to compare

@timmy21 timmy21 released this 24 Apr 01:56

This is an internal release candidate ahead of v0.9.2. The headline change is a cpctl CLI refactor plus hardening of the cpworker unix control
plane. Not intended for external use — please report issues before the final v0.9.2 cut.

⚠️ Breaking Changes (cpctl)

  • Removed worker subcommand layer. ping, info, and stats are now top-level commands.
    • Old: cpctl worker stats ...
    • New: cpctl stats ...
  • Renamed --control / -s flag to --unix / -u. It now takes a raw unix socket path (no scheme prefix).

✨ cpctl Improvements

  • New top-level commands: ping, info, stats — each with its own focused flag set.
  • --timeout is now plumbed through to context deadlines in the unix client, so hung calls actually abort.

🛡️ cpworker Hardening (unix-manager)

  • New unix_rpc_basic module split out from unix-manager for the basic RPC handlers.
  • Improved error handling and client lifecycle management on the unix control socket.

🧪 Tests & Tooling

  • Added Go unit tests for cpctl commands (ping, info, stats, base) and the cpgolib/cpworker unix client.
  • Added a C unit test for unix control (cpworker/tests/unit/unix_control.c).
  • Added shell unit tests under scripts/tests/.
  • New justfile + scripts/routers/ for local / ssh / orb build dispatch.
  • New .env.example; CPW_SKIP_ENV_LOCAL escape hatch for environments that shouldn't auto-load .env.local.

Full Changelog: v0.9.1...v0.9.2-rc.1

Cloud-Probe v0.9.1

Choose a tag to compare

@timmy21 timmy21 released this 09 Mar 06:11

Title: add packet_split for vxlan and NicChangeDetect

Highlights

  • Added VXLAN packet splitting support in cpworker.
  • Added NIC change detection in cpdaemon syncer flow, with automatic re-registration behavior.
  • Expanded unit and integration test coverage, including new VXLAN split scenarios.

Added

  • New packet split module:
    • cpworker/src/packet_split.c
    • cpworker/src/packet_split.h
  • New VXLAN split example config:
    • cpworker/examples/libpcap_vxlan_split.json
  • New integration test framework and cases under:
    • cpworker/tests/integration/
  • New unit tests for packet splitting:
    • cpworker/tests/unit/packet_split.c

Changed

  • output_vxlan now supports split options:
    • split.max_payload_size
    • split.recalculate_checksum
  • cpdaemon strategy/model/config pipeline now carries packet split fields:
    • hasPacketSplit
    • packetSplitBytes
    • recalculateChecksum
  • Added syncer config support for NIC change detection:
    • syncer.nic_change_detect_enable
    • periodic NIC scan + re-register trigger on change
  • Refactored test layout from cpworker/tests/ to clearer cpworker/tests/unit and cpworker/tests/integration.

Fixed / Improved

  • VXLAN output error handling improvements (including better error formatting and socket cleanup in error paths).
  • Packet parsing/splitting path includes IPv4/IPv6 + TCP/UDP handling and optional checksum recalculation support.
  • Added deeper debug visibility for synced strategy payloads in cpdaemon.

Validation

  • Added/updated test assets for:
    • file output
    • GRE output
    • VXLAN basic + VXLAN split (TCP/UDP)
    • ZMQ output

Cloud-Probe v0.9.0

Choose a tag to compare

@timmy21 timmy21 released this 29 Dec 09:15

Rewrote the entire codebase; components renamed to cpworker and cpdaemon.

v0.8.7: Merge pull request #197 from robbietu/master

Choose a tag to compare

@robbietu robbietu released this 12 Feb 02:07
4cf4066

add fix for "zombie process of sh"

add notes for timestamp notes

Choose a tag to compare

@robbietu robbietu released this 20 Dec 03:07
f59d1e5
Merge pull request #192 from robbietu/master

correct timestamp notes

add notes for cap timestamp

Choose a tag to compare

@robbietu robbietu released this 19 Dec 03:10
3c125c0
Merge pull request #191 from robbietu/master

add note for timestamp

v0.8.4: Merge pull request #190 from robbietu/master

Choose a tag to compare

@robbietu robbietu released this 19 Dec 03:03
6f2a6b5
add timestamp in the pcap