Меня интересует "Кэш маршрутизации" Мне нужно написать аналогичную функцию ядра, для получения указателя на struct rtable, или правильно вызвать __ip_route_output_key Код (Text): int __ip_route_output_key(struct net *net, struct rtable **rp, const struct flowi *flp) { unsigned hash; struct rtable *rth; if (!rt_caching(net)) goto slow_output; hash = rt_hash(flp->fl4_dst, flp->fl4_src, flp->oif, rt_genid(net)); rcu_read_lock_bh(); for (rth = rcu_dereference(rt_hash_table[hash].chain); rth; rth = rcu_dereference(rth->u.dst.rt_next)) { if (rth->fl.fl4_dst == flp->fl4_dst && rth->fl.fl4_src == flp->fl4_src && rth->fl.iif == 0 && rth->fl.oif == flp->oif && rth->fl.mark == flp->mark && !((rth->fl.fl4_tos ^ flp->fl4_tos) & (IPTOS_RT_MASK | RTO_ONLINK)) && net_eq(dev_net(rth->u.dst.dev), net) && !rt_is_expired(rth)) { dst_use(&rth->u.dst, jiffies); RT_CACHE_STAT_INC(out_hit); rcu_read_unlock_bh(); *rp = rth; return 0; } RT_CACHE_STAT_INC(out_hlist_search); } rcu_read_unlock_bh(); slow_output: return ip_route_output_slow(net, rp, flp); } Когда пишу этот код Код (Text): struct flowi *flowi_ptr; (указывает на полностью заполненную структуру) struct rtable *rtable_ptr; (просто указатель) struct net *net_ptr; net_ptr = kmalloc(sizeof(struct net), GFP_ATOMIC); //вызываю __ip_route_output_key_address(net_ptr, rtable_ptr, flowi_ptr); Вылизает OOPS Код (Text): localhost klogd: Oops: 0000 [#1] SMP Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ... localhost klogd: last sysfs file: /sys/devices/pci0000:00/0000:00:00.0/modalias Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ... localhost klogd: Process insmod (pid: 3732, ti=e5276000 task=f0a3e380 task.ti=e5276000) Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ... localhost klogd: Stack: Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ... localhost klogd: Call Trace: Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ... 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 Message from syslogd@localhost at Sun Jan 17 16:13:16 2010 ... localhost klogd: EIP: [<c0394e95>] __ip_route_output_key+0x195/0x9a0 SS:ESP 0068:e5277df8 Message from syslogd@localhost at Sun Jan 17 16:13:17 2010 ... localhost klogd: CR2: 0000000002a00189 Как правильно поулчить указатель на struct rtable из кэша маршрутизации, через __ip_route_output_key
Достаточно бросить взгляд на список сообщений в данной ветке и понять. что здесь не стоит искать ответов на такие вопросы.... Типа nasm и т.д - ДА. Но по Линуксу ядру ... ну есть сайты и форумы, и вы должны два из них знать ...
Почему? В овощном магазине овощи гороздо удобнее покупать. Жаль как раз, что они были только при социализме... В Интернете к счастью все есть, как в Греции...