<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2014-11-21 22:20 GMT+01:00 Naydin Andrey <span dir="ltr"><<a href="mailto:naydinav@gmail.com" target="_blank">naydinav@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Привет Alex. Может имеет смысл создать репозиторий на github или еще
где. Что б можно было сразу примеры-задачки сливать, собирать,
вносить правки. Я это предлагаю в контексте
<span class=""><blockquote type="cite">
<div dir="ltr">
<div>Кто что думает об этом коде? Что можно улучшить?<br>
</div>
</div>
</blockquote></span>
Что б можно было создавать бранчи с решениям, которые по мнению
конкретного взятого разработчика улучшают код. И затем обсуждать.<br>
И всегда можно будет в переписке ссылаться на нужный коммит/ветку. <br>
Это только предложение. А не условие. <br></div></blockquote><div><br>Привет.<br>Это отличная идея! Я сам хотел предложить. Кто возьмется?<br>Создайте кто-нибудь, кому не лень, мы скопируем.<br><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
<br>
Анализируя пристегнутый код письму могу только пока предложить
вариант ответа к следующему вопросу<span class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div>Кто-нибудь может ясно объяснить, почему для корректной
работы он требует права root?<br>
</div>
</div>
</blockquote></span>
Тут я немного схитрил, что б получить ответ. <br>
Рута запрашивает на <br>
sd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);<br>
<br>
А стандартный системный ping - нет. Поэтому не долго думая, слил
исходники пакета busybox (очень советую скачать всем, кто хочет в
полной мере на примере изучать разработку системного ПО) и начал
сравнивать нашей реализации Ping с тем что представлено в нем.<br>
<br>
Сокет создается там примерно так же. Но идет проверка, что если
сокет не создался, то идет проверка на права доступа со следующей
припиской.<br>
<i>* We don't have root privileges. Try SOCK_DGRAM instead.</i><i><br>
</i><i> * Linux needs net.ipv4.ping_group_range for this to
work.</i><i><br>
</i><i> * MacOSX allows ICMP_ECHO, ICMP_TSTAMP or
ICMP_MASKREQ</i><i><br>
</i><i> */</i><i><br>
</i>Гугл по запросу <i>ping_group_range<br>
<br>
Выдал такой результат.<br>
</i><br>
<pre style="color:rgb(0,0,0);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;background-color:rgb(255,255,255)">Socket(2) is restricted to the group range specified in
"/proc/sys/net/ipv4/ping_group_range" (or the owner of CAP_NET_RAW). It
is "1 0" by default, meaning that nobody except root may create ping
sockets. Setting it to "100 100" would gain permissions to the single
group, "0 65535" would enable it for the world.</pre></div></blockquote><div><br>Интересно. Я пока глубоко в этот вопрос не погружался. Думал, что это требуют все raw-сокеты.<br>Но с чем связанно требование к правам root?</div></div></div></div>