Никак не могу разобратся с такой вот фишкой - пишу сейчас свою прогу под фрю - она должна ловить куда, откуда и самое важное сколько пакетов (размер) ушло с тазика. Но это так, отступление. Суть такова, ковырялся в pcap - но не нашел нужных мне вещей - тобишь чудно пишет откуда куда и когда, но вот сколько - нет. Не могу отыскать функцию или использовать?
Или может вообще не к той библиотеке прицепился?
Подскажите как можно выхватить размер пакета проходящий через
устройство X?
Если актуально, то все происходит под FreeBSD5.X/4.X и ваяется все на Си
>Никак не могу разобратся с такой вот фишкой - пишу сейчас свою
>прогу под фрю - она должна ловить куда, откуда и самое
>важное сколько пакетов (размер) ушло с тазика. Но это так, отступление.
Это не отступление, а вступление.>Суть такова, ковырялся в pcap - но не нашел нужных мне
>вещей - тобишь чудно пишет откуда куда и когда, но вот
>сколько - нет. Не могу отыскать функцию или использовать?
Ты уже разобрался как чудно ? Так вот, пишет оно тебе все относительно одного пакета, так что сколько - считай сам, не стоит тут огород городить в библиотеке.>Или может вообще не к той библиотеке прицепился?
Можешь прицепиться к SNMP, но я думаю не стоит.>Подскажите как можно выхватить размер пакета проходящий через
>устройство X?
Уже запамятовал, но если вопрос остается актуальным, в информации о пакете передается его размер. Пример можешь посмотреть в исходниках trafshow (очень доступно).>Если актуально, то все происходит под FreeBSD5.X/4.X и ваяется все на Си
>Не столь актуально, хоть под Windows. Но раз уж упомянул, то в FreeBSD можешь использовать BPF (Berkeley Packet Filter) PCAP - это надстройка над этим сабжем. (man bpf)
Удачи.
Вот что мне упало в файл:
skif@server :less /var/tmp/filter_skif.file10:03:43.470994 elf.yandex.ru > xxx.net.ua: icmp: echo reply
10:03:44.201320 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20 hello 2 fdelay 15
10:03:44.327008 xxx.net.ua > elf.yandex.ru: icmp: echo request
10:03:44.450936 elf.yandex.ru > xxx.net.ua: icmp: echo reply
10:03:45.337141 xxx.net.ua > elf.yandex.ru: icmp: echo request
10:03:45.453594 elf.yandex.ru > xxx.net.ua: icmp: echo reply
10:03:46.210391 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20 hello 2 fdelay 15Вот я и не пойму как из этого вырвать размер пакета упавшего в фильтр.
>Вот что мне упало в файл:
>skif@server :less /var/tmp/filter_skif.file
>
>10:03:43.470994 elf.yandex.ru > xxx.net.ua: icmp: echo reply
>10:03:44.201320 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20
>hello 2 fdelay 15
>10:03:44.327008 xxx.net.ua > elf.yandex.ru: icmp: echo request
>10:03:44.450936 elf.yandex.ru > xxx.net.ua: icmp: echo reply
>10:03:45.337141 xxx.net.ua > elf.yandex.ru: icmp: echo request
>10:03:45.453594 elf.yandex.ru > xxx.net.ua: icmp: echo reply
>10:03:46.210391 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20
>hello 2 fdelay 15
>
>Вот я и не пойму как из этого вырвать размер пакета упавшего
>в фильтр.АХТУНГ! Ты что, файл парсишь ? Из этой информации никак, pcap_t* - это твой PCAP объект. При его инициализации ты обязан указать свой обработчик. Так вот в обработчике среди параметров присутствует указатель на пакет (я уже не помню названия структур)... Вот оттуда можно наковырять размер пакета, с заголовком и без оного. Пример смотреть в исходниках trafshow.
>АХТУНГ! Ты что, файл парсишь ? Из этой информации никак, pcap_t* -
>это твой PCAP объект. При его инициализации ты обязан указать свой
>обработчик. Так вот в обработчике среди параметров присутствует указатель на пакет
>(я уже не помню названия структур)... Вот оттуда можно наковырять размер
>пакета, с заголовком и без оного. Пример смотреть в исходниках trafshow.
>
Угу весь прикол оказался, кому интересно в функции pcap_compile, там
указывается регулярное выражение для bpf по коему идет отбор того, чего нам
надо. Блин. Кривые руки и мозги.