<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">&lt;<a href="mailto:naydinav@gmail.com" target="_blank">naydinav@gmail.com</a>&gt;</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&#39;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
&quot;/proc/sys/net/ipv4/ping_group_range&quot; (or the owner of CAP_NET_RAW).  It
is &quot;1 0&quot; by default, meaning that nobody except root may create ping
sockets.  Setting it to &quot;100 100&quot; would gain permissions to the single
group, &quot;0 65535&quot; would enable it for the world.</pre></div></blockquote><div><br>Интересно. Я пока глубоко в этот вопрос не погружался. Думал, что это требуют все raw-сокеты.<br>Но с чем связанно требование к правам root?</div></div></div></div>