Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.5.0
9.1.0
30 changes: 22 additions & 8 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,30 @@ module(
name = "google-netkat",
version = "0.0.1",
bazel_compatibility = [">=7.3.2"],
compatibility_level = 1,
)

bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf")
bazel_dep(name = "abseil-cpp", version = "20240722.0", repo_name = "com_google_absl")
bazel_dep(name = "gutil", version = "20250502.0", repo_name = "com_google_gutil")
bazel_dep(name = "re2", version = "2024-07-02.bcr.1", repo_name = "com_googlesource_code_re2")
bazel_dep(name = "protobuf", version = "35.0", repo_name = "com_google_protobuf")
bazel_dep(name = "abseil-cpp", version = "20260526.0", repo_name = "com_google_absl")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_cc", version = "0.2.18")
bazel_dep(name = "aspect_bazel_lib", version = "2.22.5")
bazel_dep(name = "aspect_rules_esbuild", version = "0.25.1")
bazel_dep(name = "brotli", version = "1.2.0")
bazel_dep(name = "snappy", version = "1.2.2.bcr.3")
bazel_dep(name = "highwayhash", version = "0.0.0-20240305-5ad3bf8.bcr.1")
bazel_dep(name = "googleapis", version = "0.0.0-20260130-c0fcb356")
bazel_dep(name = "googleapis-cc", version = "1.0.0")
bazel_dep(name = "grpc", version = "1.81.0", repo_name = "com_google_grpc")
bazel_dep(name = "gutil", version = "20260309.0", repo_name = "com_google_gutil")
bazel_dep(name = "re2", version = "2025-11-05.bcr.1", repo_name = "com_googlesource_code_re2")

# Dev Depdencies.
# Dev Dependencies.
bazel_dep(name = "rules_license", version = "1.0.0", dev_dependency = True)
bazel_dep(name = "googletest", version = "1.15.2", dev_dependency = True, repo_name = "com_google_googletest")
bazel_dep(name = "fuzztest", version = "20241028.0", dev_dependency = True, repo_name = "com_google_fuzztest")
bazel_dep(name = "googletest", version = "1.17.0.bcr.2", dev_dependency = True, repo_name = "com_google_googletest")
bazel_dep(name = "fuzztest", version = "20260219.0", dev_dependency = True, repo_name = "com_google_fuzztest")
bazel_dep(name = "google_benchmark", version = "1.9.4", dev_dependency = True, repo_name = "com_google_benchmark")

single_version_override(
module_name = "highwayhash",
version = "0.0.0-20240305-5ad3bf8.bcr.1",
)
10 changes: 5 additions & 5 deletions netkat/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@



load("@rules_cc//cc:defs.bzl", "cc_binary")
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@rules_cc//cc:defs.bzl", "cc_test")
load("@com_google_gutil//gutil:diff_test.bzl", "cmd_diff_test")


load("@rules_proto//proto:defs.bzl", "proto_library")
load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")

package(
default_applicable_licenses = ["//:license"],
Expand Down
29 changes: 19 additions & 10 deletions netkat/manager_handle_pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,28 @@ combining them, or inspecting the underlying sets, one must call methods on the
manager class, which acts as an arena allocator that owns all memory associated
with the handles.

For example: ``` // We need a manager to construct handles. PacketSetManager
manager; PacketSetHandle a = manager.EmptySet() PacketSetHandle b =
manager.Match("src_mac", 0xFF'FF'FF'FF);
For example:

// Handles can be compared and hashed without the help of the manager, // but
that's about it. CHECK(a != b); absl::flat_hash_map<PacketSetHandle> ab_set{a,
b};
```
// We need a manager to construct handles.
PacketSetManager manager;
PacketSetHandle a = manager.EmptySet()
PacketSetHandle b = manager.Match("src_mac", 0xFF'FF'FF'FF);

// Handles can be compared and hashed without the help of the manager,
// but that's about it.
CHECK(a != b);
absl::flat_hash_map<PacketSetHandle> ab_set{a, b};

// To do interesting things with the handles, we need the manager.
PacketSetHandle c = manager.And(a, b); // The set union of `a` and `b`.
PacketSetHandle not_c = manager.Not(c); // The set complement of `c`. if
(manager.Contains(c, packet)) { CHECK(!manager.Contains(not_c, packet)); } else
{ CHECK(manager.Contains(not_c, packet)); } ```
PacketSetHandle c = manager.And(a, b); // The set union of `a` and `b`.
PacketSetHandle not_c = manager.Not(c); // The set complement of `c`.
if (manager.Contains(c, packet)) {
CHECK(!manager.Contains(not_c, packet));
} else {
CHECK(manager.Contains(not_c, packet));
}
```

## Motivation for Using the Pattern

Expand Down
Loading