From 18f884b757710b87c87ac13a20857a26d6732543 Mon Sep 17 00:00:00 2001 From: Vladimir Stoilov Date: Fri, 18 Aug 2023 09:51:12 +0300 Subject: [PATCH] Fix ebpf tcp ipv6 --- .../interception/ebpf/bandwidth/bpf_bpfeb.o | Bin 35544 -> 43560 bytes .../interception/ebpf/bandwidth/bpf_bpfel.o | Bin 35544 -> 43560 bytes .../interception/ebpf/programs/bandwidth.c | 27 +++++++++--------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/firewall/interception/ebpf/bandwidth/bpf_bpfeb.o b/firewall/interception/ebpf/bandwidth/bpf_bpfeb.o index 4ceee0d952171086916737035c977f85427fa7af..819b1ec823c3513a5e0d9b3c150dbcfde836470c 100644 GIT binary patch literal 43560 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 literal 35544 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 diff --git a/firewall/interception/ebpf/bandwidth/bpf_bpfel.o b/firewall/interception/ebpf/bandwidth/bpf_bpfel.o index e52039fc80359be3c6a6da1d13094debbe788375..0dc0faa8de69e96393e2d694df31c8b6cccea324 100644 GIT binary patch literal 43560 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 literal 35544 zcmeI5d7PY8neX4OB+!X0VPD*eMGP^75JHTgSb+o*3`q(;aXr z6%|KRbX*W|YlTg zeDc=$KF|A{+4IR>q~y0^rWawl51bq`Nyu zGI{udkZ$S3Wqv=TQ#yW$$#)TWJ~X`W-!0q~XYMtB_n|k~{VNuBf_%uHARl|H$)A0v ziOK$izvH2Y9{TLNT;{nu$VX=iU-_3)`6<71lK)}xs9fcCAEjL2A7Wl|vmO>#-r?o9 z!^>}nm){OAza3tFJG}gMc=_${^4sC%N4^ww)9d5l<1BjWJ!GuB(96x+L3v?_uX^Y~ zW;nbsq+dPc0F&?H`K;WI4ds?CkL>g7xm6@bSZhj>JL~-x&z)Q6CqIPdSgT8tD=rV^ zd&Q1W4_E96<)4lJzgphe_WJ*Bxm&R(4=?vn&b@N~?`h|cSnfw=+Pm5(4J3{iv3;tZ z){y1T9v1R_@Cm^$9V#vM-F6%0&~8ghW4jLRzbA+OQd%0?UwL8ZCp|gztJ2cY&dUo! zf9lDh|NZy(i;&+tw}yP(tj>bFbAId}AwO5_2=x;0UvaGWlVktN{pA1Gm(@pa9ELk|3!|N;5OT6E!ufIbN%LJX z4B(o!q@T+*hYJ_&g2XiEQ(?0<71Oy(yw*RC4sYfwfyN>ls{dSVArqNuj+g-el2jH zo?q#{Fv$IyTVL#~DfH!mZABJ(v?+3j^R( zbS}VK;fv63g~#9v;5IDxTCNU!1^OW=$n2|NJ#PWN4n9eGCY<-e7C)@Lm!c@ZUxUd? zvK9VU`1Nobz7O67ci`W;y&9YbSB1^P{qO~F0Y1vP4KIZMR$<|#@Ec{r z9k>EpnbRqE!dB++i{UpZEF8xLwo}P#(c>lU`AOe(&M$`F=ll}*6V5M%zuo`Qepya(Qoy3{jv;KN~^4QQizB3uIt@ENf3--e&+JO!_TRkj`Y zSveX-vhrDZo?meUk`WS&%kekHOYMmR@egk zO<4Ka3jY9B{B8JWu<|nn{{~ju>%f0>n`wA|3}k=rVM*WPoqq~H+4*OOCHt*`{|=jk z$$k@j99V#h&TV)Y)_mWAC*gO>{s`(6ewXaw*EzT0w>x*>4?1h`{|x*d*~7QN?}OX$ z-O(QY1+4iqVKDhK{A{=YA4o%erR?FuVb)<+UWF{TD0ud{gwKM@OYygI<*}z}CT*@K z!OQWl;W`7R=#y(12A=NB8mI3NxQfJDjuL`R!rnuyu%+=w#9KG67fxNyHek$CC zUj;uM?!ebN7l`0Sc$M^u47XMvjE5gXe<4_a<<@hFzl2`-@4$CC?{%9^=%?Xdp}z=D z7(f5$@#JB-XK_U)Nt@>mq+_09cf-eG=VR4jef=iDel|@ic>?-VrNEu)oQI$0_9SUe z@hjO?=)*0Z2{_H~yJxv)NKtl`hPfE_IoO}>I(f^SheCw5PL@h}Q}`zOGu-9{u;Nv_ zf0^4$b~jh`EvK|(b2TQe>342`s z)6BDZ(8}{0=+AbYd%4$Pe>-|SOZNwGA!S3MS)PB4ex>XG4L-;D_wczXd(g_6Vam!` z&*IMXDl?Uz>erp=RnOAv>SNBp^{+Osm;VFMpXa*6-R6Acqn+2lj|&{v{5+Or$lBim z?p+`SPRAF|2$(z_Ugx|P#>MciO>zq(QN~wVtfsKMQ)ia%Xo75I_AKIx^`!Z6gB#Rf zY`XQl(eNYq9K^1T$~(rdTQS|+(Z{r=Q~awG+hjtz&-OS8J39{_#3aL7%-rFy;?Hv(3zzW= zT#tou{m{DzsSdPQ#Mj=)rY(IjN7q^ z<)d4rXn?;h#pHjso?#gK*w!1)v5m_{Wqvt&{+WBFv%{gB_3y|}>j9a!UOn=7U}1-r{>FDMt| zxfAj#IL=LY?Rg# zw=clUowvf;3tg@_@t=zR3dIAjhF>K89OhcMEoNP~5q`0_pLF1tzy%Vy6n?4n)X%N> zs@tpJDthrXaNYS@c$f1OtUVi#ne2gIi2h}82Yv;76`as7uYqkWqG7!YekJNQ{5}}h zUpKEe)~fI9blo1eX&`?FrtWM$(e0+&d=b6+THa;VFKs2+i$1m!-D>%Ld5T9iw_~Gc zl>0tBj!*GKM`?!pvXyWTHt_5P@ULKdF8KGb#`iYYL+}KChfC$AdQ2!McezOiFFKQU z$Gc=r?V9K!{<9M zfmNSm+1l(T^qNaIqI;gR)~Y+4x59Opvb1(R3BM4YLjM97*Z%_Z!uYLnz8d|hu6r$f zuJh|*tsUjw1mo;X@O?1#F}r}`lkkzcgZr{`0sgLY8@|uE1OF-7lOG+CD{KKi)wvC? zaqhq+SaqAnuIYL(+3j3_*{fMRZTN4TJMiDaYEv}puv749&MLbV&eQPIVLhkHBHb>} zM}Ml);)-o(3U;UNWoNV0L9!p$Gq6{gDu0?g{sv#}+2~(|Uyu-7PGgF@+|>?bMMIOh z7#6|O83mLM@kf_?J^|#=+5GT4(isY>WEj52S?_@{wQ=ah@atUfUQXw#uSAcFYq`GH zAgfIDEZ4$su-oi`VfF0-*Snp!!tQc!A+8(IQaM!y&JvVT7xN0YZV@{9#Ccmn(Zw_5=JJ>2G63V#s4 z!*wQn0lo_L9OnYO&bbZiEK)Wd{EN}sm_p`@&TY6F^<=gc_3(?Lo(A#CsE4nGKcsZ$ zgt_ zopq+R|6zWv1|Q|zfuG>4MsS960X{d{!1~5xm{G0Keb44c`oJ!K4G<>O2kK34cssX{`SSe*!GP55hOY zZFv8~naAJ`d?@@WSd;8y;C}=Q@B;X=a2q}y{v6za&xZ9Z`dH(v{;|nf{o_(+wa4ed z|BQJa9&&x2yzF*f0Kdd}3H%!874UU1k7Q?ZH#%=bzsFhS{YmFKtg|xh7uxXGVU_I^ z{4MzNa0mX5v(DJQ>#Vc1AHiS1Mic8VVby5?e$aU(Kw#t}noP$?|j5os*LO17Nj*ThSj0{~Nsbq-6d{uAfG~0{#Vhy@*)@ z-wzhx4e(RpHheLxa_+#-gMS6 zt`DCjUdcQTp9{C)kHFS8;LpOEn5N;c!mF{-Vb*uxAA$w=`|uj{8{wb8YsITL^M)1A zG_1CJfx@n4euSR^7vO_oy_apnN5L1u9r$Et9blaWs|*Y9d9dPKb6(Q7$$2gO9JqqM zjm;>$UTK}rSvdSmr3GINU!=6)x5Cd-TJU>dTwJFrq}(ih+{87Ti=i*N+}}nEs=Dr+ z!z_=*`-w~WklW+jHpxD6AMWwI*Aw;=*icNfZ$bYhSp7}zo6ZIJ`_66n9_J4H%VdY zW6FMeiocD;q7b(KcDLsCf!}ey1OIHl|3BbOFy*nI%48tulSzC<`6_&s!}a)9crY$E z6nx{?rqX^xinZr+mm5v-K#D(@;%SUOKsw~Z>LZ@_D2`8}*Lc(Bieugsthw(e^0~eY z7U9eV2PNJ)H+C4Y?np7w5TRJ__)C=i->u=HRHmkFck( z*SePs{~G?I-D19mXDJ=@e};9IRe-fV`V(Foz7>BC`VKq~{r?q~-c(uz_#pTx z*mvN=;WOccb={-kr@;mI1o-K&*7T>s1=+)Az$;}>oj)CZsp3B>>D%ah9DIrM@$h!% z6X2HfiSP^I1GFb6y!PaO!k5#zt>qI|n|TPo!}W6PzksjK^D0=r^7J}b3z|098{iy% zhwCk{#+T{7r0*u@AHx6Od^fz;`A6_ioqr4~8C>qq!Pn=!n|hr4V~YPKT4Vo8Sb4y+ zvz|Y|7xipKxd(f4ZZZ{izaG!q-Q(Pj6z_u7&S~Pa^NNhM|3^JOowKX13tau^=V7}Q zJ^)sEwz-akQCr^h4rU8Fxkcy|=L+~Nx0il(D(r@+CxT1i1Mu5iC77@_#*M*pFT&?m z@)~@#(Rbq0MU#)>FQd-Y7d{IgBqQ9vz&;oBeaHDYqWCea_H{gbzw-(3ADvHx=d!nv z%@g3qIG+SBc77tf%$Y4h-_xB>hBv_KD+R9jZfh$X+h7~M44e7NC)alPFfk7`=J6DA zN#EtpeBZF|CC=x-uZQ(q=fZ#IybAsxd^qv6iRaTW-7slWh+lypgT4cQ9WJBq%wdlR zA18apu)AT^TL=Dy^ECYLu+n1Gp4FcZJZt}??^x&A@IvP~@R`p0!52F34_^waJoye* z-wxN$g(sZn!ENV9!Pht+0Kd!mK={MXd1jG+gpVix1^5f_3Gi0<+b~67@4xPLo$0anFsgcraCcr%RaKNz_L<5@o#ft3e2 z)irE=tAXCi6a56N-&hpj=LdURKdH@Vevo@LdiApc*PCHn|8vc=kK9ezy%#-MoLxZm zLHG!Cavz1?CP3EvsiW`jIb2R*OY~r5m&+zNe6}a|4K5!d$mpj_y!aML7=VS2?#+Ec~EO8UdessA&>GxIF4tr4;Iktox)?W?ZBHty#0?$#q)S)yzUw*pSrI; znYt*+;IG3g1le3sU^@6gN`5xX1G@?{QB3%3bcX zo_=1n$GPzokH8Oxyr~$X%T1(g)HeH1uv`5r;Dekswz|s=r|i#4@l$&|uhQe(+0J+m zD=*^Ay)0$B6Migdl0mDV#UcIVLVTGG;#2NP6MvRx2+vS?(SxNPF1M-|_q?ed=g#Z# zyc&FEh}Xsu?Pp^~_1;LVKI+cWI-f8~C##p7(dXXWODlJMirVQih;r@+u3~n88*(2P){)yrK^Zb6y!cBnkqieweK4_j>v60zQ zWPBZ^>j>Fgp3fC2eaYifc%41stc=b}@x>_~O7YGVzc9tGPO;YFG0r!o^w*{MT`9gH z#W$z;pHqBWiociQdsFUy$O9QvBQ$>m5sc#*vg>?@yxs z@|6D7DSmT`-;rYNPh!|lru3gr@wZZZcZz?JV(lwpJbM2V`GJ(p{tJ8hL(`nH*LNsm z*vF=97Nz)UDZU`Zm!^1oikm6cd+8YeOH=ySrg$pFH>LPPDb~CF7>~}vBkO!R@@G=^ z`W-^le=()MJ;isWSntQ8z0RZ~>%CCqds6nlO!1#mJnu<8`@>RvQi}CnF27uC>N{sWT4rSC#ha*v`jXrH)^d~xi*qi z>${dGP|asoe&!xSY&wPE=dvq5J}i=9IH* z^^@~gBrhP;>1PmdZnM=GFSqismE;#Thx1R%yK!^)tYmI=P=WJLds=?|mUZhCItB{8 zCQsud$Q4UofHAx{_7apEH*MIw;oJ@Dikr{fcviPnB-?7^w3va)u3~kNcH9_F>Wylx zQEkO8xXioaa_@`F+^0287I%(U#w%*u^(uX#SZvY*mz;T;a!N)|IXkp)Wq9Rz#kK2K zZ&sd{oVh%iYuO8({5eaWYtMPg*+E`*7A7lFCTip<3yCs0jWV-n!XVL$Cdd}eQ&J`# zO|iIbygJgVjup2xCrb6xmRn90Mg}KSa;ZYqc#t2fOstjfB};vsj*)8@HzqA_)c+}G z&uo9n(m+b-L|T4SQr7$}xTNI{Ab4G0y(u~NNS ztg1UHwQb{r7Jxdb*ce=|ja17tKTD8$5vh8*>DERoqrHe3@jQwN>8(jx+$MI@Z#8$u zu}{Or%qN+k!B=|EQLj`Oqz5fu;Z~heRTKBDxJWsU4OSbYQZv+HP}IQ6z=wi-wW_0) znphB?t=qYVscw2(FQf)fiJDA2vZxwtlq~5617C%5&>%$Vm^8+ek(Md=GUH-YZg19# zHb)Uatk|2?%Pl1<8ymtxHU{D&4p$muHd9GIRx2{-Gi%Yn(jv1YB6ZqO8?qe5G8n23 zTCK%|<1nNE-Apj(OCF)rDh(BoBv}^AjY_Fiv+`m(98s(4wo{s&M3^ddpRqj}*NsBTick1m*ECj?>?_H|pIR^pdhQCtCzixg}~q!EL6c><281q2V{F zQ@a_)f{+^-dx@(DOJu^Y+Q>CIT5YLwS%j4^r->UCa;FiNMTmvhVu)HUg|r*xahq6s zLsPlv>!apy*}9doQ4aC+NHLnEbzp6bd0a+g%+FMInKhuq8Izn8YG%>U{9Vg=`hfwp zt#T1Ti=bv#QLfd7t0DP;+E}YxtM4vut8CZG33CRMne(8O51SlK*~?Nlp0KVc7nNAO zRBbSec2Qw^+3MwqDXhXwtJ}8h5wOY?vjUZ*V)59zXt8z6YixX!q_$O99P5TP-LcU0 zLU84R&QD_;8mTh;8je+18P@4YyOMgX*{p6GsaRpR5{jHP{c_8^!8i+NlUQa4&^kO2 znWu-3R?Ewm6cLu~n*$Boie%ZD_Zq&E0frLxxONoYfs_87f9j*X_+#j?b* zK#QnM62RIS8=>)}G2!)KMckEk1`4HQRlrcwOw5>~E*3|^2Fsox#AeH}q%v8rvdc;a z$HzjxECaR@*p-ZivT4T0^R92h(13MZ`(zH+4kh$teFlYQx9TJ%UZk$O%pOcTWlAoT zpr(kBjH0cur=y6LC8g!+vt(RTe}$!5b>Q@++_LPAR0k_IN0kSeH<)#cTIcdu4D|^c z=Yh0r_n9=bMM_!B(3lPB7ri(%SJlP_njx}%-LMekecvJWbt9AW@dj1Q<}hwa6Q!bu zN)*_@LWG7{RCBT|{qBSnNTSI(-Ee)WI8+-MNTXG^HCydax79eFD4wHFi@G&h=eS}Z zsf@8Wi<4WUvJ+L9^C`*-=K^Z4bX(Fbjj%>4@kwW>1dj!gB#Th%hk7;Xu92(@s%5FS zX&(?erFOfGI7uaqZ7dv_{qSv|v>k7qS-5DcOi{wpx2dI&)`|2_?G6W7l8w_|XcOB9 z>wFH=MDW7rur&`tXgFiBQ5*N=21gUNjb;()9oyF}b;@50YV9`F?HMGQP6m{mcB54m z9b+YGM;{@h)j^gRrDmehMU$p{dKq1OTZt+pz6SNQEA%$oVrZmderQy-2PKOx3{6|t z(o}nhBv7+nDbq#DG>aW>(Wvs&c39#?pbgUYps_};;%2?2F>bUqPR=U>EWD+qfJdXO z@zvy5g2~WCw=@|*nE3{J@~)8*XDeRTvZS%}WEv1hJ@Kwq(siD{%27&J$$VB+ZnO$E zA32p#D^8X4_OY-nu)4D2AkIN1Z5vo;1f#iVM<_%)R%4AgFv7@DE;TsiYOqaZp~jTh zRcNW}stHE85sfS!h;cD$tSwYpLoGUmoq~;=KB_uX(Xzp6mW|Z7qqa5DjOdRcTb;dx z5tb!0TPCeim>a?vIa*?_V~(*Fp^swvflZ-08|Ud%d%G%{A}6{$R;g|uVueWc%S@@$ zF6CMDYPgh2h(_xo8~&?}oymAP87-TkZZ;E}Pn*SIbtMMjQ66tx=PIn>4s07es{fy`}BXdrZh@#c^Xk{Z{nZw=U1%K8D%Zfz&F5gLqR z==(Iu>Q1KC?V4_wX3Y0tbBu)pi)$VKh1=U2wbDSjM8_o>)@8+pPEKv^D%v_U(LPjp zjU!qr`#sf8H72#smpVowlOG}clrY`CXkDYRkoI?6aOq6676vZp2; z?r2P*$2Tgr%BBW2UhZOm49icJKx3>AIkMKOl4dqKVhuO?-o;C7{;cheMo>)6-Oa&f z(fU7o1`{aqP+nnF=;g+SzVzwAj9vUdc^lcbKCF77+*#^!>@d00hIce7--Jap+gyr$ zlK!M|U&{K>Zp#dF3S03clsZ+VeYw?B&@{%!#%Ln;YQPpWR^Z75!$@VU#4dy(i{ons zPd)mjYa>eHG7MoVQ@7?wkwhqZ`|HO^R7TL21grY=#-2*q!21#FxMBSdO;G7D?= zVP(T=)sAg++^wb?78`mHTXmqZ4YZj#*&tv|o%a~z(~gocq_J-2je%RCsByZU63e^{ z>D^@3W`<13)xlayWOU(}AS%dDX&WoX8JakzdmPvdrs6cuun7#K9!WKrYi#6FD6gE_JdAO;!*21ZLZ1jx57RJk_9Yb*BkT@86LA#7Zv z=9LvoV~tdj$o?p~6|sV8CS`~xDka(;+Tx}*7*?x;6XCpM919~#fh<&ZX$@`pa<&Fx zt6xpE<4i+ZJ+Y!q7$8T-!vGzaJEOH-8tt?~r!W{!tIaU_xq=&(TsS6Uf1vk##pdoY z&V*U3u{P9PW_7_9Iq<5NF%H&|Hc7Yvy|*~d+KJL*r@_kK z60!_dX55HI45K#xYa3uIN1b*wl3H`8@1j*j+WatLwHTRogyD+>O3Efhtr8fnn?yCj z*iP~D@@<@xb*jXcBYIBDiJH`iz16aOC9BpISFKjtEv}*s)8}2mOR;m*;9U$ii|1_E zvVK+6ZCQ`SDj6vov^vX!wZS+`P^=TB;mUYDDJciV<~Z94b|^f+00C?YVk5-!tNEjE zMw1|n)mTE!RM8Qrwh#|SY@h0*Yylf1yGfs2_W&zu&M7p^j#PMW;C&_RPF$;F56@Td zXuho>P4(p(8%>Lo_XOd9oene3VpgLmyROmFZq9I7Z@TO`@dc1=bK_2&IhfZNz2hQF z(w4(bZ7O}2FjQry9N3#IwNocIRkjthSk2bu@G62G@i^<7?g5omEyWh|;%g$k=7=g* z2ett%jq9Xi`xuYMu{KH4yY-yChqQt&4TfF6%wt`JXG&>oqZtNq>ZcaQ9)ASSViMC; zBcsVh(I&+t6&KGsQrexc#pURPg^e9b?eb%XZY_sXh*H^#NsArjiKz9OVSF3a7KTE$ z6Gb(TvGQ(KS!~Kmbnav)hXS-U0$8y##CCGMVA z)FFE@!zxo7EPLS+53sc7Rzqg6vi7WZF^Jj_gmb&FkPHEf95#fJp8_0V)v7}Xc3E}` zF;XF@C!`9sE&ZBJo7Y~*yuE(Irqvg1Ub$&=5;aj)v!es*mAQRIz}g|-g9z&bo<3I6 zri~XCH?4kVn7E>_mQ_I#g^RXav~e{(KFTY%Y~GO7ku2+nq(Q`9+p=c0z;NOLG0-p} zy@zHJPD#3{7vvg8y7PqueG$gb-Gay`GbT?EhkFLEwdbzpF)rM2@yc`7t>$4ilgP%6 z8#Zkwk%!&hvi=$CH#}>7ym8*zOZH(Er+KZ`S*q&|w3fb%=Gvv&=1&tY!&uASGc#D8 zzaaHKc~L$Te_p3P`nEz>!TaZ-fku8IJ~}3mVk^%|$iA@fNMB3XvWl-I@CAx9Pt*4Y zWHs~K0cE}(;79cKVkR2%B>)-g1#z_=zXRaLc7Q6wr88sIX2@RJyB*ufXqAf2t@ibO zff&C`^o@a75aA0%`GuMzNFct{A7P8ji3#)iBfivEEc$wfg*-0x1&_JBu-Bx*5iE!N z9K&egyx=6+opN?-a*-A6S@}~>&2QeYYQvfNEzL?kEV=V6gIX*%7xVRkhetBjjU>F& zs|+m4FFE-yMijsGU|(gRPS3L46O+-d%$E+L>S3+NZ*&{Wf4223;(1zmo8ba33_A#K zSNnLxUO6@Xv*i>Y&%V?VACLEe5C2w0N|}Ac-mU-gLx%6ioVJX9u#{>`b%Sd7l8m>! z^ef86dhIs8xch4DIo0Rt8zre;@m~x}A6NVjtJ9QnACLUksaIa5Fck7CCs}OUuP8m! z4tTT+t8UYmBEpGpy;8H`p*5^WL8dOqnMI@w$QaJFG5 zAv)mD_#6+SjkQJ(D??U$wltKQS;99bE@^rOHLCkQf?YfBJbT)(19F?VW01X0eDu{2 zzh(JU927^`&gj69amc=x#o*o8Z9Ae$V=(3+>_vPJ-JNRfD+s*C*F4TbHEhz@Q?z&$ z&Zb*rD-c^O@B)M*iAHTA(F)3+tvb=&m$OJq5bNXHsGzV;(Tv6clRb*|exZc5_0bzq zj)!TWc8DL|7ue}rF;uIP_Q$nTrSJ-(_bR~mr?$k1vlvGLU0Gl52$g}QPMT~3=Vy(Y z;Ov{4wnz2dt8sHehiIDKSxXJ=j%A{6f@s=Luff7g&+xvZ`^^Ru_1;7;Tw8kUsdaZz zi(y}YH*4c8TT|!Z6!b)${ewzelP|uVO8T?dYaSh4>Dyh2{x6HXeTA0aN8#)Gc|YHC zpUdyi_`w92+=lO8f!Ci4NlN^1Cd&GX^moGd_Ms$s4mWNN-_tkwxybJi-^(|-h^*ff zC{BJZVeY%|Z@3Pb3h6~Thn&Yka&${vp39F5`mX6q3N9at{P-X9w=!H_hP>as;cvJr z{Q1c9AKC{!#sX_WNYTC;1TMy?+0AejIQl zKZv{|CC^8mcKJN+AH|Od$&x*fV60LD1HE^-(^MlAY@ETzEAfT^x1FWbYJp8$oj30LTl$i#Qu2J{Yg~SY z?ti*3xi%%wN1k%I#r-2YecgJLd@%AJzkeO_g3tHrQSu?koz(qA?kSUug_XTSYcxyJiz(&hZyzGTSd zSf1)r>2m)mvi|dnSniVNAm>plUMu$#b2H0*K`v?geJl4xxtZmTJfqx~-GmL_jS2$f7r;FGHW9bnlAUvxo-P^ zBliy)$aUMlmHTD6Zn?+%Gs=A^*Dd#0o*KK3C(m*!*RLWcSM|zW@*L#6-?wtVHrE|@ zPGqb*?A^I!qu-Z&2=XN^Z`J)9a>>?|d zQ}zl!m68?yhLpY1-;z~MX_v^|M4Fe#&OQt$sN6RVEvQ( zZI92!!D-6Nen%PbsGizo$LB7Q8t(^0-X0{XL zA-`|+jQxyuf;^cC-%iPg5dNx6_!;el@Ykm755s;cB`f?5nea2(3E^)^*(-b}B`f@` zE?YZUFsnNrSUW+!!|z)=Su|^AJ3+oTb^l=G2VBMr&g;qA$x~-_#{+981?t1^+jz2S zR(E``cCuzxx1HE{v6=dDdut~fDSwya{Tc1#63WZ($NHa7uC&%+Ic4tAeBO>MSKyNT zs9AjARF(|u$@g6Dxcs2YdtH9qYydaSCHs{w-|uq8<@w}A@qfx?J-g(4T-MyqKXdxo zRm@i#)=#XCJdqFFHC&RJd(XSa;~zHtqxcLi>TgCor2EVA@H=K%Z1iyQ`13h7 zc1j;*t##6}+Id>e-nW1l#PID*_`h`juG2&Ov+gYvEM{F z@8uWeB^kMpkz;*E`>mP#^^Dxk$k$}#sf@fQBX=_L-i$n*k?+sQiO*v(zwBL%e!k#Xnzwi*i0A zFUiP-jJz=;Z_UW{jNH!1*JR|WjJzi!cQW$cj69u@@6X6_h?iQ=f3zAgPO`?Q1sQoo zMqZPVFUiP58F?}zUzL%s&B!-o#azS93o z7{g26nvv@nxt)=($;eX~c~3^}WaPaWc{(HCpOLMRlTX#J@;hIR9v9_&MqZMU3mJK1 zM&6o{>lwM7k*~?fQyFul`2;jOWkDOEPjHBX7*eBPm%^ z>+>`6)fxHvjQoL&{OOGR)r@>sM*ew5o;|PkeCqo8e+}jI{E|=1$jdVFs*HSDN>Q#10qjC@%} z9?8g$e(d8OpFi#~$zr~D*h&`jHJ8QbY(8&s6!eNmucpFFNq^y!`il^}FY5m32YdOX z7*apUk1tnes#7mmXWr<(f1atvKE9Y2ufJ`HqD3tgHCYDZ~zG{S!rKJEu&7$1J3m>dqNix#??0JlsAf4=Kwr{|2} zqy7cx_LcrEQsVwn`n$2&SNgYl`guiyQ~DYovgu!lZeQsy@k;qi>8~aHzS6&UAL(oA z%BKH@M@at$uc){m!pvL@ALVO+eWl;8g2CnOGd#cSV)$781L*ek{Fiux`b+6=CH%h9 zU$Bq#HPmF&|D>m%?F0R8m~F4#EC>}`9#6V#`1u}Q_tP$>A9c3_**JA?i5vdQwrCmr zY<|9hdSB1KW*^V5KWP=ykL9m2*;o31+!4}yzK_pA3iC>2`D#=9N`J`Hk4H^v|N7Hh x+4OHjH*4KPHM}-g*9~16(3e|XeKxOO=8kVUyEcN!T|q4PO@&LRuW?82e*;+$>B#^9 diff --git a/firewall/interception/ebpf/programs/bandwidth.c b/firewall/interception/ebpf/programs/bandwidth.c index 04222353..fa1b8690 100644 --- a/firewall/interception/ebpf/programs/bandwidth.c +++ b/firewall/interception/ebpf/programs/bandwidth.c @@ -76,24 +76,25 @@ int socket_operations(struct bpf_sock_ops *skops) { bpf_map_update_elem(&pm_bandwidth_map, &key, &newInfo, BPF_ANY); } else if(sk->family == AF_INET6){ // Generate key for IPv6 - for(int i = 0; i < 4; i++) { - key.src_ip[i] = sk->src_ip6[i]; - } + key.src_ip[0] = sk->src_ip6[0]; + key.src_ip[1] = sk->src_ip6[1]; + key.src_ip[2] = sk->src_ip6[2]; + key.src_ip[3] = sk->src_ip6[3]; key.src_port = sk->src_port; - for(int i = 0; i < 4; i++) { - key.dst_ip[i] = sk->dst_ip6[i]; - } + + key.dst_ip[0] = sk->dst_ip6[0]; + key.dst_ip[1] = sk->dst_ip6[1]; + key.dst_ip[2] = sk->dst_ip6[2]; + key.dst_ip[3] = sk->dst_ip6[3]; key.dst_port = __builtin_bswap16(sk->dst_port); + key.ipv6 = 1; - // FIXME: This should be added here too, but loading the ebpf module fails if we add it. - // This 100% the same thing as above. No clue, man. + struct sk_info newInfo = {0}; + newInfo.rx = skops->bytes_received; + newInfo.tx = skops->bytes_acked; - // struct sk_info newInfo = {0}; - // newInfo.rx = skops->bytes_received; - // newInfo.tx = skops->bytes_acked; - - // bpf_map_update_elem(&pm_bandwidth_map, &key, &newInfo, BPF_ANY); + bpf_map_update_elem(&pm_bandwidth_map, &key, &newInfo, BPF_ANY); } return 0;