in network/policy.go [61:86]
func GetPortMappingPolicy(externalPort int, internalPort int, protocol string, hostIp string, flags uint32) (Policy, error) {
// protocol can be passed either as a number or a name
protocolInt, err := GetPortEnumValue(protocol)
if err != nil {
return Policy{}, err
}
portMappingPolicy := hcn.PortMappingPolicySetting{
ExternalPort: uint16(externalPort),
InternalPort: uint16(internalPort),
Protocol: protocolInt,
VIP: hostIp,
Flags: hcn.NatFlags(flags),
}
rawPolicy, _ := json.Marshal(portMappingPolicy)
endpointPolicy := hcn.EndpointPolicy{
Type: hcn.PortMapping,
Settings: rawPolicy,
}
rawData, _ := json.Marshal(endpointPolicy)
return Policy{
Type: EndpointPolicy,
Data: rawData,
}, nil
}