Определяются ли функционные значений Ferkley Packet Filter Filter COPCode? -- kernel поле с участием libpcap поле с участием tcpdump поле с участием bpf пол Связанный проблема

Are Berkeley Packet Filter opcode values implementation defined?


2
vote

проблема

русский

- это функция Berkeley Packet Filter Repcode значений реализации?

Я всегда думал о TCPDUMP / LibPCAP как авторитетную в Арене BPF. Я заметил, что ядро ​​Linux и TCPDAMP читают фильтры BPF по-разному. BPF Mnemonics и поведение одинаково, но фактические значения операционных ценностей кажутся разными. Я пошел смотреть на интернеты для «стандарта», но все, что я нашел, имеет мнемонику.

Английский оригинал

Are Berkeley Packet Filter opcode values implementation defined?

I always thought of tcpdump/libpcap as authoritative in the BPF arena. I noticed that the linux kernel and tcpdump read BPF filters differently. The BPF mnemonics and behavior is the same, but the actual opcode values themselves seem different. I went looking on the internets for "The Standard", but everything I've found only has mnemonics.

</div
           

Список ответов

1
 
vote
vote
Лучший ответ
 
<Р> Нет, кроме инструкции, что некоторые переводчики BPF / JITs поддержки, но другие не делают, они имеют одни и те же двоичные значения. Сравните, например, ток Libpcap PCAP / bpf.h с, по крайней мере, Linux Linux / bpf_common.h и Linux / filter.h в 3.19 ядро, и обратите внимание на комментарии в Linux / filter.h, который читает: < / р>
 <код> /*  *      Try and keep these values and structures similar to BSD, especially  *      the BPF code definitions which need to match so you can share filters  */   
<Р> и код в Libpcap, который использует тот же компилятор для генерации BPF кода для ядра Linux, то * BSD / OS X / Solaris 11 / и т.д.. Ядра, и пользовательские программы BPF переводчик, только с небольшими изменениями кода, чтобы иметь дело с выборка пакет метаданных (вместо пакетной передачи данных).
 

No, other than instructions that some BPF interpreters/JITs support but others don't, they have the same binary values. Compare, for example, the current libpcap pcap/bpf.h with, at least, the Linux linux/bpf_common.h and linux/filter.h in the 3.19 kernel, and note the comment in linux/filter.h that reads:

/*  *      Try and keep these values and structures similar to BSD, especially  *      the BPF code definitions which need to match so you can share filters  */ 

and the code in libpcap that uses the same compiler to generate BPF code for the Linux kernel, the *BSD/OS X/Solaris 11/etc. kernels, and the userland BPF interpreter, with only small code changes to deal with fetching packet metadata (rather than packet data).

</div
 
 
 
 

Связанный проблема

5  Поток FS Сегмент Регистрация Переключение между пользователем и землей ядра  ( Thread fs segment register switching between user and kernel land ) 
Как регистр регистрации сегмента FS в TEB и KPCR. Эти структуры данных сохраняются на потоках пользователя и стеке ядра? Итак, случаем случая, когда переключа...

1  Аварийное ядро ​​нарочно  ( Crash a kernel on purpose ) 
<Р> Есть ли способ, что я могу разбить ядро ​​на цели (например, паника ядра, синий экран, черный экран, или что угодно). Предположим, я могу изменить какие-ли...

4  ARM Linux и Cross Toolchain Проблема  ( Arm linux and cross toolchain issue ) 
У меня есть проблема, вероятно, с моей рукой набора инструментов, но, возможно, есть что-то другое, что я делаю не так. У меня есть китайская доска DEV QQ244...

0  R r kernel Crash в ноутбуке Jupyter, вызванные библиотекой (растровым)  ( R kernel crash in jupyter notebook caused by libraryraster ) 
У меня есть аналогичная проблема как jupyter r библиотека тетради) (dplyr) вызывает ядро Crash и r Ядро сбоит при загрузке R пакет с использованием rpy2 , ...

