+ -
当前位置:首页 → 问答吧 → iptables用getsockopt与kernel通信?

iptables用getsockopt与kernel通信?

时间:2010-09-03

来源:互联网

本帖最后由 xtlx2000 于 2010-09-03 17:08 编辑

今天分析到iptables的iptc_init()函数,其中
  1. 1327     sockfd = socket(TC_AF, SOCK_RAW, IPPROTO_RAW);
  2. 1328     if (sockfd < 0)
  3. 1329         return NULL;
  4. 1330
  5. 1331 retry:
  6. 1332     s = sizeof(info);
  7. 1333
  8. 1334     strcpy(info.name, tablename);
  9. /*获取规则信息*/
  10. 1335     if (getsockopt(sockfd, TC_IPPROTO, SO_GET_INFO, &info, &s) < 0) {
  11. 1336         close(sockfd);
  12. 1337         return NULL;
  13. 1338     }
复制代码
用getsockopt()来获取内容到info,这个过程没有概念,TC_IPPROTO, SO_GET_INFO是什么也没找到,因此不知道获取了什么东西到info中。
之后跟着
  1. 1340     DEBUGP("valid_hooks=0x%08x, num_entries=%u, size=%u\n",
  2. 1341         info.valid_hooks, info.num_entries, info.size);
复制代码
即info获取了
info.valid_hooks
info.num_entries
info.size
大小都代表了什么?

之后又一次调用了getsockopt
  1. 1357     if (getsockopt(h->sockfd, TC_IPPROTO, SO_GET_ENTRIES, h->entries,
  2. 1358                &tmp) < 0)
复制代码
这又是在获取什么?。。


需要分析getsockopt()吗?

作者: xtlx2000   发布时间: 2010-09-03

可以对照内核态的代码看一下

作者: Godbach   发布时间: 2010-09-03

热门下载

更多