Add parameter verification for api creation network

Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
This commit is contained in:
zhangguanzhang
2020-08-09 22:05:26 +08:00
parent 6d3075a6c7
commit d45bd6e29a
2 changed files with 36 additions and 1 deletions

View File

@ -137,6 +137,15 @@ func networkIntersect(n1, n2 *net.IPNet) bool {
// ValidateUserNetworkIsAvailable returns via an error if a network is available // ValidateUserNetworkIsAvailable returns via an error if a network is available
// to be used // to be used
func ValidateUserNetworkIsAvailable(config *config.Config, userNet *net.IPNet) error { func ValidateUserNetworkIsAvailable(config *config.Config, userNet *net.IPNet) error {
if len(userNet.IP) == 0 || len(userNet.Mask) == 0 {
return errors.Errorf("network %s's ip or mask cannot be empty", userNet.String())
}
ones, bit := userNet.Mask.Size()
if ones == 0 || bit == 0 {
return errors.Errorf("network %s's mask is invalid", userNet.String())
}
networks, err := GetNetworksFromFilesystem(config) networks, err := GetNetworksFromFilesystem(config)
if err != nil { if err != nil {
return err return err

View File

@ -3,6 +3,32 @@
# network-related tests # network-related tests
# #
t GET /networks/non-existing-network 404 t GET networks/non-existing-network 404 \
.cause='network not found'
if root; then
t POST libpod/networks/create?name=network1 '' 200 \
.Filename~.*/network1\\.conflist
# --data '{"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}}'
t POST libpod/networks/create?name=network2 '"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}' 200 \
.Filename~.*/network2\\.conflist
# test for empty mask
t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[]}' 500 \
.cause~'.*cannot be empty'
# test for invalid mask
t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[0,255,255,0]}' 500 \
.cause~'.*mask is invalid'
# clean the network
t DELETE libpod/networks/network1 200 \
.[0].Name~network1 \
.[0].Err=null
t DELETE libpod/networks/network2 200 \
.[0].Name~network2 \
.[0].Err=null
fi
# vim: filetype=sh # vim: filetype=sh