Welcome, anonymous (IP: 127.0.0.1). Log in or Sign up?
Blog / Index 1

ping рекомендует обновиться до Linux 2.4.9
За время, прошедшее с момента выхода третьей версии ядра Linux, все уже освоились с ошибками типа configure: error: --with-linux argument '3.0.0-15-generic' is neither a kernel version string nor a full path, однако предположение, что версия ядра обязательно должна начинаться с «2.», до сих пор вызывают смех и иронию. Определять версию ядра нужно так, как это делают настоящие, опытные программисты. Например, авторы утилиты ping.
# ping 192.168.0.5
PING 192.168.0.5 (192.168.0.5) 56(84) bytes of data.
WARNING: kernel is not very fresh, upgrade is recommended.
From 192.168.0.1: icmp_seq=2 Destination Host Unreachable
From 192.168.0.1: icmp_seq=3 Destination Host Unreachable
From 192.168.0.1: icmp_seq=4 Destination Host Unreachable
^C
--- 192.168.0.5 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5000ms
pipe 4


Пингу не нравится моё ядро! Но почему? Давайте посмотрим.
# sed -n '817,834p' < iputils-s20121221/ping.c
				error_pkt = (icp->type != ICMP_REDIRECT &&
					     icp->type != ICMP_SOURCE_QUENCH);
				if (error_pkt) {
					acknowledge(ntohs(icp1->un.echo.sequence));
					if (working_recverr) {
						return 0;
					} else {
						static int once;
						/* Sigh, IP_RECVERR for raw socket
						 * was broken until 2.4.9. So, we ignore
						 * the first error and warn on the second.
						 */
						if (once++ == 1)
							fprintf(stderr, "\rWARNING: kernel is not very fresh, upgrade is recommended.\n");
						if (once == 1)
							return 0;
					}
				}


Некогда ping'у нужно было выставлять working_recverr в 0 при версии Linux до 2.4.9. При этом авторы iputils, как настоящие джедаи, решили не полагаться на хипстерские linux/version.h и uname(2) и написали свой костыль для определения версии ядра и его способностей. Спустя десяток лет костыль слегка покривел и ping заботливо говорит мне, что моё ядро 4.0 не очень свежее, и надо бы обновиться до 2.4.9.
Author: Spoofing , @ , WWW
Published on: 2015-04-18 22:43:22
Views: 830
Comments: 0
Copyright © Spoofing. All rights reserved.