Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
}
Приведенный выше код сохраним в файле netf.c. Для получения загружаемого модуля ядра создадим Makefile следующего содержания:
CC = gcc
CFLAGS = -O2 -Wall
LINUX = /usr/src/linux
MODFLAGS = -D__KERNEL__ -DMODULE -I$(LINUX)/include
netf.o: netf.c
$(CC) $(CFLAGS) $(MODFLAGS) -c netf.c
Теперь рассмотрим пользовательский процесс.
Пользовательский процесс
Пользовательский процесс после запуска открывает файл устройства и считывает из него IP-пакет, отображает данные о нем и сбрасывает содержимое пакета в файл data.file.
Заголовочные файлы:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <linux/ip.h>
int main ()
{
Структура, содержащая информацию о принятом пакете:
struct data_pkt {
u_short iph_len;
u_long len;
char buff[65536];
} data;
Структура, описывающая заголовок IP-пакета:
struct iphdr ip;
int count=0;
int fddev=0;
int d;
puts(" Ждем пакет ... ");
Обнуляем структуры:
memset(&data,0,sizeof(struct data_pkt));
memset(&ip,0,sizeof(struct iphdr));
Открываем устройство:
fddev=open("/dev/nf_ip",O_RDONLY);
if(fddev<0) {
perror("nf_ip");
exit(0);
}