zebra 命令定义的代码分析(DEFUN)
来源:互联网 发布:40本网络禁书txt 编辑:程序博客网 时间:2024/05/13 23:02
zebra实现命令的方法是由command.h中的一个宏来实现的
#define DEFUN(funcname,cmdname,cmdstr,helpstr)\int funcname(struct cmd_element *,struct vty*,int ,char **);\struct cmd_element cmdname=\{\cmdstr,\funcname,\helpstr\};\int funcname\(struct cmd_element *self,struct vty *vty,int argc,char **argv)
funcname:函数名称;
cmdname:注册的命令名称;
cmdstr: 实在vtydsh终端下输入的命令字符串,
helpstr:帮助信息,当输入“?”时显示
在此宏中涉及到的结构体如下:
struct cmd_element
struct cmd_element{ const char *string; /* Command specification by string. */ int (*func) (struct cmd_element *, struct vty *, int, const char *[]); const char *doc; /* Documentation of this command. */ int daemon; /* Daemon to which this command belong. */ vector strvec; /* Pointing out each description vector. */ unsigned int cmdsize; /* Command index count. */ char *config; /* Configuration string */ vector subconfig; /* Sub configuration string */ u_char attr; /* Command attributes */};
还有一个结构体struct vty 定义在vty.h中;
假设我们有下面的宏定义
DEFUN(vtysh_show_hello,vty_show_hello_cmd,"show hello","hello1\n""hello2\n"){printf("hello\n");return CMD_SUCCESS;}
根据DEFFUN宏定义,可展开如下:
int vtysh_show_hello(struct cmd_element*,struct vty*,int,char **);
struct cmd_element vty_show_hello_cmd=
{
"show hello",
"vtysh_show_hello",
"hello1\nhello2\n"
};
int vtysh_show_hello(struct cmd_element *self,struct vty *vty,int argc,char **argv)
{
printf("hello\n");
return CMD_SUCCESS;
}
0 0
- zebra 命令定义的代码分析(DEFUN)
- quagga 命令定义的代码分析(DEFUN)
- zebra代码简单分析
- zebra代码简单分析
- DEFUN宏定义
- ZEBRA命令的添加
- quagga 命令定义的代码分析
- quagga 命令定义的代码分析--从定义到实现
- Zebra命令模式分析(一) - 分析
- Zebra命令模式分析(一) - 分析
- Zebra命令模式分析(二) - 实践
- Zebra命令模式分析(二) - 实践
- Zebra命令模式分析(二)[补]
- zebra的命令存储原理和使用方法
- zebra 命令行定义
- Zebra-VTYSH源码分析和改造(二):深入代码
- Zebra 打印机校准命令
- 使用Java程序控制Barone(Zebra)进行打印的代码
- 最近几天的日志和Todos
- win声音突然变小问题
- 智能卡操作系统
- DIV position z-index 设置层级
- 关于sizeof的相关问题
- zebra 命令定义的代码分析(DEFUN)
- Programming Models并行编程环境搭建
- 小瓜'Story日记:NGUI背包警报
- OpenStreetMap初探(二)——osm的数据结构
- 14-Linux-用户和组
- OpenStreetMap初探(三)——几个重要概念
- OpenStreetMap初探(四)——地图编辑之Potlatch
- postgres of sql
- http://parallelpatterns.codeplex.com/