Zebra-VTYSH源码分析和改造(二):深入代码

 

分析Zebra-VTYSH的源码,首先从main函数开始,在ztysh-main.c中找到main函数,来进一步分析流程执行如下图所示:

 

在平时的使用中我们会发现,配置的时候有很多的视图(View),每个视图中有不同的命令可供用户输入进行配置。

这里,根据源码,视图可以认为是Node,而每一个命令称为element,他们之间的结构如下图所示:

 

 

如图中所示,用到的数据结构如下:

 

/* struct for vector */
struct _vector 
{
  unsigned int max;		/* max number of used slot */
  unsigned int alloced;		/* number of allocated slot */
  void **index;			/* index to data */
};
/* Node which has some commands and prompt string and configuration
   function pointer . */
struct cmd_node 
{
  /* Node index. */
  enum node_type node;		

  /* Prompt character at vty interface. */
  char *prompt;			

  /* Is this node's configuration goes to vtysh ? */
  int vtysh;
  
  /* Node's configuration write function */
  int (*func) (struct vty *);

  /* Vector of this node's command list. */
  vector cmd_vector;	
};

/* Structure of command element. */
struct cmd_element 
{
  char *string;			/* Command specification by string. */
  int (*func) (struct cmd_element *, struct vty *, int, char **);
  char *doc;			/* Documentation of this command. */
  int daemon;                   /* Daemon to which this command belong. */
  vector strvec;		/* Pointing out each description vector. */
  int cmdsize;			/* Command index count. */
  char *config;			/* Configuration string */
  vector subconfig;		/* Sub configuration string */
};


 

下面我们所要做的事情就是在node和element中添加我们自己的命令,如果一切顺利,稍加处理就可以在图一中的最后一步也就是loop循环中的vtysh_execute函数中来实现我们的执行过程了。

 

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
zebra-vtysh是一个命令行工具,用于管理和配置Linux上的Zebra守护进程。它提供了一种交互式的方式来管理和配置Zebra守护进程,使用户能够更方便地进行相关设置。 在使用zebra-vtysh之前,我们首先需要确保已经安装了Zebra守护进程,并且它已经在系统中运行。接下来,我们可以使用以下命令来启动zebra-vtysh: ```shell sudo vtysh ``` 启动之后,将进入zebra-vtysh的交互式界面。在这个界面下,我们可以执行各种命令来管理和配置Zebra守护进程。以下是一些常用的命令: - show:用于显示各种信息,如路由表、邻居表等。 - configure terminal:进入配置模式,可以进行各种配置操作。 - exit:退出当前模式或zebra-vtysh交互式界面。 - enable:进入特权模式,以获取更高的权限。 - interface:配置接口相关的设置,如IP地址、子网掩码等。 - router:配置路由器相关的设置,如路由协议、路由策略等。 在进入配置模式后,用户可以进行更加详细的配置操作。比如,我们可以使用以下命令来配置一个接口的IP地址: ``` interface eth0 ip address 192.168.1.1/24 ``` 配置完成后,可以使用以下命令保存配置并退出: ``` write exit ``` 通过以上的介绍,我们可以看出,zebra-vtysh使用手册主要介绍了该工具的基本使用方法和常用命令。用户可以根据需要,进一步学习和掌握更高级的配置操作。希望这个回答对你有所帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值