Quagga新增自己的命令

2021-09-06 10:56:51 字數 3246 閱讀 5860

參考了王斌的文件:

tip:筆者使用的版本是0.99.20

需求:在介面模式下新增一條"ip ospf enable"的命令,什麼也不做,只輸出一些字元;

quagga內的檢視是在vtysh.h定義的,位置:「vtysh/vtysh.c」,我常接觸的主要有以下:

/* vty node structures. */

static struct cmd_node bgp_node =

;static struct cmd_node inte***ce_node =

;static struct cmd_node zebra_node =

;static struct cmd_node bgp_ipv4_node =

;static struct cmd_node ospf_node =

;

我主要用介面檢視和ospf檢視,每個模式下會繫結該模式下可以使用的命令,比如,只有介面模式下才有「ip ospf hello-interval」,而ospf模式下沒有,這就是檢視和命令的關係。需要新增自己的檢視可以在這裡定義,這裡了解下即可,無需修改;

定義「ip ospf enable」命令:

具體說明見王斌的筆記,這裡我就直接加**了,首先是在"ospfd/osfp_vty.c"加defun,具體如下:

defun (inte***ce_ospf_enable,

inte***ce_ospf_enable_cmd,

"ip ospf enable",

"ip information\n"

"ospf inte***ce commands\n"

"enable ip ospf router in this inte***ce\n")

這裡和王斌筆記有點不同,如果按照作者的來,可能會看不到最後的提示資訊,這裡需要加上另外兩串字串,ip和ospf的提示資訊,如果只加上enable的提示資訊的話,那麼你看在敲上「ip ospf ?」的時候可能看到的就是空蕩蕩的,沒提示資訊。

將"ip ospf enable"和inte***ce檢視關聯起來:

需要在"ospf_vty.c"的ospf_vty_if_init函式內新增以下內容:

/*my commands*/

install_element(inte***ce_node,&inte***ce_ospf_enable_cmd);

表示該命令關聯的是inte***ce檢視,這樣就修改完畢了,先不和ospf互動,該命令啥事也不幹,只輸出乙個字串

[root@sven siwen.xwd]# netstat -nta|grep 260.

tcp 0 0 0.0.0.0:2601 0.0.0.0:* listen

tcp 0 0 0.0.0.0:2609 0.0.0.0:* listen

[root@ siwen.xwd]# telnet localhost 2609

trying ::1...

telnet: connect to address ::1: connection refused

trying 127.0.0.1...

connected to localhost.

escape character is '^]'.

hello, this is quagga (version 0.99.20).

user access verification

password:

ospfd> en

ospfd> enable

ospfd# con

ospfd# configure

% command incomplete.

ospfd# configure te

ospfd# configure terminal

ospfd(config)# int

ospfd(config)# inte***ce eth1

ospfd(config-if)# ip os

ospfd(config-if)# ip ospf

authentication enable authentication on this inte***ce

authentication-key authentication password (key)

cost inte***ce cost

dead-interval interval after which a neighbor is declared dead

enable enable ip ospf router in this inte***ce

hello-interval time between hello packets

message-digest-key message digest authentication password (key)

mtu-ignore disable mtu mismatch detection

network network type

priority router priority

retransmit-interval time between retransmitting lost link state advertisements

transmit-delay link state transmit delay

ospfd(config-if)# ip ospf en

ospfd(config-if)# ip ospf enable

% go go sven

ospfd(config-if)#

可以看到"ip ospf enable"命令已經加入進去,並且有提示資訊,執行完畢後,會輸出字串。

caffe windows新增自己的工程

caffe windows已經編譯成功 win7 1080ti cuda8.0 cudnn5.0 caffe安裝 現在需要在自己的工程中使用caffe,經過一陣子的摸索,找到了乙個稍微不那麼麻煩的方法 不需要複製各種路徑 現總結如下 說明 1 caffe windows指的是caffe的根目錄 2 ...

quagga執行緒機制及命令列使用

a quagga執行緒機制概述 quagga中的執行緒是分佇列排程的,每個佇列以乙個鍊錶的方式實現。執行緒佇列可以分成5個佇列 event timer ready read write。佇列的優先順序由高到低排列。但是,read和write佇列並不參與到優先順序的排列中,實際操作時,如果read和w...

TI BLE 新增自己UUID

可以參考demo的給 的 profile char1 的樣式 我這裡使用 char5 因為在demo中char5 沒有配置成我想要的,我就配置為 16byte的資料長度的可讀寫!gattprofile.h 檔案 1 profile parameters define profile char1 0 ...