- 论坛徽章:
- 2
|
版本:iptc-1.2.7
函数名称为populate_cache()
static int populate_cache(TC_HANDLE_T h)
392 {
393 unsigned int i;
394 STRUCT_ENTRY *prev;
395
396 /* # chains < # rules / 2 + num builtins - 1 */
397 h->cache_chain_heads = malloc((h->new_number / 2 + 4)
398 * sizeof(struct chain_cache));
399 if (!h->cache_chain_heads) {
400 errno = ENOMEM;
401 return 0;
402 }
403
404 h->cache_num_chains = 0;
405 h->cache_num_builtins = 0;
406
407 /* Count builtins */
408 for (i = 0; i < NUMHOOKS; i++) {
409 if (h->info.valid_hooks & (1 << i))
410 h->cache_num_builtins++; ------------------这里就计算出了当前内核中指定表的链路数目
411 }
412
413 prev = NULL;
414 ENTRY_ITERATE(h->entries.entrytable, h->entries.size,
415 add_chain, h, &prev);
416
417 qsort(h->cache_chain_heads + h->cache_num_builtins, -----------为啥要排序?排序的基地址为啥不是第一条链路
418 h->cache_num_chains - h->cache_num_builtins, ----h->cache_chain_heads,而是最后一条链
419 sizeof(struct chain_cache), alphasort); ----路???
420
421 return 1;
422 }
研究过的帮忙指导下,谢谢。
|
|