Example #1
0
func (s *NetSuite) TestGetVips(c *C) {
	err := net.AddIp("192.168.0.1/32", "lo")
	c.Assert(err, IsNil)
	err = net.AddIp("192.168.0.2/32", "lo")
	c.Assert(err, IsNil)

	addrs, err := net.GetVips(s.iface)
	c.Assert(err, IsNil)

	c.Assert(len(addrs), Equals, 3)
}
Example #2
0
func (n VipMngr) Sync(state state.State) error {
	log.Debug("[vip] Syncing")
	currentVips, err := n.getCurrentVips()
	if err != nil {
		return err
	}

	stateVips := n.getStateVips(state)

	vipsToAdd := stateVips.Difference(currentVips)
	vipsToRemove := currentVips.Difference(stateVips)

	for v := range vipsToAdd.Iter() {
		vip := v.(string)
		err := net.AddIp(vip+"/32", n.iface)
		if err != nil {
			return fmt.Errorf("[vip] Error adding ip %s: %s", vip, err)
		}
		log.Debugf("[vip] Added: %s/32 to interface: %s", vip, n.iface)
	}

	for v := range vipsToRemove.Iter() {
		vip := v.(string)
		err := net.DelIp(vip+"/32", n.iface)
		if err != nil {
			return fmt.Errorf("[vip] Error deleting ip %s: %s", vip, err)
		}
		log.Debugf("[vip] Removed: %s/32 from interface: %s", vip, n.iface)
	}

	return nil
}
Example #3
0
func (a *Agent) SetupRouteVip(vip string) error {
	if err := disableArpAnnounce(); err != nil {
		return err
	}

	log.Println("setup route vip. ", vip)
	return net.AddIp(vip+"/32", a.config.Interface)
}
Example #4
0
func (a *Agent) SetupTunnelVip(vip string) error {
	if err := disableArpAnnounce(); err != nil {
		return err
	}

	if err := setupTunnelInterface(); err != nil {
		return err
	}

	return net.AddIp(vip+"/32", TUNNEL_INTERFACE)
}
Example #5
0
func (s *NetSuite) TestDelVips(c *C) {
	err := net.AddIp("192.168.0.1/32", "lo")
	c.Assert(err, IsNil)
	err = net.AddIp("192.168.0.2/32", "lo")
	c.Assert(err, IsNil)

	err = net.DelVips(s.iface)
	c.Assert(err, IsNil)

	addrs, err := net.GetVips(s.iface)
	c.Assert(err, IsNil)

	found := false
	for _, a := range addrs {
		if a.IPNet.String() == "192.168.0.1/32" || a.IPNet.String() == "192.168.0.2/32" {
			found = true
		}
	}

	c.Assert(found, Equals, false)
}
Example #6
0
func (s *NetSuite) TestDelIp(c *C) {
	err := net.AddIp("192.168.0.1/32", "lo")
	c.Assert(err, IsNil)

	err = net.DelIp("192.168.0.1/32", "lo")
	c.Assert(err, IsNil)

	addrs, err := net.GetVips(s.iface)
	c.Assert(err, IsNil)

	deleted := true
	for _, a := range addrs {
		if a.IPNet.String() == "192.168.0.1/32" {
			deleted = false
		}
	}

	c.Assert(deleted, Equals, true)
}