<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Доступ к первому байту IP адреса</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html</link>
    <description>Пишу сниффер на libpcap, нужно сделать фильтр broadcast/mutsicast. Те задача сводится к сравнению первого байта адреса получения на равенство 255 (броадкаст) и диапазон 224-239.  Мой код на мой взгляд жутко неоптимален, хотя и работает. &lt;br&gt;&lt;br&gt;char destIP&#091;4&#093;;&lt;br&gt;int destIPint;&lt;br&gt;&lt;br&gt;ipq_packet_msg_t *packet = ipq_get_packet(buf);&lt;br&gt;ip_header = (struct iphdr*)(packet-&amp;gt;payload);&lt;br&gt;&lt;br&gt;strncpy(destIP, inet_ntoa(ip_header-&amp;gt;daddr), 3);&lt;br&gt;destIPint = atoi(destIP);&lt;br&gt;if ((destIPint &amp;gt;= 224 &amp;&amp; destIPint &amp;lt;= 239) &amp;#124;&amp;#124; destIPint == 255)&lt;br&gt;    printf(&quot;Multi&quot;);&lt;br&gt;else&lt;br&gt;    printf(&quot;Uni&quot;);&lt;br&gt;&lt;br&gt;По идее это можно сделать гораздо проще если обршаться напрямую к значению байта. IP адресс в заголовке находится по смешению в 16 байт. Те первый байт адреса можно получить как ip_header&#091;16&#093;. Но почему-то когда я делаю вот так&lt;br&gt;printf(&quot;&#037;x&quot;, ip_header&#091;16&#093;);  &lt;br&gt;На экране появляется какая-то чушь вместо 16ричного значения. &lt;br&gt;&lt;br&gt;Помогите, плиз.&lt;br&gt;</description>

<item>
    <title>Доступ к первому байту IP адреса (Slimm)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#7</link>
    <pubDate>Sat, 08 Dec 2007 11:42:23 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;ipq_packet_msg_t *packet = ipq_get_packet(buf); &lt;br&gt;&amp;gt;ip_header = (struct iphdr*)(packet-&amp;gt;payload);&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;strncpy(destIP, inet_ntoa(ip_header-&amp;gt;daddr), 3);&lt;br&gt;&amp;gt;destIPint = atoi(destIP); &lt;br&gt;&amp;gt;if ((destIPint &amp;gt;= 224 &amp;&amp; destIPint &amp;lt;= 239) &amp;#124;&amp;#124; destIPint == 255)&lt;br&gt;&amp;gt;    printf(&quot;Multi&quot;); &lt;br&gt;&amp;gt;else &lt;br&gt;&amp;gt;    printf(&quot;Uni&quot;); &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;а почему бы не обопщить задачу ведь адреса класса Е не исполльзуются&lt;br&gt;проверяйте первый байт на больше или равно 224 &lt;br&gt;&lt;br&gt;char *p;&lt;br&gt;int b;&lt;br&gt;&lt;br&gt;p = &amp;ip_header-&amp;gt;daddr;&lt;br&gt;b = *p;&lt;br&gt;&lt;br&gt;if(b&amp;gt;=224)&lt;br&gt;    printf(&quot;Multi&quot;); &lt;br&gt;else &lt;br&gt;    printf(&quot;Uni&quot;); &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Доступ к первому байту IP адреса (exn)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#6</link>
    <pubDate>Fri, 07 Dec 2007 19:02:23 GMT</pubDate>
    <description>http://www.google.com.ua/search?hl=ru&amp;q=&#037;D1&#037;87&#037;D1&#037;82&#037;D0&#037;BE+&#037;D1&#037;82&#037;D0&#037;B0&#037;D0&#037;BA&#037;D0&#037;BE&#037;D0&#037;B5+ip&amp;btnG=&#037;D0&#037;9F&#037;D0&#037;BE&#037;D0&#037;B8&#037;D1&#037;81&#037;D0&#037;BA+&#037;D0&#037;B2+Google&amp;meta=&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Доступ к первому байту IP адреса (geragray)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#5</link>
    <pubDate>Fri, 07 Dec 2007 15:10:20 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Проблемма решена, я же не могу напрямую обращаться к байтам ip_header тк это уже структура,&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;бред, этож С, тут можно все &lt;br&gt;&amp;gt;делаешь указатель на байт и грузишь туда адрес поля с IP адресом &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;а вообще надо работать с IP адресами посредством масок и булевых операций &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;мы даже в SQL это применяем ... &lt;br&gt;&lt;br&gt;Угу, ошибку понял. А сслыкой на пример подобного кода не поделитесь? В гугле только беркли филтры нашел - но вроде бы не совсем то.&lt;br&gt;</description>
</item>

<item>
    <title>Доступ к первому байту IP адреса (geragray)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#4</link>
    <pubDate>Fri, 07 Dec 2007 15:09:09 GMT</pubDate>
    <description>&amp;gt;strncpy(destIP, inet_ntoa(ip_header-&amp;gt;daddr), 3);&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; ааааа.. ты монстр &lt;br&gt;&lt;br&gt;Ну как умеем так и кодим, благо от меня никто тут хорошего кода не требует :) &lt;br&gt;В общем сейчас эта жуткая конструкция выглядит как &lt;br&gt;&lt;br&gt;if ((packet-&amp;gt;payload&#091;16&#093; &amp;gt;= 0xE0 &amp;&amp; packet-&amp;gt;payload&#091;16&#093; &amp;lt;= 0xEF) &amp;#124;&amp;#124; packet-&amp;gt;payload&#091;16&#093; == 0xFF)&lt;br&gt;&lt;br&gt;Вроде бы неплохо, есть идее как еще улучшить?&lt;br&gt;</description>
</item>

<item>
    <title>Доступ к первому байту IP адреса (Slimm)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#3</link>
    <pubDate>Fri, 07 Dec 2007 14:31:35 GMT</pubDate>
    <description>&amp;gt;Проблемма решена, я же не могу напрямую обращаться к байтам ip_header тк это уже структура,&lt;br&gt;&lt;br&gt;бред, этож С, тут можно все &lt;br&gt;делаешь указатель на байт и грузишь туда адрес поля с IP адресом&lt;br&gt;&lt;br&gt;а вообще надо работать с IP адресами посредством масок и булевых операций&lt;br&gt;мы даже в SQL это применяем ...&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Доступ к первому байту IP адреса (exn)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#2</link>
    <pubDate>Fri, 07 Dec 2007 14:26:57 GMT</pubDate>
    <description>strncpy(destIP, inet_ntoa(ip_header-&amp;gt;daddr), 3);&lt;br&gt;&lt;br&gt; ааааа.. ты монстр&lt;br&gt;</description>
</item>

<item>
    <title>Доступ к первому байту IP адреса (geragray)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7008.html#1</link>
    <pubDate>Fri, 07 Dec 2007 13:07:06 GMT</pubDate>
    <description>Проблемма решена, я же не могу напрямую обращаться к байтам ip_header тк это уже структура, зато packet-&amp;gt;payload&#091;16&#093; отлично работает.&lt;br&gt;</description>
</item>

</channel>
</rss>
