Exemplo n.º 1
0
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)
	}
}