Skip to content

Commit

Permalink
compat: Add subnet mask behind IP address to match Docker API
Browse files Browse the repository at this point in the history
Signed-off-by: Ambrose Chua <ambrose@hey.com>
  • Loading branch information
serverwentdown committed Nov 20, 2021
1 parent a6976c9 commit ab56a7c
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
15 changes: 12 additions & 3 deletions pkg/api/handlers/compat/networks.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package compat

import (
"encoding/json"
"fmt"
"net"
"net/http"

Expand Down Expand Up @@ -69,12 +70,20 @@ func convertLibpodNetworktoDockerNetwork(runtime *libpod.Runtime, network nettyp
return nil, err
}
if netData, ok := data.NetworkSettings.Networks[network.Name]; ok {
ipv4Address := ""
if netData.IPAddress != "" {
ipv4Address = fmt.Sprintf("%s/%d", netData.IPAddress, netData.IPPrefixLen)
}
ipv6Address := ""
if netData.GlobalIPv6Address != "" {
ipv6Address = fmt.Sprintf("%s/%d", netData.GlobalIPv6Address, netData.GlobalIPv6PrefixLen)
}
containerEndpoint := types.EndpointResource{
Name: netData.NetworkID,
Name: con.Name(),
EndpointID: netData.EndpointID,
MacAddress: netData.MacAddress,
IPv4Address: netData.IPAddress,
IPv6Address: netData.GlobalIPv6Address,
IPv4Address: ipv4Address,
IPv6Address: ipv6Address,
}
containerEndpoints[con.ID()] = containerEndpoint
}
Expand Down
27 changes: 27 additions & 0 deletions test/apiv2/35-networks.at
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,31 @@ t DELETE libpod/networks/macvlan1 200 \
.[0].Name~macvlan1 \
.[0].Err=null

#
# test networks with containers
#
podman pull $IMAGE &>/dev/null

# Ensure clean slate
podman rm -a -f &>/dev/null

# create a network
podman network create --subnet 10.10.253.0/24 --gateway 10.10.253.1 network5
t GET libpod/networks/json?filters='{"name":["network5"]}' 200 \
.[0].id~[0-9a-f]\\{64\\}
nid=$(jq -r '.[0].id' <<<"$output")
# create a pod on a network
CNAME=mynettest
podman run --network network5 --name $CNAME --ip 10.10.253.2 --mac-address 0a:01:73:78:43:18 -td $IMAGE top
t GET libpod/containers/json?all=true 200 \
.[0].Id~[0-9a-f]\\{64\\}
cid=$(jq -r '.[0].Id' <<<"$output")
# compat api inspect network
t GET networks/$nid 200 .Name="network5" \
.Containers[\"$cid\"].Name=$CNAME \
.Containers[\"$cid\"].MacAddress=0a:01:73:78:43:18 \
.Containers[\"$cid\"].IPv4Address=10.10.253.2/24
# clean the network
podman network rm -f network5

# vim: filetype=sh

0 comments on commit ab56a7c

Please sign in to comment.