Merge pull request #1053 from weaveworks/437-check-address

Check addresses supplied by users for conflict with existing routes.

Fixes #437. Fixes #480.
This commit is contained in:
Matthias Radestock committed 2015-07-01 15:03:28 +01:00
commit ecfc5d091d
4 files changed
+29 -6

No files matched your search

+10 -5
View File
@@ -1,4 +1,4 @@
/* netcheck: check whether a given network overlaps with any existing routes */
/* netcheck: check whether a given network or address overlaps with any existing routes */
package main
import (
@@ -10,7 +10,7 @@ import (
)
func fatal(err error) {
fmt.Println(err)
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
@@ -19,12 +19,17 @@ func main() {
os.Exit(0)
}
ipRangeStr := os.Args[1]
_, ipnet, err := net.ParseCIDR(ipRangeStr)
cidrStr := os.Args[1]
addr, ipnet, err := net.ParseCIDR(cidrStr)
if err != nil {
fatal(err)
}
if err := weavenet.CheckNetworkFree(ipnet); err != nil {
if ipnet.IP.Equal(addr) {
err = weavenet.CheckNetworkFree(ipnet)
} else {
err = weavenet.CheckAddressOverlap(addr)
}
if err != nil {
fatal(err)
}
os.Exit(0)