Маршрутизация

Тема в разделе "WASM.UNIX", создана пользователем linuxmodule, 17 янв 2010.

  1. linuxmodule

    linuxmodule New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    25
    Меня интересует "Кэш маршрутизации"
    Мне нужно написать аналогичную функцию ядра, для получения указателя на struct rtable, или правильно вызвать __ip_route_output_key

    Код (Text):
    1. int __ip_route_output_key(struct net *net, struct rtable **rp,
    2.               const struct flowi *flp)
    3. {
    4.     unsigned hash;
    5.     struct rtable *rth;
    6.  
    7.     if (!rt_caching(net))
    8.         goto slow_output;
    9.  
    10.     hash = rt_hash(flp->fl4_dst, flp->fl4_src, flp->oif, rt_genid(net));
    11.  
    12.     rcu_read_lock_bh();
    13.     for (rth = rcu_dereference(rt_hash_table[hash].chain); rth;
    14.         rth = rcu_dereference(rth->u.dst.rt_next)) {
    15.         if (rth->fl.fl4_dst == flp->fl4_dst &&
    16.             rth->fl.fl4_src == flp->fl4_src &&
    17.             rth->fl.iif == 0 &&
    18.             rth->fl.oif == flp->oif &&
    19.             rth->fl.mark == flp->mark &&
    20.             !((rth->fl.fl4_tos ^ flp->fl4_tos) &
    21.                 (IPTOS_RT_MASK | RTO_ONLINK)) &&
    22.             net_eq(dev_net(rth->u.dst.dev), net) &&
    23.             !rt_is_expired(rth)) {
    24.             dst_use(&rth->u.dst, jiffies);
    25.             RT_CACHE_STAT_INC(out_hit);
    26.             rcu_read_unlock_bh();
    27.             *rp = rth;
    28.             return 0;
    29.         }
    30.         RT_CACHE_STAT_INC(out_hlist_search);
    31.     }
    32.     rcu_read_unlock_bh();
    33.  
    34. slow_output:
    35.     return ip_route_output_slow(net, rp, flp);
    36. }
    Когда пишу этот код
    Код (Text):
    1. struct flowi *flowi_ptr; (указывает на полностью заполненную структуру)
    2. struct rtable *rtable_ptr; (просто указатель)
    3. struct net *net_ptr;
    4. net_ptr = kmalloc(sizeof(struct net), GFP_ATOMIC);
    5.  
    6. //вызываю
    7. __ip_route_output_key_address(net_ptr, rtable_ptr, flowi_ptr);
    Вылизает OOPS
    Код (Text):
    1. localhost klogd: Oops: 0000 [#1] SMP
    2.  
    3. Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ...
    4. localhost klogd: last sysfs file: /sys/devices/pci0000:00/0000:00:00.0/modalias
    5.  
    6. Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ...
    7. localhost klogd: Process insmod (pid: 3732, ti=e5276000 task=f0a3e380 task.ti=e5276000)
    8.  
    9. Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ...
    10. localhost klogd: Stack:
    11.  
    12. Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ...
    13. localhost klogd: Call Trace:
    14.  
    15. Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ...
    16. localhost klogd: Code: 8b 4d 80 89 31 31 c9 e9 2f 01 00 00 66 90 e8 e3 20 db ff 0f b6 43 14 8b 4d a0 89 45 98 8b 13 89 55 9c 8b 41 34 8d 4d b4 8b 55 98 <8b> 40 48 83 e2 01 f7 da 83 e2 fd 89 45 84 8b 43 0c 89 45 88 8b
    17.  
    18. Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ...
    19. localhost klogd: EIP: [<c0394e95>] __ip_route_output_key+0x195/0x9a0 SS:ESP 0068:e5277df8
    20.  
    21. Message from syslogd@localhost at Sun Jan 17 16:13:17 2010 ...
    22. localhost klogd: CR2: 0000000002a00189
    Как правильно поулчить указатель на struct rtable из кэша маршрутизации, через __ip_route_output_key
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Достаточно бросить взгляд на список сообщений в данной ветке и понять. что здесь не стоит искать ответов на такие вопросы.... :) Типа nasm и т.д - ДА. Но по Линуксу ядру ... ну есть сайты и форумы, и вы должны два из них знать ...
     
  3. linuxmodule

    linuxmodule New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    25
    valterg
    Понятно ( жаль..
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Почему? В овощном магазине овощи гороздо удобнее покупать. Жаль как раз, что они были только при социализме... В Интернете к счастью все есть, как в Греции...