Skip to content

Commit

Permalink
adds basic check for port conflicts, needs details ironed out
Browse files Browse the repository at this point in the history
  • Loading branch information
missylbytes committed Aug 8, 2023
1 parent 531170f commit db21d04
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
7 changes: 7 additions & 0 deletions control-plane/api-gateway/binding/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,10 +235,17 @@ func validateListeners(gateway gwv1beta1.Gateway, listeners []gwv1beta1.Listener
listener: listener,
})
}
seenListenerPorts := map[int]struct{}{}

for i, listener := range listeners {
var result listenerValidationResult

if _, seen := seenListenerPorts[common.ToContainerPort(listener.Port)]; seen {
result.acceptedErr = errListenerPortUnavailable
//result.conflictedErr = err
}
seenListenerPorts[common.ToContainerPort(listener.Port)] = struct{}{}

err, refErr := validateTLS(gateway, listener.TLS, resources)
result.refErr = refErr
if err != nil {
Expand Down
11 changes: 10 additions & 1 deletion control-plane/api-gateway/binding/validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,7 @@ func TestValidateListeners(t *testing.T) {
for name, tt := range map[string]struct {
listeners []gwv1beta1.Listener
expectedAcceptedErr error
listenerIndexToTest int
}{
"valid protocol HTTP": {
listeners: []gwv1beta1.Listener{
Expand Down Expand Up @@ -563,9 +564,17 @@ func TestValidateListeners(t *testing.T) {
},
expectedAcceptedErr: errListenerPortUnavailable,
},
"conflicted port": {
listeners: []gwv1beta1.Listener{
{Protocol: gwv1beta1.TCPProtocolType, Port: 80},
{Protocol: gwv1beta1.TCPProtocolType, Port: 2080},
},
expectedAcceptedErr: errListenerPortUnavailable,
listenerIndexToTest: 1,
},
} {
t.Run(name, func(t *testing.T) {
require.Equal(t, tt.expectedAcceptedErr, validateListeners(gatewayWithFinalizer(gwv1beta1.GatewaySpec{}), tt.listeners, nil)[0].acceptedErr)
require.Equal(t, tt.expectedAcceptedErr, validateListeners(gatewayWithFinalizer(gwv1beta1.GatewaySpec{}), tt.listeners, nil)[tt.listenerIndexToTest].acceptedErr)
})
}
}
Expand Down

0 comments on commit db21d04

Please sign in to comment.