4  Добавление синего экрана смерти на ОС без окон  ( Adding blue screen of death to non windows os ) 
Я ищу попасть в Разработка ядра операционной системы и понятна и читала книги по эксплуатации Системы (TannenBaum), а также изучение того, как BSD и Linux р...

0  Кэширование пакетов данных  ( Caching data packets ) 
Не уверены, если это правильное место, чтобы спросить, но здесь идет .... Я реализовал клиент / сервер UDP, используя обычные розетки в Linux. (предполага...

0  Сначала приходите, сначала обслуживаемые процессы планирования  ( First come first served process scheduling ) 
У меня есть 4 процесса: <код> p1 - bursts 5, priority: 3 p2 - bursts 8, priority: 2 p3 - bursts 12, priority: 2 p4 - bursts 6, priority: 1 Предполагая, ...

1  разделение в модуле ядра  ( Division in kernel module ) 
У меня есть две целочисленные переменные, которым мне нужно разделить, чтобы работать в процентах для чего-то. У меня есть (variablea / varileb) * 100. Пробле...

2  Разработка ядер для поддержки нескольких процессоров  ( Developing kernels to support multiple cpus ) 
Я ищу попасть в эксплуатационную систему разработки ядра и решил, что мой вклад будет для расширения sanos Операционная система для поддержки нескольких осн...

1  Строительство 32-битного ядра X86 Linux  ( Building a 32 bit x86 linux kernel ) 
Я использую BuildRoot для разработки собственной индивидуальной системы Linux. Я пытаюсь построить ядро ​​для X86. Когда я пытаюсь пересечь ядро ​​компиляции,...

2  Можно ли найти соответствующую задачу_структуру со страницы Struct?  ( Is it possible to find the corresponding task struct from struct page ) 
Есть ли способ найти соответствующую структуру Task_Struct с заданной страницей структуры? Что я хочу сделать, это то, что я хочу знать, какая виртуальная маш...

2  Multi Thread .NET приложение вызывает ошибку приложения в Kernel32.dll работает на 64-битных Quad Core Windows Server  ( Multi thread net application causes application error in kernel32 dll running o ) 
У меня есть многопоточное приложение .Net, которое иногда прекращается без какого-либо сообщения. Когда я проверяю журнал, есть запись для «ошибки приложения ...

0  Оставайтесь процессами после приложения выхода на некоторые устройства  ( Remain processes after exit application on some devices ) 
Мое приложение пришло код C ++ и много Pthreads. Я закрываю приложение с <Код> exit(0); . После этого я перечислил процесс работы с <Код> adb shell ps . Эта к...

90  Linux Процесс состояний  ( Linux process states ) 
в Linux, что происходит с состоянием процесса, когда ему нужно читать блоки с диска? Это заблокировано? Если это так, как выберите другой процесс, выбранный д...

2  Методология для модернизации ядра ОС  ( Methodology for upgrading os kernel ) 
Я ищу попадание в эксплуатационную систему разработки ядра и понятно, что мой вклад будет для расширения sanos Операционная система для поддержки JDK 1.6 и ...

Связанный проблема

5  Поток FS Сегмент Регистрация Переключение между пользователем и землей ядра 
1  Аварийное ядро ​​нарочно 
4  ARM Linux и Cross Toolchain Проблема 
0  R r kernel Crash в ноутбуке Jupyter, вызванные библиотекой (растровым) 
4  Добавление синего экрана смерти на ОС без окон 
0  Кэширование пакетов данных 
0  Сначала приходите, сначала обслуживаемые процессы планирования 
1  разделение в модуле ядра 
2  Разработка ядер для поддержки нескольких процессоров 
1  Строительство 32-битного ядра X86 Linux 
2  Можно ли найти соответствующую задачу_структуру со страницы Struct? 
2  Multi Thread .NET приложение вызывает ошибку приложения в Kernel32.dll работает на 64-битных Quad Core Windows Server 
0  Оставайтесь процессами после приложения выхода на некоторые устройства 
90  Linux Процесс состояний 
2  Методология для модернизации ядра ОС