Support Client Migration (Client Side)
Description
This PR adds the support of Client Migration (Client SIde). Fix #1946.
This pull request includes significant changes to the QUIC connection ID management and introduces a new feature for manual connection ID generation for testing purposes. The most important changes include the replacement of QUIC_CID_HASH_ENTRY with QUIC_CID_SLIST_ENTRY to register connection IDs into more than one bindings, the addition of new APIs to add/remove local address in client, and the introduction of a conditional compilation feature for manual connection ID generation.
Added QuicConnOpenNewPath and QuicConnOpenNewPaths are to manage opening new paths for a connection. These functions will be called when Destination Connection ID is available for sending PATH_CHALLENGE.
Testing
I've added two test.
- Basic/WithProbePathArgs.ProbePath/*
- Basic/WithMigrationArgs.Migration/*
Documentation
In this PR, the following two Connection level Parameters will be added.
- QUIC_PARAM_CONN_ADD_LOCAL_ADDRESS
- QUIC_PARAM_CONN_REMOVE_LOCAL_ADDRESS
@microsoft-github-policy-service agree
Codecov Report
Attention: Patch coverage is 76.29630% with 64 lines in your changes are missing coverage. Please review.
Project coverage is 84.20%. Comparing base (
6ecf19b) to head (a339913). Report is 5 commits behind head on main.
| Files | Patch % | Lines |
|---|---|---|
| src/core/connection.c | 67.42% | 57 Missing :warning: |
| src/core/binding.c | 90.32% | 3 Missing :warning: |
| src/core/lookup.c | 94.28% | 2 Missing :warning: |
| src/core/path.c | 75.00% | 2 Missing :warning: |
Additional details and impacted files
@@ Coverage Diff @@
## main #4218 +/- ##
==========================================
- Coverage 85.33% 84.20% -1.14%
==========================================
Files 56 56
Lines 15358 15538 +180
==========================================
- Hits 13105 13083 -22
- Misses 2253 2455 +202
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
@masa-koz Are you going to have time to add the requested extra tests? If not, do you mind if we add them later?