func newInfo(hnd *netlink.Handle, t *testing.T) (Sandbox, error) { veth := &netlink.Veth{ LinkAttrs: netlink.LinkAttrs{Name: vethName1, TxQLen: 0}, PeerName: vethName2} if err := hnd.LinkAdd(veth); err != nil { return nil, err } // Store the sandbox side pipe interface // This is needed for cleanup on DeleteEndpoint() intf1 := &nwIface{} intf1.srcName = vethName2 intf1.dstName = sboxIfaceName ip4, addr, err := net.ParseCIDR("192.168.1.100/24") if err != nil { return nil, err } intf1.address = addr intf1.address.IP = ip4 ip6, addrv6, err := net.ParseCIDR("2001:DB8::ABCD/48") if err != nil { return nil, err } intf1.addressIPv6 = addrv6 intf1.addressIPv6.IP = ip6 _, route, err := net.ParseCIDR("192.168.2.1/32") if err != nil { return nil, err } intf1.routes = []*net.IPNet{route} intf2 := &nwIface{} intf2.srcName = "testbridge" intf2.dstName = sboxIfaceName intf2.bridge = true veth = &netlink.Veth{ LinkAttrs: netlink.LinkAttrs{Name: vethName3, TxQLen: 0}, PeerName: vethName4} if err := hnd.LinkAdd(veth); err != nil { return nil, err } intf3 := &nwIface{} intf3.srcName = vethName4 intf3.dstName = sboxIfaceName intf3.master = "testbridge" info := &networkNamespace{iFaces: []*nwIface{intf1, intf2, intf3}} info.gw = net.ParseIP("192.168.1.1") // sinfo.GatewayIPv6 = net.ParseIP("2001:DB8::1") info.gwv6 = net.ParseIP("fe80::1") return info, nil }