Skip to content

feat(dhcp): implemented DHCPv6 Kea callouts#3435

Draft
bcavnvidia wants to merge 1 commit into
NVIDIA:mainfrom
bcavnvidia:IPV6_DHCP_PLAN/03_kea_v6_callouts
Draft

feat(dhcp): implemented DHCPv6 Kea callouts#3435
bcavnvidia wants to merge 1 commit into
NVIDIA:mainfrom
bcavnvidia:IPV6_DHCP_PLAN/03_kea_v6_callouts

Conversation

@bcavnvidia

@bcavnvidia bcavnvidia commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Adds DHCPv6 support to the Kea hook path by decoding DHCPv6 client identity and relay metadata in Rust, routing v6 discoveries through the existing Carbide DHCP API/cache flow, and wiring Kea pkt6_receive, lease6_select, pkt6_send, and lease6_expire.

Also adds v6 hook configuration, DHCPv6 option rendering, address-family-aware cache keys, v6 mock API responses, and an example kea-dhcp6 hook config.

Related issues

#2385

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

Closes #2385

@copy-pr-bot

copy-pr-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b51d1cd9-17ab-4437-914c-f28fd81f7441

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds end-to-end authoritative DHCPv6 support, including packet decoding, identity selection, protocol-scoped caching, Kea callouts, IPv6 options, lease lifecycle handling, metrics, test harnesses, integration tests, and container packaging.

Changes

DHCPv6 runtime foundation

Layer / File(s) Summary
Configuration, metrics, and runtime wiring
crates/dhcp/..., dev/docker/...
Adds IPv6 configuration fields and hook setters, family-specific Kea registration, DHCPv6 metrics, explicit feature-disabled lease-expiration handling, DHCPv6 packages, and hook-library paths.
Kea configuration
crates/dhcp/examples/kea-dhcp6-carbide.conf
Adds a DHCPv6 Kea configuration with IPv6 lease storage, Carbide hook parameters, an IPv6 pool, and logging.

DHCPv6 discovery and caching

Layer / File(s) Summary
Packet decoding and API discovery
crates/dhcp/src/discovery_v6.rs, crates/dhcp/src/machine_v6.rs
Decodes direct and relayed packets, selects DUID or relay option-79 identities, validates IA containers, builds RPC discoveries, and resolves machines through cache or API calls.
Protocol-scoped cache behavior
crates/dhcp/src/cache.rs, crates/dhcp/src/discovery.rs
Scopes cache entries by address family and class, adds DHCPv6 invalidation tombstones, and updates DHCPv4 cache callers.

Kea DHCPv6 hooks

Layer / File(s) Summary
IPv6 option buffers and responses
crates/dhcp/src/machine.rs, crates/dhcp/src/kea/callouts.*
Adds FFI-safe DHCPv6 payload buffers and constructs DNS, NTP, domain-search, Client FQDN, Rapid-Commit, and status options.
Lease selection and expiry
crates/dhcp/src/kea/callouts.cc
Adds authoritative address enforcement, migration refusal, receive/send/renew/rebind hooks, and cache-aware lease expiry.

Test infrastructure and validation

