From ff3b778dccef6be616fa6ba3ee780e94306d037d Mon Sep 17 00:00:00 2001 From: morcules Date: Thu, 7 May 2026 20:12:02 +0200 Subject: [PATCH 1/6] Added fixes so that linux versions don't use TSAN for current false positives --- build/{build_for_release.sh => linux_build_release.sh} | 0 build/linux_build_testing.sh | 8 ++++++++ build/macos_build_release.sh | 8 ++++++++ build/{build_for_testing.sh => macos_build_testing.sh} | 0 tests/integration_tests/build/linux_build_tests.sh | 2 ++ tests/integration_tests/build/macos_build_tests.sh | 2 ++ 6 files changed, 20 insertions(+) rename build/{build_for_release.sh => linux_build_release.sh} (100%) create mode 100755 build/linux_build_testing.sh create mode 100755 build/macos_build_release.sh rename build/{build_for_testing.sh => macos_build_testing.sh} (100%) create mode 100755 tests/integration_tests/build/linux_build_tests.sh create mode 100755 tests/integration_tests/build/macos_build_tests.sh diff --git a/build/build_for_release.sh b/build/linux_build_release.sh similarity index 100% rename from build/build_for_release.sh rename to build/linux_build_release.sh diff --git a/build/linux_build_testing.sh b/build/linux_build_testing.sh new file mode 100755 index 0000000..a9fc2cb --- /dev/null +++ b/build/linux_build_testing.sh @@ -0,0 +1,8 @@ +rm -f CMakeCache.txt +rm -rf CMakeFiles +rm -rf cmake +rm -f Makefile +rm -f cmake_install.cmake + +cmake ../src -DCMAKE_BUILD_TYPE=Debug -DSANITIZER=none -DSWIFT_NET_INTERNAL_TESTING=ON -B . +make -B -j8 diff --git a/build/macos_build_release.sh b/build/macos_build_release.sh new file mode 100755 index 0000000..3049029 --- /dev/null +++ b/build/macos_build_release.sh @@ -0,0 +1,8 @@ +rm -f CMakeCache.txt +rm -rf CMakeFiles +rm -rf cmake +rm -f Makefile +rm -f cmake_install.cmake + +cmake ../src -DCMAKE_BUILD_TYPE=Release -DSANITIZER=none -B . +make -B -j8 diff --git a/build/build_for_testing.sh b/build/macos_build_testing.sh similarity index 100% rename from build/build_for_testing.sh rename to build/macos_build_testing.sh diff --git a/tests/integration_tests/build/linux_build_tests.sh b/tests/integration_tests/build/linux_build_tests.sh new file mode 100755 index 0000000..d8ff0ba --- /dev/null +++ b/tests/integration_tests/build/linux_build_tests.sh @@ -0,0 +1,2 @@ +cmake . -DCMAKE_BUILD_TYPE=Debug -DSANITIZER=none -B . +make -B -j8 diff --git a/tests/integration_tests/build/macos_build_tests.sh b/tests/integration_tests/build/macos_build_tests.sh new file mode 100755 index 0000000..9662abd --- /dev/null +++ b/tests/integration_tests/build/macos_build_tests.sh @@ -0,0 +1,2 @@ +cmake . -DCMAKE_BUILD_TYPE=Debug -DSANITIZER=thread -B . +make -B -j8 From 0e7d95a82ba26d7d2befbd204bbf4cf949a839f3 Mon Sep 17 00:00:00 2001 From: morcules Date: Sat, 16 May 2026 20:32:11 +0200 Subject: [PATCH 2/6] rework passed tests --- ...k_existing_listener.c.D08ACF88A6D73CB6.idx | Bin 0 -> 2256 bytes .../cleanup_connection.c.135A87110A44756C.idx | Bin 0 -> 4180 bytes .../cleanup_swiftnet.c.D261B829E6FF1D15.idx | Bin 0 -> 2236 bytes .../datatype_allocator.c.F5C2FDDEDE7A3556.idx | Bin 0 -> 6122 bytes .../datatype_hashmap.c.6B3CC3F5B671957F.idx | Bin 0 -> 4378 bytes .../datatype_vector.c.20C82A2620E3A183.idx | Bin 0 -> 1630 bytes ...ute_packet_callback.c.75CDB3F3CA1019FB.idx | Bin 0 -> 2896 bytes .../generic_functions.c.34FFBCD03F2CB460.idx | Bin 0 -> 3482 bytes ...t_interface_and_mac.c.14CE5855DE3D9C4B.idx | Bin 0 -> 1742 bytes .../index/get_mtu.c.50903B83A19C3386.idx | Bin 0 -> 1030 bytes .../handle_packets.c.1E33790C25DF3B92.idx | Bin 0 -> 5866 bytes ...e_client_connection.c.1EAE19817E4C6370.idx | Bin 0 -> 6236 bytes .../initialize_server.c.6B41D0D4BEC8C08A.idx | Bin 0 -> 3016 bytes ...initialize_swiftnet.c.F2AB0A5BB1E70AC0.idx | Bin 0 -> 5276 bytes .../index/internal.h.D8B6A6B84688EEC1.idx | Bin 0 -> 9972 bytes .../index/make_request.c.A6C2C66D7CCCDD9A.idx | Bin 0 -> 3070 bytes .../make_response.c.CCAFFC5F73ED3695.idx | Bin 0 -> 1662 bytes ...ipulate_debug_flags.c.CEC224EB912EA1D1.idx | Bin 0 -> 674 bytes ..._background_service.c.7F1EF4943D2DA07D.idx | Bin 0 -> 2616 bytes .../index/networking.h.E8DFD5E7B8CBD7B1.idx | Bin 0 -> 1434 bytes .../packet_buffer.c.28B51622D1E7F146.idx | Bin 0 -> 1862 bytes .../index/pcap_open.c.12FB254C28B3CA46.idx | Bin 0 -> 842 bytes .../index/pcap_send.c.51C51B70A6382404.idx | Bin 0 -> 632 bytes .../process_packets.c.D9BED195CEDA27E7.idx | Bin 0 -> 19228 bytes .../index/send_packet.c.ED568F1A8FFC045E.idx | Bin 0 -> 11240 bytes .../index/swift_net.h.83A22C4E96D34E3B.idx | Bin 0 -> 20350 bytes src/.clangd | 4 - src/CMakeLists.txt | 6 +- src/cleanup_connection.c | 5 +- src/cleanup_swiftnet.c | 5 +- src/generic_functions.c | 5 +- src/handle_packets.c | 29 ++++-- src/initialize_client_connection.c | 27 +++--- src/initialize_server.c | 22 ++--- src/internal/check_existing_listener.c | 5 +- src/internal/internal.h | 34 +------ src/internal/networking.h | 75 +++++++++++++++ src/internal/{ => pcap}/pcap_open.c | 4 +- src/internal/{ => pcap}/pcap_send.c | 2 +- src/make_request.c | 4 +- src/make_response.c | 4 +- src/process_packets.c | 45 ++++----- src/send_packet.c | 86 +++++++----------- src/swift_net.h | 18 ++-- 44 files changed, 212 insertions(+), 168 deletions(-) create mode 100644 src/.cache/clangd/index/check_existing_listener.c.D08ACF88A6D73CB6.idx create mode 100644 src/.cache/clangd/index/cleanup_connection.c.135A87110A44756C.idx create mode 100644 src/.cache/clangd/index/cleanup_swiftnet.c.D261B829E6FF1D15.idx create mode 100644 src/.cache/clangd/index/datatype_allocator.c.F5C2FDDEDE7A3556.idx create mode 100644 src/.cache/clangd/index/datatype_hashmap.c.6B3CC3F5B671957F.idx create mode 100644 src/.cache/clangd/index/datatype_vector.c.20C82A2620E3A183.idx create mode 100644 src/.cache/clangd/index/execute_packet_callback.c.75CDB3F3CA1019FB.idx create mode 100644 src/.cache/clangd/index/generic_functions.c.34FFBCD03F2CB460.idx create mode 100644 src/.cache/clangd/index/get_default_interface_and_mac.c.14CE5855DE3D9C4B.idx create mode 100644 src/.cache/clangd/index/get_mtu.c.50903B83A19C3386.idx create mode 100644 src/.cache/clangd/index/handle_packets.c.1E33790C25DF3B92.idx create mode 100644 src/.cache/clangd/index/initialize_client_connection.c.1EAE19817E4C6370.idx create mode 100644 src/.cache/clangd/index/initialize_server.c.6B41D0D4BEC8C08A.idx create mode 100644 src/.cache/clangd/index/initialize_swiftnet.c.F2AB0A5BB1E70AC0.idx create mode 100644 src/.cache/clangd/index/internal.h.D8B6A6B84688EEC1.idx create mode 100644 src/.cache/clangd/index/make_request.c.A6C2C66D7CCCDD9A.idx create mode 100644 src/.cache/clangd/index/make_response.c.CCAFFC5F73ED3695.idx create mode 100644 src/.cache/clangd/index/manipulate_debug_flags.c.CEC224EB912EA1D1.idx create mode 100644 src/.cache/clangd/index/memory_cleanup_background_service.c.7F1EF4943D2DA07D.idx create mode 100644 src/.cache/clangd/index/networking.h.E8DFD5E7B8CBD7B1.idx create mode 100644 src/.cache/clangd/index/packet_buffer.c.28B51622D1E7F146.idx create mode 100644 src/.cache/clangd/index/pcap_open.c.12FB254C28B3CA46.idx create mode 100644 src/.cache/clangd/index/pcap_send.c.51C51B70A6382404.idx create mode 100644 src/.cache/clangd/index/process_packets.c.D9BED195CEDA27E7.idx create mode 100644 src/.cache/clangd/index/send_packet.c.ED568F1A8FFC045E.idx create mode 100644 src/.cache/clangd/index/swift_net.h.83A22C4E96D34E3B.idx delete mode 100644 src/.clangd create mode 100644 src/internal/networking.h rename src/internal/{ => pcap}/pcap_open.c (87%) rename src/internal/{ => pcap}/pcap_send.c (93%) diff --git a/src/.cache/clangd/index/check_existing_listener.c.D08ACF88A6D73CB6.idx b/src/.cache/clangd/index/check_existing_listener.c.D08ACF88A6D73CB6.idx new file mode 100644 index 0000000000000000000000000000000000000000..8c215ec4f30f82da78e5c2fb19597a835a976f73 GIT binary patch literal 2256 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 J0BkMo{{vf*jZ^>t literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/cleanup_swiftnet.c.D261B829E6FF1D15.idx b/src/.cache/clangd/index/cleanup_swiftnet.c.D261B829E6FF1D15.idx new file mode 100644 index 0000000000000000000000000000000000000000..c7ed4a36feadbebe6a2c2d07a15e854c577cc678 GIT binary patch literal 2236 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 IWghbX0^R`4nE(I) literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/datatype_vector.c.20C82A2620E3A183.idx b/src/.cache/clangd/index/datatype_vector.c.20C82A2620E3A183.idx new file mode 100644 index 0000000000000000000000000000000000000000..b12abc655d6aa5700416c321fd902db6cf9ff551 GIT binary patch literal 1630 zcmaJJ48=K~O)yeTiuoRdTY0HpYros+fi0EO>3koS3GOzUQzzr?b&FI;@()UEELzOFtA zji>d!8_KuTSVsA|pHxM~Z+Mw|$ycvyyj&n$-B#!~CgQzjDQ|s?8`1r}`PUgk~~TkqFbwLP_?@@M-V%*f~G6NcgAvh8P&w?8b2 zs(9CRvc%yaZ%`a=iMSr4Y@ZwX(eW5{eV6H8dR0K3cG&brO8LZ4V$B`4&D6q7X7Hoz zZXb&KseMlabCx@V-exTm@tWHwEE!|3`*l@Sn-ed#-aK=%u`_tZPLO>fI%{O3=kLX5 zEB-ahk3D63ZcTIt>@J8)DRjQOS>5nOSHoa5U9fxawT_~g z3WXo?yYCi%lvWX&;98Vcodjy9u5?sB%o<7jrJL1D*L>9%*1Jk`fI6?pv}EU}?KzKU z@o0LDO9-!62!RFwWMB*~+!O_;C z^6eHWJ9HKKadW(M2s|(aF-XEqQ*fGc14044NO@6rJa8NB_yYv)m=eSfl5mrhXwpi- ziM-r!q9W69WwZEcGX!c(p;_9Ko268X7^bRQea}xO3(a2t4FC`*0@`7G&gcRJj z)=QfFrUAbd3&mnWdcu2^dFco*TmX@i&`CtX5V6jzY^h~P6QBtqN)YKJI#(Ogi}g|) zGP)TRqe6XGm5fs8@i8&3o(kAB%eI+*JFZWm4#S7~RR2BWF}m$VB<_e&V00pHiD}$>>yi*Q zDFTPBi$TH<-V429%$v{UK_n82oNfJ6tW>NbZy<7)xXTH$^w-dzy;PsW#qkCFB_)VF zp{Fa+9sFx{W57QJP5(R7N5w-uEq^fIS#1gg(3V^awM$)Ft!jBb?Gknw+hl20KS8Ak_d;b>rKMdza6XFpX_}DOIr7kgyF&- z66DV48%~brKf!aS?P(d2g2>U?afJ=Z6f$p8Dnv+*mhFUrGw8^)APSNPtt53iG>vzd zYUUTjeQ2Xij&tB#NdF;HI4G7OwUe5)eKUj@B9@7pg4Pr9EOTm-)kSvJ-fTbXMQQz8 tJRG?I3VF2+-PynH{!JdIPy)r$2e3CSIn@b67wGCBa&~eQ%b-Lk{SU4N0Mq~g literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/execute_packet_callback.c.75CDB3F3CA1019FB.idx b/src/.cache/clangd/index/execute_packet_callback.c.75CDB3F3CA1019FB.idx new file mode 100644 index 0000000000000000000000000000000000000000..a8e5ef1396baaf9e3b7f2398f5580849ad0c3ddc GIT binary patch literal 2896 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 La`LlrG4lcdUHOE( literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/get_mtu.c.50903B83A19C3386.idx b/src/.cache/clangd/index/get_mtu.c.50903B83A19C3386.idx new file mode 100644 index 0000000000000000000000000000000000000000..40fadfa7b588fc6944a26947e341c1ea6cde3f28 GIT binary patch literal 1030 zcmWIYbaVU1%)sEB;#rZKT9U}Zz`!63#Kk2=nX!xv4AwxoiaB#9MSC+F3ba07{-&8< zYguxr3wN!++Mo-fZ<_kOt!CflOA|hMlzZv_yIbNWToV17dtzq)OiT3*drjZ-pOBI_ zn&mnD?Y`@NKOf9+I;N%(?j6*Ytp%a=D8-`486oZ;lMTyE|0lg8H-!x@)PEd83?Uf#00 zx#!A_6#?56zj1_JUY;|7<6Qoe=3OakZGNeyg}hkGYo1`sZ6a}ax3=NScJ|Z;tA)%* z>T^DZf7<-w?7j<6Wpg}^do7HSs;f~knf*g)QuT{?+f7S9m?zCF{ghxl>5k(%>myU7 zZs+N`-qEx&^KF;lRj=@U^ULb~^OFhD%UJ3n`11elR%l=-uFOqR28MP`C(DoSZz0V* z3^EK1Lfrh^V!|sJ#a1xNGH^06G6)JV3bQg4rKS~c1;)t6w`{7RU!Srv@(A&(^6LV1 zgF$e|9E-kLTI@h!K`}uEs3^m#wEbWEjK3%`vIy}D@JqlfN=#>{e)Ww(A1ExuAtVeF zp0i;0nanO3bD*#oznBGfx@7mf?3J6=EGT=S^u5^g}K?d`CzI)gayfMe)sn| zP*{*d5N-%C_Hq(IT8oR4iz`43cql^h8%PKUL?IN2goh9VgE&GI9?A?1A_!4wIFnIm wbwKR4V|D-CxP&FdrNty9r9?#-B;oSOxhXk(Kpqbd9}7D-2P-E(8y7P#0H$J5nE(I) literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/handle_packets.c.1E33790C25DF3B92.idx b/src/.cache/clangd/index/handle_packets.c.1E33790C25DF3B92.idx new file mode 100644 index 0000000000000000000000000000000000000000..4c45cc929b97c8e278d2c812b2871184ad469556 GIT binary patch literal 5866 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 literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/initialize_client_connection.c.1EAE19817E4C6370.idx b/src/.cache/clangd/index/initialize_client_connection.c.1EAE19817E4C6370.idx new file mode 100644 index 0000000000000000000000000000000000000000..3027a8b5e7c48a9852bb39f805dfc41c6b87378e GIT binary patch literal 6236 zcmb6;cUTnHw{v9>7Dhl=W+}V01t}{af-Gby!h$X$3zDS?MA{;jMWiT*U?qtrh{leH z2EneO2@2}7M`JMdB*rdi#NHx7pT0Zz&desi@BQ)S`yA%a-fK)x_zc&NFPLNO&G`OSHi zTW^W_U`yJaeeHj(^QnCK?2U(`$u+0tH&4C0e@IlCZBtWd(=YFtZnyRR#g?aTSL24g zx}K?DHF@`|yu->R*J3|9h~xdEhm8C!bnpY7eQMn|t5)B6!B_s}x~Xa2*SYhqUy$jZ zTX5_8&AIQN-}8PxL+7?ZvFoAgs@;xdxbr2D{M;-QNKW1=g(&VKjSb3>x# zl*x7TcmXj%)xQ@P>1I3~$De8C9)71OKVn^2byr*S z9odI(Epir?FZu9|dyS{M^5EN+MuE^MWJu@6M`zw#dUL9>zb{F6`I`~TtCoJ)Ympye zy0ozCdy|iU&(YguGDp%?aDIbrR8-ggg7WX5JkHC%baHp@y)R?mCMT;imW5uG&v~)T zT652{c9?SUyUV59=&`ZA8oyc*~U~2X)%~PyhAN@j&b@smZo;PY%DdZxwzc zZM?Y7`RbfgE!pzGHMvXP99CD%R%c(-*&M!U{wb&C^S^~{l?I_l(fd})6_JJ#voy_` zqaDw?3)fE_KmE}C#uu~ubk3blI#f`i$w)#3K`w|16TVLq8WAIh610_>m1y9FYiZ!= z*}uAOTN>ZSh>&2irJd#QfftY$x0?k9R{S#3h%m!sp+q=p;05HAZ9n#It1|F2B0Mo! zU?va@ynsCN)#}5Uoe_~nga;;DSXwv^ynsC1#wAyp@oh9kxDy0zJJ{B4;05Hs`lC73 z8~#q92ro=7vM-WaF4A#Xq!UE&1|j1SrpQuvMrz+rkFO~UD1wh!s=X7 z`FQL;iWrW`8Z(V#;05Fl^1B&-srt_w5$4!EYuegs;05Fr3uYyU8i!vTOqgJ4T8|bF zynsyPtFsH1;Z3{-NJsS}n85$V{(6iCR6#4ZsL(C)|B@SR0j+RIzK>)=zzni+^_G}6> zWl6F|f-FThAkPNm3kFk<*WK?~-Z})c$rI$s5DrC`7?ckNdh#Ef;B59evObBeSAFwWFGjO_OL9%hcMA2&yZw)dB2M(VawBA55 z-v;}o;;TkMFl8R&qO2~SV$ey_Bo(0b`d>|XN%q<5QgkMnX$eb?vqolVL26R11!a@j zT2KShZ$KiD9P@ICCZ1f}Su1{$Bj_60eC^qd^H1F|I-Vcz3uxyVU!TiM z^Y_FhCUy|JaCwn9O56YnNs3JPGJU@%mTgDQ?I-|TXm4pS`E||Q5xDj?BXTn`1p>2v zWTQ6RgvcfihSLxi2Xhp1#o-m|H6F}T^ajM+z!h3u#LZvR>TY^tUw!R;gCJmv?m(gr z^cldolM467^AY;cmKt57|vLT!k{e9A7s&9}OOm%bE8aeP@m zS^i*wqSb!tKn|)$s(O?JaL3ep2hO^* zTZe{#3)`RQZZ9|z?2omLF&ra+yiMqwGxUl~&7f0wDQ18UHtEPwg}2G@5=l*@4xG|X zM0Fw?Papj}iso3cpGKWnFMVFCf1|ai&^|gnt zt8ahtuVxYZDlxy?Sw9Wisz6Z{Cjaqg1i#R*C22k38DnUMVqH#LLxs= z3}{Jk^rrGHzfBv&R656>*-j-Sl(DZXfXW6A^OG^g$ARyA^mM! z&n(~m?np+_mOLC^6hF!a_$h2?9X3?Q8WI`5dpZBqy_r};96!zn7#r2M|2$ajQh?EQ zh^#{<5M#{Iw{edLD;YupKfww3;V-T%W*&oOrs#zzU?EBX>7Z`!Ey^WZ3$b*jBr_1C z3J%_?3-?saV)k;OS1~7@8JsESpa$gEfC2yxKJMOesp4HR7D{kQ(Ax5e!xGsza9?pw zVq0_HxW*f#puY|(~WQBW%i<>+`CYSX5-qo8(<4%LbeCFT~$iS0uAyO15!g8QD7prX;+ zI&o&B`O&tJE+)^3l_(R~R*hKPVqWBQ1h0Jya%n*_AV?yETfen*IEm$bO?>U3$ugrJ z)q#Y-R{E!x&rV+RDJ&nuk8uDqAy11l65Ya2V{|PVR*M3G|LmOKqY@trf5xXsu2ZfQ zg2A&&RNf>G%6HE92Pk0Qf-NsQU4F*8n4<;)7KJ@>uX|qdGcLReG_-=-sQ>>V)2+*r z@Gdaw!m)G#B^|Eqb$06aK6V z#~5uFJ&aRVEG~8hCgyn2EJOtWpKBkXOte1p3y$(Dr2iGN214J-;l?Ys>^+aI=KAHz zVO1zP|FisXfZ+O%XDa6I&&^aajcg{DyS0e7mK#UBCts{9*YUWBO(yy#vW)|TNrQj< zMnKU{L!I0?T~3pnN;zmX8oC;}gU{FgJ7&=6N48h7<~HQq##L3t*Oz-r!ux*5!Pt}b zCY-#hzAGP~TKVt}^C9D|VWxEVbao`eLya)U3s!T}cD;}a?>%?0iBIDo)I|?TUznCm z-DR?*DxC&srVt})Q5wL)C+5ww1|7PK<m}{R(q4vMw!qDd-1_y1 zof_9QPn31{T)mH_lO@S)n~utETWFDR{XU+3v@hZm9jG5@1mPL%e%=*O{o%d=MGFiB zrf@5vXe$FNQ@H=*%OEMHKm7|Cr43)zi}%qXqey1@D;;b`=SN?PLVOwm*Vk zPe+1amx>_RZb=YqMH2+u841FfQU2+1f)9dlpY(YyXE zv0B|27h>+X=vFuP&{#_FgM~c=p1q`|fF}Ejyx*B|jg39dx7ISh2S}J*T`XVfexO zy;rVT{`eyJnE5C^S`{yGOr6;1vV(gpHjvSy!bz zQW8NH@ zbkxq-Tz=&@S4Z1z&*yf>1}%^K{nVY*_BXLn7nm{IxPuqcjjOr0o6{t%jn#jS{WDpT zQu?d^xeWJ^e?NV6)0mFkyU}jOeoEA}%zS?4vWN2QKxKmL@Hy+(^S>*u?8q+2SQQFY zlOHHy<#nf2(lIwEqsmStVo#YnO_|FuD|0hKU~9&<>~CxMHL?BMf6%dcU_#6%lyCoF z@Y^pdX>InkIT*Io{Aus<&f{~;=nNmBj~^QKICx28*K3BAIi100^IZ@I70NdtwF&Fq zthv433dZW(bpB{kiCxvh&-OLXg|S2^p+ynt43$o0Kx+GQX>wn5G#kcxF7%8=F0;lQ zLq&@XJirW3#v+8bdg~3`zAH|E1APOd5S~5ta@{2Unvc^NVq9#Ge8W<3pLdi5m%O8- zxRg}2w8q}MI=Vaf4R;PFS1@o|RkUHdOgIZ?c;Q|SC>+iZ;UZE&OtttU)CVzxeT#uA#|y1>Kv+ezro@E(T?yDoH#(t6!}AQXIL)Yh#! z$~~G94%jc+FB#!4FIc)v7+)?~$Qcz_KN> zb;!CpHE~npj=gb!wa!{Onn|roPwes5{Rw~rhyZfqGEX?Q{mjuP0u~F!3gpCh#YleH zi=R!{6Za%%GVk;H>#1*gRsq(eXtp8Wdm@BgJ)fCYqr+z3Gxjj|qrM+#t0C}$b+ ztqgkNa5yU<9dNiRJP|o*GaA0D3V3D04pt6KWW9gHcfIjYX*S>}$EZM5@a*=%>M-%5 zT)<+bScR~vOVs*P@pQfgtkNw&ikv|9T@^l*3KRrNkh){MzHw43EC5eZp_HupRIY1Q z*`8OM0m}#(X?^kBmp|<}YrX~WV%lOZikmPY6$r*2{}r$+;mSq6`#|G;EcEof{Rq5Fl2;$m|4HQa#2z&9XmU2boU$r>i}6mG_t<;gT)uIoP-*{ z@)&s9wmXZY$4W+aJ+8|1WE5d^*rBmqMQTjlA2-O#MAz1Z;7 z|1#=flg(Ygazaj?Ley<;{eLem>_cyL2#WL!XWveXr#~^xCx($mrAH&wkO|?9vzl_v zFFk<(UUIJ>`uqU!Dkv|5JOph5A z$@G{ZHK_S$YIV+$-(W1qo3j8#>PmN>u^MZA3HwYYlW7o!>)h9GA*JMga`KRT{kM|M z6aV`C6?pO^{K(7b!0XLB9V8kNh_fKCVs7$HIsL?W8ts3=5~K!{P3 zRdcwgF~K!)jqyMcqA^NPW1@KH@Idra69sRS7&T_A$F1r4_V4ZQqnWDyRlTZL^{VPk z$Vg3n-;I#usToxjCFUZU5HbY*W}7Rge`H6<=|O~4tzDPX^Xi2#m!HeM!pLR4d zbF%-ghu^v9MdaC4`zIfHaL9dyHaq64qtBnL>o#_+ZGS)Em-L?Qd4B7@iJfacwz6Iu z)xZAC-iFoPAqUO7+y4yT`$Xs7)_=%6(4g%xZBN)xtV_%)` zndf!iUHzAp)%b&|NhIWZE@Fx}bUf6 z8p@}4@SvD@JGeKh|2`7zP)*b)F)YVj9)|ffo$$?==2td+?q-iZL zSi1UHz5(kg~uK<63xt(gcU7!V$XT-qq51p@oQOWN-( zkSDY$%2{FnNT_3|ns26Dn<jQ2hVS(+_zKy7D$Ra*dp;h@XgVKhniRt1rVKD7ten}={~WwCG*mq!w(NM z?PN(jK=eNPM1Gl_Zke5pxznzEyLdx+*e;et0z|1+X7YWMu8$fon!EqgciVoSS-6`e z2>@|(a2v*VQ!d>UZ-H30?w$4nvvLj_+gUOaAl_>4B>onqyG3P)TH>d*Di2`BD5)6EO*Lr$|K4IsX1-$=fP()HLTLgULHe|LV1?~g3;28c?nO5$%*y4$v< z-syFvHqI|S&yZArOq5LY)O6c1-F9l?KvB+_!{F?cX1Ex`&#(NAB`Sb0O2(J}no@uL z-w-Aa0b9I&IT-T&(~6rc83mAVHr$)vK)G$8d@bg>327d04&Ha9b z1lW1XJPoq3LeP$u@*t`-MjEqGCBs$I)!rz=a5XM9dZe&|fK5XA5EaDIvEHcQxZCcL zo1zy>Vewc~Y#OqgA76FwNON?sW4NM#qT#5L;VM%qvyeJ@ot@Izv_b&AEPvS@*#Od1 z1|x+<3ak(+lxRf*MK@4Zp@PolU$6gT7YlZT%fcCiU4QRD-xr7Wy8zp)Gbf``=Z=dH z&lW#$1@;W-jKRo0yHA>Z)pXk39(K|vF94M=+!W6#kd-eU@W`oXC{ntKm+wFO_Jk*B zV&se$W)9X)uv#dbh-SD1I>8!G>68BH59r5gkjvxBl!Q89+mhL@j?L1J$_I8-MpO~{GxuiI@@Wd^B4C?R zOu5L$9S1jsb}G8rNYRayFRs=1Lx97u?ABM{02XVDtw)aGrpu>WgNf}IbP2sz)D=xf zd*OoEfGI~y_eBs|53)kXMK+{`+c-TMIp2F;cf{7iGr)%t<42UCO6Q%Ft7}l<&vdBYW;;<2KVj5=Ywoy zMx=F1A7^gw*4KX{uyf=&)^N4&Sbyf-?RGW5mP_UCxDpNoV5Kk(Ae-R~v_XefUXfoq zv1Syt2okD9R$>h`!_AbwIGlTwnb?c@iE+tZI)w!IB(52=R}&N+!)pPwjrHF_zqqvNATN|h>{q!`Xy>aD_wh~ZRH zl?sOrhEq$`D$HAkCH4a4c>dJT?&>n=6X|9qzU0&;$ibdIy=V~w=NN?q%Fl4f|cV9Woh&|he{ z{_{6iB`rdwluc$Zm!MM0N^PiFvRO7%m8{B!s+HARsjyM%C6#@1VD94z<%QM?gdRfl zgeh0_EQwCCMh^o7AYslGK_lo9p_oJ7ZybN^T2t39Xz*F;EFTdxE^r(SX)hkAPC4W9 zkiz*GDw{AIBO5aSmJ*zpKNr<^Xg)+Wqpa8elTMcEiS###aMkGI~L zYG2<4vW%Vy!7&NXC(NkA#4pO4Q_KapJjE(|t9hI6G|8N3ECoEveIVLCCKJ8_rcjE?&O%L%s)Tn;Z8V5)G#KsJm|Ub%s2 zBI*ZO;f{fzj@;W-{`n*O!Bj)K;qPc_=M3(dL+_q`C~^k9AsX4xdWVll5~;|5$QY4| z3W&0yj9TLe@msViIz*&m^f5L%W4YKc@mrj4oI#}GRq-}*3BCz7-%MJQ%?e4{Br8Rf z(QCXUdk4U)xa2tNyaV^B8AXEUvnz{dzbX9C39lEAb&e;*dg2MiOjg?R;ALaNm9x3B1%$G$r>I-(i2(As1PbjM2Lz?+EmgaOOz0j zo$?|)2^A`75zm%*?|)~ycgFkA=hOWy=lsrg?>+Z?PqSSnPwp^A$YH5Vh`(>}5)ML0 z75@bV2d;Q2i%`@cghEn_e)nHfZ>7{S<3V(|pTd}w1dDq=@(;cCw^to)=< ze$pqa_`rk#Ki`kPd`C@SJ$+t<`t6IaKZKMgMZf)AxaQidvj%1%_e?a*b~)~U6Inc9 zm&tvX$yXF3e{YDLGGOM6*wcUB7+U?8Pj=Mw12vkr%d4HEcDtH<>{XuG&&%;^;kRDx zoDF7y7Lh%FEfwU>Sy@q>(XfJrpYn!YWlW!s51gCUY4pw^HF%Bh`nCJov=eT9vgiI- z&1ozs@Y`_boQ!HxPl254z^&g3-i}C7sC0}!IeuSh>tzow#&*?M&&j&+$M2r~7PT0~=j3eB+$j6Q zhAS8)vI9WyuW=!?2;@EoqG4Gw{`>OY_r~;da`hvq07CJ zhUg((T{CT5liSAXU07mcbK~OUmVo#&yY8;G*Y|VgJ$1Qnv0+AfS;2)I|E=k954$dG zc^ux9e%SxTn}0oDSY%FiSWN5>ovvbe1?p*JcY_aIiC$G{MIyty+ zo7ObYV(guR4(qwki?2GSsako3lvWmZl}tB!^3Kh7MAprRqa&_Y1il&(9x`)tQ_n~L z=LbFG=atr8Han*E%zIDC)J=7%#pb@#)~5*VgYwq<+pYYN0#`0otW@f_HD_Bzw0pn) zP0pRY6X#Sn?8}giP)sY|e!2Pu?`eTG8n)oUy&3#uiQ4cus~0vL}QG{$-)W; z2iprJ&o1xvH8@>91f1%v6nh>qy&FRh;zPq^xJpmyZZ+Ius64o6&h9X`KSWs5=9 zhmLk;RGNML>)Z**{ctZQctwY={qFXrfU<|0=B3X{E%GeR&ggl5^605*`;sf>8}v_v ze5hRJ|MApq@VMyhym^6!{#dtyb^Qw#4!ZDUiuT2IVH2~55B+(!E=nWwT!dMw#nCgG z9FGv6DZTcy&M9QIzVkQOp}`4Joc{LJ+w{djT5mIR$5k})v>M!wC46}GaaoK;#+o4^ zq3f&D`n$}S>Zm{S@{%VUc2|EfV*cpGTYYTOr`^{`s6A>q=qKi8(TM0K?M}d)=Ol&%A%~kiT+(OYYsg;7-rniAolO+YV1o zY|nS|O+AonH-5C|)dL&m2M6x)Y41rs;e1ej^~JS&SIp|~_4w?ixB{bbm3t=C{8mfLN0?0v&g7cbj#&(^uO^){O54g5KEzKi$6dr3!Q z-q^a$S2r#UUzWxBJ}*dlh?Cv$X^EHIWKVoe*4NE#v)Vky#{IR4pl4jvovxg2n_aWN zKVRo9@7q_G71Kk-Up*vt+ucK(?0%I_oJO^V^jx>?5s_kI=!r1}t+%r_8|l3$wNL&m zTw!$5)vRZg?3&R$q>^Wp9yP1|)t03n!}E1#`X~G-MlyMks_G*;lS*`Sr}{nexp>j| zv`*(^PrEoZ!|un$OBFT@yLWP(TfUa7Mmt}w zaZ??suD>m9+-Q^UFJpa{rp9Is9rPi~M``%S8@p{n=6`Juc=|TsXY7lfW%JB0su?z)V>4vngxen-ieV5^_gC^DEzALslPbQPUbBtC0A_BTc9Rz(Tm{b#!r_tD+(JG zw#xi8K7A-)nbm{pIW6Zk69+UrJ$=WAyFE_!)?2%W7kpcTHv0R_R6uC|gb62_J?#*S zwgW!=L_c9Cu$`cVxRwJ@87u^$%%p7r_ZGVZA|8s8Fg1a36F49){va1-VcZo0bsL20WB1krD$+F`y>qISn3|srE?r$E;&N7(R-I zaY(ooxLZMkT#%gDK4fuC?@!0qd|4jaB@xsJ#*JY2i#hkzN+;%7NA#CP*4UiQ{WmL$ z2dO#r->g(7^xMv5(K(5f7GPUI6LE(r5zpPqC%PYSRFr4YP6^X%;JpT8#2u}P&cgz1 zbMwB6_QD%ilvotrXCM+LfO@X>w|J#=vBaPdItVHU2_v>x8n<)I{rA+cZ_`=2S8{Bf86%v2qH78OdEQh=8N zW{5jdgIJsMX-VlYm7Jk`lnpjWxPiA}pm?B~zIzIfdh|PI#zzNX0ul!Cg4D$WrR%xw zRQbDOqy>v&B}xte?*LdJuC_K&a*KDjyi+%8v?8*@(HC$8mf}Gi{Z*oQ-ur!(ez8K+ zZ+zs8-HiZV1gMh>Rb;1h!EcUJ>39~UV@1N#pn4hvWIfr@Eyt19^c1#RC<> zj%j$lcEzJfJd`34@&j~#z%a3pqc95#QPwu?U1v1OiA6;crhkF`7xWR=h)c}%e{#yv z$SJ^82H9h$2FnaK5D(IIxw<>%O7otmDKa+>F{$QMgV zXOzkp<&pehIB!k9c=eC2)c2Ff3F_$<++FdihP`kZ1ghg8=lG;JH zU9^GmhV5HsX}0g26H3m6@=&6LsSb?m!1)(-;|ooztPQqC^3ZMx(;m>>14G12eUd_V zalY;TGG`l$w$KP9fqD|?Ag*pdv{V%C8&B?h9d!EvX8D7%d<5P{&_&$gY9vU$X7Sy{ z6Msa@qDk1b&(QxfsE~`)HPy4{%O9C~>|s%)#Gv=Udk+H*@<_B_s`=qK9!i!lWq^7H;Jl8l%ZIr*J~BEL zm+xJ_k-|d>5~h7%yzf7Ae=;XgAz}NhJQkghFdYKkA5;#c#KH(h28VBGMZ4dmzKR;}iK3-hd?JV$^%0s^t;i+;zJ zl>Qv~&lU@-8WwGn_|ySxhbX^}P$#Qs)bfW};r%Qg^3X{M(|s_$|DSvn?UjD(*>R)C zJmf=_JqP3G{|WQK%FtxNl9mboa69q}x_m52N&Pa)_PlB|#eGqGC(wDc#1jdRXJ+aY!YvA|5a24 z;H>Zsc;9eA(RZP`DzC2gnxe;iQ$!Q7V@4dK5#m8?u(&AM@x||qX`JwfB67kE0h|DB z@gQappM@xO;l+)?oBw6ea?IeN;W0=&Ag+Zf>f14azRQAM;x-bktAR_)X<|C9r7?k& z(9|bVKZAT<-ArE7su}Z>Vwn(VrHuLes$^R623S?Sm%oxC1FSHa5hODc=m~zhQ&uqd zbF+xB6$WkveIiLxP-7jWjwTc;66+9E(3HQ(;cNDpNEfbH12>s5q#9^VjRlcXntby1 zkLD@k^4hqJyl|%6Of@Qq6&?ZOBQTOa({dYsPpWJ}S#&L{rFs8Zo-B*k4<`}`5cFOo5C<(6DcHcTML>h*IEpc_p#)kGJ?|ISy4lDN8_lq| z+U2J+N|HiYn87GyFg*H90SFc>LLap1rmzFQ?!z23W_g`5c|jF+);PvH8Reaf4lU;C zq~S065D4{{;tos@VGin%Z{5NVyGMVv!GiiiN%<)b!9EfAK`0b^U_m0>L1QrKyH)6$ zgnD~9Rv5?$WGNRb4B`Z_G;XYL17`zEgUbp-I3X-GjKwZ;B7mhnvp5}cz5z>9B`b_& z*jPr5dMXO3UpgbCA*7fG8%&@MF?eRm-b{zKcaC@xA{pgK#y~0|p1B0^Of}GiKq*)T zK|(~v>(v6geovM=<1i&M+(c#o{UW18#-MA~Cuc0Y96045PbYvCUINY~=`)>D95xY( zqG6`+32P*%iBQ($7Bnr8TR0C34&#LJ=%!_banL^wlqh7N-ea+Su!;(%UUksBQCdq9SSmD=VR7KMJ%Tu}$&b31pW5IrQ2 zCX=Dw_=_Zlo5ZM5PP*jq7b3t#`6<%EulryYtLMTD zgCQH1Wdz-PS6o#9^C{ruTPG{7{o?=2Vp#b_9fF!X} zw1;&NkViy)Y9AD=Kd31j>(FQQ4XFkS{4hVkdxS#49wrcwM+g++VFH16gb@AhdfS{? zU!!pH_t5b$k`zDqT=YwXHT0llaX#yx34EI1@R7{;#4{_XYoXVy1434E@sj($!-cL( zJTrZuk@~<2_b|LY%s`qw?#ih3CKaFDi4DmBeg+Jn(2T_^T;VII&?V0bw=>Gyr5}n? znprwCiq7PkDO=R9=U48;F>{x5m*kA+e&d5jX8s+6gP+TAa~Va-PeCgV4Z*6!#9IWY zVgdoEgh0_L*3gGcsgo3vVuA>c(sPF*Q7ni6P$G!B$Z)aGV$ewltT3NZ$!CnHjTSeC zY2~(b#pAr@W#nZhouwG)9|MZCemorgMd!P!>_P0~5g2y_?C23s5iGWV09T^uW2Jt` zJ5!BpY_Y4Hs}^~S*s9@Ac(b-1Q^n^8@MA$h%MBKP&))|EDv%Z42mXB!Pz1yZYk*$^ z0!cY9d;mipzyt{dzldqF^fJS&W56rveJx{7HR00)|Ye-hGrAzhrnu`BcNKA0vq z?blM4QOaf{W#Ce*f0Te&E{CzRyvm5;LBI!RKJ8w8AL^ zqcSk1&vVY_G7(W`*YUjOFx(vJgj3*wBiPp@p`z(gh9gLNB7{PNguf7VLumG~DT&Db zc+sQ^zqXOHkyxnX*lwQHy|D^g7|#rdXNJ&J&I%J4)dWUBpXpY?`bYzX=v#Qdq-$xv zsA_Eb2^eq!w5Z86>)ozm)zm;*XBOPHf1r~ENM6ce4Zb@-lOmrCS)?)OzHXlrf2yBjkPR>anO{9eIP9yBCDCB{$Q0S`wDANms6M2Y5Fq5vJ$&Dw#cw}ujw^|Io*6L z#^DAnFq{H&7MD|ctzb^;D;5{YhHt@=R?RHldHgmQM7N^+@$PDylz&>(aS6cpP?sJq z9%de+rB9w5PgeSr2+oNxQ(7J*0WS##(E3BP>gCUY3SH%_ungqOetoWj{#BqzGmhxk zu&n_n>9J7*zt_NG>2otUG{e+iU3O}LX;PQlU_={OQ!2~eZkiuUaAy6EfF(W-aH zp)5P?x}_Kj2@f*dgHrH78+dq$k-i-ft&tS#c5#v3J1ojk&QY?&emc~ml0Q!4O(?7c zP9@0G)lIv6n7^;XN0ZC-a~s3_%p$um;U>u4#C=HebIZJDvdFyfJr;F<;T~YrY3Lpg zY?SF(8TbJc3K(vIbfeG`0UJxYgG3Zv1eictf`mXpE>_;x1f+EsZ31F~r~^n*ByIiS z*W$h(L2GnTxM1pp^L!aj?@lQMG$QPK?Ok+@qp<3&z}E1Cg)`N?!Djr?!Eub`=i4` zL*KFyM4KA6J~J(E1p`448}QD}%Sj(Y5rjJfLDqkBVoBp?owKq3RuAme+UfYe@w5(( zn)|7p>5mGMS8Mk@3$1Zav;O)s*~D=9P-wtdf~V9-07ncFJczWa6KT8 zjxl>skp4$f_r7z|{ZHx^Dv~x$-5 zQ_9C95A%=t-I@2=-8C*{*M*j;KYJdHw-s(WY&pw9QCR-skX22c=AiV>*80Y<jpwhE2 zqV6EY*hTcF#ctmVlVkq9EcxgP?lRW*MP*rz*8)Og`-dMe!*&dn z)U~Iz+`XMXbn4AWHz&Sf1b@$I-sp7$$=#5-vJh-R2J_G_W4#GDhVT&tXW6i3efj{N zPp{)w9#v1YYrQbU7Pxsbp8C@VbjS8xX}%Yfsl*T`;8qbTm7vB{R%5C|EEp!%jyzOg z);0Nj{6=@rFBn3A5FsH{3BEOzeM^RzqE-?c5R#L&Dz}x1AbZv7bA8K#5ER2X430G{ z?O9dE)R6Yr8hF85k~|D-EQSaJipcO(VlxLm;GJc$8n18lpFw z{=q!6`-rUxhC8#Jt!YXaJIope!7@x)|2G*7cgNf%G$k5~mOzR;^77$~K63%6SZAT* zLGzlEfeY1RN+B>45yVo+eRw*kFss1F6=mRD2G;@Vxn>pL%})0BBD-^v%3w5x%U$Gd zG%`3DWKaNf=Mv=x5j;CkIC*gJ%rIQ!A=1(b)E;Urq`+^K_31DnrS@@aP|2vBAD9zS zZbBS1fesAUmzn4fQ26I2i!;9E)$_>?vy60O6p)SzsFtc(%XYgF`Vtdmce+y)^HZmh%4f{LA0o%^qBV9a~;SPY!ytvMywp% zCi7i_L&(Y*1P%)Vf($(lgSO9EpZcDAdjVN>A4&|NFwB+hUu4<2YcXI;6cPGQu;JTa?H%Jno8HgJ+2{6+hUiB8wqv92ybUSN10X*{E2G{160d*QM>m)jABT&1A zcJ88MYsp4SQQ{k_(YlzQ>NTAIWB@I7q?*bO#+0kyN*&AQn#rpx^N(kf^m{1LNzp~z z$pRcm?bsOVkwbVYz#O2?J*{*aCQ> z7_L+)7sIv_UV1w_KmTJpkkJ2%>K{@?rMZ`l)N0=EFvD<`C(EB^^K5yJa2^QLVP?=WTg`{X+%n@$9;iKE40L!Ayd{w0>oYhkjEO7(X03%*0Hf!(R<|Xt_1_81 zsu0x@Xns>w|2m-#DFtR>h%gZ92g?IWl0Vr*ij@#5rh9*}oxfBuhI zz9kK0-)~Xrp=ZfeaD5>vDsJ!F5b~}A4BUm` zVhM#YT*j2~XcW!}w}dTVcqB8Dx=BhCkNs0=b6kn3Uek+-Mlr-xVdL860 zTvfLXkL!90YVv3L&!h#Cm`O8X5bL{<*1(DnPcg8wM^NEOYAoRK!;(z98>I{>MyHVS zrD7V%neu7f$Z@$N?Nc?Qs@wD`;u@BQx??fiz%XF26oB{!F^!^_QPbuSg-1C;Uu4nW zQfpRi?gyO-^Mu9IYF4dLZH7^H2X;p^Bubuxv5*%moR(eF?Zu*`Era0Ro&MZ;tXn#f zl6UwOh_>~x4TAfBZr{!?Uk;AFA!mCM)nB7J5hVxoEq_`z4jddOjsl)Bl9QIPf|Sb5 zNy$wje^9~*LM=CfP@9b))LJ7b9yl16?G_NuHn$Uq#12AxgxW9!5t7;ddWql<1WCzE W&6o)w2jiO0z%0yJmQ1$U%>M!L>AGY9 literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/make_response.c.CCAFFC5F73ED3695.idx b/src/.cache/clangd/index/make_response.c.CCAFFC5F73ED3695.idx new file mode 100644 index 0000000000000000000000000000000000000000..5487071abf0984ee366af09e47270e669db75500 GIT binary patch literal 1662 zcmYjP2~ZPP7~b8mu&^sxSQ5wpGN6CPmx@4Mc=|NqB^hlJ!C zBS=tccwtW3&SWD5K^X8;?o?!?qX-fQfWkU`rT_Me?(~5fZEDgsH@ot7#FG3i-&Mc= z)6fc~qp(7=P-*`4yWzh)Wu+Z>Q|*l5dEbovgSmWFS>9!(wSHJOePnzrwn3rPTPa*R z)YIMT@5=l}UoPspdS=o$i$)qYxnGG-x0Qsi*J3_?xNYj#tX&j&+VTE~wEDcDX5!Dx zpga1erwav98*-W*5`NOH8r$msL~;JE^2I~E_S{+{$3WrWrGd#Q(_aT^!X#EQP~Mah z9Y+N7JhpXu+l7B{{qU|Vot608cGs&(R>N{h=NXj+{jB|I{Ojj7+ZrQI1Xl zLi}9f@vyaDb*E5>HIU#q?j&sEQEjY*hg!UsDALlE8^PQ*{o>U4z%PM^QUY2+`@(Ra zPj0=td^Mi}FrmeWHVj7ID>UpWT}TwL#0iWz!x7Mln!T?H6#D)VM|U63erzJbC;{J; zZv|E0Ha|KPo-)t)MFq@z*s-CJ#24_c3l~kBy$)&Du&|hrLfA6+NA1q>S}A~;c9iKy zVa(?>nuegK6TyHmw=j2vu!XJbo4n;x87P4;B5Ys`a2qi;P^4N_n7Y6p3}f$lj1p5Q zl(~?rOX;D5F~Du?W*i7%NiU^m1OXC4)Ad>IEcZF)yI?DPZ`-UvGP7O-badn=J>+1?!@_RNQ zm}4lT<+@U=d-HQj-gi4#$8D4t;vDw;H~;LtY{+E^ElOPB2xafcN!iM>xU*ig>8}|kU)M$ZiO{A<`pF#jCoXI1g0#eJs=F+A2VM6JC&hKC08b3 z2QX$3gS>oNvTWJJLlyfyFHmMLM|gQo&e+98s{uiq(jur|b3=P8A!~IxTZ=2{1L3)o zU9dJ0241!LdC7|N&S9JhVQ-8fMC=ZQ^j4Ip5?4B*nLRP z64x>2500?kb92XN&5aJWTcsFL#&rh>zsHzX?%Z@FuXnqbx`$1u!x$ZxutF~n$P3i6 z1W`cjPGQ{^@`ZzY{V1Cgz-)kDYS!}i4ZoVVW9+h-8C$}& z0?TGbSwc~CsZXjdz4!?b;TjZglQB;+q&#rY2@ILE`5B0uIGYf&c&j literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/manipulate_debug_flags.c.CEC224EB912EA1D1.idx b/src/.cache/clangd/index/manipulate_debug_flags.c.CEC224EB912EA1D1.idx new file mode 100644 index 0000000000000000000000000000000000000000..f2659a6de6e226f4fe0c46349190a63e892bb8ce GIT binary patch literal 674 zcmWIYbaR`<#K7R3;#rZKT9U}Zz`!63#Kk2=na+$147-7H6?1w6PUaml5SZ)#aUr{f zg`T;?qXw=Jk6bOsC34Eg=c$D4RnULA@YVk5EEk_LJT;Pfxp(IF125hs8;PH5^Z53D zRiEWC(Xf>_Gw!hjeg9m{v-ow7VE|Xj*8017T}JWZPtEkN?XLM5BKEp=<5~H}eRr5e z9i$huRbSN8>0jl%fN#a|2b07-mVV-%)|4I<>ht>Cg_9*WTAyu8oUD04;OU}`nP$w_ zteSN~PaZpBBNvm9UcJW4>-6fL2du_-Rykj?Nz(l7@N|NzutCL&DXC5ef=)TiaeZWC zcurYz#qt{}RzlG#y=9`;)t5N>JK6j@^Wfpk{SVzTd33()5=$=YsR%SL-r)S$YL8At zb^1Ebu1fZ=fraO8)W4kC`$G5neeY}cs;V~bkbd88c4}Xr*txS)Vou$^U&mly@`?TR zoJk*8mlyrG#ZX+Co8$%zQ}^o4U48vBMm!AS3=AS{tZWLRdzg9lFsn0gGBFBD2r-JX z_61zIbEQCP6AyzJPzf_Dv#jVYW}aQlDj+5NU?oMVX~lDarky@oks|fa z8C<6bn>w2%%qkeo$OX0!s0|EYih;r)J7B^w=eE8}VQx7KG?ImzMF6IXM}(c5T>xfO znx}w;;jKx}L5i4IxR4Yvv2(!`F%+fdB!Y}BE=n#|2GWco$2=KtGvvQyViFbwr!c6c dqEH%0CFiE(@BwKa9zGU!ZVpyX0X8mXUI6dU@ecq1 literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/memory_cleanup_background_service.c.7F1EF4943D2DA07D.idx b/src/.cache/clangd/index/memory_cleanup_background_service.c.7F1EF4943D2DA07D.idx new file mode 100644 index 0000000000000000000000000000000000000000..919025e8d74f0e71f33fc6efe28604127e1223e5 GIT binary patch literal 2616 zcmbW3X;4#F6vto4gFKT936DSm2_y)CglvR$0)%Bi78Mj!sshR)paQ}Ws$%Pa8^tPW zRobaqP;f^XWZXuy1>1a32{Kcqh-*Qa(m`d!3epyPAMMSbTsQu0By_iCUMliO&QrD}bl2-(5BbjWtZH0009;obi9hN;@c zZrKLYd)eKp*_-yiYm@h#Ilrhs>0pRSkTY37G|&JPhXdYxE*t2|d4D{=J;rOGqTTp( zq(EG=VtGPeL(4LJmLYvN*yca6)}}sW-(M=sSYDK!1uH0-TTPA*`)L5?jA5k8M&)gP zf?<1tp}}S`7?=x}VQ;M?`M28(YO??)gi8btg4t6aaP!nN;*|iF4c({*7!ST?Ij~ey zALun!nww{wU}4z4@bKmrX%QF$kN^M|w5^MOIr6lA3k#YBJ_0`!>~$ozCi>B4jujvc zOAP52nWQ1tP>AU5<|?9TPn{#&tKn*#kh$+{#P;IK0B;;8`8Z#MBH^SQmy1vUoK)b7 zX{0Cg66CaLPZy_S-yH0aPONFjzuM6FNF z5nsL$1VfkVdFq8|?~`B^bMVgf2xyM-j*3KPM(@kip}M#Q&r5?Lhn-2ZTl(I0C zuPl5uF#_^3sl*5a7o`Hp%^*XB7F)4DnhHP$fgllDG&WYy+f$~?haI65qI~cvg~$U= zQVMCJ6e0%;JI0m_+awvGLTQjR4lRlcZ?uXyy}fM4evQ|kHq6n+uZJme7H}4!f&h}2 z#7jX`?0PeFa)qkW8Yc;yaHiFZaFH{Tf|FugY$4cXKXoipkCQq==ZYw_$){8AUb&SC zNS#C{M`l3!2m4#*1(14oy$^c#gRW?zB))FPjPr~#pSqh-px*`S=gIYSMWWv}Tp3Nj zjMYH1ge&nz=FFpc5|`E6YGxenKtj-Vk4)J<=+`;IITrcVn3OIj2Vd=ngBnFd@lbY< z+@ic_infh*q$x%kW2q4;J(K;>83Tuckh-HNaEJ++g?jEX52gy!8>tREa#Y9z?64z` zrcP~-ZF1!)sF$^pwH_^U-P~33{E+z~?3C73>yG9DkfEYb2~F{wcrK#YOR94f4DSw@ zA}fFujXVKT$Pv2G3Y|I5)5xFe?}ie-v*|(N(qVBYlp>rfOh;S7E^TRi(Ah2gdsD%#n1Sek6xb{&)Vc^U|F5yrZcowS3IC^}y zF8DbNpk}MxP$3iZE^ifn@@Np6V?YdvRI<;Fn8OZD4$io~qTZi0xBe^|qQXhlzR0iO zn?3W}G9seOdABUFw#{d8T literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/networking.h.E8DFD5E7B8CBD7B1.idx b/src/.cache/clangd/index/networking.h.E8DFD5E7B8CBD7B1.idx new file mode 100644 index 0000000000000000000000000000000000000000..b346030cc5127f81844097ca50ec0835acaa1c8f GIT binary patch literal 1434 zcmWIYbaR`;%D~{9;#rZKT9U}Zz`!63#Kk2=nSP8639=|4a-W{GjuNd+AB=_aDVQ!Sn+U=3n|;@emh%TYkc^fTYKbE*|rm3 z-74)YkIFfHadXczXo}b5J#MJIvp1}_r)JXk$5Zy~vRH*5N4JyXl$mlHAtR+Z(z)YmKXS zSd{WUc%a2_E$6w<*?kP`U+pT2D|3^U0zROfXYFDSCL;)k%5zyi9v`9sDS&tlK38ptC_J_Zg zgqa`E0T#R#Vld(TZ)9^nD9i~28sf&|rT{a@9PJ#K-Ky@`a&?(upnjRgajp2 z`I&A_84I(zRG@Q}C6x`}!N#j5uBHd$P1?T0W{da4ETB#NJp8cmV$intpI^85Mm8v5 zcr7JiHo-gzR1Jz4n7i749C;ZM_`L;alcJfTEzCVUye51mqA%C`$Gv|k{WZ~ge;8qZXM=7tOlA;E}0u>GwKA2Z{ zcy%~*_+aKaR#y?G`km?p`CC!{w*!UQ z+1cT~o4b&ZLFug}CrIx*3_4)_M@jSXBFnfzqa}q)9 t;-chYcMwAmL_h!!jKRRbhhXx`Cms51xBUEMRz4m<0e%JngcLu52>|z-ukru@ literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/packet_buffer.c.28B51622D1E7F146.idx b/src/.cache/clangd/index/packet_buffer.c.28B51622D1E7F146.idx new file mode 100644 index 0000000000000000000000000000000000000000..7ad0c3598dd0c5703aa3cda6ded7e650252b15de GIT binary patch literal 1862 zcmbVLYfuwc6uwz@6E?X}l0afevP%-ka}rYI)j(wS$BTUD<5+%xJM;i z=x4j@%}qMGh3L}9UOlf>7jWr`ZKcCh%!acG=BA&>;=Q+T?Di>szJUAVmGi-i_C9Uc z-W;>b5$ucYH(bs0^*n3XE=QUQ>EH#LXw{K-hy@TW-W= z>I&WC-6kwOItg2*YRS)8F)zR|H{n8%GI>I0+1=&mxrt#%Oq=I)S5|)6GN{;n`ILR1 zEP3gLI=6(>2+Ejb-nj+W2AGlc@)p#V_ncqLN zy2wv+yz!5s4J+L?Rebd=cYDV5I^mRsPik$)vIE<46A!eT8}^%Hf1S;*uIGDY_NCh$ z`Z8b+4^-D|ygF5OZL4hE3jd#|u_XHdpl?eql{%J`-#os5+JRxb)Ebweucy5=GhpOICue6YJgRyMPnm9By*t z*cMeVGr#^Sd2?J%M+gK804T1J8#404JQ?{sug+O18#~$#ftGnJAtY-0DF&Zn20*&w zqx5nPO*HiMWoDLgc0mxpTrm@74LyXxAcxtjTvv^7`(# z0S=^iG9HauP(JL~`Q4@v6GO{=XJD57NOl?VqJ@aVh0-hvL6|x-@B}3W`k(P zT4pvZa?OTCuGt{8w_^{!`!A}3u}A5y^g?u3@9XJ-&(|LQ&nmR%c3-c*M^w8!cBdg~ zXuPui*-KG)Ekj#yi#w`Sx&G3su01U-TB%U_A??E3+xD$aHJoN>*P0=^wYj{DY(4P{ z(+VV^g0(?DRvv*eLCRn3uVs-%Xz_oWE~3|5)}M3nfA1;UB*tUcn}-TR<6~&o+lFZV z;r^B>d*0mVLW(<$JCm(f6efy7Qjn5pBqp|ADPJmLkwI@5gVZ5q*upX7a}fSGcXH~% z^bHSO@;+PxD=!cWbSx6_MDll%MM&noBR|bxMRJfbk2Oz2R@u`sQe1sF?28@KnST!D z^`Z4d?z2c6p``uPD)6>T0Mw{q0F>;JW{-aCaj`8m!;^s`=*{;KdJ5k2fnKEeZ_%-F AFaQ7m literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/pcap_open.c.12FB254C28B3CA46.idx b/src/.cache/clangd/index/pcap_open.c.12FB254C28B3CA46.idx new file mode 100644 index 0000000000000000000000000000000000000000..7b3c4bd601ca2ab650bd9d6e46b8da3126d8392f GIT binary patch literal 842 zcmWIYbaQiJW?*nm@vO*AElFfyU| zmdm!IY-}KuFv!>LnslT7Muu8yH|FF!x^k+9Kw+ z-x>_RK7H`%A%n@UPR;V0OMM#CH6FKfS}O23R_D=hRsMlZ7G&ha+*e1RHQEFQ8NnnUD zPf~fsbx~P_k%wQHTUZRHEis*;`qeiEeP$MZehz+Nm@o^!1cw9?PnJU#&Z|zmm%5&H zy9dxDNnS}wm_--&STk&Dwe)7<;g@ib@P?Vh!!K(fYYpSQjCo` za|KUko!tTy7T^~Er5!Msez#{{X^Q54W*%@@z=VPR0fq&F2MP-qFNH;Q+u`NwF9J;x z=MWcxSpcIMxlkgb=G32j#oSwOfU0FUWZ-dN`NnwX3A6Q|fWj;SEDA8Q_rKZl^Tmz7 z-+;oRETa4{GZ~6fa}q&nii?tqm4P%Pf46G0Z?dk#DkeSw20oZ}1_l8HGdVXU2PDJA R!^6bN$;Qmi%fi9P4FCjP7g_)S literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/pcap_send.c.51C51B70A6382404.idx b/src/.cache/clangd/index/pcap_send.c.51C51B70A6382404.idx new file mode 100644 index 0000000000000000000000000000000000000000..33f9d193640861d4bd58e1f42ad39ca797637427 GIT binary patch literal 632 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 literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/send_packet.c.ED568F1A8FFC045E.idx b/src/.cache/clangd/index/send_packet.c.ED568F1A8FFC045E.idx new file mode 100644 index 0000000000000000000000000000000000000000..6b6c36c1cd806a4d2217dc51872eec762a5c4f4b GIT binary patch literal 11240 zcmchd30RKV+rXdue&7D`cIYiBPb*4`LPVmJtSODrMEsTAm`Ii^S%zrQg#Ouz{z(cE z(b%#tWyWV4>x?DImMmiu!i4ENPp|WwC$8&recyc7|GjYeJ@>${;$-DhnB^U8Nct!LT&B4wqFIM2NjxZ&5J1eepbby%BUsY&%EATSaazY z2RGZEyzA4YN_BUE#nZ{vC++lH65|Fv_fCrb=5_P;h0{71?aSYxKOU;b9oTiV z&#H^xtk+AsA31Vs!}597+Ya=bVRHCbW}BwZV-NnGY+8CN*<-_jt5;&W4E_1m54W!8 z8f+ptx3BA`J~*-L;&1KLp3hR9=h?fQR+mp%a6M(a)1G5x9?8oF{?K7_vz~8nUL8>y z@b$^#F(jUzU^oW>n(Rc2WxmATGzZk~9o>aciJFoT5cei~)&qc;Nk93%DgBWJmw=lNS@x$JK1tnZ|@{gJ@bmoq&X>JRHVuK#7cWTqb zDebjo+ApJ9of@)rXy)qyMd?m?x%(F^3aa??&)~G&T>bI(X8SGEZl+yND)PAXTjHrr z!SnJL?0U6} zy*S`-zm2n=O>7?R7CW2_{*JPs~YNcmATCV2Z)*kz>#(Ueny4OMsi2l{(`yTnP z`{n!YI$jwv>_NebX{QE%@a&9|4FsQ#;d|)%rL);zMTIF6nU%&ac5$ zz&aJ_ey&n;EM1RE4ua1?7{Z3sZ|{HQd^>hZLn`R6-@gT`>Cu?-zFoIGZuk!(CPNw| zLk_S`5HST7Lkg@^JV}MHR0!uKvM?U9aJiyHHpW3VrYN4|;mkZ-BtIzKAD{Gobf$)O zq-E2Vj%+5vinAYWN= zG}kw`WPMeO>7Y#qJ66A1%mi(wl6RnX2imdr)Z#JJ9#isNBzLhnmp?`Flyifcm*Fqe zZ*AyY*qYcn@zL9x*efU=_2bcsOA}B(fpept;Xd>4Hg3^?h{5V$={TwT5pfM@*MJS@ z4A5pMc{^&iqe6ZJwMUd(hNKKF`1_BMJm!o?&BGU#ytJdunnjw;VpB#$zgX~F3T(=V zI4)w`3{Ep$XLeCg(9B_+mO$hZn8i63En~42o4lKOK5>&{Iy&gn$r@lghBs(Gz+NV` z7_E(VU{$EajiA2~Y&c&9ausY@l|+okfOs6iIRX17;4sE&F$wjP(1!7-@xt6EuZ4D? z7GDE-4Q5O*Xr!j!NdJ5{B;o?s1>ISDL|lZHi_nD?s~mBqzn8|jqZ^$iBfloBm|FB3 z;Ww32(Ci>O4<8MSx^7iDg>((+ub|M7NJez3jm9Y|9q%&Uo5|E-_?&RQDrzxe6+~=S zG_nZ#EP^4tcpOB(_wTvOy{iAcFr4Mzy@XiZ$sDH(4Vc0 zTD%RRw;_@-5i7y45{wwD#ii)F6nk(^#&O9wi}P~qyd3*+UW-%KQftT`WMKac9L_lt z{WCF?F%h${YZiKO&c?3UoT)0K!$$1Fv27!xrM2jt;EB_}~1E>-kEx8Yd{ zwOD{(7vN~lIs?G@1b%%&DL;i>PoX?zMEn(-{)+M*AYuuImGI4^7E7^xDfZ;`=?n_z z3T$7YlpI=I}G??2dF#Ia)aO<@-I#D5@J<*F$$}-A|P6?L;l8)iA5kypXM@ zZ4XZNp7sh#K(_?!%G%jgcHSrHg;{5Mmc(GI7;McgUNvf~u_@<7l{Qf&^T7%C51eje z)0v(oM>q6w~qoj3f8>Z)o8LB?HRLE6f__GEjD9EiyCfoUzzJ$ciuX^#2&0B z6*R5_Q_k-}|Go14M082Sj$FP8O*f%p*qhLG6MAs@7Bt?V0=mCb7tMq`g7==Dht^VE77TM<~`UdhC0{vwn38Uk)$v8L$@C@6~JZ$G}&9 zHfk|Q9V9RAr^j5lI$V~~P60^(g<>QENmOz&kYpvNf;JUQS?@kSJnA0~MBD&m1AkvF zCZm2bwq&zL#0(@EXv{eiNv4vskYp)254CwHE1FuYZ+Qu|yxIb#yuRfn;tABA;Bv`K zkQ>VSZz8#=Zy1jadpn?YGxx9bK2;#4%6z(nYVjHxTtnG*sKt9|e2;r}4hCJ~wIxdjQavB+ zJXqntRiSegc4x{<#CPcY4!g6FZawL-=JCez!PJ2Ib@KCLW1*f{n{kRtD#5xE+Oq*j z2dCYy*qO1P{;+4}cWMUH%`!(jN7j0`5f#zPp56(g6OsZXg{vnKvyo);

