mirror of
https://github.com/containers/podman.git
synced 2025-06-25 12:20:42 +08:00
Add parameter verification for api creation network
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
This commit is contained in:
@ -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
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user