pkg/ip: refactored so that builds succeed on non-linux platforms
authorAithal <aithal@amazon.com>
Thu, 23 Feb 2017 17:52:13 +0000 (09:52 -0800)
committerAithal <aithal@amazon.com>
Thu, 23 Feb 2017 17:52:13 +0000 (09:52 -0800)
moved functions that depend on linux packages into a separate file and added
nop methods with a build tag for non-linux platforms in a new file.

ip/route.go
ip/route_linux.go [new file with mode: 0644]
ip/route_unspecified.go [new file with mode: 0644]

index 6c8658b..1325a47 100644 (file)
@@ -25,23 +25,3 @@ func AddDefaultRoute(gw net.IP, dev netlink.Link) error {
        _, defNet, _ := net.ParseCIDR("0.0.0.0/0")
        return AddRoute(defNet, gw, dev)
 }
-
-// AddRoute adds a universally-scoped route to a device.
-func AddRoute(ipn *net.IPNet, gw net.IP, dev netlink.Link) error {
-       return netlink.RouteAdd(&netlink.Route{
-               LinkIndex: dev.Attrs().Index,
-               Scope:     netlink.SCOPE_UNIVERSE,
-               Dst:       ipn,
-               Gw:        gw,
-       })
-}
-
-// AddHostRoute adds a host-scoped route to a device.
-func AddHostRoute(ipn *net.IPNet, gw net.IP, dev netlink.Link) error {
-       return netlink.RouteAdd(&netlink.Route{
-               LinkIndex: dev.Attrs().Index,
-               Scope:     netlink.SCOPE_HOST,
-               Dst:       ipn,
-               Gw:        gw,
-       })
-}
diff --git a/ip/route_linux.go b/ip/route_linux.go
new file mode 100644 (file)
index 0000000..8b11807
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2015-2017 CNI authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package ip
+
+import (
+       "net"
+
+       "github.com/vishvananda/netlink"
+)
+
+// AddRoute adds a universally-scoped route to a device.
+func AddRoute(ipn *net.IPNet, gw net.IP, dev netlink.Link) error {
+       return netlink.RouteAdd(&netlink.Route{
+               LinkIndex: dev.Attrs().Index,
+               Scope:     netlink.SCOPE_UNIVERSE,
+               Dst:       ipn,
+               Gw:        gw,
+       })
+}
+
+// AddHostRoute adds a host-scoped route to a device.
+func AddHostRoute(ipn *net.IPNet, gw net.IP, dev netlink.Link) error {
+       return netlink.RouteAdd(&netlink.Route{
+               LinkIndex: dev.Attrs().Index,
+               Scope:     netlink.SCOPE_HOST,
+               Dst:       ipn,
+               Gw:        gw,
+       })
+}
diff --git a/ip/route_unspecified.go b/ip/route_unspecified.go
new file mode 100644 (file)
index 0000000..7e79fde
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright 2015-2017 CNI authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// +build !linux
+
+package ip
+
+import (
+       "net"
+
+       "github.com/containernetworking/cni/pkg/types"
+       "github.com/vishvananda/netlink"
+)
+
+// AddRoute adds a universally-scoped route to a device.
+func AddRoute(ipn *net.IPNet, gw net.IP, dev netlink.Link) error {
+       return types.NotImplementedError
+}
+
+// AddHostRoute adds a host-scoped route to a device.
+func AddHostRoute(ipn *net.IPNet, gw net.IP, dev netlink.Link) error {
+       return types.NotImplementedError
+}