func bgpTests(ncc client.NCC) { // Display the BGP neighbors. log.Print("Getting BGP neighbors...") neighbors, err := ncc.BGPNeighbors() if err != nil { log.Fatalf("Failed to get BGP neighbors") } for _, n := range neighbors { log.Printf("- BGP neighbor %v, remote AS %d, state %v, uptime %v seconds", n.IP, n.ASN, n.BGPState, n.Uptime.Seconds()) } // Withdraw all existing network advertisements. log.Printf("Withdrawing all network advertisements") if err := ncc.BGPWithdrawAll(); err != nil { log.Fatalf("Failed to withdraw BGP advertisements: %v", err) } // Advertise and withdraw the test-anycast VIP. log.Printf("Advertising and withdrawing VIP %v", testAnycast) if err := ncc.BGPAdvertiseVIP(testAnycast); err != nil { log.Fatalf("Failed to advertise VIP %v: %v", testAnycast, err) } cfg, err := ncc.BGPConfig() if err != nil { log.Fatal("Failed to get BGP configuration") } found := false ns := fmt.Sprintf(" network %v/32", testAnycast) for _, l := range cfg { if l == ns { found = true break } } if !found { log.Fatal("Failed to find network statement") } if err := ncc.BGPWithdrawVIP(testAnycast); err != nil { log.Fatalf("Failed to withdraw VIP %v: %v", testAnycast, err) } }