Layer / File(s) Summary
Dual-stack mock and Kea harness
crates/dhcp/src/mock_api_server.rs, crates/dhcp/tests/common/*
Extends the mock API with DHCPv6 contract validation and response generation, and adds packet builders, Kea lifecycle management, metrics scraping, and option assertions.
End-to-end DHCPv6 scenarios
crates/dhcp/tests/*_v6_test.rs
Tests identity precedence, malformed and unsupported packets, stateless requests, cache separation, lease renewal and expiry, CONFIRM behavior, migration refusal, and rapid-commit handling.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Kea as Kea DHCPv6
  participant Callouts as DHCPv6 callouts
  participant Rust as machine_v6
  participant Cache as DHCPv6 cache
  participant API as Carbide API

  Kea->>Callouts: pkt6_receive
  Callouts->>Rust: carbide_pkt6_receive
  Rust->>Cache: lookup cached machine
  Rust->>API: discover_dhcp on cache miss
  API-->>Rust: DHCPv6 machine record
  Rust-->>Callouts: machine and hook result
  Callouts->>Callouts: enforce address and set options
  Callouts-->>Kea: DHCPv6 response
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The Makefile.toml cargo-deny license subcommand change is unrelated to the DHCPv6 callouts scope. Split or remove the Makefile.toml change unless it is required for this PR's DHCPv6 work.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change: adding Kea DHCPv6 callouts.
Description check ✅ Passed The description matches the changeset and clearly describes the DHCPv6 Kea hook work.
Linked Issues check ✅ Passed The PR covers pkt6_receive, lease6_select, pkt6_send, IPv6 hooks, lease6_expire fallback, and RFC 6939 relay MAC handling.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch from 6d8c5a9 to d07e835 Compare July 13, 2026 18:17

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/dhcp/src/kea/callouts.cc`:
- Around line 1415-1421: Update the DHCPv6 send path in pkt6_send near the
existing LOG_CARBIDE_PKT6_SEND call to invoke carbide_increment_reply_sent after
the response is prepared, ensuring DHCPv6 replies receive a send-side count
comparable to pkt4_send. Reuse the existing counter unless the metrics design
explicitly requires separate protocol-specific tracking.

In `@crates/dhcp/src/kea/loader.cc`:
- Around line 97-100: Update the next_server type validation in the loader’s
parameter-validation flow to emit a LOG_ERROR describing the invalid
carbide-provisioning-server-ipv4 value before returning false. Match the logging
style and diagnostic detail used by the other validators in this file, while
preserving the existing rejection behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 4478b164-5296-4189-bccd-19cdbf6b5023

📥 Commits

Reviewing files that changed from the base of the PR and between ae62c4b and d07e835.

📒 Files selected for processing (30)
  • crates/dhcp/Cargo.toml
  • crates/dhcp/examples/kea-dhcp6-carbide.conf
  • crates/dhcp/src/cache.rs
  • crates/dhcp/src/discovery.rs
  • crates/dhcp/src/discovery_v6.rs
  • crates/dhcp/src/kea/callouts.cc
  • crates/dhcp/src/kea/callouts.h
  • crates/dhcp/src/kea/loader.cc
  • crates/dhcp/src/lease_expiration.rs
  • crates/dhcp/src/lib.rs
  • crates/dhcp/src/machine.rs
  • crates/dhcp/src/machine_v6.rs
  • crates/dhcp/src/metrics.rs
  • crates/dhcp/src/mock_api_server.rs
  • crates/dhcp/tests/common/dhcpv6_factory.rs
  • crates/dhcp/tests/common/kea_v6.rs
  • crates/dhcp/tests/common/mod.rs
  • crates/dhcp/tests/identity_v6_test.rs
  • crates/dhcp/tests/info_request_v6_test.rs
  • crates/dhcp/tests/lease6_hook_test.rs
  • crates/dhcp/tests/rapid_commit_v6_test.rs
  • dev/deployment/localdev/Dockerfile.runtime-container.localdev
  • dev/docker/Dockerfile.build-container-aarch64
  • dev/docker/Dockerfile.build-container-x86_64
  • dev/docker/Dockerfile.pxe-build-container
  • dev/docker/Dockerfile.release-container-aarch64
  • dev/docker/Dockerfile.release-container-sa-x86_64
  • dev/docker/Dockerfile.release-container-x86_64
  • dev/docker/Dockerfile.runtime-container-aarch64
  • dev/docker/Dockerfile.runtime-container-x86_64

Comment thread crates/dhcp/src/kea/callouts.cc
Comment thread crates/dhcp/src/kea/loader.cc
@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch from d07e835 to 92a8d7c Compare July 13, 2026 19:15
@bcavnvidia bcavnvidia marked this pull request as ready for review July 13, 2026 19:18
@bcavnvidia bcavnvidia requested a review from a team as a code owner July 13, 2026 19:18
@bcavnvidia bcavnvidia marked this pull request as draft July 13, 2026 19:19

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/dhcp/src/metrics.rs`:
- Around line 828-871: The v6 label contract test omits six documented
V6DropReason variants. Extend the table passed to
v6_drop_reason_renders_the_contract_strings_byte_identically with Success,
Ignore, ConfirmNotOnLink, InvalidPacket, InvalidMachinePointer, and
TooManyFailuresError, using each variant’s exact externally documented label
string.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b9b70afd-853b-465b-8ce2-2f72354d5037

📥 Commits

Reviewing files that changed from the base of the PR and between d07e835 and 92a8d7c.

📒 Files selected for processing (30)
  • crates/dhcp/Cargo.toml
  • crates/dhcp/examples/kea-dhcp6-carbide.conf
  • crates/dhcp/src/cache.rs
  • crates/dhcp/src/discovery.rs
  • crates/dhcp/src/discovery_v6.rs
  • crates/dhcp/src/kea/callouts.cc
  • crates/dhcp/src/kea/callouts.h
  • crates/dhcp/src/kea/loader.cc
  • crates/dhcp/src/lease_expiration.rs
  • crates/dhcp/src/lib.rs
  • crates/dhcp/src/machine.rs
  • crates/dhcp/src/machine_v6.rs
  • crates/dhcp/src/metrics.rs
  • crates/dhcp/src/mock_api_server.rs
  • crates/dhcp/tests/common/dhcpv6_factory.rs
  • crates/dhcp/tests/common/kea_v6.rs
  • crates/dhcp/tests/common/mod.rs
  • crates/dhcp/tests/identity_v6_test.rs
  • crates/dhcp/tests/info_request_v6_test.rs
  • crates/dhcp/tests/lease6_hook_test.rs
  • crates/dhcp/tests/rapid_commit_v6_test.rs
  • dev/deployment/localdev/Dockerfile.runtime-container.localdev
  • dev/docker/Dockerfile.build-container-aarch64
  • dev/docker/Dockerfile.build-container-x86_64
  • dev/docker/Dockerfile.pxe-build-container
  • dev/docker/Dockerfile.release-container-aarch64
  • dev/docker/Dockerfile.release-container-sa-x86_64
  • dev/docker/Dockerfile.release-container-x86_64
  • dev/docker/Dockerfile.runtime-container-aarch64
  • dev/docker/Dockerfile.runtime-container-x86_64
🚧 Files skipped from review as they are similar to previous changes (22)
  • dev/docker/Dockerfile.release-container-aarch64
  • dev/docker/Dockerfile.release-container-x86_64
  • dev/docker/Dockerfile.build-container-x86_64
  • dev/docker/Dockerfile.runtime-container-aarch64
  • crates/dhcp/examples/kea-dhcp6-carbide.conf
  • crates/dhcp/tests/rapid_commit_v6_test.rs
  • crates/dhcp/src/lease_expiration.rs
  • crates/dhcp/src/kea/callouts.h
  • crates/dhcp/src/discovery.rs
  • crates/dhcp/src/discovery_v6.rs
  • crates/dhcp/tests/info_request_v6_test.rs
  • crates/dhcp/tests/identity_v6_test.rs
  • crates/dhcp/Cargo.toml
  • crates/dhcp/tests/common/kea_v6.rs
  • crates/dhcp/src/machine_v6.rs
  • crates/dhcp/src/mock_api_server.rs
  • crates/dhcp/src/machine.rs
  • crates/dhcp/src/lib.rs
  • crates/dhcp/tests/common/mod.rs
  • crates/dhcp/src/cache.rs
  • crates/dhcp/src/kea/callouts.cc
  • crates/dhcp/tests/common/dhcpv6_factory.rs

Comment thread crates/dhcp/src/metrics.rs
@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch from 92a8d7c to 9872f51 Compare July 13, 2026 20:17
@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown

🔍 Container Scan Summary

No Grype artifacts were found to aggregate.

@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch 2 times, most recently from 424d3f1 to 12e8c6e Compare July 13, 2026 21:00
@bcavnvidia bcavnvidia marked this pull request as ready for review July 13, 2026 21:00
@bcavnvidia bcavnvidia marked this pull request as draft July 13, 2026 21:00
@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch from 12e8c6e to 7caf8a2 Compare July 13, 2026 22:22
@bcavnvidia bcavnvidia marked this pull request as ready for review July 13, 2026 22:22
@bcavnvidia bcavnvidia marked this pull request as draft July 13, 2026 22:22

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
crates/dhcp/tests/info_request_v6_test.rs (1)

103-117: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Avoid the needless .clone() at the call sites — take response by reference.

assert_stateless_response never needs ownership of response; every use inside the function body only borrows it. The response.clone() calls at Line 129 and Line 172 exist solely to satisfy this by-value signature, and callers keep using response afterward. Taking &v6::Message removes both clones without any functional change.

♻️ Suggested fix
-fn assert_stateless_response(h: &Harness, response: v6::Message, expected_type: v6::MessageType) {
+fn assert_stateless_response(h: &Harness, response: &v6::Message, expected_type: v6::MessageType) {
     // Stateless flows should call the API as observation and not carry IA_NA.
     assert_eq!(response.msg_type(), expected_type);
-    assert_eq!(DHCPv6Factory::ia_addr(&response), None);
+    assert_eq!(DHCPv6Factory::ia_addr(response), None);
     let discovery = h.api_server.discoveries().last().unwrap().clone();
     assert_eq!(
         discovery.message_kind,
         Some(rpc::MessageKind::V6InfoRequest as i32)
     );

     // The hook should still render service options on the response.
-    assert_hook_v6_dns_servers(&response);
-    assert_api_v6_domain_search(&response);
-    assert_hook_v6_ntp_servers(&response);
+    assert_hook_v6_dns_servers(response);
+    assert_api_v6_domain_search(response);
+    assert_hook_v6_ntp_servers(response);
 }

And update the two call sites that currently clone:

-    assert_stateless_response(&h, response.clone(), v6::MessageType::Reply);
+    assert_stateless_response(&h, &response, v6::MessageType::Reply);
-    assert_stateless_response(&h, response.clone(), v6::MessageType::Advertise);
+    assert_stateless_response(&h, &response, v6::MessageType::Advertise);

Based on coding guidelines: "Avoid needless clones. Seeing .clone() frequently indicates the ownership model may need rethinking. Prefer borrowing data or taking ownership of the value being cloned."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/dhcp/tests/info_request_v6_test.rs` around lines 103 - 117, Change
assert_stateless_response to accept response by reference, preserving its
existing borrowed uses. Update both call sites that currently pass
response.clone() to pass a reference instead, allowing callers to continue using
the original response without cloning.

Source: Coding guidelines

crates/dhcp/src/discovery_v6.rs (1)

317-317: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Emit the MAC mismatch as structured tracing fields.

Interpolation prevents efficient logfmt queries by client_mac and duid_mac.

Proposed fix
-                log::warn!("DHCPv6 option 79 MAC {client_mac} disagrees with DUID MAC {duid_mac}");
+                tracing::warn!(
+                    %client_mac,
+                    %duid_mac,
+                    "DHCPv6 option 79 MAC disagrees with DUID MAC"
+                );

As per coding guidelines, “prefer placing common fields as attributes passed to tracing functions instead of using string interpolation.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/dhcp/src/discovery_v6.rs` at line 317, Update the warning log at the
DHCPv6 option 79 MAC mismatch site to pass client_mac and duid_mac as structured
tracing fields/attributes, rather than interpolating them into the message. Keep
the warning message descriptive and preserve both MAC values for logfmt queries.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@crates/dhcp/src/discovery_v6.rs`:
- Line 317: Update the warning log at the DHCPv6 option 79 MAC mismatch site to
pass client_mac and duid_mac as structured tracing fields/attributes, rather
than interpolating them into the message. Keep the warning message descriptive
and preserve both MAC values for logfmt queries.

In `@crates/dhcp/tests/info_request_v6_test.rs`:
- Around line 103-117: Change assert_stateless_response to accept response by
reference, preserving its existing borrowed uses. Update both call sites that
currently pass response.clone() to pass a reference instead, allowing callers to
continue using the original response without cloning.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a6604628-7927-49c3-af27-7c9e985ad008

📥 Commits

Reviewing files that changed from the base of the PR and between 12e8c6e and 7caf8a2.

📒 Files selected for processing (30)
  • crates/dhcp/Cargo.toml
  • crates/dhcp/examples/kea-dhcp6-carbide.conf
  • crates/dhcp/src/cache.rs
  • crates/dhcp/src/discovery.rs
  • crates/dhcp/src/discovery_v6.rs
  • crates/dhcp/src/kea/callouts.cc
  • crates/dhcp/src/kea/callouts.h
  • crates/dhcp/src/kea/loader.cc
  • crates/dhcp/src/lease_expiration.rs
  • crates/dhcp/src/lib.rs
  • crates/dhcp/src/machine.rs
  • crates/dhcp/src/machine_v6.rs
  • crates/dhcp/src/metrics.rs
  • crates/dhcp/src/mock_api_server.rs
  • crates/dhcp/tests/common/dhcpv6_factory.rs
  • crates/dhcp/tests/common/kea_v6.rs
  • crates/dhcp/tests/common/mod.rs
  • crates/dhcp/tests/identity_v6_test.rs
  • crates/dhcp/tests/info_request_v6_test.rs
  • crates/dhcp/tests/lease6_hook_test.rs
  • crates/dhcp/tests/rapid_commit_v6_test.rs
  • dev/deployment/localdev/Dockerfile.runtime-container.localdev
  • dev/docker/Dockerfile.build-container-aarch64
  • dev/docker/Dockerfile.build-container-x86_64
  • dev/docker/Dockerfile.pxe-build-container
  • dev/docker/Dockerfile.release-container-aarch64
  • dev/docker/Dockerfile.release-container-sa-x86_64
  • dev/docker/Dockerfile.release-container-x86_64
  • dev/docker/Dockerfile.runtime-container-aarch64
  • dev/docker/Dockerfile.runtime-container-x86_64
🚧 Files skipped from review as they are similar to previous changes (22)
  • dev/docker/Dockerfile.release-container-aarch64
  • dev/docker/Dockerfile.build-container-aarch64
  • dev/docker/Dockerfile.build-container-x86_64
  • crates/dhcp/tests/rapid_commit_v6_test.rs
  • dev/docker/Dockerfile.release-container-x86_64
  • crates/dhcp/Cargo.toml
  • crates/dhcp/src/discovery.rs
  • crates/dhcp/src/lease_expiration.rs
  • crates/dhcp/tests/lease6_hook_test.rs
  • crates/dhcp/src/kea/callouts.h
  • crates/dhcp/src/machine_v6.rs
  • crates/dhcp/tests/identity_v6_test.rs
  • crates/dhcp/src/cache.rs
  • crates/dhcp/tests/common/mod.rs
  • crates/dhcp/tests/common/kea_v6.rs
  • crates/dhcp/src/kea/loader.cc
  • crates/dhcp/src/mock_api_server.rs
  • crates/dhcp/src/lib.rs
  • crates/dhcp/src/machine.rs
  • crates/dhcp/src/kea/callouts.cc
  • crates/dhcp/src/metrics.rs
  • crates/dhcp/tests/common/dhcpv6_factory.rs

@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch 2 times, most recently from 1c06a84 to e29e880 Compare July 14, 2026 14:30
@bcavnvidia bcavnvidia marked this pull request as ready for review July 14, 2026 14:30
@bcavnvidia bcavnvidia marked this pull request as draft July 14, 2026 14:30
@github-actions

Copy link
Copy Markdown

@bcavnvidia bcavnvidia force-pushed the IPV6_DHCP_PLAN/03_kea_v6_callouts branch from e29e880 to 058da8c Compare July 14, 2026 18:11
@bcavnvidia bcavnvidia marked this pull request as ready for review July 14, 2026 18:12
@bcavnvidia bcavnvidia marked this pull request as draft July 14, 2026 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DHCP/03 — Kea v6 callouts (authoritative DHCPv6 goes live)

1 participant