@@ -2,6 +2,7 @@ package elbv2
22
33import (
44 "context"
5+ "reflect"
56 "time"
67
78 awssdk "github.com/aws/aws-sdk-go/aws"
@@ -134,7 +135,8 @@ func (m *defaultListenerManager) updateSDKListenerWithSettings(ctx context.Conte
134135 return err
135136 }
136137 desiredDefaultCerts , _ := buildSDKCertificates (resLS .Spec .Certificates )
137- if ! isSDKListenerSettingsDrifted (resLS .Spec , sdkLS , desiredDefaultActions , desiredDefaultCerts ) {
138+ desiredDefaultMutualAuthentication := buildSDKMutualAuthenticationConfig (resLS .Spec .MutualAuthentication )
139+ if ! isSDKListenerSettingsDrifted (resLS .Spec , sdkLS , desiredDefaultActions , desiredDefaultCerts , desiredDefaultMutualAuthentication ) {
138140 return nil
139141 }
140142 req := buildSDKModifyListenerInput (resLS .Spec , desiredDefaultActions , desiredDefaultCerts )
@@ -246,7 +248,7 @@ func (m *defaultListenerManager) fetchSDKListenerExtraCertificateARNs(ctx contex
246248}
247249
248250func isSDKListenerSettingsDrifted (lsSpec elbv2model.ListenerSpec , sdkLS ListenerWithTags ,
249- desiredDefaultActions []* elbv2sdk.Action , desiredDefaultCerts []* elbv2sdk.Certificate ) bool {
251+ desiredDefaultActions []* elbv2sdk.Action , desiredDefaultCerts []* elbv2sdk.Certificate , desiredDefaultMutualAuthentication * elbv2sdk. MutualAuthenticationAttributes ) bool {
250252 if lsSpec .Port != awssdk .Int64Value (sdkLS .Listener .Port ) {
251253 return true
252254 }
@@ -265,6 +267,9 @@ func isSDKListenerSettingsDrifted(lsSpec elbv2model.ListenerSpec, sdkLS Listener
265267 if len (lsSpec .ALPNPolicy ) != 0 && ! cmp .Equal (lsSpec .ALPNPolicy , awssdk .StringValueSlice (sdkLS .Listener .AlpnPolicy ), cmpopts .EquateEmpty ()) {
266268 return true
267269 }
270+ if ! reflect .DeepEqual (desiredDefaultMutualAuthentication , sdkLS .Listener .MutualAuthentication ) {
271+ return true
272+ }
268273
269274 return false
270275}
@@ -289,6 +294,8 @@ func buildSDKCreateListenerInput(lsSpec elbv2model.ListenerSpec, featureGates co
289294 if len (lsSpec .ALPNPolicy ) != 0 {
290295 sdkObj .AlpnPolicy = awssdk .StringSlice (lsSpec .ALPNPolicy )
291296 }
297+ sdkObj .MutualAuthentication = buildSDKMutualAuthenticationConfig (lsSpec .MutualAuthentication )
298+
292299 return sdkObj , nil
293300}
294301
@@ -302,6 +309,8 @@ func buildSDKModifyListenerInput(lsSpec elbv2model.ListenerSpec, desiredDefaultA
302309 if len (lsSpec .ALPNPolicy ) != 0 {
303310 sdkObj .AlpnPolicy = awssdk .StringSlice (lsSpec .ALPNPolicy )
304311 }
312+ sdkObj .MutualAuthentication = buildSDKMutualAuthenticationConfig (lsSpec .MutualAuthentication )
313+
305314 return sdkObj
306315}
307316
@@ -327,6 +336,18 @@ func buildSDKCertificate(modelCert elbv2model.Certificate) *elbv2sdk.Certificate
327336 }
328337}
329338
339+ // buildSDKMutualAuthenticationConfig builds the mutual TLS authentication config for listener
340+ func buildSDKMutualAuthenticationConfig (modelMutualAuthenticationCfg * elbv2model.MutualAuthenticationAttributes ) * elbv2sdk.MutualAuthenticationAttributes {
341+ if modelMutualAuthenticationCfg == nil {
342+ return nil
343+ }
344+ return & elbv2sdk.MutualAuthenticationAttributes {
345+ IgnoreClientCertificateExpiry : modelMutualAuthenticationCfg .IgnoreClientCertificateExpiry ,
346+ Mode : awssdk .String (modelMutualAuthenticationCfg .Mode ),
347+ TrustStoreArn : modelMutualAuthenticationCfg .TrustStoreArn ,
348+ }
349+ }
350+
330351func buildResListenerStatus (sdkLS ListenerWithTags ) elbv2model.ListenerStatus {
331352 return elbv2model.ListenerStatus {
332353 ListenerARN : awssdk .StringValue (sdkLS .Listener .ListenerArn ),
0 commit comments