|
@@ -575,21 +575,40 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
// validate address ranges: must be private
|
|
// validate address ranges: must be private
|
|
if network.AddressRange != "" {
|
|
if network.AddressRange != "" {
|
|
- _, _, err := net.ParseCIDR(network.AddressRange)
|
|
|
|
|
|
+ _, cidr, err := net.ParseCIDR(network.AddressRange)
|
|
if err != nil {
|
|
if err != nil {
|
|
logger.Log(0, r.Header.Get("user"), "failed to create network: ",
|
|
logger.Log(0, r.Header.Get("user"), "failed to create network: ",
|
|
err.Error())
|
|
err.Error())
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
|
|
+ } else {
|
|
|
|
+ ones, bits := cidr.Mask.Size()
|
|
|
|
+ if bits-ones <= 1 {
|
|
|
|
+ err = fmt.Errorf("cannot create network with /31 or /32 cidr")
|
|
|
|
+ logger.Log(0, r.Header.Get("user"), "failed to create network: ",
|
|
|
|
+ err.Error())
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
+ return
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
if network.AddressRange6 != "" {
|
|
if network.AddressRange6 != "" {
|
|
- _, _, err := net.ParseCIDR(network.AddressRange6)
|
|
|
|
|
|
+ _, cidr, err := net.ParseCIDR(network.AddressRange6)
|
|
if err != nil {
|
|
if err != nil {
|
|
logger.Log(0, r.Header.Get("user"), "failed to create network: ",
|
|
logger.Log(0, r.Header.Get("user"), "failed to create network: ",
|
|
err.Error())
|
|
err.Error())
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
|
|
+ } else {
|
|
|
|
+ ones, bits := cidr.Mask.Size()
|
|
|
|
+ if bits-ones <= 1 {
|
|
|
|
+ err = fmt.Errorf("cannot create network with /127 or /128 cidr")
|
|
|
|
+ logger.Log(0, r.Header.Get("user"), "failed to create network: ",
|
|
|
|
+ err.Error())
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
+ return
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|