WEB开发网
开发学院网络安全防火墙 iptables 源码分析 阅读

iptables 源码分析

 2007-03-07 12:42:27 来源:WEB开发网   
核心提示: 如果前面只是热身的话,那么从现在开始,iptables 源码分析(5),就进入实质性阶段了:do_command函数最后一个参数handle,是一个指向了具体表,再次获取*/if (!*handle) {/* try to insmod the module if iptc_init fa

如果前面只是热身的话,那么从现在开始,就进入实质性阶段了:

do_command函数最后一个参数handle,是一个指向了具体表,如filter、nat表的句柄,这里判断,如果handle为空,则调用iptc_init,根据table的名称,让handle指针指向相应的表的地址空间,也就是把对应表的所有信息从内核中取出来:

  /* only allocate handle if we weren't called with a handle */
  if (!*handle)
  *handle = iptc_init(*table);
  /*如果获取换败,将试着插入模块,再次获取*/
  if (!*handle) {
  /* try to insmod the module if iptc_init failed */
  iptables_insmod("ip_tables", modprobe);
  *handle = iptc_init(*table);
  /*仍然失败,则退出*/
  if (!*handle)
  exit_error(VERSION_PROBLEM,
  "can't initialize iptables table `%s': %s",
  *table, iptc_strerror(errno));
  /*继续进行一些简单的判断*/
  if (command == CMD_APPEND
  || command == CMD_DELETE
  || command == CMD_INSERT
  || command == CMD_REPLACE) {
  /*List命令不在判断之列,暂时不分析*/
  }
  /*判断命令标志,调用相关函数进行处理*/
  switch (command) {
  case CMD_LIST:
  ret = list_entries(chain,
  options&OPT_VERBOSE,
  options&OPT_NUMERIC,
  options&OPT_EXPANDED,
  options&OPT_LINENUMBERS,
  handle);
  }

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:iptables 源码 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接