| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| cloud-probe-0.9.5-linux-amd64.tar.gz | 2026-10-14 | 25.3 MB | |
| cloud-probe-0.9.5-linux-arm64.tar.gz | 2026-10-14 | 23.2 MB | |
| Cloud-Probe v0.9.5 source code.tar.gz | 2026-10-13 | 694.1 kB | |
| Cloud-Probe v0.9.5 source code.zip | 2026-10-13 | 935.8 kB | |
| README.md | 2026-10-13 | 6.5 kB | |
| Totals: 5 Items | 50.1 MB | 0 | |
This release is a correctness and hardening pass over cpworker, cpdaemon and cpctl: config validation, output statistics, control-socket robustness, packet parsing, and memory-safety fixes, plus the wire-format specifications for the VXLAN and ZMQ outputs. Several fixes change observable behaviour; read Upgrade Notes before upgrading.
β οΈ Upgrade Notes
- cpdaemon memory settings key. Worker memory settings are now read from
cpm.worker.memory.*, as documented. The oldcpm.worker.memory_policy.*keys (andCPDAEMON_CPM_WORKER_MEMORY_POLICY_*env vars) are no longer read β rename them. Deployments that setcpm.worker.memory.*were previously running with defaults and will now use the configured values. (#266) - GRE key without a service tag. With no
gre.service_tag, the key is now0x0FFFFFFF/0x1FFFFFFF/0x2FFFFFFF(none / request / response) instead of0xFFFFFFFFfor every packet, so the request/response direction is carried again. Receivers that read the tag askey & 0x0FFFFFFFsee the same value as before. A tag above 28 bits only keeps its low 28 bits in the key, with a warning. (#296) - Output byte counters exclude encapsulation.
fwd_*,direction_drop_*,ratelimit_drop_*anderror_drop_*now count each packet once with its sliced captured length, without GRE/VXLAN/ZMQ headers. gre, vxlan and zmq therefore report lower byte counts (uploaded to CPM asfwdBytes); vxlan withsplitcounts one packet per original packet, not per fragment;rate_limit_mbpsno longer charges the 4β8 byte headers. (#308) - ZMQ heartbeats are no longer counted as forwarded packets. An idle zmq output now reports
fwd_packets0; heartbeats are reported inheartbeat_packets. (#299) - Stricter config parsing in cpworker. Trailing content after the top-level JSON value is rejected (#238). Out-of-range or fractional numeric values are rejected with an error naming the field and range instead of being silently truncated; a few fields (
libpcap.snaplen,libpcap.buffer_size_mb,vxlan.vni1) are normalised with a log line (#234, [#235], [#239], [#250]). cpdaemon now validates CPM strategy values and skips an invalid strategy with a warning instead of failing the whole worker config (#259). - cpctl.
-f jsonloutput followsdocs/REFACTOR-CPCTL.md: errors on stderr are JSON,statsrecords usekind(raw/rate),infokeys are snake_case (#251).tsnow comes from cpworker's newwall_timefield, so use cpctl 0.9.5 with cpworker 0.9.5 (#297). - VXLAN split. IPv4 fragments are no longer split at L4 and are forwarded as captured, so they can exceed
max_payload_size(#244). - ZMQ slice.
slicenever cuts into the Ethernet header or VLAN tag stack; runt frames are counted aserror_drop(#271). - ZMQ shutdown. A pending batch is flushed on stop; with an unreachable collector, shutdown can take up to 5 s (
ZMQ_LINGER) (#253).
π Bug Fixes
cpworker
- Idle capture with
timeout_ms > 0: on libpcap β₯ 1.8 an idle link blocked the main loop, so reload, SIGINT/SIGTERM, stats and ZMQ flushes stalled, and one idle task starved the others. The libpcap handle is now non-blocking. (#241, [#253]) - Control socket: concurrent clients no longer fail with
EAGAIN; a silent client can't block others; requests split across writes are read correctly. (#260, [#261]) - QinQ direction detection: custom
req_patternnow walks0x88a8/0x9100/0x9200tag stacks; previously all QinQ traffic was dropped as a direction drop. (#270) gre.pmtudischad no effect (the code was compiled out);"dont"now clears DF. (#252)- ZMQ output: VLAN walk out-of-bounds read,
uuidnow truly optional, pending batch flushed on destroy. (#231, [#249]) file/rotating_fileoutputs now applysliceandrate_limit_mbps. (#248)rotating_filewithoutmax_file_intervalrotated on every packet and overwrote files; it now defaults to 60 s. (#250)pcap_fileread errors are reported instead of a silent "end of file". (#246)- packet_split: IPv4 fragments,
ihl < 5/ TCP data offset< 5are no longer parsed as L4; a computed UDP checksum of 0 is sent as0xFFFF. (#233, [#242], [#244], [#245]) - Logging: log lines from different threads no longer interleave; config parse errors report line/column of the config itself;
-c <directory>reportsnot a regular file. (#293, [#294], [#295]) - Leaks and error paths: leak on every reload, crash on netns restore failure, leaks in the stats reply, and a stop/start race on the output and reload threads. (#262, [#268], [#272], [#273])
- Stats carry a wall-clock timestamp (
wall_time);cpctl statsno longer prints 1970 dates. (#297)
cpdaemon
- Starting no longer fails on a stale pid file whose pid was reused by another process. (#264)
- CPM client requests honour context cancellation, so shutdown doesn't wait for the HTTP timeout. (#265)
- CPU limits below 1% are raised to the kernel minimum instead of stopping the worker. (#267)
- Logs sent to CPM show error text and group-qualified keys instead of
={e:0x...}. (#290) Stop()returns only after the worker's cgroup and pid file are cleaned up. (#292)
cpctl
cpctl statsshowsheartbeat_packets. (#297)
π Security
- Fixed a heap overflow in
nic.<if>substitution in capturer BPF filters; tokens now end at(/). (#258, [#263]) - Upgraded Go dependencies flagged by the release security gate:
golang.org/x/cryptov0.55.0,golang.org/x/text,google.golang.org/grpcv1.83.2,golang.org/x/netv0.60.0. (#313)
π Documentation
- New
docs/VXLAN-WIRE-FORMAT.mdanddocs/ZMQ-WIRE-FORMAT.md(with zh-Hans) specifying the output wire formats. USAGE-CPWORKERdocuments every numeric range and default,libpcap.timeout_ms, and the GRE key layout; the zh-Hans version is back in sync.REFACTOR-CPCTL.mddefines the output counters and drops the unimplementedcpctl config. (#298)
π§ CI / Tests
- CI now runs the cpworker unit and integration tests and the cripid tests; libzmq is pinned to v4.3.3. (#300, [#301])
- New wire-byte tests for GRE, VXLAN and ZMQ against the specs, and spec-based tests for checksums, packet parsing, ZMQ flushing, the control socket, and the cpdaemon/cpgolib CPM mapping. (#243)
Full Changelog: https://github.com/Netis/cloud-probe/compare/v0.9.4...v0.9.5