// registerHandlers registers all the provided handlers with minicli, panicking // if any of the handlers fail to register. func registerHandlers(name string, handlers []minicli.Handler) { for i := range handlers { err := minicli.Register(&handlers[i]) if err != nil { log.Fatal("invalid handler, %s:%d -- %v", name, i, err) } } }
func init() { minicli.Register(&minicli.Handler{ Patterns: []string{ "log level <fatal,error,warn,info,debug>", }, Call: handleLog, }) }
func init() { minicli.Register(&minicli.Handler{ Patterns: []string{ "ip <add,> <index> <ip>", "ip <flush,>", }, Call: handleIP, }) go interfaceStats() }
func main() { flag.Parse() logSetup() // register CLI handlers for i := range cliHandlers { err := minicli.Register(&cliHandlers[i]) if err != nil { log.Fatal("invalid handler, `%v` -- %v", cliHandlers[i].HelpShort, err) } } var err error hostname, err = os.Hostname() if err != nil { log.Fatal("unable to get hostname: %v", hostname) } rond, err = ron.NewServer(*f_port, *f_path) if err != nil { log.Fatal("unable to create server: %v", err) } for { line, err := goreadline.Readline("rond$ ", true) if err != nil { return } command := string(line) log.Debug("got from stdin: `%s`", line) cmd, err := minicli.Compile(command) if err != nil { log.Error("%v", err) continue } // No command was returned, must have been a blank line or a comment // line. Either way, don't try to run a nil command. if cmd == nil { continue } for resp := range minicli.ProcessCommand(cmd) { minipager.DefaultPager.Page(resp.String()) errs := resp.Error() if errs != "" { fmt.Fprintln(os.Stderr, errs) } } } }
func init() { minicli.Register(&minicli.Handler{ Patterns: []string{ "bird <flush,>", "bird <commit,>", "bird <static,> <network> <nh>", "bird <ospf,> <area> <network>", }, Call: handleBird, }) birdID = getRouterID() birdData = &Bird{ Static: make(map[string]string), OSPF: make(map[string]*OSPF), RouterID: birdID, } }
func init() { minicli.Register(&minicli.Handler{ Patterns: []string{ "dnsmasq <flush,>", "dnsmasq <commit,>", "dnsmasq <dhcp,> <range,> <addr> <low> <high>", "dnsmasq <dhcp,> option <router,> <addr> <server>", "dnsmasq <dhcp,> option <dns,> <addr> <server>", "dnsmasq <dhcp,> <static,> <addr> <mac> <ip>", "dnsmasq <dns,> <ip> <host>", "dnsmasq <upstream,> <ip>", "dnsmasq <ra,> <subnet>", }, Call: handleDnsmasq, }) dnsmasqData = &Dnsmasq{ DHCP: make(map[string]*Dhcp), DNS: make(map[string][]string), RAD: make(map[string]bool), } }