当前位置: 首页 > 工具软件 > Zebra.berlios > 使用案例 >

ZEBRA命令的添加

谷梁博易
2023-12-01

ZEBRA命令的注册一共分为四种,对应四种不同的宏:

1. DEFUN(funcname,cmdname,cmd,str,helpstr)       定义命令的执行函数

2. DEFUN_NOSH(funcname,cmdname,cmdstr,helpstr)    定义vtysh不作处理的命令

3. DEFSH(daemon,cmdname,cmdstr,helpstr)                  定义在vtysh中实行的函数

4. DEFUNSH(daemon,funcname,cmdname,cmdstr,helpstr)     1,3两种情况结合

大多数情况下会需要下面的宏来定义:

DEFUN(funcname,cmdname,cmdstr,helpstr)

如配置pppoe服务器模板中的服务

DEFUN(pppoe_service_name,//命令处理函数的名字

                pppoe_service_name_cmd, //命令的名字

                "service WORD",  //命令的表现字符串

                  "configure pppoe service\n"//注释信息

                    "pppoe service name,max length 64\n"){}

install_element(PPPOE_SUBSCRIBER_NODE,&pppoe_service_name_cmd);

 

有部分命令不需要在vtysh注册的,需要用下面的函数:

DEFUN_NOSH(funcname,cmdname,cmdstr,helpstr)

如:DEFUN_NOSH(clear_console,

                clear_console_cmd,

                 "clear tty",

                  "clean the operator\n"

                    "clean operator from telnet,SSH and Console,not include operator \n"){}

install_element(ENABLE_NODE,&clear_console_cmd);

有部分命令必须在vtysh中注册,需要用下面的函数

DEFSH(daemon,cmdname,cmdstr,helpstr)

这个函数只在vtysh中使用,知识注册一个命令,没有具体的函数,使用这个在vtysh中注册的命令还需要在相应的模块使用DEFUN注册一遍。

(需补充)如

DEFSH(VTYSH_ACL,//命令发送模块

                  vtysh_show_ip_access_list_cmd,

                   "show ip access-list",

                    SHOW_STR

                   IP_STR

                    "List IP access lists\n")

有的命令除了需要在自己的模块中执行,还需要在vtysh模块中执行,这个时候在vtysh中需要用到下面的宏:

DEFUNSH(daemon,funcname,cmdname.cmdstr,helpstr)

如命令:“subscriber-template pppoe NAME”

在vtysh.c中:

DEFUNSH(VTYSH_VPDN, //发送的目标进程

                     sub_pppoe,//函数名字

                       sub_pppoe_cmd, //命令名字

                       "subscriber-template pppoe NAME",//命令字符串

                        "define subscriber template\n""template tye\n"//命令注释){}

install_element(CONFIG_NODE,&sub_pppoe_cmd);

在vpdn/pppoe_sub.c中:

DEFUN(temp_pppoe,

                temp_pppoe_cmd,

                  "subscriber-template pppoe NAME",

                  "configure subscriber-template\n"

                    "template type\n"

                        "template name,max length64\n"){}

install_element(CONFIG_NODE,&temp_pppoe_cmd);

添加完命令后,需要在hsos目录下重新编译,或者在修改的目录中编译,在VTYSH中执行make rebuild4,这种情况需要把vtysh和修改的模块拷贝到设备上。

 

 

 

 

 类似资料: