ZEBRA命令的添加

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和修改的模块拷贝到设备上。

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值