* Allow stateless reset token key to be set #1719
* Update src/core/library.c
How about we use the same way as the random initial reset key, we call MsQuicLibraryFreePartitions() to set all PerProc->ResetTokenHash to NULL
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Address the code review feedback
* Revert clog.sidecar changes
* Add event for stateless reset key
* Revert the file clog.sidecar
* Remove DatapathTcpAuxBinding changes from clog.sidecar
* Remove parameter from function QuicTestStatelessResetKey and address other comments
* Update src/test/MsQuicTests.h
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Update src/core/library.c
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Update src/test/lib/DataTest.cpp
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Address code review comments
* Move stateless reset key after the other global param
* Address CheckDotnet test and update document
* Address the failure at CIFuzz
* Address the failure in CIFuzz
* Add one test case when MsQuic lib has not been initialized yet
---------
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Remove QUIC_USE_RAW_DATAPATH (logic only)
* move logic to core side
* remove QUIC_USE_RAW_DATAPATH from test
* fix googletest version and add last line
* replace from flag to function call
* fix build error
* fix build/test issues
* implement CxPlatResolveRoute for normal socket
* add Getter of Datapath feature
* fix build issues
* adopt comments
* adopt comment and fix kernel build error
* fix kernel build error
* more fix for kernel build
* Unify datapath
* DatapathTest partially work
* just unify build of both normal socket and xdp
* SOCKET: RAW{...Socket{BASE{addr}}}, DATAPATH: XDP{RAW{DATAPATH*}} <-> DATAPATH{RAW*, BASE{callbacks}}
* tmp
* add preview_feature flag back
* refactoring CxPlatIsRouteReady
* fix linux code check
* adjust func names
* fix comments
* fix IsRouteReady and clean ifdef for _KERNEL_MODE
* kernel build error
* Set RouteResolved for Rx
* fix more tests
* move global definition in header file
* kernel to avoid calling helper function
* move QuitTestIsFeatureSupported after RegistrationOpen
* supress warning
* remove QuitTestIsFeatureSupported from quic_gtest as it doesn't work as expected by dependency of MsQuicLib.Datapath
* remove raw feature check as much as possible
* ifdef for UseQTIP visibility
* tmp
* tmp
* fix merge side effects
* all tests passed
* fix tests in msquicplatformtest
* fix tcp with duonic
* update clog
* use xdp v1
* WIP cleanup
* refactoring CXPLAT_SEND_DATA
* remove mangling and function pointer
* remove unnecessary change in test
* fix comments
* cleanup
* move logic to _winuser
* use dummy raw datapath for uwp build
* dummy raw
* remove double free
* fix comments
* update dummy func
* fix perf run for TCP
* partially fix comments
* fix build error for uwp and remove duplicate variable in raw socket
* set socket before start receiving
* add dummy to clog
* add clog files for dummy
* fix dependency for cargo on windows
* remove dummy clog files
* remove AuxSocket
* add pwsh for cargo setup
* clog fix
* add include dir for cargo
* [WIP] fix cargo and qtip
* fix clog, qtip, rename private raw functions and cleanup
* experiment to avoid write overflow
* use Config->Route->DatapathType for data allocation
* more strict if conditions
* fix comments
* fix uwp build
* fix clog and artifact name
* fix back xdp dependency
* Simply build automation
* missed one
* apply unification to linux and remove QUIC_USE_XDP flag
* move types to any platform
* add abstruction layer for linux
* add clog
* add clog dependencies
* fix CodeCheck issues
* remove xdp specific artifact dir name and always install xdp deps
* add docs
* More Fixes for XDP in automation (mostly OneBranch)
---------
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* add new parameter
* remember to set success status
* add test cases
* fix test cases
* fix styling
* no need to redefine client config
* add non-null checking
* fix formatting and use helpers
* update description and add trailing whitespace
* add null ptr queries
* run ./scripts/generate-dotnet.ps1
---------
Co-authored-by: Jack He <jackhe@microsoft.com>
* generate .perf trace
* change order
* tmp
* check
* ooo
* specify file
* check
* aaa
* install perf
* add
* install perf
* add to log.ps1
* add
* odebug print
* print output
* add loop to wait collection
* small sampling rate
* print info
* gen svg
* fix typo
* fix perf install trigger
* chmod to flamegraph scripts and add debug output
* fix count variable access. use @ instead of $
* try catch perf
* debug print
* print from remote
* more debug
* add -ErrorAction Continue
* error oput
* use original
* wrap
* DebugPreference Continue
* stop server side PerfGraph
* explicitly install flamegraph tools
* set path for flamegraaph tools
* fix file existence check
* gset perf paranoid
* setup flamegraph tools just before using
* add sudo
* sudo for perf
* add sudo for all perf
* check permissions
* pass environment variables
* set explicit library path
* enable server perf tracing
* output details for remote exe
* stop server perf trace
* remove original LD_LIBRARY_PATH
* show out of memory
* remove comment, enable server
* fix directory name
* commenting
* oops
* Fix tar error
* remove Write-Debug as it is critical issue
* fix SmbDir for linux
* stop debug print
* add throw for Perf function
* Use max sampling frequency for perf with workaround
* upload perf txt file for WPA visualization
* add documents
* add images
* fix data extension
* smaller freq
* cleanup before perf run
* add Path check
* delete file for each type
* reduce sampling freq. addpending work
* use safer file name based operation
* parallelize client perf post processing
* reduce freq and parallelize server/client post proccessing
* increase timeout for perf measurement
* add cancel func
* change timeout to 90min
* fix tab
* Fix Loopback server side warning
* adjust for throughput tests
* initial
* wip
* temporal setup script
* update
* cleanup
* cleanup
* fix Server side parse issue
* succesfull case
* reset cached buffer length
* rejection case
* rejection case
* Rejection case
* use status flag
* clean up
* clean up
* fixes
* Add new API. Fix comment
* add generated cs file
* test fix
* clean up
* fix comment, skip test for schannel
* regenerate cs file
* Use same mechanism for CertificateValidationComplete
* add doc and remark
* Reschedule packet if cert/ticket validaiton pending
* Fix available version. Make API callable from callback
* Update docs/api/ConnectionResumptionTicketValidationComplete.md
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Update docs/api/ConnectionResumptionTicketValidationComplete.md
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* fix comments
* same order
* spinquic to call
* fix code quality
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Added support for ca certificate file setting in SSL_CTX.
* Moved CaCertificateFile struct element to last in struct for backward compatability, added QUIC_CREDENTIAL_FLAGS to indicate that it is set.
* Code cleanup.
* Updated pulic API, move test to top.
* Added support for creating a CA and issuing client or server certificates from the CA certificate + modified a couple of tests to use root certificate and properly generated client certificate.
* Added const.
* Fixed parameter annotations and renamed helper function.
* Added some more comments.
* Added new flag QUIC_CREDENTIAL_FLAG_SET_CA_CERTIFICATE_FILE to PlatformSpecificFlagsOpenSsl test.
* Comment added to better explain the ca cert swap code.
* Reworked ca cert file setting in parameter.
* Added missing compiler directive.
* Removed comment that caused validation function to complain. Fixed syntax error in code not used by openssl version.
* Fixed memory leak and disabled a couple of tests that cannot run when schannel is used.
* Fixed various minor whitespace issues and an ifdef test.
* Restored original whitespacing.
* Added some docs and defined test macro.
* Only run CA certificate tests when using openssl and not on WIN32
* Added some comment to satisfy code scanning tool part of test chain.
Co-authored-by: Johan Bevemyr <jb@avassa.io>
This PR implements 13.4.2. ECN Validation in RFC9000. The ECN validation algorithm implemented in this PR is very similar to the sample algorithm given in RFC9000 A.4. The details can be found at the top of path.h.
This PR also adds a new global QUIC setting, EcnEnabled and a flag, EcnCapable, in connection stats.
This PR does not implement CC ECN reaction, which will be done in a separate PR.