Enviar pesquisa
Carregar
openconfigd
•
2 gostaram
•
3,213 visualizações
Masakazu Asama
Seguir
openconfigd で CLI を書くためのチュートリアル的内容。
Leia menos
Leia mais
Internet
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 14
Baixar agora
Baixar para ler offline
Recomendados
VLSI Sequential Circuits II
VLSI Sequential Circuits II
Gouthaman V
bank management system
bank management system
Aisha Aisha
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
MFC Brush
MFC Brush
Razvan Raducanu, PhD
Bank
Bank
Himanshu Arora
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
week-5x
week-5x
KITE www.kitecolleges.com
Recomendados
VLSI Sequential Circuits II
VLSI Sequential Circuits II
Gouthaman V
bank management system
bank management system
Aisha Aisha
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
MFC Brush
MFC Brush
Razvan Raducanu, PhD
Bank
Bank
Himanshu Arora
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
week-5x
week-5x
KITE www.kitecolleges.com
MFC Rect2
MFC Rect2
Razvan Raducanu, PhD
C++ programs
C++ programs
Mukund Gandrakota
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
Script
Script
DidatticaInterattiva Mobilità
Codes for diagram
Codes for diagram
Kyong Lok Yoon
Program to illustrate Switch, Goto and Exit statements.
Program to illustrate Switch, Goto and Exit statements.
harman kaur
How to send a mail from utl smtp or from back end
How to send a mail from utl smtp or from back end
Manju Nath
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
Advanced pointer
Advanced pointer
Rubal Bansal
Java Code for Sample Projects Methods
Java Code for Sample Projects Methods
jwjablonski
Unit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programming
vrgokila
Rcpp11 useR2014
Rcpp11 useR2014
Romain Francois
Debugging tips and tricks - coders on beers Santiago
Debugging tips and tricks - coders on beers Santiago
Tales Andrade
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp
Metnum
Metnum
ratnaaning
Finch + Finagle OAuth2
Finch + Finagle OAuth2
Vladimir Kostyukov
C lab programs
C lab programs
Dr. Prashant Vats
Rcpp11 genentech
Rcpp11 genentech
Romain Francois
Programming Fundamentals lecture 8
Programming Fundamentals lecture 8
REHAN IJAZ
Tugas Program C++
Tugas Program C++
Reynes E. Tekay
gRPC in Go
gRPC in Go
Almog Baku
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
KAI CHU CHUNG
Mais conteúdo relacionado
Mais procurados
MFC Rect2
MFC Rect2
Razvan Raducanu, PhD
C++ programs
C++ programs
Mukund Gandrakota
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
Script
Script
DidatticaInterattiva Mobilità
Codes for diagram
Codes for diagram
Kyong Lok Yoon
Program to illustrate Switch, Goto and Exit statements.
Program to illustrate Switch, Goto and Exit statements.
harman kaur
How to send a mail from utl smtp or from back end
How to send a mail from utl smtp or from back end
Manju Nath
Pratik Bakane C++
Pratik Bakane C++
pratikbakane
Advanced pointer
Advanced pointer
Rubal Bansal
Java Code for Sample Projects Methods
Java Code for Sample Projects Methods
jwjablonski
Unit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programming
vrgokila
Rcpp11 useR2014
Rcpp11 useR2014
Romain Francois
Debugging tips and tricks - coders on beers Santiago
Debugging tips and tricks - coders on beers Santiago
Tales Andrade
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp
Metnum
Metnum
ratnaaning
Finch + Finagle OAuth2
Finch + Finagle OAuth2
Vladimir Kostyukov
C lab programs
C lab programs
Dr. Prashant Vats
Rcpp11 genentech
Rcpp11 genentech
Romain Francois
Programming Fundamentals lecture 8
Programming Fundamentals lecture 8
REHAN IJAZ
Tugas Program C++
Tugas Program C++
Reynes E. Tekay
Mais procurados
(20)
MFC Rect2
MFC Rect2
C++ programs
C++ programs
Pratik Bakane C++
Pratik Bakane C++
Script
Script
Codes for diagram
Codes for diagram
Program to illustrate Switch, Goto and Exit statements.
Program to illustrate Switch, Goto and Exit statements.
How to send a mail from utl smtp or from back end
How to send a mail from utl smtp or from back end
Pratik Bakane C++
Pratik Bakane C++
Advanced pointer
Advanced pointer
Java Code for Sample Projects Methods
Java Code for Sample Projects Methods
Unit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programming
Rcpp11 useR2014
Rcpp11 useR2014
Debugging tips and tricks - coders on beers Santiago
Debugging tips and tricks - coders on beers Santiago
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp Shadbox ERC223
Metnum
Metnum
Finch + Finagle OAuth2
Finch + Finagle OAuth2
C lab programs
C lab programs
Rcpp11 genentech
Rcpp11 genentech
Programming Fundamentals lecture 8
Programming Fundamentals lecture 8
Tugas Program C++
Tugas Program C++
Semelhante a openconfigd
gRPC in Go
gRPC in Go
Almog Baku
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
KAI CHU CHUNG
Qt Network Explained (Portuguese)
Qt Network Explained (Portuguese)
Microsoft Mobile Developer
Config interface
Config interface
Ryan Boland
Compose Async with RxJS
Compose Async with RxJS
Kyung Yeol Kim
Uncomplicated Nomad
Uncomplicated Nomad
Bram Vogelaar
NoSQL meets Microservices
NoSQL meets Microservices
ArangoDB Database
Michael Hackstein - NoSQL meets Microservices - NoSQL matters Dublin 2015
Michael Hackstein - NoSQL meets Microservices - NoSQL matters Dublin 2015
NoSQLmatters
Qt & Webkit
Qt & Webkit
QT-day
C++
C++
Raj vardhan
NoSQL meets Microservices - Michael Hackstein
NoSQL meets Microservices - Michael Hackstein
distributed matters
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
Jim Mlodgenski
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
tienboileau
Qt Rest Server
Qt Rest Server
Vasiliy Sorokin
Василий Сорокин, Простой REST сервер на Qt с рефлексией
Василий Сорокин, Простой REST сервер на Qt с рефлексией
Sergey Platonov
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
KAI CHU CHUNG
Функции обратного вызова в C++. Виталий Ткаченко. CoreHard Spring 2019
Функции обратного вызова в C++. Виталий Ткаченко. CoreHard Spring 2019
corehard_by
Vaadin+Scala
Vaadin+Scala
Vasil Remeniuk
Call report from x++
Call report from x++
Ahmed Farag
sas aeroplan sample
sas aeroplan sample
Kenneth Miller
Semelhante a openconfigd
(20)
gRPC in Go
gRPC in Go
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
Qt Network Explained (Portuguese)
Qt Network Explained (Portuguese)
Config interface
Config interface
Compose Async with RxJS
Compose Async with RxJS
Uncomplicated Nomad
Uncomplicated Nomad
NoSQL meets Microservices
NoSQL meets Microservices
Michael Hackstein - NoSQL meets Microservices - NoSQL matters Dublin 2015
Michael Hackstein - NoSQL meets Microservices - NoSQL matters Dublin 2015
Qt & Webkit
Qt & Webkit
C++
C++
NoSQL meets Microservices - Michael Hackstein
NoSQL meets Microservices - Michael Hackstein
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Qt Rest Server
Qt Rest Server
Василий Сорокин, Простой REST сервер на Qt с рефлексией
Василий Сорокин, Простой REST сервер на Qt с рефлексией
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
Функции обратного вызова в C++. Виталий Ткаченко. CoreHard Spring 2019
Функции обратного вызова в C++. Виталий Ткаченко. CoreHard Spring 2019
Vaadin+Scala
Vaadin+Scala
Call report from x++
Call report from x++
sas aeroplan sample
sas aeroplan sample
Mais de Masakazu Asama
NETCONFとYANGの話
NETCONFとYANGの話
Masakazu Asama
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
Masakazu Asama
Linux packet-forwarding
Linux packet-forwarding
Masakazu Asama
VTI の中身
VTI の中身
Masakazu Asama
ASAMAP Update
ASAMAP Update
Masakazu Asama
ASAMAP 開発秘話
ASAMAP 開発秘話
Masakazu Asama
Vyatta 改造入門
Vyatta 改造入門
Masakazu Asama
MAP 実装してみた
MAP 実装してみた
Masakazu Asama
Mais de Masakazu Asama
(8)
NETCONFとYANGの話
NETCONFとYANGの話
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
Linux packet-forwarding
Linux packet-forwarding
VTI の中身
VTI の中身
ASAMAP Update
ASAMAP Update
ASAMAP 開発秘話
ASAMAP 開発秘話
Vyatta 改造入門
Vyatta 改造入門
MAP 実装してみた
MAP 実装してみた
Último
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
krishnachandrapal52
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
F
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
Matthew Sinclair
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
Matthew Sinclair
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
ayvbos
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Digicorns Technologies
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
HenryBriggs2
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
ydyuyu
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
meghakumariji156
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
JOHNBEBONYAP1
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
growthgrids
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
meghakumariji156
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
ydyuyu
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
rahman018755
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
pxcywzqs
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
Matthew Sinclair
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
gajnagarg
Último
(20)
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
openconfigd
1.
2.
2
3.
3
4.
4
5.
5
6.
6
7.
7 const ( QUAGGAD_MODULE =
"quaggad" QUAGGAD_PORT = 2699 ) func grpcRegisterModule(conn *grpc.ClientConn) error { client := rpc.NewRegisterClient(conn) request := &rpc.RegisterModuleRequest{ Module: QUAGGAD_MODULE, Port: fmt.Sprintf("%d", QUAGGAD_PORT), } _, err := client.DoRegisterModule(context.Background(), request) if err != nil { return err } return nil }
8.
8 var showCmdMap =
map[string]func(string) *string{ "quagga_show": quaggaShow, } func quaggaShow(line string) *string { return quaggaVtysh(line) } func grpcRegisterCommands(conn *grpc.ClientConn) { client := rpc.NewRegisterClient(conn) var showCommands []rpc.RegisterRequest json.Unmarshal([]byte(showCmdSpec), &showCommands) showParser = cmd.NewParser() for _, command := range showCommands { command.Module = QUAGGAD_MODULE command.Privilege = 1 command.Code = rpc.ExecCode_REDIRECT_SHOW _, err := client.DoRegister(context.Background(), &command) if err != nil { grpclog.Fatalf("client DoRegister failed: %v", err) } showParser.InstallLine(command.Line, showCmdMap[command.Name]) } const showCmdSpec = ` [ { "name": "quagga_show", "line": "show running-config", "mode": "exec", "helps": [ "Show running system information", "running configuration" ] }, { ...
9.
9 func (s *grpcShowServer)
Show(request *rpc.ShowRequest, stream rpc.Show_ShowServer) error { reply := &rpc.ShowReply{} _, fn, _, _ := showParser.ParseLine(request.Line) show := fn.(func(string) *string) out := show(request.Line) lines := strings.Split(*out, "n") for _, line := range lines { reply.Str = fmt.Sprintln(line) err := stream.Send(reply) if err != nil { fmt.Println(err) break } } return nil }
10.
10
11.
11
12.
12 func grpcSubscribe(conn *grpc.ClientConn)
(rpc.Config_DoConfigClient, error) { client := rpc.NewConfigClient(conn) stream, err := client.DoConfig(context.Background()) if err != nil { return nil, err } path := []string{"interfaces", "protocols", "policy"} request := &rpc.ConfigRequest{ Type: rpc.ConfigType_SUBSCRIBE_MULTI, Module: QUAGGAD_MODULE, Port: QUAGGAD_PORT, Path: path, } err = stream.Send(request) if err != nil { return nil, err } return stream, err }
13.
13 func grpcLoop() { ... for
{ conf, err := stream.Recv() ... switch conf.Type { case rpc.ConfigType_VALIDATE_START: validating = true quaggaConfigStateSync() case rpc.ConfigType_VALIDATE_END: request := &rpc.ConfigRequest{} if quaggaConfigValid(f) { request.Type = rpc.ConfigType_VALIDATE_SUCCESS } else { request.Type = rpc.ConfigType_VALIDATE_FAILED } err := stream.Send(request) validating = false case rpc.ConfigType_COMMIT_START: case rpc.ConfigType_COMMIT_END: case rpc.ConfigType_SET, rpc.ConfigType_DELETE: quaggaConfig(int(conf.Type), conf.Path) default: } }
14.
14 func quaggaInterfacesInterfaceIpv4OspfAuthenticationMd5KeyId(Cmd int,
Args cmd.Args) int { //interfaces interface WORD ipv4 ospf authentication md5 key-id WORD switch Cmd { case cmd.Set: case cmd.Delete: } return cmd.Success } func initConfig() { configParser = cmd.NewParser() configParser.InstallCmd( []string{"interfaces", "interface", "WORD", "ipv4", "ospf", "authentication", quaggaInterfacesInterfaceIpv4OspfAuthenticationMd5KeyId) ... func quaggaConfig(command int, path []string) { switch command { case cmd.Set: fmt.Println("[cmd] add", path) case cmd.Delete: fmt.Println("[cmd] del", path) } if !validating { ret, fn, args, _ := configParser.ParseCmd(path) if ret == cmd.ParseSuccess { fn.(func(int, cmd.Args) int)(command, args) } } quaggaConfigStateUpdate(command, path) }
Baixar agora