Курсовая работа: Реализация сети в операционной системе Linux

...................................

}

функция ip_setsockopt лежит в net/ipv4/ip_sockglue.c в ней идет длинный перебор опций мы остановим свой выбор на уровне SOL_IP и добавим в перебор свои строки /*HACK:>>>>>>>>>>>>>>>*/

#ifdef CONFIG_HACKIP

case IP_HACKIP:

printk("HACKIP:setsockopt flag %d\n",sk->hackflag);

sk->hackflag=1;

get_user(val,(int *) optval);

printk("HACKIP:setsockopt val %d\n",val);

sk->hackf.src_addr=val;

break;

#endif

case IP_HDRINCL:

подробнее опишем происходящие действия

printk -выводим отлабочные сообщения

Я не уверен ,но судя по всему при создании сокета вся структура обнуляется поэтому мы можем не смотреть флаг .Я добавил эту строку ,чтоб посмотреть всегда ли он равен 0 при не установленной опции а после установки при повторе он равен 1. get_user забираем значение ,подробности include/asm/uaccess.h но для всего этого нам надо добавить соответствующие поля в struct sock =======sock.h=============

.........................

#ifdef CONFIG_HACKIP

/*HACK:>>>>>>>>>>>>>>>>>>*/

struct ip_hack {

__u32 src_addr;

};

#endif

struct sock {

/* Socket demultiplex comparisons on incoming packets. */

.................................

#ifdef CONFIG_HACKIP

/*HACK:>>>>>>>>>>>>>>>>>*/

struct ip_hack hackf;

К-во Просмотров: 1532
Бесплатно скачать Курсовая работа: Реализация сети в операционной системе Linux