Support SCTP port mapping

Signed-off-by: Wataru Ishida <ishida.wataru@lab.ntt.co.jp>
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
This commit is contained in:
Wataru Ishida 2017-06-14 03:42:58 +00:00 committed by Akihiro Suda
parent 5730ef8ea0
commit 995006c164
3 changed files with 18 additions and 3 deletions

View File

@ -642,9 +642,12 @@ func TestDisplayablePorts(t *testing.T) {
PublicPort: 1024, PublicPort: 1024,
PrivatePort: 80, PrivatePort: 80,
Type: "udp", Type: "udp",
}, {
PrivatePort: 12345,
Type: "sctp",
}, },
}, },
"80/tcp, 80/udp, 1024/tcp, 1024/udp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp", "80/tcp, 80/udp, 1024/tcp, 1024/udp, 12345/sctp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp",
}, },
} }

View File

@ -338,10 +338,22 @@ func TestServiceContext_Ports(t *testing.T) {
PublishedPort: 62, PublishedPort: 62,
PublishMode: "ingress", PublishMode: "ingress",
}, },
{
Protocol: "sctp",
TargetPort: 97,
PublishedPort: 97,
PublishMode: "ingress",
},
{
Protocol: "sctp",
TargetPort: 98,
PublishedPort: 98,
PublishMode: "ingress",
},
}, },
}, },
}, },
} }
assert.Equal(t, "*:60-61->60-61/tcp, *:62->61/tcp, *:80-81->80/tcp, *:90-95->90-95/tcp, *:90-96->90-96/udp", c.Ports()) assert.Equal(t, "*:97-98->97-98/sctp, *:60-61->60-61/tcp, *:62->61/tcp, *:80-81->80/tcp, *:90-95->90-95/tcp, *:90-96->90-96/udp", c.Ports())
} }

View File

@ -49,7 +49,7 @@ func (p *PortOpt) Set(value string) error {
switch key { switch key {
case portOptProtocol: case portOptProtocol:
if value != string(swarm.PortConfigProtocolTCP) && value != string(swarm.PortConfigProtocolUDP) { if value != string(swarm.PortConfigProtocolTCP) && value != string(swarm.PortConfigProtocolUDP) && value != string(swarm.PortConfigProtocolSCTP) {
return fmt.Errorf("invalid protocol value %s", value) return fmt.Errorf("invalid protocol value %s", value)
} }