k43Xb|Y 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 bMi?_`Y=m@4(-LES14GiVQ4>w$21fr4Mxt`6 literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/swift_net.h.83A22C4E96D34E3B.idx b/src/.cache/clangd/index/swift_net.h.83A22C4E96D34E3B.idx new file mode 100644 index 0000000000000000000000000000000000000000..e41e4f4f0c413dd34f7b4f0b0923dc2777236d8a GIT binary patch literal 20350 zcmY*g2V73?7r)PQ-{yPYH&BmjIy$Y%ruNr_Db4RWR|M|Kj%L8=&jGkJ?}l|d(X4idA^4B>DhD9AVKIhrO%RC9t$U`1VJ!o{}wEq zKYf&;ARKoPgeBqUYCf9%sO|8`n6<9QyN!u`+*0xhdwFu~(d^eTQ+h-i_Kca8xg}xq zaI+)#FMRkIW7VVm{H0{f+Kv@j3!a(A?rhkh0$*^Ph|BtNq@a&EP5ZotwRQ6uEhW?O&e$I`q<$lJcoq+F_Gw%rscD}kjUBD_56_CseO~_LW6kf^)7MYD7*$X-=l$)wuUt<3n6(KV*&<#+x@@1VJ@k@*}2OX+`JSouBw}VVfe=(xog~q z=?`}Zc(VAI`O?MG>z#3d_tv*txa8fL8Rd-%Gb8%%``~prV7XC2!NRf9i;8JY47|eJ z+{w%f$J6)M$-Jf4cHGBor`4<0#_!&d-uY5^cEtJ^lZEroS^U*5aIE%7P{vuOy57Ak zOp^Bu9q4d>fm4`4&y{JQ9K@nXw@BdgQHYeN9ugWN*mTE2@9}ZpiHBrK6Ka z&+c>f@&lXe8c)$KAbZQ%^~EE4-@!b=ZbcHSbe~8na8x_PgNT#YR-HXwSC9% zq2XB>2K}W?X>0QTPPW_MWBXRR>sZ0{f-cE9lg2)6(%!zBb=u-nW&-FoZ3kM84a&+L` z6641!UG_X_8f#LT6M4mI@&xsrUPse?4(~sIVa8B%+qY$R4aOb2+V9ZQX1TR4fBKc? z*UiBw;Ebi^zxSN)KFh0frGHe~v{S8ywpO2gFslCP@xQ#!^q(De;nni;UnSq>uUxP) zm5%=WY{vGcu`~T_wIwr;D7=MEVD(rotb23PWHojyqq z4u~_myQC;<^n@*sa_G=^Ki}o#H1uu04b2iwqB^3jW{;bpb z8cPPJ*k4_DW!UlNF}bCGZClym-8IXP#l>kA8UJm3lpoorZ1b=_W&KO8_D{AlzgpTq z?!vCP(~i-SahP4Bb>p^0od4?lzx+M_y?$-7qA+2q&!ow(X(mfE9PAPM%iJ zHn+>E{E=I7`|4ROpFO)|+JFV~+wZxSmQ*+8n^t=|V&2eJt!Dn+-n`>pqtvbq`VV-t zW1r>no>$r&Y3-D?EB;aBs-=7HB(Ge4uJN1Q_k(x4FTH7e^rLZ>!#abjQend%b=R8- z-{TDr2wn9WC$9Q?$%6SLsqV+HpQ*omn+UMV?o_F3e zE5_o%1gjN#1NZ#3Wb^{}?up-49(KI%dON21rspTC>skDrKV8$Sy2Z5tqr>Wv2iIaZ zlx3t>vwl#+An6Hxs6R3KnmR3eaJgkc!Q;-~iV`X&-I`$H^R~?!uOX#{x6`N3)Q+e) zIPTHPDT~EJ--24sB+X)X|J`%byeKQPi3ZZt4-9o4#7pe6Vx38lKCd^&I;(br>4jRdqG8?e^M>z0Z5cl|( z!2zvr)V7RjUSs0#Hm;ff>-@i!Z{lBdUVEy#|0CCrEsNKh>}xVS@pGqPHEfp;sC#F0 z`+&x(%U+)s@7n+GQla#hweQs8dIsf=+4~xQ46Xa!&+PAqSFYw9=rZR}fyuc>RpnnJnlF69plaOg5No!=Hi?+l2@MNhNx>+Qw=AJ#v`p3ljkImKeMx zb|`glW3%m|3pFzR>E>q^tvHEy) zcc@!MY>HnWBQ49^3g&IGX0Zc*q9-?XLTUQ+VMhAGe5kc2#NY|BN2yb5-a_`W?zd($ zPh~t~XK3{^v|%dY65aJly%g&?Wv-ElFaq4QQ?+9a1y9-45yETZik(Z--EGDjYlR}> z52ajLXJuplL`RQL1_u3@6k%*4Y+}`#%05(uks2svZ-*6cCB;*gJsdee(h3hqPX^5( z^)pB#l<3gK`Nr>ymlrYAf5eBOW@%tpS-6D-{k(MaY-IbgrQ)<6> zW}z0QLNSL{8_N1DJas(zzIK{=d+1P0eW4p*?h=E$q&7+&+`EZa;{UdYtSJe*D|^KW zQ92>A&e+7<4SR*du&1AXWZtN$FH8e}{}}wkDi)qPz8Viax!3E3K`pKDlLSH&xog~6 zUBDBwK4X8!0j}k(tYIKQeeI*x`zRYnTq5dLr!^m1hP&8kg*U{Tp&Cn#tMMly&R?Xv zjeGmn(F*TnKf9>?F4{enaEYi_%fI`#oaJGw6|V9=6F@Wp(9B#SY|Wg4qE+TW4EC?w z88V4+Cb38*Tq4SOO1BkT)`v6He=;hIXtD_F4qPJY=%KX_x<@v*hmO^cWj%#hr$AG4 zi70x$_Vm?{O6!BKRSXqNG_l}|OGNEgAG(&`M{1xIQuz2ur`mL=EiMtZ^^WoS_8u=9 zNy56yCVWh#$JAahs%z8|n{Y|-#%I%}mN$mxkw;J<(F79KKwP4`Zd0ls&rDg^R4crb zt9CoJ+D;u)373d+N`Cm^@y++mw8ASHwUgTKq&-pzmx${6Prp%XCZ24e6^_ZM7-}9v zS^aZ~sCExJ*EgRsxTRLONj5^i`9(~B!NBDbVIyCh%DUBgRx3%^Rawpiu~CB9T`+27 z+9iPQlIP7{%Tj_uH(EPM!nR6WrYL2K4F#i`WEj@R2zTQ??tKrn)(UszMu;Jr7{aC= zE-}?J&wjVfc%1626(T7#RTOcEBF#`D>P=!7k1IVcGSqJ}kDp2h~;_nBN{)*8<*(r ze5TRCwp-)7!b$^^K|IyOQ&vze5jEJ^+t@$uB|{zHYwrf4*#O;^ON5zqKNi36)t+&rdeeJojyH@zYVLyoG z2Qf`0Tq106SV&a2*CpNcg#dYCA8#<8bz6AqOp9l-J4e)xnAJ;PSP4^S1Tlz!M(0uo zSLD^8vsf^-w^oRd7hZ3Tcdb+cPfX6g^^z$+Os+7*ExE!HsZkKK%G|``HYYE048uqA7>TlS@ST1jl=~+J0w* zRyZh6#HmD+3MeiS_2jyvRr8n6N9qfHas#d~SixohcP;%$g#B85%{UxvhT^Uc{TuXf(-%CTdtD<2*N81j zol@+tmoqZ@^maF`@RBEclv*97O;ZV%m~8cZb{{)_`+e?)HE9!flGvqt7UWa zeD8+iwZap**$)%VVNxfRaEU0(ty1jLMvdLszH3iTl7!&Ox;QFIM`4#z&v-1>MQFc6alV(}T)4=&MDMa9hf1q)kEg$)6WB0pN!4;q_GMEQ-Fes*!gmD9As zb>hxY?}_<)=s8>>%H?~~>m&Cb&oB|XLaufb)o$q3T*^7a{cUNymE8a{znL)2!A9~1 z(cFOPi%axJY7D5+)Fz6dUd!Wc2esM(qmoNRId&ctxia=XLw%NK3P;J2)hIj>;bXJ- zaqGhuz4V11kgp5G-~#joE_G@wZTPtpT{L&Rw8B?1i2*&#J?il%diuO=^Y|g33m77Y z520LQpG!KV5-t&Do9a-l?a7o`uqMF9e5Ph5%Mv^hu`=O%`Xukzxmw|Vty;{Ngzc5RuYyVyl=Z$k2E(!U zMf#t(>Ew4|K6EQMIr&)ouxJ-v&ctp+gKiT^3fMI$aC*SVsH^=E-rPtO+_1FuT9%4 z%e2B?xn7rOmav?`6J32UoBf=@-f`G5YIO|u z`dlJxVUG?G4R$pOg3S=*ERGwcQzPu{e9$Zb{f&iSrff_=;@=BP&%~ zf4WoNJPi)>++dmgbGM1$3N`kZ>Mu2a$~A^lOViJz`#gAA6s9Ni2h=X2w~Me%GM74a z+fpwiw|~T6;d(+Zz;)B>#uig}>R`UPw)oXJrG2<0tf|ad0hJ191Hs7FumzUj#<@YB zv0fX)**q)P#}}gc0+RukSRdY{o_j3X%-w4ujD{3Ds5;c;&no$!5nuPwkHS~caJGX! zmQU*EljbPVSHTT&+sK-3vHHSN@D)!C;vqpUbxIKKWjD`c>xDS2aGW2FHW8yugl*Be zM0XFD9S`riE;~+NSR)Uphs59^VUq!uI{sn~1%yoR@L(UDFXRE0MUApxq;rY>`sa;k zUzGTMzlkskvbTq*_COz#Y%#H3UcVK8K>v#PVipK_+K<9?p&8fW&uM=i!5NUVxlP~W+>5@OScZ?6U+Qg zYlYkLFpebJNT^ya5tX>Z`|O;yL1$nX%gvNVZPQ>JbBVBKhumDfyTmitH+i%tQ1b-J zYM)C)eO$jOd-|pHb0$J3$bNTKcQ#YOQ_lV&C0<(iy`s~r|F9hegMAWUzanFrzoo1*)`8aimXbzFOsf0^J zwfZt{u}V0X2ir%e-Dkx38PTFdluh?H&0;?KT-6trL%l69Sil+po;p?Gc0Kj|6fxkM zR>&mN8EA~*7wf>HdVHG8MQB?T?8X*y*7Syo802pPqZ93+UoKR z6M=C(Qi+Sog)KYqlvBg*Kk4Yyo|8NhZfb=~@~Rm`>jpt2lS@qVYfe*>t+9t0YO9Re zNKH3F6pBkkS-&c(S^O~X7Ob0c#h<0s&qBp>iLm}HTkXz}+TYO%SLB0NAk_rI=738? z1hj1Uxs=t7a^S5hQkJv zOGLddF(vzaJReHJ*2=sUQK^X9!i88z%$i}s=fN{)O#N3Y{F0a0QsPufTv7>_=qDT0#d&KqP1Kis>O$Dt_?hV{?iI~ zdk@tH0Q`jC>C52&djDnklRi;faW`4V?z{iX<;ggbvWTdZ>D^*#@3+=fXL-uAXDe zj*mXY`a-BY&wV2X-{6SGrOx1PX7yz7w1_|kTmtT97|dYZ9-cawUCCoQJbzKZFuehD ziWr=NDUM4W+`vGWDG8n{U+N2s0GC7zl3;_ur4DX<`snNlCyif8!p_Q;-XTgm;Igur zWqWMt*>6+)^(SR#d4hLW^u|n4Dj_GXmU8V6}th0CnCBZI&iW} z&t;!XgukI-I;uLd8iJ?XC^+vP=wD#tHUHZut?*X9v`Q!T>BNcMAjuMaC0VWUD!pq} zsue2uo++5v1;afVmk7%k`EE%gw=SjnLSINSnHVHPjdQ8f7e=p$?;V!3i@EzCFH=v6 z@l)trT%xzbn}e6Ve_LJ#u@`x+Ol7k(1YfvBm|)#*kCon;FZzNPB)Xa!tfs88xYS8B zr{|@N7?TxW;j#=`I*w}NV1?lly^+=rLOfIEeV2p{l`Rw`YJy<8Z=fB5)BXJqZ|r;> zVt+uqTF%^QYJM6*V_c%U`5vANN*Yvh4OGSo#Xz~$XFI`Qq7EkYu!fo912z3X8~zDJ zu)AW>^q|-fZ?}+=K$t7eM^JnTuj_=&wyH}+u#7SsWsiC!CxD*w5^zU^d<0_jhlZeh zgbW0*$ixFhkDLS0D^vr;f-D0_g%b?$oQ}i-_(tIqDBmEJ0KNel0q#tYKtP$Evj>z9 z1Xe$##JrTWz!d>G1mJ?x1~6Hq4S)sM0(j&`q5$ZDBY+`(WCwtrGXwB2iDUq%JF~~43E2j9xrsEnjR+2fYISMgEfP$?hs-V3Bb!RuRS-E;%BiC86$kr@!?Co;k$@^ycoB*TNfBV-gb2Ly zKq7?5EHeK=`GQq;y6BiLcKUP5V>bX|^GvY|-VGx?0>0$j2+RljHk_)%X&v0*FvUr# zK1u6fPz@;)(BBoNgz_Vm}}%ifSz+8&=YbXz`|({I3SSr02WSlz;2IJ2e4$xGzYZgX__0> z`7x*-SQ;2MsDtSv?E&VS&{QXRm;=?!=viu4Asa7F_TZDce+4J$+jB_ZT6z&D(> zfTcm&0$4az0c!xM3Si;%1hgPM0W6%7fEJ`AfQ7RVaQB7tG~`VoA1Halz6BPAZlG9@ zX&|Q~vkb5fV*31h&pqbf)?gWFIFc-l>&yG8dOxj!*CR}kLDdX`c%&FWB`VAUB_Sjgz&D&nfaxHQ04$t4fZqQ8 z)^_>xt&h5zvT`<2HIeYro4rm@O^`4c&0gJA?h+1D_UftflrZ$eUT3LhNw^lU*Fd5Q zBog*TrdUH%Ylwt&i7J*zI2f2Bfv6IQgwb85$ResNBH_?uibq8C zh)5V3V~S#;Dkc&}l9-~5NM)ot_6VlPq^e9R;Vmdr_=+8T#cqFMuq^AMaiD01H`>Up zfSTiU3fwv%odPVJL4j?D3<|Jt(gY3-Bu#*Y^CZxM6P_Nk$m|HEO<4}T)LvG2AIn~S z)IL^tkH%g@h&qH=;SPr>_EGgdYK0Rg4hl$7;ZrD{kxT&=pitn}11S`s=d=mzD@dCF z3#Uq;ckDG_0fGch#z>F=Jts%tW)(>hVBtgvJVzlB0xX>TfaxRo0W6&GfEFY?fTdg} zJK&Hq&uIr|Sh`^V62q>9y9ELFu)4IYJH~;6PO~M zs?wm15>g%K)9-wS%_1`nZ&vuj* zb5+l3|f#G0~XGP!Lg5Q7_a~b2Ir(g&$9VWadX{atVU8*BsIqXIa5SY zRTMRMQ|=0x;tW-tq2_olVv4g=b(WfAR1^s{kO(K!U>qF_1=Xx@XO!B+1p~g}Oc^W; z&dgu|eheOfkRJnjnHHmXLQV|mIS&S>D&)a{Md7|ECwt_+fQ9p2@C=N67qD=W3m(~! z-vSoSX~C|7oEETf9t%#R$YTKuuvc&z$Gt7gZVF{ZDGjUK45H2;c6dT$ihQEZCw6#` z#}oxbT|n$G@Q4%_NCfCD_`eWvLIgeMvf#KtE(=(I!GcwcTQtyf)(RE`Su0@SOck^s zQw5q>A*d)t!8H}W0Y(b;J!GVSo|8~8Ur0g$3n!jnDo8v5i$XS0ni9z-VBrK4{00do zVBwq++#4XL1S~)$!E-#aNI=htBiJc1hcGKBWRc1SJ4LNe(KZ;ZVC{2-I$WWy7^Gl| z5V2*5*!xf5pB)NB^-j_LPXrV8_1Xl{0eAZBlT)JllxU9!Kjfo8&VYr2b%`t#&~xGm z=J@2X$UC7&>2f%3)-kN}=h((v4>A~JspK9ewezCEdGU_|qeRf23QtABB1Hw#;;a;0 zq>+^Z7EVOL`ZATSKRfkxsy|qU8xCjx|CayZ-XHXwlY;qP`!)OZ@F5ieCM;);Dn~UA zA@(}daHt8MzuD_l)l@Zx)!FM()lxMEaoOuC)habc@7b#_QTY-z7J(@a5!E50#!E1! zI80QBi5jO;rZ_@WM~E8tRZMZ5sE!jghLf4%5>Z_uYV6NUaha$t6E!YKOmTy#ZV)w2 z9ZYePsBRK9o|~AWf=Cs_90?G}$bov{EF7Fl^Yp5J-^V=(ONo#=qYu4O56Pjc(X*P`W>x>9hQCKD{6g3 zYn`LVE>XQptfe!|5=C{QSW9P^ofOq4#acMbklq6s<%}N8B2FrhRfWb=nbliVeT&-b z>;fKB$H%lA#uQl2UQ+c-YL6#PrtlZF{-OhJYM5e+sNPa#pAaLeV?=wMeZnzOeXMey zfYc$#DyIu!fC=eBVBr)YY$2TIz#=n)a5O4QJ?J?V2#dS9WXA9&^?z;x%V5L7*2)J0 z9wI@{X+cOJL0S-4I28!bG|h7yYws_9zlE^UerAVCQXQ9WBniPcoEU`ZuxYW9!J<%elvI$H0~Suj!DBU2 zaloR`ZR@Vz+d-z-N!2^49Y({L zVi#5KqIMWMWQyHXy_?$M_JS!=s5*t(;jK1P9H;8z)D9OqrbwmgRBDHJIY;{K8YRvd zkqCjN#;V4~7{+9;tyHay@m33C8c-t6@WFb)JsB*NGO?$!JYiHFM(bejWFFI~I*ryr zG7QFAz$d5rV4Y(S751wYg!YMwO3eJVFlT&y-iZ@o)ZB)ID*2ZlpQ*5W|?X)%q zdYNJeRqvp+amUXTN2&TKt&OKPrZ`5`$7pR_K$#+$s*`DLjBa5Ufw@MZ3st6{N7Q+w zA#SI7+_H2X_VZH)gs^HG)~>DKpiw%hJL$I3Z1rs2*NsHIk?1NSM1u(NPv8SdNl-bQ zhlCqBOOaIs7S1TbhQp05RF6y` zs;r!q>XkNl(}rXsZ~zn{yaquE5%d*>Iixsn?$AHMchaI8@I^nvep;+dBol!iI7B#B zkUj)@P8q_UgOnk#aGDTW@IVX}&J4mzLS_(H6gH4@e!)Wlko7d%(iEJb3wqTpmbYq3|f_BY6kD;d~wJCdk(T3+L$I!h|z|z~Ww-vS-?(0DhR2<9~o`^xu z={LA=;yD28wESy|}aZV)HfCVTu=nE+|pa&)m&R=-y1ieC> zQ3`_RZs_bXSw_*b0e*{}O-Mt$hr~?5^sMk@DxrI*dJnb4ST6ha1XZ7)mbjNSPWpJQ zW7w}^2WA;yFu(-w;o0jH)f5R!!(L~qW=a?uV6O{R3niqDuvc%Dw}c^X_PR*5NW$n6 zdtIzrEaBZddtIVhBH@{py{;yz)kMN;8>a9hDnBCO{R&g~6O})au*)$;08s@H39k~F zVgpfaAQE05FvWJF+D;_w*-Q~hRFOo&MTse*i4;w$W0ajKVu&h+NO(8K6sbg&N+gVF zGsO!cy&%1K73sHR`67K4l;s;UvAQIk0FvU-z`bi`VKQKigRRvNB z=K!YIKvf&4gd26H2%)MFD&gsmDMG0#luCHmVv2aGil-9ZJ2Az5YJ8uX;l7h8%4n}L zItXV#rl_DTE2s+wXqe&~ZSjr%g(F^8tY*sfL`StoG+tAATf;Cx;^ZK4rcOjNM4TKV z&cu0(A>u^iIMEE3X{JaLjgv$(JZ0geFR{+6khm&4?*poSKy7tO@rtTnQCppp(tE0Y zPi=Khd1X{vM(wJUb4UgCs8Y`U->ADzp?*@ApR_+78CVWuMRlxbtCQseqWXYni&NQN`Na9e?=1+Z|k7p|Fje+E;l!tkohfFD)+(K;AMX6Xe{br7wC zdjq`A0 #include @@ -118,7 +119,7 @@ void swiftnet_client_cleanup(struct SwiftNetClientConnection* const client) { close_threads(CONNECTION_TYPE_CLIENT, client); - pcap_close(client->pcap); + SWIFTNET_CLOSE_CONNECTION(&client->network_data); allocator_free(&client_connection_memory_allocator, client); } @@ -132,7 +133,7 @@ void swiftnet_server_cleanup(struct SwiftNetServer* const server) { close_threads(CONNECTION_TYPE_SERVER, server); - pcap_close(server->pcap); + SWIFTNET_CLOSE_CONNECTION(&server->network_data); allocator_free(&server_memory_allocator, server); } diff --git a/src/cleanup_swiftnet.c b/src/cleanup_swiftnet.c index bc7a0f4..91b1429 100644 --- a/src/cleanup_swiftnet.c +++ b/src/cleanup_swiftnet.c @@ -1,4 +1,5 @@ #include "internal/internal.h" +#include "internal/networking.h" #include "swift_net.h" #include #include @@ -12,11 +13,11 @@ static inline void close_listeners() { LOOP_HASHMAP(listeners_map, struct Listener* const current_listener = hashmap_data; - pcap_breakloop(current_listener->pcap); + SWIFTNET_BREAK_RECEIVER_LOOP(¤t_listener->network_data); pthread_join(current_listener->listener_thread, NULL); - pcap_close(current_listener->pcap); + SWIFTNET_CLOSE_CONNECTION(¤t_listener->network_data); hashmap_destroy(¤t_listener->client_connections); hashmap_destroy(¤t_listener->servers); diff --git a/src/generic_functions.c b/src/generic_functions.c index 3a056ed..9bde2a8 100644 --- a/src/generic_functions.c +++ b/src/generic_functions.c @@ -1,4 +1,5 @@ #include "internal/internal.h" +#include "internal/networking.h" #include "swift_net.h" #include #include @@ -91,7 +92,7 @@ void swiftnet_client_destroy_packet_data(struct SwiftNetClientPacketData* const free(packet_data->data); } else { - allocator_free(&packet_buffer_memory_allocator, packet_data->data - PACKET_HEADER_SIZE - client_conn->prepend_size); + allocator_free(&packet_buffer_memory_allocator, packet_data->data - PACKET_HEADER_SIZE - GET_PREPEND_SIZE(&client_conn->network_data)); allocator_free(&client_packet_data_memory_allocator, packet_data); } } @@ -104,7 +105,7 @@ void swiftnet_server_destroy_packet_data(struct SwiftNetServerPacketData* const free(packet_data->data); } else { - allocator_free(&packet_buffer_memory_allocator, packet_data->data - PACKET_HEADER_SIZE - server->prepend_size); + allocator_free(&packet_buffer_memory_allocator, packet_data->data - PACKET_HEADER_SIZE - GET_PREPEND_SIZE(&server->network_data)); allocator_free(&server_packet_data_memory_allocator, packet_data); } } diff --git a/src/handle_packets.c b/src/handle_packets.c index c9f5870..3f15d14 100644 --- a/src/handle_packets.c +++ b/src/handle_packets.c @@ -1,3 +1,4 @@ +#include "internal/networking.h" #include "swift_net.h" #include #include @@ -62,13 +63,16 @@ static inline void swiftnet_handle_packets( struct PacketQueue* const packet_queue, const _Atomic bool* closing, const bool loopback, - const uint16_t addr_type, const struct pcap_pkthdr* hdr, const uint8_t* packet, pthread_mutex_t* const process_packets_mtx, pthread_cond_t* const process_packets_cond, - _Atomic bool *const processing_packets + _Atomic bool *const processing_packets, + struct SwiftNetNetworkData network_data ) { + const uint8_t prepend_size = GET_PREPEND_SIZE(&network_data); + const uint8_t addr_type = GET_ADDR_TYPE(&network_data); + uint8_t* const packet_buffer = allocator_allocate(&packet_buffer_memory_allocator); if (unlikely(packet_buffer == NULL)) { return; @@ -120,7 +124,10 @@ static void handle_client_init(struct SwiftNetClientConnection* user, const stru const uint32_t bytes_received = hdr->caplen; - if(bytes_received != PACKET_HEADER_SIZE + sizeof(struct SwiftNetServerInformation) + client_connection->prepend_size) { + const uint8_t prepend_size = GET_PREPEND_SIZE(&client_connection->network_data); + const uint8_t addr_type = GET_ADDR_TYPE(&client_connection->network_data); + + if(bytes_received != PACKET_HEADER_SIZE + sizeof(struct SwiftNetServerInformation) + prepend_size) { #ifdef SWIFT_NET_DEBUG if (check_debug_flag(SWIFTNET_DEBUG_INITIALIZATION)) { send_debug_message("Invalid packet received from server. Expected server information: {\"bytes_received\": %u, \"expected_bytes\": %u}\n", bytes_received, PACKET_HEADER_SIZE + sizeof(struct SwiftNetServerInformation)); @@ -130,14 +137,14 @@ static void handle_client_init(struct SwiftNetClientConnection* user, const stru return; } - struct ip* const ip_header = (struct ip*)(buffer + client_connection->prepend_size); + struct ip* const ip_header = (struct ip*)(buffer + prepend_size); - if (client_connection->addr_type == DLT_EN10MB) { + if (addr_type == DLT_EN10MB) { memcpy(client_connection->eth_header.ether_dhost, ((struct ether_header*)buffer)->ether_shost, sizeof(client_connection->eth_header.ether_dhost)); } - struct SwiftNetPacketInfo* const packet_info = (struct SwiftNetPacketInfo*)(buffer + client_connection->prepend_size + sizeof(struct ip)); - struct SwiftNetServerInformation* const server_information = (struct SwiftNetServerInformation*)(buffer + client_connection->prepend_size + sizeof(struct ip) + sizeof(struct SwiftNetPacketInfo)); + struct SwiftNetPacketInfo* const packet_info = (struct SwiftNetPacketInfo*)(buffer + prepend_size + sizeof(struct ip)); + struct SwiftNetServerInformation* const server_information = (struct SwiftNetServerInformation*)(buffer + prepend_size + sizeof(struct ip) + sizeof(struct SwiftNetPacketInfo)); if(packet_info->port_info.destination_port != client_connection->port_info.source_port || packet_info->port_info.source_port != client_connection->port_info.destination_port) { #ifdef SWIFT_NET_DEBUG @@ -177,7 +184,7 @@ static inline void handle_correct_receiver(const enum ConnectionType connection_ if (client_connection->initialized == false) { handle_client_init(client_connection, hdr, packet); } else { - swiftnet_handle_packets(client_connection->port_info.source_port, &client_connection->process_packets_thread, client_connection, CONNECTION_TYPE_CLIENT, &client_connection->packet_queue, &client_connection->closing, client_connection->loopback, client_connection->addr_type, hdr, packet, &client_connection->process_packets_mtx, &client_connection->process_packets_cond, &client_connection->processing_packets); + swiftnet_handle_packets(client_connection->port_info.source_port, &client_connection->process_packets_thread, client_connection, CONNECTION_TYPE_CLIENT, &client_connection->packet_queue, &client_connection->closing, client_connection->loopback, hdr, packet, &client_connection->process_packets_mtx, &client_connection->process_packets_cond, &client_connection->processing_packets, client_connection->network_data); } } else { LOCK_ATOMIC_DATA_TYPE(&listener->servers.atomic_lock); @@ -189,10 +196,11 @@ static inline void handle_correct_receiver(const enum ConnectionType connection_ return; } - swiftnet_handle_packets(server->server_port, &server->process_packets_thread, server, CONNECTION_TYPE_SERVER, &server->packet_queue, &server->closing, server->loopback, server->addr_type, hdr, packet, &server->process_packets_mtx, &server->process_packets_cond, &server->processing_packets); + swiftnet_handle_packets(server->server_port, &server->process_packets_thread, server, CONNECTION_TYPE_SERVER, &server->packet_queue, &server->closing, server->loopback, hdr, packet, &server->process_packets_mtx, &server->process_packets_cond, &server->processing_packets, server->network_data); } } +#ifdef SWIFTNET_BACKEND_PCAP static void pcap_packet_handle(uint8_t* const user, const struct pcap_pkthdr* const hdr, const uint8_t* const packet) { struct Listener* const listener = (struct Listener*)user; @@ -201,11 +209,12 @@ static void pcap_packet_handle(uint8_t* const user, const struct pcap_pkthdr* co handle_correct_receiver(CONNECTION_TYPE_CLIENT, listener, hdr, packet, port_info); handle_correct_receiver(CONNECTION_TYPE_SERVER, listener, hdr, packet, port_info); } +#endif void* interface_start_listening(void* listener_void) { struct Listener* listener = listener_void; - pcap_loop(listener->pcap, 0, pcap_packet_handle, listener_void); + SWIFTNET_LOOP_PACKETS(&listener->network_data, listener); return NULL; } diff --git a/src/initialize_client_connection.c b/src/initialize_client_connection.c index 382a6a7..7cbad0b 100644 --- a/src/initialize_client_connection.c +++ b/src/initialize_client_connection.c @@ -18,11 +18,12 @@ #include #include #include +#include "internal/networking.h" struct RequestServerInformationArgs { const uint32_t size; const struct in_addr server_addr; - pcap_t* pcap; + struct SwiftNetNetworkData* network_data; const uint32_t timeout_ms; const void* const data; struct SwiftNetClientConnection* const connection; @@ -56,7 +57,7 @@ void* request_server_information(void* const request_server_information_args_voi } #endif - SWIFTNET_PCAP_SEND_SAFE(request_server_information_args->pcap, request_server_information_args->data, request_server_information_args->size); + SWIFTNET_SEND_PACKET(request_server_information_args->network_data, request_server_information_args->data, request_server_information_args->size); usleep(250000); } @@ -64,7 +65,7 @@ void* request_server_information(void* const request_server_information_args_voi return NULL; } -static inline struct SwiftNetClientConnection* const construct_client_connection(const bool loopback, const uint16_t destination_port, const in_addr_t server_address, pcap_t* const pcap) { +static inline struct SwiftNetClientConnection* const construct_client_connection(const bool loopback, const uint16_t destination_port, const in_addr_t server_address, struct SwiftNetNetworkData* const network_data) { struct SwiftNetClientConnection* const new_connection = allocator_allocate(&client_connection_memory_allocator); struct ether_header eth_header = { @@ -75,13 +76,11 @@ static inline struct SwiftNetClientConnection* const construct_client_connection memcpy(eth_header.ether_shost, mac_address, sizeof(eth_header.ether_shost)); new_connection->eth_header = eth_header; - new_connection->pcap = pcap; new_connection->port_info = (struct SwiftNetPortInfo){.source_port = rand(), .destination_port = destination_port}; new_connection->server_addr.s_addr = server_address; new_connection->packet_handler = NULL; new_connection->loopback = loopback; - new_connection->addr_type = pcap_datalink(pcap); - new_connection->prepend_size = PACKET_PREPEND_SIZE(new_connection->addr_type); + new_connection->network_data = *network_data; new_connection->pending_messages_memory_allocator = allocator_create(sizeof(struct SwiftNetPendingMessage), 100); new_connection->packets_sending_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketSending), 100); @@ -122,12 +121,14 @@ struct SwiftNetClientConnection* swiftnet_create_client(const char* const ip_add const uint32_t ip = ntohl(addr.s_addr); const bool loopback = (ip >> 24) == 127; - pcap_t* const pcap = swiftnet_pcap_open(loopback ? LOOPBACK_INTERFACE_NAME : default_network_interface); - if (unlikely(pcap == NULL)) { + struct SwiftNetNetworkData net_data = swiftnet_initialize_networking(loopback ? LOOPBACK_INTERFACE_NAME : default_network_interface); + struct SwiftNetNetworkData null_net_data; + memset(&null_net_data, 0, sizeof(null_net_data)); + if (unlikely(memcmp(&null_net_data, &net_data, sizeof(net_data))) == 0) { return NULL; } - struct SwiftNetClientConnection* const new_connection = construct_client_connection(loopback, port, addr.s_addr, pcap); + struct SwiftNetClientConnection* const new_connection = construct_client_connection(loopback, port, addr.s_addr, &net_data); // Request the server information, and proccess it const struct SwiftNetPacketInfo request_server_information_packet_info = construct_packet_info( @@ -140,14 +141,14 @@ struct SwiftNetClientConnection* swiftnet_create_client(const char* const ip_add const struct ip request_server_info_ip_header = construct_ip_header(new_connection->server_addr, PACKET_HEADER_SIZE, rand()); - HANDLE_PACKET_CONSTRUCTION(&request_server_info_ip_header, &request_server_information_packet_info, new_connection->addr_type, &new_connection->eth_header, PACKET_HEADER_SIZE + new_connection->prepend_size, request_server_info_buffer) + HANDLE_PACKET_CONSTRUCTION(&request_server_info_ip_header, &request_server_information_packet_info, &new_connection->network_data, &new_connection->eth_header, PACKET_HEADER_SIZE + GET_PREPEND_SIZE(&new_connection->network_data), request_server_info_buffer) - HANDLE_CHECKSUM(request_server_info_buffer, sizeof(request_server_info_buffer), new_connection->prepend_size); + HANDLE_CHECKSUM(request_server_info_buffer, sizeof(request_server_info_buffer), &new_connection->network_data); pthread_t send_request_thread; const struct RequestServerInformationArgs thread_args = { - .pcap = pcap, + .network_data = &net_data, .data = request_server_info_buffer, .size = sizeof(request_server_info_buffer), .server_addr = addr, @@ -164,7 +165,7 @@ struct SwiftNetClientConnection* swiftnet_create_client(const char* const ip_add if (atomic_load_explicit(&new_connection->initialized, memory_order_acquire) == false) { atomic_store_explicit(&new_connection->closing, true, memory_order_release); - pcap_close(new_connection->pcap); + swiftnet_close_connection(&new_connection->network_data); allocator_free(&client_connection_memory_allocator, new_connection); diff --git a/src/initialize_server.c b/src/initialize_server.c index f5c585d..f9c9168 100644 --- a/src/initialize_server.c +++ b/src/initialize_server.c @@ -11,9 +11,17 @@ #include #include #include "internal/internal.h" +#include "internal/networking.h" #include "swift_net.h" -static inline struct SwiftNetServer* const construct_server(const bool loopback, const uint16_t server_port, pcap_t* const pcap) { +static inline struct SwiftNetServer* const construct_server(const bool loopback, const uint16_t server_port) { + const struct SwiftNetNetworkData null_net_data = {0x00}; + + struct SwiftNetNetworkData net_data = swiftnet_initialize_networking(loopback ? LOOPBACK_INTERFACE_NAME : default_network_interface); + if (unlikely(memcmp(&net_data, &null_net_data, sizeof(struct SwiftNetNetworkData)) == 0)) { + return NULL; + } + struct SwiftNetServer* const new_server = allocator_allocate(&server_memory_allocator); struct ether_header eth_header = { @@ -23,12 +31,10 @@ static inline struct SwiftNetServer* const construct_server(const bool loopback, memcpy(eth_header.ether_shost, mac_address, sizeof(eth_header.ether_shost)); + new_server->network_data = net_data; new_server->eth_header = eth_header; new_server->server_port = server_port; new_server->loopback = loopback; - new_server->pcap = pcap; - new_server->addr_type = pcap_datalink(pcap); - new_server->prepend_size = PACKET_PREPEND_SIZE(new_server->addr_type); new_server->packet_queue = (struct PacketQueue){ .first_node = NULL, .last_node = NULL @@ -57,13 +63,7 @@ static inline struct SwiftNetServer* const construct_server(const bool loopback, struct SwiftNetServer* swiftnet_create_server(const uint16_t port, const bool loopback) { // Init pcap device - pcap_t* const pcap = swiftnet_pcap_open(loopback ? LOOPBACK_INTERFACE_NAME : default_network_interface); - if (unlikely(pcap == NULL)) { - PRINT_ERROR("Failed to open bpf"); - return NULL; - } - - struct SwiftNetServer* const new_server = construct_server(loopback, port, pcap); + struct SwiftNetServer* const new_server = construct_server(loopback, port); // Create a new thread that will handle all packets received check_existing_listener(loopback ? LOOPBACK_INTERFACE_NAME : default_network_interface, new_server, CONNECTION_TYPE_SERVER, loopback); diff --git a/src/internal/check_existing_listener.c b/src/internal/check_existing_listener.c index 656683b..27fba06 100644 --- a/src/internal/check_existing_listener.c +++ b/src/internal/check_existing_listener.c @@ -1,4 +1,5 @@ #include "internal.h" +#include "networking.h" #include #include #include @@ -39,8 +40,8 @@ void* check_existing_listener(const char* interface_name, void* const connection struct Listener* const new_listener = allocator_allocate(&listener_memory_allocator); new_listener->servers = hashmap_create(&uint16_memory_allocator); new_listener->client_connections = hashmap_create(&uint16_memory_allocator); - new_listener->pcap = swiftnet_pcap_open(interface_name); - new_listener->addr_type = pcap_datalink(new_listener->pcap); + new_listener->network_data = swiftnet_initialize_networking(interface_name); + new_listener->addr_type = GET_ADDR_TYPE(&new_listener->network_data); memcpy(new_listener->interface_name, interface_name, interface_len + 1); new_listener->loopback = loopback; diff --git a/src/internal/internal.h b/src/internal/internal.h index eab8919..c470072 100644 --- a/src/internal/internal.h +++ b/src/internal/internal.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include #include #include @@ -34,11 +33,6 @@ #define DISABLE_INTERNAL_CHECK #endif -#define SWIFTNET_PCAP_SEND_SAFE(pcap, buffer, len) \ - while(swiftnet_pcap_send(pcap, buffer, len) == -2) { \ - usleep(2000); \ - } \ - enum RequestLostPacketsReturnType { REQUEST_LOST_PACKETS_RETURN_UPDATED_BIT_ARRAY = 0x00, REQUEST_LOST_PACKETS_RETURN_COMPLETED_PACKET = 0x01 @@ -79,23 +73,6 @@ enum RequestLostPacketsReturnType { // Memory should contain either an eth hdr or any specific data depending on addr type (loopback or real interface) #define PACKET_PREPEND_SIZE(addr_type) ((addr_type == DLT_NULL) ? sizeof(uint32_t) : addr_type == DLT_EN10MB ? sizeof(struct ether_header) : 0) #define PACKET_HEADER_SIZE (sizeof(struct ip) + sizeof(struct SwiftNetPacketInfo)) -#define HANDLE_PACKET_CONSTRUCTION(ip_header, packet_info, addr_type, eth_hdr, buffer_size, buffer_name) \ - uint8_t buffer_name[buffer_size]; \ - if(addr_type == DLT_NULL) { \ - uint32_t family = PF_INET; \ - memcpy(buffer_name, &family, sizeof(family)); \ - memcpy(buffer_name + sizeof(family), ip_header, sizeof(*ip_header)); \ - memcpy(buffer_name + sizeof(family) + sizeof(*ip_header), packet_info, sizeof(*packet_info)); \ - } else if(addr_type == DLT_EN10MB){ \ - memcpy(buffer_name, eth_hdr, sizeof(*eth_hdr)); \ - memcpy(buffer_name + sizeof(*eth_hdr), ip_header, sizeof(*ip_header)); \ - memcpy(buffer_name + sizeof(*eth_hdr) + sizeof(*ip_header), packet_info, sizeof(*packet_info)); \ - } \ - -// Simple crc16 call with proper memory order -#define HANDLE_CHECKSUM(buffer, size, prepend_size) \ - const uint32_t checksum = crc32(buffer, size); \ - memcpy(buffer + prepend_size + sizeof(struct ip) + offsetof(struct SwiftNetPacketInfo, checksum), &checksum, sizeof(checksum)); // Number used in ip.proto #define PROT_NUMBER 253 @@ -145,7 +122,7 @@ struct PacketCompletedKey { }; struct Listener { - pcap_t* pcap; + struct SwiftNetNetworkData network_data; pthread_t listener_thread; struct SwiftNetHashMap servers; struct SwiftNetHashMap client_connections; @@ -173,9 +150,6 @@ extern void* memory_cleanup_background_service(); extern int get_default_interface_and_mac(char *restrict interface_name, uint32_t interface_name_length, uint8_t mac_out[6], int sockfd); extern const uint32_t get_mtu(const char* restrict const interface, const int sockfd); -extern int get_bpf_device(); -extern int bind_bpf_to_interface(const int bpf, const bool loopback); -extern int setup_bpf_settings(const int bpf); extern void* swiftnet_server_process_packets(void* const void_server); extern void* swiftnet_client_process_packets(void* const void_client); @@ -186,8 +160,6 @@ extern void* execute_packet_callback_server(void* const void_server); extern struct in_addr private_ip_address; extern uint8_t mac_address[6]; extern char default_network_interface[SIZEOF_FIELD(struct ifreq, ifr_name)]; -extern pcap_t* swiftnet_pcap_open(const char* interface); -extern int swiftnet_pcap_send(pcap_t *pcap, const uint8_t *data, int len); extern void* check_existing_listener(const char* interface_name, void* const connection, const enum ConnectionType connection_type, const bool loopback); @@ -290,11 +262,9 @@ extern void swiftnet_send_packet( const struct in_addr* const target_addr, struct SwiftNetHashMap* const packets_sending, struct SwiftNetMemoryAllocator* const packets_sending_memory_allocator, - pcap_t* const pcap, const struct ether_header eth_hdr, const bool loopback, - const uint16_t addr_type, - const uint8_t prepend_size + const struct SwiftNetNetworkData network_data #ifdef SWIFT_NET_REQUESTS , struct RequestSent* const request_sent , const bool response diff --git a/src/internal/networking.h b/src/internal/networking.h new file mode 100644 index 0000000..0357c00 --- /dev/null +++ b/src/internal/networking.h @@ -0,0 +1,75 @@ +#pragma once + +#include "../swift_net.h" +#include "internal.h" +#include +#include + +#ifdef SWIFTNET_BACKEND_PCAP + +#include + // Simple crc16 call with proper memory order + #define HANDLE_CHECKSUM(buffer, size, network_data) \ + const uint32_t checksum = crc32(buffer, size); \ + memcpy(buffer + (network_data)->prepend_size + sizeof(struct ip) + offsetof(struct SwiftNetPacketInfo, checksum), &checksum, sizeof(checksum)); + + #define GET_ADDR_TYPE(network_data) (network_data)->addr_type + #define GET_PREPEND_SIZE(network_data) (network_data)->prepend_size + + #define HANDLE_PACKET_CONSTRUCTION(ip_header, packet_info, network_data, eth_hdr, buffer_size, buffer_name) \ + uint8_t buffer_name[buffer_size]; \ + if((network_data)->addr_type == DLT_NULL) { \ + uint32_t family = PF_INET; \ + memcpy(buffer_name, &family, sizeof(family)); \ + memcpy(buffer_name + sizeof(family), ip_header, sizeof(*ip_header)); \ + memcpy(buffer_name + sizeof(family) + sizeof(*ip_header), packet_info, sizeof(*packet_info)); \ + } else if((network_data)->addr_type == DLT_EN10MB){ \ + memcpy(buffer_name, eth_hdr, sizeof(*eth_hdr)); \ + memcpy(buffer_name + sizeof(*eth_hdr), ip_header, sizeof(*ip_header)); \ + memcpy(buffer_name + sizeof(*eth_hdr) + sizeof(*ip_header), packet_info, sizeof(*packet_info)); \ + } \ + + + extern pcap_t* swiftnet_pcap_open(const char* const restrict interface); + extern int swiftnet_pcap_send(pcap_t *pcap, const uint8_t *data, int len); + + inline static struct SwiftNetNetworkData swiftnet_initialize_networking(const char* const restrict interface) { + pcap_t* pcap = swiftnet_pcap_open(interface); + if (unlikely(pcap == NULL)) { + struct SwiftNetNetworkData net_data_null; + memset(&net_data_null, 0x00, sizeof(net_data_null)); + + return net_data_null; + } + + const uint8_t addr_type = pcap_datalink(pcap); + + struct SwiftNetNetworkData network_data = { + .pcap = pcap, + .addr_type = addr_type, + .prepend_size = PACKET_PREPEND_SIZE(addr_type) + }; + + return network_data; + } + + inline static void swiftnet_close_connection(struct SwiftNetNetworkData* restrict const network_data) { + pcap_close(network_data->pcap); + } + + #define SWIFTNET_BREAK_RECEIVER_LOOP(network_data) \ + pcap_breakloop((network_data)->pcap) + + #define SWIFTNET_LOOP_PACKETS(network_data, listener) \ + pcap_loop((network_data)->pcap, 0, pcap_packet_handle, (void*)listener) + + #define SWIFTNET_CLOSE_CONNECTION(network_data) \ + pcap_close((network_data)->pcap); + + #define SWIFTNET_SEND_PACKET(network_data, buffer, len) \ + while(swiftnet_pcap_send((network_data)->pcap, buffer, len) == -2) { \ + usleep(2000); \ + } +#elif SWIFTNET_PCAP_DPDK +// future backend functions +#endif diff --git a/src/internal/pcap_open.c b/src/internal/pcap/pcap_open.c similarity index 87% rename from src/internal/pcap_open.c rename to src/internal/pcap/pcap_open.c index bde41e3..9c632ee 100644 --- a/src/internal/pcap_open.c +++ b/src/internal/pcap/pcap_open.c @@ -1,7 +1,7 @@ -#include "internal.h" +#include "../internal.h" #include -pcap_t* swiftnet_pcap_open(const char* interface) { +pcap_t* swiftnet_pcap_open(const char* const restrict interface) { char errbuf[PCAP_ERRBUF_SIZE]; pcap_t *p = pcap_open_live( diff --git a/src/internal/pcap_send.c b/src/internal/pcap/pcap_send.c similarity index 93% rename from src/internal/pcap_send.c rename to src/internal/pcap/pcap_send.c index 4525fa3..195ba53 100644 --- a/src/internal/pcap_send.c +++ b/src/internal/pcap/pcap_send.c @@ -1,4 +1,4 @@ -#include "internal.h" +#include "../internal.h" #include #include diff --git a/src/make_request.c b/src/make_request.c index ac63024..6204555 100644 --- a/src/make_request.c +++ b/src/make_request.c @@ -31,7 +31,7 @@ struct SwiftNetClientPacketData* swiftnet_client_make_request(struct SwiftNetCli const uint32_t packet_length = packet->packet_append_pointer - packet->packet_data_start; - swiftnet_send_packet(client, client->maximum_transmission_unit, client->port_info, packet, packet_length, &client->server_addr, &client->packets_sending, &client->packets_sending_memory_allocator, client->pcap, client->eth_header, client->loopback, client->addr_type, client->prepend_size, request_sent, false, 0); + swiftnet_send_packet(client, client->maximum_transmission_unit, client->port_info, packet, packet_length, &client->server_addr, &client->packets_sending, &client->packets_sending_memory_allocator, client->eth_header, client->loopback, client->network_data, request_sent, false, 0); struct timeval tv; gettimeofday(&tv, NULL); @@ -69,7 +69,7 @@ struct SwiftNetServerPacketData* swiftnet_server_make_request(struct SwiftNetSer .source_port = server->server_port }; - swiftnet_send_packet(server, addr_data.maximum_transmission_unit, port_info, packet, packet_length, &addr_data.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, request_sent, false, 0); + swiftnet_send_packet(server, addr_data.maximum_transmission_unit, port_info, packet, packet_length, &addr_data.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->eth_header, server->loopback, server->network_data, request_sent, false, 0); struct timeval tv; gettimeofday(&tv, NULL); diff --git a/src/make_response.c b/src/make_response.c index 089dc97..6c97145 100644 --- a/src/make_response.c +++ b/src/make_response.c @@ -6,7 +6,7 @@ void swiftnet_client_make_response(struct SwiftNetClientConnection* const client, struct SwiftNetClientPacketData* const packet_data, struct SwiftNetPacketBuffer* const buffer) { const uint32_t packet_length = buffer->packet_append_pointer - buffer->packet_data_start; - swiftnet_send_packet(client, client->maximum_transmission_unit, client->port_info, buffer, packet_length, &client->server_addr, &client->packets_sending, &client->packets_sending_memory_allocator, client->pcap, client->eth_header, client->loopback, client->addr_type, client->prepend_size, NULL, true, packet_data->metadata.packet_id); + swiftnet_send_packet(client, client->maximum_transmission_unit, client->port_info, buffer, packet_length, &client->server_addr, &client->packets_sending, &client->packets_sending_memory_allocator, client->eth_header, client->loopback, client->network_data, NULL, true, packet_data->metadata.packet_id); } void swiftnet_server_make_response(struct SwiftNetServer* const server, struct SwiftNetServerPacketData* const packet_data, struct SwiftNetPacketBuffer* const buffer) { @@ -17,7 +17,7 @@ void swiftnet_server_make_response(struct SwiftNetServer* const server, struct S .destination_port = packet_data->metadata.port_info.source_port }; - swiftnet_send_packet(server, packet_data->metadata.sender.maximum_transmission_unit, port_info, buffer, packet_length, &packet_data->metadata.sender.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, NULL, true, packet_data->metadata.packet_id); + swiftnet_send_packet(server, packet_data->metadata.sender.maximum_transmission_unit, port_info, buffer, packet_length, &packet_data->metadata.sender.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->eth_header, server->loopback, server->network_data, NULL, true, packet_data->metadata.packet_id); } #endif diff --git a/src/process_packets.c b/src/process_packets.c index 2b7ce8d..b393b5d 100644 --- a/src/process_packets.c +++ b/src/process_packets.c @@ -1,4 +1,5 @@ #include "internal/internal.h" +#include "internal/networking.h" #include "swift_net.h" #include #include @@ -263,7 +264,7 @@ static inline struct SwiftNetPacketSending* const get_packet_sending(struct Swif return result; } -static inline void signal_delay_change(const enum PacketDelayUpdateStatus status, const struct ip* const ip_header, const uint16_t source_port, const uint16_t destination_port, const uint16_t addr_type, const uint8_t prepend_size, pcap_t* const pcap, const struct ether_header* const eth_hdr) { +static inline void signal_delay_change(const enum PacketDelayUpdateStatus status, const struct ip* const ip_header, const uint16_t source_port, const uint16_t destination_port, const struct ether_header* const eth_hdr, const struct SwiftNetNetworkData* const net_data) { const struct ip send_server_info_ip_header = construct_ip_header(ip_header->ip_src, PACKET_HEADER_SIZE, ip_header->ip_id); const struct SwiftNetPacketInfo packet_info_new = construct_packet_info( @@ -281,13 +282,15 @@ static inline void signal_delay_change(const enum PacketDelayUpdateStatus status .maximum_transmission_unit = maximum_transmission_unit }; - HANDLE_PACKET_CONSTRUCTION(&send_server_info_ip_header, &packet_info_new, addr_type, ð_hdr, prepend_size + PACKET_HEADER_SIZE + sizeof(server_info), buffer) + const uint16_t prepend_size = GET_PREPEND_SIZE(net_data); + + HANDLE_PACKET_CONSTRUCTION(&send_server_info_ip_header, &packet_info_new, net_data, ð_hdr, prepend_size + PACKET_HEADER_SIZE + sizeof(server_info), buffer) memcpy(buffer + prepend_size + PACKET_HEADER_SIZE, &server_info, sizeof(server_info)); - HANDLE_CHECKSUM(buffer, sizeof(buffer), prepend_size) + HANDLE_CHECKSUM(buffer, sizeof(buffer), net_data) - SWIFTNET_PCAP_SEND_SAFE(pcap, buffer, sizeof(buffer)); + SWIFTNET_SEND_PACKET(net_data, buffer, sizeof(buffer)); } struct PacketQueueNode* const wait_for_next_packet(struct PacketQueue* const packet_queue) { @@ -322,11 +325,10 @@ static inline bool packet_corrupted(const uint32_t checksum, const uint32_t chun static inline void swiftnet_process_packets( void* _Atomic * packet_handler, - pcap_t* const pcap, const struct ether_header eth_hdr, const uint16_t source_port, const bool loopback, - const uint16_t addr_type, + const struct SwiftNetNetworkData network_data, struct SwiftNetHashMap* const packets_sending, struct SwiftNetMemoryAllocator* const packets_sending_messages_memory_allocator, struct SwiftNetHashMap* const pending_messages, @@ -338,7 +340,6 @@ static inline void swiftnet_process_packets( struct PacketCallbackQueue* const packet_callback_queue, void* const connection, _Atomic bool* closing, - const uint8_t prepend_size, pthread_mutex_t* const process_packets_mtx, pthread_cond_t* const process_packets_cond, pthread_mutex_t* const execute_callback_mtx, @@ -346,6 +347,8 @@ static inline void swiftnet_process_packets( _Atomic bool *const processing_packets ) { uint8_t idle_stage = 0; // 0-3 + + const uint16_t prepend_size = GET_PREPEND_SIZE(&network_data); while(1) { if (atomic_load(closing) == true) { @@ -448,13 +451,13 @@ static inline void swiftnet_process_packets( .maximum_transmission_unit = maximum_transmission_unit }; - HANDLE_PACKET_CONSTRUCTION(&send_server_info_ip_header, &packet_info_new, addr_type, ð_hdr, prepend_size + PACKET_HEADER_SIZE + sizeof(server_info), buffer) + HANDLE_PACKET_CONSTRUCTION(&send_server_info_ip_header, &packet_info_new, &network_data, ð_hdr, prepend_size + PACKET_HEADER_SIZE + sizeof(server_info), buffer) memcpy(buffer + prepend_size + PACKET_HEADER_SIZE, &server_info, sizeof(server_info)); - HANDLE_CHECKSUM(buffer, sizeof(buffer), prepend_size) + HANDLE_CHECKSUM(buffer, sizeof(buffer), &network_data); - SWIFTNET_PCAP_SEND_SAFE(pcap, buffer, sizeof(buffer)); + SWIFTNET_SEND_PACKET(&network_data, buffer, sizeof(buffer)); allocator_free(&packet_buffer_memory_allocator, packet_buffer); @@ -481,11 +484,11 @@ static inline void swiftnet_process_packets( } ); - HANDLE_PACKET_CONSTRUCTION(&send_packet_ip_header, &send_packet_info, addr_type, ð_hdr, prepend_size + PACKET_HEADER_SIZE, buffer) + HANDLE_PACKET_CONSTRUCTION(&send_packet_ip_header, &send_packet_info, &network_data, ð_hdr, prepend_size + PACKET_HEADER_SIZE, buffer) - HANDLE_CHECKSUM(buffer, sizeof(buffer), prepend_size) + HANDLE_CHECKSUM(buffer, sizeof(buffer), &network_data); - SWIFTNET_PCAP_SEND_SAFE(pcap, buffer, sizeof(buffer)); + SWIFTNET_SEND_PACKET(&network_data, buffer, sizeof(buffer)); allocator_free(&packet_buffer_memory_allocator, packet_buffer); @@ -514,7 +517,7 @@ static inline void swiftnet_process_packets( const uint16_t header_size = PACKET_HEADER_SIZE + prepend_size; - HANDLE_PACKET_CONSTRUCTION(&send_lost_packets_ip_header, &packet_info_new, addr_type, ð_hdr, mtu + prepend_size, buffer) + HANDLE_PACKET_CONSTRUCTION(&send_lost_packets_ip_header, &packet_info_new, &network_data, ð_hdr, mtu + prepend_size, buffer) const uint32_t lost_chunk_indexes = return_lost_chunk_indexes(pending_message->chunks_received, pending_message->packet_info.chunk_amount, mtu - PACKET_HEADER_SIZE, (uint32_t*)(buffer + header_size)); @@ -526,9 +529,9 @@ static inline void swiftnet_process_packets( memcpy(buffer + prepend_size + offsetof(struct ip, ip_len), &packet_length_net_order, SIZEOF_FIELD(struct ip, ip_len)); memcpy(buffer + prepend_size + sizeof(struct ip) + offsetof(struct SwiftNetPacketInfo, packet_length), &lost_indexes_size, sizeof(lost_indexes_size)); - HANDLE_CHECKSUM(buffer, packet_length + prepend_size, prepend_size); + HANDLE_CHECKSUM(buffer, packet_length + prepend_size, &network_data); - SWIFTNET_PCAP_SEND_SAFE(pcap, buffer, packet_length + prepend_size); + SWIFTNET_SEND_PACKET(&network_data, buffer, packet_length + prepend_size); allocator_free(&packet_buffer_memory_allocator, packet_buffer); @@ -614,7 +617,7 @@ static inline void swiftnet_process_packets( .port = packet_info.port_info.source_port, }; - if (addr_type == DLT_EN10MB) { + if (GET_ADDR_TYPE(&network_data) == DLT_EN10MB) { memcpy(&sender.mac_address, eth_hdr.ether_shost, sizeof(sender.mac_address)); } @@ -788,9 +791,9 @@ static inline void swiftnet_process_packets( if (new_packets > 50) { float ratio = (float)new_packets_validated / (float)new_packets; if (ratio > 0.95) { - signal_delay_change(LOWER_DELAY, &ip_header, source_port, packet_info.port_info.source_port, addr_type, prepend_size, pcap, ð_hdr); + signal_delay_change(LOWER_DELAY, &ip_header, source_port, packet_info.port_info.source_port, ð_hdr, &network_data); } else { - signal_delay_change(INCREASE_DELAY, &ip_header, source_port, packet_info.port_info.source_port, addr_type, prepend_size, pcap, ð_hdr); + signal_delay_change(INCREASE_DELAY, &ip_header, source_port, packet_info.port_info.source_port, ð_hdr, &network_data); } pending_message->last_chunks_received_number = pending_message->chunks_received_number; @@ -821,7 +824,7 @@ static inline void swiftnet_process_packets( void* swiftnet_server_process_packets(void* const void_server) { struct SwiftNetServer* const server = (struct SwiftNetServer*)void_server; - swiftnet_process_packets((void*)&server->packet_handler, server->pcap, server->eth_header, server->server_port, server->loopback, server->addr_type, &server->packets_sending, &server->packets_sending_memory_allocator, &server->pending_messages, &server->pending_messages_memory_allocator, &server->packets_completed, &server->packets_completed_memory_allocator, CONNECTION_TYPE_SERVER, &server->packet_queue, &server->packet_callback_queue, server, &server->closing, server->prepend_size, &server->process_packets_mtx, &server->process_packets_cond, &server->execute_callback_mtx, &server->execute_callback_cond, &server->processing_packets); + swiftnet_process_packets((void*)&server->packet_handler, server->eth_header, server->server_port, server->loopback, server->network_data, &server->packets_sending, &server->packets_sending_memory_allocator, &server->pending_messages, &server->pending_messages_memory_allocator, &server->packets_completed, &server->packets_completed_memory_allocator, CONNECTION_TYPE_SERVER, &server->packet_queue, &server->packet_callback_queue, server, &server->closing, &server->process_packets_mtx, &server->process_packets_cond, &server->execute_callback_mtx, &server->execute_callback_cond, &server->processing_packets); return NULL; } @@ -829,7 +832,7 @@ void* swiftnet_server_process_packets(void* const void_server) { void* swiftnet_client_process_packets(void* const void_client) { struct SwiftNetClientConnection* const client = (struct SwiftNetClientConnection*)void_client; - swiftnet_process_packets((void*)&client->packet_handler, client->pcap, client->eth_header, client->port_info.source_port, client->loopback, client->addr_type, &client->packets_sending, &client->packets_sending_memory_allocator, &client->pending_messages, &client->pending_messages_memory_allocator, &client->packets_completed, &client->packets_completed_memory_allocator, CONNECTION_TYPE_CLIENT, &client->packet_queue, &client->packet_callback_queue, client, &client->closing, client->prepend_size, &client->process_packets_mtx, &client->process_packets_cond, &client->execute_callback_mtx, &client->execute_callback_cond, &client->processing_packets); + swiftnet_process_packets((void*)&client->packet_handler, client->eth_header, client->port_info.source_port, client->loopback, client->network_data, &client->packets_sending, &client->packets_sending_memory_allocator, &client->pending_messages, &client->pending_messages_memory_allocator, &client->packets_completed, &client->packets_completed_memory_allocator, CONNECTION_TYPE_CLIENT, &client->packet_queue, &client->packet_callback_queue, client, &client->closing, &client->process_packets_mtx, &client->process_packets_cond, &client->execute_callback_mtx, &client->execute_callback_cond, &client->processing_packets); return NULL; } diff --git a/src/send_packet.c b/src/send_packet.c index 898cef7..73b07d7 100644 --- a/src/send_packet.c +++ b/src/send_packet.c @@ -1,4 +1,6 @@ +#include "internal/networking.h" #include "swift_net.h" +#include #include #include #include @@ -16,13 +18,13 @@ #include "internal/internal.h" #include -static inline enum RequestLostPacketsReturnType request_lost_packets_bitarray(const uint8_t* const raw_data, const uint32_t data_size, const struct sockaddr* const destination, pcap_t* const pcap, struct SwiftNetPacketSending* const packet_sending) { +static inline enum RequestLostPacketsReturnType request_lost_packets_bitarray(const uint8_t* const raw_data, const uint32_t data_size, const struct sockaddr* const destination, const struct SwiftNetNetworkData* const network_data, struct SwiftNetPacketSending* const packet_sending) { while(1) { if(check_debug_flag(SWIFTNET_DEBUG_LOST_PACKETS)) { send_debug_message("Requested list of lost packets: {\"packet_id\": %d}\n", htons(packet_sending->packet_id)); } - SWIFTNET_PCAP_SEND_SAFE(pcap, raw_data, data_size); + SWIFTNET_SEND_PACKET(network_data, raw_data, data_size); for(uint8_t times_checked = 0; times_checked < 0xFF; times_checked++) { const enum PacketSendingUpdated status = atomic_load_explicit(&packet_sending->updated, memory_order_acquire); @@ -48,7 +50,6 @@ static inline void handle_lost_packets( struct SwiftNetPacketSending* const packet_sending, const uint32_t mtu, const struct SwiftNetPacketBuffer* const packet, - pcap_t* const pcap, const struct ether_header eth_hdr, const struct in_addr* const destination_address, const uint16_t source_port, @@ -56,13 +57,14 @@ static inline void handle_lost_packets( struct SwiftNetMemoryAllocator* const packets_sending_memory_allocator, struct SwiftNetHashMap* const packets_sending, const bool loopback, - const uint16_t addr_type, - const uint8_t prepend_size + const struct SwiftNetNetworkData* const network_data #ifdef SWIFT_NET_REQUESTS , const bool response , const uint8_t packet_type #endif ) { + const uint8_t prepend_size = GET_PREPEND_SIZE(network_data); + const struct SwiftNetPortInfo port_info = { .source_port = source_port, .destination_port = destination_port @@ -78,9 +80,9 @@ static inline void handle_lost_packets( port_info ); - HANDLE_PACKET_CONSTRUCTION(&request_lost_packets_ip_header, &request_lost_packets_bit_array, addr_type, ð_hdr, PACKET_HEADER_SIZE + prepend_size, request_lost_packets_buffer) + HANDLE_PACKET_CONSTRUCTION(&request_lost_packets_ip_header, &request_lost_packets_bit_array, network_data, ð_hdr, PACKET_HEADER_SIZE + prepend_size, request_lost_packets_buffer) - HANDLE_CHECKSUM(request_lost_packets_buffer, sizeof(request_lost_packets_buffer), prepend_size) + HANDLE_CHECKSUM(request_lost_packets_buffer, sizeof(request_lost_packets_buffer), network_data) const uint32_t packet_length = packet->packet_append_pointer - packet->packet_data_start; const uint32_t chunk_amount = (packet_length + (mtu - PACKET_HEADER_SIZE) - 1) / (mtu - PACKET_HEADER_SIZE); @@ -101,22 +103,10 @@ static inline void handle_lost_packets( uint8_t temp_data_buffer[prepend_size + PACKET_HEADER_SIZE]; - uint8_t prepend_buffer[prepend_size + PACKET_HEADER_SIZE]; - - if (addr_type == DLT_NULL) { - // Loopback interface - const uint32_t family = PF_INET; \ - memcpy(prepend_buffer, &family, sizeof(family)); \ - memcpy(prepend_buffer+ sizeof(family), &resend_chunk_ip_header, sizeof(resend_chunk_ip_header)); \ - memcpy(prepend_buffer + sizeof(family) + sizeof(resend_chunk_ip_header), &resend_chunk_packet_info, sizeof(resend_chunk_packet_info)); \ - } else if (addr_type == DLT_EN10MB) { - memcpy(prepend_buffer, ð_hdr, sizeof(eth_hdr)); \ - memcpy(prepend_buffer+ sizeof(eth_hdr), &resend_chunk_ip_header, sizeof(resend_chunk_ip_header)); \ - memcpy(prepend_buffer + sizeof(eth_hdr) + sizeof(resend_chunk_ip_header), &resend_chunk_packet_info, sizeof(resend_chunk_packet_info)); \ - } + HANDLE_PACKET_CONSTRUCTION(&resend_chunk_ip_header, &resend_chunk_packet_info, network_data, ð_hdr, prepend_size + PACKET_HEADER_SIZE, prepend_buffer) while(1) { - const enum RequestLostPacketsReturnType request_lost_packets_bitarray_response = request_lost_packets_bitarray(request_lost_packets_buffer, PACKET_HEADER_SIZE + prepend_size, (const struct sockaddr*)destination_address, pcap, packet_sending); + const enum RequestLostPacketsReturnType request_lost_packets_bitarray_response = request_lost_packets_bitarray(request_lost_packets_buffer, PACKET_HEADER_SIZE + prepend_size, (const struct sockaddr*)destination_address, network_data, packet_sending); LOCK_ATOMIC_DATA_TYPE(&packets_sending->atomic_lock); @@ -160,13 +150,13 @@ static inline void handle_lost_packets( const uint16_t new_ip_len = htons(bytes_to_complete + PACKET_HEADER_SIZE); memcpy(current_buffer_header_ptr + offsetof(struct ip, ip_len), &new_ip_len, SIZEOF_FIELD(struct ip, ip_len)); - HANDLE_CHECKSUM(current_buffer_header_ptr, prepend_size + PACKET_HEADER_SIZE + bytes_to_complete, prepend_size) + HANDLE_CHECKSUM(current_buffer_header_ptr, prepend_size + PACKET_HEADER_SIZE + bytes_to_complete, network_data) - SWIFTNET_PCAP_SEND_SAFE(pcap, current_buffer_header_ptr, bytes_to_complete + PACKET_HEADER_SIZE + prepend_size); + SWIFTNET_SEND_PACKET(network_data, current_buffer_header_ptr, bytes_to_complete + PACKET_HEADER_SIZE + prepend_size); } else { - HANDLE_CHECKSUM(current_buffer_header_ptr, mtu + prepend_size, prepend_size) + HANDLE_CHECKSUM(current_buffer_header_ptr, mtu + prepend_size, network_data) - SWIFTNET_PCAP_SEND_SAFE(pcap, current_buffer_header_ptr, mtu + prepend_size); + SWIFTNET_SEND_PACKET(network_data, current_buffer_header_ptr, mtu + prepend_size); } memcpy(current_buffer_header_ptr, temp_data_buffer, prepend_size + PACKET_HEADER_SIZE); @@ -185,11 +175,9 @@ inline void swiftnet_send_packet( const struct in_addr* const target_addr, struct SwiftNetHashMap* const packets_sending, struct SwiftNetMemoryAllocator* const packets_sending_memory_allocator, - pcap_t* const pcap, const struct ether_header eth_hdr, const bool loopback, - const uint16_t addr_type, - const uint8_t prepend_size + const struct SwiftNetNetworkData network_data #ifdef SWIFT_NET_REQUESTS , struct RequestSent* const request_sent , const bool response @@ -234,6 +222,8 @@ inline void swiftnet_send_packet( const uint32_t chunk_amount = (packet_length + (mtu - PACKET_HEADER_SIZE) - 1) / (mtu - PACKET_HEADER_SIZE); + const uint8_t prepend_size = GET_PREPEND_SIZE(&network_data); + if(packet_length > mtu) { struct SwiftNetPacketInfo packet_info = construct_packet_info( packet_length, @@ -278,19 +268,7 @@ inline void swiftnet_send_packet( uint8_t temp_data_buffer[prepend_size + PACKET_HEADER_SIZE]; - uint8_t prepend_buffer[prepend_size + PACKET_HEADER_SIZE]; - - if (addr_type == DLT_NULL) { - // Loopback interface - const uint32_t family = PF_INET; \ - memcpy(prepend_buffer, &family, sizeof(family)); \ - memcpy(prepend_buffer+ sizeof(family), &ip_header, sizeof(ip_header)); \ - memcpy(prepend_buffer + sizeof(family) + sizeof(ip_header), &packet_info, sizeof(packet_info)); \ - } else if (addr_type == DLT_EN10MB) { - memcpy(prepend_buffer, ð_hdr, sizeof(eth_hdr)); \ - memcpy(prepend_buffer+ sizeof(eth_hdr), &ip_header, sizeof(ip_header)); \ - memcpy(prepend_buffer + sizeof(eth_hdr) + sizeof(ip_header), &packet_info, sizeof(packet_info)); \ - } + HANDLE_PACKET_CONSTRUCTION(&ip_header, &packet_info, &network_data, ð_hdr, prepend_size + PACKET_HEADER_SIZE, prepend_buffer); for(uint32_t i = 0; ; i++) { const uint32_t current_offset = i * (mtu - PACKET_HEADER_SIZE); @@ -320,13 +298,13 @@ inline void swiftnet_send_packet( memcpy(buffer_header_location + prepend_size + offsetof(struct ip, ip_len), &bytes_to_send_net_order, SIZEOF_FIELD(struct ip, ip_len)); - HANDLE_CHECKSUM(buffer_header_location, bytes_to_send, prepend_size); + HANDLE_CHECKSUM(buffer_header_location, bytes_to_send, &network_data); - SWIFTNET_PCAP_SEND_SAFE(pcap, buffer_header_location, bytes_to_send); + SWIFTNET_SEND_PACKET(&network_data, buffer_header_location, bytes_to_send); memcpy(buffer_header_location, temp_data_buffer, prepend_size + PACKET_HEADER_SIZE); - handle_lost_packets(new_packet_sending, mtu, packet, pcap, eth_hdr, target_addr, port_info.source_port, port_info.destination_port, packets_sending_memory_allocator, packets_sending, loopback, addr_type, prepend_size + handle_lost_packets(new_packet_sending, mtu, packet, eth_hdr, target_addr, port_info.source_port, port_info.destination_port, packets_sending_memory_allocator, packets_sending, loopback, &network_data #ifdef SWIFT_NET_REQUESTS , response , packet_type @@ -337,9 +315,9 @@ inline void swiftnet_send_packet( } else { const uint16_t bytes_to_send = prepend_size + mtu; - HANDLE_CHECKSUM(buffer_header_location, bytes_to_send, prepend_size) + HANDLE_CHECKSUM(buffer_header_location, bytes_to_send, &network_data); - SWIFTNET_PCAP_SEND_SAFE(pcap, buffer_header_location, bytes_to_send); + SWIFTNET_SEND_PACKET(&network_data, buffer_header_location, bytes_to_send); memcpy(buffer_header_location, temp_data_buffer, prepend_size + PACKET_HEADER_SIZE); @@ -363,7 +341,7 @@ inline void swiftnet_send_packet( const struct ip ip_header = construct_ip_header(*target_addr, final_packet_size - prepend_size, packet_id); - if(addr_type == DLT_NULL) { + if(GET_ADDR_TYPE(&network_data) == DLT_NULL) { uint32_t family = PF_INET; memcpy(packet->packet_buffer_start + sizeof(struct ether_header) - sizeof(family), &family, sizeof(family)); memcpy(packet->packet_buffer_start + sizeof(struct ether_header), &ip_header, sizeof(ip_header)); @@ -371,19 +349,19 @@ inline void swiftnet_send_packet( memcpy(packet->packet_buffer_start + PACKET_HEADER_SIZE + sizeof(struct ether_header), packet->packet_data_start, packet_length); - HANDLE_CHECKSUM(packet->packet_buffer_start + sizeof(struct ether_header) - sizeof(family), final_packet_size, prepend_size) + HANDLE_CHECKSUM(packet->packet_buffer_start + sizeof(struct ether_header) - sizeof(family), final_packet_size, &network_data) - SWIFTNET_PCAP_SEND_SAFE(pcap, packet->packet_buffer_start + sizeof(struct ether_header) - sizeof(family), final_packet_size); - } else if(addr_type == DLT_EN10MB) { + SWIFTNET_SEND_PACKET(&network_data, packet->packet_buffer_start + sizeof(struct ether_header) - sizeof(family), final_packet_size); + } else if(GET_ADDR_TYPE(&network_data) == DLT_EN10MB) { memcpy(packet->packet_buffer_start, ð_hdr, sizeof(eth_hdr)); memcpy(packet->packet_buffer_start + sizeof(eth_hdr), &ip_header, sizeof(ip_header)); memcpy(packet->packet_buffer_start + sizeof(eth_hdr) + sizeof(ip_header), &packet_info, sizeof(packet_info)); memcpy(packet->packet_buffer_start + PACKET_HEADER_SIZE + sizeof(struct ether_header), packet->packet_data_start, packet_length); - HANDLE_CHECKSUM(packet->packet_buffer_start, final_packet_size, prepend_size) + HANDLE_CHECKSUM(packet->packet_buffer_start, final_packet_size, &network_data) - SWIFTNET_PCAP_SEND_SAFE(pcap, packet->packet_buffer_start, final_packet_size); + SWIFTNET_SEND_PACKET(&network_data, packet->packet_buffer_start, final_packet_size); } } } @@ -391,7 +369,7 @@ inline void swiftnet_send_packet( void swiftnet_client_send_packet(struct SwiftNetClientConnection* const client, struct SwiftNetPacketBuffer* const packet) { const uint32_t packet_length = packet->packet_append_pointer - packet->packet_data_start; - swiftnet_send_packet(client, client->maximum_transmission_unit, client->port_info, packet, packet_length, &client->server_addr, &client->packets_sending, &client->packets_sending_memory_allocator, client->pcap, client->eth_header, client->loopback, client->addr_type, client->prepend_size + swiftnet_send_packet(client, client->maximum_transmission_unit, client->port_info, packet, packet_length, &client->server_addr, &client->packets_sending, &client->packets_sending_memory_allocator, client->eth_header, client->loopback, client->network_data #ifdef SWIFT_NET_REQUESTS , NULL, false, 0 #endif @@ -410,7 +388,7 @@ void swiftnet_server_send_packet(struct SwiftNetServer* const server, struct Swi memcpy(ð_hdr, &server->eth_header, sizeof(eth_hdr)); memcpy(ð_hdr.ether_dhost, &target.mac_address, sizeof(eth_hdr.ether_dhost)); - swiftnet_send_packet(server, target.maximum_transmission_unit, port_info, packet, packet_length, &target.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, eth_hdr, server->loopback, server->addr_type, server->prepend_size + swiftnet_send_packet(server, target.maximum_transmission_unit, port_info, packet, packet_length, &target.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, eth_hdr, server->loopback, server->network_data #ifdef SWIFT_NET_REQUESTS , NULL, false, 0 #endif diff --git a/src/swift_net.h b/src/swift_net.h index c4c1cdb..387bae1 100644 --- a/src/swift_net.h +++ b/src/swift_net.h @@ -11,6 +11,8 @@ #include #include +#define SWIFTNET_BACKEND_PCAP + #ifdef __cplusplus extern "C" { @@ -35,6 +37,14 @@ extern "C" { // More memory = better performance #define SWIFT_NET_MEMORY_USAGE 5 +struct SwiftNetNetworkData { + #ifdef SWIFTNET_BACKEND_PCAP + pcap_t* pcap; + uint16_t addr_type; + uint8_t prepend_size; + #endif +} SWIFT_NET_ALIGNED(8); + enum PacketType { MESSAGE = 0x01, REQUEST_INFORMATION = 0x02, @@ -263,9 +273,9 @@ struct SwiftNetClientConnection { struct SwiftNetMemoryAllocator packets_completed_memory_allocator; struct SwiftNetMemoryAllocator pending_messages_memory_allocator; struct SwiftNetMemoryAllocator packets_sending_memory_allocator; + struct SwiftNetNetworkData network_data; struct PacketQueue packet_queue; struct PacketCallbackQueue packet_callback_queue; - pcap_t* pcap; _Atomic(void (*)(struct SwiftNetClientPacketData* const, void* const user)) packet_handler; _Atomic(void*) packet_handler_user_arg; pthread_mutex_t process_packets_mtx; @@ -278,8 +288,6 @@ struct SwiftNetClientConnection { struct ether_header eth_header; uint32_t maximum_transmission_unit; struct in_addr server_addr; - uint16_t addr_type; - uint8_t prepend_size; bool loopback; _Atomic bool processing_packets; _Atomic bool closing; @@ -293,9 +301,9 @@ struct SwiftNetServer { struct SwiftNetMemoryAllocator packets_completed_memory_allocator; struct SwiftNetMemoryAllocator pending_messages_memory_allocator; struct SwiftNetMemoryAllocator packets_sending_memory_allocator; + struct SwiftNetNetworkData network_data; struct PacketQueue packet_queue; struct PacketCallbackQueue packet_callback_queue; - pcap_t* pcap; _Atomic(void (*)(struct SwiftNetServerPacketData* const, void* const user)) packet_handler; _Atomic(void*) packet_handler_user_arg; pthread_mutex_t process_packets_mtx; @@ -306,8 +314,6 @@ struct SwiftNetServer { pthread_t execute_callback_thread; struct ether_header eth_header; uint16_t server_port; - uint16_t addr_type; - uint8_t prepend_size; bool loopback; _Atomic bool processing_packets; _Atomic bool closing; From 7977b97b1aac9d03230f28abe91eb546724886cd Mon Sep 17 00:00:00 2001 From: morcules Date: Sat, 23 May 2026 12:41:29 +0200 Subject: [PATCH 3/6] updated the way of building source --- .gitignore | 3 + build/{linux_build_release.sh => build.sh} | 2 +- build/build_instructions.md | 4 + build/linux_build_testing.sh | 8 -- build/macos_build_release.sh | 8 -- build/macos_build_testing.sh | 8 -- build/profile_template.cmake | 10 +++ ...k_existing_listener.c.D08ACF88A6D73CB6.idx | Bin 2256 -> 0 bytes .../cleanup_connection.c.135A87110A44756C.idx | Bin 4180 -> 0 bytes .../cleanup_swiftnet.c.D261B829E6FF1D15.idx | Bin 2236 -> 0 bytes .../datatype_allocator.c.F5C2FDDEDE7A3556.idx | Bin 6122 -> 0 bytes .../datatype_hashmap.c.6B3CC3F5B671957F.idx | Bin 4378 -> 0 bytes .../datatype_vector.c.20C82A2620E3A183.idx | Bin 1630 -> 0 bytes ...ute_packet_callback.c.75CDB3F3CA1019FB.idx | Bin 2896 -> 0 bytes .../generic_functions.c.34FFBCD03F2CB460.idx | Bin 3482 -> 0 bytes ...t_interface_and_mac.c.14CE5855DE3D9C4B.idx | Bin 1742 -> 0 bytes .../index/get_mtu.c.50903B83A19C3386.idx | Bin 1030 -> 0 bytes .../handle_packets.c.1E33790C25DF3B92.idx | Bin 5866 -> 0 bytes ...e_client_connection.c.1EAE19817E4C6370.idx | Bin 6236 -> 0 bytes .../initialize_server.c.6B41D0D4BEC8C08A.idx | Bin 3016 -> 0 bytes ...initialize_swiftnet.c.F2AB0A5BB1E70AC0.idx | Bin 5276 -> 0 bytes .../index/internal.h.D8B6A6B84688EEC1.idx | Bin 9972 -> 0 bytes .../index/make_request.c.A6C2C66D7CCCDD9A.idx | Bin 3070 -> 0 bytes .../make_response.c.CCAFFC5F73ED3695.idx | Bin 1662 -> 0 bytes ...ipulate_debug_flags.c.CEC224EB912EA1D1.idx | Bin 674 -> 0 bytes ..._background_service.c.7F1EF4943D2DA07D.idx | Bin 2616 -> 0 bytes .../index/networking.h.E8DFD5E7B8CBD7B1.idx | Bin 1434 -> 0 bytes .../packet_buffer.c.28B51622D1E7F146.idx | Bin 1862 -> 0 bytes .../index/pcap_open.c.12FB254C28B3CA46.idx | Bin 842 -> 0 bytes .../index/pcap_send.c.51C51B70A6382404.idx | Bin 632 -> 0 bytes .../process_packets.c.D9BED195CEDA27E7.idx | Bin 19228 -> 0 bytes .../index/send_packet.c.ED568F1A8FFC045E.idx | Bin 11240 -> 0 bytes .../index/swift_net.h.83A22C4E96D34E3B.idx | Bin 20350 -> 0 bytes src/CMakeLists.txt | 75 +++++++----------- src/handle_packets.c | 2 +- src/initialize_client_connection.c | 6 +- src/initialize_server.c | 6 +- src/initialize_swiftnet.c | 22 ++--- src/internal/networking.h | 2 +- src/swift_net.h | 8 +- 40 files changed, 72 insertions(+), 92 deletions(-) rename build/{linux_build_release.sh => build.sh} (63%) create mode 100644 build/build_instructions.md delete mode 100755 build/linux_build_testing.sh delete mode 100755 build/macos_build_release.sh delete mode 100755 build/macos_build_testing.sh create mode 100644 build/profile_template.cmake delete mode 100644 src/.cache/clangd/index/check_existing_listener.c.D08ACF88A6D73CB6.idx delete mode 100644 src/.cache/clangd/index/cleanup_connection.c.135A87110A44756C.idx delete mode 100644 src/.cache/clangd/index/cleanup_swiftnet.c.D261B829E6FF1D15.idx delete mode 100644 src/.cache/clangd/index/datatype_allocator.c.F5C2FDDEDE7A3556.idx delete mode 100644 src/.cache/clangd/index/datatype_hashmap.c.6B3CC3F5B671957F.idx delete mode 100644 src/.cache/clangd/index/datatype_vector.c.20C82A2620E3A183.idx delete mode 100644 src/.cache/clangd/index/execute_packet_callback.c.75CDB3F3CA1019FB.idx delete mode 100644 src/.cache/clangd/index/generic_functions.c.34FFBCD03F2CB460.idx delete mode 100644 src/.cache/clangd/index/get_default_interface_and_mac.c.14CE5855DE3D9C4B.idx delete mode 100644 src/.cache/clangd/index/get_mtu.c.50903B83A19C3386.idx delete mode 100644 src/.cache/clangd/index/handle_packets.c.1E33790C25DF3B92.idx delete mode 100644 src/.cache/clangd/index/initialize_client_connection.c.1EAE19817E4C6370.idx delete mode 100644 src/.cache/clangd/index/initialize_server.c.6B41D0D4BEC8C08A.idx delete mode 100644 src/.cache/clangd/index/initialize_swiftnet.c.F2AB0A5BB1E70AC0.idx delete mode 100644 src/.cache/clangd/index/internal.h.D8B6A6B84688EEC1.idx delete mode 100644 src/.cache/clangd/index/make_request.c.A6C2C66D7CCCDD9A.idx delete mode 100644 src/.cache/clangd/index/make_response.c.CCAFFC5F73ED3695.idx delete mode 100644 src/.cache/clangd/index/manipulate_debug_flags.c.CEC224EB912EA1D1.idx delete mode 100644 src/.cache/clangd/index/memory_cleanup_background_service.c.7F1EF4943D2DA07D.idx delete mode 100644 src/.cache/clangd/index/networking.h.E8DFD5E7B8CBD7B1.idx delete mode 100644 src/.cache/clangd/index/packet_buffer.c.28B51622D1E7F146.idx delete mode 100644 src/.cache/clangd/index/pcap_open.c.12FB254C28B3CA46.idx delete mode 100644 src/.cache/clangd/index/pcap_send.c.51C51B70A6382404.idx delete mode 100644 src/.cache/clangd/index/process_packets.c.D9BED195CEDA27E7.idx delete mode 100644 src/.cache/clangd/index/send_packet.c.ED568F1A8FFC045E.idx delete mode 100644 src/.cache/clangd/index/swift_net.h.83A22C4E96D34E3B.idx diff --git a/.gitignore b/.gitignore index b553309..2f88ba2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,14 @@ *.DS_Store +profile.cmake CMakeCache.txt CMakeFiles/ cmake_install.cmake install_manifest.txt Makefile *.cmake +*.cache +!/build/profile_template.cmake !/build/cmake diff --git a/build/linux_build_release.sh b/build/build.sh similarity index 63% rename from build/linux_build_release.sh rename to build/build.sh index 3049029..8f4fef5 100755 --- a/build/linux_build_release.sh +++ b/build/build.sh @@ -4,5 +4,5 @@ rm -rf cmake rm -f Makefile rm -f cmake_install.cmake -cmake ../src -DCMAKE_BUILD_TYPE=Release -DSANITIZER=none -B . +cmake ../src -B . make -B -j8 diff --git a/build/build_instructions.md b/build/build_instructions.md new file mode 100644 index 0000000..12df4c0 --- /dev/null +++ b/build/build_instructions.md @@ -0,0 +1,4 @@ +## Create profile +- Copy the profile_template.cmake file and name it profile.cmake +- Configure the profile correctly +- Run build.sh diff --git a/build/linux_build_testing.sh b/build/linux_build_testing.sh deleted file mode 100755 index a9fc2cb..0000000 --- a/build/linux_build_testing.sh +++ /dev/null @@ -1,8 +0,0 @@ -rm -f CMakeCache.txt -rm -rf CMakeFiles -rm -rf cmake -rm -f Makefile -rm -f cmake_install.cmake - -cmake ../src -DCMAKE_BUILD_TYPE=Debug -DSANITIZER=none -DSWIFT_NET_INTERNAL_TESTING=ON -B . -make -B -j8 diff --git a/build/macos_build_release.sh b/build/macos_build_release.sh deleted file mode 100755 index 3049029..0000000 --- a/build/macos_build_release.sh +++ /dev/null @@ -1,8 +0,0 @@ -rm -f CMakeCache.txt -rm -rf CMakeFiles -rm -rf cmake -rm -f Makefile -rm -f cmake_install.cmake - -cmake ../src -DCMAKE_BUILD_TYPE=Release -DSANITIZER=none -B . -make -B -j8 diff --git a/build/macos_build_testing.sh b/build/macos_build_testing.sh deleted file mode 100755 index 50bc816..0000000 --- a/build/macos_build_testing.sh +++ /dev/null @@ -1,8 +0,0 @@ -rm -f CMakeCache.txt -rm -rf CMakeFiles -rm -rf cmake -rm -f Makefile -rm -f cmake_install.cmake - -cmake ../src -DCMAKE_BUILD_TYPE=Debug -DSANITIZER=thread -DSWIFT_NET_INTERNAL_TESTING=ON -B . -make -B -j8 diff --git a/build/profile_template.cmake b/build/profile_template.cmake new file mode 100644 index 0000000..4b600ab --- /dev/null +++ b/build/profile_template.cmake @@ -0,0 +1,10 @@ +set(CMAKE_C_FLAGS "-O3") +set(CMAKE_CXX_FLAGS "-O3") + +add_compile_definitions( + # SWIFT_NET_DISABLE_REQUESTS # Compile source without request features (make_request, make_response) + SWIFT_NET_MEMORY_USAGE= # Multiplier of memory preallocated +) + +set(SANITIZER "none") # (thread, address, undefined, none (no sanitizer)) +set(BACKEND "pcap") # (pcap, dpdk) diff --git a/src/.cache/clangd/index/check_existing_listener.c.D08ACF88A6D73CB6.idx b/src/.cache/clangd/index/check_existing_listener.c.D08ACF88A6D73CB6.idx deleted file mode 100644 index 8c215ec4f30f82da78e5c2fb19597a835a976f73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2256 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 J0BkMo{{vf*jZ^>t diff --git a/src/.cache/clangd/index/cleanup_swiftnet.c.D261B829E6FF1D15.idx b/src/.cache/clangd/index/cleanup_swiftnet.c.D261B829E6FF1D15.idx deleted file mode 100644 index c7ed4a36feadbebe6a2c2d07a15e854c577cc678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2236 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 IWghbX0^R`4nE(I) diff --git a/src/.cache/clangd/index/datatype_vector.c.20C82A2620E3A183.idx b/src/.cache/clangd/index/datatype_vector.c.20C82A2620E3A183.idx deleted file mode 100644 index b12abc655d6aa5700416c321fd902db6cf9ff551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 zcmaJJ48=K~O)yeTiuoRdTY0HpYros+fi0EO>3koS3GOzUQzzr?b&FI;@()UEELzOFtA zji>d!8_KuTSVsA|pHxM~Z+Mw|$ycvyyj&n$-B#!~CgQzjDQ|s?8`1r}`PUgk~~TkqFbwLP_?@@M-V%*f~G6NcgAvh8P&w?8b2 zs(9CRvc%yaZ%`a=iMSr4Y@ZwX(eW5{eV6H8dR0K3cG&brO8LZ4V$B`4&D6q7X7Hoz zZXb&KseMlabCx@V-exTm@tWHwEE!|3`*l@Sn-ed#-aK=%u`_tZPLO>fI%{O3=kLX5 zEB-ahk3D63ZcTIt>@J8)DRjQOS>5nOSHoa5U9fxawT_~g z3WXo?yYCi%lvWX&;98Vcodjy9u5?sB%o<7jrJL1D*L>9%*1Jk`fI6?pv}EU}?KzKU z@o0LDO9-!62!RFwWMB*~+!O_;C z^6eHWJ9HKKadW(M2s|(aF-XEqQ*fGc14044NO@6rJa8NB_yYv)m=eSfl5mrhXwpi- ziM-r!q9W69WwZEcGX!c(p;_9Ko268X7^bRQea}xO3(a2t4FC`*0@`7G&gcRJj z)=QfFrUAbd3&mnWdcu2^dFco*TmX@i&`CtX5V6jzY^h~P6QBtqN)YKJI#(Ogi}g|) zGP)TRqe6XGm5fs8@i8&3o(kAB%eI+*JFZWm4#S7~RR2BWF}m$VB<_e&V00pHiD}$>>yi*Q zDFTPBi$TH<-V429%$v{UK_n82oNfJ6tW>NbZy<7)xXTH$^w-dzy;PsW#qkCFB_)VF zp{Fa+9sFx{W57QJP5(R7N5w-uEq^fIS#1gg(3V^awM$)Ft!jBb?Gknw+hl20KS8Ak_d;b>rKMdza6XFpX_}DOIr7kgyF&- z66DV48%~brKf!aS?P(d2g2>U?afJ=Z6f$p8Dnv+*mhFUrGw8^)APSNPtt53iG>vzd zYUUTjeQ2Xij&tB#NdF;HI4G7OwUe5)eKUj@B9@7pg4Pr9EOTm-)kSvJ-fTbXMQQz8 tJRG?I3VF2+-PynH{!JdIPy)r$2e3CSIn@b67wGCBa&~eQ%b-Lk{SU4N0Mq~g diff --git a/src/.cache/clangd/index/execute_packet_callback.c.75CDB3F3CA1019FB.idx b/src/.cache/clangd/index/execute_packet_callback.c.75CDB3F3CA1019FB.idx deleted file mode 100644 index a8e5ef1396baaf9e3b7f2398f5580849ad0c3ddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2896 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 La`LlrG4lcdUHOE( diff --git a/src/.cache/clangd/index/get_mtu.c.50903B83A19C3386.idx b/src/.cache/clangd/index/get_mtu.c.50903B83A19C3386.idx deleted file mode 100644 index 40fadfa7b588fc6944a26947e341c1ea6cde3f28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1030 zcmWIYbaVU1%)sEB;#rZKT9U}Zz`!63#Kk2=nX!xv4AwxoiaB#9MSC+F3ba07{-&8< zYguxr3wN!++Mo-fZ<_kOt!CflOA|hMlzZv_yIbNWToV17dtzq)OiT3*drjZ-pOBI_ zn&mnD?Y`@NKOf9+I;N%(?j6*Ytp%a=D8-`486oZ;lMTyE|0lg8H-!x@)PEd83?Uf#00 zx#!A_6#?56zj1_JUY;|7<6Qoe=3OakZGNeyg}hkGYo1`sZ6a}ax3=NScJ|Z;tA)%* z>T^DZf7<-w?7j<6Wpg}^do7HSs;f~knf*g)QuT{?+f7S9m?zCF{ghxl>5k(%>myU7 zZs+N`-qEx&^KF;lRj=@U^ULb~^OFhD%UJ3n`11elR%l=-uFOqR28MP`C(DoSZz0V* z3^EK1Lfrh^V!|sJ#a1xNGH^06G6)JV3bQg4rKS~c1;)t6w`{7RU!Srv@(A&(^6LV1 zgF$e|9E-kLTI@h!K`}uEs3^m#wEbWEjK3%`vIy}D@JqlfN=#>{e)Ww(A1ExuAtVeF zp0i;0nanO3bD*#oznBGfx@7mf?3J6=EGT=S^u5^g}K?d`CzI)gayfMe)sn| zP*{*d5N-%C_Hq(IT8oR4iz`43cql^h8%PKUL?IN2goh9VgE&GI9?A?1A_!4wIFnIm wbwKR4V|D-CxP&FdrNty9r9?#-B;oSOxhXk(Kpqbd9}7D-2P-E(8y7P#0H$J5nE(I) diff --git a/src/.cache/clangd/index/handle_packets.c.1E33790C25DF3B92.idx b/src/.cache/clangd/index/handle_packets.c.1E33790C25DF3B92.idx deleted file mode 100644 index 4c45cc929b97c8e278d2c812b2871184ad469556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5866 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 diff --git a/src/.cache/clangd/index/initialize_client_connection.c.1EAE19817E4C6370.idx b/src/.cache/clangd/index/initialize_client_connection.c.1EAE19817E4C6370.idx deleted file mode 100644 index 3027a8b5e7c48a9852bb39f805dfc41c6b87378e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6236 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 W&6o)w2jiO0z%0yJmQ1$U%>M!L>AGY9 diff --git a/src/.cache/clangd/index/make_response.c.CCAFFC5F73ED3695.idx b/src/.cache/clangd/index/make_response.c.CCAFFC5F73ED3695.idx deleted file mode 100644 index 5487071abf0984ee366af09e47270e669db75500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmYjP2~ZPP7~b8mu&^sxSQ5wpGN6CPmx@4Mc=|NqB^hlJ!C zBS=tccwtW3&SWD5K^X8;?o?!?qX-fQfWkU`rT_Me?(~5fZEDgsH@ot7#FG3i-&Mc= z)6fc~qp(7=P-*`4yWzh)Wu+Z>Q|*l5dEbovgSmWFS>9!(wSHJOePnzrwn3rPTPa*R z)YIMT@5=l}UoPspdS=o$i$)qYxnGG-x0Qsi*J3_?xNYj#tX&j&+VTE~wEDcDX5!Dx zpga1erwav98*-W*5`NOH8r$msL~;JE^2I~E_S{+{$3WrWrGd#Q(_aT^!X#EQP~Mah z9Y+N7JhpXu+l7B{{qU|Vot608cGs&(R>N{h=NXj+{jB|I{Ojj7+ZrQI1Xl zLi}9f@vyaDb*E5>HIU#q?j&sEQEjY*hg!UsDALlE8^PQ*{o>U4z%PM^QUY2+`@(Ra zPj0=td^Mi}FrmeWHVj7ID>UpWT}TwL#0iWz!x7Mln!T?H6#D)VM|U63erzJbC;{J; zZv|E0Ha|KPo-)t)MFq@z*s-CJ#24_c3l~kBy$)&Du&|hrLfA6+NA1q>S}A~;c9iKy zVa(?>nuegK6TyHmw=j2vu!XJbo4n;x87P4;B5Ys`a2qi;P^4N_n7Y6p3}f$lj1p5Q zl(~?rOX;D5F~Du?W*i7%NiU^m1OXC4)Ad>IEcZF)yI?DPZ`-UvGP7O-badn=J>+1?!@_RNQ zm}4lT<+@U=d-HQj-gi4#$8D4t;vDw;H~;LtY{+E^ElOPB2xafcN!iM>xU*ig>8}|kU)M$ZiO{A<`pF#jCoXI1g0#eJs=F+A2VM6JC&hKC08b3 z2QX$3gS>oNvTWJJLlyfyFHmMLM|gQo&e+98s{uiq(jur|b3=P8A!~IxTZ=2{1L3)o zU9dJ0241!LdC7|N&S9JhVQ-8fMC=ZQ^j4Ip5?4B*nLRP z64x>2500?kb92XN&5aJWTcsFL#&rh>zsHzX?%Z@FuXnqbx`$1u!x$ZxutF~n$P3i6 z1W`cjPGQ{^@`ZzY{V1Cgz-)kDYS!}i4ZoVVW9+h-8C$}& z0?TGbSwc~CsZXjdz4!?b;TjZglQB;+q&#rY2@ILE`5B0uIGYf&c&j diff --git a/src/.cache/clangd/index/manipulate_debug_flags.c.CEC224EB912EA1D1.idx b/src/.cache/clangd/index/manipulate_debug_flags.c.CEC224EB912EA1D1.idx deleted file mode 100644 index f2659a6de6e226f4fe0c46349190a63e892bb8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmWIYbaR`<#K7R3;#rZKT9U}Zz`!63#Kk2=na+$147-7H6?1w6PUaml5SZ)#aUr{f zg`T;?qXw=Jk6bOsC34Eg=c$D4RnULA@YVk5EEk_LJT;Pfxp(IF125hs8;PH5^Z53D zRiEWC(Xf>_Gw!hjeg9m{v-ow7VE|Xj*8017T}JWZPtEkN?XLM5BKEp=<5~H}eRr5e z9i$huRbSN8>0jl%fN#a|2b07-mVV-%)|4I<>ht>Cg_9*WTAyu8oUD04;OU}`nP$w_ zteSN~PaZpBBNvm9UcJW4>-6fL2du_-Rykj?Nz(l7@N|NzutCL&DXC5ef=)TiaeZWC zcurYz#qt{}RzlG#y=9`;)t5N>JK6j@^Wfpk{SVzTd33()5=$=YsR%SL-r)S$YL8At zb^1Ebu1fZ=fraO8)W4kC`$G5neeY}cs;V~bkbd88c4}Xr*txS)Vou$^U&mly@`?TR zoJk*8mlyrG#ZX+Co8$%zQ}^o4U48vBMm!AS3=AS{tZWLRdzg9lFsn0gGBFBD2r-JX z_61zIbEQCP6AyzJPzf_Dv#jVYW}aQlDj+5NU?oMVX~lDarky@oks|fa z8C<6bn>w2%%qkeo$OX0!s0|EYih;r)J7B^w=eE8}VQx7KG?ImzMF6IXM}(c5T>xfO znx}w;;jKx}L5i4IxR4Yvv2(!`F%+fdB!Y}BE=n#|2GWco$2=KtGvvQyViFbwr!c6c dqEH%0CFiE(@BwKa9zGU!ZVpyX0X8mXUI6dU@ecq1 diff --git a/src/.cache/clangd/index/memory_cleanup_background_service.c.7F1EF4943D2DA07D.idx b/src/.cache/clangd/index/memory_cleanup_background_service.c.7F1EF4943D2DA07D.idx deleted file mode 100644 index 919025e8d74f0e71f33fc6efe28604127e1223e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcmbW3X;4#F6vto4gFKT936DSm2_y)CglvR$0)%Bi78Mj!sshR)paQ}Ws$%Pa8^tPW zRobaqP;f^XWZXuy1>1a32{Kcqh-*Qa(m`d!3epyPAMMSbTsQu0By_iCUMliO&QrD}bl2-(5BbjWtZH0009;obi9hN;@c zZrKLYd)eKp*_-yiYm@h#Ilrhs>0pRSkTY37G|&JPhXdYxE*t2|d4D{=J;rOGqTTp( zq(EG=VtGPeL(4LJmLYvN*yca6)}}sW-(M=sSYDK!1uH0-TTPA*`)L5?jA5k8M&)gP zf?<1tp}}S`7?=x}VQ;M?`M28(YO??)gi8btg4t6aaP!nN;*|iF4c({*7!ST?Ij~ey zALun!nww{wU}4z4@bKmrX%QF$kN^M|w5^MOIr6lA3k#YBJ_0`!>~$ozCi>B4jujvc zOAP52nWQ1tP>AU5<|?9TPn{#&tKn*#kh$+{#P;IK0B;;8`8Z#MBH^SQmy1vUoK)b7 zX{0Cg66CaLPZy_S-yH0aPONFjzuM6FNF z5nsL$1VfkVdFq8|?~`B^bMVgf2xyM-j*3KPM(@kip}M#Q&r5?Lhn-2ZTl(I0C zuPl5uF#_^3sl*5a7o`Hp%^*XB7F)4DnhHP$fgllDG&WYy+f$~?haI65qI~cvg~$U= zQVMCJ6e0%;JI0m_+awvGLTQjR4lRlcZ?uXyy}fM4evQ|kHq6n+uZJme7H}4!f&h}2 z#7jX`?0PeFa)qkW8Yc;yaHiFZaFH{Tf|FugY$4cXKXoipkCQq==ZYw_$){8AUb&SC zNS#C{M`l3!2m4#*1(14oy$^c#gRW?zB))FPjPr~#pSqh-px*`S=gIYSMWWv}Tp3Nj zjMYH1ge&nz=FFpc5|`E6YGxenKtj-Vk4)J<=+`;IITrcVn3OIj2Vd=ngBnFd@lbY< z+@ic_infh*q$x%kW2q4;J(K;>83Tuckh-HNaEJ++g?jEX52gy!8>tREa#Y9z?64z` zrcP~-ZF1!)sF$^pwH_^U-P~33{E+z~?3C73>yG9DkfEYb2~F{wcrK#YOR94f4DSw@ zA}fFujXVKT$Pv2G3Y|I5)5xFe?}ie-v*|(N(qVBYlp>rfOh;S7E^TRi(Ah2gdsD%#n1Sek6xb{&)Vc^U|F5yrZcowS3IC^}y zF8DbNpk}MxP$3iZE^ifn@@Np6V?YdvRI<;Fn8OZD4$io~qTZi0xBe^|qQXhlzR0iO zn?3W}G9seOdABUFw#{d8T diff --git a/src/.cache/clangd/index/networking.h.E8DFD5E7B8CBD7B1.idx b/src/.cache/clangd/index/networking.h.E8DFD5E7B8CBD7B1.idx deleted file mode 100644 index b346030cc5127f81844097ca50ec0835acaa1c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1434 zcmWIYbaR`;%D~{9;#rZKT9U}Zz`!63#Kk2=nSP8639=|4a-W{GjuNd+AB=_aDVQ!Sn+U=3n|;@emh%TYkc^fTYKbE*|rm3 z-74)YkIFfHadXczXo}b5J#MJIvp1}_r)JXk$5Zy~vRH*5N4JyXl$mlHAtR+Z(z)YmKXS zSd{WUc%a2_E$6w<*?kP`U+pT2D|3^U0zROfXYFDSCL;)k%5zyi9v`9sDS&tlK38ptC_J_Zg zgqa`E0T#R#Vld(TZ)9^nD9i~28sf&|rT{a@9PJ#K-Ky@`a&?(upnjRgajp2 z`I&A_84I(zRG@Q}C6x`}!N#j5uBHd$P1?T0W{da4ETB#NJp8cmV$intpI^85Mm8v5 zcr7JiHo-gzR1Jz4n7i749C;ZM_`L;alcJfTEzCVUye51mqA%C`$Gv|k{WZ~ge;8qZXM=7tOlA;E}0u>GwKA2Z{ zcy%~*_+aKaR#y?G`km?p`CC!{w*!UQ z+1cT~o4b&ZLFug}CrIx*3_4)_M@jSXBFnfzqa}q)9 t;-chYcMwAmL_h!!jKRRbhhXx`Cms51xBUEMRz4m<0e%JngcLu52>|z-ukru@ diff --git a/src/.cache/clangd/index/packet_buffer.c.28B51622D1E7F146.idx b/src/.cache/clangd/index/packet_buffer.c.28B51622D1E7F146.idx deleted file mode 100644 index 7ad0c3598dd0c5703aa3cda6ded7e650252b15de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1862 zcmbVLYfuwc6uwz@6E?X}l0afevP%-ka}rYI)j(wS$BTUD<5+%xJM;i z=x4j@%}qMGh3L}9UOlf>7jWr`ZKcCh%!acG=BA&>;=Q+T?Di>szJUAVmGi-i_C9Uc z-W;>b5$ucYH(bs0^*n3XE=QUQ>EH#LXw{K-hy@TW-W= z>I&WC-6kwOItg2*YRS)8F)zR|H{n8%GI>I0+1=&mxrt#%Oq=I)S5|)6GN{;n`ILR1 zEP3gLI=6(>2+Ejb-nj+W2AGlc@)p#V_ncqLN zy2wv+yz!5s4J+L?Rebd=cYDV5I^mRsPik$)vIE<46A!eT8}^%Hf1S;*uIGDY_NCh$ z`Z8b+4^-D|ygF5OZL4hE3jd#|u_XHdpl?eql{%J`-#os5+JRxb)Ebweucy5=GhpOICue6YJgRyMPnm9By*t z*cMeVGr#^Sd2?J%M+gK804T1J8#404JQ?{sug+O18#~$#ftGnJAtY-0DF&Zn20*&w zqx5nPO*HiMWoDLgc0mxpTrm@74LyXxAcxtjTvv^7`(# z0S=^iG9HauP(JL~`Q4@v6GO{=XJD57NOl?VqJ@aVh0-hvL6|x-@B}3W`k(P zT4pvZa?OTCuGt{8w_^{!`!A}3u}A5y^g?u3@9XJ-&(|LQ&nmR%c3-c*M^w8!cBdg~ zXuPui*-KG)Ekj#yi#w`Sx&G3su01U-TB%U_A??E3+xD$aHJoN>*P0=^wYj{DY(4P{ z(+VV^g0(?DRvv*eLCRn3uVs-%Xz_oWE~3|5)}M3nfA1;UB*tUcn}-TR<6~&o+lFZV z;r^B>d*0mVLW(<$JCm(f6efy7Qjn5pBqp|ADPJmLkwI@5gVZ5q*upX7a}fSGcXH~% z^bHSO@;+PxD=!cWbSx6_MDll%MM&noBR|bxMRJfbk2Oz2R@u`sQe1sF?28@KnST!D z^`Z4d?z2c6p``uPD)6>T0Mw{q0F>;JW{-aCaj`8m!;^s`=*{;KdJ5k2fnKEeZ_%-F AFaQ7m diff --git a/src/.cache/clangd/index/pcap_open.c.12FB254C28B3CA46.idx b/src/.cache/clangd/index/pcap_open.c.12FB254C28B3CA46.idx deleted file mode 100644 index 7b3c4bd601ca2ab650bd9d6e46b8da3126d8392f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmWIYbaQiJW?*nm@vO*AElFfyU| zmdm!IY-}KuFv!>LnslT7Muu8yH|FF!x^k+9Kw+ z-x>_RK7H`%A%n@UPR;V0OMM#CH6FKfS}O23R_D=hRsMlZ7G&ha+*e1RHQEFQ8NnnUD zPf~fsbx~P_k%wQHTUZRHEis*;`qeiEeP$MZehz+Nm@o^!1cw9?PnJU#&Z|zmm%5&H zy9dxDNnS}wm_--&STk&Dwe)7<;g@ib@P?Vh!!K(fYYpSQjCo` za|KUko!tTy7T^~Er5!Msez#{{X^Q54W*%@@z=VPR0fq&F2MP-qFNH;Q+u`NwF9J;x z=MWcxSpcIMxlkgb=G32j#oSwOfU0FUWZ-dN`NnwX3A6Q|fWj;SEDA8Q_rKZl^Tmz7 z-+;oRETa4{GZ~6fa}q&nii?tqm4P%Pf46G0Z?dk#DkeSw20oZ}1_l8HGdVXU2PDJA R!^6bN$;Qmi%fi9P4FCjP7g_)S diff --git a/src/.cache/clangd/index/pcap_send.c.51C51B70A6382404.idx b/src/.cache/clangd/index/pcap_send.c.51C51B70A6382404.idx deleted file mode 100644 index 33f9d193640861d4bd58e1f42ad39ca797637427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 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 diff --git a/src/.cache/clangd/index/send_packet.c.ED568F1A8FFC045E.idx b/src/.cache/clangd/index/send_packet.c.ED568F1A8FFC045E.idx deleted file mode 100644 index 6b6c36c1cd806a4d2217dc51872eec762a5c4f4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11240 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

k43Xb|Y z45yy>;DEuhOGH-zeB$71-l?_dwH5#5R z^qY^JR^J)^AHFlC*j2f7Yju1CovrI=eH~jdQx^1c$g~Fz`XlLD`1|+=^I;G58LFWB z;Cdev%5@suPxBMjbS24|FvXz{NK6%)e$yXHa_u3P%d;;yNZl^E- z`M6UUd%WBJc;~g!33P^YVfRK?Bte2|Qi5tOTed?31B)^|UPaK^j8mD!sce`) z;@)wpuNlwZ^6vQP897txrs5KviV}G$tPJ11i23>c)H+cv6`hhrQHRU2d$;qONvlr+ z-z4bGIz+^i(Cj4d;9LKKQm441vuPctpxG&~WV-sMqp;4({p?(W`ZFtO)yx!_&t_KQ zoisF5C~NAM&(ds+%Eq~@A<0;6r-7n9@}~H^tFiyb^;eP$a2_4}VK6uh=6vugvB^qo z$(YSCbxU=@J0_THRpj~CaF-Z8dTAJI70r}ZEk^1`%D%dqdS>K2cd6834d~Y>efMG< zRE*(lprLd3Z`E2Z;kYlt6EGpef;(VM6zp=8lq=qW)4eWL^FA@Fn6}Bx|t=laF&*@qAbJ z_lxON?FFN~Tr1D$nY>HewKI_}Z6~8n%~2w-vODrk19inMz3;u|*PiG2XZ%ao&rv9V_VjF=!dXeaYBE;nw%( z-&#clFYyiC)v?G9*nJJG3LdIW(rDF^?PFC*vn^RO#$Ts@yVUgLhqbhZ5(q2-`Sy1@ zG}$tC?fP^oxQ89?q1+jl7eo5psJJf)tjw&OnXta5fbuk~#x|k2=k1-$qKo|4jtc&?@*2Q!<>tZ^bbrBlQx`+&C zT||bnF5<#j7hz#M$vd)fmwO#^sDd2-*PfP9l$cRO9Z_PzBs z`gS!KRD&F?zNV@zN!seUUAku;1(Qn(Ps!8BQx3oraW@$4=J(78Piy*ite&&|vw$qK z38<-;j*$$4b{FyhaKCvWwii0>rv3Q~ZT~_Cw*TF%j=p?r?7N2wrfa9m2?ne0f0^0yYG_>zZ8_IM>slo*#MTQ@A+JVFH8$qu6IGf-mCU!+ zJR4awYWrT=pAv8`0XJq#J$iapk9xJ}Ahm_lU8Z+t%H>Wssa-IET{`V&;;bj7RW6>pOt>OG@-t|WSivtH7eCNo%l_PT6e01hYUqIWUq zV$R#z2?jgCoVC^alBxGMAF58!V3?PImm-fb%y3u>KHxoIum=>P^BCbM{RXmw=>GZ}24KE%1nMmOPiyPRMw|EmRZYsG1ElQMJiWa3xE*$&;Z*Lv7h2tHu9x@?>-} zPhLn@&299mc|`WQB|m(0in2rs{G0ma`ErRbC0IW9+jWN}AMyWp0_8p!-dDQM|A7R` zh%B7ScSRPirMGb!7-h+RdKDRwtt^p^Yv|P^PcHGLB+KVlm%p1rIgL$Eb1VFJQzn~g zDjE!JoNE^*Mhe07wG|U8OUXRBoHwX^%Hr7^X*SAhAVS+T%;Y3bdB_6N=d}%uF;B|;6~`M z5#-#D6gzK!9uz6FtKfDOA|%|8UIhh4oTRJ>4V$&%h~f)Z7JHzK5*W?|%#>3vL;AFX4V#D&LnCIgL9E}>z&GA4|1LFm zQox%RlCE5wbRlQP?JBk2t;Ws1N1KdOImM|uGRI_DSk}g+?K{(et!UNBsvj#)b0KI} zjPx56-S3+*2Cr>g*FT`|C#W0~RKD!}z;E|0Y8G+t=@K3C94GQ>YA~<{N3m+m z(vtfh3bT1atC2q6U`k9re!jt3_xT2A-RBvM&5F(rv>LJCch&zclG8t{*fFflwo1BJ zHlqJV3}M^5tkhWbPloSHG&; zeOc6-J}!IHRwF&jhd*5LhKkOD`C0xgO3{gk;eBoJE#2657IuDo4@@dhwhPxlAi zs+XPplfHcoov)!A8@iAYdT93axwSMHFMR~W%6~~;zob83(hvImTEr-+4^h*`L{&=v zksW$LkUt#~1T#sb`^n)tL6BWPL6FZXL6BW|L69{;5bW6df*>1BL9pdd<+QyZH0Mtp z`G4iOpdio>?$}ShKnOxJ_Dm4uuc8DHlXjioiP`}|lV;}DEgT%JoLbwpw6$nuZ`s_; bMi?_`Y=m@4(-LES14GiVQ4>w$21fr4Mxt`6 diff --git a/src/.cache/clangd/index/swift_net.h.83A22C4E96D34E3B.idx b/src/.cache/clangd/index/swift_net.h.83A22C4E96D34E3B.idx deleted file mode 100644 index e41e4f4f0c413dd34f7b4f0b0923dc2777236d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20350 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 zdjq`A0loopback = loopback; new_connection->network_data = *network_data; - new_connection->pending_messages_memory_allocator = allocator_create(sizeof(struct SwiftNetPendingMessage), 100); - new_connection->packets_sending_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketSending), 100); - new_connection->packets_completed_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketCompleted), 100); + new_connection->pending_messages_memory_allocator = allocator_create(sizeof(struct SwiftNetPendingMessage), 40 * SWIFT_NET_MEMORY_USAGE); + new_connection->packets_sending_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketSending), 40 * SWIFT_NET_MEMORY_USAGE); + new_connection->packets_completed_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketCompleted), 40 * SWIFT_NET_MEMORY_USAGE); new_connection->packets_completed = hashmap_create(&packet_completed_key_allocator); new_connection->packets_sending = hashmap_create(&uint16_memory_allocator); new_connection->pending_messages = hashmap_create(&pending_message_key_allocator); diff --git a/src/initialize_server.c b/src/initialize_server.c index f9c9168..545fe29 100644 --- a/src/initialize_server.c +++ b/src/initialize_server.c @@ -50,9 +50,9 @@ static inline struct SwiftNetServer* const construct_server(const bool loopback, atomic_store_explicit(&new_server->packet_handler_user_arg, NULL, memory_order_release); atomic_store_explicit(&new_server->closing, false, memory_order_release); - new_server->pending_messages_memory_allocator = allocator_create(sizeof(struct SwiftNetPendingMessage), 100); - new_server->packets_sending_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketSending), 100); - new_server->packets_completed_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketCompleted), 100); + new_server->pending_messages_memory_allocator = allocator_create(sizeof(struct SwiftNetPendingMessage), 40 * SWIFT_NET_MEMORY_USAGE); + new_server->packets_sending_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketSending), 40 * SWIFT_NET_MEMORY_USAGE); + new_server->packets_completed_memory_allocator = allocator_create(sizeof(struct SwiftNetPacketCompleted), 40 * SWIFT_NET_MEMORY_USAGE); new_server->packets_completed = hashmap_create(&packet_completed_key_allocator); new_server->packets_sending = hashmap_create(&uint16_memory_allocator); diff --git a/src/initialize_swiftnet.c b/src/initialize_swiftnet.c index 37d8480..5132e32 100644 --- a/src/initialize_swiftnet.c +++ b/src/initialize_swiftnet.c @@ -50,21 +50,21 @@ pthread_t memory_cleanup_thread; _Atomic bool swiftnet_closing; static inline void initialize_allocators() { - packet_queue_node_memory_allocator = allocator_create(sizeof(struct PacketQueueNode), 100); - packet_callback_queue_node_memory_allocator = allocator_create(sizeof(struct PacketCallbackQueueNode), 100); - server_packet_data_memory_allocator = allocator_create(sizeof(struct SwiftNetServerPacketData), 100); - client_packet_data_memory_allocator = allocator_create(sizeof(struct SwiftNetClientPacketData), 100); - packet_buffer_memory_allocator = allocator_create(maximum_transmission_unit + sizeof(struct ether_header), 100); + packet_queue_node_memory_allocator = allocator_create(sizeof(struct PacketQueueNode), 40 * SWIFT_NET_MEMORY_USAGE); + packet_callback_queue_node_memory_allocator = allocator_create(sizeof(struct PacketCallbackQueueNode), 40 * SWIFT_NET_MEMORY_USAGE); + server_packet_data_memory_allocator = allocator_create(sizeof(struct SwiftNetServerPacketData), 40 * SWIFT_NET_MEMORY_USAGE); + client_packet_data_memory_allocator = allocator_create(sizeof(struct SwiftNetClientPacketData), 40 * SWIFT_NET_MEMORY_USAGE); + packet_buffer_memory_allocator = allocator_create(maximum_transmission_unit + sizeof(struct ether_header), 40 * SWIFT_NET_MEMORY_USAGE); server_memory_allocator = allocator_create(sizeof(struct SwiftNetServer), 10); client_connection_memory_allocator = allocator_create(sizeof(struct SwiftNetClientConnection), 10); - listener_memory_allocator = allocator_create(sizeof(struct Listener), 100); - hashmap_item_memory_allocator = allocator_create(sizeof(struct SwiftNetHashMapItem), 0xFF); - uint16_memory_allocator = allocator_create(sizeof(uint16_t), 0xFF); - pending_message_key_allocator = allocator_create(sizeof(struct PendingMessagesKey), 0xFF); - packet_completed_key_allocator = allocator_create(sizeof(struct PacketCompletedKey), 0xFF); + listener_memory_allocator = allocator_create(sizeof(struct Listener), 40 * SWIFT_NET_MEMORY_USAGE); + hashmap_item_memory_allocator = allocator_create(sizeof(struct SwiftNetHashMapItem), 0xFF * SWIFT_NET_MEMORY_USAGE); + uint16_memory_allocator = allocator_create(sizeof(uint16_t), 0xFF * SWIFT_NET_MEMORY_USAGE); + pending_message_key_allocator = allocator_create(sizeof(struct PendingMessagesKey), 0xFF * SWIFT_NET_MEMORY_USAGE); + packet_completed_key_allocator = allocator_create(sizeof(struct PacketCompletedKey), 0xFF * SWIFT_NET_MEMORY_USAGE); #ifdef SWIFT_NET_REQUESTS - requests_sent_memory_allocator = allocator_create(sizeof(struct RequestSent), 100); + requests_sent_memory_allocator = allocator_create(sizeof(struct RequestSent), 40 * SWIFT_NET_MEMORY_USAGE); #endif } diff --git a/src/internal/networking.h b/src/internal/networking.h index 0357c00..a8fde7f 100644 --- a/src/internal/networking.h +++ b/src/internal/networking.h @@ -5,7 +5,7 @@ #include #include -#ifdef SWIFTNET_BACKEND_PCAP +#ifdef SWIFT_NET_BACKEND_PCAP #include // Simple crc16 call with proper memory order diff --git a/src/swift_net.h b/src/swift_net.h index 387bae1..b85b349 100644 --- a/src/swift_net.h +++ b/src/swift_net.h @@ -9,9 +9,13 @@ #include #include #include + +#ifdef SWIFT_NET_BACKEND_PCAP #include +#endif -#define SWIFTNET_BACKEND_PCAP +#ifdef SWIFT_NET_BACKEND_DPDK +#endif #ifdef __cplusplus extern "C" { @@ -38,7 +42,7 @@ extern "C" { #define SWIFT_NET_MEMORY_USAGE 5 struct SwiftNetNetworkData { - #ifdef SWIFTNET_BACKEND_PCAP + #ifdef SWIFT_NET_BACKEND_PCAP pcap_t* pcap; uint16_t addr_type; uint8_t prepend_size; From 9d4a9cd8ba1faf91b26a6bb85275f28d6fbf77d2 Mon Sep 17 00:00:00 2001 From: morcules Date: Thu, 18 Jun 2026 10:06:24 +0200 Subject: [PATCH 4/6] Updated workflow file and template --- .github/workflows/run_all_tests.yml | 3 ++- build/profile_template.cmake | 5 +---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/run_all_tests.yml b/.github/workflows/run_all_tests.yml index 7cea027..78ebb24 100644 --- a/.github/workflows/run_all_tests.yml +++ b/.github/workflows/run_all_tests.yml @@ -22,7 +22,8 @@ jobs: - uses: actions/checkout@v4 - name: build run: | - ./build_for_testing.sh + cp profile_template.cmake profile.cmake + ./build_.sh working-directory: build - name: build_integration_tests run: | diff --git a/build/profile_template.cmake b/build/profile_template.cmake index 4b600ab..67378c8 100644 --- a/build/profile_template.cmake +++ b/build/profile_template.cmake @@ -1,9 +1,6 @@ -set(CMAKE_C_FLAGS "-O3") -set(CMAKE_CXX_FLAGS "-O3") - add_compile_definitions( # SWIFT_NET_DISABLE_REQUESTS # Compile source without request features (make_request, make_response) - SWIFT_NET_MEMORY_USAGE= # Multiplier of memory preallocated + SWIFT_NET_MEMORY_USAGE=5 # Multiplier of memory preallocated ) set(SANITIZER "none") # (thread, address, undefined, none (no sanitizer)) From cda552c5693341563f3b9ce4b5dea6dfdd4d8449 Mon Sep 17 00:00:00 2001 From: morcules Date: Thu, 18 Jun 2026 10:08:52 +0200 Subject: [PATCH 5/6] small workflow mistake --- .github/workflows/run_all_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_all_tests.yml b/.github/workflows/run_all_tests.yml index 78ebb24..5c38915 100644 --- a/.github/workflows/run_all_tests.yml +++ b/.github/workflows/run_all_tests.yml @@ -23,7 +23,7 @@ jobs: - name: build run: | cp profile_template.cmake profile.cmake - ./build_.sh + ./build.sh working-directory: build - name: build_integration_tests run: | From 86d26f36b29adbdfe56d688f458cc07950645766 Mon Sep 17 00:00:00 2001 From: Morcules Date: Thu, 18 Jun 2026 10:55:05 +0200 Subject: [PATCH 6/6] Fixed cleanup bug --- build/profile_template.cmake | 3 +++ src/CMakeLists.txt | 11 ++++++----- src/cleanup_swiftnet.c | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/build/profile_template.cmake b/build/profile_template.cmake index 67378c8..eb4513a 100644 --- a/build/profile_template.cmake +++ b/build/profile_template.cmake @@ -1,7 +1,10 @@ +set(CMAKE_BUILD_TYPE Debug) + add_compile_definitions( # SWIFT_NET_DISABLE_REQUESTS # Compile source without request features (make_request, make_response) SWIFT_NET_MEMORY_USAGE=5 # Multiplier of memory preallocated ) +set(SWIFT_NET_INTERNAL_TESTING ON) # Only used when debugging the library itself set(SANITIZER "none") # (thread, address, undefined, none (no sanitizer)) set(BACKEND "pcap") # (pcap, dpdk) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6ab67df..8bb81f4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,7 +5,6 @@ include(GNUInstallDirs) include(../build/profile.cmake) set(CMAKE_C_STANDARD 99) -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) set(SOURCE_FILES initialize_swiftnet.c @@ -67,14 +66,16 @@ if (SWIFT_NET_INTERNAL_TESTING) add_compile_definitions(SWIFT_NET_INTERNAL_TESTING) - target_compile_options(swiftnet PRIVATE -O0) - target_link_options(swiftnet PRIVATE -O0) + target_compile_options(swiftnet PRIVATE -O0 -g3) + target_link_options(swiftnet PRIVATE -O0 -g3) - target_compile_options(swiftnet_shared PRIVATE -O0) - target_link_options(swiftnet_shared PRIVATE -O0) + target_compile_options(swiftnet_shared PRIVATE -O0 -g3) + target_link_options(swiftnet_shared PRIVATE -O0 -g3) else() message("Internal Testing Disabled") + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) + target_compile_options(swiftnet PRIVATE -O3 -march=native diff --git a/src/cleanup_swiftnet.c b/src/cleanup_swiftnet.c index ecc6ba0..5f4e223 100644 --- a/src/cleanup_swiftnet.c +++ b/src/cleanup_swiftnet.c @@ -36,7 +36,6 @@ void swiftnet_cleanup() { allocator_destroy(&server_packet_data_memory_allocator ENABLE_INTERNAL_CHECK); allocator_destroy(&client_packet_data_memory_allocator ENABLE_INTERNAL_CHECK); allocator_destroy(&packet_buffer_memory_allocator ENABLE_INTERNAL_CHECK); - allocator_destroy(&hashmap_item_memory_allocator ENABLE_INTERNAL_CHECK); #ifdef SWIFT_NET_REQUESTS allocator_destroy(&requests_sent_memory_allocator ENABLE_INTERNAL_CHECK); @@ -46,6 +45,7 @@ void swiftnet_cleanup() { close_listeners(); + allocator_destroy(&hashmap_item_memory_allocator ENABLE_INTERNAL_CHECK); allocator_destroy(&server_memory_allocator ENABLE_INTERNAL_CHECK); allocator_destroy(&client_connection_memory_allocator ENABLE_INTERNAL_CHECK);