一、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,它是一个用换行符来隔开的命令元素帮助信息。一般来说,命令行中有几个单独的命令元素,就有几个独立的帮助信息。