From 36d8ef82ca98b7e2f0a04a4a0ee521798a957805 Mon Sep 17 00:00:00 2001 From: songnannan Date: Mon, 30 Dec 2019 11:49:27 +0800 Subject: [PATCH] init --- ipvsadm-1.29.tar.gz | Bin 0 -> 47622 bytes ...e-original-errno-from-netlink-answer.patch | 80 ++++++++++++++++++ ...GS-and-LDFLAGS-environment-variables.patch | 52 ++++++++++++ ipvsadm.service | 14 +++ ipvsadm.spec | 65 ++++++++++++++ ...s-discrepancy-with-libnl-genlmsg_put.patch | 40 +++++++++ 6 files changed, 251 insertions(+) create mode 100644 ipvsadm-1.29.tar.gz create mode 100644 ipvsadm-catch-the-original-errno-from-netlink-answer.patch create mode 100644 ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch create mode 100644 ipvsadm.service create mode 100644 ipvsadm.spec create mode 100644 libipvs-discrepancy-with-libnl-genlmsg_put.patch diff --git a/ipvsadm-1.29.tar.gz b/ipvsadm-1.29.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..303544e12621ff2e006610a775941bc95b85a686 GIT binary patch literal 47622 zcmV(#K;*w4iwFQX0bN)E1ME9%ciPC3`HFr;1v?Y)^7M0J$GIT{JKV7`3pjIUGr3$L zHK1c5Y1NW#;_LnGTh$LeFwSGnOwQS};Uq@tuCA_kRX=coYi`<$YO}WeqWFvWQG7w=H|`S=it87|9|x3 zWc9CJYCK@ppRE7={oTj(zqfO+yQ2Ty1~x(ChyMTa&oi4%9gjf};`c28)MFkR#xPzi z%y4-KmyzQ-(Gnsb&@vp);SmcVnlm_ay!aO0J7E-?E(}?C%|fGRF4!R`J2Kw0kUPG2 z2xMKxfVs@%*xfYF9E*AMc-lWRE(d3aFpr|(uwK8pxv2@n3a><4^TS!)I1T+cID}RZ zxQ=B;h?v)hOQdIE4E;E?SmSHZaDN)zm?6`~UVV0VEy=vEp(WI2pNu!LI7M*HNfbvisQZr%<0=i`h1 zXe=7;i?A@S7{NIndXnoJ;R34R6gCO&&1LuO?Rao;F)|icwi7}%0Er>(xv$^xiQ`qC z-HjKfhd}pr{QkMZBC8%+HM@?SM>YH2pou`u0_phU2MFQ3)qC3=9H$tGzNzD)e8}F- zC<;r}3TaOKDPyZ|!JyN6d)_ggS*R~(2K5yJw80p4B3Hj{87p+B9VlO)M+)4UUn#uR zs%hJaiwGse-Wn(yRh2*?Rp>n48sQ?Nb)~q+L{FpVrZ;1*KQp#qG>_r$u?O2bfB|<8 zh7r4F&~uo}nFlYqC!bzh{(@V6$ZGiT%BaGCQC^533@|oWq0iC6%m^0FY#zacp$$e* zLc5E(nI9iE5Ojb_e~fFY~f#{gAm5p^B6h}$4CcneTxhfnTU}5nxOBI3ZtARsZ5 z484vTfwg1ZP@B!?hhkOnh817Qn=h=HRg#@I&xjTbP6nY9gv2(*_92 z0@J!eX~5hJ0>@oS@yAROw=Ie5*V=x-ToetwoPZKLcCyJBv646oiO;BPe#u2J zJS)r~pNQz(v>8gqix(4|)1PAOW47r4uKy;aN{859^zFrVnZ}XY{?Lk z$FDeHE1tm%DUNr3xZv<|PG7H4B{Sx+sD}TuR(>(zm~}A+KxEFqc1l5hExXtY=~%@na!fp<_(UXkjEtC%{O9wl3TKDI&R< zI~Ia4jtMfEu14MwGBQjwbTmjmT;|*aLoP^n$LGkeK{svTaN~Q=BMppm5Qx-523_n4 za-%sifd6dYV@4AGT!8&QX!9AbmQ$j>Igs6>?zMcWsGJZdk{)-dH7Fu)^Pxps>S@KO zr@|aL+Q%{xPQXI4Ke9>{t~g;o$9KZseDT%TrTad&v9x$D^!J>2d9EYTIl2zneFBN* z@fFTs2}84CiWaPh!;18U@#M!Rzy1qlg`S)1=@9*y& z$n{_I;9z?P+namMgZ&@tzwhzccv`2zb7Jzjv0-e$P{v$x6-=B|m6)K+0+d-)RIa$e zkbmtv~jpw z9x}9IFt)eKf6#fam*U6G z+U+e60&Y%Ja*={H3}*@-aJ1Gtd_1DrJj_r4>^AVjNOv7?maulzZ)Jm)LK4iH`%vr* z1{VXs8o>0(#-|SQrA>@@Dk_v{1WjY=7z)pL)H*#bUT@y%ZG$3m+VionOKDOP$FeO9 z9n7{KsV*mO6BSs+QgCAfE5m9P`ew-40}xTOasn{W7SL{HEb^&nDq4rLL#?YLtcL`x z7U^kIHloOkf>kyO)X}~;Kkwq|8rS-*!KrMMLiq4&YtZZVPCsTmSXzD^Ex)uWN0vpN zXC_t28H1P=C8|W;5<1r?#FguyDfryK0o4kxpl-A4x))>pCm@cFjKWNjKJ0he-IH#6 zEbVzM550>~x83;&mx6_?ZCR@-XBMh3ua9RK!pT zdAKRRjX~#(1}ZA0Sv*CuU{m(wtRdZ|lbu>JD%VhuptU+}MEbsK$miqPCnu24w-LS= z1{&>~*4f!{QK6{|2~@R-&`xXd$k=GVYxPb$!xT*JQ}L<-&&K!6;M)iX8yg9&#Y9L- zcIcyUDnmvX;bIl8bEs;yysd7`varR^0;7W$Hx=DQ?HqbOS;vr<=%hfUNq(|yy;H5q zeRmW-x>lFbOj$N|{q>y9G0Nk=I|pR+4%Bx}F+;9m|m4je-VI^9vC5tU+ErAmtTo z-bo4G=gz<~;V(yo38+`;y^3BoOPGB=~}U?OhY3>#uoM-K4l3J9&o2#?`sl( zyqV9<<_c^cQ~?m_>BQNpo>H(VGn4q9EpyB0JeYrBQQ3x9P>C;2k)26MXJiC} z;50%X?H4w?_F+1{at+OzI8559H}>m|pP}*MaHn~=^8(byI&^NaxKvnLafDSDKP-IX zCcGG3#{}q1J)2EoeAa!_?Y|$6-x(X~LPMqr!Nd*~mIh8RCNeRcCxGYOUibX+d@O)< z&2`@TJFfG^r}+iQZtp80`>j#?orK&?NzZ~L{ zOMLnnA3l{Si+i>+H4LfCkvJ-ynz0*6Jj3_xai4GvN1fhiJnEizE-pv%j)Ch$kxSPE z!kM^RV0yUF!3uH42o;uyo;)ms$XU={P0R&O7`6Lw((Q?6AG2F&duzWzCyTyk^KuQ| zFw2a&I2>3-gli(&7*uCClVr2V##I;QJh8Qg@KNZCBZ71&A!69>sGTFMG@X#yHEQop zzr-spSH$sEMb;My6?F0@F%cf_BZ;(|BHEESO5Io?N(eA#rX%~sQ$-za30{#XTONR# zE}^1jA~{oyh?B=?f(8<`B!c5IUruDYH|COK`M_y6Q*{Y?gwgAH7UoiJQQAw-TsRhp z8pK&(J!8^Q%nkYys|nZ0S<-r`6iWN3v@*IvvSkqy_md7?@k$@AJ=;=rz5a*db)`5{QCsG1q=!0Di8dk1 z5IX0gRl`q$Bo zuwQ}k6AOK{t&YKuww3%T;@5aF{gPgJoG*1lj%hGF2fv@7A9Q)tkboPI4G~3k&vmdSjvS+quc8>v95Y zRg40D0M_^7#H&&uYzcAeNAae>DvG~HAhuJ?@>ErTA%7|E&q#@<_*Z5Syux%P>}TD? z3_~m|)VX4M;`h*B9?VZzvMLhqkBK0ON{Q04M0{Rx!uzsX%cf+dvMlrY?niW%p*9b1 zYi+ITdt6Tv-(y0u6CzhQ%IO9R@T`vrvE)+vTG<+_PEs0=e!LQql+$K;&z+-dGdzR-#)%jShe7$`%!6s4fW?(gs#A zrokjNFd1ty_$=3#>kM5?rASis2%uz?>c$AjBe3SU{8!N-3RxKXVTr5+p9og2tpF!V z7nC%`|BL+}>pSfKG#lHEo&5*ggL9ig)*svy5}5wT#t`H_Bf9^I0dE$X;@aypWE3mpuRxBHt3M&5 zTackMp{uNpSd-QL@Bub)y?99gv1hBFV_-B{aGgI-dzb2z&4qqEadDNde(mxAmx*){ z1fQor*f=5ThKf2k!DWGM%KIA3p_`U^z4idvwkAN$R-x5H$&84>P?g+e5VkCL-vwKw&U04ukuZ(%Y0i*KS!}w;X=APpKHS~>aC#jXfev7y5p@3U-G();rVtm z49q%>pyte8Ub5*}T(g6bW=WA~IouhAwYvj!!cxH6U zQ)UwxP0fYlE-OHVi{~N)ic0Ta>bcwRI>;Kby<6fHbj+v>n1V~Z`pTTrskVH0dJL_T zaktkQl?%Tcg*ysVrP84iz5gj zzSNxHs2~7VNa=T02?^Mkesc4n@v$s1e&zJ5nA;cU{nlvwwlf?hQ#@ql!!mdbdy5@|RjnudFDExyH6zKUF8}VD( zR|)4WkPM$*PIBjN-@ryU%iZ}Jg#HJKppKIgicOV7sztu-koFGskKb;t{`Pe4ot!% z08KVUr~(o#Mv&0QYCoVPN56yyX-8P^)O6f2!O-MV>Nvd|6oteH_uXqIMrI{X*A+BT zYS^P_vA!Pp;-+n8V?tgVxc0Hc}BMl8t(ah!`pi2xcI{?m~%y9)yl z%pe!-H)E8$vOauiUk*nX=M|+b(i26ZN7&NX$sFiT#+WWM&?ch7Pg;3gC^WhxwO>sQ zhEkI_-H|Mo;nic~AE@7WL`X(PDn^3h@GjlB?eGPYHn)_z5X5KbR;rj5J`15M}wnk~SP8R8QzHM5&bD z`w*S`yL#uN01tb`VGb4xLicv{75P4w30XWIiB`u8t|HYepJh8;h)+7yiykpq(j|H| zM7$(pGF|#j_E~|RJ4j~^(usr2yg_E#6nc_EPcqPx|84Kh8`?OM#^L=}^C>zcF_J9_ z1QjRa<6Ki~KL7H=JW&ZWVzojuTQur$+MeN|Ui zRo7varsp5>4`264k|=jRMpN%{2a_%V@2+|`crjkFNpX~m<^CpeRx+hI_DRYZC?!lH+PxZi7r{& zNplS;a_HRDWl_W&!iO`+^oXfg7C%;z{8*BuBS2gG+lErW5@B(9&f;7;gfK}?2@5mv zm3KbV9U`=89z;{l6secMHj9X=g!M7Buu?z=X^VPuu0Sm|Foj(VAnO7YYJKz?7A@Y+ z-r32^#LA(xRGqVAhU<0CLVMAXEy!6m^)xQI04JSO)l)uxmuq(*htSu4IM6q%=M>2y zizH@Ui8{oQiQY(qN{as^Qm|kFlm44%s;>a4@mvcW@$flZfR!uD^op1#t!z{=SOF!=Vz^T3lbW55Ty1_oqOohr2>KD z9@9+#|2L>5`?;JAjFhaGyA^1eOy4*?m6eRd_6eVVpU}K&PFwe+?B;n-gU{%`uJQVey^Ga<^o34`T zLfF*M5j4^SiY5!k!JWtw%N^nh*jo0yO%ZSRNKLDY(4GP0iOr89+^|FI`piU7e2S_q zo2OpIO)FJkNmQ_qpoAGtCLXx;J`*b7=>MHj;ZtKmXM6Yb^P$2#i=rJbz^BE#yNMrk`ByA^Xmi1M znj?7dts=<^__dUvfcHeUlt9LaR zIqYRlV&AH1t8?3p zG(=);9%ap9(z(hf;KgwoKheR96oW2I5;K_z!)$i~Kr>Vb;iHLW#=_3O#4E+^r>~oF z80sw^OXJ(>1G&IWs>pw|IIdpQvMMkz{+p=6)Ai8;2Q7L+TPHy$o4S*n@kzHsu2jPB zKbuH$zaxrv#DCz1K)LIa?})p4KYYY?P)&SB$?SeF{I{JBuLkSd_TTn82j)^T3CeDQ zyG#OjxfXcHB)mHfSb);-r_+H8{%Ilf)6+c-+y$aQOJk{ZyrDKF{Jz~vVG}Qo56_O) zxfP|%&~Pp>zXWRFYFyw!)+_7^-Gf^FDe6uE9#~z$UlHs6Tf^H`s-$*jm5tr<{Mu@1owk()v#!3rRxMs|xApS%H6B<1*i5>_q#Y%vY+QQA zj#3jgEUKt^rK{eG$en_Y2*25Hq_P2 z`|Q{gR#)M1dL=w|vL;;`$i2y|kvfF*LL}{wsVhbB6E^;NCzFzgsx&_oFlUO<`d)`` zYPNus@w#SCwmf`k@7R<%w-{U0zY*`>d)fmpudFhjXTX)*mbbT$=M+J09gM>2U|vaM z_x`3tX=x%}rl?eomnlm2?iuG-dSRM=-zHP7^`hmmy&#I#hCFD~O|ku6f&-if3O!(z zt3(D&y!>Q`55)vS48lPm<<^QV5b5O->pJ8146Xd0i3tbt%0uabixT$GL& zK+Q%thzyX%;i4{eEJP70ut>E8`qHSRngXBVL#Y{`iwV+8gHWNMi_(3g&X&8SI;bI2 zCGOr)C)u}*wxs_>N&HhA6X!Vtn2Os~4w%}ywM{llQ;5f|Pjj|$!fz#~L&~L!{%tCQ zKK_Nnp0{AclB}=2VeP2Cn0E!N2U%Fg?<@zd0@|n>QRkqmc@z3Jpb$bqCrfs59{B9; z<=_?Y2^^O089Vodj~;0hw3!H0BJ<+Gw@JW}Cg7J|VB}D0inc#;Tr?9=>T2SlsHPhL zc8l;sF;(!-rps0;3x>PLh)ikbQw&%UhsFwgEcJFX<%i3B*YEYmb^KasD#atu+)ZUp zqgJk0c~yqIDCE6wufGa-k+r7m&{@J8Si3tM?CqcLoNu4)AKlfzG$jPo#RD2?%FUG4 z1Add5`!aA00pw^tZGl!(O9U?dkENhbOVG=FD z=ylbQ@El~L??rmx@chvu?vFay(qxhm^=p`%;In z!pfQPILe(Yxuuw4a~H|ps~@b`@f@u69~1~x25RL1n=Ibfh5ZZp9jM^lA$)Fr*jyDS zX;LSGT)}ubaZCB$h=zz))DMZ)lcY>LvFpLIa2>y2s=Vgsxt97_SeN((ZtI!Gfpsip zI!_~};v*MTt^sgM+12A^ zrI&w@o(t!&q>{@_f65;ySItG>ZR6{?3a(y}daGBU+{(ueqh#V;lV6hL`%)#1H&?mx z?50(&tn$q&S9_=c8Y?kRmI(iwAz_|gq^26P_VJRFu3mXJ!aJ^>$PTfNFAQWM(t6PZX?$zZg`B*9T2q@xCJXely&Uaq?`^6}Tw&(r z&B{rcrFFEpC{j;L9Ov)Xf%Xb?pvs0-mb{ZHw3np{?R}Igw3kwa_R^}*J0udz$RK7k zpgmUuYO@}h>Q9F&%GP~)e?-=?WRwAilin;7D&FeZomtcT`{EqtH4!^uN}XiuEOS<< zGe|kg%Y+Rm8B|h?wpQ&;$=BW}^QO8wels>ohIysuL~Q5|gMX{(e%6ZB@t9)OMDpwb@NueJpPaz+nLX<%|KiTecqFc9&1kJ`?G{ zkUsOwz0%kHv2N;@Wp=Mu0U-V@r=PxwWb)s*Da3AH+ysl5x_vMS{N62cYa$wfOXG)ilOpQ~f%Mz){`Go=)=7u2G>7S4VE}J!f8p2c z%=Gfe&8kzAYJSob7jh|clA_NGM)P_li?kPAECTT!MN>?%?oWYKi%}5t1W2owGA|=# zuJtdFBSXqQj^a23v6SeEB=dEk{V^sT#(a(!e)la5nrL~FQ4$Zu3hquL1VV|rXlV{= zR{BEnBSY&r=}Svp!O1W>A8#O^;1j+ubENvOSRxGGVi={8+)+~DzG5laor3`}Q2pGr z{Hzj0UzM|-|%zEBCXE3{DF-!lZY5jn8hIY7QnP4@rpth0Q z7nqx`1>l_=Z@mO?2a$+p-76tq%&GJ{J7FaYDcJ)%vqZ@%D)_l6t|l9M#TlJ@xmDBx zZNtxSL`mQa7s-k^eTN3!T549+uzIHL^!(kiC96v5X6%@j_LOi$vMWEtWhZUII3Oe8!ug8-J z3J;yqherp8r+CQ^H4atJ33@ymBVP*>a1&0i;AFU7cWPSJ0rTp{=G8);f)gacBSHv1;6o&;G0Jg9 z|0gjfsa4BSPBMR*6X2y%p}ec;Ux>a(d+qas&dF(Kn`mv8x6GX?uA)mqE0E7g2Ka-Mqt2Gh z6fLvqzH>AK$xLXOy+JKl>AuTQEtNS7k`-bkRfWUPX7)cj5=mxZ&puAtqKO4r!Ca}CFxsB|scU#N5?*Bz*IwcmwpcJRyGK${LdO@>pPyDL&L6w6mo zVH5At1P3}y*H~Z6ZR4(0FeKvLhJCjRGWy}2Mt$cNek^FA0AWxk?%>Pr!Omemx|p{= zA$A|mWfV*WN_=?Q{_z|o)Q{<^bM2UaAM8-m)cxJOZJ2pKclU$T(f;PZS2uKb=#qU) zH;;DbTw~pN0_3IBCq9U>?*{KYCcN}ZS9+>2i8bE>!~s`8KvCdcqW({j|C?8zs*Pg# zf33CNO3MFhk5}&H|1a`cdgzIV%Fjpq6i%iye;`nqA58Qcyvvrs$Y+y)ZgElVi1NQb z2&axdz(Xp43WO1A5YCx!zx2N5I|1{+)0&6xN5K^R0G7g0^Xj?vJid*W@LnyLy3hT| z*k8gL?&Co?n!Q^>iUqj)9Ph1nqKP;^zX<;JH$jhqXo?vK#{-{jiE{KDPR{`9+a>w0 z+n#!f7Dx1_;B|L8;n(siUrh(khCKD*FyHP}mftP6mRFWry3B!mU6tDA8k`Kjcop?i zJbx})>oxH}EWg{?si$8)O}taD_@U=nC}6KYUgqqed`K(mb{K`Y9mR@w4oG~3GO2*T9m0z|`Kq}^nD^&5ykFSEBAj|f=T89UnqxRNcJF>+!su+!e#@I(Z5iwr} zhNH_o2qcWRxcXD79_uSa6o*Btu;vQYY%OQiTq&%%N;Ow9Ypyaj=2bmEd3nCm-rM^T zhF(bz22bLXm!j_v254MS*b4-OOhFpViUb22L@%6!9JoaU-mI%TG`hvlL=R*N&kta+ zc%FI8=H?CW=EgxUui`%NAf00yr|2FKFKJ?BNs?0)XXxz6#wx2STb|IkQo|xLBcidP zVJ`R|+dvz(PWLL6>iXIv*r02V*4Jv(!i5hrma%@ECWmGr2?J{Vir04IAjn!SuDN?~ z(t(Alx|JWbYT3ox+uNzKD>-E`jcls$YEI$p&R(kQT29%Wy|a^-snU;gO78*nNEKes zA0LYIsq#e>E7ic-Bf|Y?xq$;&?E2%U~={kAKdkn)kJnoRC zbFxm}Dxb7}>L}~zWSzX#{(I;6Fg^Ud)dmTxlB%AuYtSl59(jq4lU){t;ZnQA4o+EW zt5_9E?H27IU24Cm(iz)D8r>l+?!lLvOd9c`00-Ce+9OOVwTE6Lm(0}9I2X2}(I_B} zFqdf{RmBb~J=-ULWg`8Ah#>{J#;bEQDD2<##4wm%MZGu|2mtth_Spge{xJ(Ceh*Im zrGxfqZpFRBt@hr5z$q*8~`1(4wmT*Mx4!Q$U55~k>#fT8g;#jI7ZJ!Sko^e2aK8 z0Ps{#g6IxH%|yq*oZJTaeK_sxAMLdX*;;B(OoQQg083w|8SR=4nmeHfopa4yuP89E zEpPlu54h~XEwb8jO|v+j#64G~wVo*91ieqccJzDrI#qqUecD#tJQGaD16Cy$0|DfvPqgVqMDUcbZE(n8H}A$0ZB`! zfOc(V1~WTtt)EXT70YXuX9wg-a+$TEgkx<=h1IcOYaI&8&?E$Ibp^pmXI)0J5Rhyz z5ah=j^>tqm$+G$=8Fgv`?O!owx=tPOIvX9)@Lk#5LhF=2r;-JnqY={Jb#di^mymFk zFJg$fGrM}kG&M4LL$Zp>=>TOdwR{F5e1g?6e!n?O)Ij57Km~Y;av$yS`(>N6Z1${^ zdwH4&RirDq9Her$&Y*&CHq&T8JKox%mVGRZHkhRLnAwb}#Ul_H9!=G?SHVn`3B*Z5 zx6TVQu`p}^%kedN5$vwXxSMM6b)3tXSUV0=X~DHHm@&%=wn<%>jbZ)`m}K!mqWB=X zNfytZS!;KdomsPy1fA|B_RN3rw3pu?=1^oc47$+5$hxtJE`CK;xr$?;1&e|22x=K8 z8ePs~5p=3Z9{K7+F-JGeZ)d7wt&i);mCOdhnGiQ^AmOMR4Uw0(INjX(G8y8gRUaN* zMj7?j*D~9uY=)az?Q@>PqS`7M;$}wcy0+{*pj&q=>1=m4nIHwUP;-LbJbI)RbV?Z~ zivw+yoMNgp=QwnWM_O9Qf_{+!9s8UK`yvarQ~J(mR~PGRjf-%agMKjIzsZTO@Rn9R zD8ex+EOAOo4cW*<1r_pC3bBS~iOs zUr9s|$dUV#%h`~agD9MH~GjeSrdt} zw)ERd*T(Y76_Zqg7Y@1#M zaqv-M#AlEpJ~b2S944QD8NDMHnm`AO)5t>w9sQB7MHI=y!Z{}@6^l3X1r^o}eM(Ho z7Fi19m3s{NSHO@@E)*sDpbp@iz5vCS|K^EPF5yZO9-E^sBtD;sbN{Rixl`WC7eM9b zO9&SFuC=Cs8y}?NiVrv&7Eoy2K=FiAyU$?w9?KU-t4e=J!#Lc}x=B@nx}u zcD(*C!XABQ{oO|&9(a$Js!~LhD^5Vmj2&(Q;Qpc9#veVqciaMZS%<78C@C&vZw4)y z{PufA7l%7DQc?j+S_YlmM6X}Ilicn{%(}ewPffatv!@iCd<g=abjL) zTqG)H@&r1tyNw}?E`kAi@54~6CS}N&G;6^lv6RODCL^JuXWK{O$iE##eovgB+QBU+ zHMm_N19$s)9^8Mam!d3LIAJMdx6TyhJON1$?lO z@miTSEx&6eFpc>~&A&1~sZT4xDbXc;NOr3m4TpGhjFHa5iE!*@d?|dv4)gFbJkWcHtLE$QWSE3N9u? zb#&ch)ENS$!_ob>S?<&rOi?+2+|oD*Q(BH7xAY4KHV$C`EGV8Q$O)*f%Sis|0dO!b zW4P+jnsm3E;?X$2v=!+~cPvT9X2~8|Mvk%#sCBw^L?#MISma3&r`vL>T^3YJG>5v@ zx-{yBT}GA;z|Uzl>?9aVTH!Qjs$pA~xHsVBrVXz*s;Pl?hiD5A#WAWAtxPwXAti{V z`Gubx6dAV4O8vnszA}6P*02`z{9IR}2%zLKWm5t9MpWIBz-_i_w71)45330vySQ)? zV|2djV8F^_+VR=@oIQW7&0fh2vcPl3;Y^K%fok5J0Uc<;spQDiMHMaNQ|(#!S5(ys zqEN@`h)R~!Z7atLqc7;n@Lk;a;j~0mK-aoDMqMpjI+SeoN^395YDOKs=6F6OmmLmu znB6WsgEdjBBhRuk#)~-Y1!_9Y6lN~9m%S(&C8I`n?J zBBjo%6j-`sHHML$vKx|)3zf{&U`i?r^2M^eun&X<#H?Wr?Y)uF6b5pr&oNNRjI~g& z6sUbOgDs?LILhCQa0|}V^C`1odnUgTlFFxcxM)CSqAsvul<T?X3vg6j&^9`AD;?~r24VrSo*3@$hoAP4T z)bk9SG9uR0=NdX?#;vK(GkD4lUQ?fI_>>vLre16Sl^w>WUTg@Z`7S50Q5NUrMn0-$ z)+>}{fnJOOodQ-RC!~0-$V%d_33-!7-BkP>9xTcK8Kzl9A$02H?6c&kov=O`ljVl} zsb2G$>p>RKxP%lebnef*a%68}}G z#U_bBVu0suZDF9a%Wl`(B8>+AYP>?VN#oUQM5Mg&3KQ~lrw!8XaDbJ@rD*hzcDKB+ zKMMXKs>}6nsxR9=Au+4fG^j@aYdb;etasm3s?@Iqd{Y}xh$ZPfgmeyY|8q<03hVoU-_N& zTWAefRKFkcw|-djB$e4c*xEbW?l^M;jl71b7R}}o{9gua5^oq<c6Al_ zOFJFENyNsl5^VrvS5^Ps^Juy-r|e{inE9~z+K=9dhyMrPq6w_o!{#LT71*>1aAh<> zdX6_L^v``fy1ShJ@<$V|TAShM%fx?Me!SLtoQnU}TD?F2zr^QTDXxqs@b5dcRG-BY z&pVlc6gIit5NFenBD{gD2ABbiEJa_!>&QI}x0Z|;cK{S%Lr6UGeqz~cL;UcA6wH43 z!8;CMW5xkKJnrmu+9w@&xCdg$2p_&U+Vjqi_cp}UbUNNxTDrNpX;MqFA#MkD|K*bR z0SyESCWjNB!vyP%(x5jc9_bI9M!-5 z?Hn}$;pD>-{QI;XOuI{yZnL+9;#9Nu!NZ315o_u{O92%7?St*z<7WmU_79of7^k~W zsoooPTsitvgQrnf9CzB=`yKCF$sjBxI-n57Tf*+DUk|-Rzs(Dn-zc8S;@zvan(;tu z6$OkIVK&Mr)e8ou6!ePDxAf$~K$qmgq}AZNiu5UPBxQcu-7{l^OcoNfdLAz#-iYk**Y#ylBON ziZ^6>fXBM_2f(E~6emz}JLp1-*yyTw1^XXW-+#xBiSKXt=MNOrv4L#J#{MPRlXPK{>0%CwVXthoHJw`v+YJ&Qt zkaY(G;{-taeh;skjfHVz9Q6DV=8PUM;0{dpc&M(3IEwxes~d+1sgQyUt&;1>x7};k_${SagUiH|h)U?#CbbKuDq)%`UAm2DsulvEdjf4d6OIkNN@TWWrh%e-J&5c@N@RVzr8x0S}|uKboj>OP@k4ES-Y zCueLj!%1=#BlLavjnG@)m4?pScM-*?MOwc_9Lu7jL`qkrO9DDY2AzP;cWG+@a@^pb zz@I=jCG!x&x&YQIHVb4o*#5ME$;$z5FNTzpGE$#vJ)??eY4Pg#5Sq_{n|z?=PeO{b~vM%=pUt z+WQ(fKYxO}za+Fk*Ls6MW_gCA+#iH7AAYcp_kKE|I+{h@5Dl^XRD8EWk1ghGgJ?C? z4)R6Euia=Rmf)66d6&4y+|%|9PS43k(YD9ZKl*e?kDTKKsen1AZpB}s_-f{hzo0-0 z?C-Di)1i|Hiiv)_;eB0!1LL1pvxpCjN@b(c*DS;Ib{yek_5E;wq0?2^biq?6=Zz$b z_%`O>TCPYGP`i_&y#WvZH8I%C$Y8PA#4skF(ho0W!(I?dvFmXFPmpx*B6Mf>#k0IB z9%)Q1s7{CGLv)LKC{x^_@qUOSK9d*(^T_<%m<4T;Z;#=hmv8`aK#sqhaOf5h&4A0g z8R@A=$!}^gV)4e49d8ztQa#pd=<`1uZ;&;_-?SF!S9}%rr}XWcAK;%4cC~ocMH$1c z2eS6U2|r#)7FVc~D82)agC3XWx!Jl3x^E>mOP+4TY!@?hc$}klhY#4V$*l{8-`QYl zI0-b%52yMZt{aw5a(Tq$Y1?zmSqq?`PzK9KXZrwc>@=4r#7Q*7JhP)-G{L;^AP^&; zOQ~o9kXk~tnL)RS5tO(_Q79zOGt+%_UGYvh(zj^%LOxbS^(%v(0uv}t#WGD?7sGes z!a<{+V7H4J75ZB2_R%P-N6aP4+Y{+oN~ZXAe5Zw7kl|TmlT}fp#y1Ki{36ab>6OHq zg)M|fRd5GOy9_c}ATxuF1-*=oEqCcr;dP5OskF2CH^hRc;#Km&4t(|$nf32sjP71r zzIgsI^ZxWdc6 zC&2EZ`-X|m*M2$ihq|iyAp1eP?;x1&gaf>wP)XBA=DuM~+Q)Lz8Ffqa&2H}-`vo)g z@y1;>GO1o21=x?j;>rE}7{51xxCTFjzsAitd~P>+in<{=I#!7(fnhxE^X9ONYazfi z>GqXB8%U!`UxI`==!K-C(YC}7+%Tk^q5e)F`+-lHnJ_3cxyjxp)9_f}{^EC|3vnC< zeKSKFv~)A6`n;H3N>#oUR-e5EP=ohS%=z>}x^#l3ugM*SJS6E`*B{}*co9fP+FrB7 zI9Z$u8BSL!+hXJ+yHPw0P=QM4VSJ}KQ{GilV@8;3O`7qyD+f}}yE=VovZR{~I+>Op zCRT2AXsC_AN=Q?FVB|sYF%_?X87GGYY#f)1eo!3zPXLEw@?*?RA@=-9EcX3LbQ8b5 zZTvX-{{kC^UIo}2un~bl0Ip_wo3S(gG8=^cNVG>jQ1LjrPETbO*^3%%>2So7{%rJi z1X7{7Aic}Tu=(?8bncICX-rB;vw*M$!u=Q^yezm+CxPEHa#Vj34S^Nwg=IkTjRruQ zA*W&qmJx0e8fr{}Na04^pg{FK3WME;rDB=r+8@k_CtXJJM|OVD!SbLY)c)RtanKY; zhK!O8)fBbVBUHSW0EhP-H08MH101aBUbDm;@g-LeuhsBYjZjffmz=E<-Qf5+{Q+Kc z;&&Ap(7y(b6Zy;1=wnv?29P;WG5aGqaiuZHztBbiiq!jpqYjlA56bz7c<4H&T@2+e z#qCi7grD?lEz$KU(!l`Z=FG-G!GrEwq?5+?HZIk5kfJ7Wa9+MySP(iD@hI~}V}huN z8C0MjH;9p=Am};RIG;4j%p$1LqdDhwEWLV?15%d`@UOm`ECJ)hoH07y$4H}An&jtw zszLLz34-1TRb`F#w1$(5sXai}ov18mCE(B|rTa=?nP4*vd7{dk=`n0--cnE%MZR;r zwMIQQA(`L)^d{1mOSmMA9}-X*D&bEtNy=2-wUew0Gon-`H>53^+Y5O`3u|$SYA=jG z0fOT6oX%lP-URSwgK3$CAuSz+te6aa@=gsV6X?+pZ4xfYTjwg6l$jZrZnkKkdK%&# zj;h9W8WHkVa}qF7BXwRE^C-#H2n{Pz;vB(`L;%wnQ9=Tm+XOi1d zw?{6Oz1?laGvM;}NgOG)3evZX+(PBtJKcCOyA`i|ysdvAj{WIB6EoL` zAm)gSl15?+c)_>9B9(+O_ixl#oIc1`dS0}v`zh&!I%t;yzph)&R^c2xahtvK95}Vb z_c8taVHk~uaE@Fxd+2TiOWvHlEtEq0lK^P5v{T#^x6up*DQFt+>7{oxi$_aHEGVFn zL6a%)ygg|sh&&jPO8oKS;Ees208fr)7Xy%^q#Y(I^v5%mfa}5l!)iO&n-kd^m|TEP zShXpF5XqB1-BwgX5^7yo3`P~sIOHm?a^t3k!FH(t^dl$)K zs3v!x&5%C!+-Gq5juI_&(a|Z@s6V+(HF~F<*7#hdu1-9La}>y1>M=$zf~Ud>GL9Lq z@x?goxpU>@%y#>^6!vraK0Xh-!*TY@Suf|sv^#d&SU?W3d6kHTcX)J)DX))?54T{~ z>>j+RP`L%WB3~w*!)gUM0}IwG<*KN>RIV0W*IQKgtF+n&hn0ov1tEXt7Td=Bc?&Dc zt@WkW%F@c}LSD&ACEbEpfd6GdG~L>7|4rxXtW=+_uPrY>Ty0UV&()Ub`M0qXP>^E6 zVe;V0vhxh{{6c;8+Rk)}&nUI8^?Jp9jmdoN*Q@Sp&fjajUvuA6#$N07<65$Bl+n~G zv7Tx_S>j200Ldax-6Ccdb&2oX5>~2RXRel$#Z+=#r&MA}WjbA_NMc$sd#>|7F|U*< z*M6UvS4^~8si=}B_50cWkDcT5!yWYPmi5_ZTtTW~3`rkVps-nx`M&Ze4@Gy_L;Y0z z`i*#o9`p;qOg5z4yikYVsDpMMusYUxL^q!F4MP~x7X>DmBrC}$8m{~u2V9Zv%o^-p zEgwW<`?r+2_#K>S^aT~C3$9x|IvU7b@s7>M+*fCCGVgBbw=L%_dir;^PH79v0xM1d zmF!o&U31@JG_bS1&ar;~)OjyM1$7QiRe@HbcO14$yXCMFypFB{F?08&j(w(JQ+_@FFSv0Z&Afo z8vOt1K{c;uTb=XH!HeC4ju6Z5*3tzz@SJpsUVis9UBU{?W2Paq%#j-CN^X%; zOiHh&B4aXC%2hQXRuMy@pm3$K@-&km!O89tq|t1M@e*j8n=l)aW)KZ($kMo;--hQ7`kI@}o3y2Nh^DBRHD9O#+6I$|1V(=>m| z-NmRXTv8|FOLQE)Be>Qmia|(a02H~I2`Oq2=vy>abhMBdN5)R5QKM~Sb;w_XTfX~Te6+}lu-O1c!}8+d zJ9q|S7=q*ntwprF0uC-l)mBw!6vh`)S%Pxyh0*%gxFY;d79dbdX%y3aJik^7z}L>{ z`R28Qsep$bNAnhFo+8liScv!<{x(o2))?cTef%>)1@KJ|zTMzYbdqe`;-6s`ZJMS+ z^oAp>HpRkI6p|+h0N%#lrYXd2{ye5BozsBc7W2_S+xWm8_m2 zH?LNcrnaU3+zFhiCg%Ss)ic-uC&xcw-{!66qmOOpBj*h8>@Gd~f~$#ple_k>HfNGY zO!VwuVF$3Bm|V@fQ>WikF0~M{XCRt>8LA=fHfK^C{#RU0kis2$_Ak>jlm)*0`RX-X`05>o|g#s`k38o>E{yc!d9|XDUO{)a1HUr8)K-oj9qd z?H8DcqVi0%R-V@7Z#*Pa1_Slz@JJ~)Z`Bwr4g?6Ryi1Vt3 z#&Y?<#cNd=gX;3vgG2jQTE(DhY@HtIybpGlIWVyOr`fl{z~-4 zf9KXli$t>9>-F546tPN$gA7MhKs?011^}0&P}>LtVO0^R->*vn^g6=pmcm-nVz5NT z&={X$MU)RSx~vnCF@{qJzEtDNTv39nCM&_8J3>;!_;^S-*d(;PNlAmmb}%YiMP#;S zRgm_caGJSO>)4Q0xl&4knX4$G}k=zRN%v3Ehebg)6&3i+0IDP_fWCfuxm{ zwRxbjzUe+XL60bgGMT6)AI6t;(QGzr zF4-PPAH^&pO|Y;4F$UGb-DS$E-IcMW=Il@d!ygRFHm5chKFNB|4261aZ_Z)VL(9eB z9DABopRkzTo~ucBOVO@#Ef|@cO)k4?-XFq`Yes*x`o?pNOuex)9`F8elwGUlF~22k z2r(NTFgjHk@E8!KRzt3ZQhn-xDKIJ-dIUH+93#2k^o6cP*dfEX6FhewYUo#IH-QwF z5Nf3^7Pfp2wZb0#|KtcK8{*se7hoKbG%vI#0of=SZu zOeE^Gdn)jG#uC?L z)CN83Q1`K2kS4JbV5}~la%<^^zQ5;n1 z_avCkpzq6OEE1`-q3;0Mca?>c1Ku-Eh-WDTWHe%|Tc*Jz+LO&Gr261&3Wh?whfLd4 zm5&J<ibEL% zc8_TO%y9HkhXX=0LU%~aq1c1sCwf@cK&<8#8qi z2X=6_x0g92HH>r3KYi?2;OD%-z|Xm(!Qa_qSorfoVhGS(&oR}`qnP|d3q>v3N29&pl4`xv=xCs{f-ho;J=%kj#V*9u)}a6>cV2I&f)oM5E0*O>I}aK z=+H66Kj*Z*^3JpJn{e$g#A17~E{^b$wSD}8h(lerL~r;j{uLkUT;H|Z5R08$0G(_A zNjnd*xSb1PI~xSKp<~Uh+?re2HQA0tEbir2+$*j)$gMcYuE-W7V)5^}75|=H(YACE zi+*l(f6h8_{UEn~Fn5_4LN6CWFB<|`-iXCtmh&n~O-E*BWQno%Rc@GAHti@JEggrH6_&{Ha*Y`B(v z(;dKSwNfV3X?JXI-Dwd}dQFfs0L^+1pjk1XSw0}=47PB)`_&z|Bu@|=WINao4pYwkJAx!tn1E?J7rt54ShnR8*;mlXiv z+#QMAgmj9mxaVH|0YeXD;y^ zphtNtZW%z{5hPxE;t}(;wx%| zp!pYpl549ADvV-XirJ2u`eBX4ZN67=L|3go>WgZ%Yv3LLP!M&ivcXzSd=Di7fTK=F zsL;W>XtW55QcQF$y-}OgLbm?@K{seTC;h+lC?N&e1@Jg;wKAzQrxuz*WmMaqQ*FDm zmr=`~-$nFS$*38W=w?pU-u$lS)ZCg=lgtq_>g{1Y{yLZg0__GfApCt!H8g@rSCevR zaaDPgXEb^|r%`FGlu`3!PEE8X%IU5p{mp@4{E%4h3mfUHcsl70$5lmV7dX}M0_)ka zIx{9s&P4o7aE2{PR}2&cDE%>l!f2!-6CUR*E(Z^jS)Cnecv{OZ?Y4z29}DtCq*z)U zdL#^b3wbl71=)EMq&%?xjpyfFrH(F`mBlMUH|wTQlgH(Z($`elxf67YS&G&IqD!|4 zH&^IJ3k3XGF8O}`40?e&N|#1E%6(gppR2O3ShuoT6>GUx(HLmbg0zwAzwR=BfipY>Q&s?JeZ7Gl*b3A9v%3+Qx!#*5!$G2709P=_{&qA}VmQ?OP ztbEYk??|pGvjgMe4j9SA#XGide6P3qPh00ZR$-^CiWB#Y`skW-s2;cKws&u4Pxp&^ zDqRB&7F+B2m0r+w-j&Hcp=?r;d!i{{FjNA|6~DsUNqSatL&zOr#m7UqsV(tA5S8RU zCOQGV^`}wjpp#@Q69vDA&fyhw>cw+3%B$sd93?cNil%y&u_TlEJ654?!jfT1#*Hu{ z*~2n)it89W#9zEy`3-zeyhB?w^A>)&@5ysWzsFx6Ndi%Q_!0Dvvcr#WWsFB4UL4|) zBS)Chl0F&ad!~^uITTH*)L0S=78Wm<^pQch#Vu4Jk_#$t@w5Ggx&UCTN2F&Z6W?bcYNp2R4W;W**$!SvR*NZnPyUJv5QhJxS z#tJg92Pec2#4;c<$*Xmpe$59qp%INK(iM7+`_oW{Hf4q(vE}|&yyeJ$C$qQoCTkO~ zGen!&W{IbkU|?;LYJD?@w*}5L%>wJ~+E{0=lZ&8_LA@INUq%ItX;eH`9c7|~P@~Jv zLqC0aP!0uk@odp<9I#v`T*`XXnMYYKN=TF(7eh8YBHy)sHK7=Y~Bp-E7SB91^ZY8Y~hEf(aQBa5zFYLqV+ zL?q3uf30XJEL84GRJA@meYGex>%Z>AS14hr$72VwtrQMWqB|9 zV|!ah`#U&n@9nlv$Yvk+!UuV`*cIR7sFW)M2BW9A$5EHE81+PNHZc)_?HIwtEA-VF zFzu1M3s86IkU$;0Tin<^JL`jDV>wRh9PKvfppCHmyPNJqNCseTBt(b<4aM zmRx>Y!CO+682G_6>G4&Qiu?BD(kSiOU;9~Qgw%F6r`_>+8Exot zhBh<_ryq_=z-rA0HtUt?)Ji5GK8_qLZ!|EeqQtXF@Q+ytBC}Z4*+N(|zfiN*xy)MO z?CUmWqu?DTPDd|f>ChoueuM$1@A@V3I1Jx|XX5{=Hp@pmQcLJlG4*bx;N2=sOp2w< za4gJG;uF{;($wWEyIB-#SKHtyDCI(tC}L?&}EiOe3E44le5WGb^9q0tbNiCzQ( zSQ~$!0=p{|rz{gxS3A$9?#l#a_)8HITw|b;O|HI8DRXb42@q!g0vRV(`{}efGPx8N z&)rHAC97G~Eb}r?R**9^uMYQI*#R}(tH`FgiDY~{osC9;M883F6I*HSV#)=(U|3t;Itz;<8-FZ|+kwqJX zUCe#W4&>zdEl+ielDeR+YcPar!X)TW1(p?>TUA*D>3Ygs-~l5^UCf7}BpD4ui9AJ> z3$@R#oj&wI&pL5TZ1hL)OOGD@dgOb(JrZ!z4`IeFZ z!E?>*md!f!NFHA<3T=u(SY@tBLSw%`3;`Yz$%)?=%E?079|m!I*y%vL~2<( zqpVI+x%6>?pp@n!l)4GF`J^oHl%!S$Ra4DjsyEX=GU_vpj>-Cb45LJr`%nW+!X%#=S@L>>YRbMMFA7h!VnMUY+Nl7>daQj$mn?>ZIG!V&Q%Wf zE$cW&c>U+&^&d|(*R5$C+e2vs$l**6TL%dqQHG$T$OW=9jn6n`V5TnGjM2ljzOX^H5zT>-CkWlq2emayN^ zt)a|$C*LilBdwGSc!%pLBg_D}v5b7ODakzLa&}Z?&+H*>=Hh~RzHYx*S9oBd32qQ4 zEF_}4g*%A`Wo`0^+VC*seLM|(@y()kHj(cQisrOa(G$YXb`ml- zLPSAB!n=O5LrK<9{B?EzyPlQt{X zrMxv;)^u$or|T#t_VvO}V}Q``am6EggRgmMk@L4)WE!H z%DD{qouMn8Q=PQ=Qq8@r4|jZ`y=GBA&0m1uV~92JXI3kU4WshI3RqEb0miRlp-%de zUc}clmTwuBhxhnTqqU$ePctpD_l~r z^74GAy|;(HbB;k20F(;}5EoMJ2qR?%I0&rh*t8Uu-3{q@@L_FkpUIQFTz`+0MdRo1 z>u;H66`4S+x=5$ht)h#a>?Mx4Y3>m%W`@RXZ#%r{^zIOUzuiAux6tU^-K;fI$zcSPCXfd(6m|qoh!&6dl%tUlcjNT%0;N3AkunEu!$Zh+i8B ze$nK04o9rd#zfcBP)#=_zhK{~KW-%GWY<3~_%wFhjvuYqR;!E_!?^^VI5;@-S*THQ{z>Ac-?ejPi%P5|)81?ImGQbTA=iT8F8h~GFI!+VaR z@Ik!h=Z(y!8&({|WKE~w)i0x*U0}WxzWlw#iNa=}>XxK|3R^pz
(u$MXcfFdx+ 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 L8yUy}6zG2e{UqUi literal 0 HcmV?d00001 diff --git a/ipvsadm-catch-the-original-errno-from-netlink-answer.patch b/ipvsadm-catch-the-original-errno-from-netlink-answer.patch new file mode 100644 index 0000000..a9ffeec --- /dev/null +++ b/ipvsadm-catch-the-original-errno-from-netlink-answer.patch @@ -0,0 +1,80 @@ +From f8cff0808a24b1dd141e86cc8039108aa1763071 Mon Sep 17 00:00:00 2001 +From: Julian Anastasov +Date: Sat, 5 Aug 2017 14:38:28 +0300 +Subject: [PATCH 1/2] ipvsadm: catch the original errno from netlink answer + +nl_recvmsgs_default() returns NLE_* error codes and not +errno values. As result, attempt to delete virtual service +returns NLE_OBJ_NOTFOUND (12) which matches the ENOMEM value. + +Problem as reported by Emanuele Rocca: + +ipvsadm -D -t example.org:80 +Memory allocation problem + +Fix it by providing generic error handler to catch the errno +value as returned in netlink answer. By this way all netlink +commands will get proper error string. The problem is present +only when ipvsadm is compiled with libnl. + +ipvsadm -D -t example.org:80 +No such service + +Reported-by: Emanuele Rocca +Signed-off-by: Julian Anastasov +Signed-off-by: Jesper Dangaard Brouer +--- + libipvs/libipvs.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c +index 180ea42..d271c48 100644 +--- a/libipvs/libipvs.c ++++ b/libipvs/libipvs.c +@@ -74,9 +74,23 @@ static int ipvs_nl_noop_cb(struct nl_msg *msg, void *arg) + return NL_OK; + } + ++struct cb_err_data { ++ int err; ++}; ++ ++static int ipvs_nl_err_cb(struct sockaddr_nl *nla, struct nlmsgerr *nlerr, ++ void *arg) ++{ ++ struct cb_err_data *data = arg; ++ ++ data->err = nlerr->error; ++ return -nl_syserr2nlerr(nlerr->error); ++} ++ + int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg) + { + int err = EINVAL; ++ struct cb_err_data err_data = { .err = 0 }; + + sock = nl_socket_alloc(); + if (!sock) { +@@ -100,12 +114,18 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg + + if (nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, func, arg) != 0) + goto fail_genl; ++ if (nl_socket_modify_err_cb(sock, NL_CB_CUSTOM, ipvs_nl_err_cb, ++ &err_data) != 0) ++ goto fail_genl; + + if (nl_send_auto_complete(sock, msg) < 0) + goto fail_genl; + +- if ((err = -nl_recvmsgs_default(sock)) > 0) ++ if (nl_recvmsgs_default(sock) < 0) { ++ if (err_data.err) ++ err = -err_data.err; + goto fail_genl; ++ } + + nlmsg_free(msg); + +-- +2.14.3 + diff --git a/ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch b/ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch new file mode 100644 index 0000000..20e0cbe --- /dev/null +++ b/ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch @@ -0,0 +1,52 @@ +From 25d7aa2faef0c36f053ee1ba418fe14022ef6f7c Mon Sep 17 00:00:00 2001 +From: Ryan O'Hara +Date: Tue, 27 Feb 2018 11:49:44 -0600 +Subject: [PATCH] ipvsadm: use CFLAGS and LDFLAGS environment variables + +Signed-off-by: Ryan O'Hara +--- + Makefile | 6 +++--- + libipvs/Makefile | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 91a2991..2a1d179 100644 +--- a/Makefile ++++ b/Makefile +@@ -46,9 +46,9 @@ INSTALL = install + STATIC_LIBS = libipvs/libipvs.a + + ifeq "${ARCH}" "sparc64" +- CFLAGS = -Wall -Wunused -Wstrict-prototypes -g -m64 -pipe -mcpu=ultrasparc -mcmodel=medlow ++ CFLAGS += -Wall -Wunused -Wstrict-prototypes -g -m64 -pipe -mcpu=ultrasparc -mcmodel=medlow + else +- CFLAGS = -Wall -Wunused -Wstrict-prototypes -g ++ CFLAGS += -Wall -Wunused -Wstrict-prototypes -g + endif + + +@@ -87,7 +87,7 @@ libs: + make -C libipvs + + ipvsadm: $(OBJS) $(STATIC_LIBS) +- $(CC) $(CFLAGS) -o $@ $^ $(LIBS) ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + + install: all + if [ ! -d $(SBIN) ]; then $(MKDIR) -p $(SBIN); fi +diff --git a/libipvs/Makefile b/libipvs/Makefile +index f845c8b..780f3f3 100644 +--- a/libipvs/Makefile ++++ b/libipvs/Makefile +@@ -1,7 +1,7 @@ + # Makefile for libipvs + + CC = gcc +-CFLAGS = -Wall -Wunused -Wstrict-prototypes -g -fPIC ++CFLAGS += -Wall -Wunused -Wstrict-prototypes -g -fPIC + ifneq (0,$(HAVE_NL)) + CFLAGS += -DLIBIPVS_USE_NL + CFLAGS += $(shell \ +-- +2.14.3 + diff --git a/ipvsadm.service b/ipvsadm.service new file mode 100644 index 0000000..a1d497f --- /dev/null +++ b/ipvsadm.service @@ -0,0 +1,14 @@ +[Unit] +Description=Initialise the Linux Virtual Server +After=syslog.target network.target + +[Service] +Type=oneshot +ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm" +ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm" +ExecStop=/sbin/ipvsadm -C +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target + diff --git a/ipvsadm.spec b/ipvsadm.spec new file mode 100644 index 0000000..68becc0 --- /dev/null +++ b/ipvsadm.spec @@ -0,0 +1,65 @@ +Name: ipvsadm +Version: 1.29 +Release: 11 +Summary: A utility to administer the IP virtual server services +License: GPLv2+ +URL: https://kernel.org/pub/linux/utils/kernel/ipvsadm/ +Source0: https://kernel.org/pub/linux/utils/kernel/ipvsadm/%{name}-%{version}.tar.gz +Source1: ipvsadm.service + +Patch6000: ipvsadm-catch-the-original-errno-from-netlink-answer.patch +Patch6001: libipvs-discrepancy-with-libnl-genlmsg_put.patch +Patch6002: ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch + +BuildRequires: gcc libnl3-devel popt-devel systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%description +Ipvsadm is a utility to administer the IP virtual server services +offered by the Linux kernel with IP virtual server support. + +%package_help + +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +%set_build_flags +make + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{_sysconfdir}/rc.d/init.d +make install BUILD_ROOT=%{buildroot}%{_prefix} SBIN=%{buildroot}%{_sbindir} MANDIR=%{buildroot}%{_mandir} MAN=%{buildroot}%{_mandir}/man8 INIT=%{buildroot}%{_sysconfdir}/rc.d/init.d +rm -f %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name} +install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service + +%preun +%systemd_preun %{name}.service + +%post +%systemd_post %{name}.service + +%postun +%systemd_postun_with_restart %{name}.service + +%files +%defattr(-,root,root) +%doc MAINTAINERS README +%{_sbindir}/ipvsadm* +%{_unitdir}/ipvsadm.service + +%files help +%{_mandir}/man8/*8* + +%changelog +* Mon Dec 30 2019 openEuler Buildteam - 1.29-11 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:optimization the spec + +* Thu Nov 7 2019 openEuler Buildteam - 1.29-10 +- Package init for openEuler diff --git a/libipvs-discrepancy-with-libnl-genlmsg_put.patch b/libipvs-discrepancy-with-libnl-genlmsg_put.patch new file mode 100644 index 0000000..09e0b3d --- /dev/null +++ b/libipvs-discrepancy-with-libnl-genlmsg_put.patch @@ -0,0 +1,40 @@ +From 76c1270148161242f240d9a00746cf06d916b3e3 Mon Sep 17 00:00:00 2001 +From: Arthur Gautier +Date: Wed, 27 Sep 2017 15:31:05 +0000 +Subject: [PATCH 2/2] libipvs: discrepancy with libnl genlmsg_put + +There is a mixup between NL_AUTO_PORT and NL_AUTO_PID. The +first should be used with genlmsg_put while the second with +nlmsg_put. + +This is not a problem, because both NL_AUTO_PORT and NL_AUTO_PID +have the same value, but still a discrepancy with libnl documentation. + +see documentation of genlmsg_put here: + http://www.infradead.org/~tgr/libnl/doc/api/group__genl.html#ga9a86a71bbba6961d41b8a75f62f9e946 + +Cc: Julian Anastasov +Cc: Simon Horman +Cc: Jesper Dangaard Brouer +Signed-off-by: Arthur Gautier +Signed-off-by: Jesper Dangaard Brouer +--- + libipvs/libipvs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c +index d271c48..a843243 100644 +--- a/libipvs/libipvs.c ++++ b/libipvs/libipvs.c +@@ -63,7 +63,7 @@ struct nl_msg *ipvs_nl_message(int cmd, int flags) + if (!msg) + return NULL; + +- genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, family, 0, flags, ++ genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, family, 0, flags, + cmd, IPVS_GENL_VERSION); + + return msg; +-- +2.14.3 +