Releases: Netis/cloud-probe
Release list
Cloud-Probe v0.9.4
✨ 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
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
⚠️ Breaking Changes
cpctlCLI restructured. Theworkersubcommand layer has been removed;
ping,info, andstatsare now top-level commands
(e.g.cpctl worker stats→cpctl stats).- Flag renamed.
--control/-sis now--unix/-uand takes a raw
unix socket path. Update any scripts or automation that invokecpctl.
✨ 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 viazmq.heartbeat_ms
(default1000, set to0to disable). cpctlimprovements. Newpingandinfocontrol commands, and a new
--timeoutflag plumbed through RPC context deadlines.
🐛 Bug Fixes
- GRE / VXLAN
pmtudisc=0now honored. Previously only values> 0were
applied, making it impossible to explicitly disable PMTU discovery
(IP_PMTUDISC_DONT). A value of0is now passed through tosetsockopt. - 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_rootpipes
the password through ssh stdin instead of interpolating it into the remote
command string, so it no longer appears inpson 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 returnsEAGAINand the stuck client is torn down.
🛠 Internal / Tooling
- Added a
justfileandscripts/routers/*to unify local / SSH / OrbStack
build dispatch. - Expanded integration and Go / C / shell unit tests (including a
zmq_heartbeatcase); added theCPW_SKIP_ENV_LOCALescape 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
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
workersubcommand layer.ping,info, andstatsare now top-level commands.- Old:
cpctl worker stats ... - New:
cpctl stats ...
- Old:
- Renamed
--control/-sflag 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. --timeoutis now plumbed through to context deadlines in the unix client, so hung calls actually abort.
🛡️ cpworker Hardening (unix-manager)
- New
unix_rpc_basicmodule split out fromunix-managerfor the basic RPC handlers. - Improved error handling and client lifecycle management on the unix control socket.
🧪 Tests & Tooling
- Added Go unit tests for
cpctlcommands (ping,info,stats,base) and thecpgolib/cpworkerunix 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_LOCALescape 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
Title: add packet_split for vxlan and NicChangeDetect
Highlights
- Added VXLAN packet splitting support in
cpworker. - Added NIC change detection in
cpdaemonsyncer 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.ccpworker/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_vxlannow supports split options:split.max_payload_sizesplit.recalculate_checksum
cpdaemonstrategy/model/config pipeline now carries packet split fields:hasPacketSplitpacketSplitBytesrecalculateChecksum
- 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 clearercpworker/tests/unitandcpworker/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
Rewrote the entire codebase; components renamed to cpworker and cpdaemon.
v0.8.7: Merge pull request #197 from robbietu/master
add fix for "zombie process of sh"
add notes for timestamp notes
Merge pull request #192 from robbietu/master correct timestamp notes
add notes for cap timestamp
Merge pull request #191 from robbietu/master add note for timestamp
v0.8.4: Merge pull request #190 from robbietu/master
add timestamp in the pcap