Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Реалізація мережі в операційній системі Linux

Реферат Реалізація мережі в операційній системі Linux





cp-ip версії 4 в ядрі 2.4.7

Додаток p> Після тривалих теоретичних пошуків застосуємо їх на практиці

Нашої метою буде створення зручного для користувача інтерфейсу для зазначення в пакеті підставного ip адреси (адреси якого немає у жодного нашого інтерфейсу) Я не буду показувати, то як адреси виставляються в ядрі. Зауважу тільки те що, з сокета сімейства AF_INET і типу SOCK_RAW пакет з не своєю адресою відправити начебто можна (в ядрі 2.2, щодо 2.4 невпевнений-може там є якісь перевірки). сторінки мана говорять про опцію IP_HDRINCL. Їх можна відправляти також через тип SOCK_PACKET. Але для всього цього знати код ядра не надто необхідно. Тому ми підемо іншим шляхом. p> Найбільш легкий шлях (?) зробити це через інтерфейс setsockopt. Після уважного вивчення коду функції sys_setsockopt -net/socket.c знаходимо рядки if ((sock = sockfd_lookup (fd, & err))! = NULL)

{

if (level == SOL_SOCKET)

err = sock_setsockopt (sock, level, optname, optval, optlen);

else

err = sock-> ops-> setsockopt (sock, level, optname, optval, optlen);

sockfd_put (sock);

}

return err;

}

значить нам треба шукати функцію setsockopt в коді для реалізації для типу sock_raw це файл net/ipv4/raw.c дивимося static int raw_setsockopt (struct sock * sk, int level, int optname,

char * optval, int optlen)

{

if (level! = SOL_RAW)

return ip_setsockopt (sk, level, optname, optval, optlen);

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

}

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

# ifdef CONFIG_HACKIP

case IP_HACKIP:

printk ("HACKIP: setsockopt flag % Dn ", sk-> hackflag);

sk-> hackflag = 1;

get_user (val, (int *) optval);

printk ("HACKIP: setsockopt val % Dn ", 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. */p> .................................

# ifdef CONFIG_HACKIP

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

struct ip_hac...


Назад | сторінка 12 з 13 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Teaching reading at an advanced level
  • Реферат на тему: Application of angstorm level resolution in nanotechnology
  • Реферат на тему: Legal infantility as the factor of negative influence on the level of sense ...
  • Реферат на тему: Створення базового класу &Рядок&, рядки ідентифікатора і десяткової рядка. ...
  • Реферат на тему: Опісові композіційно-мовленнєві форми в творах Т. Прохаська &З цього можна ...