|
@@ -58,66 +58,66 @@ func newKey(t *testing.T) (string, error) {
|
|
|
|
|
|
func newInfo(t *testing.T, hnd *netlink.Handle) (Sandbox, error) {
|
|
|
t.Helper()
|
|
|
- veth := &netlink.Veth{
|
|
|
+ err := hnd.LinkAdd(&netlink.Veth{
|
|
|
LinkAttrs: netlink.LinkAttrs{Name: vethName1, TxQLen: 0},
|
|
|
PeerName: vethName2,
|
|
|
- }
|
|
|
- if err := hnd.LinkAdd(veth); err != nil {
|
|
|
+ })
|
|
|
+ if 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
|
|
|
+ addr.IP = ip4
|
|
|
|
|
|
ip6, addrv6, err := net.ParseCIDR("fe80::2/64")
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- intf1.addressIPv6 = addrv6
|
|
|
- intf1.addressIPv6.IP = ip6
|
|
|
+ addrv6.IP = ip6
|
|
|
|
|
|
_, route, err := net.ParseCIDR("192.168.2.1/32")
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- intf1.routes = []*net.IPNet{route}
|
|
|
+ // Store the sandbox side pipe interface
|
|
|
+ // This is needed for cleanup on DeleteEndpoint()
|
|
|
+ intf1 := &nwIface{
|
|
|
+ srcName: vethName2,
|
|
|
+ dstName: sboxIfaceName,
|
|
|
+ address: addr,
|
|
|
+ addressIPv6: addrv6,
|
|
|
+ routes: []*net.IPNet{route},
|
|
|
+ }
|
|
|
|
|
|
- intf2 := &nwIface{}
|
|
|
- intf2.srcName = "testbridge"
|
|
|
- intf2.dstName = sboxIfaceName
|
|
|
- intf2.bridge = true
|
|
|
+ intf2 := &nwIface{
|
|
|
+ srcName: "testbridge",
|
|
|
+ dstName: sboxIfaceName,
|
|
|
+ bridge: true,
|
|
|
+ }
|
|
|
|
|
|
- veth = &netlink.Veth{
|
|
|
+ err = hnd.LinkAdd(&netlink.Veth{
|
|
|
LinkAttrs: netlink.LinkAttrs{Name: vethName3, TxQLen: 0},
|
|
|
PeerName: vethName4,
|
|
|
- }
|
|
|
-
|
|
|
- if err := hnd.LinkAdd(veth); err != nil {
|
|
|
+ })
|
|
|
+ if 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")
|
|
|
- info.gwv6 = net.ParseIP("fe80::1")
|
|
|
+ intf3 := &nwIface{
|
|
|
+ srcName: vethName4,
|
|
|
+ dstName: sboxIfaceName,
|
|
|
+ master: "testbridge",
|
|
|
+ }
|
|
|
|
|
|
- return info, nil
|
|
|
+ return &networkNamespace{
|
|
|
+ iFaces: []*nwIface{intf1, intf2, intf3},
|
|
|
+ gw: net.ParseIP("192.168.1.1"),
|
|
|
+ gwv6: net.ParseIP("fe80::1"),
|
|
|
+ }, nil
|
|
|
}
|
|
|
|
|
|
func verifySandbox(t *testing.T, s Sandbox, ifaceSuffixes []string) {
|