# ChangeLog for net-misc/iputils
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/ChangeLog,v 1.138 2015/04/04 22:31:07 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/ChangeLog,v 1.139 2015/04/25 00:09:50 vapier Exp $
+
+ 25 Apr 2015; Mike Frysinger <vapier@gentoo.org>
+ +files/iputils-99999999-openssl.patch,
+ +files/iputils-99999999-tftpd-syslog.patch, -files/iputils-20070202-idn.patch,
+ -files/iputils-20071127-infiniband.patch,
+ -files/iputils-20071127-kernel-ifaddr.patch,
+ -files/iputils-20100418-aliasing.patch,
+ -files/iputils-20100418-makefile.patch, -files/iputils-20100418-openssl.patch,
+ -files/iputils-20100418-printf-size.patch,
+ -files/iputils-20100418-proper-libs.patch,
+ -files/iputils-20101006-owl-pingsock.diff, iputils-99999999.ebuild:
+ Update patches against latest git.
04 Apr 2015; Mike Frysinger <vapier@gentoo.org> iputils-20121221-r1.ebuild:
Mark arm64/m68k/s390/sh stable.
Hash: SHA256
AUX 021109-uclibc-no-ether_ntohost.patch 635 SHA256 cf8135fd380918890a1da8de438d5283111f1e9ea0754b4f5c78bb703fcf617b SHA512 29ccbbf19bd40e9c929af403227f49586a4cb79d7ef948710b34b0813d116017530ef1bf0082b093b4179edff1daa275906cfb9a565f61dd5bed10f24b66fd38 WHIRLPOOL e5390a41b0764d78cda651dd6fff2ebd4f206dc6f5b34da370c19cee7d44f373035fc1efa2bf90924b5a06ca48f344f80a2c902abe04eb588d01e0a9d59bf79d
-AUX iputils-20070202-idn.patch 3303 SHA256 449e356a14aee6ad27ac4581055d489da764403447df8f2a50ecb1c4ac71e533 SHA512 42037984cf29e1166cca31fd4325e3deed5739a5aa9ba3632a201f06bb5ae76b291a10350f6cff037cfa158c5573a5f6c9bb420c21041779669497760d5d232d WHIRLPOOL 3183deb53d6773c884b46efc86ddf231b934b91d34742158b17d4901f4b8aab292ac9e18414816d611f922ecf2d252d76c7b2f49a0f7489ff031f8b9022d99c9
-AUX iputils-20071127-infiniband.patch 7748 SHA256 98336a7656f2b0e1f080223395658ac57f545ef47644d68e989664a184c769d5 SHA512 9b74062ff74551b4de1cedcf4854e77759e3936b54e2db5fd9cdbbc8028a55495a2a2c10fc0514fc374343a644bf0c9706076480703e45a41c9f552846d93a51 WHIRLPOOL 6a0cd3df4080c7937c2f6de8fa3ea8eb8da5e5337d1c28ae706e81678373f4064c74f4da46dca0a3cdf461fce92948b58ea2629d2573b4098c712bfdeedbc08e
-AUX iputils-20071127-kernel-ifaddr.patch 1467 SHA256 24d24c86676c8d6febb52650e53f202051ec9f185932b87d8400eee0f77f569e SHA512 a7cfd4f660a0742509d6e7b3985d81404ebef453fd32fd2a28118bc7304ba957e8306c6acd16609d88c41918fa49c9ae9c83c59e16fedd951cbdcbff544b17b7 WHIRLPOOL 89958a184cd4f4ff59b880c17f995bf16a4957ba163f3989d3ea2d99e8d2c1a603101ee9194c3f17970dc452fc52d8cf251da75e259846da9fcf4e20a9e8893f
AUX iputils-20071127-nonroot-floodping.patch 497 SHA256 f0c7c2d4843873da96f795fb766a65ed39b6d8ab74ae4aa5a47444c9a3db0e52 SHA512 96ea32977cdb2e3c98341b75214a35e88296600d14bc929f7691951325be8e90e8ff6ccf83fb2419db3c910a8169fb2a4348000fab33679039ec5cf2d07a3ee8 WHIRLPOOL 1f880978cf70188d0d59e79396f8c5962655c00cbf7f7c7adb800316dea1b6748ddbc788681c9831edf0fbb1153e85b5ca35e0e3c131b0a5b4884fa511119c0c
-AUX iputils-20100418-aliasing.patch 2897 SHA256 8df8b1c510a1630d06d71f801d57c9182729f0308545026b999868ad55469914 SHA512 d50595a1c4a6f4b54099050569cde2fb1e5ebe553cca7d45d6cc674b075086b7d1fc54816ca92bc5856dc14e62b6d20b5ebc1c39cc1786f46a96b7e08bdca3ad WHIRLPOOL 129ff37eff62a115cfdbfe6ae5a6b529cb290a909dace4d5e71ffd37aa7707d3313c0de1e7bf31a41c9ec0b7365ef05d9a406c85cb96dbffe418b3e78e62c6c7
-AUX iputils-20100418-makefile.patch 974 SHA256 910914b0184a65aa15d42979bb7e3d272697310231005673cf2f46648deb6a4b SHA512 c3c9096cd2587e39afdd0a78291a4f67249e2fc75c303cd648a795f7c88dc7e9e2c27f3f56fe6d7d40bdcb0d179dfd35f1c991ba8fd3524149f8cbb94d9ef0ca WHIRLPOOL b4fa577f4b52792165abda924a1980fb1101c7f5a15714b4a9647535e5be622c54e6ef0f731212a74b1a6fc1ddfcf54f98e5c0a0c540e0113823e7646dd6df8a
-AUX iputils-20100418-openssl.patch 628 SHA256 4e009a36451b599b2717ec6c6d7d9adb4723d7629fffaf07a5926ee80af9a3ea SHA512 c7bf0317e893386172e65679ead3e1eebcb7805f96f99de4170df495fc9ed573b03b51a1ab69bc0390705914cba72b61e5e33a454eb8ec43a7fd07ae50ffb3dc WHIRLPOOL a3b53d485d948a50dc988af65eaafa73fc08d88cbc2731061ae5607e110f01af3cd009e2287a9a633728768def7702392fae7ccb17e322bee214bee76c958553
-AUX iputils-20100418-printf-size.patch 1658 SHA256 95ce6cdf73cd5dbfbd962131fc1f6513713d4874ca161f5b24eaed21d58a1cfc SHA512 556237d39043815f196b0f22ec552bfb52ad2d45b2faf67e26712361bc11acd21cec42b8241ccf72778b421b9f456a37e9466dbfc03c0df2be1e1bb5ae48a92e WHIRLPOOL 80d03f09a6b023413845f5fe12e6decd87e70c143ad79215d66b1fd29c42bf7b61580addac910dd2134c9d4bf41432f21c7a63184e76aa1bdd936621da6b12d6
-AUX iputils-20100418-proper-libs.patch 427 SHA256 6566f7dd311df08ed51a03758ef3137a24b1883452f86df1821bc266c6d1616f SHA512 b6f42a1dda591ccde770a665387ff3a0c0fe925180487ef57852ad5a76f1bd781d56e3266894e8868d84a7016f7d6fecf1068e4ced7b1e104a9a54b08ed4427c WHIRLPOOL d2f7bb97bb2871b2a84412da5303b87cdefa0b3d5fe115fbaad6fb6b58907c83f39c04e3573e7cef76401f66beee698ac0676f0fdfadeaff6ab79b2d3a6476b7
AUX iputils-20100418-so_mark.patch 597 SHA256 3c0c3e93d3b458a02f856be3681c2dd5bfb18933e4752e90dc277cdd353b3576 SHA512 453ef3f8c53e2c2cef54f19219b892e51a83a6109f73a4f10712aec729509f02e6b830ab7ca85843a70f3d9c9860f084b256290f638741d573a5205ba89fe469 WHIRLPOOL 502e9ee110555644fd7d19d64afba3d2777844faca6fe0111b4b7356e3262c011b8de13475db1e70dff9225e3883d7e3e27d1f96f240a80d4c5c9ab0a29c9560
-AUX iputils-20101006-owl-pingsock.diff 6390 SHA256 1425efd6d30e6c9682569ff1de731922351048f81df44a2ebad30cca85fc51c9 SHA512 0e609aa8088572244a57d719124df2719d5b0a3b37861afb08aa434192c1801e03617254b7caca8f47749cf72c2da8c52f007eb0c136a64f5abd44ad9960cc1d WHIRLPOOL dc9824a7761fd384e8a5c991d02201cb18b4aeb666a0d83ca18ce0e59216a46831a219629d796beacb048fb647841d178d64f478288b8e9d2766e10f2d129a10
AUX iputils-20121221-crypto-build.patch 1325 SHA256 cafc281c70d46f2964489b4c19c981bcf203b4c6266d4f49437c3fe67e2027b2 SHA512 922daa01f00c19f8237515b2d3ab73b87daa957cfc491382def2ce1c098ffed943ad4952c94134f3155570f64353abf5348523ea773ce7eb457578f975cc92d2 WHIRLPOOL a39c7dbb9b37849cc3560dc1f814a8c18a9ff9b55e19c3587a7c49286d55323f96d42d33c6f2723d3868506c252272e1d2d6bc3370eb935b479c89514f03c9c5
AUX iputils-20121221-makefile.patch 1791 SHA256 779632822e3440f3b898a50955cb8fb72177f0d1623c9da7c0a8afa68313435f SHA512 5899942b73d4d13e0ff85f22a81e9107b2a04c82cac6b59559a521c5d0bf25007e34b61b2dfdb40c21b221a108f6ba72c1a51fa59359a400ad045c9394c176db WHIRLPOOL c0c13046265ad44d23bde66cf48f64803591b4577861fde0ad7873001cbd9284c8593ce277a39d077b5bab635d0f8aa53ad124ea724bbc4584db36570028f90f
AUX iputils-20121221-openssl.patch 2378 SHA256 cc1af5ccdd593b4fa43273cf7de8b9552f0a5d33a72a35fcc4f94cf2c6fc9a44 SHA512 05240c00d0a1f9f878a9826d54cbd0128c2ed5ce7cab4685907956156c3cf2131ccd563812b64490bf915a75f52851396966a590027fc4c1886b2d19f421718b WHIRLPOOL 66052233f933cf30fe1572578012faa380f53580307e880e9a94c001ea14e585b3e28693c8e3883ee6350bb6af04a6931732ebaa284c4e3851b64081e042d081
AUX iputils-20121221-owl-pingsock.diff 6374 SHA256 915e18ee5a03f5636b408ff34a5576ad8899a3d93d5fe8182984c3565bd94375 SHA512 2f2577230d8bc864adc562c4c5bf33cde3bbabfde633406165b2b61df4e13e2dba74c8561f70d88c3932fc49a41a0276533b715ade208c8608348e4d065c8395 WHIRLPOOL 205179fa205e8bd88a9077cf628ec1a060189ee01d55c45dbe754f3bc36a496531cb9eab120507eff5d72140c934a7480d6a015fa6020f7dcecdfbc6ef590443
AUX iputils-20121221-printf-size.patch 1671 SHA256 a1ed939d0e008bca06208ae34e3f17a0ddc66b50f1679f82a630b52cdfbd111a SHA512 ff5491ad5a0396bee41fcbfc1384699d396c24da093bd2209dead67f52efcec462dbfb4a43008083742d0139da7bd52e922499b5f7eae028384c74930453dd33 WHIRLPOOL 8582495e9c58a01c3aafe6d0c968df910e672af20d420980ba7503800ad75e308c62cd53f86b5aaa8ef9d232ee7a0a4ea7bb3d9cd9735045ae0f6a21f8e419ee
+AUX iputils-99999999-openssl.patch 2532 SHA256 0ffcce81badea00e84bdaf49929bc657ab574e98824a65ea3cd9015421372644 SHA512 2f782d93466d2db7d01295c7ec7c24fdb529e28f76c703c112d5dc8b4600402a68d4caf3c1df4f8879149e6fa52bb208dd14879cb01741544ccd49552e017afb WHIRLPOOL f51c56cbf23076f3db504a008e1eb732c9f961c86f815af57dfde96627fd2f15cc9fccae26481bb39a4365d3333e9080984f46bbd9370b9cfbfaf52625b5dfe3
+AUX iputils-99999999-tftpd-syslog.patch 1075 SHA256 8502f11dd440a9df42da52e3426fa93aa4e4d879093be723601a4adf52c62d2b SHA512 43fa506475f138e92d04bd6a4417511caa3ed1636f6dea5d3930b6dca164a809338ab1f24b4bf084581ff849189a8240929182fa24897e252994851a6aae5188 WHIRLPOOL b32d3eeb0dd48012e8e5ed6ad14d603c1280e7203ce5ba6f465bfc005bb44b5fcac23eced9a6b7353966749541ab75380b347c98e46805e3e542562474f024df
DIST iputils-s20121221-manpages.tar.bz2 23778 SHA256 6fc7ed7d281b7a2ee00e4f75e5465c90498c685bcc988afdff74db4eaa736d1c SHA512 006be62e61bf1555c99dbd5aac270cbd8d1074a3016fdde3aeed47e5c9b1acd326aa30a596c532d6688827f7f61966a6e3141eaa3b6f4f943eb21ac227282d8c WHIRLPOOL da0ccb577c4b2189553419df2c093404752fb2865eb3e0bfececfc242d930ceb44f96b32d945cfdd0c9ca060359651b2ec8479db5cc9220cda412dfeee5e910d
DIST iputils-s20121221.tar.bz2 155344 SHA256 450f549fc5b620c23c5929aa6d54b7ddfc7ee1cb1e8efdc5e8bb21d8d0c5319f SHA512 693d240becd766c345c3af2053fc0699b9358e54d667d40738c21d731b70e779112d81476a220d8300ca54250120385414a13610d445996f95a90571047389f4 WHIRLPOOL 64529180eb4b8e2f7a60c18df7cac49e10a4b7702514252d418b16dcdc10a85ccb0a7f8beb51274cc9d708be2026c4c136e720986795fd39d314e4f9d5590ec9
EBUILD iputils-20121221-r1.ebuild 2899 SHA256 3b63b43641f6c4ff0b5c4cfc71739e977ca280abc24c745409cd28dc2b66acfb SHA512 1980bc2a4c7b1d944e96cc1d0d7dece2672ce866d920331d75f1b1111598a91056d693e73e8ad8e9a6ecec4c97caea6aa2db194cf78d80265665bfb557833530 WHIRLPOOL 659b2395b5bea25833ed865aa32c24b418b051b9f7f48eb6eb68e7b7210e09ce3dab4a10cc2050816c476f312e64b9cb17ba0cf03ac267a6cb91f351750dc7d5
EBUILD iputils-20121221.ebuild 2852 SHA256 6df665954e76448c80184e43f7ed3f1aea111ff3b2ac7a30114248db7211ecba SHA512 fd6c699a954802606e886739eb5b0e7d1df0d78256add26cb071d191fbb37ef5c122adfe34dd4e44c27852b05833caed734d23b9cd97c3c71980457e5bc0c6fc WHIRLPOOL 7f172afc263bdc1a16de208343a736ca2bf6a4d3b34500d66cbd93154c471b165d91f56252413a2b3b3f3279d2ddf299e0b5ad6c9da4cd224eab3d6b50c95a0b
-EBUILD iputils-99999999.ebuild 2853 SHA256 5f5c701f7a5e886fbfbf6a51c83200cde20ce398b5c30da62fec5b9062a1747b SHA512 16f2d047c5a45e320ef330e64798af83a6fcece205942864f35a1319366a5aedbb34b68ffd7de824071d6f9c048ed90d6a0bc6c0aebe163e219e7ce14a902552 WHIRLPOOL f12724ae928f471fcf818800d6043c20196d4438585430c061d1a022a9fa0849396cf48678e439ab5a19495b72738353584524f6a9a820194ddd44612d1639e9
-MISC ChangeLog 20420 SHA256 d2a62719cb40c577e5448ba2ce3f3683908b6dbb44f96820de9d1270a1b4bd6c SHA512 58914cc8bad40dc32ce4abb1cffb84c51ef95e6c81be1b569a967234f374797e59e9c92ad46454c1b8d2077cf2f0e191480f940893edf85ce99859acef0dd451 WHIRLPOOL 772036882dce58f021ec53d8b0a8a2ffb14465f5f4d261ae970e02cfa6510b9166b6dc98c4533785a703701c5de45dfee6bbc0f640028955b3540e4b96cde4e1
+EBUILD iputils-99999999.ebuild 2740 SHA256 c2cb8497d68e2e1fc7a2963f911fb18c5ec74feecb9c9bede07a9ab8a708c652 SHA512 01dd31afaef9e7b27a30dc668dce2dbd26ca935133db30553e6dd6c0bff1b2462dee183f37bad1684fc2c442b245ab018a796000935f5f50447532b8392f8701 WHIRLPOOL cdd98cba2ac59ed723cd89096c0afb7ae280490e5bb6f9abae76be143b0c186363fc39d24daf9e252623a5b3f86b7cf26d7496b99b2045422ac4ce7a491ac66b
+MISC ChangeLog 21004 SHA256 1dfe999e884186f811f17c3249636362d50024fe1a3ec39deb4a2e20ea830cea SHA512 77891511f3faf3d6eb5b2c3f7a69700ecc33a62d629d9969dd8a01d35538fff6cf757d87c18af155558d378494d0ef7950e155fd650c3c2bfdd39e5ba41f7fac WHIRLPOOL eb31308cf2bf909b2db09020c22a396d077b8126b7640d6a48e8acb0503d79bb78937ea59ef0be8436a88f297474c0ace8f0e904b8fad90e803d292dafc894cf
MISC metadata.xml 386 SHA256 36462bcda28f18d127af12e2c6fdf58a813f3a5018a9151695892c1b706da52d SHA512 d7529383e575fbdbae4c96123530672192198cf1c4fc3a22097c42ddb3d179b8c99c67e274fbade85c68fc742d5792fb5286f40993f1099dc4694b1cf9942224 WHIRLPOOL 24417ef5492727316830ab0f208138c8ba41ae3e51b46e398297b1ed823f7d801e1cb4bb2ca6d87035f37a4072919073bd99dd8677cb67f3263258cb72184764
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
-iQIcBAEBCAAGBQJVIGYsAAoJEPGu1DbS6WIA674P/2yDOFbAMGTPwOPJVDlK3G2D
-r1pMrVhX/3Gu1kWgkqBULjyV5QlJEiOoDCfg0YOsNofn+7x2fdRtCW6nUOAyIvO0
-InHI93E6qcXUkHXOqpEzNRVhGCzgslzUz2xlp4ymaypdDX6BX71T3kwXSHbnwPwC
-XrgKOUYLiQpPjaOfrnZ4oYH1UA8dRKO1OFIS2SRbxWI4cC3bNIQn/HPuyvZjrc/f
-YU4Gh9opeDltwSpwgzpUI9q5NktEJGj5BKdl3BzTuIhkwM7NgO5kjiudKuujM9up
-6Q7XSDc2kbI5xkE8XGVACAcCNNZusBhXDn1H3Z7fqbzdxLf/hdDyviCxCHeQWW6Y
-EVxRqNUECNyo91BlTCnTkZ7sAsyOZ6zCT1BZjqMyK6S0ewEFcEqvw9n4wR1xObCg
-OiW8Oph6nMzaLGwbU+DgS5yeRnD5Ntn9wQnQluHYK9PIcbv2RloLmPw4Ij4IcYJQ
-3jSfAW9USgR42D67slMo29RZhJNgnYuPjwKPz6C+pqaagvSReRsV/sBYnE1aVM4N
-5GxXBYdOHxDYQTSwvz9sf6QZ33iaXc8MhXU8XlYOEei/JOsDZaAsrtcq395R4gWx
-1od6iTIxOy6uVY3OH9NLuNhsxLvbL6PFe/Hme9RR7ZSLLcaHZIBLFNyM1++lLj81
-C7Z5DWsk7IptB942J9PN
-=vOjj
+iQIcBAEBCAAGBQJVOxOPAAoJEPGu1DbS6WIAYfIQAJjiLATVWUKZLRhq3yhythD4
+sWMiAk2CgGOOCB5QuZEvVR1fcRrJjWB99Shb20rPQCEe2IhygJXxSaUVIDoi2d5I
+JwHxHMIi24t7tduI8TvCFV8vxfH4D+2Is/Yipe2SFUrMPZOdR2A6N1Ealeeb8aI3
+8r0KG4G7fRc7xoHVja3t7ug101MXUPQ9U4TTiDK5MM9vUpPILIChbGIcCNaFHTch
+/my2HK1nLRlMVeWu3UZ+X0pqKL7saLHsvdh33B3gqc0MRnATECUDx/j9NZw2BYvA
+UH9UU9KEpdR9Lz58rTDL4H9lwFN3RLWdA81PZEf0EzOcaJ59U2Js/9DTeCIFHHOA
+jGcF0MXOJQVznJvZDZMFPfvjhr3r7Fu7NFtWo6QCjMuCiPf3G5gyFs/l0wRW7CP0
+dyGuTnDCQk+R/Ks+qKgVzZg8xEGUJui59XxtEaaQm1ThnAV/EkyEyzk+U+pCs00b
+s/3awoTJ2XZeU0etlvbsAg2iEIjvbFqskvugLOK8rffV4DnJ5NUJT4h4/s89adjN
+rEAbV4x7MdgMaXZvAKSJmaCtYOPr7hvq9pp3XcYx8DNJ0x0DoI/VQK6FHFv5pddL
+0wZVBjouzC095w5A/Yfw5kGILrHFovJlewKWK38GM/hNH261gqeUFRS2tgKvVSoC
+F0TJDMbMzERFcYUofJPu
+=Mr1O
-----END PGP SIGNATURE-----
+++ /dev/null
-sniped from Fedora and made to not suck
-
-http://bugs.gentoo.org/218638
-
---- iputils-s20070202/Makefile
-+++ iputils-s20070202/Makefile
-@@ -22,6 +22,11 @@
-
- all: $(TARGETS)
-
-+ifeq ($(IDN),yes)
-+CPPFLAGS += -DIDN
-+ping: LDLIBS += -lidn
-+ping6: LDLIBS += -lidn
-+endif
-
- tftpd: tftpd.o tftpsubs.o
- ping: ping.o ping_common.o
---- iputils-s20070202/ping.c
-+++ iputils-s20070202/ping.c
-@@ -58,6 +58,11 @@
- * This program has to run SUID to ROOT to access the ICMP socket.
- */
-
-+#ifdef IDN
-+#include <idna.h>
-+#include <locale.h>
-+#endif
-+
- #include "ping_common.h"
-
- #include <netinet/ip.h>
-@@ -122,6 +128,12 @@
- char *target, hnamebuf[MAXHOSTNAMELEN];
- char rspace[3 + 4 * NROUTES + 1]; /* record route space */
-
-+#ifdef IDN
-+ char *idn;
-+ int rc = 0;
-+ setlocale(LC_ALL, "");
-+#endif
-+
- icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
- socket_errno = errno;
-
-@@ -242,13 +254,35 @@
- if (argc == 1)
- options |= F_NUMERIC;
- } else {
-+#ifdef IDN
-+ rc = idna_to_ascii_lz (target, &idn, 0);
-+ if (rc == IDNA_SUCCESS)
-+ hp = gethostbyname (idn);
-+ else {
-+ fprintf(stderr, "ping: IDN encoding of '%s' failed with error code %d\n", target, rc);
-+ exit(2);
-+ }
-+ free(idn);
-+#else
- hp = gethostbyname(target);
-+#endif
- if (!hp) {
- fprintf(stderr, "ping: unknown host %s\n", target);
- exit(2);
- }
- memcpy(&whereto.sin_addr, hp->h_addr, 4);
-+#ifdef IDN
-+ rc = idna_to_unicode_lzlz (hp->h_name, &idn, 0);
-+ if (rc == IDNA_SUCCESS)
-+ strncpy(hnamebuf, idn, sizeof(hnamebuf) - 1);
-+ else {
-+ fprintf(stderr, "ping: IDN encoding of '%s' failed with error code %d\n", hp->h_name, rc);
-+ exit(2);
-+ }
-+ free(idn);
-+#else
- strncpy(hnamebuf, hp->h_name, sizeof(hnamebuf) - 1);
-+#endif
- hnamebuf[sizeof(hnamebuf) - 1] = 0;
- hostname = hnamebuf;
- }
---- iputils-s20070202/ping6.c
-+++ iputils-s20070202/ping6.c
-@@ -66,6 +66,13 @@
- * More statistics could always be gathered.
- * This program has to run SUID to ROOT to access the ICMP socket.
- */
-+#ifdef IDN
-+#ifndef _GNU_SOURCE
-+#define _GNU_SOURCE
-+#endif
-+#include <locale.h>
-+#endif
-+
- #include "ping_common.h"
-
- #include <linux/filter.h>
-@@ -210,6 +216,10 @@
- int err, csum_offset, sz_opt;
- static uint32_t scope_id = 0;
-
-+#ifdef IDN
-+ setlocale(LC_ALL, "");
-+#endif
-+
- icmp_sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
- socket_errno = errno;
-
-@@ -296,6 +306,9 @@
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_INET6;
-+#ifdef IDN
-+ hints.ai_flags = AI_IDN;
-+#endif
- gai = getaddrinfo(target, NULL, &hints, &ai);
- if (gai) {
- fprintf(stderr, "unknown host\n");
-@@ -328,6 +341,9 @@
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_INET6;
-+#ifdef IDN
-+ hints.ai_flags = AI_IDN;
-+#endif
- gai = getaddrinfo(target, NULL, &hints, &ai);
- if (gai) {
- fprintf(stderr, "unknown host\n");
---- iputils-s20070202/ping_common.c
-+++ iputils-s20070202/ping_common.c
-@@ -1,3 +1,7 @@
-+#ifdef IDN
-+#include <locale.h>
-+#endif
-+
- #include "ping_common.h"
- #include <ctype.h>
- #include <sched.h>
-@@ -97,6 +102,9 @@
-
- void common_options(int ch)
- {
-+#ifdef IDN
-+ setlocale(LC_ALL, "C");
-+#endif
- switch(ch) {
- case 'a':
- options |= F_AUDIBLE;
-@@ -222,6 +230,9 @@
- default:
- abort();
- }
-+#ifdef IDN
-+ setlocale(LC_ALL, "");
-+#endif
- }
-
-
+++ /dev/null
-Otherwise same as Fedora patch except for the Makefile part
-
-http://bugs.gentoo.org/show_bug.cgi?id=377687
-http://pkgs.fedoraproject.org/gitweb/?p=iputils.git;a=blob_plain;f=iputils-20071127-infiniband.patch;hb=HEAD
-
---- arping.c
-+++ arping.c
-@@ -32,8 +32,6 @@
- #include <netinet/in.h>
- #include <arpa/inet.h>
-
--#include <sysfs/libsysfs.h>
--
- #include "SNAPSHOT.h"
-
- static void usage(void) __attribute__((noreturn));
-@@ -52,14 +50,22 @@ int unicasting;
- int s;
- int broadcast_only;
-
--struct sockaddr_storage me;
--struct sockaddr_storage he;
-+struct sockaddr_ll *me=NULL;
-+struct sockaddr_ll *he=NULL;
-
- struct timeval start, last;
-
- int sent, brd_sent;
- int received, brd_recv, req_recv;
-
-+#define SYSFS_MNT_PATH "/sys"
-+#define SYSFS_CLASS "class"
-+#define SYSFS_NET "net"
-+#define SYSFS_BROADCAST "broadcast"
-+#define SYSFS_PATH_ENV "SYSFS_PATH"
-+#define SYSFS_PATH_LEN 256
-+#define SOCKADDR_LEN (2 * sizeof(struct sockaddr_ll))
-+
- #define MS_TDIFF(tv1,tv2) ( ((tv1).tv_sec-(tv2).tv_sec)*1000 + \
- ((tv1).tv_usec-(tv2).tv_usec)/1000 )
-
-@@ -166,6 +172,10 @@ void finish(void)
- printf("\n");
- fflush(stdout);
- }
-+
-+ free(me);
-+ free(he);
-+
- if (dad)
- exit(!!received);
- if (unsolicited)
-@@ -186,8 +196,7 @@ void catcher(void)
- finish();
-
- if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) {
-- send_pack(s, src, dst,
-- (struct sockaddr_ll *)&me, (struct sockaddr_ll *)&he);
-+ send_pack(s, src, dst, me, he);
- if (count == 0 && unsolicited)
- finish();
- }
-@@ -234,7 +243,7 @@ int recv_pack(unsigned char *buf, int le
- return 0;
- if (ah->ar_pln != 4)
- return 0;
-- if (ah->ar_hln != ((struct sockaddr_ll *)&me)->sll_halen)
-+ if (ah->ar_hln != me->sll_halen)
- return 0;
- if (len < sizeof(*ah) + 2*(4 + ah->ar_hln))
- return 0;
-@@ -245,7 +254,7 @@ int recv_pack(unsigned char *buf, int le
- return 0;
- if (src.s_addr != dst_ip.s_addr)
- return 0;
-- if (memcmp(p+ah->ar_hln+4, ((struct sockaddr_ll *)&me)->sll_addr, ah->ar_hln))
-+ if (memcmp(p+ah->ar_hln+4, me->sll_addr, ah->ar_hln))
- return 0;
- } else {
- /* DAD packet was:
-@@ -263,7 +272,7 @@ int recv_pack(unsigned char *buf, int le
- */
- if (src_ip.s_addr != dst.s_addr)
- return 0;
-- if (memcmp(p, ((struct sockaddr_ll *)&me)->sll_addr, ((struct sockaddr_ll *)&me)->sll_halen) == 0)
-+ if (memcmp(p, me->sll_addr, me->sll_halen) == 0)
- return 0;
- if (src.s_addr && src.s_addr != dst_ip.s_addr)
- return 0;
-@@ -279,7 +288,7 @@ int recv_pack(unsigned char *buf, int le
- printf("for %s ", inet_ntoa(dst_ip));
- s_printed = 1;
- }
-- if (memcmp(p+ah->ar_hln+4, ((struct sockaddr_ll *)&me)->sll_addr, ah->ar_hln)) {
-+ if (memcmp(p+ah->ar_hln+4, me->sll_addr, ah->ar_hln)) {
- if (!s_printed)
- printf("for ");
- printf("[");
-@@ -305,40 +314,67 @@ int recv_pack(unsigned char *buf, int le
- if (quit_on_reply)
- finish();
- if(!broadcast_only) {
-- memcpy(((struct sockaddr_ll *)&he)->sll_addr, p, ((struct sockaddr_ll *)&me)->sll_halen);
-+ memcpy(he->sll_addr, p, me->sll_halen);
- unicasting=1;
- }
- return 1;
- }
-
--void set_device_broadcast(char *device, unsigned char *ba, size_t balen)
-+int get_sysfs_mnt_path(char *mnt_path, size_t len)
- {
-- struct sysfs_class_device *dev;
-- struct sysfs_attribute *brdcast;
-- unsigned char *p;
-- int ch;
-+ const char *sysfs_path_env;
-+ int pth_len=0;
-
-- dev = sysfs_open_class_device("net", device);
-- if (!dev) {
-- perror("sysfs_open_class_device(net)");
-- exit(2);
-- }
-+ if (len == 0 || mnt_path == NULL)
-+ return -1;
-
-- brdcast = sysfs_get_classdev_attr(dev, "broadcast");
-- if (!brdcast) {
-- perror("sysfs_get_classdev_attr(broadcast)");
-- exit(2);
-- }
-+ /* possible overrride of real mount path */
-+ sysfs_path_env = getenv(SYSFS_PATH_ENV);
-+ memset(mnt_path, 0, len);
-+ strncpy(mnt_path,
-+ sysfs_path_env != NULL ? sysfs_path_env : SYSFS_MNT_PATH,
-+ len-1);
-
-- if (sysfs_read_attribute(brdcast)) {
-- perror("sysfs_read_attribute");
-- exit(2);
-- }
-+ if ((pth_len = strlen(mnt_path)) > 0 && mnt_path[pth_len-1] == '/')
-+ mnt_path[pth_len-1] = '\0';
-+
-+ return 0;
-+}
-+
-+int make_sysfs_broadcast_path(char *broadcast_path, size_t len)
-+{
-+ char mnt_path[SYSFS_PATH_LEN];
-+
-+ if (get_sysfs_mnt_path(mnt_path, len) != 0)
-+ return -1;
-
-- for (p = ba, ch = 0; p < ba + balen; p++, ch += 3)
-- *p = strtoul(brdcast->value + ch, NULL, 16);
-+ snprintf(broadcast_path, len,
-+ "%s/" SYSFS_CLASS "/" SYSFS_NET "/%s/" SYSFS_BROADCAST,
-+ mnt_path, device);
-
-- return;
-+ return 0;
-+}
-+
-+char * read_sysfs_broadcast(char *brdcast_path)
-+{
-+ int fd;
-+ int len_to_read;
-+ char *brdcast = NULL;
-+
-+ if ((fd = open(brdcast_path, O_RDONLY)) > -1) {
-+ len_to_read = lseek(fd, 0L, SEEK_END);
-+ if ((brdcast = malloc(len_to_read+1)) != NULL) {
-+ lseek(fd, 0L, SEEK_SET);
-+ memset(brdcast, 0, len_to_read+1);
-+ if (read(fd, brdcast, len_to_read) == -1) {
-+ free(brdcast);
-+ brdcast = NULL;
-+ }
-+ }
-+ close(fd);
-+ }
-+
-+ return brdcast;
- }
-
- int
-@@ -356,6 +392,17 @@ main(int argc, char **argv)
- exit(-1);
- }
-
-+ me = malloc(SOCKADDR_LEN);
-+ if (!me) {
-+ fprintf(stderr, "arping: could not allocate memory\n");
-+ exit(1);
-+ }
-+ he = malloc(SOCKADDR_LEN);
-+ if (!he) {
-+ fprintf(stderr, "arping: could not allocate memory\n");
-+ exit(1);
-+ }
-+
- while ((ch = getopt(argc, argv, "h?bfDUAqc:w:s:I:V")) != EOF) {
- switch(ch) {
- case 'b':
-@@ -504,34 +551,51 @@ main(int argc, char **argv)
- close(probe_fd);
- };
-
-- ((struct sockaddr_ll *)&me)->sll_family = AF_PACKET;
-- ((struct sockaddr_ll *)&me)->sll_ifindex = ifindex;
-- ((struct sockaddr_ll *)&me)->sll_protocol = htons(ETH_P_ARP);
-- if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) {
-+ me->sll_family = AF_PACKET;
-+ me->sll_ifindex = ifindex;
-+ me->sll_protocol = htons(ETH_P_ARP);
-+ if (bind(s, (struct sockaddr*)me, SOCKADDR_LEN) == -1) {
- perror("bind");
- exit(2);
- }
-
- if (1) {
-- socklen_t alen = sizeof(me);
-- if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) {
-+ socklen_t alen = SOCKADDR_LEN;
-+ if (getsockname(s, (struct sockaddr*)me, &alen) == -1) {
- perror("getsockname");
- exit(2);
- }
- }
-- if (((struct sockaddr_ll *)&me)->sll_halen == 0) {
-+ if (me->sll_halen == 0) {
- if (!quiet)
- printf("Interface \"%s\" is not ARPable (no ll address)\n", device);
- exit(dad?0:2);
- }
-
-- he = me;
-+ memcpy(he, me, SOCKADDR_LEN);
-
- #if 1
-- set_device_broadcast(device, ((struct sockaddr_ll *)&he)->sll_addr,
-- ((struct sockaddr_ll *)&he)->sll_halen);
-+ char brdcast_path[SYSFS_PATH_LEN];
-+ char *brdcast_val=NULL;
-+ char *next_ch;
-+
-+ if (make_sysfs_broadcast_path(brdcast_path, sizeof brdcast_path) != 0) {
-+ perror("sysfs attribute broadcast");
-+ exit(2);
-+ }
-+
-+ if ((brdcast_val = read_sysfs_broadcast(brdcast_path)) == NULL) {
-+ perror("sysfs read broadcast value");
-+ exit(2);
-+ }
-+
-+ for (ch=0; ch<he->sll_halen; ch++) {
-+ he->sll_addr[ch] = strtol(brdcast_val + (ch*3), &next_ch, 16);
-+ }
-+
-+ free(brdcast_val);
- #else
-- memset(((struct sockaddr_ll *)&he)->sll_addr, -1, ((struct sockaddr_ll *)&he)->sll_halen);
-+ memset(he->sll_addr, -1, he->sll_halen);
- #endif
-
- if (!quiet) {
---- Makefile
-+++ Makefile
-@@ -28,7 +28,6 @@
- ping6: LDLIBS += -lidn
- endif
-
--arping: LDLIBS += -lsysfs
- ping6: LDLIBS += -lresolv -lcrypto
-
- tftpd: tftpd.o tftpsubs.o
+++ /dev/null
---- rarpd.c
-+++ rarpd.c
-@@ -55,10 +55,10 @@ struct iflink
- unsigned char lladdr[16];
- char name[IFNAMSIZ];
-- struct ifaddr *ifa_list;
-+ struct kern_ifaddr *ifa_list;
- } *ifl_list;
-
--struct ifaddr
-+struct kern_ifaddr
- {
-- struct ifaddr *next;
-+ struct kern_ifaddr *next;
- __u32 prefix;
- __u32 mask;
-@@ -92,5 +92,5 @@ void load_if(void)
- struct ifreq *ifrp, *ifend;
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct kern_ifaddr *ifa;
- struct ifconf ifc;
- struct ifreq ibuf[256];
-@@ -183,5 +183,5 @@ void load_if(void)
- if (mask == 0 || prefix == 0)
- continue;
-- ifa = (struct ifaddr*)malloc(sizeof(*ifa));
-+ ifa = (struct kern_ifaddr*)malloc(sizeof(*ifa));
- memset(ifa, 0, sizeof(*ifa));
- ifa->local = addr;
-@@ -239,8 +239,8 @@ int bootable(__u32 addr)
- }
-
--struct ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
-+struct kern_ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
- {
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct kern_ifaddr *ifa;
- int retry = 0;
- int i;
-@@ -298,5 +298,5 @@ struct rarp_map *rarp_lookup(int ifindex
- if (r == NULL) {
- if (hatype == ARPHRD_ETHER && halen == 6) {
-- struct ifaddr *ifa;
-+ struct kern_ifaddr *ifa;
- struct hostent *hp;
- char ename[256];
-@@ -371,5 +371,5 @@ int put_myipaddr(unsigned char **ptr_p,
- __u32 laddr = 0;
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct kern_ifaddr *ifa;
-
- for (ifl=ifl_list; ifl; ifl = ifl->next)
+++ /dev/null
-From f36fbe8c85223def663f46499d0b6b9a75939aaa Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Sat, 14 Aug 2010 01:34:13 -0400
-Subject: [PATCH] fix up strict-aliasing warnings
-
-Current build of some tools results in gcc warning about strict-aliasing
-violations. So change those freaky casts to memcpy's. When the pointer
-types work out, gcc will optimize this away anyways.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- ping6.c | 13 +++++++++----
- tracepath.c | 2 +-
- tracepath6.c | 2 +-
- 3 files changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/ping6.c b/ping6.c
-index c5ff881..86f9216 100644
---- a/ping6.c
-+++ b/ping6.c
-@@ -1104,18 +1104,21 @@ int build_niquery(__u8 *_nih)
- {
- struct ni_hdr *nih;
- int cc;
-+ __u16 this_nonce;
-
- nih = (struct ni_hdr *)_nih;
- nih->ni_cksum = 0;
-
-- CLR(ntohs((*(__u16*)(nih->ni_nonce))) % mx_dup_ck);
-+ memcpy(&this_nonce, &nih->ni_nonce, sizeof(this_nonce));
-+ CLR(ntohs(this_nonce) % mx_dup_ck);
-
- nih->ni_type = ICMPV6_NI_QUERY;
- cc = sizeof(*nih);
- datalen = 0;
-
- memcpy(nih->ni_nonce, ni_nonce, sizeof(nih->ni_nonce));
-- *(__u16*)(nih->ni_nonce) = htons(ntransmitted + 1);
-+ this_nonce = htons(ntransmitted + 1);
-+ memcpy(&nih->ni_nonce, &this_nonce, sizeof(this_nonce));
-
- nih->ni_code = ni_subject_type;
- nih->ni_qtype = htons(ni_query);
-@@ -1331,7 +1334,7 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv)
- #endif
- if (c->cmsg_len < CMSG_LEN(sizeof(int)))
- continue;
-- hops = *(int*)CMSG_DATA(c);
-+ memcpy(&hops, CMSG_DATA(c), sizeof(int));
- }
- }
-
-@@ -1355,7 +1358,9 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv)
- return 0;
- } else if (icmph->icmp6_type == ICMPV6_NI_REPLY) {
- struct ni_hdr *nih = (struct ni_hdr *)icmph;
-- __u16 seq = ntohs(*(__u16 *)nih->ni_nonce);
-+ __u16 seq;
-+ memcpy(&seq, &nih->ni_nonce, sizeof(seq));
-+ seq = ntohs(seq);
- if (memcmp(&nih->ni_nonce[2], &ni_nonce[2], sizeof(ni_nonce) - sizeof(__u16)))
- return 1;
- if (gather_statistics((__u8*)icmph, sizeof(*icmph), cc,
-diff --git a/tracepath.c b/tracepath.c
-index ca84a69..0a14b1b 100644
---- a/tracepath.c
-+++ b/tracepath.c
-@@ -142,7 +142,7 @@ restart:
- if (cmsg->cmsg_type == IP_RECVERR) {
- e = (struct sock_extended_err *) CMSG_DATA(cmsg);
- } else if (cmsg->cmsg_type == IP_TTL) {
-- rethops = *(int*)CMSG_DATA(cmsg);
-+ memcpy(&rethops, CMSG_DATA(cmsg), sizeof(int));
- } else {
- printf("cmsg:%d\n ", cmsg->cmsg_type);
- }
-diff --git a/tracepath6.c b/tracepath6.c
-index 5c2db8f..77a3563 100644
---- a/tracepath6.c
-+++ b/tracepath6.c
-@@ -170,7 +170,7 @@ restart:
- #ifdef IPV6_2292HOPLIMIT
- case IPV6_2292HOPLIMIT:
- #endif
-- rethops = *(int*)CMSG_DATA(cmsg);
-+ memcpy(&rethops, CMSG_DATA(cmsg), sizeof(int));
- break;
- default:
- printf("cmsg6:%d\n ", cmsg->cmsg_type);
---
-1.7.1.1
-
+++ /dev/null
---- Makefile
-+++ Makefile
-@@ -1,20 +1,17 @@
- # Path to parent kernel include files directory
- LIBC_INCLUDE=/usr/include
-
--DEFINES=
--
- #options if you have a bind>=4.9.4 libresolv (or, maybe, glibc)
- LDLIBS=
--ADDLIB=
-
- #options if you compile with libc5, and without a bind>=4.9.4 libresolv
- # NOT AVAILABLE. Please, use libresolv.
-
--CC=gcc
- # What a pity, all new gccs are buggy and -Werror does not work. Sigh.
- #CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -Werror
--CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
--CFLAGS=$(CCOPT) $(GLIBCFIX) $(DEFINES)
-+CFLAGS ?= -O2 -g
-+CFLAGS += -Wstrict-prototypes -Wall
-+CPPFLAGS += -D_GNU_SOURCE
-
- IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
- IPV6_TARGETS=tracepath6 traceroute6 ping6
-@@ -35,7 +32,7 @@
- rdisc_srv: rdisc_srv.o
-
- rdisc_srv.o: rdisc.c
-- $(CC) $(CFLAGS) -DRDISC_SERVER -o rdisc_srv.o rdisc.c
-+ $(CC) $(CFLAGS) $(CPPFLAGS) -DRDISC_SERVER -o rdisc_srv.o rdisc.c
-
-
- check-kernel:
+++ /dev/null
-make openssl optional
-
-https://bugs.gentoo.org/335436
-
---- ping6.c
-+++ ping6.c
-@@ -161,7 +161,9 @@
-
- static int icmp_sock;
-
-+#ifdef HAVE_OPENSSL
- #include <openssl/md5.h>
-+#endif
-
- /* Node Information query */
- int ni_query = -1;
-@@ -478,6 +480,7 @@
-
- char *ni_groupaddr(const char *name)
- {
-+#ifdef HAVE_OPENSSL
- MD5_CTX ctxt;
- __u8 digest[16];
- static char nigroup_buf[INET6_ADDRSTRLEN + 1 + IFNAMSIZ];
-@@ -518,6 +521,10 @@
- if (q)
- strcat(nigroup_buf, q);
- return nigroup_buf;
-+#else
-+ fprintf(stderr, "ping6: function not available; openssl disabled\n");
-+ exit(1);
-+#endif
- }
-
- int main(int argc, char *argv[])
+++ /dev/null
-From 6ccd3b91c18d8b13bc468ef962a9ef9dfc6c4515 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Sat, 14 Aug 2010 01:16:42 -0400
-Subject: [PATCH] tracepath: re-use printf return in print_host
-
-The printf funcs take an int for field widths, not a size_t. Also, since
-the printf funcs already return the length of chars displayed, use that
-value instead of re-calculating the length with strlen.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- tracepath.c | 11 ++++-------
- tracepath6.c | 11 ++++-------
- 2 files changed, 8 insertions(+), 14 deletions(-)
-
-diff --git a/tracepath.c b/tracepath.c
-index 81c22e9..ca84a69 100644
---- a/tracepath.c
-+++ b/tracepath.c
-@@ -68,13 +68,10 @@ void data_wait(int fd)
-
- void print_host(const char *a, const char *b, int both)
- {
-- size_t plen = 0;
-- printf("%s", a);
-- plen = strlen(a);
-- if (both) {
-- printf(" (%s)", b);
-- plen += strlen(b) + 3;
-- }
-+ int plen;
-+ plen = printf("%s", a);
-+ if (both)
-+ plen += printf(" (%s)", b);
- if (plen >= HOST_COLUMN_SIZE)
- plen = HOST_COLUMN_SIZE - 1;
- printf("%*s", HOST_COLUMN_SIZE - plen, "");
-diff --git a/tracepath6.c b/tracepath6.c
-index 5cc7424..5c2db8f 100644
---- a/tracepath6.c
-+++ b/tracepath6.c
-@@ -80,13 +80,10 @@ void data_wait(int fd)
-
- void print_host(const char *a, const char *b, int both)
- {
-- size_t plen = 0;
-- printf("%s", a);
-- plen = strlen(a);
-- if (both) {
-- printf(" (%s)", b);
-- plen += strlen(b) + 3;
-- }
-+ int plen;
-+ plen = printf("%s", a);
-+ if (both)
-+ plen += printf(" (%s)", b);
- if (plen >= HOST_COLUMN_SIZE)
- plen = HOST_COLUMN_SIZE - 1;
- printf("%*s", HOST_COLUMN_SIZE - plen, "");
---
-1.7.1.1
-
+++ /dev/null
-http://bugs.gentoo.org/332703
-
---- Makefile
-+++ Makefile
-@@ -28,10 +28,13 @@
- ping6: LDLIBS += -lidn
- endif
-
-+arping: LDLIBS += -lsysfs
-+ping6: LDLIBS += -lresolv -lcrypto
-+
- tftpd: tftpd.o tftpsubs.o
--arping: arping.o -lsysfs
-+arping: arping.o
- ping: ping.o ping_common.o
--ping6: ping6.o ping_common.o -lresolv -lcrypto
-+ping6: ping6.o ping_common.o
- ping.o ping6.o ping_common.o: ping_common.h
- tftpd.o tftpsubs.o: tftp.h
-
+++ /dev/null
-http://openwall.info/wiki/people/segoon/ping
-
---- iputils-s20101006/ping.c
-+++ iputils-s20101006/ping.c
-@@ -88,6 +88,7 @@ struct sockaddr_in whereto; /* who to pi
- int optlen = 0;
- int settos = 0; /* Set TOS, Precendence or other QOS options */
- int icmp_sock; /* socket file descriptor */
-+int using_ping_socket = 0;
- u_char outpack[0x10000];
- int maxpacket = sizeof(outpack);
-
-@@ -123,7 +124,11 @@ main(int argc, char **argv)
- char *target, hnamebuf[MAX_HOSTNAMELEN];
- char rspace[3 + 4 * NROUTES + 1]; /* record route space */
-
-- icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
-+ icmp_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP);
-+ if (icmp_sock != -1)
-+ using_ping_socket = 1;
-+ else
-+ icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
- socket_errno = errno;
-
- uid = getuid();
-@@ -377,13 +382,35 @@ main(int argc, char **argv)
- }
- }
-
-- if ((options&F_STRICTSOURCE) &&
-- bind(icmp_sock, (struct sockaddr*)&source, sizeof(source)) == -1) {
-- perror("bind");
-- exit(2);
-+ if (!using_ping_socket) {
-+ if ((options&F_STRICTSOURCE) &&
-+ bind(icmp_sock, (struct sockaddr*)&source, sizeof(source)) == -1) {
-+ perror("bind");
-+ exit(2);
-+ }
-+ } else {
-+ struct sockaddr_in sa;
-+ socklen_t sl;
-+
-+ sa.sin_family = AF_INET;
-+ sa.sin_port = 0;
-+ sa.sin_addr.s_addr = (options&F_STRICTSOURCE) ?
-+ source.sin_addr.s_addr : 0;
-+ sl = sizeof(sa);
-+
-+ if (bind(icmp_sock, (struct sockaddr *) &sa, sl) == -1) {
-+ perror("bind");
-+ exit(2);
-+ }
-+
-+ if (getsockname(icmp_sock, (struct sockaddr *) &sa, &sl) == -1) {
-+ perror("getsockname");
-+ exit(2);
-+ }
-+ ident = sa.sin_port;
- }
-
-- if (1) {
-+ if (!using_ping_socket) {
- struct icmp_filter filt;
- filt.data = ~((1<<ICMP_SOURCE_QUENCH)|
- (1<<ICMP_DEST_UNREACH)|
-@@ -398,6 +425,12 @@ main(int argc, char **argv)
- hold = 1;
- if (setsockopt(icmp_sock, SOL_IP, IP_RECVERR, (char *)&hold, sizeof(hold)))
- fprintf(stderr, "WARNING: your kernel is veeery old. No problems.\n");
-+ if (using_ping_socket) {
-+ if (setsockopt(icmp_sock, SOL_IP, IP_RECVTTL, (char *)&hold, sizeof(hold)))
-+ perror("WARNING: setsockopt(IP_RECVTTL)");
-+ if (setsockopt(icmp_sock, SOL_IP, IP_RETOPTS, (char *)&hold, sizeof(hold)))
-+ perror("WARNING: setsockopt(IP_RETOPTS)");
-+ }
-
- /* record route option */
- if (options & F_RROUTE) {
-@@ -566,6 +599,7 @@ int receive_error_msg()
- nerrors++;
- } else if (e->ee_origin == SO_EE_ORIGIN_ICMP) {
- struct sockaddr_in *sin = (struct sockaddr_in*)(e+1);
-+ int error_pkt;
-
- if (res < sizeof(icmph) ||
- target.sin_addr.s_addr != whereto.sin_addr.s_addr ||
-@@ -576,9 +610,18 @@ int receive_error_msg()
- goto out;
- }
-
-- acknowledge(ntohs(icmph.un.echo.sequence));
-+ error_pkt = (e->ee_type != ICMP_REDIRECT &&
-+ e->ee_type != ICMP_SOURCE_QUENCH);
-+ if (error_pkt) {
-+ acknowledge(ntohs(icmph.un.echo.sequence));
-+ net_errors++;
-+ nerrors++;
-+ }
-+ else {
-+ saved_errno = 0;
-+ }
-
-- if (!working_recverr) {
-+ if (!using_ping_socket && !working_recverr) {
- struct icmp_filter filt;
- working_recverr = 1;
- /* OK, it works. Add stronger filter. */
-@@ -589,15 +632,14 @@ int receive_error_msg()
- perror("\rWARNING: setsockopt(ICMP_FILTER)");
- }
-
-- net_errors++;
-- nerrors++;
- if (options & F_QUIET)
- goto out;
- if (options & F_FLOOD) {
-- write(STDOUT_FILENO, "\bE", 2);
-+ if (error_pkt)
-+ write(STDOUT_FILENO, "\bE", 2);
- } else {
- print_timestamp();
-- printf("From %s icmp_seq=%u ", pr_addr(sin->sin_addr.s_addr), ntohs(icmph.un.echo.sequence));
-+ printf("From %s: icmp_seq=%u ", pr_addr(sin->sin_addr.s_addr), ntohs(icmph.un.echo.sequence));
- pr_icmph(e->ee_type, e->ee_code, e->ee_info, NULL);
- fflush(stdout);
- }
-@@ -695,15 +737,41 @@ parse_reply(struct msghdr *msg, int cc,
- struct iphdr *ip;
- int hlen;
- int csfailed;
-+ struct cmsghdr *cmsg;
-+ int ttl;
-+ __u8 *opts;
-+ int optlen;
-
- /* Check the IP header */
- ip = (struct iphdr *)buf;
-- hlen = ip->ihl*4;
-- if (cc < hlen + 8 || ip->ihl < 5) {
-- if (options & F_VERBOSE)
-- fprintf(stderr, "ping: packet too short (%d bytes) from %s\n", cc,
-- pr_addr(from->sin_addr.s_addr));
-- return 1;
-+ if (!using_ping_socket) {
-+ hlen = ip->ihl*4;
-+ if (cc < hlen + 8 || ip->ihl < 5) {
-+ if (options & F_VERBOSE)
-+ fprintf(stderr, "ping: packet too short (%d bytes) from %s\n", cc,
-+ pr_addr(from->sin_addr.s_addr));
-+ return 1;
-+ }
-+ ttl = ip->ttl;
-+ opts = buf + sizeof(struct iphdr);
-+ optlen = hlen - sizeof(struct iphdr);
-+ } else {
-+ hlen = 0;
-+ ttl = 0;
-+ opts = buf;
-+ optlen = 0;
-+ for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) {
-+ if (cmsg->cmsg_level != SOL_IP)
-+ continue;
-+ if (cmsg->cmsg_type == IP_TTL) {
-+ if (cmsg->cmsg_len < sizeof(int))
-+ continue;
-+ ttl = *(int *) CMSG_DATA(cmsg);
-+ } else if (cmsg->cmsg_type == IP_RETOPTS) {
-+ opts = (__u8 *) CMSG_DATA(cmsg);
-+ optlen = cmsg->cmsg_len;
-+ }
-+ }
- }
-
- /* Now the ICMP part */
-@@ -716,7 +784,7 @@ parse_reply(struct msghdr *msg, int cc,
- return 1; /* 'Twas not our ECHO */
- if (gather_statistics((__u8*)icp, sizeof(*icp), cc,
- ntohs(icp->un.echo.sequence),
-- ip->ttl, 0, tv, pr_addr(from->sin_addr.s_addr),
-+ ttl, 0, tv, pr_addr(from->sin_addr.s_addr),
- pr_echo_reply))
- return 0;
- } else {
-@@ -807,7 +875,7 @@ parse_reply(struct msghdr *msg, int cc,
- }
-
- if (!(options & F_FLOOD)) {
-- pr_options(buf + sizeof(struct iphdr), hlen);
-+ pr_options(opts, optlen + sizeof(struct iphdr));
-
- if (options & F_AUDIBLE)
- putchar('\a');
-@@ -916,8 +984,7 @@ void pr_icmph(__u8 type, __u8 code, __u3
- printf("Redirect, Bad Code: %d", code);
- break;
- }
-- if (icp)
-- printf("(New nexthop: %s)\n", pr_addr(icp->un.gateway));
-+ printf("(New nexthop: %s)\n", pr_addr(icp ? icp->un.gateway : info));
- if (icp && (options & F_VERBOSE))
- pr_iph((struct iphdr*)(icp + 1));
- break;
-@@ -1217,7 +1284,7 @@ void install_filter(void)
- insns
- };
-
-- if (once)
-+ if (once || using_ping_socket)
- return;
- once = 1;
-
---- iputils-s20101006/ping_common.c
-+++ iputils-s20101006/ping_common.c
-@@ -515,7 +515,8 @@ void setup(int icmp_sock)
- *p++ = i;
- }
-
-- ident = htons(getpid() & 0xFFFF);
-+ if (!ident)
-+ ident = htons(getpid() & 0xFFFF);
-
- set_signal(SIGINT, sigexit);
- set_signal(SIGALRM, sigexit);
--- /dev/null
+From 321d64b9f94653322e678e34ac214ddb73a71db8 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Thu, 24 Jan 2013 23:32:39 -0500
+Subject: [PATCH iputils] ping6: allow disabling of openssl support
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 5 ++++-
+ iputils_md5dig.h | 4 +++-
+ ping6.c | 10 ++++++++++
+ 3 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 54e5a6d..7147f08 100644
+--- a/Makefile
++++ b/Makefile
+@@ -36,7 +36,7 @@ ARPING_DEFAULT_DEVICE=
+
+ # Libgcrypt (for MD5) for ping6 [yes|no|static]
+ USE_GCRYPT=yes
+-# Crypto library for ping6 [shared|static]
++# Crypto library for ping6 [shared|static|no]
+ USE_CRYPTO=shared
+ # Resolv library for ping6 [yes|static]
+ USE_RESOLV=yes
+@@ -63,7 +63,10 @@ ifneq ($(USE_GCRYPT),no)
+ LIB_CRYPTO = $(call FUNC_LIB,$(USE_GCRYPT),$(LDFLAG_GCRYPT))
+ DEF_CRYPTO = -DUSE_GCRYPT
+ else
++ifneq ($(USE_CRYPTO),no)
+ LIB_CRYPTO = $(call FUNC_LIB,$(USE_CRYPTO),$(LDFLAG_CRYPTO))
++ DEF_CRYPTO = -DUSE_OPENSSL
++endif
+ endif
+
+ # USE_RESOLV: LIB_RESOLV
+diff --git a/iputils_md5dig.h b/iputils_md5dig.h
+index 4cec866..d6c4d46 100644
+--- a/iputils_md5dig.h
++++ b/iputils_md5dig.h
+@@ -5,8 +5,10 @@
+ # include <stdlib.h>
+ # include <gcrypt.h>
+ # define IPUTILS_MD5DIG_LEN 16
+-#else
++# define USE_CRYPTO
++#elif defined(USE_OPENSSL)
+ # include <openssl/md5.h>
++# define USE_CRYPTO
+ #endif
+
+ #ifdef USE_GCRYPT
+diff --git a/ping6.c b/ping6.c
+index 7085f31..7b7c1af 100644
+--- a/ping6.c
++++ b/ping6.c
+@@ -324,6 +324,7 @@ static void niquery_init_nonce(void)
+ #if !PING6_NONCE_MEMORY
+ static int niquery_nonce(__u8 *nonce, int fill)
+ {
++# ifdef USE_CRYPTO
+ static __u8 digest[MD5_DIGEST_LENGTH];
+ static int seq = -1;
+
+@@ -346,6 +347,10 @@ static int niquery_nonce(__u8 *nonce, int fill)
+ return -1;
+ return ntohsp((__u16 *)nonce);
+ }
++# else
++ fprintf(stderr, "ping6: function not available; crypto disabled\n");
++ exit(3);
++# endif
+ }
+ #endif
+
+@@ -500,6 +505,7 @@ static int niquery_option_subject_addr_handler(int index, const char *arg)
+
+ static int niquery_option_subject_name_handler(int index, const char *arg)
+ {
++#ifdef USE_CRYPTO
+ static char nigroup_buf[INET6_ADDRSTRLEN + 1 + IFNAMSIZ];
+ unsigned char *dnptrs[2], **dpp, **lastdnptr;
+ int n;
+@@ -625,6 +631,10 @@ errexit:
+ free(idn);
+ free(name);
+ exit(1);
++#else
++ fprintf(stderr, "ping6: function not available; crypto disabled\n");
++ exit(3);
++#endif
+ }
+
+ int niquery_option_help_handler(int index, const char *arg)
+--
+2.3.5
+
--- /dev/null
+From e88ed3752872d7c7ca37d95eb4d434ca4d3c4eae Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 19 Apr 2014 10:39:39 -0400
+Subject: [PATCH iputils] tftpd: fix syslog setup
+
+Commit d81a44625b04d487c895473aa77af13420b7afdd added support for checking
+the set*id calls, but would call syslog() before it had called openlog().
+Move the call up earlier to fix that.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ tftpd.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tftpd.c b/tftpd.c
+index e3af2f4..7ddc8eb 100644
+--- a/tftpd.c
++++ b/tftpd.c
+@@ -109,6 +109,8 @@ int main(int ac, char **av)
+ register int n = 0;
+ int on = 1;
+
++ openlog("tftpd", LOG_PID, LOG_DAEMON);
++
+ /* Sanity. If parent forgot to setuid() on us. */
+ if (geteuid() == 0) {
+ if (setgid(65534)) {
+@@ -125,7 +127,6 @@ int main(int ac, char **av)
+ while (ac-- > 0 && n < MAXARG)
+ dirs[n++] = *av++;
+
+- openlog("tftpd", LOG_PID, LOG_DAEMON);
+ if (ioctl(0, FIONBIO, &on) < 0) {
+ syslog(LOG_ERR, "ioctl(FIONBIO): %m\n");
+ exit(1);
+--
+2.3.5
+
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-99999999.ebuild,v 1.13 2014/04/29 19:22:34 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-99999999.ebuild,v 1.14 2015/04/25 00:09:50 vapier Exp $
# For released versions, we precompile the man/html pages and store
# them in a tarball on our mirrors. This avoids ugly issues while
src_prepare() {
epatch "${FILESDIR}"/021109-uclibc-no-ether_ntohost.patch
- epatch "${FILESDIR}"/${PN}-20121221-openssl.patch #335436
- epatch "${FILESDIR}"/${PN}-20100418-so_mark.patch #335347
+ epatch "${FILESDIR}"/${PN}-99999999-openssl.patch #335436
+ epatch "${FILESDIR}"/${PN}-99999999-tftpd-syslog.patch
epatch "${FILESDIR}"/${PN}-20121221-makefile.patch
- epatch "${FILESDIR}"/${PN}-20121221-printf-size.patch
- epatch "${FILESDIR}"/${PN}-20121221-owl-pingsock.diff
use SECURITY_HAZARD && epatch "${FILESDIR}"/${PN}-20071127-nonroot-floodping.patch
use static && append-ldflags -static
}