var ifaceName string

			if _, err := gonet.InterfaceByName("en0"); err == nil {
				ifaceName = "en0"
			} else if _, err := gonet.InterfaceByName("eth0"); err == nil {
				ifaceName = "eth0"
			} else {
				panic("Not sure which interface name to use: en0 and eth0 are not found")
			}

			routesSearcher.SearchRoutesRoutes = []Route{
				Route{
					Destination:   "fake-route1-dest",
					Gateway:       "fake-route1-gateway",
					InterfaceName: "fake-route1-iface",
				},
				Route{
					Destination:   "0.0.0.0",
					Gateway:       "fake-route2-gateway",
					InterfaceName: ifaceName,
				},
			}

			network, err := resolver.GetDefaultNetwork()
			Expect(err).ToNot(HaveOccurred())

			ip := gonet.ParseIP(network.IP)
			Expect(ip).ToNot(BeNil())
			Expect(ip).ToNot(Equal(gonet.ParseIP("0.0.0.0")))

			netmask := gonet.ParseIP(network.Netmask)
			Expect(netmask).ToNot(BeNil())
	BeforeEach(func() {
		routesSearcher = &fakenet.FakeRoutesSearcher{}
		ipResolver = &fakeip.FakeIPResolver{}
		resolver = NewDefaultNetworkResolver(routesSearcher, ipResolver)
	})

	Describe("Resolve", func() {
		Context("when default route is found", func() {
			BeforeEach(func() {
				routesSearcher.SearchRoutesRoutes = []Route{
					Route{ // non-default route
						Destination:   "non-default-route1-dest",
						Gateway:       "non-default-route1-gateway",
						InterfaceName: "non-default-route1-iface",
					},
					Route{ // route with default destination
						Destination:   "0.0.0.0",
						Gateway:       "fake-gateway",
						InterfaceName: "fake-interface-name",
					},
				}
			})

			Context("when primary IPv4 exists for the found route", func() {
				BeforeEach(func() {
					ipResolver.GetPrimaryIPv4IPNet = &gonet.IPNet{
						IP:   gonet.ParseIP("127.0.0.1"),
						Mask: gonet.CIDRMask(16, 32),
					}
				})