一、DEFUN宏定义
/* DEFUN for vty command interafce. Little bit hacky ;-). */
#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)
宏DEFUN定义了一个命令以及相关的结构和函数头。第一个元素为函数名,作为一个命令的处理函数;第二个元素为该命令对应的结构名称;第三个元素为命令行字符串;第四个元素为命令行帮助字符串。
需要注意到是第四个,helpstr,它是一个用换行符来隔开的命令元素帮助信息。一般来说,命令行中有几个单独的命令元素,就有几个独立的帮助信息。