如何获取可以推送给客户端的选项列表?

如何获取可以推送给客户端的选项列表?

OpenVPN手册目前仅说明:

这是当前可以推送的选项的部分列表:--route、--route-gateway、--route-delay、--redirect-gateway、--ip-win32、--dhcp-option、--inactive、--ping、--ping-exit、--ping-restart、--setenv、--persist-key、--persist-tun、--echo、--comp-lzo、--socket-flags、--sndbuf、--rcvbuf

但是我如何获得可以推送给客户的完整选项列表?

答案1

通用的方法是查看代码。

方法pull_permission_mask初始化文件包含有效标志的列表(此处引用的是当前 2.3 版本):

unsigned int flags =
      OPT_P_UP
    | OPT_P_ROUTE_EXTRAS
    | OPT_P_SOCKBUF
    | OPT_P_SOCKFLAGS
    | OPT_P_SETENV
    | OPT_P_SHAPER
    | OPT_P_TIMER
    | OPT_P_COMP
    | OPT_P_PERSIST
    | OPT_P_MESSAGES
    | OPT_P_EXPLICIT_NOTIFY
    | OPT_P_ECHO
    | OPT_P_PULL_MODE
    | OPT_P_PEER_ID;

如果--route-nopull客户端未设置,则当前还接受以下标志:

flags |= (OPT_P_ROUTE | OPT_P_IPWIN32);

现在我们必须将其与以下选项进行匹配选项.c理论上,每个带有上述标志的选项VERIFY_PERMISSION都可以推送到客户端。当然,可能会出现问题与 comp-lzo 一样

作为示例,请参见 options.c 中的以下代码片段:

else if (streq (p[0], "topology") && p[1])
    {
      VERIFY_PERMISSION (OPT_P_UP);
      options->topology = parse_topology (p[1], msglevel);
    }

由于OPT_P_UP位于上述标志列表中,“拓扑”可能会被推送给客户端。

相关内容