github.com/aavshr/aws-sdk-go@v1.41.3/service/networkfirewall/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package networkfirewall
     4  
     5  import (
     6  	"fmt"
     7  
     8  	"github.com/aavshr/aws-sdk-go/aws"
     9  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    10  	"github.com/aavshr/aws-sdk-go/aws/request"
    11  	"github.com/aavshr/aws-sdk-go/private/protocol"
    12  	"github.com/aavshr/aws-sdk-go/private/protocol/jsonrpc"
    13  )
    14  
    15  const opAssociateFirewallPolicy = "AssociateFirewallPolicy"
    16  
    17  // AssociateFirewallPolicyRequest generates a "aws/request.Request" representing the
    18  // client's request for the AssociateFirewallPolicy operation. The "output" return
    19  // value will be populated with the request's response once the request completes
    20  // successfully.
    21  //
    22  // Use "Send" method on the returned Request to send the API call to the service.
    23  // the "output" return value is not valid until after Send returns without error.
    24  //
    25  // See AssociateFirewallPolicy for more information on using the AssociateFirewallPolicy
    26  // API call, and error handling.
    27  //
    28  // This method is useful when you want to inject custom logic or configuration
    29  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
    30  //
    31  //
    32  //    // Example sending a request using the AssociateFirewallPolicyRequest method.
    33  //    req, resp := client.AssociateFirewallPolicyRequest(params)
    34  //
    35  //    err := req.Send()
    36  //    if err == nil { // resp is now filled
    37  //        fmt.Println(resp)
    38  //    }
    39  //
    40  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateFirewallPolicy
    41  func (c *NetworkFirewall) AssociateFirewallPolicyRequest(input *AssociateFirewallPolicyInput) (req *request.Request, output *AssociateFirewallPolicyOutput) {
    42  	op := &request.Operation{
    43  		Name:       opAssociateFirewallPolicy,
    44  		HTTPMethod: "POST",
    45  		HTTPPath:   "/",
    46  	}
    47  
    48  	if input == nil {
    49  		input = &AssociateFirewallPolicyInput{}
    50  	}
    51  
    52  	output = &AssociateFirewallPolicyOutput{}
    53  	req = c.newRequest(op, input, output)
    54  	return
    55  }
    56  
    57  // AssociateFirewallPolicy API operation for AWS Network Firewall.
    58  //
    59  // Associates a FirewallPolicy to a Firewall.
    60  //
    61  // A firewall policy defines how to monitor and manage your VPC network traffic,
    62  // using a collection of inspection rule groups and other settings. Each firewall
    63  // requires one firewall policy association, and you can use the same firewall
    64  // policy for multiple firewalls.
    65  //
    66  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    67  // with awserr.Error's Code and Message methods to get detailed information about
    68  // the error.
    69  //
    70  // See the AWS API reference guide for AWS Network Firewall's
    71  // API operation AssociateFirewallPolicy for usage and error information.
    72  //
    73  // Returned Error Types:
    74  //   * InvalidRequestException
    75  //   The operation failed because of a problem with your request. Examples include:
    76  //
    77  //      * You specified an unsupported parameter name or value.
    78  //
    79  //      * You tried to update a property with a value that isn't among the available
    80  //      types.
    81  //
    82  //      * Your request references an ARN that is malformed, or corresponds to
    83  //      a resource that isn't valid in the context of the request.
    84  //
    85  //   * InternalServerError
    86  //   Your request is valid, but Network Firewall couldn’t perform the operation
    87  //   because of a system problem. Retry your request.
    88  //
    89  //   * ResourceNotFoundException
    90  //   Unable to locate a resource using the parameters that you provided.
    91  //
    92  //   * ThrottlingException
    93  //   Unable to process the request due to throttling limitations.
    94  //
    95  //   * InvalidTokenException
    96  //   The token you provided is stale or isn't valid for the operation.
    97  //
    98  //   * InvalidOperationException
    99  //   The operation failed because it's not valid. For example, you might have
   100  //   tried to delete a rule group or firewall policy that's in use.
   101  //
   102  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateFirewallPolicy
   103  func (c *NetworkFirewall) AssociateFirewallPolicy(input *AssociateFirewallPolicyInput) (*AssociateFirewallPolicyOutput, error) {
   104  	req, out := c.AssociateFirewallPolicyRequest(input)
   105  	return out, req.Send()
   106  }
   107  
   108  // AssociateFirewallPolicyWithContext is the same as AssociateFirewallPolicy with the addition of
   109  // the ability to pass a context and additional request options.
   110  //
   111  // See AssociateFirewallPolicy for details on how to use this API operation.
   112  //
   113  // The context must be non-nil and will be used for request cancellation. If
   114  // the context is nil a panic will occur. In the future the SDK may create
   115  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   116  // for more information on using Contexts.
   117  func (c *NetworkFirewall) AssociateFirewallPolicyWithContext(ctx aws.Context, input *AssociateFirewallPolicyInput, opts ...request.Option) (*AssociateFirewallPolicyOutput, error) {
   118  	req, out := c.AssociateFirewallPolicyRequest(input)
   119  	req.SetContext(ctx)
   120  	req.ApplyOptions(opts...)
   121  	return out, req.Send()
   122  }
   123  
   124  const opAssociateSubnets = "AssociateSubnets"
   125  
   126  // AssociateSubnetsRequest generates a "aws/request.Request" representing the
   127  // client's request for the AssociateSubnets operation. The "output" return
   128  // value will be populated with the request's response once the request completes
   129  // successfully.
   130  //
   131  // Use "Send" method on the returned Request to send the API call to the service.
   132  // the "output" return value is not valid until after Send returns without error.
   133  //
   134  // See AssociateSubnets for more information on using the AssociateSubnets
   135  // API call, and error handling.
   136  //
   137  // This method is useful when you want to inject custom logic or configuration
   138  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   139  //
   140  //
   141  //    // Example sending a request using the AssociateSubnetsRequest method.
   142  //    req, resp := client.AssociateSubnetsRequest(params)
   143  //
   144  //    err := req.Send()
   145  //    if err == nil { // resp is now filled
   146  //        fmt.Println(resp)
   147  //    }
   148  //
   149  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateSubnets
   150  func (c *NetworkFirewall) AssociateSubnetsRequest(input *AssociateSubnetsInput) (req *request.Request, output *AssociateSubnetsOutput) {
   151  	op := &request.Operation{
   152  		Name:       opAssociateSubnets,
   153  		HTTPMethod: "POST",
   154  		HTTPPath:   "/",
   155  	}
   156  
   157  	if input == nil {
   158  		input = &AssociateSubnetsInput{}
   159  	}
   160  
   161  	output = &AssociateSubnetsOutput{}
   162  	req = c.newRequest(op, input, output)
   163  	return
   164  }
   165  
   166  // AssociateSubnets API operation for AWS Network Firewall.
   167  //
   168  // Associates the specified subnets in the Amazon VPC to the firewall. You can
   169  // specify one subnet for each of the Availability Zones that the VPC spans.
   170  //
   171  // This request creates an AWS Network Firewall firewall endpoint in each of
   172  // the subnets. To enable the firewall's protections, you must also modify the
   173  // VPC's route tables for each subnet's Availability Zone, to redirect the traffic
   174  // that's coming into and going out of the zone through the firewall endpoint.
   175  //
   176  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   177  // with awserr.Error's Code and Message methods to get detailed information about
   178  // the error.
   179  //
   180  // See the AWS API reference guide for AWS Network Firewall's
   181  // API operation AssociateSubnets for usage and error information.
   182  //
   183  // Returned Error Types:
   184  //   * InvalidRequestException
   185  //   The operation failed because of a problem with your request. Examples include:
   186  //
   187  //      * You specified an unsupported parameter name or value.
   188  //
   189  //      * You tried to update a property with a value that isn't among the available
   190  //      types.
   191  //
   192  //      * Your request references an ARN that is malformed, or corresponds to
   193  //      a resource that isn't valid in the context of the request.
   194  //
   195  //   * InternalServerError
   196  //   Your request is valid, but Network Firewall couldn’t perform the operation
   197  //   because of a system problem. Retry your request.
   198  //
   199  //   * ResourceNotFoundException
   200  //   Unable to locate a resource using the parameters that you provided.
   201  //
   202  //   * ThrottlingException
   203  //   Unable to process the request due to throttling limitations.
   204  //
   205  //   * InvalidTokenException
   206  //   The token you provided is stale or isn't valid for the operation.
   207  //
   208  //   * InvalidOperationException
   209  //   The operation failed because it's not valid. For example, you might have
   210  //   tried to delete a rule group or firewall policy that's in use.
   211  //
   212  //   * InsufficientCapacityException
   213  //   AWS doesn't currently have enough available capacity to fulfill your request.
   214  //   Try your request later.
   215  //
   216  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateSubnets
   217  func (c *NetworkFirewall) AssociateSubnets(input *AssociateSubnetsInput) (*AssociateSubnetsOutput, error) {
   218  	req, out := c.AssociateSubnetsRequest(input)
   219  	return out, req.Send()
   220  }
   221  
   222  // AssociateSubnetsWithContext is the same as AssociateSubnets with the addition of
   223  // the ability to pass a context and additional request options.
   224  //
   225  // See AssociateSubnets for details on how to use this API operation.
   226  //
   227  // The context must be non-nil and will be used for request cancellation. If
   228  // the context is nil a panic will occur. In the future the SDK may create
   229  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   230  // for more information on using Contexts.
   231  func (c *NetworkFirewall) AssociateSubnetsWithContext(ctx aws.Context, input *AssociateSubnetsInput, opts ...request.Option) (*AssociateSubnetsOutput, error) {
   232  	req, out := c.AssociateSubnetsRequest(input)
   233  	req.SetContext(ctx)
   234  	req.ApplyOptions(opts...)
   235  	return out, req.Send()
   236  }
   237  
   238  const opCreateFirewall = "CreateFirewall"
   239  
   240  // CreateFirewallRequest generates a "aws/request.Request" representing the
   241  // client's request for the CreateFirewall operation. The "output" return
   242  // value will be populated with the request's response once the request completes
   243  // successfully.
   244  //
   245  // Use "Send" method on the returned Request to send the API call to the service.
   246  // the "output" return value is not valid until after Send returns without error.
   247  //
   248  // See CreateFirewall for more information on using the CreateFirewall
   249  // API call, and error handling.
   250  //
   251  // This method is useful when you want to inject custom logic or configuration
   252  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   253  //
   254  //
   255  //    // Example sending a request using the CreateFirewallRequest method.
   256  //    req, resp := client.CreateFirewallRequest(params)
   257  //
   258  //    err := req.Send()
   259  //    if err == nil { // resp is now filled
   260  //        fmt.Println(resp)
   261  //    }
   262  //
   263  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewall
   264  func (c *NetworkFirewall) CreateFirewallRequest(input *CreateFirewallInput) (req *request.Request, output *CreateFirewallOutput) {
   265  	op := &request.Operation{
   266  		Name:       opCreateFirewall,
   267  		HTTPMethod: "POST",
   268  		HTTPPath:   "/",
   269  	}
   270  
   271  	if input == nil {
   272  		input = &CreateFirewallInput{}
   273  	}
   274  
   275  	output = &CreateFirewallOutput{}
   276  	req = c.newRequest(op, input, output)
   277  	return
   278  }
   279  
   280  // CreateFirewall API operation for AWS Network Firewall.
   281  //
   282  // Creates an AWS Network Firewall Firewall and accompanying FirewallStatus
   283  // for a VPC.
   284  //
   285  // The firewall defines the configuration settings for an AWS Network Firewall
   286  // firewall. The settings that you can define at creation include the firewall
   287  // policy, the subnets in your VPC to use for the firewall endpoints, and any
   288  // tags that are attached to the firewall AWS resource.
   289  //
   290  // After you create a firewall, you can provide additional settings, like the
   291  // logging configuration.
   292  //
   293  // To update the settings for a firewall, you use the operations that apply
   294  // to the settings themselves, for example UpdateLoggingConfiguration, AssociateSubnets,
   295  // and UpdateFirewallDeleteProtection.
   296  //
   297  // To manage a firewall's tags, use the standard AWS resource tagging operations,
   298  // ListTagsForResource, TagResource, and UntagResource.
   299  //
   300  // To retrieve information about firewalls, use ListFirewalls and DescribeFirewall.
   301  //
   302  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   303  // with awserr.Error's Code and Message methods to get detailed information about
   304  // the error.
   305  //
   306  // See the AWS API reference guide for AWS Network Firewall's
   307  // API operation CreateFirewall for usage and error information.
   308  //
   309  // Returned Error Types:
   310  //   * InvalidRequestException
   311  //   The operation failed because of a problem with your request. Examples include:
   312  //
   313  //      * You specified an unsupported parameter name or value.
   314  //
   315  //      * You tried to update a property with a value that isn't among the available
   316  //      types.
   317  //
   318  //      * Your request references an ARN that is malformed, or corresponds to
   319  //      a resource that isn't valid in the context of the request.
   320  //
   321  //   * LimitExceededException
   322  //   Unable to perform the operation because doing so would violate a limit setting.
   323  //
   324  //   * InternalServerError
   325  //   Your request is valid, but Network Firewall couldn’t perform the operation
   326  //   because of a system problem. Retry your request.
   327  //
   328  //   * ThrottlingException
   329  //   Unable to process the request due to throttling limitations.
   330  //
   331  //   * InsufficientCapacityException
   332  //   AWS doesn't currently have enough available capacity to fulfill your request.
   333  //   Try your request later.
   334  //
   335  //   * InvalidOperationException
   336  //   The operation failed because it's not valid. For example, you might have
   337  //   tried to delete a rule group or firewall policy that's in use.
   338  //
   339  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewall
   340  func (c *NetworkFirewall) CreateFirewall(input *CreateFirewallInput) (*CreateFirewallOutput, error) {
   341  	req, out := c.CreateFirewallRequest(input)
   342  	return out, req.Send()
   343  }
   344  
   345  // CreateFirewallWithContext is the same as CreateFirewall with the addition of
   346  // the ability to pass a context and additional request options.
   347  //
   348  // See CreateFirewall for details on how to use this API operation.
   349  //
   350  // The context must be non-nil and will be used for request cancellation. If
   351  // the context is nil a panic will occur. In the future the SDK may create
   352  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   353  // for more information on using Contexts.
   354  func (c *NetworkFirewall) CreateFirewallWithContext(ctx aws.Context, input *CreateFirewallInput, opts ...request.Option) (*CreateFirewallOutput, error) {
   355  	req, out := c.CreateFirewallRequest(input)
   356  	req.SetContext(ctx)
   357  	req.ApplyOptions(opts...)
   358  	return out, req.Send()
   359  }
   360  
   361  const opCreateFirewallPolicy = "CreateFirewallPolicy"
   362  
   363  // CreateFirewallPolicyRequest generates a "aws/request.Request" representing the
   364  // client's request for the CreateFirewallPolicy operation. The "output" return
   365  // value will be populated with the request's response once the request completes
   366  // successfully.
   367  //
   368  // Use "Send" method on the returned Request to send the API call to the service.
   369  // the "output" return value is not valid until after Send returns without error.
   370  //
   371  // See CreateFirewallPolicy for more information on using the CreateFirewallPolicy
   372  // API call, and error handling.
   373  //
   374  // This method is useful when you want to inject custom logic or configuration
   375  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   376  //
   377  //
   378  //    // Example sending a request using the CreateFirewallPolicyRequest method.
   379  //    req, resp := client.CreateFirewallPolicyRequest(params)
   380  //
   381  //    err := req.Send()
   382  //    if err == nil { // resp is now filled
   383  //        fmt.Println(resp)
   384  //    }
   385  //
   386  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewallPolicy
   387  func (c *NetworkFirewall) CreateFirewallPolicyRequest(input *CreateFirewallPolicyInput) (req *request.Request, output *CreateFirewallPolicyOutput) {
   388  	op := &request.Operation{
   389  		Name:       opCreateFirewallPolicy,
   390  		HTTPMethod: "POST",
   391  		HTTPPath:   "/",
   392  	}
   393  
   394  	if input == nil {
   395  		input = &CreateFirewallPolicyInput{}
   396  	}
   397  
   398  	output = &CreateFirewallPolicyOutput{}
   399  	req = c.newRequest(op, input, output)
   400  	return
   401  }
   402  
   403  // CreateFirewallPolicy API operation for AWS Network Firewall.
   404  //
   405  // Creates the firewall policy for the firewall according to the specifications.
   406  //
   407  // An AWS Network Firewall firewall policy defines the behavior of a firewall,
   408  // in a collection of stateless and stateful rule groups and other settings.
   409  // You can use one firewall policy for multiple firewalls.
   410  //
   411  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   412  // with awserr.Error's Code and Message methods to get detailed information about
   413  // the error.
   414  //
   415  // See the AWS API reference guide for AWS Network Firewall's
   416  // API operation CreateFirewallPolicy for usage and error information.
   417  //
   418  // Returned Error Types:
   419  //   * LimitExceededException
   420  //   Unable to perform the operation because doing so would violate a limit setting.
   421  //
   422  //   * InvalidRequestException
   423  //   The operation failed because of a problem with your request. Examples include:
   424  //
   425  //      * You specified an unsupported parameter name or value.
   426  //
   427  //      * You tried to update a property with a value that isn't among the available
   428  //      types.
   429  //
   430  //      * Your request references an ARN that is malformed, or corresponds to
   431  //      a resource that isn't valid in the context of the request.
   432  //
   433  //   * ThrottlingException
   434  //   Unable to process the request due to throttling limitations.
   435  //
   436  //   * InternalServerError
   437  //   Your request is valid, but Network Firewall couldn’t perform the operation
   438  //   because of a system problem. Retry your request.
   439  //
   440  //   * InsufficientCapacityException
   441  //   AWS doesn't currently have enough available capacity to fulfill your request.
   442  //   Try your request later.
   443  //
   444  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewallPolicy
   445  func (c *NetworkFirewall) CreateFirewallPolicy(input *CreateFirewallPolicyInput) (*CreateFirewallPolicyOutput, error) {
   446  	req, out := c.CreateFirewallPolicyRequest(input)
   447  	return out, req.Send()
   448  }
   449  
   450  // CreateFirewallPolicyWithContext is the same as CreateFirewallPolicy with the addition of
   451  // the ability to pass a context and additional request options.
   452  //
   453  // See CreateFirewallPolicy for details on how to use this API operation.
   454  //
   455  // The context must be non-nil and will be used for request cancellation. If
   456  // the context is nil a panic will occur. In the future the SDK may create
   457  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   458  // for more information on using Contexts.
   459  func (c *NetworkFirewall) CreateFirewallPolicyWithContext(ctx aws.Context, input *CreateFirewallPolicyInput, opts ...request.Option) (*CreateFirewallPolicyOutput, error) {
   460  	req, out := c.CreateFirewallPolicyRequest(input)
   461  	req.SetContext(ctx)
   462  	req.ApplyOptions(opts...)
   463  	return out, req.Send()
   464  }
   465  
   466  const opCreateRuleGroup = "CreateRuleGroup"
   467  
   468  // CreateRuleGroupRequest generates a "aws/request.Request" representing the
   469  // client's request for the CreateRuleGroup operation. The "output" return
   470  // value will be populated with the request's response once the request completes
   471  // successfully.
   472  //
   473  // Use "Send" method on the returned Request to send the API call to the service.
   474  // the "output" return value is not valid until after Send returns without error.
   475  //
   476  // See CreateRuleGroup for more information on using the CreateRuleGroup
   477  // API call, and error handling.
   478  //
   479  // This method is useful when you want to inject custom logic or configuration
   480  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   481  //
   482  //
   483  //    // Example sending a request using the CreateRuleGroupRequest method.
   484  //    req, resp := client.CreateRuleGroupRequest(params)
   485  //
   486  //    err := req.Send()
   487  //    if err == nil { // resp is now filled
   488  //        fmt.Println(resp)
   489  //    }
   490  //
   491  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateRuleGroup
   492  func (c *NetworkFirewall) CreateRuleGroupRequest(input *CreateRuleGroupInput) (req *request.Request, output *CreateRuleGroupOutput) {
   493  	op := &request.Operation{
   494  		Name:       opCreateRuleGroup,
   495  		HTTPMethod: "POST",
   496  		HTTPPath:   "/",
   497  	}
   498  
   499  	if input == nil {
   500  		input = &CreateRuleGroupInput{}
   501  	}
   502  
   503  	output = &CreateRuleGroupOutput{}
   504  	req = c.newRequest(op, input, output)
   505  	return
   506  }
   507  
   508  // CreateRuleGroup API operation for AWS Network Firewall.
   509  //
   510  // Creates the specified stateless or stateful rule group, which includes the
   511  // rules for network traffic inspection, a capacity setting, and tags.
   512  //
   513  // You provide your rule group specification in your request using either RuleGroup
   514  // or Rules.
   515  //
   516  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   517  // with awserr.Error's Code and Message methods to get detailed information about
   518  // the error.
   519  //
   520  // See the AWS API reference guide for AWS Network Firewall's
   521  // API operation CreateRuleGroup for usage and error information.
   522  //
   523  // Returned Error Types:
   524  //   * LimitExceededException
   525  //   Unable to perform the operation because doing so would violate a limit setting.
   526  //
   527  //   * InvalidRequestException
   528  //   The operation failed because of a problem with your request. Examples include:
   529  //
   530  //      * You specified an unsupported parameter name or value.
   531  //
   532  //      * You tried to update a property with a value that isn't among the available
   533  //      types.
   534  //
   535  //      * Your request references an ARN that is malformed, or corresponds to
   536  //      a resource that isn't valid in the context of the request.
   537  //
   538  //   * ThrottlingException
   539  //   Unable to process the request due to throttling limitations.
   540  //
   541  //   * InternalServerError
   542  //   Your request is valid, but Network Firewall couldn’t perform the operation
   543  //   because of a system problem. Retry your request.
   544  //
   545  //   * InsufficientCapacityException
   546  //   AWS doesn't currently have enough available capacity to fulfill your request.
   547  //   Try your request later.
   548  //
   549  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateRuleGroup
   550  func (c *NetworkFirewall) CreateRuleGroup(input *CreateRuleGroupInput) (*CreateRuleGroupOutput, error) {
   551  	req, out := c.CreateRuleGroupRequest(input)
   552  	return out, req.Send()
   553  }
   554  
   555  // CreateRuleGroupWithContext is the same as CreateRuleGroup with the addition of
   556  // the ability to pass a context and additional request options.
   557  //
   558  // See CreateRuleGroup for details on how to use this API operation.
   559  //
   560  // The context must be non-nil and will be used for request cancellation. If
   561  // the context is nil a panic will occur. In the future the SDK may create
   562  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   563  // for more information on using Contexts.
   564  func (c *NetworkFirewall) CreateRuleGroupWithContext(ctx aws.Context, input *CreateRuleGroupInput, opts ...request.Option) (*CreateRuleGroupOutput, error) {
   565  	req, out := c.CreateRuleGroupRequest(input)
   566  	req.SetContext(ctx)
   567  	req.ApplyOptions(opts...)
   568  	return out, req.Send()
   569  }
   570  
   571  const opDeleteFirewall = "DeleteFirewall"
   572  
   573  // DeleteFirewallRequest generates a "aws/request.Request" representing the
   574  // client's request for the DeleteFirewall operation. The "output" return
   575  // value will be populated with the request's response once the request completes
   576  // successfully.
   577  //
   578  // Use "Send" method on the returned Request to send the API call to the service.
   579  // the "output" return value is not valid until after Send returns without error.
   580  //
   581  // See DeleteFirewall for more information on using the DeleteFirewall
   582  // API call, and error handling.
   583  //
   584  // This method is useful when you want to inject custom logic or configuration
   585  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   586  //
   587  //
   588  //    // Example sending a request using the DeleteFirewallRequest method.
   589  //    req, resp := client.DeleteFirewallRequest(params)
   590  //
   591  //    err := req.Send()
   592  //    if err == nil { // resp is now filled
   593  //        fmt.Println(resp)
   594  //    }
   595  //
   596  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewall
   597  func (c *NetworkFirewall) DeleteFirewallRequest(input *DeleteFirewallInput) (req *request.Request, output *DeleteFirewallOutput) {
   598  	op := &request.Operation{
   599  		Name:       opDeleteFirewall,
   600  		HTTPMethod: "POST",
   601  		HTTPPath:   "/",
   602  	}
   603  
   604  	if input == nil {
   605  		input = &DeleteFirewallInput{}
   606  	}
   607  
   608  	output = &DeleteFirewallOutput{}
   609  	req = c.newRequest(op, input, output)
   610  	return
   611  }
   612  
   613  // DeleteFirewall API operation for AWS Network Firewall.
   614  //
   615  // Deletes the specified Firewall and its FirewallStatus. This operation requires
   616  // the firewall's DeleteProtection flag to be FALSE. You can't revert this operation.
   617  //
   618  // You can check whether a firewall is in use by reviewing the route tables
   619  // for the Availability Zones where you have firewall subnet mappings. Retrieve
   620  // the subnet mappings by calling DescribeFirewall. You define and update the
   621  // route tables through Amazon VPC. As needed, update the route tables for the
   622  // zones to remove the firewall endpoints. When the route tables no longer use
   623  // the firewall endpoints, you can remove the firewall safely.
   624  //
   625  // To delete a firewall, remove the delete protection if you need to using UpdateFirewallDeleteProtection,
   626  // then delete the firewall by calling DeleteFirewall.
   627  //
   628  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   629  // with awserr.Error's Code and Message methods to get detailed information about
   630  // the error.
   631  //
   632  // See the AWS API reference guide for AWS Network Firewall's
   633  // API operation DeleteFirewall for usage and error information.
   634  //
   635  // Returned Error Types:
   636  //   * InvalidRequestException
   637  //   The operation failed because of a problem with your request. Examples include:
   638  //
   639  //      * You specified an unsupported parameter name or value.
   640  //
   641  //      * You tried to update a property with a value that isn't among the available
   642  //      types.
   643  //
   644  //      * Your request references an ARN that is malformed, or corresponds to
   645  //      a resource that isn't valid in the context of the request.
   646  //
   647  //   * InternalServerError
   648  //   Your request is valid, but Network Firewall couldn’t perform the operation
   649  //   because of a system problem. Retry your request.
   650  //
   651  //   * ResourceNotFoundException
   652  //   Unable to locate a resource using the parameters that you provided.
   653  //
   654  //   * ThrottlingException
   655  //   Unable to process the request due to throttling limitations.
   656  //
   657  //   * UnsupportedOperationException
   658  //   The operation you requested isn't supported by Network Firewall.
   659  //
   660  //   * InvalidOperationException
   661  //   The operation failed because it's not valid. For example, you might have
   662  //   tried to delete a rule group or firewall policy that's in use.
   663  //
   664  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewall
   665  func (c *NetworkFirewall) DeleteFirewall(input *DeleteFirewallInput) (*DeleteFirewallOutput, error) {
   666  	req, out := c.DeleteFirewallRequest(input)
   667  	return out, req.Send()
   668  }
   669  
   670  // DeleteFirewallWithContext is the same as DeleteFirewall with the addition of
   671  // the ability to pass a context and additional request options.
   672  //
   673  // See DeleteFirewall for details on how to use this API operation.
   674  //
   675  // The context must be non-nil and will be used for request cancellation. If
   676  // the context is nil a panic will occur. In the future the SDK may create
   677  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   678  // for more information on using Contexts.
   679  func (c *NetworkFirewall) DeleteFirewallWithContext(ctx aws.Context, input *DeleteFirewallInput, opts ...request.Option) (*DeleteFirewallOutput, error) {
   680  	req, out := c.DeleteFirewallRequest(input)
   681  	req.SetContext(ctx)
   682  	req.ApplyOptions(opts...)
   683  	return out, req.Send()
   684  }
   685  
   686  const opDeleteFirewallPolicy = "DeleteFirewallPolicy"
   687  
   688  // DeleteFirewallPolicyRequest generates a "aws/request.Request" representing the
   689  // client's request for the DeleteFirewallPolicy operation. The "output" return
   690  // value will be populated with the request's response once the request completes
   691  // successfully.
   692  //
   693  // Use "Send" method on the returned Request to send the API call to the service.
   694  // the "output" return value is not valid until after Send returns without error.
   695  //
   696  // See DeleteFirewallPolicy for more information on using the DeleteFirewallPolicy
   697  // API call, and error handling.
   698  //
   699  // This method is useful when you want to inject custom logic or configuration
   700  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   701  //
   702  //
   703  //    // Example sending a request using the DeleteFirewallPolicyRequest method.
   704  //    req, resp := client.DeleteFirewallPolicyRequest(params)
   705  //
   706  //    err := req.Send()
   707  //    if err == nil { // resp is now filled
   708  //        fmt.Println(resp)
   709  //    }
   710  //
   711  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewallPolicy
   712  func (c *NetworkFirewall) DeleteFirewallPolicyRequest(input *DeleteFirewallPolicyInput) (req *request.Request, output *DeleteFirewallPolicyOutput) {
   713  	op := &request.Operation{
   714  		Name:       opDeleteFirewallPolicy,
   715  		HTTPMethod: "POST",
   716  		HTTPPath:   "/",
   717  	}
   718  
   719  	if input == nil {
   720  		input = &DeleteFirewallPolicyInput{}
   721  	}
   722  
   723  	output = &DeleteFirewallPolicyOutput{}
   724  	req = c.newRequest(op, input, output)
   725  	return
   726  }
   727  
   728  // DeleteFirewallPolicy API operation for AWS Network Firewall.
   729  //
   730  // Deletes the specified FirewallPolicy.
   731  //
   732  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   733  // with awserr.Error's Code and Message methods to get detailed information about
   734  // the error.
   735  //
   736  // See the AWS API reference guide for AWS Network Firewall's
   737  // API operation DeleteFirewallPolicy for usage and error information.
   738  //
   739  // Returned Error Types:
   740  //   * InvalidRequestException
   741  //   The operation failed because of a problem with your request. Examples include:
   742  //
   743  //      * You specified an unsupported parameter name or value.
   744  //
   745  //      * You tried to update a property with a value that isn't among the available
   746  //      types.
   747  //
   748  //      * Your request references an ARN that is malformed, or corresponds to
   749  //      a resource that isn't valid in the context of the request.
   750  //
   751  //   * ResourceNotFoundException
   752  //   Unable to locate a resource using the parameters that you provided.
   753  //
   754  //   * ThrottlingException
   755  //   Unable to process the request due to throttling limitations.
   756  //
   757  //   * InternalServerError
   758  //   Your request is valid, but Network Firewall couldn’t perform the operation
   759  //   because of a system problem. Retry your request.
   760  //
   761  //   * UnsupportedOperationException
   762  //   The operation you requested isn't supported by Network Firewall.
   763  //
   764  //   * InvalidOperationException
   765  //   The operation failed because it's not valid. For example, you might have
   766  //   tried to delete a rule group or firewall policy that's in use.
   767  //
   768  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewallPolicy
   769  func (c *NetworkFirewall) DeleteFirewallPolicy(input *DeleteFirewallPolicyInput) (*DeleteFirewallPolicyOutput, error) {
   770  	req, out := c.DeleteFirewallPolicyRequest(input)
   771  	return out, req.Send()
   772  }
   773  
   774  // DeleteFirewallPolicyWithContext is the same as DeleteFirewallPolicy with the addition of
   775  // the ability to pass a context and additional request options.
   776  //
   777  // See DeleteFirewallPolicy for details on how to use this API operation.
   778  //
   779  // The context must be non-nil and will be used for request cancellation. If
   780  // the context is nil a panic will occur. In the future the SDK may create
   781  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   782  // for more information on using Contexts.
   783  func (c *NetworkFirewall) DeleteFirewallPolicyWithContext(ctx aws.Context, input *DeleteFirewallPolicyInput, opts ...request.Option) (*DeleteFirewallPolicyOutput, error) {
   784  	req, out := c.DeleteFirewallPolicyRequest(input)
   785  	req.SetContext(ctx)
   786  	req.ApplyOptions(opts...)
   787  	return out, req.Send()
   788  }
   789  
   790  const opDeleteResourcePolicy = "DeleteResourcePolicy"
   791  
   792  // DeleteResourcePolicyRequest generates a "aws/request.Request" representing the
   793  // client's request for the DeleteResourcePolicy operation. The "output" return
   794  // value will be populated with the request's response once the request completes
   795  // successfully.
   796  //
   797  // Use "Send" method on the returned Request to send the API call to the service.
   798  // the "output" return value is not valid until after Send returns without error.
   799  //
   800  // See DeleteResourcePolicy for more information on using the DeleteResourcePolicy
   801  // API call, and error handling.
   802  //
   803  // This method is useful when you want to inject custom logic or configuration
   804  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   805  //
   806  //
   807  //    // Example sending a request using the DeleteResourcePolicyRequest method.
   808  //    req, resp := client.DeleteResourcePolicyRequest(params)
   809  //
   810  //    err := req.Send()
   811  //    if err == nil { // resp is now filled
   812  //        fmt.Println(resp)
   813  //    }
   814  //
   815  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteResourcePolicy
   816  func (c *NetworkFirewall) DeleteResourcePolicyRequest(input *DeleteResourcePolicyInput) (req *request.Request, output *DeleteResourcePolicyOutput) {
   817  	op := &request.Operation{
   818  		Name:       opDeleteResourcePolicy,
   819  		HTTPMethod: "POST",
   820  		HTTPPath:   "/",
   821  	}
   822  
   823  	if input == nil {
   824  		input = &DeleteResourcePolicyInput{}
   825  	}
   826  
   827  	output = &DeleteResourcePolicyOutput{}
   828  	req = c.newRequest(op, input, output)
   829  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   830  	return
   831  }
   832  
   833  // DeleteResourcePolicy API operation for AWS Network Firewall.
   834  //
   835  // Deletes a resource policy that you created in a PutResourcePolicy request.
   836  //
   837  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   838  // with awserr.Error's Code and Message methods to get detailed information about
   839  // the error.
   840  //
   841  // See the AWS API reference guide for AWS Network Firewall's
   842  // API operation DeleteResourcePolicy for usage and error information.
   843  //
   844  // Returned Error Types:
   845  //   * InvalidRequestException
   846  //   The operation failed because of a problem with your request. Examples include:
   847  //
   848  //      * You specified an unsupported parameter name or value.
   849  //
   850  //      * You tried to update a property with a value that isn't among the available
   851  //      types.
   852  //
   853  //      * Your request references an ARN that is malformed, or corresponds to
   854  //      a resource that isn't valid in the context of the request.
   855  //
   856  //   * InternalServerError
   857  //   Your request is valid, but Network Firewall couldn’t perform the operation
   858  //   because of a system problem. Retry your request.
   859  //
   860  //   * ResourceNotFoundException
   861  //   Unable to locate a resource using the parameters that you provided.
   862  //
   863  //   * ThrottlingException
   864  //   Unable to process the request due to throttling limitations.
   865  //
   866  //   * InvalidResourcePolicyException
   867  //   The policy statement failed validation.
   868  //
   869  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteResourcePolicy
   870  func (c *NetworkFirewall) DeleteResourcePolicy(input *DeleteResourcePolicyInput) (*DeleteResourcePolicyOutput, error) {
   871  	req, out := c.DeleteResourcePolicyRequest(input)
   872  	return out, req.Send()
   873  }
   874  
   875  // DeleteResourcePolicyWithContext is the same as DeleteResourcePolicy with the addition of
   876  // the ability to pass a context and additional request options.
   877  //
   878  // See DeleteResourcePolicy for details on how to use this API operation.
   879  //
   880  // The context must be non-nil and will be used for request cancellation. If
   881  // the context is nil a panic will occur. In the future the SDK may create
   882  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   883  // for more information on using Contexts.
   884  func (c *NetworkFirewall) DeleteResourcePolicyWithContext(ctx aws.Context, input *DeleteResourcePolicyInput, opts ...request.Option) (*DeleteResourcePolicyOutput, error) {
   885  	req, out := c.DeleteResourcePolicyRequest(input)
   886  	req.SetContext(ctx)
   887  	req.ApplyOptions(opts...)
   888  	return out, req.Send()
   889  }
   890  
   891  const opDeleteRuleGroup = "DeleteRuleGroup"
   892  
   893  // DeleteRuleGroupRequest generates a "aws/request.Request" representing the
   894  // client's request for the DeleteRuleGroup operation. The "output" return
   895  // value will be populated with the request's response once the request completes
   896  // successfully.
   897  //
   898  // Use "Send" method on the returned Request to send the API call to the service.
   899  // the "output" return value is not valid until after Send returns without error.
   900  //
   901  // See DeleteRuleGroup for more information on using the DeleteRuleGroup
   902  // API call, and error handling.
   903  //
   904  // This method is useful when you want to inject custom logic or configuration
   905  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   906  //
   907  //
   908  //    // Example sending a request using the DeleteRuleGroupRequest method.
   909  //    req, resp := client.DeleteRuleGroupRequest(params)
   910  //
   911  //    err := req.Send()
   912  //    if err == nil { // resp is now filled
   913  //        fmt.Println(resp)
   914  //    }
   915  //
   916  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteRuleGroup
   917  func (c *NetworkFirewall) DeleteRuleGroupRequest(input *DeleteRuleGroupInput) (req *request.Request, output *DeleteRuleGroupOutput) {
   918  	op := &request.Operation{
   919  		Name:       opDeleteRuleGroup,
   920  		HTTPMethod: "POST",
   921  		HTTPPath:   "/",
   922  	}
   923  
   924  	if input == nil {
   925  		input = &DeleteRuleGroupInput{}
   926  	}
   927  
   928  	output = &DeleteRuleGroupOutput{}
   929  	req = c.newRequest(op, input, output)
   930  	return
   931  }
   932  
   933  // DeleteRuleGroup API operation for AWS Network Firewall.
   934  //
   935  // Deletes the specified RuleGroup.
   936  //
   937  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   938  // with awserr.Error's Code and Message methods to get detailed information about
   939  // the error.
   940  //
   941  // See the AWS API reference guide for AWS Network Firewall's
   942  // API operation DeleteRuleGroup for usage and error information.
   943  //
   944  // Returned Error Types:
   945  //   * InvalidRequestException
   946  //   The operation failed because of a problem with your request. Examples include:
   947  //
   948  //      * You specified an unsupported parameter name or value.
   949  //
   950  //      * You tried to update a property with a value that isn't among the available
   951  //      types.
   952  //
   953  //      * Your request references an ARN that is malformed, or corresponds to
   954  //      a resource that isn't valid in the context of the request.
   955  //
   956  //   * ResourceNotFoundException
   957  //   Unable to locate a resource using the parameters that you provided.
   958  //
   959  //   * ThrottlingException
   960  //   Unable to process the request due to throttling limitations.
   961  //
   962  //   * InternalServerError
   963  //   Your request is valid, but Network Firewall couldn’t perform the operation
   964  //   because of a system problem. Retry your request.
   965  //
   966  //   * UnsupportedOperationException
   967  //   The operation you requested isn't supported by Network Firewall.
   968  //
   969  //   * InvalidOperationException
   970  //   The operation failed because it's not valid. For example, you might have
   971  //   tried to delete a rule group or firewall policy that's in use.
   972  //
   973  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteRuleGroup
   974  func (c *NetworkFirewall) DeleteRuleGroup(input *DeleteRuleGroupInput) (*DeleteRuleGroupOutput, error) {
   975  	req, out := c.DeleteRuleGroupRequest(input)
   976  	return out, req.Send()
   977  }
   978  
   979  // DeleteRuleGroupWithContext is the same as DeleteRuleGroup with the addition of
   980  // the ability to pass a context and additional request options.
   981  //
   982  // See DeleteRuleGroup for details on how to use this API operation.
   983  //
   984  // The context must be non-nil and will be used for request cancellation. If
   985  // the context is nil a panic will occur. In the future the SDK may create
   986  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   987  // for more information on using Contexts.
   988  func (c *NetworkFirewall) DeleteRuleGroupWithContext(ctx aws.Context, input *DeleteRuleGroupInput, opts ...request.Option) (*DeleteRuleGroupOutput, error) {
   989  	req, out := c.DeleteRuleGroupRequest(input)
   990  	req.SetContext(ctx)
   991  	req.ApplyOptions(opts...)
   992  	return out, req.Send()
   993  }
   994  
   995  const opDescribeFirewall = "DescribeFirewall"
   996  
   997  // DescribeFirewallRequest generates a "aws/request.Request" representing the
   998  // client's request for the DescribeFirewall operation. The "output" return
   999  // value will be populated with the request's response once the request completes
  1000  // successfully.
  1001  //
  1002  // Use "Send" method on the returned Request to send the API call to the service.
  1003  // the "output" return value is not valid until after Send returns without error.
  1004  //
  1005  // See DescribeFirewall for more information on using the DescribeFirewall
  1006  // API call, and error handling.
  1007  //
  1008  // This method is useful when you want to inject custom logic or configuration
  1009  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1010  //
  1011  //
  1012  //    // Example sending a request using the DescribeFirewallRequest method.
  1013  //    req, resp := client.DescribeFirewallRequest(params)
  1014  //
  1015  //    err := req.Send()
  1016  //    if err == nil { // resp is now filled
  1017  //        fmt.Println(resp)
  1018  //    }
  1019  //
  1020  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewall
  1021  func (c *NetworkFirewall) DescribeFirewallRequest(input *DescribeFirewallInput) (req *request.Request, output *DescribeFirewallOutput) {
  1022  	op := &request.Operation{
  1023  		Name:       opDescribeFirewall,
  1024  		HTTPMethod: "POST",
  1025  		HTTPPath:   "/",
  1026  	}
  1027  
  1028  	if input == nil {
  1029  		input = &DescribeFirewallInput{}
  1030  	}
  1031  
  1032  	output = &DescribeFirewallOutput{}
  1033  	req = c.newRequest(op, input, output)
  1034  	return
  1035  }
  1036  
  1037  // DescribeFirewall API operation for AWS Network Firewall.
  1038  //
  1039  // Returns the data objects for the specified firewall.
  1040  //
  1041  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1042  // with awserr.Error's Code and Message methods to get detailed information about
  1043  // the error.
  1044  //
  1045  // See the AWS API reference guide for AWS Network Firewall's
  1046  // API operation DescribeFirewall for usage and error information.
  1047  //
  1048  // Returned Error Types:
  1049  //   * InvalidRequestException
  1050  //   The operation failed because of a problem with your request. Examples include:
  1051  //
  1052  //      * You specified an unsupported parameter name or value.
  1053  //
  1054  //      * You tried to update a property with a value that isn't among the available
  1055  //      types.
  1056  //
  1057  //      * Your request references an ARN that is malformed, or corresponds to
  1058  //      a resource that isn't valid in the context of the request.
  1059  //
  1060  //   * InternalServerError
  1061  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1062  //   because of a system problem. Retry your request.
  1063  //
  1064  //   * ResourceNotFoundException
  1065  //   Unable to locate a resource using the parameters that you provided.
  1066  //
  1067  //   * ThrottlingException
  1068  //   Unable to process the request due to throttling limitations.
  1069  //
  1070  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewall
  1071  func (c *NetworkFirewall) DescribeFirewall(input *DescribeFirewallInput) (*DescribeFirewallOutput, error) {
  1072  	req, out := c.DescribeFirewallRequest(input)
  1073  	return out, req.Send()
  1074  }
  1075  
  1076  // DescribeFirewallWithContext is the same as DescribeFirewall with the addition of
  1077  // the ability to pass a context and additional request options.
  1078  //
  1079  // See DescribeFirewall for details on how to use this API operation.
  1080  //
  1081  // The context must be non-nil and will be used for request cancellation. If
  1082  // the context is nil a panic will occur. In the future the SDK may create
  1083  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1084  // for more information on using Contexts.
  1085  func (c *NetworkFirewall) DescribeFirewallWithContext(ctx aws.Context, input *DescribeFirewallInput, opts ...request.Option) (*DescribeFirewallOutput, error) {
  1086  	req, out := c.DescribeFirewallRequest(input)
  1087  	req.SetContext(ctx)
  1088  	req.ApplyOptions(opts...)
  1089  	return out, req.Send()
  1090  }
  1091  
  1092  const opDescribeFirewallPolicy = "DescribeFirewallPolicy"
  1093  
  1094  // DescribeFirewallPolicyRequest generates a "aws/request.Request" representing the
  1095  // client's request for the DescribeFirewallPolicy operation. The "output" return
  1096  // value will be populated with the request's response once the request completes
  1097  // successfully.
  1098  //
  1099  // Use "Send" method on the returned Request to send the API call to the service.
  1100  // the "output" return value is not valid until after Send returns without error.
  1101  //
  1102  // See DescribeFirewallPolicy for more information on using the DescribeFirewallPolicy
  1103  // API call, and error handling.
  1104  //
  1105  // This method is useful when you want to inject custom logic or configuration
  1106  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1107  //
  1108  //
  1109  //    // Example sending a request using the DescribeFirewallPolicyRequest method.
  1110  //    req, resp := client.DescribeFirewallPolicyRequest(params)
  1111  //
  1112  //    err := req.Send()
  1113  //    if err == nil { // resp is now filled
  1114  //        fmt.Println(resp)
  1115  //    }
  1116  //
  1117  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewallPolicy
  1118  func (c *NetworkFirewall) DescribeFirewallPolicyRequest(input *DescribeFirewallPolicyInput) (req *request.Request, output *DescribeFirewallPolicyOutput) {
  1119  	op := &request.Operation{
  1120  		Name:       opDescribeFirewallPolicy,
  1121  		HTTPMethod: "POST",
  1122  		HTTPPath:   "/",
  1123  	}
  1124  
  1125  	if input == nil {
  1126  		input = &DescribeFirewallPolicyInput{}
  1127  	}
  1128  
  1129  	output = &DescribeFirewallPolicyOutput{}
  1130  	req = c.newRequest(op, input, output)
  1131  	return
  1132  }
  1133  
  1134  // DescribeFirewallPolicy API operation for AWS Network Firewall.
  1135  //
  1136  // Returns the data objects for the specified firewall policy.
  1137  //
  1138  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1139  // with awserr.Error's Code and Message methods to get detailed information about
  1140  // the error.
  1141  //
  1142  // See the AWS API reference guide for AWS Network Firewall's
  1143  // API operation DescribeFirewallPolicy for usage and error information.
  1144  //
  1145  // Returned Error Types:
  1146  //   * InvalidRequestException
  1147  //   The operation failed because of a problem with your request. Examples include:
  1148  //
  1149  //      * You specified an unsupported parameter name or value.
  1150  //
  1151  //      * You tried to update a property with a value that isn't among the available
  1152  //      types.
  1153  //
  1154  //      * Your request references an ARN that is malformed, or corresponds to
  1155  //      a resource that isn't valid in the context of the request.
  1156  //
  1157  //   * ResourceNotFoundException
  1158  //   Unable to locate a resource using the parameters that you provided.
  1159  //
  1160  //   * ThrottlingException
  1161  //   Unable to process the request due to throttling limitations.
  1162  //
  1163  //   * InternalServerError
  1164  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1165  //   because of a system problem. Retry your request.
  1166  //
  1167  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewallPolicy
  1168  func (c *NetworkFirewall) DescribeFirewallPolicy(input *DescribeFirewallPolicyInput) (*DescribeFirewallPolicyOutput, error) {
  1169  	req, out := c.DescribeFirewallPolicyRequest(input)
  1170  	return out, req.Send()
  1171  }
  1172  
  1173  // DescribeFirewallPolicyWithContext is the same as DescribeFirewallPolicy with the addition of
  1174  // the ability to pass a context and additional request options.
  1175  //
  1176  // See DescribeFirewallPolicy for details on how to use this API operation.
  1177  //
  1178  // The context must be non-nil and will be used for request cancellation. If
  1179  // the context is nil a panic will occur. In the future the SDK may create
  1180  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1181  // for more information on using Contexts.
  1182  func (c *NetworkFirewall) DescribeFirewallPolicyWithContext(ctx aws.Context, input *DescribeFirewallPolicyInput, opts ...request.Option) (*DescribeFirewallPolicyOutput, error) {
  1183  	req, out := c.DescribeFirewallPolicyRequest(input)
  1184  	req.SetContext(ctx)
  1185  	req.ApplyOptions(opts...)
  1186  	return out, req.Send()
  1187  }
  1188  
  1189  const opDescribeLoggingConfiguration = "DescribeLoggingConfiguration"
  1190  
  1191  // DescribeLoggingConfigurationRequest generates a "aws/request.Request" representing the
  1192  // client's request for the DescribeLoggingConfiguration operation. The "output" return
  1193  // value will be populated with the request's response once the request completes
  1194  // successfully.
  1195  //
  1196  // Use "Send" method on the returned Request to send the API call to the service.
  1197  // the "output" return value is not valid until after Send returns without error.
  1198  //
  1199  // See DescribeLoggingConfiguration for more information on using the DescribeLoggingConfiguration
  1200  // API call, and error handling.
  1201  //
  1202  // This method is useful when you want to inject custom logic or configuration
  1203  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1204  //
  1205  //
  1206  //    // Example sending a request using the DescribeLoggingConfigurationRequest method.
  1207  //    req, resp := client.DescribeLoggingConfigurationRequest(params)
  1208  //
  1209  //    err := req.Send()
  1210  //    if err == nil { // resp is now filled
  1211  //        fmt.Println(resp)
  1212  //    }
  1213  //
  1214  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeLoggingConfiguration
  1215  func (c *NetworkFirewall) DescribeLoggingConfigurationRequest(input *DescribeLoggingConfigurationInput) (req *request.Request, output *DescribeLoggingConfigurationOutput) {
  1216  	op := &request.Operation{
  1217  		Name:       opDescribeLoggingConfiguration,
  1218  		HTTPMethod: "POST",
  1219  		HTTPPath:   "/",
  1220  	}
  1221  
  1222  	if input == nil {
  1223  		input = &DescribeLoggingConfigurationInput{}
  1224  	}
  1225  
  1226  	output = &DescribeLoggingConfigurationOutput{}
  1227  	req = c.newRequest(op, input, output)
  1228  	return
  1229  }
  1230  
  1231  // DescribeLoggingConfiguration API operation for AWS Network Firewall.
  1232  //
  1233  // Returns the logging configuration for the specified firewall.
  1234  //
  1235  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1236  // with awserr.Error's Code and Message methods to get detailed information about
  1237  // the error.
  1238  //
  1239  // See the AWS API reference guide for AWS Network Firewall's
  1240  // API operation DescribeLoggingConfiguration for usage and error information.
  1241  //
  1242  // Returned Error Types:
  1243  //   * InvalidRequestException
  1244  //   The operation failed because of a problem with your request. Examples include:
  1245  //
  1246  //      * You specified an unsupported parameter name or value.
  1247  //
  1248  //      * You tried to update a property with a value that isn't among the available
  1249  //      types.
  1250  //
  1251  //      * Your request references an ARN that is malformed, or corresponds to
  1252  //      a resource that isn't valid in the context of the request.
  1253  //
  1254  //   * InternalServerError
  1255  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1256  //   because of a system problem. Retry your request.
  1257  //
  1258  //   * ResourceNotFoundException
  1259  //   Unable to locate a resource using the parameters that you provided.
  1260  //
  1261  //   * ThrottlingException
  1262  //   Unable to process the request due to throttling limitations.
  1263  //
  1264  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeLoggingConfiguration
  1265  func (c *NetworkFirewall) DescribeLoggingConfiguration(input *DescribeLoggingConfigurationInput) (*DescribeLoggingConfigurationOutput, error) {
  1266  	req, out := c.DescribeLoggingConfigurationRequest(input)
  1267  	return out, req.Send()
  1268  }
  1269  
  1270  // DescribeLoggingConfigurationWithContext is the same as DescribeLoggingConfiguration with the addition of
  1271  // the ability to pass a context and additional request options.
  1272  //
  1273  // See DescribeLoggingConfiguration for details on how to use this API operation.
  1274  //
  1275  // The context must be non-nil and will be used for request cancellation. If
  1276  // the context is nil a panic will occur. In the future the SDK may create
  1277  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1278  // for more information on using Contexts.
  1279  func (c *NetworkFirewall) DescribeLoggingConfigurationWithContext(ctx aws.Context, input *DescribeLoggingConfigurationInput, opts ...request.Option) (*DescribeLoggingConfigurationOutput, error) {
  1280  	req, out := c.DescribeLoggingConfigurationRequest(input)
  1281  	req.SetContext(ctx)
  1282  	req.ApplyOptions(opts...)
  1283  	return out, req.Send()
  1284  }
  1285  
  1286  const opDescribeResourcePolicy = "DescribeResourcePolicy"
  1287  
  1288  // DescribeResourcePolicyRequest generates a "aws/request.Request" representing the
  1289  // client's request for the DescribeResourcePolicy operation. The "output" return
  1290  // value will be populated with the request's response once the request completes
  1291  // successfully.
  1292  //
  1293  // Use "Send" method on the returned Request to send the API call to the service.
  1294  // the "output" return value is not valid until after Send returns without error.
  1295  //
  1296  // See DescribeResourcePolicy for more information on using the DescribeResourcePolicy
  1297  // API call, and error handling.
  1298  //
  1299  // This method is useful when you want to inject custom logic or configuration
  1300  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1301  //
  1302  //
  1303  //    // Example sending a request using the DescribeResourcePolicyRequest method.
  1304  //    req, resp := client.DescribeResourcePolicyRequest(params)
  1305  //
  1306  //    err := req.Send()
  1307  //    if err == nil { // resp is now filled
  1308  //        fmt.Println(resp)
  1309  //    }
  1310  //
  1311  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeResourcePolicy
  1312  func (c *NetworkFirewall) DescribeResourcePolicyRequest(input *DescribeResourcePolicyInput) (req *request.Request, output *DescribeResourcePolicyOutput) {
  1313  	op := &request.Operation{
  1314  		Name:       opDescribeResourcePolicy,
  1315  		HTTPMethod: "POST",
  1316  		HTTPPath:   "/",
  1317  	}
  1318  
  1319  	if input == nil {
  1320  		input = &DescribeResourcePolicyInput{}
  1321  	}
  1322  
  1323  	output = &DescribeResourcePolicyOutput{}
  1324  	req = c.newRequest(op, input, output)
  1325  	return
  1326  }
  1327  
  1328  // DescribeResourcePolicy API operation for AWS Network Firewall.
  1329  //
  1330  // Retrieves a resource policy that you created in a PutResourcePolicy request.
  1331  //
  1332  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1333  // with awserr.Error's Code and Message methods to get detailed information about
  1334  // the error.
  1335  //
  1336  // See the AWS API reference guide for AWS Network Firewall's
  1337  // API operation DescribeResourcePolicy for usage and error information.
  1338  //
  1339  // Returned Error Types:
  1340  //   * InvalidRequestException
  1341  //   The operation failed because of a problem with your request. Examples include:
  1342  //
  1343  //      * You specified an unsupported parameter name or value.
  1344  //
  1345  //      * You tried to update a property with a value that isn't among the available
  1346  //      types.
  1347  //
  1348  //      * Your request references an ARN that is malformed, or corresponds to
  1349  //      a resource that isn't valid in the context of the request.
  1350  //
  1351  //   * InternalServerError
  1352  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1353  //   because of a system problem. Retry your request.
  1354  //
  1355  //   * ResourceNotFoundException
  1356  //   Unable to locate a resource using the parameters that you provided.
  1357  //
  1358  //   * ThrottlingException
  1359  //   Unable to process the request due to throttling limitations.
  1360  //
  1361  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeResourcePolicy
  1362  func (c *NetworkFirewall) DescribeResourcePolicy(input *DescribeResourcePolicyInput) (*DescribeResourcePolicyOutput, error) {
  1363  	req, out := c.DescribeResourcePolicyRequest(input)
  1364  	return out, req.Send()
  1365  }
  1366  
  1367  // DescribeResourcePolicyWithContext is the same as DescribeResourcePolicy with the addition of
  1368  // the ability to pass a context and additional request options.
  1369  //
  1370  // See DescribeResourcePolicy for details on how to use this API operation.
  1371  //
  1372  // The context must be non-nil and will be used for request cancellation. If
  1373  // the context is nil a panic will occur. In the future the SDK may create
  1374  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1375  // for more information on using Contexts.
  1376  func (c *NetworkFirewall) DescribeResourcePolicyWithContext(ctx aws.Context, input *DescribeResourcePolicyInput, opts ...request.Option) (*DescribeResourcePolicyOutput, error) {
  1377  	req, out := c.DescribeResourcePolicyRequest(input)
  1378  	req.SetContext(ctx)
  1379  	req.ApplyOptions(opts...)
  1380  	return out, req.Send()
  1381  }
  1382  
  1383  const opDescribeRuleGroup = "DescribeRuleGroup"
  1384  
  1385  // DescribeRuleGroupRequest generates a "aws/request.Request" representing the
  1386  // client's request for the DescribeRuleGroup operation. The "output" return
  1387  // value will be populated with the request's response once the request completes
  1388  // successfully.
  1389  //
  1390  // Use "Send" method on the returned Request to send the API call to the service.
  1391  // the "output" return value is not valid until after Send returns without error.
  1392  //
  1393  // See DescribeRuleGroup for more information on using the DescribeRuleGroup
  1394  // API call, and error handling.
  1395  //
  1396  // This method is useful when you want to inject custom logic or configuration
  1397  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1398  //
  1399  //
  1400  //    // Example sending a request using the DescribeRuleGroupRequest method.
  1401  //    req, resp := client.DescribeRuleGroupRequest(params)
  1402  //
  1403  //    err := req.Send()
  1404  //    if err == nil { // resp is now filled
  1405  //        fmt.Println(resp)
  1406  //    }
  1407  //
  1408  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeRuleGroup
  1409  func (c *NetworkFirewall) DescribeRuleGroupRequest(input *DescribeRuleGroupInput) (req *request.Request, output *DescribeRuleGroupOutput) {
  1410  	op := &request.Operation{
  1411  		Name:       opDescribeRuleGroup,
  1412  		HTTPMethod: "POST",
  1413  		HTTPPath:   "/",
  1414  	}
  1415  
  1416  	if input == nil {
  1417  		input = &DescribeRuleGroupInput{}
  1418  	}
  1419  
  1420  	output = &DescribeRuleGroupOutput{}
  1421  	req = c.newRequest(op, input, output)
  1422  	return
  1423  }
  1424  
  1425  // DescribeRuleGroup API operation for AWS Network Firewall.
  1426  //
  1427  // Returns the data objects for the specified rule group.
  1428  //
  1429  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1430  // with awserr.Error's Code and Message methods to get detailed information about
  1431  // the error.
  1432  //
  1433  // See the AWS API reference guide for AWS Network Firewall's
  1434  // API operation DescribeRuleGroup for usage and error information.
  1435  //
  1436  // Returned Error Types:
  1437  //   * InvalidRequestException
  1438  //   The operation failed because of a problem with your request. Examples include:
  1439  //
  1440  //      * You specified an unsupported parameter name or value.
  1441  //
  1442  //      * You tried to update a property with a value that isn't among the available
  1443  //      types.
  1444  //
  1445  //      * Your request references an ARN that is malformed, or corresponds to
  1446  //      a resource that isn't valid in the context of the request.
  1447  //
  1448  //   * ResourceNotFoundException
  1449  //   Unable to locate a resource using the parameters that you provided.
  1450  //
  1451  //   * ThrottlingException
  1452  //   Unable to process the request due to throttling limitations.
  1453  //
  1454  //   * InternalServerError
  1455  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1456  //   because of a system problem. Retry your request.
  1457  //
  1458  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeRuleGroup
  1459  func (c *NetworkFirewall) DescribeRuleGroup(input *DescribeRuleGroupInput) (*DescribeRuleGroupOutput, error) {
  1460  	req, out := c.DescribeRuleGroupRequest(input)
  1461  	return out, req.Send()
  1462  }
  1463  
  1464  // DescribeRuleGroupWithContext is the same as DescribeRuleGroup with the addition of
  1465  // the ability to pass a context and additional request options.
  1466  //
  1467  // See DescribeRuleGroup for details on how to use this API operation.
  1468  //
  1469  // The context must be non-nil and will be used for request cancellation. If
  1470  // the context is nil a panic will occur. In the future the SDK may create
  1471  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1472  // for more information on using Contexts.
  1473  func (c *NetworkFirewall) DescribeRuleGroupWithContext(ctx aws.Context, input *DescribeRuleGroupInput, opts ...request.Option) (*DescribeRuleGroupOutput, error) {
  1474  	req, out := c.DescribeRuleGroupRequest(input)
  1475  	req.SetContext(ctx)
  1476  	req.ApplyOptions(opts...)
  1477  	return out, req.Send()
  1478  }
  1479  
  1480  const opDisassociateSubnets = "DisassociateSubnets"
  1481  
  1482  // DisassociateSubnetsRequest generates a "aws/request.Request" representing the
  1483  // client's request for the DisassociateSubnets operation. The "output" return
  1484  // value will be populated with the request's response once the request completes
  1485  // successfully.
  1486  //
  1487  // Use "Send" method on the returned Request to send the API call to the service.
  1488  // the "output" return value is not valid until after Send returns without error.
  1489  //
  1490  // See DisassociateSubnets for more information on using the DisassociateSubnets
  1491  // API call, and error handling.
  1492  //
  1493  // This method is useful when you want to inject custom logic or configuration
  1494  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1495  //
  1496  //
  1497  //    // Example sending a request using the DisassociateSubnetsRequest method.
  1498  //    req, resp := client.DisassociateSubnetsRequest(params)
  1499  //
  1500  //    err := req.Send()
  1501  //    if err == nil { // resp is now filled
  1502  //        fmt.Println(resp)
  1503  //    }
  1504  //
  1505  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DisassociateSubnets
  1506  func (c *NetworkFirewall) DisassociateSubnetsRequest(input *DisassociateSubnetsInput) (req *request.Request, output *DisassociateSubnetsOutput) {
  1507  	op := &request.Operation{
  1508  		Name:       opDisassociateSubnets,
  1509  		HTTPMethod: "POST",
  1510  		HTTPPath:   "/",
  1511  	}
  1512  
  1513  	if input == nil {
  1514  		input = &DisassociateSubnetsInput{}
  1515  	}
  1516  
  1517  	output = &DisassociateSubnetsOutput{}
  1518  	req = c.newRequest(op, input, output)
  1519  	return
  1520  }
  1521  
  1522  // DisassociateSubnets API operation for AWS Network Firewall.
  1523  //
  1524  // Removes the specified subnet associations from the firewall. This removes
  1525  // the firewall endpoints from the subnets and removes any network filtering
  1526  // protections that the endpoints were providing.
  1527  //
  1528  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1529  // with awserr.Error's Code and Message methods to get detailed information about
  1530  // the error.
  1531  //
  1532  // See the AWS API reference guide for AWS Network Firewall's
  1533  // API operation DisassociateSubnets for usage and error information.
  1534  //
  1535  // Returned Error Types:
  1536  //   * InvalidRequestException
  1537  //   The operation failed because of a problem with your request. Examples include:
  1538  //
  1539  //      * You specified an unsupported parameter name or value.
  1540  //
  1541  //      * You tried to update a property with a value that isn't among the available
  1542  //      types.
  1543  //
  1544  //      * Your request references an ARN that is malformed, or corresponds to
  1545  //      a resource that isn't valid in the context of the request.
  1546  //
  1547  //   * InternalServerError
  1548  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1549  //   because of a system problem. Retry your request.
  1550  //
  1551  //   * ResourceNotFoundException
  1552  //   Unable to locate a resource using the parameters that you provided.
  1553  //
  1554  //   * ThrottlingException
  1555  //   Unable to process the request due to throttling limitations.
  1556  //
  1557  //   * InvalidTokenException
  1558  //   The token you provided is stale or isn't valid for the operation.
  1559  //
  1560  //   * InvalidOperationException
  1561  //   The operation failed because it's not valid. For example, you might have
  1562  //   tried to delete a rule group or firewall policy that's in use.
  1563  //
  1564  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DisassociateSubnets
  1565  func (c *NetworkFirewall) DisassociateSubnets(input *DisassociateSubnetsInput) (*DisassociateSubnetsOutput, error) {
  1566  	req, out := c.DisassociateSubnetsRequest(input)
  1567  	return out, req.Send()
  1568  }
  1569  
  1570  // DisassociateSubnetsWithContext is the same as DisassociateSubnets with the addition of
  1571  // the ability to pass a context and additional request options.
  1572  //
  1573  // See DisassociateSubnets for details on how to use this API operation.
  1574  //
  1575  // The context must be non-nil and will be used for request cancellation. If
  1576  // the context is nil a panic will occur. In the future the SDK may create
  1577  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1578  // for more information on using Contexts.
  1579  func (c *NetworkFirewall) DisassociateSubnetsWithContext(ctx aws.Context, input *DisassociateSubnetsInput, opts ...request.Option) (*DisassociateSubnetsOutput, error) {
  1580  	req, out := c.DisassociateSubnetsRequest(input)
  1581  	req.SetContext(ctx)
  1582  	req.ApplyOptions(opts...)
  1583  	return out, req.Send()
  1584  }
  1585  
  1586  const opListFirewallPolicies = "ListFirewallPolicies"
  1587  
  1588  // ListFirewallPoliciesRequest generates a "aws/request.Request" representing the
  1589  // client's request for the ListFirewallPolicies operation. The "output" return
  1590  // value will be populated with the request's response once the request completes
  1591  // successfully.
  1592  //
  1593  // Use "Send" method on the returned Request to send the API call to the service.
  1594  // the "output" return value is not valid until after Send returns without error.
  1595  //
  1596  // See ListFirewallPolicies for more information on using the ListFirewallPolicies
  1597  // API call, and error handling.
  1598  //
  1599  // This method is useful when you want to inject custom logic or configuration
  1600  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1601  //
  1602  //
  1603  //    // Example sending a request using the ListFirewallPoliciesRequest method.
  1604  //    req, resp := client.ListFirewallPoliciesRequest(params)
  1605  //
  1606  //    err := req.Send()
  1607  //    if err == nil { // resp is now filled
  1608  //        fmt.Println(resp)
  1609  //    }
  1610  //
  1611  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewallPolicies
  1612  func (c *NetworkFirewall) ListFirewallPoliciesRequest(input *ListFirewallPoliciesInput) (req *request.Request, output *ListFirewallPoliciesOutput) {
  1613  	op := &request.Operation{
  1614  		Name:       opListFirewallPolicies,
  1615  		HTTPMethod: "POST",
  1616  		HTTPPath:   "/",
  1617  		Paginator: &request.Paginator{
  1618  			InputTokens:     []string{"NextToken"},
  1619  			OutputTokens:    []string{"NextToken"},
  1620  			LimitToken:      "MaxResults",
  1621  			TruncationToken: "",
  1622  		},
  1623  	}
  1624  
  1625  	if input == nil {
  1626  		input = &ListFirewallPoliciesInput{}
  1627  	}
  1628  
  1629  	output = &ListFirewallPoliciesOutput{}
  1630  	req = c.newRequest(op, input, output)
  1631  	return
  1632  }
  1633  
  1634  // ListFirewallPolicies API operation for AWS Network Firewall.
  1635  //
  1636  // Retrieves the metadata for the firewall policies that you have defined. Depending
  1637  // on your setting for max results and the number of firewall policies, a single
  1638  // call might not return the full list.
  1639  //
  1640  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1641  // with awserr.Error's Code and Message methods to get detailed information about
  1642  // the error.
  1643  //
  1644  // See the AWS API reference guide for AWS Network Firewall's
  1645  // API operation ListFirewallPolicies for usage and error information.
  1646  //
  1647  // Returned Error Types:
  1648  //   * InvalidRequestException
  1649  //   The operation failed because of a problem with your request. Examples include:
  1650  //
  1651  //      * You specified an unsupported parameter name or value.
  1652  //
  1653  //      * You tried to update a property with a value that isn't among the available
  1654  //      types.
  1655  //
  1656  //      * Your request references an ARN that is malformed, or corresponds to
  1657  //      a resource that isn't valid in the context of the request.
  1658  //
  1659  //   * ThrottlingException
  1660  //   Unable to process the request due to throttling limitations.
  1661  //
  1662  //   * InternalServerError
  1663  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1664  //   because of a system problem. Retry your request.
  1665  //
  1666  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewallPolicies
  1667  func (c *NetworkFirewall) ListFirewallPolicies(input *ListFirewallPoliciesInput) (*ListFirewallPoliciesOutput, error) {
  1668  	req, out := c.ListFirewallPoliciesRequest(input)
  1669  	return out, req.Send()
  1670  }
  1671  
  1672  // ListFirewallPoliciesWithContext is the same as ListFirewallPolicies with the addition of
  1673  // the ability to pass a context and additional request options.
  1674  //
  1675  // See ListFirewallPolicies for details on how to use this API operation.
  1676  //
  1677  // The context must be non-nil and will be used for request cancellation. If
  1678  // the context is nil a panic will occur. In the future the SDK may create
  1679  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1680  // for more information on using Contexts.
  1681  func (c *NetworkFirewall) ListFirewallPoliciesWithContext(ctx aws.Context, input *ListFirewallPoliciesInput, opts ...request.Option) (*ListFirewallPoliciesOutput, error) {
  1682  	req, out := c.ListFirewallPoliciesRequest(input)
  1683  	req.SetContext(ctx)
  1684  	req.ApplyOptions(opts...)
  1685  	return out, req.Send()
  1686  }
  1687  
  1688  // ListFirewallPoliciesPages iterates over the pages of a ListFirewallPolicies operation,
  1689  // calling the "fn" function with the response data for each page. To stop
  1690  // iterating, return false from the fn function.
  1691  //
  1692  // See ListFirewallPolicies method for more information on how to use this operation.
  1693  //
  1694  // Note: This operation can generate multiple requests to a service.
  1695  //
  1696  //    // Example iterating over at most 3 pages of a ListFirewallPolicies operation.
  1697  //    pageNum := 0
  1698  //    err := client.ListFirewallPoliciesPages(params,
  1699  //        func(page *networkfirewall.ListFirewallPoliciesOutput, lastPage bool) bool {
  1700  //            pageNum++
  1701  //            fmt.Println(page)
  1702  //            return pageNum <= 3
  1703  //        })
  1704  //
  1705  func (c *NetworkFirewall) ListFirewallPoliciesPages(input *ListFirewallPoliciesInput, fn func(*ListFirewallPoliciesOutput, bool) bool) error {
  1706  	return c.ListFirewallPoliciesPagesWithContext(aws.BackgroundContext(), input, fn)
  1707  }
  1708  
  1709  // ListFirewallPoliciesPagesWithContext same as ListFirewallPoliciesPages except
  1710  // it takes a Context and allows setting request options on the pages.
  1711  //
  1712  // The context must be non-nil and will be used for request cancellation. If
  1713  // the context is nil a panic will occur. In the future the SDK may create
  1714  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1715  // for more information on using Contexts.
  1716  func (c *NetworkFirewall) ListFirewallPoliciesPagesWithContext(ctx aws.Context, input *ListFirewallPoliciesInput, fn func(*ListFirewallPoliciesOutput, bool) bool, opts ...request.Option) error {
  1717  	p := request.Pagination{
  1718  		NewRequest: func() (*request.Request, error) {
  1719  			var inCpy *ListFirewallPoliciesInput
  1720  			if input != nil {
  1721  				tmp := *input
  1722  				inCpy = &tmp
  1723  			}
  1724  			req, _ := c.ListFirewallPoliciesRequest(inCpy)
  1725  			req.SetContext(ctx)
  1726  			req.ApplyOptions(opts...)
  1727  			return req, nil
  1728  		},
  1729  	}
  1730  
  1731  	for p.Next() {
  1732  		if !fn(p.Page().(*ListFirewallPoliciesOutput), !p.HasNextPage()) {
  1733  			break
  1734  		}
  1735  	}
  1736  
  1737  	return p.Err()
  1738  }
  1739  
  1740  const opListFirewalls = "ListFirewalls"
  1741  
  1742  // ListFirewallsRequest generates a "aws/request.Request" representing the
  1743  // client's request for the ListFirewalls operation. The "output" return
  1744  // value will be populated with the request's response once the request completes
  1745  // successfully.
  1746  //
  1747  // Use "Send" method on the returned Request to send the API call to the service.
  1748  // the "output" return value is not valid until after Send returns without error.
  1749  //
  1750  // See ListFirewalls for more information on using the ListFirewalls
  1751  // API call, and error handling.
  1752  //
  1753  // This method is useful when you want to inject custom logic or configuration
  1754  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1755  //
  1756  //
  1757  //    // Example sending a request using the ListFirewallsRequest method.
  1758  //    req, resp := client.ListFirewallsRequest(params)
  1759  //
  1760  //    err := req.Send()
  1761  //    if err == nil { // resp is now filled
  1762  //        fmt.Println(resp)
  1763  //    }
  1764  //
  1765  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewalls
  1766  func (c *NetworkFirewall) ListFirewallsRequest(input *ListFirewallsInput) (req *request.Request, output *ListFirewallsOutput) {
  1767  	op := &request.Operation{
  1768  		Name:       opListFirewalls,
  1769  		HTTPMethod: "POST",
  1770  		HTTPPath:   "/",
  1771  		Paginator: &request.Paginator{
  1772  			InputTokens:     []string{"NextToken"},
  1773  			OutputTokens:    []string{"NextToken"},
  1774  			LimitToken:      "MaxResults",
  1775  			TruncationToken: "",
  1776  		},
  1777  	}
  1778  
  1779  	if input == nil {
  1780  		input = &ListFirewallsInput{}
  1781  	}
  1782  
  1783  	output = &ListFirewallsOutput{}
  1784  	req = c.newRequest(op, input, output)
  1785  	return
  1786  }
  1787  
  1788  // ListFirewalls API operation for AWS Network Firewall.
  1789  //
  1790  // Retrieves the metadata for the firewalls that you have defined. If you provide
  1791  // VPC identifiers in your request, this returns only the firewalls for those
  1792  // VPCs.
  1793  //
  1794  // Depending on your setting for max results and the number of firewalls, a
  1795  // single call might not return the full list.
  1796  //
  1797  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1798  // with awserr.Error's Code and Message methods to get detailed information about
  1799  // the error.
  1800  //
  1801  // See the AWS API reference guide for AWS Network Firewall's
  1802  // API operation ListFirewalls for usage and error information.
  1803  //
  1804  // Returned Error Types:
  1805  //   * InvalidRequestException
  1806  //   The operation failed because of a problem with your request. Examples include:
  1807  //
  1808  //      * You specified an unsupported parameter name or value.
  1809  //
  1810  //      * You tried to update a property with a value that isn't among the available
  1811  //      types.
  1812  //
  1813  //      * Your request references an ARN that is malformed, or corresponds to
  1814  //      a resource that isn't valid in the context of the request.
  1815  //
  1816  //   * InternalServerError
  1817  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1818  //   because of a system problem. Retry your request.
  1819  //
  1820  //   * ThrottlingException
  1821  //   Unable to process the request due to throttling limitations.
  1822  //
  1823  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewalls
  1824  func (c *NetworkFirewall) ListFirewalls(input *ListFirewallsInput) (*ListFirewallsOutput, error) {
  1825  	req, out := c.ListFirewallsRequest(input)
  1826  	return out, req.Send()
  1827  }
  1828  
  1829  // ListFirewallsWithContext is the same as ListFirewalls with the addition of
  1830  // the ability to pass a context and additional request options.
  1831  //
  1832  // See ListFirewalls for details on how to use this API operation.
  1833  //
  1834  // The context must be non-nil and will be used for request cancellation. If
  1835  // the context is nil a panic will occur. In the future the SDK may create
  1836  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1837  // for more information on using Contexts.
  1838  func (c *NetworkFirewall) ListFirewallsWithContext(ctx aws.Context, input *ListFirewallsInput, opts ...request.Option) (*ListFirewallsOutput, error) {
  1839  	req, out := c.ListFirewallsRequest(input)
  1840  	req.SetContext(ctx)
  1841  	req.ApplyOptions(opts...)
  1842  	return out, req.Send()
  1843  }
  1844  
  1845  // ListFirewallsPages iterates over the pages of a ListFirewalls operation,
  1846  // calling the "fn" function with the response data for each page. To stop
  1847  // iterating, return false from the fn function.
  1848  //
  1849  // See ListFirewalls method for more information on how to use this operation.
  1850  //
  1851  // Note: This operation can generate multiple requests to a service.
  1852  //
  1853  //    // Example iterating over at most 3 pages of a ListFirewalls operation.
  1854  //    pageNum := 0
  1855  //    err := client.ListFirewallsPages(params,
  1856  //        func(page *networkfirewall.ListFirewallsOutput, lastPage bool) bool {
  1857  //            pageNum++
  1858  //            fmt.Println(page)
  1859  //            return pageNum <= 3
  1860  //        })
  1861  //
  1862  func (c *NetworkFirewall) ListFirewallsPages(input *ListFirewallsInput, fn func(*ListFirewallsOutput, bool) bool) error {
  1863  	return c.ListFirewallsPagesWithContext(aws.BackgroundContext(), input, fn)
  1864  }
  1865  
  1866  // ListFirewallsPagesWithContext same as ListFirewallsPages except
  1867  // it takes a Context and allows setting request options on the pages.
  1868  //
  1869  // The context must be non-nil and will be used for request cancellation. If
  1870  // the context is nil a panic will occur. In the future the SDK may create
  1871  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1872  // for more information on using Contexts.
  1873  func (c *NetworkFirewall) ListFirewallsPagesWithContext(ctx aws.Context, input *ListFirewallsInput, fn func(*ListFirewallsOutput, bool) bool, opts ...request.Option) error {
  1874  	p := request.Pagination{
  1875  		NewRequest: func() (*request.Request, error) {
  1876  			var inCpy *ListFirewallsInput
  1877  			if input != nil {
  1878  				tmp := *input
  1879  				inCpy = &tmp
  1880  			}
  1881  			req, _ := c.ListFirewallsRequest(inCpy)
  1882  			req.SetContext(ctx)
  1883  			req.ApplyOptions(opts...)
  1884  			return req, nil
  1885  		},
  1886  	}
  1887  
  1888  	for p.Next() {
  1889  		if !fn(p.Page().(*ListFirewallsOutput), !p.HasNextPage()) {
  1890  			break
  1891  		}
  1892  	}
  1893  
  1894  	return p.Err()
  1895  }
  1896  
  1897  const opListRuleGroups = "ListRuleGroups"
  1898  
  1899  // ListRuleGroupsRequest generates a "aws/request.Request" representing the
  1900  // client's request for the ListRuleGroups operation. The "output" return
  1901  // value will be populated with the request's response once the request completes
  1902  // successfully.
  1903  //
  1904  // Use "Send" method on the returned Request to send the API call to the service.
  1905  // the "output" return value is not valid until after Send returns without error.
  1906  //
  1907  // See ListRuleGroups for more information on using the ListRuleGroups
  1908  // API call, and error handling.
  1909  //
  1910  // This method is useful when you want to inject custom logic or configuration
  1911  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1912  //
  1913  //
  1914  //    // Example sending a request using the ListRuleGroupsRequest method.
  1915  //    req, resp := client.ListRuleGroupsRequest(params)
  1916  //
  1917  //    err := req.Send()
  1918  //    if err == nil { // resp is now filled
  1919  //        fmt.Println(resp)
  1920  //    }
  1921  //
  1922  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListRuleGroups
  1923  func (c *NetworkFirewall) ListRuleGroupsRequest(input *ListRuleGroupsInput) (req *request.Request, output *ListRuleGroupsOutput) {
  1924  	op := &request.Operation{
  1925  		Name:       opListRuleGroups,
  1926  		HTTPMethod: "POST",
  1927  		HTTPPath:   "/",
  1928  		Paginator: &request.Paginator{
  1929  			InputTokens:     []string{"NextToken"},
  1930  			OutputTokens:    []string{"NextToken"},
  1931  			LimitToken:      "MaxResults",
  1932  			TruncationToken: "",
  1933  		},
  1934  	}
  1935  
  1936  	if input == nil {
  1937  		input = &ListRuleGroupsInput{}
  1938  	}
  1939  
  1940  	output = &ListRuleGroupsOutput{}
  1941  	req = c.newRequest(op, input, output)
  1942  	return
  1943  }
  1944  
  1945  // ListRuleGroups API operation for AWS Network Firewall.
  1946  //
  1947  // Retrieves the metadata for the rule groups that you have defined. Depending
  1948  // on your setting for max results and the number of rule groups, a single call
  1949  // might not return the full list.
  1950  //
  1951  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1952  // with awserr.Error's Code and Message methods to get detailed information about
  1953  // the error.
  1954  //
  1955  // See the AWS API reference guide for AWS Network Firewall's
  1956  // API operation ListRuleGroups for usage and error information.
  1957  //
  1958  // Returned Error Types:
  1959  //   * InvalidRequestException
  1960  //   The operation failed because of a problem with your request. Examples include:
  1961  //
  1962  //      * You specified an unsupported parameter name or value.
  1963  //
  1964  //      * You tried to update a property with a value that isn't among the available
  1965  //      types.
  1966  //
  1967  //      * Your request references an ARN that is malformed, or corresponds to
  1968  //      a resource that isn't valid in the context of the request.
  1969  //
  1970  //   * ThrottlingException
  1971  //   Unable to process the request due to throttling limitations.
  1972  //
  1973  //   * InternalServerError
  1974  //   Your request is valid, but Network Firewall couldn’t perform the operation
  1975  //   because of a system problem. Retry your request.
  1976  //
  1977  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListRuleGroups
  1978  func (c *NetworkFirewall) ListRuleGroups(input *ListRuleGroupsInput) (*ListRuleGroupsOutput, error) {
  1979  	req, out := c.ListRuleGroupsRequest(input)
  1980  	return out, req.Send()
  1981  }
  1982  
  1983  // ListRuleGroupsWithContext is the same as ListRuleGroups with the addition of
  1984  // the ability to pass a context and additional request options.
  1985  //
  1986  // See ListRuleGroups for details on how to use this API operation.
  1987  //
  1988  // The context must be non-nil and will be used for request cancellation. If
  1989  // the context is nil a panic will occur. In the future the SDK may create
  1990  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1991  // for more information on using Contexts.
  1992  func (c *NetworkFirewall) ListRuleGroupsWithContext(ctx aws.Context, input *ListRuleGroupsInput, opts ...request.Option) (*ListRuleGroupsOutput, error) {
  1993  	req, out := c.ListRuleGroupsRequest(input)
  1994  	req.SetContext(ctx)
  1995  	req.ApplyOptions(opts...)
  1996  	return out, req.Send()
  1997  }
  1998  
  1999  // ListRuleGroupsPages iterates over the pages of a ListRuleGroups operation,
  2000  // calling the "fn" function with the response data for each page. To stop
  2001  // iterating, return false from the fn function.
  2002  //
  2003  // See ListRuleGroups method for more information on how to use this operation.
  2004  //
  2005  // Note: This operation can generate multiple requests to a service.
  2006  //
  2007  //    // Example iterating over at most 3 pages of a ListRuleGroups operation.
  2008  //    pageNum := 0
  2009  //    err := client.ListRuleGroupsPages(params,
  2010  //        func(page *networkfirewall.ListRuleGroupsOutput, lastPage bool) bool {
  2011  //            pageNum++
  2012  //            fmt.Println(page)
  2013  //            return pageNum <= 3
  2014  //        })
  2015  //
  2016  func (c *NetworkFirewall) ListRuleGroupsPages(input *ListRuleGroupsInput, fn func(*ListRuleGroupsOutput, bool) bool) error {
  2017  	return c.ListRuleGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  2018  }
  2019  
  2020  // ListRuleGroupsPagesWithContext same as ListRuleGroupsPages except
  2021  // it takes a Context and allows setting request options on the pages.
  2022  //
  2023  // The context must be non-nil and will be used for request cancellation. If
  2024  // the context is nil a panic will occur. In the future the SDK may create
  2025  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2026  // for more information on using Contexts.
  2027  func (c *NetworkFirewall) ListRuleGroupsPagesWithContext(ctx aws.Context, input *ListRuleGroupsInput, fn func(*ListRuleGroupsOutput, bool) bool, opts ...request.Option) error {
  2028  	p := request.Pagination{
  2029  		NewRequest: func() (*request.Request, error) {
  2030  			var inCpy *ListRuleGroupsInput
  2031  			if input != nil {
  2032  				tmp := *input
  2033  				inCpy = &tmp
  2034  			}
  2035  			req, _ := c.ListRuleGroupsRequest(inCpy)
  2036  			req.SetContext(ctx)
  2037  			req.ApplyOptions(opts...)
  2038  			return req, nil
  2039  		},
  2040  	}
  2041  
  2042  	for p.Next() {
  2043  		if !fn(p.Page().(*ListRuleGroupsOutput), !p.HasNextPage()) {
  2044  			break
  2045  		}
  2046  	}
  2047  
  2048  	return p.Err()
  2049  }
  2050  
  2051  const opListTagsForResource = "ListTagsForResource"
  2052  
  2053  // ListTagsForResourceRequest generates a "aws/request.Request" representing the
  2054  // client's request for the ListTagsForResource operation. The "output" return
  2055  // value will be populated with the request's response once the request completes
  2056  // successfully.
  2057  //
  2058  // Use "Send" method on the returned Request to send the API call to the service.
  2059  // the "output" return value is not valid until after Send returns without error.
  2060  //
  2061  // See ListTagsForResource for more information on using the ListTagsForResource
  2062  // API call, and error handling.
  2063  //
  2064  // This method is useful when you want to inject custom logic or configuration
  2065  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2066  //
  2067  //
  2068  //    // Example sending a request using the ListTagsForResourceRequest method.
  2069  //    req, resp := client.ListTagsForResourceRequest(params)
  2070  //
  2071  //    err := req.Send()
  2072  //    if err == nil { // resp is now filled
  2073  //        fmt.Println(resp)
  2074  //    }
  2075  //
  2076  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListTagsForResource
  2077  func (c *NetworkFirewall) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
  2078  	op := &request.Operation{
  2079  		Name:       opListTagsForResource,
  2080  		HTTPMethod: "POST",
  2081  		HTTPPath:   "/",
  2082  		Paginator: &request.Paginator{
  2083  			InputTokens:     []string{"NextToken"},
  2084  			OutputTokens:    []string{"NextToken"},
  2085  			LimitToken:      "MaxResults",
  2086  			TruncationToken: "",
  2087  		},
  2088  	}
  2089  
  2090  	if input == nil {
  2091  		input = &ListTagsForResourceInput{}
  2092  	}
  2093  
  2094  	output = &ListTagsForResourceOutput{}
  2095  	req = c.newRequest(op, input, output)
  2096  	return
  2097  }
  2098  
  2099  // ListTagsForResource API operation for AWS Network Firewall.
  2100  //
  2101  // Retrieves the tags associated with the specified resource. Tags are key:value
  2102  // pairs that you can use to categorize and manage your resources, for purposes
  2103  // like billing. For example, you might set the tag key to "customer" and the
  2104  // value to the customer name or ID. You can specify one or more tags to add
  2105  // to each AWS resource, up to 50 tags for a resource.
  2106  //
  2107  // You can tag the AWS resources that you manage through AWS Network Firewall:
  2108  // firewalls, firewall policies, and rule groups.
  2109  //
  2110  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2111  // with awserr.Error's Code and Message methods to get detailed information about
  2112  // the error.
  2113  //
  2114  // See the AWS API reference guide for AWS Network Firewall's
  2115  // API operation ListTagsForResource for usage and error information.
  2116  //
  2117  // Returned Error Types:
  2118  //   * ResourceNotFoundException
  2119  //   Unable to locate a resource using the parameters that you provided.
  2120  //
  2121  //   * InvalidRequestException
  2122  //   The operation failed because of a problem with your request. Examples include:
  2123  //
  2124  //      * You specified an unsupported parameter name or value.
  2125  //
  2126  //      * You tried to update a property with a value that isn't among the available
  2127  //      types.
  2128  //
  2129  //      * Your request references an ARN that is malformed, or corresponds to
  2130  //      a resource that isn't valid in the context of the request.
  2131  //
  2132  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListTagsForResource
  2133  func (c *NetworkFirewall) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
  2134  	req, out := c.ListTagsForResourceRequest(input)
  2135  	return out, req.Send()
  2136  }
  2137  
  2138  // ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
  2139  // the ability to pass a context and additional request options.
  2140  //
  2141  // See ListTagsForResource for details on how to use this API operation.
  2142  //
  2143  // The context must be non-nil and will be used for request cancellation. If
  2144  // the context is nil a panic will occur. In the future the SDK may create
  2145  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2146  // for more information on using Contexts.
  2147  func (c *NetworkFirewall) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
  2148  	req, out := c.ListTagsForResourceRequest(input)
  2149  	req.SetContext(ctx)
  2150  	req.ApplyOptions(opts...)
  2151  	return out, req.Send()
  2152  }
  2153  
  2154  // ListTagsForResourcePages iterates over the pages of a ListTagsForResource operation,
  2155  // calling the "fn" function with the response data for each page. To stop
  2156  // iterating, return false from the fn function.
  2157  //
  2158  // See ListTagsForResource method for more information on how to use this operation.
  2159  //
  2160  // Note: This operation can generate multiple requests to a service.
  2161  //
  2162  //    // Example iterating over at most 3 pages of a ListTagsForResource operation.
  2163  //    pageNum := 0
  2164  //    err := client.ListTagsForResourcePages(params,
  2165  //        func(page *networkfirewall.ListTagsForResourceOutput, lastPage bool) bool {
  2166  //            pageNum++
  2167  //            fmt.Println(page)
  2168  //            return pageNum <= 3
  2169  //        })
  2170  //
  2171  func (c *NetworkFirewall) ListTagsForResourcePages(input *ListTagsForResourceInput, fn func(*ListTagsForResourceOutput, bool) bool) error {
  2172  	return c.ListTagsForResourcePagesWithContext(aws.BackgroundContext(), input, fn)
  2173  }
  2174  
  2175  // ListTagsForResourcePagesWithContext same as ListTagsForResourcePages except
  2176  // it takes a Context and allows setting request options on the pages.
  2177  //
  2178  // The context must be non-nil and will be used for request cancellation. If
  2179  // the context is nil a panic will occur. In the future the SDK may create
  2180  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2181  // for more information on using Contexts.
  2182  func (c *NetworkFirewall) ListTagsForResourcePagesWithContext(ctx aws.Context, input *ListTagsForResourceInput, fn func(*ListTagsForResourceOutput, bool) bool, opts ...request.Option) error {
  2183  	p := request.Pagination{
  2184  		NewRequest: func() (*request.Request, error) {
  2185  			var inCpy *ListTagsForResourceInput
  2186  			if input != nil {
  2187  				tmp := *input
  2188  				inCpy = &tmp
  2189  			}
  2190  			req, _ := c.ListTagsForResourceRequest(inCpy)
  2191  			req.SetContext(ctx)
  2192  			req.ApplyOptions(opts...)
  2193  			return req, nil
  2194  		},
  2195  	}
  2196  
  2197  	for p.Next() {
  2198  		if !fn(p.Page().(*ListTagsForResourceOutput), !p.HasNextPage()) {
  2199  			break
  2200  		}
  2201  	}
  2202  
  2203  	return p.Err()
  2204  }
  2205  
  2206  const opPutResourcePolicy = "PutResourcePolicy"
  2207  
  2208  // PutResourcePolicyRequest generates a "aws/request.Request" representing the
  2209  // client's request for the PutResourcePolicy operation. The "output" return
  2210  // value will be populated with the request's response once the request completes
  2211  // successfully.
  2212  //
  2213  // Use "Send" method on the returned Request to send the API call to the service.
  2214  // the "output" return value is not valid until after Send returns without error.
  2215  //
  2216  // See PutResourcePolicy for more information on using the PutResourcePolicy
  2217  // API call, and error handling.
  2218  //
  2219  // This method is useful when you want to inject custom logic or configuration
  2220  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2221  //
  2222  //
  2223  //    // Example sending a request using the PutResourcePolicyRequest method.
  2224  //    req, resp := client.PutResourcePolicyRequest(params)
  2225  //
  2226  //    err := req.Send()
  2227  //    if err == nil { // resp is now filled
  2228  //        fmt.Println(resp)
  2229  //    }
  2230  //
  2231  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/PutResourcePolicy
  2232  func (c *NetworkFirewall) PutResourcePolicyRequest(input *PutResourcePolicyInput) (req *request.Request, output *PutResourcePolicyOutput) {
  2233  	op := &request.Operation{
  2234  		Name:       opPutResourcePolicy,
  2235  		HTTPMethod: "POST",
  2236  		HTTPPath:   "/",
  2237  	}
  2238  
  2239  	if input == nil {
  2240  		input = &PutResourcePolicyInput{}
  2241  	}
  2242  
  2243  	output = &PutResourcePolicyOutput{}
  2244  	req = c.newRequest(op, input, output)
  2245  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2246  	return
  2247  }
  2248  
  2249  // PutResourcePolicy API operation for AWS Network Firewall.
  2250  //
  2251  // Creates or updates an AWS Identity and Access Management policy for your
  2252  // rule group or firewall policy. Use this to share rule groups and firewall
  2253  // policies between accounts. This operation works in conjunction with the AWS
  2254  // Resource Access Manager (RAM) service to manage resource sharing for Network
  2255  // Firewall.
  2256  //
  2257  // Use this operation to create or update a resource policy for your rule group
  2258  // or firewall policy. In the policy, you specify the accounts that you want
  2259  // to share the resource with and the operations that you want the accounts
  2260  // to be able to perform.
  2261  //
  2262  // When you add an account in the resource policy, you then run the following
  2263  // Resource Access Manager (RAM) operations to access and accept the shared
  2264  // rule group or firewall policy.
  2265  //
  2266  //    * GetResourceShareInvitations (https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html)
  2267  //    - Returns the Amazon Resource Names (ARNs) of the resource share invitations.
  2268  //
  2269  //    * AcceptResourceShareInvitation (https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html)
  2270  //    - Accepts the share invitation for a specified resource share.
  2271  //
  2272  // For additional information about resource sharing using RAM, see AWS Resource
  2273  // Access Manager User Guide (https://docs.aws.amazon.com/ram/latest/userguide/what-is.html).
  2274  //
  2275  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2276  // with awserr.Error's Code and Message methods to get detailed information about
  2277  // the error.
  2278  //
  2279  // See the AWS API reference guide for AWS Network Firewall's
  2280  // API operation PutResourcePolicy for usage and error information.
  2281  //
  2282  // Returned Error Types:
  2283  //   * InvalidRequestException
  2284  //   The operation failed because of a problem with your request. Examples include:
  2285  //
  2286  //      * You specified an unsupported parameter name or value.
  2287  //
  2288  //      * You tried to update a property with a value that isn't among the available
  2289  //      types.
  2290  //
  2291  //      * Your request references an ARN that is malformed, or corresponds to
  2292  //      a resource that isn't valid in the context of the request.
  2293  //
  2294  //   * InternalServerError
  2295  //   Your request is valid, but Network Firewall couldn’t perform the operation
  2296  //   because of a system problem. Retry your request.
  2297  //
  2298  //   * ResourceNotFoundException
  2299  //   Unable to locate a resource using the parameters that you provided.
  2300  //
  2301  //   * ThrottlingException
  2302  //   Unable to process the request due to throttling limitations.
  2303  //
  2304  //   * InvalidResourcePolicyException
  2305  //   The policy statement failed validation.
  2306  //
  2307  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/PutResourcePolicy
  2308  func (c *NetworkFirewall) PutResourcePolicy(input *PutResourcePolicyInput) (*PutResourcePolicyOutput, error) {
  2309  	req, out := c.PutResourcePolicyRequest(input)
  2310  	return out, req.Send()
  2311  }
  2312  
  2313  // PutResourcePolicyWithContext is the same as PutResourcePolicy with the addition of
  2314  // the ability to pass a context and additional request options.
  2315  //
  2316  // See PutResourcePolicy for details on how to use this API operation.
  2317  //
  2318  // The context must be non-nil and will be used for request cancellation. If
  2319  // the context is nil a panic will occur. In the future the SDK may create
  2320  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2321  // for more information on using Contexts.
  2322  func (c *NetworkFirewall) PutResourcePolicyWithContext(ctx aws.Context, input *PutResourcePolicyInput, opts ...request.Option) (*PutResourcePolicyOutput, error) {
  2323  	req, out := c.PutResourcePolicyRequest(input)
  2324  	req.SetContext(ctx)
  2325  	req.ApplyOptions(opts...)
  2326  	return out, req.Send()
  2327  }
  2328  
  2329  const opTagResource = "TagResource"
  2330  
  2331  // TagResourceRequest generates a "aws/request.Request" representing the
  2332  // client's request for the TagResource operation. The "output" return
  2333  // value will be populated with the request's response once the request completes
  2334  // successfully.
  2335  //
  2336  // Use "Send" method on the returned Request to send the API call to the service.
  2337  // the "output" return value is not valid until after Send returns without error.
  2338  //
  2339  // See TagResource for more information on using the TagResource
  2340  // API call, and error handling.
  2341  //
  2342  // This method is useful when you want to inject custom logic or configuration
  2343  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2344  //
  2345  //
  2346  //    // Example sending a request using the TagResourceRequest method.
  2347  //    req, resp := client.TagResourceRequest(params)
  2348  //
  2349  //    err := req.Send()
  2350  //    if err == nil { // resp is now filled
  2351  //        fmt.Println(resp)
  2352  //    }
  2353  //
  2354  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/TagResource
  2355  func (c *NetworkFirewall) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
  2356  	op := &request.Operation{
  2357  		Name:       opTagResource,
  2358  		HTTPMethod: "POST",
  2359  		HTTPPath:   "/",
  2360  	}
  2361  
  2362  	if input == nil {
  2363  		input = &TagResourceInput{}
  2364  	}
  2365  
  2366  	output = &TagResourceOutput{}
  2367  	req = c.newRequest(op, input, output)
  2368  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2369  	return
  2370  }
  2371  
  2372  // TagResource API operation for AWS Network Firewall.
  2373  //
  2374  // Adds the specified tags to the specified resource. Tags are key:value pairs
  2375  // that you can use to categorize and manage your resources, for purposes like
  2376  // billing. For example, you might set the tag key to "customer" and the value
  2377  // to the customer name or ID. You can specify one or more tags to add to each
  2378  // AWS resource, up to 50 tags for a resource.
  2379  //
  2380  // You can tag the AWS resources that you manage through AWS Network Firewall:
  2381  // firewalls, firewall policies, and rule groups.
  2382  //
  2383  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2384  // with awserr.Error's Code and Message methods to get detailed information about
  2385  // the error.
  2386  //
  2387  // See the AWS API reference guide for AWS Network Firewall's
  2388  // API operation TagResource for usage and error information.
  2389  //
  2390  // Returned Error Types:
  2391  //   * ResourceNotFoundException
  2392  //   Unable to locate a resource using the parameters that you provided.
  2393  //
  2394  //   * InvalidRequestException
  2395  //   The operation failed because of a problem with your request. Examples include:
  2396  //
  2397  //      * You specified an unsupported parameter name or value.
  2398  //
  2399  //      * You tried to update a property with a value that isn't among the available
  2400  //      types.
  2401  //
  2402  //      * Your request references an ARN that is malformed, or corresponds to
  2403  //      a resource that isn't valid in the context of the request.
  2404  //
  2405  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/TagResource
  2406  func (c *NetworkFirewall) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
  2407  	req, out := c.TagResourceRequest(input)
  2408  	return out, req.Send()
  2409  }
  2410  
  2411  // TagResourceWithContext is the same as TagResource with the addition of
  2412  // the ability to pass a context and additional request options.
  2413  //
  2414  // See TagResource for details on how to use this API operation.
  2415  //
  2416  // The context must be non-nil and will be used for request cancellation. If
  2417  // the context is nil a panic will occur. In the future the SDK may create
  2418  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2419  // for more information on using Contexts.
  2420  func (c *NetworkFirewall) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
  2421  	req, out := c.TagResourceRequest(input)
  2422  	req.SetContext(ctx)
  2423  	req.ApplyOptions(opts...)
  2424  	return out, req.Send()
  2425  }
  2426  
  2427  const opUntagResource = "UntagResource"
  2428  
  2429  // UntagResourceRequest generates a "aws/request.Request" representing the
  2430  // client's request for the UntagResource operation. The "output" return
  2431  // value will be populated with the request's response once the request completes
  2432  // successfully.
  2433  //
  2434  // Use "Send" method on the returned Request to send the API call to the service.
  2435  // the "output" return value is not valid until after Send returns without error.
  2436  //
  2437  // See UntagResource for more information on using the UntagResource
  2438  // API call, and error handling.
  2439  //
  2440  // This method is useful when you want to inject custom logic or configuration
  2441  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2442  //
  2443  //
  2444  //    // Example sending a request using the UntagResourceRequest method.
  2445  //    req, resp := client.UntagResourceRequest(params)
  2446  //
  2447  //    err := req.Send()
  2448  //    if err == nil { // resp is now filled
  2449  //        fmt.Println(resp)
  2450  //    }
  2451  //
  2452  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UntagResource
  2453  func (c *NetworkFirewall) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
  2454  	op := &request.Operation{
  2455  		Name:       opUntagResource,
  2456  		HTTPMethod: "POST",
  2457  		HTTPPath:   "/",
  2458  	}
  2459  
  2460  	if input == nil {
  2461  		input = &UntagResourceInput{}
  2462  	}
  2463  
  2464  	output = &UntagResourceOutput{}
  2465  	req = c.newRequest(op, input, output)
  2466  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2467  	return
  2468  }
  2469  
  2470  // UntagResource API operation for AWS Network Firewall.
  2471  //
  2472  // Removes the tags with the specified keys from the specified resource. Tags
  2473  // are key:value pairs that you can use to categorize and manage your resources,
  2474  // for purposes like billing. For example, you might set the tag key to "customer"
  2475  // and the value to the customer name or ID. You can specify one or more tags
  2476  // to add to each AWS resource, up to 50 tags for a resource.
  2477  //
  2478  // You can manage tags for the AWS resources that you manage through AWS Network
  2479  // Firewall: firewalls, firewall policies, and rule groups.
  2480  //
  2481  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2482  // with awserr.Error's Code and Message methods to get detailed information about
  2483  // the error.
  2484  //
  2485  // See the AWS API reference guide for AWS Network Firewall's
  2486  // API operation UntagResource for usage and error information.
  2487  //
  2488  // Returned Error Types:
  2489  //   * ResourceNotFoundException
  2490  //   Unable to locate a resource using the parameters that you provided.
  2491  //
  2492  //   * InvalidRequestException
  2493  //   The operation failed because of a problem with your request. Examples include:
  2494  //
  2495  //      * You specified an unsupported parameter name or value.
  2496  //
  2497  //      * You tried to update a property with a value that isn't among the available
  2498  //      types.
  2499  //
  2500  //      * Your request references an ARN that is malformed, or corresponds to
  2501  //      a resource that isn't valid in the context of the request.
  2502  //
  2503  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UntagResource
  2504  func (c *NetworkFirewall) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
  2505  	req, out := c.UntagResourceRequest(input)
  2506  	return out, req.Send()
  2507  }
  2508  
  2509  // UntagResourceWithContext is the same as UntagResource with the addition of
  2510  // the ability to pass a context and additional request options.
  2511  //
  2512  // See UntagResource for details on how to use this API operation.
  2513  //
  2514  // The context must be non-nil and will be used for request cancellation. If
  2515  // the context is nil a panic will occur. In the future the SDK may create
  2516  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2517  // for more information on using Contexts.
  2518  func (c *NetworkFirewall) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
  2519  	req, out := c.UntagResourceRequest(input)
  2520  	req.SetContext(ctx)
  2521  	req.ApplyOptions(opts...)
  2522  	return out, req.Send()
  2523  }
  2524  
  2525  const opUpdateFirewallDeleteProtection = "UpdateFirewallDeleteProtection"
  2526  
  2527  // UpdateFirewallDeleteProtectionRequest generates a "aws/request.Request" representing the
  2528  // client's request for the UpdateFirewallDeleteProtection operation. The "output" return
  2529  // value will be populated with the request's response once the request completes
  2530  // successfully.
  2531  //
  2532  // Use "Send" method on the returned Request to send the API call to the service.
  2533  // the "output" return value is not valid until after Send returns without error.
  2534  //
  2535  // See UpdateFirewallDeleteProtection for more information on using the UpdateFirewallDeleteProtection
  2536  // API call, and error handling.
  2537  //
  2538  // This method is useful when you want to inject custom logic or configuration
  2539  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2540  //
  2541  //
  2542  //    // Example sending a request using the UpdateFirewallDeleteProtectionRequest method.
  2543  //    req, resp := client.UpdateFirewallDeleteProtectionRequest(params)
  2544  //
  2545  //    err := req.Send()
  2546  //    if err == nil { // resp is now filled
  2547  //        fmt.Println(resp)
  2548  //    }
  2549  //
  2550  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDeleteProtection
  2551  func (c *NetworkFirewall) UpdateFirewallDeleteProtectionRequest(input *UpdateFirewallDeleteProtectionInput) (req *request.Request, output *UpdateFirewallDeleteProtectionOutput) {
  2552  	op := &request.Operation{
  2553  		Name:       opUpdateFirewallDeleteProtection,
  2554  		HTTPMethod: "POST",
  2555  		HTTPPath:   "/",
  2556  	}
  2557  
  2558  	if input == nil {
  2559  		input = &UpdateFirewallDeleteProtectionInput{}
  2560  	}
  2561  
  2562  	output = &UpdateFirewallDeleteProtectionOutput{}
  2563  	req = c.newRequest(op, input, output)
  2564  	return
  2565  }
  2566  
  2567  // UpdateFirewallDeleteProtection API operation for AWS Network Firewall.
  2568  //
  2569  // Modifies the flag, DeleteProtection, which indicates whether it is possible
  2570  // to delete the firewall. If the flag is set to TRUE, the firewall is protected
  2571  // against deletion. This setting helps protect against accidentally deleting
  2572  // a firewall that's in use.
  2573  //
  2574  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2575  // with awserr.Error's Code and Message methods to get detailed information about
  2576  // the error.
  2577  //
  2578  // See the AWS API reference guide for AWS Network Firewall's
  2579  // API operation UpdateFirewallDeleteProtection for usage and error information.
  2580  //
  2581  // Returned Error Types:
  2582  //   * InvalidRequestException
  2583  //   The operation failed because of a problem with your request. Examples include:
  2584  //
  2585  //      * You specified an unsupported parameter name or value.
  2586  //
  2587  //      * You tried to update a property with a value that isn't among the available
  2588  //      types.
  2589  //
  2590  //      * Your request references an ARN that is malformed, or corresponds to
  2591  //      a resource that isn't valid in the context of the request.
  2592  //
  2593  //   * InternalServerError
  2594  //   Your request is valid, but Network Firewall couldn’t perform the operation
  2595  //   because of a system problem. Retry your request.
  2596  //
  2597  //   * ResourceNotFoundException
  2598  //   Unable to locate a resource using the parameters that you provided.
  2599  //
  2600  //   * ThrottlingException
  2601  //   Unable to process the request due to throttling limitations.
  2602  //
  2603  //   * InvalidTokenException
  2604  //   The token you provided is stale or isn't valid for the operation.
  2605  //
  2606  //   * ResourceOwnerCheckException
  2607  //   Unable to change the resource because your account doesn't own it.
  2608  //
  2609  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDeleteProtection
  2610  func (c *NetworkFirewall) UpdateFirewallDeleteProtection(input *UpdateFirewallDeleteProtectionInput) (*UpdateFirewallDeleteProtectionOutput, error) {
  2611  	req, out := c.UpdateFirewallDeleteProtectionRequest(input)
  2612  	return out, req.Send()
  2613  }
  2614  
  2615  // UpdateFirewallDeleteProtectionWithContext is the same as UpdateFirewallDeleteProtection with the addition of
  2616  // the ability to pass a context and additional request options.
  2617  //
  2618  // See UpdateFirewallDeleteProtection for details on how to use this API operation.
  2619  //
  2620  // The context must be non-nil and will be used for request cancellation. If
  2621  // the context is nil a panic will occur. In the future the SDK may create
  2622  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2623  // for more information on using Contexts.
  2624  func (c *NetworkFirewall) UpdateFirewallDeleteProtectionWithContext(ctx aws.Context, input *UpdateFirewallDeleteProtectionInput, opts ...request.Option) (*UpdateFirewallDeleteProtectionOutput, error) {
  2625  	req, out := c.UpdateFirewallDeleteProtectionRequest(input)
  2626  	req.SetContext(ctx)
  2627  	req.ApplyOptions(opts...)
  2628  	return out, req.Send()
  2629  }
  2630  
  2631  const opUpdateFirewallDescription = "UpdateFirewallDescription"
  2632  
  2633  // UpdateFirewallDescriptionRequest generates a "aws/request.Request" representing the
  2634  // client's request for the UpdateFirewallDescription operation. The "output" return
  2635  // value will be populated with the request's response once the request completes
  2636  // successfully.
  2637  //
  2638  // Use "Send" method on the returned Request to send the API call to the service.
  2639  // the "output" return value is not valid until after Send returns without error.
  2640  //
  2641  // See UpdateFirewallDescription for more information on using the UpdateFirewallDescription
  2642  // API call, and error handling.
  2643  //
  2644  // This method is useful when you want to inject custom logic or configuration
  2645  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2646  //
  2647  //
  2648  //    // Example sending a request using the UpdateFirewallDescriptionRequest method.
  2649  //    req, resp := client.UpdateFirewallDescriptionRequest(params)
  2650  //
  2651  //    err := req.Send()
  2652  //    if err == nil { // resp is now filled
  2653  //        fmt.Println(resp)
  2654  //    }
  2655  //
  2656  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDescription
  2657  func (c *NetworkFirewall) UpdateFirewallDescriptionRequest(input *UpdateFirewallDescriptionInput) (req *request.Request, output *UpdateFirewallDescriptionOutput) {
  2658  	op := &request.Operation{
  2659  		Name:       opUpdateFirewallDescription,
  2660  		HTTPMethod: "POST",
  2661  		HTTPPath:   "/",
  2662  	}
  2663  
  2664  	if input == nil {
  2665  		input = &UpdateFirewallDescriptionInput{}
  2666  	}
  2667  
  2668  	output = &UpdateFirewallDescriptionOutput{}
  2669  	req = c.newRequest(op, input, output)
  2670  	return
  2671  }
  2672  
  2673  // UpdateFirewallDescription API operation for AWS Network Firewall.
  2674  //
  2675  // Modifies the description for the specified firewall. Use the description
  2676  // to help you identify the firewall when you're working with it.
  2677  //
  2678  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2679  // with awserr.Error's Code and Message methods to get detailed information about
  2680  // the error.
  2681  //
  2682  // See the AWS API reference guide for AWS Network Firewall's
  2683  // API operation UpdateFirewallDescription for usage and error information.
  2684  //
  2685  // Returned Error Types:
  2686  //   * InvalidRequestException
  2687  //   The operation failed because of a problem with your request. Examples include:
  2688  //
  2689  //      * You specified an unsupported parameter name or value.
  2690  //
  2691  //      * You tried to update a property with a value that isn't among the available
  2692  //      types.
  2693  //
  2694  //      * Your request references an ARN that is malformed, or corresponds to
  2695  //      a resource that isn't valid in the context of the request.
  2696  //
  2697  //   * InternalServerError
  2698  //   Your request is valid, but Network Firewall couldn’t perform the operation
  2699  //   because of a system problem. Retry your request.
  2700  //
  2701  //   * ResourceNotFoundException
  2702  //   Unable to locate a resource using the parameters that you provided.
  2703  //
  2704  //   * ThrottlingException
  2705  //   Unable to process the request due to throttling limitations.
  2706  //
  2707  //   * InvalidTokenException
  2708  //   The token you provided is stale or isn't valid for the operation.
  2709  //
  2710  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDescription
  2711  func (c *NetworkFirewall) UpdateFirewallDescription(input *UpdateFirewallDescriptionInput) (*UpdateFirewallDescriptionOutput, error) {
  2712  	req, out := c.UpdateFirewallDescriptionRequest(input)
  2713  	return out, req.Send()
  2714  }
  2715  
  2716  // UpdateFirewallDescriptionWithContext is the same as UpdateFirewallDescription with the addition of
  2717  // the ability to pass a context and additional request options.
  2718  //
  2719  // See UpdateFirewallDescription for details on how to use this API operation.
  2720  //
  2721  // The context must be non-nil and will be used for request cancellation. If
  2722  // the context is nil a panic will occur. In the future the SDK may create
  2723  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2724  // for more information on using Contexts.
  2725  func (c *NetworkFirewall) UpdateFirewallDescriptionWithContext(ctx aws.Context, input *UpdateFirewallDescriptionInput, opts ...request.Option) (*UpdateFirewallDescriptionOutput, error) {
  2726  	req, out := c.UpdateFirewallDescriptionRequest(input)
  2727  	req.SetContext(ctx)
  2728  	req.ApplyOptions(opts...)
  2729  	return out, req.Send()
  2730  }
  2731  
  2732  const opUpdateFirewallPolicy = "UpdateFirewallPolicy"
  2733  
  2734  // UpdateFirewallPolicyRequest generates a "aws/request.Request" representing the
  2735  // client's request for the UpdateFirewallPolicy operation. The "output" return
  2736  // value will be populated with the request's response once the request completes
  2737  // successfully.
  2738  //
  2739  // Use "Send" method on the returned Request to send the API call to the service.
  2740  // the "output" return value is not valid until after Send returns without error.
  2741  //
  2742  // See UpdateFirewallPolicy for more information on using the UpdateFirewallPolicy
  2743  // API call, and error handling.
  2744  //
  2745  // This method is useful when you want to inject custom logic or configuration
  2746  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2747  //
  2748  //
  2749  //    // Example sending a request using the UpdateFirewallPolicyRequest method.
  2750  //    req, resp := client.UpdateFirewallPolicyRequest(params)
  2751  //
  2752  //    err := req.Send()
  2753  //    if err == nil { // resp is now filled
  2754  //        fmt.Println(resp)
  2755  //    }
  2756  //
  2757  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicy
  2758  func (c *NetworkFirewall) UpdateFirewallPolicyRequest(input *UpdateFirewallPolicyInput) (req *request.Request, output *UpdateFirewallPolicyOutput) {
  2759  	op := &request.Operation{
  2760  		Name:       opUpdateFirewallPolicy,
  2761  		HTTPMethod: "POST",
  2762  		HTTPPath:   "/",
  2763  	}
  2764  
  2765  	if input == nil {
  2766  		input = &UpdateFirewallPolicyInput{}
  2767  	}
  2768  
  2769  	output = &UpdateFirewallPolicyOutput{}
  2770  	req = c.newRequest(op, input, output)
  2771  	return
  2772  }
  2773  
  2774  // UpdateFirewallPolicy API operation for AWS Network Firewall.
  2775  //
  2776  // Updates the properties of the specified firewall policy.
  2777  //
  2778  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2779  // with awserr.Error's Code and Message methods to get detailed information about
  2780  // the error.
  2781  //
  2782  // See the AWS API reference guide for AWS Network Firewall's
  2783  // API operation UpdateFirewallPolicy for usage and error information.
  2784  //
  2785  // Returned Error Types:
  2786  //   * InvalidRequestException
  2787  //   The operation failed because of a problem with your request. Examples include:
  2788  //
  2789  //      * You specified an unsupported parameter name or value.
  2790  //
  2791  //      * You tried to update a property with a value that isn't among the available
  2792  //      types.
  2793  //
  2794  //      * Your request references an ARN that is malformed, or corresponds to
  2795  //      a resource that isn't valid in the context of the request.
  2796  //
  2797  //   * ResourceNotFoundException
  2798  //   Unable to locate a resource using the parameters that you provided.
  2799  //
  2800  //   * ThrottlingException
  2801  //   Unable to process the request due to throttling limitations.
  2802  //
  2803  //   * InternalServerError
  2804  //   Your request is valid, but Network Firewall couldn’t perform the operation
  2805  //   because of a system problem. Retry your request.
  2806  //
  2807  //   * InvalidTokenException
  2808  //   The token you provided is stale or isn't valid for the operation.
  2809  //
  2810  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicy
  2811  func (c *NetworkFirewall) UpdateFirewallPolicy(input *UpdateFirewallPolicyInput) (*UpdateFirewallPolicyOutput, error) {
  2812  	req, out := c.UpdateFirewallPolicyRequest(input)
  2813  	return out, req.Send()
  2814  }
  2815  
  2816  // UpdateFirewallPolicyWithContext is the same as UpdateFirewallPolicy with the addition of
  2817  // the ability to pass a context and additional request options.
  2818  //
  2819  // See UpdateFirewallPolicy for details on how to use this API operation.
  2820  //
  2821  // The context must be non-nil and will be used for request cancellation. If
  2822  // the context is nil a panic will occur. In the future the SDK may create
  2823  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2824  // for more information on using Contexts.
  2825  func (c *NetworkFirewall) UpdateFirewallPolicyWithContext(ctx aws.Context, input *UpdateFirewallPolicyInput, opts ...request.Option) (*UpdateFirewallPolicyOutput, error) {
  2826  	req, out := c.UpdateFirewallPolicyRequest(input)
  2827  	req.SetContext(ctx)
  2828  	req.ApplyOptions(opts...)
  2829  	return out, req.Send()
  2830  }
  2831  
  2832  const opUpdateFirewallPolicyChangeProtection = "UpdateFirewallPolicyChangeProtection"
  2833  
  2834  // UpdateFirewallPolicyChangeProtectionRequest generates a "aws/request.Request" representing the
  2835  // client's request for the UpdateFirewallPolicyChangeProtection operation. The "output" return
  2836  // value will be populated with the request's response once the request completes
  2837  // successfully.
  2838  //
  2839  // Use "Send" method on the returned Request to send the API call to the service.
  2840  // the "output" return value is not valid until after Send returns without error.
  2841  //
  2842  // See UpdateFirewallPolicyChangeProtection for more information on using the UpdateFirewallPolicyChangeProtection
  2843  // API call, and error handling.
  2844  //
  2845  // This method is useful when you want to inject custom logic or configuration
  2846  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2847  //
  2848  //
  2849  //    // Example sending a request using the UpdateFirewallPolicyChangeProtectionRequest method.
  2850  //    req, resp := client.UpdateFirewallPolicyChangeProtectionRequest(params)
  2851  //
  2852  //    err := req.Send()
  2853  //    if err == nil { // resp is now filled
  2854  //        fmt.Println(resp)
  2855  //    }
  2856  //
  2857  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicyChangeProtection
  2858  func (c *NetworkFirewall) UpdateFirewallPolicyChangeProtectionRequest(input *UpdateFirewallPolicyChangeProtectionInput) (req *request.Request, output *UpdateFirewallPolicyChangeProtectionOutput) {
  2859  	op := &request.Operation{
  2860  		Name:       opUpdateFirewallPolicyChangeProtection,
  2861  		HTTPMethod: "POST",
  2862  		HTTPPath:   "/",
  2863  	}
  2864  
  2865  	if input == nil {
  2866  		input = &UpdateFirewallPolicyChangeProtectionInput{}
  2867  	}
  2868  
  2869  	output = &UpdateFirewallPolicyChangeProtectionOutput{}
  2870  	req = c.newRequest(op, input, output)
  2871  	return
  2872  }
  2873  
  2874  // UpdateFirewallPolicyChangeProtection API operation for AWS Network Firewall.
  2875  //
  2876  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2877  // with awserr.Error's Code and Message methods to get detailed information about
  2878  // the error.
  2879  //
  2880  // See the AWS API reference guide for AWS Network Firewall's
  2881  // API operation UpdateFirewallPolicyChangeProtection for usage and error information.
  2882  //
  2883  // Returned Error Types:
  2884  //   * InvalidRequestException
  2885  //   The operation failed because of a problem with your request. Examples include:
  2886  //
  2887  //      * You specified an unsupported parameter name or value.
  2888  //
  2889  //      * You tried to update a property with a value that isn't among the available
  2890  //      types.
  2891  //
  2892  //      * Your request references an ARN that is malformed, or corresponds to
  2893  //      a resource that isn't valid in the context of the request.
  2894  //
  2895  //   * InternalServerError
  2896  //   Your request is valid, but Network Firewall couldn’t perform the operation
  2897  //   because of a system problem. Retry your request.
  2898  //
  2899  //   * ResourceNotFoundException
  2900  //   Unable to locate a resource using the parameters that you provided.
  2901  //
  2902  //   * ThrottlingException
  2903  //   Unable to process the request due to throttling limitations.
  2904  //
  2905  //   * InvalidTokenException
  2906  //   The token you provided is stale or isn't valid for the operation.
  2907  //
  2908  //   * ResourceOwnerCheckException
  2909  //   Unable to change the resource because your account doesn't own it.
  2910  //
  2911  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicyChangeProtection
  2912  func (c *NetworkFirewall) UpdateFirewallPolicyChangeProtection(input *UpdateFirewallPolicyChangeProtectionInput) (*UpdateFirewallPolicyChangeProtectionOutput, error) {
  2913  	req, out := c.UpdateFirewallPolicyChangeProtectionRequest(input)
  2914  	return out, req.Send()
  2915  }
  2916  
  2917  // UpdateFirewallPolicyChangeProtectionWithContext is the same as UpdateFirewallPolicyChangeProtection with the addition of
  2918  // the ability to pass a context and additional request options.
  2919  //
  2920  // See UpdateFirewallPolicyChangeProtection for details on how to use this API operation.
  2921  //
  2922  // The context must be non-nil and will be used for request cancellation. If
  2923  // the context is nil a panic will occur. In the future the SDK may create
  2924  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2925  // for more information on using Contexts.
  2926  func (c *NetworkFirewall) UpdateFirewallPolicyChangeProtectionWithContext(ctx aws.Context, input *UpdateFirewallPolicyChangeProtectionInput, opts ...request.Option) (*UpdateFirewallPolicyChangeProtectionOutput, error) {
  2927  	req, out := c.UpdateFirewallPolicyChangeProtectionRequest(input)
  2928  	req.SetContext(ctx)
  2929  	req.ApplyOptions(opts...)
  2930  	return out, req.Send()
  2931  }
  2932  
  2933  const opUpdateLoggingConfiguration = "UpdateLoggingConfiguration"
  2934  
  2935  // UpdateLoggingConfigurationRequest generates a "aws/request.Request" representing the
  2936  // client's request for the UpdateLoggingConfiguration operation. The "output" return
  2937  // value will be populated with the request's response once the request completes
  2938  // successfully.
  2939  //
  2940  // Use "Send" method on the returned Request to send the API call to the service.
  2941  // the "output" return value is not valid until after Send returns without error.
  2942  //
  2943  // See UpdateLoggingConfiguration for more information on using the UpdateLoggingConfiguration
  2944  // API call, and error handling.
  2945  //
  2946  // This method is useful when you want to inject custom logic or configuration
  2947  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2948  //
  2949  //
  2950  //    // Example sending a request using the UpdateLoggingConfigurationRequest method.
  2951  //    req, resp := client.UpdateLoggingConfigurationRequest(params)
  2952  //
  2953  //    err := req.Send()
  2954  //    if err == nil { // resp is now filled
  2955  //        fmt.Println(resp)
  2956  //    }
  2957  //
  2958  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateLoggingConfiguration
  2959  func (c *NetworkFirewall) UpdateLoggingConfigurationRequest(input *UpdateLoggingConfigurationInput) (req *request.Request, output *UpdateLoggingConfigurationOutput) {
  2960  	op := &request.Operation{
  2961  		Name:       opUpdateLoggingConfiguration,
  2962  		HTTPMethod: "POST",
  2963  		HTTPPath:   "/",
  2964  	}
  2965  
  2966  	if input == nil {
  2967  		input = &UpdateLoggingConfigurationInput{}
  2968  	}
  2969  
  2970  	output = &UpdateLoggingConfigurationOutput{}
  2971  	req = c.newRequest(op, input, output)
  2972  	return
  2973  }
  2974  
  2975  // UpdateLoggingConfiguration API operation for AWS Network Firewall.
  2976  //
  2977  // Sets the logging configuration for the specified firewall.
  2978  //
  2979  // To change the logging configuration, retrieve the LoggingConfiguration by
  2980  // calling DescribeLoggingConfiguration, then change it and provide the modified
  2981  // object to this update call. You must change the logging configuration one
  2982  // LogDestinationConfig at a time inside the retrieved LoggingConfiguration
  2983  // object.
  2984  //
  2985  // You can perform only one of the following actions in any call to UpdateLoggingConfiguration:
  2986  //
  2987  //    * Create a new log destination object by adding a single LogDestinationConfig
  2988  //    array element to LogDestinationConfigs.
  2989  //
  2990  //    * Delete a log destination object by removing a single LogDestinationConfig
  2991  //    array element from LogDestinationConfigs.
  2992  //
  2993  //    * Change the LogDestination setting in a single LogDestinationConfig array
  2994  //    element.
  2995  //
  2996  // You can't change the LogDestinationType or LogType in a LogDestinationConfig.
  2997  // To change these settings, delete the existing LogDestinationConfig object
  2998  // and create a new one, using two separate calls to this update operation.
  2999  //
  3000  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3001  // with awserr.Error's Code and Message methods to get detailed information about
  3002  // the error.
  3003  //
  3004  // See the AWS API reference guide for AWS Network Firewall's
  3005  // API operation UpdateLoggingConfiguration for usage and error information.
  3006  //
  3007  // Returned Error Types:
  3008  //   * InvalidRequestException
  3009  //   The operation failed because of a problem with your request. Examples include:
  3010  //
  3011  //      * You specified an unsupported parameter name or value.
  3012  //
  3013  //      * You tried to update a property with a value that isn't among the available
  3014  //      types.
  3015  //
  3016  //      * Your request references an ARN that is malformed, or corresponds to
  3017  //      a resource that isn't valid in the context of the request.
  3018  //
  3019  //   * InternalServerError
  3020  //   Your request is valid, but Network Firewall couldn’t perform the operation
  3021  //   because of a system problem. Retry your request.
  3022  //
  3023  //   * ResourceNotFoundException
  3024  //   Unable to locate a resource using the parameters that you provided.
  3025  //
  3026  //   * ThrottlingException
  3027  //   Unable to process the request due to throttling limitations.
  3028  //
  3029  //   * InvalidTokenException
  3030  //   The token you provided is stale or isn't valid for the operation.
  3031  //
  3032  //   * LogDestinationPermissionException
  3033  //   Unable to send logs to a configured logging destination.
  3034  //
  3035  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateLoggingConfiguration
  3036  func (c *NetworkFirewall) UpdateLoggingConfiguration(input *UpdateLoggingConfigurationInput) (*UpdateLoggingConfigurationOutput, error) {
  3037  	req, out := c.UpdateLoggingConfigurationRequest(input)
  3038  	return out, req.Send()
  3039  }
  3040  
  3041  // UpdateLoggingConfigurationWithContext is the same as UpdateLoggingConfiguration with the addition of
  3042  // the ability to pass a context and additional request options.
  3043  //
  3044  // See UpdateLoggingConfiguration for details on how to use this API operation.
  3045  //
  3046  // The context must be non-nil and will be used for request cancellation. If
  3047  // the context is nil a panic will occur. In the future the SDK may create
  3048  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3049  // for more information on using Contexts.
  3050  func (c *NetworkFirewall) UpdateLoggingConfigurationWithContext(ctx aws.Context, input *UpdateLoggingConfigurationInput, opts ...request.Option) (*UpdateLoggingConfigurationOutput, error) {
  3051  	req, out := c.UpdateLoggingConfigurationRequest(input)
  3052  	req.SetContext(ctx)
  3053  	req.ApplyOptions(opts...)
  3054  	return out, req.Send()
  3055  }
  3056  
  3057  const opUpdateRuleGroup = "UpdateRuleGroup"
  3058  
  3059  // UpdateRuleGroupRequest generates a "aws/request.Request" representing the
  3060  // client's request for the UpdateRuleGroup operation. The "output" return
  3061  // value will be populated with the request's response once the request completes
  3062  // successfully.
  3063  //
  3064  // Use "Send" method on the returned Request to send the API call to the service.
  3065  // the "output" return value is not valid until after Send returns without error.
  3066  //
  3067  // See UpdateRuleGroup for more information on using the UpdateRuleGroup
  3068  // API call, and error handling.
  3069  //
  3070  // This method is useful when you want to inject custom logic or configuration
  3071  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3072  //
  3073  //
  3074  //    // Example sending a request using the UpdateRuleGroupRequest method.
  3075  //    req, resp := client.UpdateRuleGroupRequest(params)
  3076  //
  3077  //    err := req.Send()
  3078  //    if err == nil { // resp is now filled
  3079  //        fmt.Println(resp)
  3080  //    }
  3081  //
  3082  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateRuleGroup
  3083  func (c *NetworkFirewall) UpdateRuleGroupRequest(input *UpdateRuleGroupInput) (req *request.Request, output *UpdateRuleGroupOutput) {
  3084  	op := &request.Operation{
  3085  		Name:       opUpdateRuleGroup,
  3086  		HTTPMethod: "POST",
  3087  		HTTPPath:   "/",
  3088  	}
  3089  
  3090  	if input == nil {
  3091  		input = &UpdateRuleGroupInput{}
  3092  	}
  3093  
  3094  	output = &UpdateRuleGroupOutput{}
  3095  	req = c.newRequest(op, input, output)
  3096  	return
  3097  }
  3098  
  3099  // UpdateRuleGroup API operation for AWS Network Firewall.
  3100  //
  3101  // Updates the rule settings for the specified rule group. You use a rule group
  3102  // by reference in one or more firewall policies. When you modify a rule group,
  3103  // you modify all firewall policies that use the rule group.
  3104  //
  3105  // To update a rule group, first call DescribeRuleGroup to retrieve the current
  3106  // RuleGroup object, update the object as needed, and then provide the updated
  3107  // object to this call.
  3108  //
  3109  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3110  // with awserr.Error's Code and Message methods to get detailed information about
  3111  // the error.
  3112  //
  3113  // See the AWS API reference guide for AWS Network Firewall's
  3114  // API operation UpdateRuleGroup for usage and error information.
  3115  //
  3116  // Returned Error Types:
  3117  //   * ResourceNotFoundException
  3118  //   Unable to locate a resource using the parameters that you provided.
  3119  //
  3120  //   * InvalidRequestException
  3121  //   The operation failed because of a problem with your request. Examples include:
  3122  //
  3123  //      * You specified an unsupported parameter name or value.
  3124  //
  3125  //      * You tried to update a property with a value that isn't among the available
  3126  //      types.
  3127  //
  3128  //      * Your request references an ARN that is malformed, or corresponds to
  3129  //      a resource that isn't valid in the context of the request.
  3130  //
  3131  //   * ThrottlingException
  3132  //   Unable to process the request due to throttling limitations.
  3133  //
  3134  //   * InternalServerError
  3135  //   Your request is valid, but Network Firewall couldn’t perform the operation
  3136  //   because of a system problem. Retry your request.
  3137  //
  3138  //   * InvalidTokenException
  3139  //   The token you provided is stale or isn't valid for the operation.
  3140  //
  3141  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateRuleGroup
  3142  func (c *NetworkFirewall) UpdateRuleGroup(input *UpdateRuleGroupInput) (*UpdateRuleGroupOutput, error) {
  3143  	req, out := c.UpdateRuleGroupRequest(input)
  3144  	return out, req.Send()
  3145  }
  3146  
  3147  // UpdateRuleGroupWithContext is the same as UpdateRuleGroup with the addition of
  3148  // the ability to pass a context and additional request options.
  3149  //
  3150  // See UpdateRuleGroup for details on how to use this API operation.
  3151  //
  3152  // The context must be non-nil and will be used for request cancellation. If
  3153  // the context is nil a panic will occur. In the future the SDK may create
  3154  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3155  // for more information on using Contexts.
  3156  func (c *NetworkFirewall) UpdateRuleGroupWithContext(ctx aws.Context, input *UpdateRuleGroupInput, opts ...request.Option) (*UpdateRuleGroupOutput, error) {
  3157  	req, out := c.UpdateRuleGroupRequest(input)
  3158  	req.SetContext(ctx)
  3159  	req.ApplyOptions(opts...)
  3160  	return out, req.Send()
  3161  }
  3162  
  3163  const opUpdateSubnetChangeProtection = "UpdateSubnetChangeProtection"
  3164  
  3165  // UpdateSubnetChangeProtectionRequest generates a "aws/request.Request" representing the
  3166  // client's request for the UpdateSubnetChangeProtection operation. The "output" return
  3167  // value will be populated with the request's response once the request completes
  3168  // successfully.
  3169  //
  3170  // Use "Send" method on the returned Request to send the API call to the service.
  3171  // the "output" return value is not valid until after Send returns without error.
  3172  //
  3173  // See UpdateSubnetChangeProtection for more information on using the UpdateSubnetChangeProtection
  3174  // API call, and error handling.
  3175  //
  3176  // This method is useful when you want to inject custom logic or configuration
  3177  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3178  //
  3179  //
  3180  //    // Example sending a request using the UpdateSubnetChangeProtectionRequest method.
  3181  //    req, resp := client.UpdateSubnetChangeProtectionRequest(params)
  3182  //
  3183  //    err := req.Send()
  3184  //    if err == nil { // resp is now filled
  3185  //        fmt.Println(resp)
  3186  //    }
  3187  //
  3188  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateSubnetChangeProtection
  3189  func (c *NetworkFirewall) UpdateSubnetChangeProtectionRequest(input *UpdateSubnetChangeProtectionInput) (req *request.Request, output *UpdateSubnetChangeProtectionOutput) {
  3190  	op := &request.Operation{
  3191  		Name:       opUpdateSubnetChangeProtection,
  3192  		HTTPMethod: "POST",
  3193  		HTTPPath:   "/",
  3194  	}
  3195  
  3196  	if input == nil {
  3197  		input = &UpdateSubnetChangeProtectionInput{}
  3198  	}
  3199  
  3200  	output = &UpdateSubnetChangeProtectionOutput{}
  3201  	req = c.newRequest(op, input, output)
  3202  	return
  3203  }
  3204  
  3205  // UpdateSubnetChangeProtection API operation for AWS Network Firewall.
  3206  //
  3207  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3208  // with awserr.Error's Code and Message methods to get detailed information about
  3209  // the error.
  3210  //
  3211  // See the AWS API reference guide for AWS Network Firewall's
  3212  // API operation UpdateSubnetChangeProtection for usage and error information.
  3213  //
  3214  // Returned Error Types:
  3215  //   * InvalidRequestException
  3216  //   The operation failed because of a problem with your request. Examples include:
  3217  //
  3218  //      * You specified an unsupported parameter name or value.
  3219  //
  3220  //      * You tried to update a property with a value that isn't among the available
  3221  //      types.
  3222  //
  3223  //      * Your request references an ARN that is malformed, or corresponds to
  3224  //      a resource that isn't valid in the context of the request.
  3225  //
  3226  //   * InternalServerError
  3227  //   Your request is valid, but Network Firewall couldn’t perform the operation
  3228  //   because of a system problem. Retry your request.
  3229  //
  3230  //   * ResourceNotFoundException
  3231  //   Unable to locate a resource using the parameters that you provided.
  3232  //
  3233  //   * ThrottlingException
  3234  //   Unable to process the request due to throttling limitations.
  3235  //
  3236  //   * InvalidTokenException
  3237  //   The token you provided is stale or isn't valid for the operation.
  3238  //
  3239  //   * ResourceOwnerCheckException
  3240  //   Unable to change the resource because your account doesn't own it.
  3241  //
  3242  // See also, https://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateSubnetChangeProtection
  3243  func (c *NetworkFirewall) UpdateSubnetChangeProtection(input *UpdateSubnetChangeProtectionInput) (*UpdateSubnetChangeProtectionOutput, error) {
  3244  	req, out := c.UpdateSubnetChangeProtectionRequest(input)
  3245  	return out, req.Send()
  3246  }
  3247  
  3248  // UpdateSubnetChangeProtectionWithContext is the same as UpdateSubnetChangeProtection with the addition of
  3249  // the ability to pass a context and additional request options.
  3250  //
  3251  // See UpdateSubnetChangeProtection for details on how to use this API operation.
  3252  //
  3253  // The context must be non-nil and will be used for request cancellation. If
  3254  // the context is nil a panic will occur. In the future the SDK may create
  3255  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3256  // for more information on using Contexts.
  3257  func (c *NetworkFirewall) UpdateSubnetChangeProtectionWithContext(ctx aws.Context, input *UpdateSubnetChangeProtectionInput, opts ...request.Option) (*UpdateSubnetChangeProtectionOutput, error) {
  3258  	req, out := c.UpdateSubnetChangeProtectionRequest(input)
  3259  	req.SetContext(ctx)
  3260  	req.ApplyOptions(opts...)
  3261  	return out, req.Send()
  3262  }
  3263  
  3264  // A custom action to use in stateless rule actions settings. This is used in
  3265  // CustomAction.
  3266  type ActionDefinition struct {
  3267  	_ struct{} `type:"structure"`
  3268  
  3269  	// Stateless inspection criteria that publishes the specified metrics to Amazon
  3270  	// CloudWatch for the matching packet. This setting defines a CloudWatch dimension
  3271  	// value to be published.
  3272  	//
  3273  	// You can pair this custom action with any of the standard stateless rule actions.
  3274  	// For example, you could pair this in a rule action with the standard action
  3275  	// that forwards the packet for stateful inspection. Then, when a packet matches
  3276  	// the rule, Network Firewall publishes metrics for the packet and forwards
  3277  	// it.
  3278  	PublishMetricAction *PublishMetricAction `type:"structure"`
  3279  }
  3280  
  3281  // String returns the string representation.
  3282  //
  3283  // API parameter values that are decorated as "sensitive" in the API will not
  3284  // be included in the string output. The member name will be present, but the
  3285  // value will be replaced with "sensitive".
  3286  func (s ActionDefinition) String() string {
  3287  	return awsutil.Prettify(s)
  3288  }
  3289  
  3290  // GoString returns the string representation.
  3291  //
  3292  // API parameter values that are decorated as "sensitive" in the API will not
  3293  // be included in the string output. The member name will be present, but the
  3294  // value will be replaced with "sensitive".
  3295  func (s ActionDefinition) GoString() string {
  3296  	return s.String()
  3297  }
  3298  
  3299  // Validate inspects the fields of the type to determine if they are valid.
  3300  func (s *ActionDefinition) Validate() error {
  3301  	invalidParams := request.ErrInvalidParams{Context: "ActionDefinition"}
  3302  	if s.PublishMetricAction != nil {
  3303  		if err := s.PublishMetricAction.Validate(); err != nil {
  3304  			invalidParams.AddNested("PublishMetricAction", err.(request.ErrInvalidParams))
  3305  		}
  3306  	}
  3307  
  3308  	if invalidParams.Len() > 0 {
  3309  		return invalidParams
  3310  	}
  3311  	return nil
  3312  }
  3313  
  3314  // SetPublishMetricAction sets the PublishMetricAction field's value.
  3315  func (s *ActionDefinition) SetPublishMetricAction(v *PublishMetricAction) *ActionDefinition {
  3316  	s.PublishMetricAction = v
  3317  	return s
  3318  }
  3319  
  3320  // A single IP address specification. This is used in the MatchAttributes source
  3321  // and destination specifications.
  3322  type Address struct {
  3323  	_ struct{} `type:"structure"`
  3324  
  3325  	// Specify an IP address or a block of IP addresses in Classless Inter-Domain
  3326  	// Routing (CIDR) notation. Network Firewall supports all address ranges for
  3327  	// IPv4.
  3328  	//
  3329  	// Examples:
  3330  	//
  3331  	//    * To configure Network Firewall to inspect for the IP address 192.0.2.44,
  3332  	//    specify 192.0.2.44/32.
  3333  	//
  3334  	//    * To configure Network Firewall to inspect for IP addresses from 192.0.2.0
  3335  	//    to 192.0.2.255, specify 192.0.2.0/24.
  3336  	//
  3337  	// For more information about CIDR notation, see the Wikipedia entry Classless
  3338  	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
  3339  	//
  3340  	// AddressDefinition is a required field
  3341  	AddressDefinition *string `min:"1" type:"string" required:"true"`
  3342  }
  3343  
  3344  // String returns the string representation.
  3345  //
  3346  // API parameter values that are decorated as "sensitive" in the API will not
  3347  // be included in the string output. The member name will be present, but the
  3348  // value will be replaced with "sensitive".
  3349  func (s Address) String() string {
  3350  	return awsutil.Prettify(s)
  3351  }
  3352  
  3353  // GoString returns the string representation.
  3354  //
  3355  // API parameter values that are decorated as "sensitive" in the API will not
  3356  // be included in the string output. The member name will be present, but the
  3357  // value will be replaced with "sensitive".
  3358  func (s Address) GoString() string {
  3359  	return s.String()
  3360  }
  3361  
  3362  // Validate inspects the fields of the type to determine if they are valid.
  3363  func (s *Address) Validate() error {
  3364  	invalidParams := request.ErrInvalidParams{Context: "Address"}
  3365  	if s.AddressDefinition == nil {
  3366  		invalidParams.Add(request.NewErrParamRequired("AddressDefinition"))
  3367  	}
  3368  	if s.AddressDefinition != nil && len(*s.AddressDefinition) < 1 {
  3369  		invalidParams.Add(request.NewErrParamMinLen("AddressDefinition", 1))
  3370  	}
  3371  
  3372  	if invalidParams.Len() > 0 {
  3373  		return invalidParams
  3374  	}
  3375  	return nil
  3376  }
  3377  
  3378  // SetAddressDefinition sets the AddressDefinition field's value.
  3379  func (s *Address) SetAddressDefinition(v string) *Address {
  3380  	s.AddressDefinition = &v
  3381  	return s
  3382  }
  3383  
  3384  type AssociateFirewallPolicyInput struct {
  3385  	_ struct{} `type:"structure"`
  3386  
  3387  	// The Amazon Resource Name (ARN) of the firewall.
  3388  	//
  3389  	// You must specify the ARN or the name, and you can specify both.
  3390  	FirewallArn *string `min:"1" type:"string"`
  3391  
  3392  	// The descriptive name of the firewall. You can't change the name of a firewall
  3393  	// after you create it.
  3394  	//
  3395  	// You must specify the ARN or the name, and you can specify both.
  3396  	FirewallName *string `min:"1" type:"string"`
  3397  
  3398  	// The Amazon Resource Name (ARN) of the firewall policy.
  3399  	//
  3400  	// FirewallPolicyArn is a required field
  3401  	FirewallPolicyArn *string `min:"1" type:"string" required:"true"`
  3402  
  3403  	// An optional token that you can use for optimistic locking. Network Firewall
  3404  	// returns a token to your requests that access the firewall. The token marks
  3405  	// the state of the firewall resource at the time of the request.
  3406  	//
  3407  	// To make an unconditional change to the firewall, omit the token in your update
  3408  	// request. Without the token, Network Firewall performs your updates regardless
  3409  	// of whether the firewall has changed since you last retrieved it.
  3410  	//
  3411  	// To make a conditional change to the firewall, provide the token in your update
  3412  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  3413  	// changed since you last retrieved it. If it has changed, the operation fails
  3414  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  3415  	// to get a current copy of it with a new token. Reapply your changes as needed,
  3416  	// then try the operation again using the new token.
  3417  	UpdateToken *string `min:"1" type:"string"`
  3418  }
  3419  
  3420  // String returns the string representation.
  3421  //
  3422  // API parameter values that are decorated as "sensitive" in the API will not
  3423  // be included in the string output. The member name will be present, but the
  3424  // value will be replaced with "sensitive".
  3425  func (s AssociateFirewallPolicyInput) String() string {
  3426  	return awsutil.Prettify(s)
  3427  }
  3428  
  3429  // GoString returns the string representation.
  3430  //
  3431  // API parameter values that are decorated as "sensitive" in the API will not
  3432  // be included in the string output. The member name will be present, but the
  3433  // value will be replaced with "sensitive".
  3434  func (s AssociateFirewallPolicyInput) GoString() string {
  3435  	return s.String()
  3436  }
  3437  
  3438  // Validate inspects the fields of the type to determine if they are valid.
  3439  func (s *AssociateFirewallPolicyInput) Validate() error {
  3440  	invalidParams := request.ErrInvalidParams{Context: "AssociateFirewallPolicyInput"}
  3441  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
  3442  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
  3443  	}
  3444  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  3445  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  3446  	}
  3447  	if s.FirewallPolicyArn == nil {
  3448  		invalidParams.Add(request.NewErrParamRequired("FirewallPolicyArn"))
  3449  	}
  3450  	if s.FirewallPolicyArn != nil && len(*s.FirewallPolicyArn) < 1 {
  3451  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyArn", 1))
  3452  	}
  3453  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
  3454  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
  3455  	}
  3456  
  3457  	if invalidParams.Len() > 0 {
  3458  		return invalidParams
  3459  	}
  3460  	return nil
  3461  }
  3462  
  3463  // SetFirewallArn sets the FirewallArn field's value.
  3464  func (s *AssociateFirewallPolicyInput) SetFirewallArn(v string) *AssociateFirewallPolicyInput {
  3465  	s.FirewallArn = &v
  3466  	return s
  3467  }
  3468  
  3469  // SetFirewallName sets the FirewallName field's value.
  3470  func (s *AssociateFirewallPolicyInput) SetFirewallName(v string) *AssociateFirewallPolicyInput {
  3471  	s.FirewallName = &v
  3472  	return s
  3473  }
  3474  
  3475  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  3476  func (s *AssociateFirewallPolicyInput) SetFirewallPolicyArn(v string) *AssociateFirewallPolicyInput {
  3477  	s.FirewallPolicyArn = &v
  3478  	return s
  3479  }
  3480  
  3481  // SetUpdateToken sets the UpdateToken field's value.
  3482  func (s *AssociateFirewallPolicyInput) SetUpdateToken(v string) *AssociateFirewallPolicyInput {
  3483  	s.UpdateToken = &v
  3484  	return s
  3485  }
  3486  
  3487  type AssociateFirewallPolicyOutput struct {
  3488  	_ struct{} `type:"structure"`
  3489  
  3490  	// The Amazon Resource Name (ARN) of the firewall.
  3491  	FirewallArn *string `min:"1" type:"string"`
  3492  
  3493  	// The descriptive name of the firewall. You can't change the name of a firewall
  3494  	// after you create it.
  3495  	FirewallName *string `min:"1" type:"string"`
  3496  
  3497  	// The Amazon Resource Name (ARN) of the firewall policy.
  3498  	FirewallPolicyArn *string `min:"1" type:"string"`
  3499  
  3500  	// An optional token that you can use for optimistic locking. Network Firewall
  3501  	// returns a token to your requests that access the firewall. The token marks
  3502  	// the state of the firewall resource at the time of the request.
  3503  	//
  3504  	// To make an unconditional change to the firewall, omit the token in your update
  3505  	// request. Without the token, Network Firewall performs your updates regardless
  3506  	// of whether the firewall has changed since you last retrieved it.
  3507  	//
  3508  	// To make a conditional change to the firewall, provide the token in your update
  3509  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  3510  	// changed since you last retrieved it. If it has changed, the operation fails
  3511  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  3512  	// to get a current copy of it with a new token. Reapply your changes as needed,
  3513  	// then try the operation again using the new token.
  3514  	UpdateToken *string `min:"1" type:"string"`
  3515  }
  3516  
  3517  // String returns the string representation.
  3518  //
  3519  // API parameter values that are decorated as "sensitive" in the API will not
  3520  // be included in the string output. The member name will be present, but the
  3521  // value will be replaced with "sensitive".
  3522  func (s AssociateFirewallPolicyOutput) String() string {
  3523  	return awsutil.Prettify(s)
  3524  }
  3525  
  3526  // GoString returns the string representation.
  3527  //
  3528  // API parameter values that are decorated as "sensitive" in the API will not
  3529  // be included in the string output. The member name will be present, but the
  3530  // value will be replaced with "sensitive".
  3531  func (s AssociateFirewallPolicyOutput) GoString() string {
  3532  	return s.String()
  3533  }
  3534  
  3535  // SetFirewallArn sets the FirewallArn field's value.
  3536  func (s *AssociateFirewallPolicyOutput) SetFirewallArn(v string) *AssociateFirewallPolicyOutput {
  3537  	s.FirewallArn = &v
  3538  	return s
  3539  }
  3540  
  3541  // SetFirewallName sets the FirewallName field's value.
  3542  func (s *AssociateFirewallPolicyOutput) SetFirewallName(v string) *AssociateFirewallPolicyOutput {
  3543  	s.FirewallName = &v
  3544  	return s
  3545  }
  3546  
  3547  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  3548  func (s *AssociateFirewallPolicyOutput) SetFirewallPolicyArn(v string) *AssociateFirewallPolicyOutput {
  3549  	s.FirewallPolicyArn = &v
  3550  	return s
  3551  }
  3552  
  3553  // SetUpdateToken sets the UpdateToken field's value.
  3554  func (s *AssociateFirewallPolicyOutput) SetUpdateToken(v string) *AssociateFirewallPolicyOutput {
  3555  	s.UpdateToken = &v
  3556  	return s
  3557  }
  3558  
  3559  type AssociateSubnetsInput struct {
  3560  	_ struct{} `type:"structure"`
  3561  
  3562  	// The Amazon Resource Name (ARN) of the firewall.
  3563  	//
  3564  	// You must specify the ARN or the name, and you can specify both.
  3565  	FirewallArn *string `min:"1" type:"string"`
  3566  
  3567  	// The descriptive name of the firewall. You can't change the name of a firewall
  3568  	// after you create it.
  3569  	//
  3570  	// You must specify the ARN or the name, and you can specify both.
  3571  	FirewallName *string `min:"1" type:"string"`
  3572  
  3573  	// The IDs of the subnets that you want to associate with the firewall.
  3574  	//
  3575  	// SubnetMappings is a required field
  3576  	SubnetMappings []*SubnetMapping `type:"list" required:"true"`
  3577  
  3578  	// An optional token that you can use for optimistic locking. Network Firewall
  3579  	// returns a token to your requests that access the firewall. The token marks
  3580  	// the state of the firewall resource at the time of the request.
  3581  	//
  3582  	// To make an unconditional change to the firewall, omit the token in your update
  3583  	// request. Without the token, Network Firewall performs your updates regardless
  3584  	// of whether the firewall has changed since you last retrieved it.
  3585  	//
  3586  	// To make a conditional change to the firewall, provide the token in your update
  3587  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  3588  	// changed since you last retrieved it. If it has changed, the operation fails
  3589  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  3590  	// to get a current copy of it with a new token. Reapply your changes as needed,
  3591  	// then try the operation again using the new token.
  3592  	UpdateToken *string `min:"1" type:"string"`
  3593  }
  3594  
  3595  // String returns the string representation.
  3596  //
  3597  // API parameter values that are decorated as "sensitive" in the API will not
  3598  // be included in the string output. The member name will be present, but the
  3599  // value will be replaced with "sensitive".
  3600  func (s AssociateSubnetsInput) String() string {
  3601  	return awsutil.Prettify(s)
  3602  }
  3603  
  3604  // GoString returns the string representation.
  3605  //
  3606  // API parameter values that are decorated as "sensitive" in the API will not
  3607  // be included in the string output. The member name will be present, but the
  3608  // value will be replaced with "sensitive".
  3609  func (s AssociateSubnetsInput) GoString() string {
  3610  	return s.String()
  3611  }
  3612  
  3613  // Validate inspects the fields of the type to determine if they are valid.
  3614  func (s *AssociateSubnetsInput) Validate() error {
  3615  	invalidParams := request.ErrInvalidParams{Context: "AssociateSubnetsInput"}
  3616  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
  3617  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
  3618  	}
  3619  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  3620  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  3621  	}
  3622  	if s.SubnetMappings == nil {
  3623  		invalidParams.Add(request.NewErrParamRequired("SubnetMappings"))
  3624  	}
  3625  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
  3626  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
  3627  	}
  3628  	if s.SubnetMappings != nil {
  3629  		for i, v := range s.SubnetMappings {
  3630  			if v == nil {
  3631  				continue
  3632  			}
  3633  			if err := v.Validate(); err != nil {
  3634  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SubnetMappings", i), err.(request.ErrInvalidParams))
  3635  			}
  3636  		}
  3637  	}
  3638  
  3639  	if invalidParams.Len() > 0 {
  3640  		return invalidParams
  3641  	}
  3642  	return nil
  3643  }
  3644  
  3645  // SetFirewallArn sets the FirewallArn field's value.
  3646  func (s *AssociateSubnetsInput) SetFirewallArn(v string) *AssociateSubnetsInput {
  3647  	s.FirewallArn = &v
  3648  	return s
  3649  }
  3650  
  3651  // SetFirewallName sets the FirewallName field's value.
  3652  func (s *AssociateSubnetsInput) SetFirewallName(v string) *AssociateSubnetsInput {
  3653  	s.FirewallName = &v
  3654  	return s
  3655  }
  3656  
  3657  // SetSubnetMappings sets the SubnetMappings field's value.
  3658  func (s *AssociateSubnetsInput) SetSubnetMappings(v []*SubnetMapping) *AssociateSubnetsInput {
  3659  	s.SubnetMappings = v
  3660  	return s
  3661  }
  3662  
  3663  // SetUpdateToken sets the UpdateToken field's value.
  3664  func (s *AssociateSubnetsInput) SetUpdateToken(v string) *AssociateSubnetsInput {
  3665  	s.UpdateToken = &v
  3666  	return s
  3667  }
  3668  
  3669  type AssociateSubnetsOutput struct {
  3670  	_ struct{} `type:"structure"`
  3671  
  3672  	// The Amazon Resource Name (ARN) of the firewall.
  3673  	FirewallArn *string `min:"1" type:"string"`
  3674  
  3675  	// The descriptive name of the firewall. You can't change the name of a firewall
  3676  	// after you create it.
  3677  	FirewallName *string `min:"1" type:"string"`
  3678  
  3679  	// The IDs of the subnets that are associated with the firewall.
  3680  	SubnetMappings []*SubnetMapping `type:"list"`
  3681  
  3682  	// An optional token that you can use for optimistic locking. Network Firewall
  3683  	// returns a token to your requests that access the firewall. The token marks
  3684  	// the state of the firewall resource at the time of the request.
  3685  	//
  3686  	// To make an unconditional change to the firewall, omit the token in your update
  3687  	// request. Without the token, Network Firewall performs your updates regardless
  3688  	// of whether the firewall has changed since you last retrieved it.
  3689  	//
  3690  	// To make a conditional change to the firewall, provide the token in your update
  3691  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  3692  	// changed since you last retrieved it. If it has changed, the operation fails
  3693  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  3694  	// to get a current copy of it with a new token. Reapply your changes as needed,
  3695  	// then try the operation again using the new token.
  3696  	UpdateToken *string `min:"1" type:"string"`
  3697  }
  3698  
  3699  // String returns the string representation.
  3700  //
  3701  // API parameter values that are decorated as "sensitive" in the API will not
  3702  // be included in the string output. The member name will be present, but the
  3703  // value will be replaced with "sensitive".
  3704  func (s AssociateSubnetsOutput) String() string {
  3705  	return awsutil.Prettify(s)
  3706  }
  3707  
  3708  // GoString returns the string representation.
  3709  //
  3710  // API parameter values that are decorated as "sensitive" in the API will not
  3711  // be included in the string output. The member name will be present, but the
  3712  // value will be replaced with "sensitive".
  3713  func (s AssociateSubnetsOutput) GoString() string {
  3714  	return s.String()
  3715  }
  3716  
  3717  // SetFirewallArn sets the FirewallArn field's value.
  3718  func (s *AssociateSubnetsOutput) SetFirewallArn(v string) *AssociateSubnetsOutput {
  3719  	s.FirewallArn = &v
  3720  	return s
  3721  }
  3722  
  3723  // SetFirewallName sets the FirewallName field's value.
  3724  func (s *AssociateSubnetsOutput) SetFirewallName(v string) *AssociateSubnetsOutput {
  3725  	s.FirewallName = &v
  3726  	return s
  3727  }
  3728  
  3729  // SetSubnetMappings sets the SubnetMappings field's value.
  3730  func (s *AssociateSubnetsOutput) SetSubnetMappings(v []*SubnetMapping) *AssociateSubnetsOutput {
  3731  	s.SubnetMappings = v
  3732  	return s
  3733  }
  3734  
  3735  // SetUpdateToken sets the UpdateToken field's value.
  3736  func (s *AssociateSubnetsOutput) SetUpdateToken(v string) *AssociateSubnetsOutput {
  3737  	s.UpdateToken = &v
  3738  	return s
  3739  }
  3740  
  3741  // The configuration and status for a single subnet that you've specified for
  3742  // use by the AWS Network Firewall firewall. This is part of the FirewallStatus.
  3743  type Attachment struct {
  3744  	_ struct{} `type:"structure"`
  3745  
  3746  	// The identifier of the firewall endpoint that Network Firewall has instantiated
  3747  	// in the subnet. You use this to identify the firewall endpoint in the VPC
  3748  	// route tables, when you redirect the VPC traffic through the endpoint.
  3749  	EndpointId *string `type:"string"`
  3750  
  3751  	// The current status of the firewall endpoint in the subnet. This value reflects
  3752  	// both the instantiation of the endpoint in the VPC subnet and the sync states
  3753  	// that are reported in the Config settings. When this value is READY, the endpoint
  3754  	// is available and configured properly to handle network traffic. When the
  3755  	// endpoint isn't available for traffic, this value will reflect its state,
  3756  	// for example CREATING, DELETING, or FAILED.
  3757  	Status *string `type:"string" enum:"AttachmentStatus"`
  3758  
  3759  	// The unique identifier of the subnet that you've specified to be used for
  3760  	// a firewall endpoint.
  3761  	SubnetId *string `min:"1" type:"string"`
  3762  }
  3763  
  3764  // String returns the string representation.
  3765  //
  3766  // API parameter values that are decorated as "sensitive" in the API will not
  3767  // be included in the string output. The member name will be present, but the
  3768  // value will be replaced with "sensitive".
  3769  func (s Attachment) String() string {
  3770  	return awsutil.Prettify(s)
  3771  }
  3772  
  3773  // GoString returns the string representation.
  3774  //
  3775  // API parameter values that are decorated as "sensitive" in the API will not
  3776  // be included in the string output. The member name will be present, but the
  3777  // value will be replaced with "sensitive".
  3778  func (s Attachment) GoString() string {
  3779  	return s.String()
  3780  }
  3781  
  3782  // SetEndpointId sets the EndpointId field's value.
  3783  func (s *Attachment) SetEndpointId(v string) *Attachment {
  3784  	s.EndpointId = &v
  3785  	return s
  3786  }
  3787  
  3788  // SetStatus sets the Status field's value.
  3789  func (s *Attachment) SetStatus(v string) *Attachment {
  3790  	s.Status = &v
  3791  	return s
  3792  }
  3793  
  3794  // SetSubnetId sets the SubnetId field's value.
  3795  func (s *Attachment) SetSubnetId(v string) *Attachment {
  3796  	s.SubnetId = &v
  3797  	return s
  3798  }
  3799  
  3800  type CreateFirewallInput struct {
  3801  	_ struct{} `type:"structure"`
  3802  
  3803  	// A flag indicating whether it is possible to delete the firewall. A setting
  3804  	// of TRUE indicates that the firewall is protected against deletion. Use this
  3805  	// setting to protect against accidentally deleting a firewall that is in use.
  3806  	// When you create a firewall, the operation initializes this flag to TRUE.
  3807  	DeleteProtection *bool `type:"boolean"`
  3808  
  3809  	// A description of the firewall.
  3810  	Description *string `type:"string"`
  3811  
  3812  	// The descriptive name of the firewall. You can't change the name of a firewall
  3813  	// after you create it.
  3814  	//
  3815  	// FirewallName is a required field
  3816  	FirewallName *string `min:"1" type:"string" required:"true"`
  3817  
  3818  	// The Amazon Resource Name (ARN) of the FirewallPolicy that you want to use
  3819  	// for the firewall.
  3820  	//
  3821  	// FirewallPolicyArn is a required field
  3822  	FirewallPolicyArn *string `min:"1" type:"string" required:"true"`
  3823  
  3824  	// A setting indicating whether the firewall is protected against a change to
  3825  	// the firewall policy association. Use this setting to protect against accidentally
  3826  	// modifying the firewall policy for a firewall that is in use. When you create
  3827  	// a firewall, the operation initializes this setting to TRUE.
  3828  	FirewallPolicyChangeProtection *bool `type:"boolean"`
  3829  
  3830  	// A setting indicating whether the firewall is protected against changes to
  3831  	// the subnet associations. Use this setting to protect against accidentally
  3832  	// modifying the subnet associations for a firewall that is in use. When you
  3833  	// create a firewall, the operation initializes this setting to TRUE.
  3834  	SubnetChangeProtection *bool `type:"boolean"`
  3835  
  3836  	// The public subnets to use for your Network Firewall firewalls. Each subnet
  3837  	// must belong to a different Availability Zone in the VPC. Network Firewall
  3838  	// creates a firewall endpoint in each subnet.
  3839  	//
  3840  	// SubnetMappings is a required field
  3841  	SubnetMappings []*SubnetMapping `type:"list" required:"true"`
  3842  
  3843  	// The key:value pairs to associate with the resource.
  3844  	Tags []*Tag `min:"1" type:"list"`
  3845  
  3846  	// The unique identifier of the VPC where Network Firewall should create the
  3847  	// firewall.
  3848  	//
  3849  	// You can't change this setting after you create the firewall.
  3850  	//
  3851  	// VpcId is a required field
  3852  	VpcId *string `min:"1" type:"string" required:"true"`
  3853  }
  3854  
  3855  // String returns the string representation.
  3856  //
  3857  // API parameter values that are decorated as "sensitive" in the API will not
  3858  // be included in the string output. The member name will be present, but the
  3859  // value will be replaced with "sensitive".
  3860  func (s CreateFirewallInput) String() string {
  3861  	return awsutil.Prettify(s)
  3862  }
  3863  
  3864  // GoString returns the string representation.
  3865  //
  3866  // API parameter values that are decorated as "sensitive" in the API will not
  3867  // be included in the string output. The member name will be present, but the
  3868  // value will be replaced with "sensitive".
  3869  func (s CreateFirewallInput) GoString() string {
  3870  	return s.String()
  3871  }
  3872  
  3873  // Validate inspects the fields of the type to determine if they are valid.
  3874  func (s *CreateFirewallInput) Validate() error {
  3875  	invalidParams := request.ErrInvalidParams{Context: "CreateFirewallInput"}
  3876  	if s.FirewallName == nil {
  3877  		invalidParams.Add(request.NewErrParamRequired("FirewallName"))
  3878  	}
  3879  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  3880  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  3881  	}
  3882  	if s.FirewallPolicyArn == nil {
  3883  		invalidParams.Add(request.NewErrParamRequired("FirewallPolicyArn"))
  3884  	}
  3885  	if s.FirewallPolicyArn != nil && len(*s.FirewallPolicyArn) < 1 {
  3886  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyArn", 1))
  3887  	}
  3888  	if s.SubnetMappings == nil {
  3889  		invalidParams.Add(request.NewErrParamRequired("SubnetMappings"))
  3890  	}
  3891  	if s.Tags != nil && len(s.Tags) < 1 {
  3892  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  3893  	}
  3894  	if s.VpcId == nil {
  3895  		invalidParams.Add(request.NewErrParamRequired("VpcId"))
  3896  	}
  3897  	if s.VpcId != nil && len(*s.VpcId) < 1 {
  3898  		invalidParams.Add(request.NewErrParamMinLen("VpcId", 1))
  3899  	}
  3900  	if s.SubnetMappings != nil {
  3901  		for i, v := range s.SubnetMappings {
  3902  			if v == nil {
  3903  				continue
  3904  			}
  3905  			if err := v.Validate(); err != nil {
  3906  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SubnetMappings", i), err.(request.ErrInvalidParams))
  3907  			}
  3908  		}
  3909  	}
  3910  	if s.Tags != nil {
  3911  		for i, v := range s.Tags {
  3912  			if v == nil {
  3913  				continue
  3914  			}
  3915  			if err := v.Validate(); err != nil {
  3916  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  3917  			}
  3918  		}
  3919  	}
  3920  
  3921  	if invalidParams.Len() > 0 {
  3922  		return invalidParams
  3923  	}
  3924  	return nil
  3925  }
  3926  
  3927  // SetDeleteProtection sets the DeleteProtection field's value.
  3928  func (s *CreateFirewallInput) SetDeleteProtection(v bool) *CreateFirewallInput {
  3929  	s.DeleteProtection = &v
  3930  	return s
  3931  }
  3932  
  3933  // SetDescription sets the Description field's value.
  3934  func (s *CreateFirewallInput) SetDescription(v string) *CreateFirewallInput {
  3935  	s.Description = &v
  3936  	return s
  3937  }
  3938  
  3939  // SetFirewallName sets the FirewallName field's value.
  3940  func (s *CreateFirewallInput) SetFirewallName(v string) *CreateFirewallInput {
  3941  	s.FirewallName = &v
  3942  	return s
  3943  }
  3944  
  3945  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  3946  func (s *CreateFirewallInput) SetFirewallPolicyArn(v string) *CreateFirewallInput {
  3947  	s.FirewallPolicyArn = &v
  3948  	return s
  3949  }
  3950  
  3951  // SetFirewallPolicyChangeProtection sets the FirewallPolicyChangeProtection field's value.
  3952  func (s *CreateFirewallInput) SetFirewallPolicyChangeProtection(v bool) *CreateFirewallInput {
  3953  	s.FirewallPolicyChangeProtection = &v
  3954  	return s
  3955  }
  3956  
  3957  // SetSubnetChangeProtection sets the SubnetChangeProtection field's value.
  3958  func (s *CreateFirewallInput) SetSubnetChangeProtection(v bool) *CreateFirewallInput {
  3959  	s.SubnetChangeProtection = &v
  3960  	return s
  3961  }
  3962  
  3963  // SetSubnetMappings sets the SubnetMappings field's value.
  3964  func (s *CreateFirewallInput) SetSubnetMappings(v []*SubnetMapping) *CreateFirewallInput {
  3965  	s.SubnetMappings = v
  3966  	return s
  3967  }
  3968  
  3969  // SetTags sets the Tags field's value.
  3970  func (s *CreateFirewallInput) SetTags(v []*Tag) *CreateFirewallInput {
  3971  	s.Tags = v
  3972  	return s
  3973  }
  3974  
  3975  // SetVpcId sets the VpcId field's value.
  3976  func (s *CreateFirewallInput) SetVpcId(v string) *CreateFirewallInput {
  3977  	s.VpcId = &v
  3978  	return s
  3979  }
  3980  
  3981  type CreateFirewallOutput struct {
  3982  	_ struct{} `type:"structure"`
  3983  
  3984  	// The configuration settings for the firewall. These settings include the firewall
  3985  	// policy and the subnets in your VPC to use for the firewall endpoints.
  3986  	Firewall *Firewall `type:"structure"`
  3987  
  3988  	// Detailed information about the current status of a Firewall. You can retrieve
  3989  	// this for a firewall by calling DescribeFirewall and providing the firewall
  3990  	// name and ARN.
  3991  	FirewallStatus *FirewallStatus `type:"structure"`
  3992  }
  3993  
  3994  // String returns the string representation.
  3995  //
  3996  // API parameter values that are decorated as "sensitive" in the API will not
  3997  // be included in the string output. The member name will be present, but the
  3998  // value will be replaced with "sensitive".
  3999  func (s CreateFirewallOutput) String() string {
  4000  	return awsutil.Prettify(s)
  4001  }
  4002  
  4003  // GoString returns the string representation.
  4004  //
  4005  // API parameter values that are decorated as "sensitive" in the API will not
  4006  // be included in the string output. The member name will be present, but the
  4007  // value will be replaced with "sensitive".
  4008  func (s CreateFirewallOutput) GoString() string {
  4009  	return s.String()
  4010  }
  4011  
  4012  // SetFirewall sets the Firewall field's value.
  4013  func (s *CreateFirewallOutput) SetFirewall(v *Firewall) *CreateFirewallOutput {
  4014  	s.Firewall = v
  4015  	return s
  4016  }
  4017  
  4018  // SetFirewallStatus sets the FirewallStatus field's value.
  4019  func (s *CreateFirewallOutput) SetFirewallStatus(v *FirewallStatus) *CreateFirewallOutput {
  4020  	s.FirewallStatus = v
  4021  	return s
  4022  }
  4023  
  4024  type CreateFirewallPolicyInput struct {
  4025  	_ struct{} `type:"structure"`
  4026  
  4027  	// A description of the firewall policy.
  4028  	Description *string `type:"string"`
  4029  
  4030  	// Indicates whether you want Network Firewall to just check the validity of
  4031  	// the request, rather than run the request.
  4032  	//
  4033  	// If set to TRUE, Network Firewall checks whether the request can run successfully,
  4034  	// but doesn't actually make the requested changes. The call returns the value
  4035  	// that the request would return if you ran it with dry run set to FALSE, but
  4036  	// doesn't make additions or changes to your resources. This option allows you
  4037  	// to make sure that you have the required permissions to run the request and
  4038  	// that your request parameters are valid.
  4039  	//
  4040  	// If set to FALSE, Network Firewall makes the requested changes to your resources.
  4041  	DryRun *bool `type:"boolean"`
  4042  
  4043  	// The rule groups and policy actions to use in the firewall policy.
  4044  	//
  4045  	// FirewallPolicy is a required field
  4046  	FirewallPolicy *FirewallPolicy `type:"structure" required:"true"`
  4047  
  4048  	// The descriptive name of the firewall policy. You can't change the name of
  4049  	// a firewall policy after you create it.
  4050  	//
  4051  	// FirewallPolicyName is a required field
  4052  	FirewallPolicyName *string `min:"1" type:"string" required:"true"`
  4053  
  4054  	// The key:value pairs to associate with the resource.
  4055  	Tags []*Tag `min:"1" type:"list"`
  4056  }
  4057  
  4058  // String returns the string representation.
  4059  //
  4060  // API parameter values that are decorated as "sensitive" in the API will not
  4061  // be included in the string output. The member name will be present, but the
  4062  // value will be replaced with "sensitive".
  4063  func (s CreateFirewallPolicyInput) String() string {
  4064  	return awsutil.Prettify(s)
  4065  }
  4066  
  4067  // GoString returns the string representation.
  4068  //
  4069  // API parameter values that are decorated as "sensitive" in the API will not
  4070  // be included in the string output. The member name will be present, but the
  4071  // value will be replaced with "sensitive".
  4072  func (s CreateFirewallPolicyInput) GoString() string {
  4073  	return s.String()
  4074  }
  4075  
  4076  // Validate inspects the fields of the type to determine if they are valid.
  4077  func (s *CreateFirewallPolicyInput) Validate() error {
  4078  	invalidParams := request.ErrInvalidParams{Context: "CreateFirewallPolicyInput"}
  4079  	if s.FirewallPolicy == nil {
  4080  		invalidParams.Add(request.NewErrParamRequired("FirewallPolicy"))
  4081  	}
  4082  	if s.FirewallPolicyName == nil {
  4083  		invalidParams.Add(request.NewErrParamRequired("FirewallPolicyName"))
  4084  	}
  4085  	if s.FirewallPolicyName != nil && len(*s.FirewallPolicyName) < 1 {
  4086  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyName", 1))
  4087  	}
  4088  	if s.Tags != nil && len(s.Tags) < 1 {
  4089  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  4090  	}
  4091  	if s.FirewallPolicy != nil {
  4092  		if err := s.FirewallPolicy.Validate(); err != nil {
  4093  			invalidParams.AddNested("FirewallPolicy", err.(request.ErrInvalidParams))
  4094  		}
  4095  	}
  4096  	if s.Tags != nil {
  4097  		for i, v := range s.Tags {
  4098  			if v == nil {
  4099  				continue
  4100  			}
  4101  			if err := v.Validate(); err != nil {
  4102  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  4103  			}
  4104  		}
  4105  	}
  4106  
  4107  	if invalidParams.Len() > 0 {
  4108  		return invalidParams
  4109  	}
  4110  	return nil
  4111  }
  4112  
  4113  // SetDescription sets the Description field's value.
  4114  func (s *CreateFirewallPolicyInput) SetDescription(v string) *CreateFirewallPolicyInput {
  4115  	s.Description = &v
  4116  	return s
  4117  }
  4118  
  4119  // SetDryRun sets the DryRun field's value.
  4120  func (s *CreateFirewallPolicyInput) SetDryRun(v bool) *CreateFirewallPolicyInput {
  4121  	s.DryRun = &v
  4122  	return s
  4123  }
  4124  
  4125  // SetFirewallPolicy sets the FirewallPolicy field's value.
  4126  func (s *CreateFirewallPolicyInput) SetFirewallPolicy(v *FirewallPolicy) *CreateFirewallPolicyInput {
  4127  	s.FirewallPolicy = v
  4128  	return s
  4129  }
  4130  
  4131  // SetFirewallPolicyName sets the FirewallPolicyName field's value.
  4132  func (s *CreateFirewallPolicyInput) SetFirewallPolicyName(v string) *CreateFirewallPolicyInput {
  4133  	s.FirewallPolicyName = &v
  4134  	return s
  4135  }
  4136  
  4137  // SetTags sets the Tags field's value.
  4138  func (s *CreateFirewallPolicyInput) SetTags(v []*Tag) *CreateFirewallPolicyInput {
  4139  	s.Tags = v
  4140  	return s
  4141  }
  4142  
  4143  type CreateFirewallPolicyOutput struct {
  4144  	_ struct{} `type:"structure"`
  4145  
  4146  	// The high-level properties of a firewall policy. This, along with the FirewallPolicy,
  4147  	// define the policy. You can retrieve all objects for a firewall policy by
  4148  	// calling DescribeFirewallPolicy.
  4149  	//
  4150  	// FirewallPolicyResponse is a required field
  4151  	FirewallPolicyResponse *FirewallPolicyResponse `type:"structure" required:"true"`
  4152  
  4153  	// A token used for optimistic locking. Network Firewall returns a token to
  4154  	// your requests that access the firewall policy. The token marks the state
  4155  	// of the policy resource at the time of the request.
  4156  	//
  4157  	// To make changes to the policy, you provide the token in your request. Network
  4158  	// Firewall uses the token to ensure that the policy hasn't changed since you
  4159  	// last retrieved it. If it has changed, the operation fails with an InvalidTokenException.
  4160  	// If this happens, retrieve the firewall policy again to get a current copy
  4161  	// of it with current token. Reapply your changes as needed, then try the operation
  4162  	// again using the new token.
  4163  	//
  4164  	// UpdateToken is a required field
  4165  	UpdateToken *string `min:"1" type:"string" required:"true"`
  4166  }
  4167  
  4168  // String returns the string representation.
  4169  //
  4170  // API parameter values that are decorated as "sensitive" in the API will not
  4171  // be included in the string output. The member name will be present, but the
  4172  // value will be replaced with "sensitive".
  4173  func (s CreateFirewallPolicyOutput) String() string {
  4174  	return awsutil.Prettify(s)
  4175  }
  4176  
  4177  // GoString returns the string representation.
  4178  //
  4179  // API parameter values that are decorated as "sensitive" in the API will not
  4180  // be included in the string output. The member name will be present, but the
  4181  // value will be replaced with "sensitive".
  4182  func (s CreateFirewallPolicyOutput) GoString() string {
  4183  	return s.String()
  4184  }
  4185  
  4186  // SetFirewallPolicyResponse sets the FirewallPolicyResponse field's value.
  4187  func (s *CreateFirewallPolicyOutput) SetFirewallPolicyResponse(v *FirewallPolicyResponse) *CreateFirewallPolicyOutput {
  4188  	s.FirewallPolicyResponse = v
  4189  	return s
  4190  }
  4191  
  4192  // SetUpdateToken sets the UpdateToken field's value.
  4193  func (s *CreateFirewallPolicyOutput) SetUpdateToken(v string) *CreateFirewallPolicyOutput {
  4194  	s.UpdateToken = &v
  4195  	return s
  4196  }
  4197  
  4198  type CreateRuleGroupInput struct {
  4199  	_ struct{} `type:"structure"`
  4200  
  4201  	// The maximum operating resources that this rule group can use. Rule group
  4202  	// capacity is fixed at creation. When you update a rule group, you are limited
  4203  	// to this capacity. When you reference a rule group from a firewall policy,
  4204  	// Network Firewall reserves this capacity for the rule group.
  4205  	//
  4206  	// You can retrieve the capacity that would be required for a rule group before
  4207  	// you create the rule group by calling CreateRuleGroup with DryRun set to TRUE.
  4208  	//
  4209  	// You can't change or exceed this capacity when you update the rule group,
  4210  	// so leave room for your rule group to grow.
  4211  	//
  4212  	// Capacity for a stateless rule group
  4213  	//
  4214  	// For a stateless rule group, the capacity required is the sum of the capacity
  4215  	// requirements of the individual rules that you expect to have in the rule
  4216  	// group.
  4217  	//
  4218  	// To calculate the capacity requirement of a single rule, multiply the capacity
  4219  	// requirement values of each of the rule's match settings:
  4220  	//
  4221  	//    * A match setting with no criteria specified has a value of 1.
  4222  	//
  4223  	//    * A match setting with Any specified has a value of 1.
  4224  	//
  4225  	//    * All other match settings have a value equal to the number of elements
  4226  	//    provided in the setting. For example, a protocol setting ["UDP"] and a
  4227  	//    source setting ["10.0.0.0/24"] each have a value of 1. A protocol setting
  4228  	//    ["UDP","TCP"] has a value of 2. A source setting ["10.0.0.0/24","10.0.0.1/24","10.0.0.2/24"]
  4229  	//    has a value of 3.
  4230  	//
  4231  	// A rule with no criteria specified in any of its match settings has a capacity
  4232  	// requirement of 1. A rule with protocol setting ["UDP","TCP"], source setting
  4233  	// ["10.0.0.0/24","10.0.0.1/24","10.0.0.2/24"], and a single specification or
  4234  	// no specification for each of the other match settings has a capacity requirement
  4235  	// of 6.
  4236  	//
  4237  	// Capacity for a stateful rule group
  4238  	//
  4239  	// For a stateful rule group, the minimum capacity required is the number of
  4240  	// individual rules that you expect to have in the rule group.
  4241  	//
  4242  	// Capacity is a required field
  4243  	Capacity *int64 `type:"integer" required:"true"`
  4244  
  4245  	// A description of the rule group.
  4246  	Description *string `type:"string"`
  4247  
  4248  	// Indicates whether you want Network Firewall to just check the validity of
  4249  	// the request, rather than run the request.
  4250  	//
  4251  	// If set to TRUE, Network Firewall checks whether the request can run successfully,
  4252  	// but doesn't actually make the requested changes. The call returns the value
  4253  	// that the request would return if you ran it with dry run set to FALSE, but
  4254  	// doesn't make additions or changes to your resources. This option allows you
  4255  	// to make sure that you have the required permissions to run the request and
  4256  	// that your request parameters are valid.
  4257  	//
  4258  	// If set to FALSE, Network Firewall makes the requested changes to your resources.
  4259  	DryRun *bool `type:"boolean"`
  4260  
  4261  	// An object that defines the rule group rules.
  4262  	//
  4263  	// You must provide either this rule group setting or a Rules setting, but not
  4264  	// both.
  4265  	RuleGroup *RuleGroup `type:"structure"`
  4266  
  4267  	// The descriptive name of the rule group. You can't change the name of a rule
  4268  	// group after you create it.
  4269  	//
  4270  	// RuleGroupName is a required field
  4271  	RuleGroupName *string `min:"1" type:"string" required:"true"`
  4272  
  4273  	// A string containing stateful rule group rules specifications in Suricata
  4274  	// flat format, with one rule per line. Use this to import your existing Suricata
  4275  	// compatible rule groups.
  4276  	//
  4277  	// You must provide either this rules setting or a populated RuleGroup setting,
  4278  	// but not both.
  4279  	//
  4280  	// You can provide your rule group specification in Suricata flat format through
  4281  	// this setting when you create or update your rule group. The call response
  4282  	// returns a RuleGroup object that Network Firewall has populated from your
  4283  	// string.
  4284  	Rules *string `type:"string"`
  4285  
  4286  	// The key:value pairs to associate with the resource.
  4287  	Tags []*Tag `min:"1" type:"list"`
  4288  
  4289  	// Indicates whether the rule group is stateless or stateful. If the rule group
  4290  	// is stateless, it contains stateless rules. If it is stateful, it contains
  4291  	// stateful rules.
  4292  	//
  4293  	// Type is a required field
  4294  	Type *string `type:"string" required:"true" enum:"RuleGroupType"`
  4295  }
  4296  
  4297  // String returns the string representation.
  4298  //
  4299  // API parameter values that are decorated as "sensitive" in the API will not
  4300  // be included in the string output. The member name will be present, but the
  4301  // value will be replaced with "sensitive".
  4302  func (s CreateRuleGroupInput) String() string {
  4303  	return awsutil.Prettify(s)
  4304  }
  4305  
  4306  // GoString returns the string representation.
  4307  //
  4308  // API parameter values that are decorated as "sensitive" in the API will not
  4309  // be included in the string output. The member name will be present, but the
  4310  // value will be replaced with "sensitive".
  4311  func (s CreateRuleGroupInput) GoString() string {
  4312  	return s.String()
  4313  }
  4314  
  4315  // Validate inspects the fields of the type to determine if they are valid.
  4316  func (s *CreateRuleGroupInput) Validate() error {
  4317  	invalidParams := request.ErrInvalidParams{Context: "CreateRuleGroupInput"}
  4318  	if s.Capacity == nil {
  4319  		invalidParams.Add(request.NewErrParamRequired("Capacity"))
  4320  	}
  4321  	if s.RuleGroupName == nil {
  4322  		invalidParams.Add(request.NewErrParamRequired("RuleGroupName"))
  4323  	}
  4324  	if s.RuleGroupName != nil && len(*s.RuleGroupName) < 1 {
  4325  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupName", 1))
  4326  	}
  4327  	if s.Tags != nil && len(s.Tags) < 1 {
  4328  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  4329  	}
  4330  	if s.Type == nil {
  4331  		invalidParams.Add(request.NewErrParamRequired("Type"))
  4332  	}
  4333  	if s.RuleGroup != nil {
  4334  		if err := s.RuleGroup.Validate(); err != nil {
  4335  			invalidParams.AddNested("RuleGroup", err.(request.ErrInvalidParams))
  4336  		}
  4337  	}
  4338  	if s.Tags != nil {
  4339  		for i, v := range s.Tags {
  4340  			if v == nil {
  4341  				continue
  4342  			}
  4343  			if err := v.Validate(); err != nil {
  4344  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  4345  			}
  4346  		}
  4347  	}
  4348  
  4349  	if invalidParams.Len() > 0 {
  4350  		return invalidParams
  4351  	}
  4352  	return nil
  4353  }
  4354  
  4355  // SetCapacity sets the Capacity field's value.
  4356  func (s *CreateRuleGroupInput) SetCapacity(v int64) *CreateRuleGroupInput {
  4357  	s.Capacity = &v
  4358  	return s
  4359  }
  4360  
  4361  // SetDescription sets the Description field's value.
  4362  func (s *CreateRuleGroupInput) SetDescription(v string) *CreateRuleGroupInput {
  4363  	s.Description = &v
  4364  	return s
  4365  }
  4366  
  4367  // SetDryRun sets the DryRun field's value.
  4368  func (s *CreateRuleGroupInput) SetDryRun(v bool) *CreateRuleGroupInput {
  4369  	s.DryRun = &v
  4370  	return s
  4371  }
  4372  
  4373  // SetRuleGroup sets the RuleGroup field's value.
  4374  func (s *CreateRuleGroupInput) SetRuleGroup(v *RuleGroup) *CreateRuleGroupInput {
  4375  	s.RuleGroup = v
  4376  	return s
  4377  }
  4378  
  4379  // SetRuleGroupName sets the RuleGroupName field's value.
  4380  func (s *CreateRuleGroupInput) SetRuleGroupName(v string) *CreateRuleGroupInput {
  4381  	s.RuleGroupName = &v
  4382  	return s
  4383  }
  4384  
  4385  // SetRules sets the Rules field's value.
  4386  func (s *CreateRuleGroupInput) SetRules(v string) *CreateRuleGroupInput {
  4387  	s.Rules = &v
  4388  	return s
  4389  }
  4390  
  4391  // SetTags sets the Tags field's value.
  4392  func (s *CreateRuleGroupInput) SetTags(v []*Tag) *CreateRuleGroupInput {
  4393  	s.Tags = v
  4394  	return s
  4395  }
  4396  
  4397  // SetType sets the Type field's value.
  4398  func (s *CreateRuleGroupInput) SetType(v string) *CreateRuleGroupInput {
  4399  	s.Type = &v
  4400  	return s
  4401  }
  4402  
  4403  type CreateRuleGroupOutput struct {
  4404  	_ struct{} `type:"structure"`
  4405  
  4406  	// The high-level properties of a rule group. This, along with the RuleGroup,
  4407  	// define the rule group. You can retrieve all objects for a rule group by calling
  4408  	// DescribeRuleGroup.
  4409  	//
  4410  	// RuleGroupResponse is a required field
  4411  	RuleGroupResponse *RuleGroupResponse `type:"structure" required:"true"`
  4412  
  4413  	// A token used for optimistic locking. Network Firewall returns a token to
  4414  	// your requests that access the rule group. The token marks the state of the
  4415  	// rule group resource at the time of the request.
  4416  	//
  4417  	// To make changes to the rule group, you provide the token in your request.
  4418  	// Network Firewall uses the token to ensure that the rule group hasn't changed
  4419  	// since you last retrieved it. If it has changed, the operation fails with
  4420  	// an InvalidTokenException. If this happens, retrieve the rule group again
  4421  	// to get a current copy of it with a current token. Reapply your changes as
  4422  	// needed, then try the operation again using the new token.
  4423  	//
  4424  	// UpdateToken is a required field
  4425  	UpdateToken *string `min:"1" type:"string" required:"true"`
  4426  }
  4427  
  4428  // String returns the string representation.
  4429  //
  4430  // API parameter values that are decorated as "sensitive" in the API will not
  4431  // be included in the string output. The member name will be present, but the
  4432  // value will be replaced with "sensitive".
  4433  func (s CreateRuleGroupOutput) String() string {
  4434  	return awsutil.Prettify(s)
  4435  }
  4436  
  4437  // GoString returns the string representation.
  4438  //
  4439  // API parameter values that are decorated as "sensitive" in the API will not
  4440  // be included in the string output. The member name will be present, but the
  4441  // value will be replaced with "sensitive".
  4442  func (s CreateRuleGroupOutput) GoString() string {
  4443  	return s.String()
  4444  }
  4445  
  4446  // SetRuleGroupResponse sets the RuleGroupResponse field's value.
  4447  func (s *CreateRuleGroupOutput) SetRuleGroupResponse(v *RuleGroupResponse) *CreateRuleGroupOutput {
  4448  	s.RuleGroupResponse = v
  4449  	return s
  4450  }
  4451  
  4452  // SetUpdateToken sets the UpdateToken field's value.
  4453  func (s *CreateRuleGroupOutput) SetUpdateToken(v string) *CreateRuleGroupOutput {
  4454  	s.UpdateToken = &v
  4455  	return s
  4456  }
  4457  
  4458  // An optional, non-standard action to use for stateless packet handling. You
  4459  // can define this in addition to the standard action that you must specify.
  4460  //
  4461  // You define and name the custom actions that you want to be able to use, and
  4462  // then you reference them by name in your actions settings.
  4463  //
  4464  // You can use custom actions in the following places:
  4465  //
  4466  //    * In a rule group's StatelessRulesAndCustomActions specification. The
  4467  //    custom actions are available for use by name inside the StatelessRulesAndCustomActions
  4468  //    where you define them. You can use them for your stateless rule actions
  4469  //    to specify what to do with a packet that matches the rule's match attributes.
  4470  //
  4471  //    * In a FirewallPolicy specification, in StatelessCustomActions. The custom
  4472  //    actions are available for use inside the policy where you define them.
  4473  //    You can use them for the policy's default stateless actions settings to
  4474  //    specify what to do with packets that don't match any of the policy's stateless
  4475  //    rules.
  4476  type CustomAction struct {
  4477  	_ struct{} `type:"structure"`
  4478  
  4479  	// The custom action associated with the action name.
  4480  	//
  4481  	// ActionDefinition is a required field
  4482  	ActionDefinition *ActionDefinition `type:"structure" required:"true"`
  4483  
  4484  	// The descriptive name of the custom action. You can't change the name of a
  4485  	// custom action after you create it.
  4486  	//
  4487  	// ActionName is a required field
  4488  	ActionName *string `min:"1" type:"string" required:"true"`
  4489  }
  4490  
  4491  // String returns the string representation.
  4492  //
  4493  // API parameter values that are decorated as "sensitive" in the API will not
  4494  // be included in the string output. The member name will be present, but the
  4495  // value will be replaced with "sensitive".
  4496  func (s CustomAction) String() string {
  4497  	return awsutil.Prettify(s)
  4498  }
  4499  
  4500  // GoString returns the string representation.
  4501  //
  4502  // API parameter values that are decorated as "sensitive" in the API will not
  4503  // be included in the string output. The member name will be present, but the
  4504  // value will be replaced with "sensitive".
  4505  func (s CustomAction) GoString() string {
  4506  	return s.String()
  4507  }
  4508  
  4509  // Validate inspects the fields of the type to determine if they are valid.
  4510  func (s *CustomAction) Validate() error {
  4511  	invalidParams := request.ErrInvalidParams{Context: "CustomAction"}
  4512  	if s.ActionDefinition == nil {
  4513  		invalidParams.Add(request.NewErrParamRequired("ActionDefinition"))
  4514  	}
  4515  	if s.ActionName == nil {
  4516  		invalidParams.Add(request.NewErrParamRequired("ActionName"))
  4517  	}
  4518  	if s.ActionName != nil && len(*s.ActionName) < 1 {
  4519  		invalidParams.Add(request.NewErrParamMinLen("ActionName", 1))
  4520  	}
  4521  	if s.ActionDefinition != nil {
  4522  		if err := s.ActionDefinition.Validate(); err != nil {
  4523  			invalidParams.AddNested("ActionDefinition", err.(request.ErrInvalidParams))
  4524  		}
  4525  	}
  4526  
  4527  	if invalidParams.Len() > 0 {
  4528  		return invalidParams
  4529  	}
  4530  	return nil
  4531  }
  4532  
  4533  // SetActionDefinition sets the ActionDefinition field's value.
  4534  func (s *CustomAction) SetActionDefinition(v *ActionDefinition) *CustomAction {
  4535  	s.ActionDefinition = v
  4536  	return s
  4537  }
  4538  
  4539  // SetActionName sets the ActionName field's value.
  4540  func (s *CustomAction) SetActionName(v string) *CustomAction {
  4541  	s.ActionName = &v
  4542  	return s
  4543  }
  4544  
  4545  type DeleteFirewallInput struct {
  4546  	_ struct{} `type:"structure"`
  4547  
  4548  	// The Amazon Resource Name (ARN) of the firewall.
  4549  	//
  4550  	// You must specify the ARN or the name, and you can specify both.
  4551  	FirewallArn *string `min:"1" type:"string"`
  4552  
  4553  	// The descriptive name of the firewall. You can't change the name of a firewall
  4554  	// after you create it.
  4555  	//
  4556  	// You must specify the ARN or the name, and you can specify both.
  4557  	FirewallName *string `min:"1" type:"string"`
  4558  }
  4559  
  4560  // String returns the string representation.
  4561  //
  4562  // API parameter values that are decorated as "sensitive" in the API will not
  4563  // be included in the string output. The member name will be present, but the
  4564  // value will be replaced with "sensitive".
  4565  func (s DeleteFirewallInput) String() string {
  4566  	return awsutil.Prettify(s)
  4567  }
  4568  
  4569  // GoString returns the string representation.
  4570  //
  4571  // API parameter values that are decorated as "sensitive" in the API will not
  4572  // be included in the string output. The member name will be present, but the
  4573  // value will be replaced with "sensitive".
  4574  func (s DeleteFirewallInput) GoString() string {
  4575  	return s.String()
  4576  }
  4577  
  4578  // Validate inspects the fields of the type to determine if they are valid.
  4579  func (s *DeleteFirewallInput) Validate() error {
  4580  	invalidParams := request.ErrInvalidParams{Context: "DeleteFirewallInput"}
  4581  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
  4582  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
  4583  	}
  4584  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  4585  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  4586  	}
  4587  
  4588  	if invalidParams.Len() > 0 {
  4589  		return invalidParams
  4590  	}
  4591  	return nil
  4592  }
  4593  
  4594  // SetFirewallArn sets the FirewallArn field's value.
  4595  func (s *DeleteFirewallInput) SetFirewallArn(v string) *DeleteFirewallInput {
  4596  	s.FirewallArn = &v
  4597  	return s
  4598  }
  4599  
  4600  // SetFirewallName sets the FirewallName field's value.
  4601  func (s *DeleteFirewallInput) SetFirewallName(v string) *DeleteFirewallInput {
  4602  	s.FirewallName = &v
  4603  	return s
  4604  }
  4605  
  4606  type DeleteFirewallOutput struct {
  4607  	_ struct{} `type:"structure"`
  4608  
  4609  	// The firewall defines the configuration settings for an AWS Network Firewall
  4610  	// firewall. These settings include the firewall policy, the subnets in your
  4611  	// VPC to use for the firewall endpoints, and any tags that are attached to
  4612  	// the firewall AWS resource.
  4613  	//
  4614  	// The status of the firewall, for example whether it's ready to filter network
  4615  	// traffic, is provided in the corresponding FirewallStatus. You can retrieve
  4616  	// both objects by calling DescribeFirewall.
  4617  	Firewall *Firewall `type:"structure"`
  4618  
  4619  	// Detailed information about the current status of a Firewall. You can retrieve
  4620  	// this for a firewall by calling DescribeFirewall and providing the firewall
  4621  	// name and ARN.
  4622  	FirewallStatus *FirewallStatus `type:"structure"`
  4623  }
  4624  
  4625  // String returns the string representation.
  4626  //
  4627  // API parameter values that are decorated as "sensitive" in the API will not
  4628  // be included in the string output. The member name will be present, but the
  4629  // value will be replaced with "sensitive".
  4630  func (s DeleteFirewallOutput) String() string {
  4631  	return awsutil.Prettify(s)
  4632  }
  4633  
  4634  // GoString returns the string representation.
  4635  //
  4636  // API parameter values that are decorated as "sensitive" in the API will not
  4637  // be included in the string output. The member name will be present, but the
  4638  // value will be replaced with "sensitive".
  4639  func (s DeleteFirewallOutput) GoString() string {
  4640  	return s.String()
  4641  }
  4642  
  4643  // SetFirewall sets the Firewall field's value.
  4644  func (s *DeleteFirewallOutput) SetFirewall(v *Firewall) *DeleteFirewallOutput {
  4645  	s.Firewall = v
  4646  	return s
  4647  }
  4648  
  4649  // SetFirewallStatus sets the FirewallStatus field's value.
  4650  func (s *DeleteFirewallOutput) SetFirewallStatus(v *FirewallStatus) *DeleteFirewallOutput {
  4651  	s.FirewallStatus = v
  4652  	return s
  4653  }
  4654  
  4655  type DeleteFirewallPolicyInput struct {
  4656  	_ struct{} `type:"structure"`
  4657  
  4658  	// The Amazon Resource Name (ARN) of the firewall policy.
  4659  	//
  4660  	// You must specify the ARN or the name, and you can specify both.
  4661  	FirewallPolicyArn *string `min:"1" type:"string"`
  4662  
  4663  	// The descriptive name of the firewall policy. You can't change the name of
  4664  	// a firewall policy after you create it.
  4665  	//
  4666  	// You must specify the ARN or the name, and you can specify both.
  4667  	FirewallPolicyName *string `min:"1" type:"string"`
  4668  }
  4669  
  4670  // String returns the string representation.
  4671  //
  4672  // API parameter values that are decorated as "sensitive" in the API will not
  4673  // be included in the string output. The member name will be present, but the
  4674  // value will be replaced with "sensitive".
  4675  func (s DeleteFirewallPolicyInput) String() string {
  4676  	return awsutil.Prettify(s)
  4677  }
  4678  
  4679  // GoString returns the string representation.
  4680  //
  4681  // API parameter values that are decorated as "sensitive" in the API will not
  4682  // be included in the string output. The member name will be present, but the
  4683  // value will be replaced with "sensitive".
  4684  func (s DeleteFirewallPolicyInput) GoString() string {
  4685  	return s.String()
  4686  }
  4687  
  4688  // Validate inspects the fields of the type to determine if they are valid.
  4689  func (s *DeleteFirewallPolicyInput) Validate() error {
  4690  	invalidParams := request.ErrInvalidParams{Context: "DeleteFirewallPolicyInput"}
  4691  	if s.FirewallPolicyArn != nil && len(*s.FirewallPolicyArn) < 1 {
  4692  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyArn", 1))
  4693  	}
  4694  	if s.FirewallPolicyName != nil && len(*s.FirewallPolicyName) < 1 {
  4695  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyName", 1))
  4696  	}
  4697  
  4698  	if invalidParams.Len() > 0 {
  4699  		return invalidParams
  4700  	}
  4701  	return nil
  4702  }
  4703  
  4704  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  4705  func (s *DeleteFirewallPolicyInput) SetFirewallPolicyArn(v string) *DeleteFirewallPolicyInput {
  4706  	s.FirewallPolicyArn = &v
  4707  	return s
  4708  }
  4709  
  4710  // SetFirewallPolicyName sets the FirewallPolicyName field's value.
  4711  func (s *DeleteFirewallPolicyInput) SetFirewallPolicyName(v string) *DeleteFirewallPolicyInput {
  4712  	s.FirewallPolicyName = &v
  4713  	return s
  4714  }
  4715  
  4716  type DeleteFirewallPolicyOutput struct {
  4717  	_ struct{} `type:"structure"`
  4718  
  4719  	// The object containing the definition of the FirewallPolicyResponse that you
  4720  	// asked to delete.
  4721  	//
  4722  	// FirewallPolicyResponse is a required field
  4723  	FirewallPolicyResponse *FirewallPolicyResponse `type:"structure" required:"true"`
  4724  }
  4725  
  4726  // String returns the string representation.
  4727  //
  4728  // API parameter values that are decorated as "sensitive" in the API will not
  4729  // be included in the string output. The member name will be present, but the
  4730  // value will be replaced with "sensitive".
  4731  func (s DeleteFirewallPolicyOutput) String() string {
  4732  	return awsutil.Prettify(s)
  4733  }
  4734  
  4735  // GoString returns the string representation.
  4736  //
  4737  // API parameter values that are decorated as "sensitive" in the API will not
  4738  // be included in the string output. The member name will be present, but the
  4739  // value will be replaced with "sensitive".
  4740  func (s DeleteFirewallPolicyOutput) GoString() string {
  4741  	return s.String()
  4742  }
  4743  
  4744  // SetFirewallPolicyResponse sets the FirewallPolicyResponse field's value.
  4745  func (s *DeleteFirewallPolicyOutput) SetFirewallPolicyResponse(v *FirewallPolicyResponse) *DeleteFirewallPolicyOutput {
  4746  	s.FirewallPolicyResponse = v
  4747  	return s
  4748  }
  4749  
  4750  type DeleteResourcePolicyInput struct {
  4751  	_ struct{} `type:"structure"`
  4752  
  4753  	// The Amazon Resource Name (ARN) of the rule group or firewall policy whose
  4754  	// resource policy you want to delete.
  4755  	//
  4756  	// ResourceArn is a required field
  4757  	ResourceArn *string `min:"1" type:"string" required:"true"`
  4758  }
  4759  
  4760  // String returns the string representation.
  4761  //
  4762  // API parameter values that are decorated as "sensitive" in the API will not
  4763  // be included in the string output. The member name will be present, but the
  4764  // value will be replaced with "sensitive".
  4765  func (s DeleteResourcePolicyInput) String() string {
  4766  	return awsutil.Prettify(s)
  4767  }
  4768  
  4769  // GoString returns the string representation.
  4770  //
  4771  // API parameter values that are decorated as "sensitive" in the API will not
  4772  // be included in the string output. The member name will be present, but the
  4773  // value will be replaced with "sensitive".
  4774  func (s DeleteResourcePolicyInput) GoString() string {
  4775  	return s.String()
  4776  }
  4777  
  4778  // Validate inspects the fields of the type to determine if they are valid.
  4779  func (s *DeleteResourcePolicyInput) Validate() error {
  4780  	invalidParams := request.ErrInvalidParams{Context: "DeleteResourcePolicyInput"}
  4781  	if s.ResourceArn == nil {
  4782  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  4783  	}
  4784  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  4785  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  4786  	}
  4787  
  4788  	if invalidParams.Len() > 0 {
  4789  		return invalidParams
  4790  	}
  4791  	return nil
  4792  }
  4793  
  4794  // SetResourceArn sets the ResourceArn field's value.
  4795  func (s *DeleteResourcePolicyInput) SetResourceArn(v string) *DeleteResourcePolicyInput {
  4796  	s.ResourceArn = &v
  4797  	return s
  4798  }
  4799  
  4800  type DeleteResourcePolicyOutput struct {
  4801  	_ struct{} `type:"structure"`
  4802  }
  4803  
  4804  // String returns the string representation.
  4805  //
  4806  // API parameter values that are decorated as "sensitive" in the API will not
  4807  // be included in the string output. The member name will be present, but the
  4808  // value will be replaced with "sensitive".
  4809  func (s DeleteResourcePolicyOutput) String() string {
  4810  	return awsutil.Prettify(s)
  4811  }
  4812  
  4813  // GoString returns the string representation.
  4814  //
  4815  // API parameter values that are decorated as "sensitive" in the API will not
  4816  // be included in the string output. The member name will be present, but the
  4817  // value will be replaced with "sensitive".
  4818  func (s DeleteResourcePolicyOutput) GoString() string {
  4819  	return s.String()
  4820  }
  4821  
  4822  type DeleteRuleGroupInput struct {
  4823  	_ struct{} `type:"structure"`
  4824  
  4825  	// The Amazon Resource Name (ARN) of the rule group.
  4826  	//
  4827  	// You must specify the ARN or the name, and you can specify both.
  4828  	RuleGroupArn *string `min:"1" type:"string"`
  4829  
  4830  	// The descriptive name of the rule group. You can't change the name of a rule
  4831  	// group after you create it.
  4832  	//
  4833  	// You must specify the ARN or the name, and you can specify both.
  4834  	RuleGroupName *string `min:"1" type:"string"`
  4835  
  4836  	// Indicates whether the rule group is stateless or stateful. If the rule group
  4837  	// is stateless, it contains stateless rules. If it is stateful, it contains
  4838  	// stateful rules.
  4839  	//
  4840  	// This setting is required for requests that do not include the RuleGroupARN.
  4841  	Type *string `type:"string" enum:"RuleGroupType"`
  4842  }
  4843  
  4844  // String returns the string representation.
  4845  //
  4846  // API parameter values that are decorated as "sensitive" in the API will not
  4847  // be included in the string output. The member name will be present, but the
  4848  // value will be replaced with "sensitive".
  4849  func (s DeleteRuleGroupInput) String() string {
  4850  	return awsutil.Prettify(s)
  4851  }
  4852  
  4853  // GoString returns the string representation.
  4854  //
  4855  // API parameter values that are decorated as "sensitive" in the API will not
  4856  // be included in the string output. The member name will be present, but the
  4857  // value will be replaced with "sensitive".
  4858  func (s DeleteRuleGroupInput) GoString() string {
  4859  	return s.String()
  4860  }
  4861  
  4862  // Validate inspects the fields of the type to determine if they are valid.
  4863  func (s *DeleteRuleGroupInput) Validate() error {
  4864  	invalidParams := request.ErrInvalidParams{Context: "DeleteRuleGroupInput"}
  4865  	if s.RuleGroupArn != nil && len(*s.RuleGroupArn) < 1 {
  4866  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupArn", 1))
  4867  	}
  4868  	if s.RuleGroupName != nil && len(*s.RuleGroupName) < 1 {
  4869  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupName", 1))
  4870  	}
  4871  
  4872  	if invalidParams.Len() > 0 {
  4873  		return invalidParams
  4874  	}
  4875  	return nil
  4876  }
  4877  
  4878  // SetRuleGroupArn sets the RuleGroupArn field's value.
  4879  func (s *DeleteRuleGroupInput) SetRuleGroupArn(v string) *DeleteRuleGroupInput {
  4880  	s.RuleGroupArn = &v
  4881  	return s
  4882  }
  4883  
  4884  // SetRuleGroupName sets the RuleGroupName field's value.
  4885  func (s *DeleteRuleGroupInput) SetRuleGroupName(v string) *DeleteRuleGroupInput {
  4886  	s.RuleGroupName = &v
  4887  	return s
  4888  }
  4889  
  4890  // SetType sets the Type field's value.
  4891  func (s *DeleteRuleGroupInput) SetType(v string) *DeleteRuleGroupInput {
  4892  	s.Type = &v
  4893  	return s
  4894  }
  4895  
  4896  type DeleteRuleGroupOutput struct {
  4897  	_ struct{} `type:"structure"`
  4898  
  4899  	// The high-level properties of a rule group. This, along with the RuleGroup,
  4900  	// define the rule group. You can retrieve all objects for a rule group by calling
  4901  	// DescribeRuleGroup.
  4902  	//
  4903  	// RuleGroupResponse is a required field
  4904  	RuleGroupResponse *RuleGroupResponse `type:"structure" required:"true"`
  4905  }
  4906  
  4907  // String returns the string representation.
  4908  //
  4909  // API parameter values that are decorated as "sensitive" in the API will not
  4910  // be included in the string output. The member name will be present, but the
  4911  // value will be replaced with "sensitive".
  4912  func (s DeleteRuleGroupOutput) String() string {
  4913  	return awsutil.Prettify(s)
  4914  }
  4915  
  4916  // GoString returns the string representation.
  4917  //
  4918  // API parameter values that are decorated as "sensitive" in the API will not
  4919  // be included in the string output. The member name will be present, but the
  4920  // value will be replaced with "sensitive".
  4921  func (s DeleteRuleGroupOutput) GoString() string {
  4922  	return s.String()
  4923  }
  4924  
  4925  // SetRuleGroupResponse sets the RuleGroupResponse field's value.
  4926  func (s *DeleteRuleGroupOutput) SetRuleGroupResponse(v *RuleGroupResponse) *DeleteRuleGroupOutput {
  4927  	s.RuleGroupResponse = v
  4928  	return s
  4929  }
  4930  
  4931  type DescribeFirewallInput struct {
  4932  	_ struct{} `type:"structure"`
  4933  
  4934  	// The Amazon Resource Name (ARN) of the firewall.
  4935  	//
  4936  	// You must specify the ARN or the name, and you can specify both.
  4937  	FirewallArn *string `min:"1" type:"string"`
  4938  
  4939  	// The descriptive name of the firewall. You can't change the name of a firewall
  4940  	// after you create it.
  4941  	//
  4942  	// You must specify the ARN or the name, and you can specify both.
  4943  	FirewallName *string `min:"1" type:"string"`
  4944  }
  4945  
  4946  // String returns the string representation.
  4947  //
  4948  // API parameter values that are decorated as "sensitive" in the API will not
  4949  // be included in the string output. The member name will be present, but the
  4950  // value will be replaced with "sensitive".
  4951  func (s DescribeFirewallInput) String() string {
  4952  	return awsutil.Prettify(s)
  4953  }
  4954  
  4955  // GoString returns the string representation.
  4956  //
  4957  // API parameter values that are decorated as "sensitive" in the API will not
  4958  // be included in the string output. The member name will be present, but the
  4959  // value will be replaced with "sensitive".
  4960  func (s DescribeFirewallInput) GoString() string {
  4961  	return s.String()
  4962  }
  4963  
  4964  // Validate inspects the fields of the type to determine if they are valid.
  4965  func (s *DescribeFirewallInput) Validate() error {
  4966  	invalidParams := request.ErrInvalidParams{Context: "DescribeFirewallInput"}
  4967  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
  4968  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
  4969  	}
  4970  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  4971  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  4972  	}
  4973  
  4974  	if invalidParams.Len() > 0 {
  4975  		return invalidParams
  4976  	}
  4977  	return nil
  4978  }
  4979  
  4980  // SetFirewallArn sets the FirewallArn field's value.
  4981  func (s *DescribeFirewallInput) SetFirewallArn(v string) *DescribeFirewallInput {
  4982  	s.FirewallArn = &v
  4983  	return s
  4984  }
  4985  
  4986  // SetFirewallName sets the FirewallName field's value.
  4987  func (s *DescribeFirewallInput) SetFirewallName(v string) *DescribeFirewallInput {
  4988  	s.FirewallName = &v
  4989  	return s
  4990  }
  4991  
  4992  type DescribeFirewallOutput struct {
  4993  	_ struct{} `type:"structure"`
  4994  
  4995  	// The configuration settings for the firewall. These settings include the firewall
  4996  	// policy and the subnets in your VPC to use for the firewall endpoints.
  4997  	Firewall *Firewall `type:"structure"`
  4998  
  4999  	// Detailed information about the current status of a Firewall. You can retrieve
  5000  	// this for a firewall by calling DescribeFirewall and providing the firewall
  5001  	// name and ARN.
  5002  	FirewallStatus *FirewallStatus `type:"structure"`
  5003  
  5004  	// An optional token that you can use for optimistic locking. Network Firewall
  5005  	// returns a token to your requests that access the firewall. The token marks
  5006  	// the state of the firewall resource at the time of the request.
  5007  	//
  5008  	// To make an unconditional change to the firewall, omit the token in your update
  5009  	// request. Without the token, Network Firewall performs your updates regardless
  5010  	// of whether the firewall has changed since you last retrieved it.
  5011  	//
  5012  	// To make a conditional change to the firewall, provide the token in your update
  5013  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  5014  	// changed since you last retrieved it. If it has changed, the operation fails
  5015  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  5016  	// to get a current copy of it with a new token. Reapply your changes as needed,
  5017  	// then try the operation again using the new token.
  5018  	UpdateToken *string `min:"1" type:"string"`
  5019  }
  5020  
  5021  // String returns the string representation.
  5022  //
  5023  // API parameter values that are decorated as "sensitive" in the API will not
  5024  // be included in the string output. The member name will be present, but the
  5025  // value will be replaced with "sensitive".
  5026  func (s DescribeFirewallOutput) String() string {
  5027  	return awsutil.Prettify(s)
  5028  }
  5029  
  5030  // GoString returns the string representation.
  5031  //
  5032  // API parameter values that are decorated as "sensitive" in the API will not
  5033  // be included in the string output. The member name will be present, but the
  5034  // value will be replaced with "sensitive".
  5035  func (s DescribeFirewallOutput) GoString() string {
  5036  	return s.String()
  5037  }
  5038  
  5039  // SetFirewall sets the Firewall field's value.
  5040  func (s *DescribeFirewallOutput) SetFirewall(v *Firewall) *DescribeFirewallOutput {
  5041  	s.Firewall = v
  5042  	return s
  5043  }
  5044  
  5045  // SetFirewallStatus sets the FirewallStatus field's value.
  5046  func (s *DescribeFirewallOutput) SetFirewallStatus(v *FirewallStatus) *DescribeFirewallOutput {
  5047  	s.FirewallStatus = v
  5048  	return s
  5049  }
  5050  
  5051  // SetUpdateToken sets the UpdateToken field's value.
  5052  func (s *DescribeFirewallOutput) SetUpdateToken(v string) *DescribeFirewallOutput {
  5053  	s.UpdateToken = &v
  5054  	return s
  5055  }
  5056  
  5057  type DescribeFirewallPolicyInput struct {
  5058  	_ struct{} `type:"structure"`
  5059  
  5060  	// The Amazon Resource Name (ARN) of the firewall policy.
  5061  	//
  5062  	// You must specify the ARN or the name, and you can specify both.
  5063  	FirewallPolicyArn *string `min:"1" type:"string"`
  5064  
  5065  	// The descriptive name of the firewall policy. You can't change the name of
  5066  	// a firewall policy after you create it.
  5067  	//
  5068  	// You must specify the ARN or the name, and you can specify both.
  5069  	FirewallPolicyName *string `min:"1" type:"string"`
  5070  }
  5071  
  5072  // String returns the string representation.
  5073  //
  5074  // API parameter values that are decorated as "sensitive" in the API will not
  5075  // be included in the string output. The member name will be present, but the
  5076  // value will be replaced with "sensitive".
  5077  func (s DescribeFirewallPolicyInput) String() string {
  5078  	return awsutil.Prettify(s)
  5079  }
  5080  
  5081  // GoString returns the string representation.
  5082  //
  5083  // API parameter values that are decorated as "sensitive" in the API will not
  5084  // be included in the string output. The member name will be present, but the
  5085  // value will be replaced with "sensitive".
  5086  func (s DescribeFirewallPolicyInput) GoString() string {
  5087  	return s.String()
  5088  }
  5089  
  5090  // Validate inspects the fields of the type to determine if they are valid.
  5091  func (s *DescribeFirewallPolicyInput) Validate() error {
  5092  	invalidParams := request.ErrInvalidParams{Context: "DescribeFirewallPolicyInput"}
  5093  	if s.FirewallPolicyArn != nil && len(*s.FirewallPolicyArn) < 1 {
  5094  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyArn", 1))
  5095  	}
  5096  	if s.FirewallPolicyName != nil && len(*s.FirewallPolicyName) < 1 {
  5097  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyName", 1))
  5098  	}
  5099  
  5100  	if invalidParams.Len() > 0 {
  5101  		return invalidParams
  5102  	}
  5103  	return nil
  5104  }
  5105  
  5106  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  5107  func (s *DescribeFirewallPolicyInput) SetFirewallPolicyArn(v string) *DescribeFirewallPolicyInput {
  5108  	s.FirewallPolicyArn = &v
  5109  	return s
  5110  }
  5111  
  5112  // SetFirewallPolicyName sets the FirewallPolicyName field's value.
  5113  func (s *DescribeFirewallPolicyInput) SetFirewallPolicyName(v string) *DescribeFirewallPolicyInput {
  5114  	s.FirewallPolicyName = &v
  5115  	return s
  5116  }
  5117  
  5118  type DescribeFirewallPolicyOutput struct {
  5119  	_ struct{} `type:"structure"`
  5120  
  5121  	// The policy for the specified firewall policy.
  5122  	FirewallPolicy *FirewallPolicy `type:"structure"`
  5123  
  5124  	// The high-level properties of a firewall policy. This, along with the FirewallPolicy,
  5125  	// define the policy. You can retrieve all objects for a firewall policy by
  5126  	// calling DescribeFirewallPolicy.
  5127  	//
  5128  	// FirewallPolicyResponse is a required field
  5129  	FirewallPolicyResponse *FirewallPolicyResponse `type:"structure" required:"true"`
  5130  
  5131  	// A token used for optimistic locking. Network Firewall returns a token to
  5132  	// your requests that access the firewall policy. The token marks the state
  5133  	// of the policy resource at the time of the request.
  5134  	//
  5135  	// To make changes to the policy, you provide the token in your request. Network
  5136  	// Firewall uses the token to ensure that the policy hasn't changed since you
  5137  	// last retrieved it. If it has changed, the operation fails with an InvalidTokenException.
  5138  	// If this happens, retrieve the firewall policy again to get a current copy
  5139  	// of it with current token. Reapply your changes as needed, then try the operation
  5140  	// again using the new token.
  5141  	//
  5142  	// UpdateToken is a required field
  5143  	UpdateToken *string `min:"1" type:"string" required:"true"`
  5144  }
  5145  
  5146  // String returns the string representation.
  5147  //
  5148  // API parameter values that are decorated as "sensitive" in the API will not
  5149  // be included in the string output. The member name will be present, but the
  5150  // value will be replaced with "sensitive".
  5151  func (s DescribeFirewallPolicyOutput) String() string {
  5152  	return awsutil.Prettify(s)
  5153  }
  5154  
  5155  // GoString returns the string representation.
  5156  //
  5157  // API parameter values that are decorated as "sensitive" in the API will not
  5158  // be included in the string output. The member name will be present, but the
  5159  // value will be replaced with "sensitive".
  5160  func (s DescribeFirewallPolicyOutput) GoString() string {
  5161  	return s.String()
  5162  }
  5163  
  5164  // SetFirewallPolicy sets the FirewallPolicy field's value.
  5165  func (s *DescribeFirewallPolicyOutput) SetFirewallPolicy(v *FirewallPolicy) *DescribeFirewallPolicyOutput {
  5166  	s.FirewallPolicy = v
  5167  	return s
  5168  }
  5169  
  5170  // SetFirewallPolicyResponse sets the FirewallPolicyResponse field's value.
  5171  func (s *DescribeFirewallPolicyOutput) SetFirewallPolicyResponse(v *FirewallPolicyResponse) *DescribeFirewallPolicyOutput {
  5172  	s.FirewallPolicyResponse = v
  5173  	return s
  5174  }
  5175  
  5176  // SetUpdateToken sets the UpdateToken field's value.
  5177  func (s *DescribeFirewallPolicyOutput) SetUpdateToken(v string) *DescribeFirewallPolicyOutput {
  5178  	s.UpdateToken = &v
  5179  	return s
  5180  }
  5181  
  5182  type DescribeLoggingConfigurationInput struct {
  5183  	_ struct{} `type:"structure"`
  5184  
  5185  	// The Amazon Resource Name (ARN) of the firewall.
  5186  	//
  5187  	// You must specify the ARN or the name, and you can specify both.
  5188  	FirewallArn *string `min:"1" type:"string"`
  5189  
  5190  	// The descriptive name of the firewall. You can't change the name of a firewall
  5191  	// after you create it.
  5192  	//
  5193  	// You must specify the ARN or the name, and you can specify both.
  5194  	FirewallName *string `min:"1" type:"string"`
  5195  }
  5196  
  5197  // String returns the string representation.
  5198  //
  5199  // API parameter values that are decorated as "sensitive" in the API will not
  5200  // be included in the string output. The member name will be present, but the
  5201  // value will be replaced with "sensitive".
  5202  func (s DescribeLoggingConfigurationInput) String() string {
  5203  	return awsutil.Prettify(s)
  5204  }
  5205  
  5206  // GoString returns the string representation.
  5207  //
  5208  // API parameter values that are decorated as "sensitive" in the API will not
  5209  // be included in the string output. The member name will be present, but the
  5210  // value will be replaced with "sensitive".
  5211  func (s DescribeLoggingConfigurationInput) GoString() string {
  5212  	return s.String()
  5213  }
  5214  
  5215  // Validate inspects the fields of the type to determine if they are valid.
  5216  func (s *DescribeLoggingConfigurationInput) Validate() error {
  5217  	invalidParams := request.ErrInvalidParams{Context: "DescribeLoggingConfigurationInput"}
  5218  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
  5219  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
  5220  	}
  5221  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  5222  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  5223  	}
  5224  
  5225  	if invalidParams.Len() > 0 {
  5226  		return invalidParams
  5227  	}
  5228  	return nil
  5229  }
  5230  
  5231  // SetFirewallArn sets the FirewallArn field's value.
  5232  func (s *DescribeLoggingConfigurationInput) SetFirewallArn(v string) *DescribeLoggingConfigurationInput {
  5233  	s.FirewallArn = &v
  5234  	return s
  5235  }
  5236  
  5237  // SetFirewallName sets the FirewallName field's value.
  5238  func (s *DescribeLoggingConfigurationInput) SetFirewallName(v string) *DescribeLoggingConfigurationInput {
  5239  	s.FirewallName = &v
  5240  	return s
  5241  }
  5242  
  5243  type DescribeLoggingConfigurationOutput struct {
  5244  	_ struct{} `type:"structure"`
  5245  
  5246  	// The Amazon Resource Name (ARN) of the firewall.
  5247  	FirewallArn *string `min:"1" type:"string"`
  5248  
  5249  	// Defines how AWS Network Firewall performs logging for a Firewall.
  5250  	LoggingConfiguration *LoggingConfiguration `type:"structure"`
  5251  }
  5252  
  5253  // String returns the string representation.
  5254  //
  5255  // API parameter values that are decorated as "sensitive" in the API will not
  5256  // be included in the string output. The member name will be present, but the
  5257  // value will be replaced with "sensitive".
  5258  func (s DescribeLoggingConfigurationOutput) String() string {
  5259  	return awsutil.Prettify(s)
  5260  }
  5261  
  5262  // GoString returns the string representation.
  5263  //
  5264  // API parameter values that are decorated as "sensitive" in the API will not
  5265  // be included in the string output. The member name will be present, but the
  5266  // value will be replaced with "sensitive".
  5267  func (s DescribeLoggingConfigurationOutput) GoString() string {
  5268  	return s.String()
  5269  }
  5270  
  5271  // SetFirewallArn sets the FirewallArn field's value.
  5272  func (s *DescribeLoggingConfigurationOutput) SetFirewallArn(v string) *DescribeLoggingConfigurationOutput {
  5273  	s.FirewallArn = &v
  5274  	return s
  5275  }
  5276  
  5277  // SetLoggingConfiguration sets the LoggingConfiguration field's value.
  5278  func (s *DescribeLoggingConfigurationOutput) SetLoggingConfiguration(v *LoggingConfiguration) *DescribeLoggingConfigurationOutput {
  5279  	s.LoggingConfiguration = v
  5280  	return s
  5281  }
  5282  
  5283  type DescribeResourcePolicyInput struct {
  5284  	_ struct{} `type:"structure"`
  5285  
  5286  	// The Amazon Resource Name (ARN) of the rule group or firewall policy whose
  5287  	// resource policy you want to retrieve.
  5288  	//
  5289  	// ResourceArn is a required field
  5290  	ResourceArn *string `min:"1" type:"string" required:"true"`
  5291  }
  5292  
  5293  // String returns the string representation.
  5294  //
  5295  // API parameter values that are decorated as "sensitive" in the API will not
  5296  // be included in the string output. The member name will be present, but the
  5297  // value will be replaced with "sensitive".
  5298  func (s DescribeResourcePolicyInput) String() string {
  5299  	return awsutil.Prettify(s)
  5300  }
  5301  
  5302  // GoString returns the string representation.
  5303  //
  5304  // API parameter values that are decorated as "sensitive" in the API will not
  5305  // be included in the string output. The member name will be present, but the
  5306  // value will be replaced with "sensitive".
  5307  func (s DescribeResourcePolicyInput) GoString() string {
  5308  	return s.String()
  5309  }
  5310  
  5311  // Validate inspects the fields of the type to determine if they are valid.
  5312  func (s *DescribeResourcePolicyInput) Validate() error {
  5313  	invalidParams := request.ErrInvalidParams{Context: "DescribeResourcePolicyInput"}
  5314  	if s.ResourceArn == nil {
  5315  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  5316  	}
  5317  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  5318  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  5319  	}
  5320  
  5321  	if invalidParams.Len() > 0 {
  5322  		return invalidParams
  5323  	}
  5324  	return nil
  5325  }
  5326  
  5327  // SetResourceArn sets the ResourceArn field's value.
  5328  func (s *DescribeResourcePolicyInput) SetResourceArn(v string) *DescribeResourcePolicyInput {
  5329  	s.ResourceArn = &v
  5330  	return s
  5331  }
  5332  
  5333  type DescribeResourcePolicyOutput struct {
  5334  	_ struct{} `type:"structure"`
  5335  
  5336  	// The AWS Identity and Access Management policy for the resource.
  5337  	Policy *string `min:"1" type:"string"`
  5338  }
  5339  
  5340  // String returns the string representation.
  5341  //
  5342  // API parameter values that are decorated as "sensitive" in the API will not
  5343  // be included in the string output. The member name will be present, but the
  5344  // value will be replaced with "sensitive".
  5345  func (s DescribeResourcePolicyOutput) String() string {
  5346  	return awsutil.Prettify(s)
  5347  }
  5348  
  5349  // GoString returns the string representation.
  5350  //
  5351  // API parameter values that are decorated as "sensitive" in the API will not
  5352  // be included in the string output. The member name will be present, but the
  5353  // value will be replaced with "sensitive".
  5354  func (s DescribeResourcePolicyOutput) GoString() string {
  5355  	return s.String()
  5356  }
  5357  
  5358  // SetPolicy sets the Policy field's value.
  5359  func (s *DescribeResourcePolicyOutput) SetPolicy(v string) *DescribeResourcePolicyOutput {
  5360  	s.Policy = &v
  5361  	return s
  5362  }
  5363  
  5364  type DescribeRuleGroupInput struct {
  5365  	_ struct{} `type:"structure"`
  5366  
  5367  	// The Amazon Resource Name (ARN) of the rule group.
  5368  	//
  5369  	// You must specify the ARN or the name, and you can specify both.
  5370  	RuleGroupArn *string `min:"1" type:"string"`
  5371  
  5372  	// The descriptive name of the rule group. You can't change the name of a rule
  5373  	// group after you create it.
  5374  	//
  5375  	// You must specify the ARN or the name, and you can specify both.
  5376  	RuleGroupName *string `min:"1" type:"string"`
  5377  
  5378  	// Indicates whether the rule group is stateless or stateful. If the rule group
  5379  	// is stateless, it contains stateless rules. If it is stateful, it contains
  5380  	// stateful rules.
  5381  	//
  5382  	// This setting is required for requests that do not include the RuleGroupARN.
  5383  	Type *string `type:"string" enum:"RuleGroupType"`
  5384  }
  5385  
  5386  // String returns the string representation.
  5387  //
  5388  // API parameter values that are decorated as "sensitive" in the API will not
  5389  // be included in the string output. The member name will be present, but the
  5390  // value will be replaced with "sensitive".
  5391  func (s DescribeRuleGroupInput) String() string {
  5392  	return awsutil.Prettify(s)
  5393  }
  5394  
  5395  // GoString returns the string representation.
  5396  //
  5397  // API parameter values that are decorated as "sensitive" in the API will not
  5398  // be included in the string output. The member name will be present, but the
  5399  // value will be replaced with "sensitive".
  5400  func (s DescribeRuleGroupInput) GoString() string {
  5401  	return s.String()
  5402  }
  5403  
  5404  // Validate inspects the fields of the type to determine if they are valid.
  5405  func (s *DescribeRuleGroupInput) Validate() error {
  5406  	invalidParams := request.ErrInvalidParams{Context: "DescribeRuleGroupInput"}
  5407  	if s.RuleGroupArn != nil && len(*s.RuleGroupArn) < 1 {
  5408  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupArn", 1))
  5409  	}
  5410  	if s.RuleGroupName != nil && len(*s.RuleGroupName) < 1 {
  5411  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupName", 1))
  5412  	}
  5413  
  5414  	if invalidParams.Len() > 0 {
  5415  		return invalidParams
  5416  	}
  5417  	return nil
  5418  }
  5419  
  5420  // SetRuleGroupArn sets the RuleGroupArn field's value.
  5421  func (s *DescribeRuleGroupInput) SetRuleGroupArn(v string) *DescribeRuleGroupInput {
  5422  	s.RuleGroupArn = &v
  5423  	return s
  5424  }
  5425  
  5426  // SetRuleGroupName sets the RuleGroupName field's value.
  5427  func (s *DescribeRuleGroupInput) SetRuleGroupName(v string) *DescribeRuleGroupInput {
  5428  	s.RuleGroupName = &v
  5429  	return s
  5430  }
  5431  
  5432  // SetType sets the Type field's value.
  5433  func (s *DescribeRuleGroupInput) SetType(v string) *DescribeRuleGroupInput {
  5434  	s.Type = &v
  5435  	return s
  5436  }
  5437  
  5438  type DescribeRuleGroupOutput struct {
  5439  	_ struct{} `type:"structure"`
  5440  
  5441  	// The object that defines the rules in a rule group. This, along with RuleGroupResponse,
  5442  	// define the rule group. You can retrieve all objects for a rule group by calling
  5443  	// DescribeRuleGroup.
  5444  	//
  5445  	// AWS Network Firewall uses a rule group to inspect and control network traffic.
  5446  	// You define stateless rule groups to inspect individual packets and you define
  5447  	// stateful rule groups to inspect packets in the context of their traffic flow.
  5448  	//
  5449  	// To use a rule group, you include it by reference in an Network Firewall firewall
  5450  	// policy, then you use the policy in a firewall. You can reference a rule group
  5451  	// from more than one firewall policy, and you can use a firewall policy in
  5452  	// more than one firewall.
  5453  	RuleGroup *RuleGroup `type:"structure"`
  5454  
  5455  	// The high-level properties of a rule group. This, along with the RuleGroup,
  5456  	// define the rule group. You can retrieve all objects for a rule group by calling
  5457  	// DescribeRuleGroup.
  5458  	//
  5459  	// RuleGroupResponse is a required field
  5460  	RuleGroupResponse *RuleGroupResponse `type:"structure" required:"true"`
  5461  
  5462  	// A token used for optimistic locking. Network Firewall returns a token to
  5463  	// your requests that access the rule group. The token marks the state of the
  5464  	// rule group resource at the time of the request.
  5465  	//
  5466  	// To make changes to the rule group, you provide the token in your request.
  5467  	// Network Firewall uses the token to ensure that the rule group hasn't changed
  5468  	// since you last retrieved it. If it has changed, the operation fails with
  5469  	// an InvalidTokenException. If this happens, retrieve the rule group again
  5470  	// to get a current copy of it with a current token. Reapply your changes as
  5471  	// needed, then try the operation again using the new token.
  5472  	//
  5473  	// UpdateToken is a required field
  5474  	UpdateToken *string `min:"1" type:"string" required:"true"`
  5475  }
  5476  
  5477  // String returns the string representation.
  5478  //
  5479  // API parameter values that are decorated as "sensitive" in the API will not
  5480  // be included in the string output. The member name will be present, but the
  5481  // value will be replaced with "sensitive".
  5482  func (s DescribeRuleGroupOutput) String() string {
  5483  	return awsutil.Prettify(s)
  5484  }
  5485  
  5486  // GoString returns the string representation.
  5487  //
  5488  // API parameter values that are decorated as "sensitive" in the API will not
  5489  // be included in the string output. The member name will be present, but the
  5490  // value will be replaced with "sensitive".
  5491  func (s DescribeRuleGroupOutput) GoString() string {
  5492  	return s.String()
  5493  }
  5494  
  5495  // SetRuleGroup sets the RuleGroup field's value.
  5496  func (s *DescribeRuleGroupOutput) SetRuleGroup(v *RuleGroup) *DescribeRuleGroupOutput {
  5497  	s.RuleGroup = v
  5498  	return s
  5499  }
  5500  
  5501  // SetRuleGroupResponse sets the RuleGroupResponse field's value.
  5502  func (s *DescribeRuleGroupOutput) SetRuleGroupResponse(v *RuleGroupResponse) *DescribeRuleGroupOutput {
  5503  	s.RuleGroupResponse = v
  5504  	return s
  5505  }
  5506  
  5507  // SetUpdateToken sets the UpdateToken field's value.
  5508  func (s *DescribeRuleGroupOutput) SetUpdateToken(v string) *DescribeRuleGroupOutput {
  5509  	s.UpdateToken = &v
  5510  	return s
  5511  }
  5512  
  5513  // The value to use in an Amazon CloudWatch custom metric dimension. This is
  5514  // used in the PublishMetrics CustomAction. A CloudWatch custom metric dimension
  5515  // is a name/value pair that's part of the identity of a metric.
  5516  //
  5517  // AWS Network Firewall sets the dimension name to CustomAction and you provide
  5518  // the dimension value.
  5519  //
  5520  // For more information about CloudWatch custom metric dimensions, see Publishing
  5521  // Custom Metrics (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html#usingDimensions)
  5522  // in the Amazon CloudWatch User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
  5523  type Dimension struct {
  5524  	_ struct{} `type:"structure"`
  5525  
  5526  	// The value to use in the custom metric dimension.
  5527  	//
  5528  	// Value is a required field
  5529  	Value *string `min:"1" type:"string" required:"true"`
  5530  }
  5531  
  5532  // String returns the string representation.
  5533  //
  5534  // API parameter values that are decorated as "sensitive" in the API will not
  5535  // be included in the string output. The member name will be present, but the
  5536  // value will be replaced with "sensitive".
  5537  func (s Dimension) String() string {
  5538  	return awsutil.Prettify(s)
  5539  }
  5540  
  5541  // GoString returns the string representation.
  5542  //
  5543  // API parameter values that are decorated as "sensitive" in the API will not
  5544  // be included in the string output. The member name will be present, but the
  5545  // value will be replaced with "sensitive".
  5546  func (s Dimension) GoString() string {
  5547  	return s.String()
  5548  }
  5549  
  5550  // Validate inspects the fields of the type to determine if they are valid.
  5551  func (s *Dimension) Validate() error {
  5552  	invalidParams := request.ErrInvalidParams{Context: "Dimension"}
  5553  	if s.Value == nil {
  5554  		invalidParams.Add(request.NewErrParamRequired("Value"))
  5555  	}
  5556  	if s.Value != nil && len(*s.Value) < 1 {
  5557  		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
  5558  	}
  5559  
  5560  	if invalidParams.Len() > 0 {
  5561  		return invalidParams
  5562  	}
  5563  	return nil
  5564  }
  5565  
  5566  // SetValue sets the Value field's value.
  5567  func (s *Dimension) SetValue(v string) *Dimension {
  5568  	s.Value = &v
  5569  	return s
  5570  }
  5571  
  5572  type DisassociateSubnetsInput struct {
  5573  	_ struct{} `type:"structure"`
  5574  
  5575  	// The Amazon Resource Name (ARN) of the firewall.
  5576  	//
  5577  	// You must specify the ARN or the name, and you can specify both.
  5578  	FirewallArn *string `min:"1" type:"string"`
  5579  
  5580  	// The descriptive name of the firewall. You can't change the name of a firewall
  5581  	// after you create it.
  5582  	//
  5583  	// You must specify the ARN or the name, and you can specify both.
  5584  	FirewallName *string `min:"1" type:"string"`
  5585  
  5586  	// The unique identifiers for the subnets that you want to disassociate.
  5587  	//
  5588  	// SubnetIds is a required field
  5589  	SubnetIds []*string `type:"list" required:"true"`
  5590  
  5591  	// An optional token that you can use for optimistic locking. Network Firewall
  5592  	// returns a token to your requests that access the firewall. The token marks
  5593  	// the state of the firewall resource at the time of the request.
  5594  	//
  5595  	// To make an unconditional change to the firewall, omit the token in your update
  5596  	// request. Without the token, Network Firewall performs your updates regardless
  5597  	// of whether the firewall has changed since you last retrieved it.
  5598  	//
  5599  	// To make a conditional change to the firewall, provide the token in your update
  5600  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  5601  	// changed since you last retrieved it. If it has changed, the operation fails
  5602  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  5603  	// to get a current copy of it with a new token. Reapply your changes as needed,
  5604  	// then try the operation again using the new token.
  5605  	UpdateToken *string `min:"1" type:"string"`
  5606  }
  5607  
  5608  // String returns the string representation.
  5609  //
  5610  // API parameter values that are decorated as "sensitive" in the API will not
  5611  // be included in the string output. The member name will be present, but the
  5612  // value will be replaced with "sensitive".
  5613  func (s DisassociateSubnetsInput) String() string {
  5614  	return awsutil.Prettify(s)
  5615  }
  5616  
  5617  // GoString returns the string representation.
  5618  //
  5619  // API parameter values that are decorated as "sensitive" in the API will not
  5620  // be included in the string output. The member name will be present, but the
  5621  // value will be replaced with "sensitive".
  5622  func (s DisassociateSubnetsInput) GoString() string {
  5623  	return s.String()
  5624  }
  5625  
  5626  // Validate inspects the fields of the type to determine if they are valid.
  5627  func (s *DisassociateSubnetsInput) Validate() error {
  5628  	invalidParams := request.ErrInvalidParams{Context: "DisassociateSubnetsInput"}
  5629  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
  5630  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
  5631  	}
  5632  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
  5633  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
  5634  	}
  5635  	if s.SubnetIds == nil {
  5636  		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
  5637  	}
  5638  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
  5639  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
  5640  	}
  5641  
  5642  	if invalidParams.Len() > 0 {
  5643  		return invalidParams
  5644  	}
  5645  	return nil
  5646  }
  5647  
  5648  // SetFirewallArn sets the FirewallArn field's value.
  5649  func (s *DisassociateSubnetsInput) SetFirewallArn(v string) *DisassociateSubnetsInput {
  5650  	s.FirewallArn = &v
  5651  	return s
  5652  }
  5653  
  5654  // SetFirewallName sets the FirewallName field's value.
  5655  func (s *DisassociateSubnetsInput) SetFirewallName(v string) *DisassociateSubnetsInput {
  5656  	s.FirewallName = &v
  5657  	return s
  5658  }
  5659  
  5660  // SetSubnetIds sets the SubnetIds field's value.
  5661  func (s *DisassociateSubnetsInput) SetSubnetIds(v []*string) *DisassociateSubnetsInput {
  5662  	s.SubnetIds = v
  5663  	return s
  5664  }
  5665  
  5666  // SetUpdateToken sets the UpdateToken field's value.
  5667  func (s *DisassociateSubnetsInput) SetUpdateToken(v string) *DisassociateSubnetsInput {
  5668  	s.UpdateToken = &v
  5669  	return s
  5670  }
  5671  
  5672  type DisassociateSubnetsOutput struct {
  5673  	_ struct{} `type:"structure"`
  5674  
  5675  	// The Amazon Resource Name (ARN) of the firewall.
  5676  	FirewallArn *string `min:"1" type:"string"`
  5677  
  5678  	// The descriptive name of the firewall. You can't change the name of a firewall
  5679  	// after you create it.
  5680  	FirewallName *string `min:"1" type:"string"`
  5681  
  5682  	// The IDs of the subnets that are associated with the firewall.
  5683  	SubnetMappings []*SubnetMapping `type:"list"`
  5684  
  5685  	// An optional token that you can use for optimistic locking. Network Firewall
  5686  	// returns a token to your requests that access the firewall. The token marks
  5687  	// the state of the firewall resource at the time of the request.
  5688  	//
  5689  	// To make an unconditional change to the firewall, omit the token in your update
  5690  	// request. Without the token, Network Firewall performs your updates regardless
  5691  	// of whether the firewall has changed since you last retrieved it.
  5692  	//
  5693  	// To make a conditional change to the firewall, provide the token in your update
  5694  	// request. Network Firewall uses the token to ensure that the firewall hasn't
  5695  	// changed since you last retrieved it. If it has changed, the operation fails
  5696  	// with an InvalidTokenException. If this happens, retrieve the firewall again
  5697  	// to get a current copy of it with a new token. Reapply your changes as needed,
  5698  	// then try the operation again using the new token.
  5699  	UpdateToken *string `min:"1" type:"string"`
  5700  }
  5701  
  5702  // String returns the string representation.
  5703  //
  5704  // API parameter values that are decorated as "sensitive" in the API will not
  5705  // be included in the string output. The member name will be present, but the
  5706  // value will be replaced with "sensitive".
  5707  func (s DisassociateSubnetsOutput) String() string {
  5708  	return awsutil.Prettify(s)
  5709  }
  5710  
  5711  // GoString returns the string representation.
  5712  //
  5713  // API parameter values that are decorated as "sensitive" in the API will not
  5714  // be included in the string output. The member name will be present, but the
  5715  // value will be replaced with "sensitive".
  5716  func (s DisassociateSubnetsOutput) GoString() string {
  5717  	return s.String()
  5718  }
  5719  
  5720  // SetFirewallArn sets the FirewallArn field's value.
  5721  func (s *DisassociateSubnetsOutput) SetFirewallArn(v string) *DisassociateSubnetsOutput {
  5722  	s.FirewallArn = &v
  5723  	return s
  5724  }
  5725  
  5726  // SetFirewallName sets the FirewallName field's value.
  5727  func (s *DisassociateSubnetsOutput) SetFirewallName(v string) *DisassociateSubnetsOutput {
  5728  	s.FirewallName = &v
  5729  	return s
  5730  }
  5731  
  5732  // SetSubnetMappings sets the SubnetMappings field's value.
  5733  func (s *DisassociateSubnetsOutput) SetSubnetMappings(v []*SubnetMapping) *DisassociateSubnetsOutput {
  5734  	s.SubnetMappings = v
  5735  	return s
  5736  }
  5737  
  5738  // SetUpdateToken sets the UpdateToken field's value.
  5739  func (s *DisassociateSubnetsOutput) SetUpdateToken(v string) *DisassociateSubnetsOutput {
  5740  	s.UpdateToken = &v
  5741  	return s
  5742  }
  5743  
  5744  // The firewall defines the configuration settings for an AWS Network Firewall
  5745  // firewall. These settings include the firewall policy, the subnets in your
  5746  // VPC to use for the firewall endpoints, and any tags that are attached to
  5747  // the firewall AWS resource.
  5748  //
  5749  // The status of the firewall, for example whether it's ready to filter network
  5750  // traffic, is provided in the corresponding FirewallStatus. You can retrieve
  5751  // both objects by calling DescribeFirewall.
  5752  type Firewall struct {
  5753  	_ struct{} `type:"structure"`
  5754  
  5755  	// A flag indicating whether it is possible to delete the firewall. A setting
  5756  	// of TRUE indicates that the firewall is protected against deletion. Use this
  5757  	// setting to protect against accidentally deleting a firewall that is in use.
  5758  	// When you create a firewall, the operation initializes this flag to TRUE.
  5759  	DeleteProtection *bool `type:"boolean"`
  5760  
  5761  	// A description of the firewall.
  5762  	Description *string `type:"string"`
  5763  
  5764  	// The Amazon Resource Name (ARN) of the firewall.
  5765  	FirewallArn *string `min:"1" type:"string"`
  5766  
  5767  	// The unique identifier for the firewall.
  5768  	//
  5769  	// FirewallId is a required field
  5770  	FirewallId *string `min:"36" type:"string" required:"true"`
  5771  
  5772  	// The descriptive name of the firewall. You can't change the name of a firewall
  5773  	// after you create it.
  5774  	FirewallName *string `min:"1" type:"string"`
  5775  
  5776  	// The Amazon Resource Name (ARN) of the firewall policy.
  5777  	//
  5778  	// The relationship of firewall to firewall policy is many to one. Each firewall
  5779  	// requires one firewall policy association, and you can use the same firewall
  5780  	// policy for multiple firewalls.
  5781  	//
  5782  	// FirewallPolicyArn is a required field
  5783  	FirewallPolicyArn *string `min:"1" type:"string" required:"true"`
  5784  
  5785  	// A setting indicating whether the firewall is protected against a change to
  5786  	// the firewall policy association. Use this setting to protect against accidentally
  5787  	// modifying the firewall policy for a firewall that is in use. When you create
  5788  	// a firewall, the operation initializes this setting to TRUE.
  5789  	FirewallPolicyChangeProtection *bool `type:"boolean"`
  5790  
  5791  	// A setting indicating whether the firewall is protected against changes to
  5792  	// the subnet associations. Use this setting to protect against accidentally
  5793  	// modifying the subnet associations for a firewall that is in use. When you
  5794  	// create a firewall, the operation initializes this setting to TRUE.
  5795  	SubnetChangeProtection *bool `type:"boolean"`
  5796  
  5797  	// The public subnets that Network Firewall is using for the firewall. Each
  5798  	// subnet must belong to a different Availability Zone.
  5799  	//
  5800  	// SubnetMappings is a required field
  5801  	SubnetMappings []*SubnetMapping `type:"list" required:"true"`
  5802  
  5803  	Tags []*Tag `min:"1" type:"list"`
  5804  
  5805  	// The unique identifier of the VPC where the firewall is in use.
  5806  	//
  5807  	// VpcId is a required field
  5808  	VpcId *string `min:"1" type:"string" required:"true"`
  5809  }
  5810  
  5811  // String returns the string representation.
  5812  //
  5813  // API parameter values that are decorated as "sensitive" in the API will not
  5814  // be included in the string output. The member name will be present, but the
  5815  // value will be replaced with "sensitive".
  5816  func (s Firewall) String() string {
  5817  	return awsutil.Prettify(s)
  5818  }
  5819  
  5820  // GoString returns the string representation.
  5821  //
  5822  // API parameter values that are decorated as "sensitive" in the API will not
  5823  // be included in the string output. The member name will be present, but the
  5824  // value will be replaced with "sensitive".
  5825  func (s Firewall) GoString() string {
  5826  	return s.String()
  5827  }
  5828  
  5829  // SetDeleteProtection sets the DeleteProtection field's value.
  5830  func (s *Firewall) SetDeleteProtection(v bool) *Firewall {
  5831  	s.DeleteProtection = &v
  5832  	return s
  5833  }
  5834  
  5835  // SetDescription sets the Description field's value.
  5836  func (s *Firewall) SetDescription(v string) *Firewall {
  5837  	s.Description = &v
  5838  	return s
  5839  }
  5840  
  5841  // SetFirewallArn sets the FirewallArn field's value.
  5842  func (s *Firewall) SetFirewallArn(v string) *Firewall {
  5843  	s.FirewallArn = &v
  5844  	return s
  5845  }
  5846  
  5847  // SetFirewallId sets the FirewallId field's value.
  5848  func (s *Firewall) SetFirewallId(v string) *Firewall {
  5849  	s.FirewallId = &v
  5850  	return s
  5851  }
  5852  
  5853  // SetFirewallName sets the FirewallName field's value.
  5854  func (s *Firewall) SetFirewallName(v string) *Firewall {
  5855  	s.FirewallName = &v
  5856  	return s
  5857  }
  5858  
  5859  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  5860  func (s *Firewall) SetFirewallPolicyArn(v string) *Firewall {
  5861  	s.FirewallPolicyArn = &v
  5862  	return s
  5863  }
  5864  
  5865  // SetFirewallPolicyChangeProtection sets the FirewallPolicyChangeProtection field's value.
  5866  func (s *Firewall) SetFirewallPolicyChangeProtection(v bool) *Firewall {
  5867  	s.FirewallPolicyChangeProtection = &v
  5868  	return s
  5869  }
  5870  
  5871  // SetSubnetChangeProtection sets the SubnetChangeProtection field's value.
  5872  func (s *Firewall) SetSubnetChangeProtection(v bool) *Firewall {
  5873  	s.SubnetChangeProtection = &v
  5874  	return s
  5875  }
  5876  
  5877  // SetSubnetMappings sets the SubnetMappings field's value.
  5878  func (s *Firewall) SetSubnetMappings(v []*SubnetMapping) *Firewall {
  5879  	s.SubnetMappings = v
  5880  	return s
  5881  }
  5882  
  5883  // SetTags sets the Tags field's value.
  5884  func (s *Firewall) SetTags(v []*Tag) *Firewall {
  5885  	s.Tags = v
  5886  	return s
  5887  }
  5888  
  5889  // SetVpcId sets the VpcId field's value.
  5890  func (s *Firewall) SetVpcId(v string) *Firewall {
  5891  	s.VpcId = &v
  5892  	return s
  5893  }
  5894  
  5895  // High-level information about a firewall, returned by operations like create
  5896  // and describe. You can use the information provided in the metadata to retrieve
  5897  // and manage a firewall.
  5898  type FirewallMetadata struct {
  5899  	_ struct{} `type:"structure"`
  5900  
  5901  	// The Amazon Resource Name (ARN) of the firewall.
  5902  	FirewallArn *string `min:"1" type:"string"`
  5903  
  5904  	// The descriptive name of the firewall. You can't change the name of a firewall
  5905  	// after you create it.
  5906  	FirewallName *string `min:"1" type:"string"`
  5907  }
  5908  
  5909  // String returns the string representation.
  5910  //
  5911  // API parameter values that are decorated as "sensitive" in the API will not
  5912  // be included in the string output. The member name will be present, but the
  5913  // value will be replaced with "sensitive".
  5914  func (s FirewallMetadata) String() string {
  5915  	return awsutil.Prettify(s)
  5916  }
  5917  
  5918  // GoString returns the string representation.
  5919  //
  5920  // API parameter values that are decorated as "sensitive" in the API will not
  5921  // be included in the string output. The member name will be present, but the
  5922  // value will be replaced with "sensitive".
  5923  func (s FirewallMetadata) GoString() string {
  5924  	return s.String()
  5925  }
  5926  
  5927  // SetFirewallArn sets the FirewallArn field's value.
  5928  func (s *FirewallMetadata) SetFirewallArn(v string) *FirewallMetadata {
  5929  	s.FirewallArn = &v
  5930  	return s
  5931  }
  5932  
  5933  // SetFirewallName sets the FirewallName field's value.
  5934  func (s *FirewallMetadata) SetFirewallName(v string) *FirewallMetadata {
  5935  	s.FirewallName = &v
  5936  	return s
  5937  }
  5938  
  5939  // The firewall policy defines the behavior of a firewall using a collection
  5940  // of stateless and stateful rule groups and other settings. You can use one
  5941  // firewall policy for multiple firewalls.
  5942  //
  5943  // This, along with FirewallPolicyResponse, define the policy. You can retrieve
  5944  // all objects for a firewall policy by calling DescribeFirewallPolicy.
  5945  type FirewallPolicy struct {
  5946  	_ struct{} `type:"structure"`
  5947  
  5948  	// The default actions to take on a packet that doesn't match any stateful rules.
  5949  	StatefulDefaultActions []*string `type:"list"`
  5950  
  5951  	// Additional options governing how Network Firewall handles stateful rules.
  5952  	// The stateful rule groups that you use in your policy must have stateful rule
  5953  	// options settings that are compatible with these settings.
  5954  	StatefulEngineOptions *StatefulEngineOptions `type:"structure"`
  5955  
  5956  	// References to the stateful rule groups that are used in the policy. These
  5957  	// define the inspection criteria in stateful rules.
  5958  	StatefulRuleGroupReferences []*StatefulRuleGroupReference `type:"list"`
  5959  
  5960  	// The custom action definitions that are available for use in the firewall
  5961  	// policy's StatelessDefaultActions setting. You name each custom action that
  5962  	// you define, and then you can use it by name in your default actions specifications.
  5963  	StatelessCustomActions []*CustomAction `type:"list"`
  5964  
  5965  	// The actions to take on a packet if it doesn't match any of the stateless
  5966  	// rules in the policy. If you want non-matching packets to be forwarded for
  5967  	// stateful inspection, specify aws:forward_to_sfe.
  5968  	//
  5969  	// You must specify one of the standard actions: aws:pass, aws:drop, or aws:forward_to_sfe.
  5970  	// In addition, you can specify custom actions that are compatible with your
  5971  	// standard section choice.
  5972  	//
  5973  	// For example, you could specify ["aws:pass"] or you could specify ["aws:pass",
  5974  	// “customActionName”]. For information about compatibility, see the custom
  5975  	// action descriptions under CustomAction.
  5976  	//
  5977  	// StatelessDefaultActions is a required field
  5978  	StatelessDefaultActions []*string `type:"list" required:"true"`
  5979  
  5980  	// The actions to take on a fragmented UDP packet if it doesn't match any of
  5981  	// the stateless rules in the policy. Network Firewall only manages UDP packet
  5982  	// fragments and silently drops packet fragments for other protocols. If you
  5983  	// want non-matching fragmented UDP packets to be forwarded for stateful inspection,
  5984  	// specify aws:forward_to_sfe.
  5985  	//
  5986  	// You must specify one of the standard actions: aws:pass, aws:drop, or aws:forward_to_sfe.
  5987  	// In addition, you can specify custom actions that are compatible with your
  5988  	// standard section choice.
  5989  	//
  5990  	// For example, you could specify ["aws:pass"] or you could specify ["aws:pass",
  5991  	// “customActionName”]. For information about compatibility, see the custom
  5992  	// action descriptions under CustomAction.
  5993  	//
  5994  	// StatelessFragmentDefaultActions is a required field
  5995  	StatelessFragmentDefaultActions []*string `type:"list" required:"true"`
  5996  
  5997  	// References to the stateless rule groups that are used in the policy. These
  5998  	// define the matching criteria in stateless rules.
  5999  	StatelessRuleGroupReferences []*StatelessRuleGroupReference `type:"list"`
  6000  }
  6001  
  6002  // String returns the string representation.
  6003  //
  6004  // API parameter values that are decorated as "sensitive" in the API will not
  6005  // be included in the string output. The member name will be present, but the
  6006  // value will be replaced with "sensitive".
  6007  func (s FirewallPolicy) String() string {
  6008  	return awsutil.Prettify(s)
  6009  }
  6010  
  6011  // GoString returns the string representation.
  6012  //
  6013  // API parameter values that are decorated as "sensitive" in the API will not
  6014  // be included in the string output. The member name will be present, but the
  6015  // value will be replaced with "sensitive".
  6016  func (s FirewallPolicy) GoString() string {
  6017  	return s.String()
  6018  }
  6019  
  6020  // Validate inspects the fields of the type to determine if they are valid.
  6021  func (s *FirewallPolicy) Validate() error {
  6022  	invalidParams := request.ErrInvalidParams{Context: "FirewallPolicy"}
  6023  	if s.StatelessDefaultActions == nil {
  6024  		invalidParams.Add(request.NewErrParamRequired("StatelessDefaultActions"))
  6025  	}
  6026  	if s.StatelessFragmentDefaultActions == nil {
  6027  		invalidParams.Add(request.NewErrParamRequired("StatelessFragmentDefaultActions"))
  6028  	}
  6029  	if s.StatefulRuleGroupReferences != nil {
  6030  		for i, v := range s.StatefulRuleGroupReferences {
  6031  			if v == nil {
  6032  				continue
  6033  			}
  6034  			if err := v.Validate(); err != nil {
  6035  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StatefulRuleGroupReferences", i), err.(request.ErrInvalidParams))
  6036  			}
  6037  		}
  6038  	}
  6039  	if s.StatelessCustomActions != nil {
  6040  		for i, v := range s.StatelessCustomActions {
  6041  			if v == nil {
  6042  				continue
  6043  			}
  6044  			if err := v.Validate(); err != nil {
  6045  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StatelessCustomActions", i), err.(request.ErrInvalidParams))
  6046  			}
  6047  		}
  6048  	}
  6049  	if s.StatelessRuleGroupReferences != nil {
  6050  		for i, v := range s.StatelessRuleGroupReferences {
  6051  			if v == nil {
  6052  				continue
  6053  			}
  6054  			if err := v.Validate(); err != nil {
  6055  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StatelessRuleGroupReferences", i), err.(request.ErrInvalidParams))
  6056  			}
  6057  		}
  6058  	}
  6059  
  6060  	if invalidParams.Len() > 0 {
  6061  		return invalidParams
  6062  	}
  6063  	return nil
  6064  }
  6065  
  6066  // SetStatefulDefaultActions sets the StatefulDefaultActions field's value.
  6067  func (s *FirewallPolicy) SetStatefulDefaultActions(v []*string) *FirewallPolicy {
  6068  	s.StatefulDefaultActions = v
  6069  	return s
  6070  }
  6071  
  6072  // SetStatefulEngineOptions sets the StatefulEngineOptions field's value.
  6073  func (s *FirewallPolicy) SetStatefulEngineOptions(v *StatefulEngineOptions) *FirewallPolicy {
  6074  	s.StatefulEngineOptions = v
  6075  	return s
  6076  }
  6077  
  6078  // SetStatefulRuleGroupReferences sets the StatefulRuleGroupReferences field's value.
  6079  func (s *FirewallPolicy) SetStatefulRuleGroupReferences(v []*StatefulRuleGroupReference) *FirewallPolicy {
  6080  	s.StatefulRuleGroupReferences = v
  6081  	return s
  6082  }
  6083  
  6084  // SetStatelessCustomActions sets the StatelessCustomActions field's value.
  6085  func (s *FirewallPolicy) SetStatelessCustomActions(v []*CustomAction) *FirewallPolicy {
  6086  	s.StatelessCustomActions = v
  6087  	return s
  6088  }
  6089  
  6090  // SetStatelessDefaultActions sets the StatelessDefaultActions field's value.
  6091  func (s *FirewallPolicy) SetStatelessDefaultActions(v []*string) *FirewallPolicy {
  6092  	s.StatelessDefaultActions = v
  6093  	return s
  6094  }
  6095  
  6096  // SetStatelessFragmentDefaultActions sets the StatelessFragmentDefaultActions field's value.
  6097  func (s *FirewallPolicy) SetStatelessFragmentDefaultActions(v []*string) *FirewallPolicy {
  6098  	s.StatelessFragmentDefaultActions = v
  6099  	return s
  6100  }
  6101  
  6102  // SetStatelessRuleGroupReferences sets the StatelessRuleGroupReferences field's value.
  6103  func (s *FirewallPolicy) SetStatelessRuleGroupReferences(v []*StatelessRuleGroupReference) *FirewallPolicy {
  6104  	s.StatelessRuleGroupReferences = v
  6105  	return s
  6106  }
  6107  
  6108  // High-level information about a firewall policy, returned by operations like
  6109  // create and describe. You can use the information provided in the metadata
  6110  // to retrieve and manage a firewall policy. You can retrieve all objects for
  6111  // a firewall policy by calling DescribeFirewallPolicy.
  6112  type FirewallPolicyMetadata struct {
  6113  	_ struct{} `type:"structure"`
  6114  
  6115  	// The Amazon Resource Name (ARN) of the firewall policy.
  6116  	Arn *string `min:"1" type:"string"`
  6117  
  6118  	// The descriptive name of the firewall policy. You can't change the name of
  6119  	// a firewall policy after you create it.
  6120  	Name *string `min:"1" type:"string"`
  6121  }
  6122  
  6123  // String returns the string representation.
  6124  //
  6125  // API parameter values that are decorated as "sensitive" in the API will not
  6126  // be included in the string output. The member name will be present, but the
  6127  // value will be replaced with "sensitive".
  6128  func (s FirewallPolicyMetadata) String() string {
  6129  	return awsutil.Prettify(s)
  6130  }
  6131  
  6132  // GoString returns the string representation.
  6133  //
  6134  // API parameter values that are decorated as "sensitive" in the API will not
  6135  // be included in the string output. The member name will be present, but the
  6136  // value will be replaced with "sensitive".
  6137  func (s FirewallPolicyMetadata) GoString() string {
  6138  	return s.String()
  6139  }
  6140  
  6141  // SetArn sets the Arn field's value.
  6142  func (s *FirewallPolicyMetadata) SetArn(v string) *FirewallPolicyMetadata {
  6143  	s.Arn = &v
  6144  	return s
  6145  }
  6146  
  6147  // SetName sets the Name field's value.
  6148  func (s *FirewallPolicyMetadata) SetName(v string) *FirewallPolicyMetadata {
  6149  	s.Name = &v
  6150  	return s
  6151  }
  6152  
  6153  // The high-level properties of a firewall policy. This, along with the FirewallPolicy,
  6154  // define the policy. You can retrieve all objects for a firewall policy by
  6155  // calling DescribeFirewallPolicy.
  6156  type FirewallPolicyResponse struct {
  6157  	_ struct{} `type:"structure"`
  6158  
  6159  	// The number of capacity units currently consumed by the policy's stateful
  6160  	// rules.
  6161  	ConsumedStatefulRuleCapacity *int64 `type:"integer"`
  6162  
  6163  	// The number of capacity units currently consumed by the policy's stateless
  6164  	// rules.
  6165  	ConsumedStatelessRuleCapacity *int64 `type:"integer"`
  6166  
  6167  	// A description of the firewall policy.
  6168  	Description *string `type:"string"`
  6169  
  6170  	// The Amazon Resource Name (ARN) of the firewall policy.
  6171  	//
  6172  	// If this response is for a create request that had DryRun set to TRUE, then
  6173  	// this ARN is a placeholder that isn't attached to a valid resource.
  6174  	//
  6175  	// FirewallPolicyArn is a required field
  6176  	FirewallPolicyArn *string `min:"1" type:"string" required:"true"`
  6177  
  6178  	// The unique identifier for the firewall policy.
  6179  	//
  6180  	// FirewallPolicyId is a required field
  6181  	FirewallPolicyId *string `min:"36" type:"string" required:"true"`
  6182  
  6183  	// The descriptive name of the firewall policy. You can't change the name of
  6184  	// a firewall policy after you create it.
  6185  	//
  6186  	// FirewallPolicyName is a required field
  6187  	FirewallPolicyName *string `min:"1" type:"string" required:"true"`
  6188  
  6189  	// The current status of the firewall policy. You can retrieve this for a firewall
  6190  	// policy by calling DescribeFirewallPolicy and providing the firewall policy's
  6191  	// name or ARN.
  6192  	FirewallPolicyStatus *string `type:"string" enum:"ResourceStatus"`
  6193  
  6194  	// The number of firewalls that are associated with this firewall policy.
  6195  	NumberOfAssociations *int64 `type:"integer"`
  6196  
  6197  	// The key:value pairs to associate with the resource.
  6198  	Tags []*Tag `min:"1" type:"list"`
  6199  }
  6200  
  6201  // String returns the string representation.
  6202  //
  6203  // API parameter values that are decorated as "sensitive" in the API will not
  6204  // be included in the string output. The member name will be present, but the
  6205  // value will be replaced with "sensitive".
  6206  func (s FirewallPolicyResponse) String() string {
  6207  	return awsutil.Prettify(s)
  6208  }
  6209  
  6210  // GoString returns the string representation.
  6211  //
  6212  // API parameter values that are decorated as "sensitive" in the API will not
  6213  // be included in the string output. The member name will be present, but the
  6214  // value will be replaced with "sensitive".
  6215  func (s FirewallPolicyResponse) GoString() string {
  6216  	return s.String()
  6217  }
  6218  
  6219  // SetConsumedStatefulRuleCapacity sets the ConsumedStatefulRuleCapacity field's value.
  6220  func (s *FirewallPolicyResponse) SetConsumedStatefulRuleCapacity(v int64) *FirewallPolicyResponse {
  6221  	s.ConsumedStatefulRuleCapacity = &v
  6222  	return s
  6223  }
  6224  
  6225  // SetConsumedStatelessRuleCapacity sets the ConsumedStatelessRuleCapacity field's value.
  6226  func (s *FirewallPolicyResponse) SetConsumedStatelessRuleCapacity(v int64) *FirewallPolicyResponse {
  6227  	s.ConsumedStatelessRuleCapacity = &v
  6228  	return s
  6229  }
  6230  
  6231  // SetDescription sets the Description field's value.
  6232  func (s *FirewallPolicyResponse) SetDescription(v string) *FirewallPolicyResponse {
  6233  	s.Description = &v
  6234  	return s
  6235  }
  6236  
  6237  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
  6238  func (s *FirewallPolicyResponse) SetFirewallPolicyArn(v string) *FirewallPolicyResponse {
  6239  	s.FirewallPolicyArn = &v
  6240  	return s
  6241  }
  6242  
  6243  // SetFirewallPolicyId sets the FirewallPolicyId field's value.
  6244  func (s *FirewallPolicyResponse) SetFirewallPolicyId(v string) *FirewallPolicyResponse {
  6245  	s.FirewallPolicyId = &v
  6246  	return s
  6247  }
  6248  
  6249  // SetFirewallPolicyName sets the FirewallPolicyName field's value.
  6250  func (s *FirewallPolicyResponse) SetFirewallPolicyName(v string) *FirewallPolicyResponse {
  6251  	s.FirewallPolicyName = &v
  6252  	return s
  6253  }
  6254  
  6255  // SetFirewallPolicyStatus sets the FirewallPolicyStatus field's value.
  6256  func (s *FirewallPolicyResponse) SetFirewallPolicyStatus(v string) *FirewallPolicyResponse {
  6257  	s.FirewallPolicyStatus = &v
  6258  	return s
  6259  }
  6260  
  6261  // SetNumberOfAssociations sets the NumberOfAssociations field's value.
  6262  func (s *FirewallPolicyResponse) SetNumberOfAssociations(v int64) *FirewallPolicyResponse {
  6263  	s.NumberOfAssociations = &v
  6264  	return s
  6265  }
  6266  
  6267  // SetTags sets the Tags field's value.
  6268  func (s *FirewallPolicyResponse) SetTags(v []*Tag) *FirewallPolicyResponse {
  6269  	s.Tags = v
  6270  	return s
  6271  }
  6272  
  6273  // Detailed information about the current status of a Firewall. You can retrieve
  6274  // this for a firewall by calling DescribeFirewall and providing the firewall
  6275  // name and ARN.
  6276  type FirewallStatus struct {
  6277  	_ struct{} `type:"structure"`
  6278  
  6279  	// The configuration sync state for the firewall. This summarizes the sync states
  6280  	// reported in the Config settings for all of the Availability Zones where you
  6281  	// have configured the firewall.
  6282  	//
  6283  	// When you create a firewall or update its configuration, for example by adding
  6284  	// a rule group to its firewall policy, Network Firewall distributes the configuration
  6285  	// changes to all zones where the firewall is in use. This summary indicates
  6286  	// whether the configuration changes have been applied everywhere.
  6287  	//
  6288  	// This status must be IN_SYNC for the firewall to be ready for use, but it
  6289  	// doesn't indicate that the firewall is ready. The Status setting indicates
  6290  	// firewall readiness.
  6291  	//
  6292  	// ConfigurationSyncStateSummary is a required field
  6293  	ConfigurationSyncStateSummary *string `type:"string" required:"true" enum:"ConfigurationSyncState"`
  6294  
  6295  	// The readiness of the configured firewall to handle network traffic across
  6296  	// all of the Availability Zones where you've configured it. This setting is
  6297  	// READY only when the ConfigurationSyncStateSummary value is IN_SYNC and the
  6298  	// Attachment Status values for all of the configured subnets are READY.
  6299  	//
  6300  	// Status is a required field
  6301  	Status *string `type:"string" required:"true" enum:"FirewallStatusValue"`
  6302  
  6303  	// The subnets that you've configured for use by the Network Firewall firewall.
  6304  	// This contains one array element per Availability Zone where you've configured
  6305  	// a subnet. These objects provide details of the information that is summarized
  6306  	// in the ConfigurationSyncStateSummary and Status, broken down by zone and
  6307  	// configuration object.
  6308  	SyncStates map[string]*SyncState `type:"map"`
  6309  }
  6310  
  6311  // String returns the string representation.
  6312  //
  6313  // API parameter values that are decorated as "sensitive" in the API will not
  6314  // be included in the string output. The member name will be present, but the
  6315  // value will be replaced with "sensitive".
  6316  func (s FirewallStatus) String() string {
  6317  	return awsutil.Prettify(s)
  6318  }
  6319  
  6320  // GoString returns the string representation.
  6321  //
  6322  // API parameter values that are decorated as "sensitive" in the API will not
  6323  // be included in the string output. The member name will be present, but the
  6324  // value will be replaced with "sensitive".
  6325  func (s FirewallStatus) GoString() string {
  6326  	return s.String()
  6327  }
  6328  
  6329  // SetConfigurationSyncStateSummary sets the ConfigurationSyncStateSummary field's value.
  6330  func (s *FirewallStatus) SetConfigurationSyncStateSummary(v string) *FirewallStatus {
  6331  	s.ConfigurationSyncStateSummary = &v
  6332  	return s
  6333  }
  6334  
  6335  // SetStatus sets the Status field's value.
  6336  func (s *FirewallStatus) SetStatus(v string) *FirewallStatus {
  6337  	s.Status = &v
  6338  	return s
  6339  }
  6340  
  6341  // SetSyncStates sets the SyncStates field's value.
  6342  func (s *FirewallStatus) SetSyncStates(v map[string]*SyncState) *FirewallStatus {
  6343  	s.SyncStates = v
  6344  	return s
  6345  }
  6346  
  6347  // The basic rule criteria for AWS Network Firewall to use to inspect packet
  6348  // headers in stateful traffic flow inspection. Traffic flows that match the
  6349  // criteria are a match for the corresponding StatefulRule.
  6350  type Header struct {
  6351  	_ struct{} `type:"structure"`
  6352  
  6353  	// The destination IP address or address range to inspect for, in CIDR notation.
  6354  	// To match with any address, specify ANY.
  6355  	//
  6356  	// Specify an IP address or a block of IP addresses in Classless Inter-Domain
  6357  	// Routing (CIDR) notation. Network Firewall supports all address ranges for
  6358  	// IPv4.
  6359  	//
  6360  	// Examples:
  6361  	//
  6362  	//    * To configure Network Firewall to inspect for the IP address 192.0.2.44,
  6363  	//    specify 192.0.2.44/32.
  6364  	//
  6365  	//    * To configure Network Firewall to inspect for IP addresses from 192.0.2.0
  6366  	//    to 192.0.2.255, specify 192.0.2.0/24.
  6367  	//
  6368  	// For more information about CIDR notation, see the Wikipedia entry Classless
  6369  	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
  6370  	//
  6371  	// Destination is a required field
  6372  	Destination *string `min:"1" type:"string" required:"true"`
  6373  
  6374  	// The destination port to inspect for. You can specify an individual port,
  6375  	// for example 1994 and you can specify a port range, for example 1990:1994.
  6376  	// To match with any port, specify ANY.
  6377  	//
  6378  	// DestinationPort is a required field
  6379  	DestinationPort *string `min:"1" type:"string" required:"true"`
  6380  
  6381  	// The direction of traffic flow to inspect. If set to ANY, the inspection matches
  6382  	// bidirectional traffic, both from the source to the destination and from the
  6383  	// destination to the source. If set to FORWARD, the inspection only matches
  6384  	// traffic going from the source to the destination.
  6385  	//
  6386  	// Direction is a required field
  6387  	Direction *string `type:"string" required:"true" enum:"StatefulRuleDirection"`
  6388  
  6389  	// The protocol to inspect for. To specify all, you can use IP, because all
  6390  	// traffic on AWS and on the internet is IP.
  6391  	//
  6392  	// Protocol is a required field
  6393  	Protocol *string `type:"string" required:"true" enum:"StatefulRuleProtocol"`
  6394  
  6395  	// The source IP address or address range to inspect for, in CIDR notation.
  6396  	// To match with any address, specify ANY.
  6397  	//
  6398  	// Specify an IP address or a block of IP addresses in Classless Inter-Domain
  6399  	// Routing (CIDR) notation. Network Firewall supports all address ranges for
  6400  	// IPv4.
  6401  	//
  6402  	// Examples:
  6403  	//
  6404  	//    * To configure Network Firewall to inspect for the IP address 192.0.2.44,
  6405  	//    specify 192.0.2.44/32.
  6406  	//
  6407  	//    * To configure Network Firewall to inspect for IP addresses from 192.0.2.0
  6408  	//    to 192.0.2.255, specify 192.0.2.0/24.
  6409  	//
  6410  	// For more information about CIDR notation, see the Wikipedia entry Classless
  6411  	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
  6412  	//
  6413  	// Source is a required field
  6414  	Source *string `min:"1" type:"string" required:"true"`
  6415  
  6416  	// The source port to inspect for. You can specify an individual port, for example
  6417  	// 1994 and you can specify a port range, for example 1990:1994. To match with
  6418  	// any port, specify ANY.
  6419  	//
  6420  	// SourcePort is a required field
  6421  	SourcePort *string `min:"1" type:"string" required:"true"`
  6422  }
  6423  
  6424  // String returns the string representation.
  6425  //
  6426  // API parameter values that are decorated as "sensitive" in the API will not
  6427  // be included in the string output. The member name will be present, but the
  6428  // value will be replaced with "sensitive".
  6429  func (s Header) String() string {
  6430  	return awsutil.Prettify(s)
  6431  }
  6432  
  6433  // GoString returns the string representation.
  6434  //
  6435  // API parameter values that are decorated as "sensitive" in the API will not
  6436  // be included in the string output. The member name will be present, but the
  6437  // value will be replaced with "sensitive".
  6438  func (s Header) GoString() string {
  6439  	return s.String()
  6440  }
  6441  
  6442  // Validate inspects the fields of the type to determine if they are valid.
  6443  func (s *Header) Validate() error {
  6444  	invalidParams := request.ErrInvalidParams{Context: "Header"}
  6445  	if s.Destination == nil {
  6446  		invalidParams.Add(request.NewErrParamRequired("Destination"))
  6447  	}
  6448  	if s.Destination != nil && len(*s.Destination) < 1 {
  6449  		invalidParams.Add(request.NewErrParamMinLen("Destination", 1))
  6450  	}
  6451  	if s.DestinationPort == nil {
  6452  		invalidParams.Add(request.NewErrParamRequired("DestinationPort"))
  6453  	}
  6454  	if s.DestinationPort != nil && len(*s.DestinationPort) < 1 {
  6455  		invalidParams.Add(request.NewErrParamMinLen("DestinationPort", 1))
  6456  	}
  6457  	if s.Direction == nil {
  6458  		invalidParams.Add(request.NewErrParamRequired("Direction"))
  6459  	}
  6460  	if s.Protocol == nil {
  6461  		invalidParams.Add(request.NewErrParamRequired("Protocol"))
  6462  	}
  6463  	if s.Source == nil {
  6464  		invalidParams.Add(request.NewErrParamRequired("Source"))
  6465  	}
  6466  	if s.Source != nil && len(*s.Source) < 1 {
  6467  		invalidParams.Add(request.NewErrParamMinLen("Source", 1))
  6468  	}
  6469  	if s.SourcePort == nil {
  6470  		invalidParams.Add(request.NewErrParamRequired("SourcePort"))
  6471  	}
  6472  	if s.SourcePort != nil && len(*s.SourcePort) < 1 {
  6473  		invalidParams.Add(request.NewErrParamMinLen("SourcePort", 1))
  6474  	}
  6475  
  6476  	if invalidParams.Len() > 0 {
  6477  		return invalidParams
  6478  	}
  6479  	return nil
  6480  }
  6481  
  6482  // SetDestination sets the Destination field's value.
  6483  func (s *Header) SetDestination(v string) *Header {
  6484  	s.Destination = &v
  6485  	return s
  6486  }
  6487  
  6488  // SetDestinationPort sets the DestinationPort field's value.
  6489  func (s *Header) SetDestinationPort(v string) *Header {
  6490  	s.DestinationPort = &v
  6491  	return s
  6492  }
  6493  
  6494  // SetDirection sets the Direction field's value.
  6495  func (s *Header) SetDirection(v string) *Header {
  6496  	s.Direction = &v
  6497  	return s
  6498  }
  6499  
  6500  // SetProtocol sets the Protocol field's value.
  6501  func (s *Header) SetProtocol(v string) *Header {
  6502  	s.Protocol = &v
  6503  	return s
  6504  }
  6505  
  6506  // SetSource sets the Source field's value.
  6507  func (s *Header) SetSource(v string) *Header {
  6508  	s.Source = &v
  6509  	return s
  6510  }
  6511  
  6512  // SetSourcePort sets the SourcePort field's value.
  6513  func (s *Header) SetSourcePort(v string) *Header {
  6514  	s.SourcePort = &v
  6515  	return s
  6516  }
  6517  
  6518  // A list of IP addresses and address ranges, in CIDR notation. This is part
  6519  // of a RuleVariables.
  6520  type IPSet struct {
  6521  	_ struct{} `type:"structure"`
  6522  
  6523  	// The list of IP addresses and address ranges, in CIDR notation.
  6524  	//
  6525  	// Definition is a required field
  6526  	Definition []*string `type:"list" required:"true"`
  6527  }
  6528  
  6529  // String returns the string representation.
  6530  //
  6531  // API parameter values that are decorated as "sensitive" in the API will not
  6532  // be included in the string output. The member name will be present, but the
  6533  // value will be replaced with "sensitive".
  6534  func (s IPSet) String() string {
  6535  	return awsutil.Prettify(s)
  6536  }
  6537  
  6538  // GoString returns the string representation.
  6539  //
  6540  // API parameter values that are decorated as "sensitive" in the API will not
  6541  // be included in the string output. The member name will be present, but the
  6542  // value will be replaced with "sensitive".
  6543  func (s IPSet) GoString() string {
  6544  	return s.String()
  6545  }
  6546  
  6547  // Validate inspects the fields of the type to determine if they are valid.
  6548  func (s *IPSet) Validate() error {
  6549  	invalidParams := request.ErrInvalidParams{Context: "IPSet"}
  6550  	if s.Definition == nil {
  6551  		invalidParams.Add(request.NewErrParamRequired("Definition"))
  6552  	}
  6553  
  6554  	if invalidParams.Len() > 0 {
  6555  		return invalidParams
  6556  	}
  6557  	return nil
  6558  }
  6559  
  6560  // SetDefinition sets the Definition field's value.
  6561  func (s *IPSet) SetDefinition(v []*string) *IPSet {
  6562  	s.Definition = v
  6563  	return s
  6564  }
  6565  
  6566  // AWS doesn't currently have enough available capacity to fulfill your request.
  6567  // Try your request later.
  6568  type InsufficientCapacityException struct {
  6569  	_            struct{}                  `type:"structure"`
  6570  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6571  
  6572  	Message_ *string `locationName:"Message" type:"string"`
  6573  }
  6574  
  6575  // String returns the string representation.
  6576  //
  6577  // API parameter values that are decorated as "sensitive" in the API will not
  6578  // be included in the string output. The member name will be present, but the
  6579  // value will be replaced with "sensitive".
  6580  func (s InsufficientCapacityException) String() string {
  6581  	return awsutil.Prettify(s)
  6582  }
  6583  
  6584  // GoString returns the string representation.
  6585  //
  6586  // API parameter values that are decorated as "sensitive" in the API will not
  6587  // be included in the string output. The member name will be present, but the
  6588  // value will be replaced with "sensitive".
  6589  func (s InsufficientCapacityException) GoString() string {
  6590  	return s.String()
  6591  }
  6592  
  6593  func newErrorInsufficientCapacityException(v protocol.ResponseMetadata) error {
  6594  	return &InsufficientCapacityException{
  6595  		RespMetadata: v,
  6596  	}
  6597  }
  6598  
  6599  // Code returns the exception type name.
  6600  func (s *InsufficientCapacityException) Code() string {
  6601  	return "InsufficientCapacityException"
  6602  }
  6603  
  6604  // Message returns the exception's message.
  6605  func (s *InsufficientCapacityException) Message() string {
  6606  	if s.Message_ != nil {
  6607  		return *s.Message_
  6608  	}
  6609  	return ""
  6610  }
  6611  
  6612  // OrigErr always returns nil, satisfies awserr.Error interface.
  6613  func (s *InsufficientCapacityException) OrigErr() error {
  6614  	return nil
  6615  }
  6616  
  6617  func (s *InsufficientCapacityException) Error() string {
  6618  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  6619  }
  6620  
  6621  // Status code returns the HTTP status code for the request's response error.
  6622  func (s *InsufficientCapacityException) StatusCode() int {
  6623  	return s.RespMetadata.StatusCode
  6624  }
  6625  
  6626  // RequestID returns the service's response RequestID for request.
  6627  func (s *InsufficientCapacityException) RequestID() string {
  6628  	return s.RespMetadata.RequestID
  6629  }
  6630  
  6631  // Your request is valid, but Network Firewall couldn’t perform the operation
  6632  // because of a system problem. Retry your request.
  6633  type InternalServerError struct {
  6634  	_            struct{}                  `type:"structure"`
  6635  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6636  
  6637  	Message_ *string `locationName:"Message" type:"string"`
  6638  }
  6639  
  6640  // String returns the string representation.
  6641  //
  6642  // API parameter values that are decorated as "sensitive" in the API will not
  6643  // be included in the string output. The member name will be present, but the
  6644  // value will be replaced with "sensitive".
  6645  func (s InternalServerError) String() string {
  6646  	return awsutil.Prettify(s)
  6647  }
  6648  
  6649  // GoString returns the string representation.
  6650  //
  6651  // API parameter values that are decorated as "sensitive" in the API will not
  6652  // be included in the string output. The member name will be present, but the
  6653  // value will be replaced with "sensitive".
  6654  func (s InternalServerError) GoString() string {
  6655  	return s.String()
  6656  }
  6657  
  6658  func newErrorInternalServerError(v protocol.ResponseMetadata) error {
  6659  	return &InternalServerError{
  6660  		RespMetadata: v,
  6661  	}
  6662  }
  6663  
  6664  // Code returns the exception type name.
  6665  func (s *InternalServerError) Code() string {
  6666  	return "InternalServerError"
  6667  }
  6668  
  6669  // Message returns the exception's message.
  6670  func (s *InternalServerError) Message() string {
  6671  	if s.Message_ != nil {
  6672  		return *s.Message_
  6673  	}
  6674  	return ""
  6675  }
  6676  
  6677  // OrigErr always returns nil, satisfies awserr.Error interface.
  6678  func (s *InternalServerError) OrigErr() error {
  6679  	return nil
  6680  }
  6681  
  6682  func (s *InternalServerError) Error() string {
  6683  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  6684  }
  6685  
  6686  // Status code returns the HTTP status code for the request's response error.
  6687  func (s *InternalServerError) StatusCode() int {
  6688  	return s.RespMetadata.StatusCode
  6689  }
  6690  
  6691  // RequestID returns the service's response RequestID for request.
  6692  func (s *InternalServerError) RequestID() string {
  6693  	return s.RespMetadata.RequestID
  6694  }
  6695  
  6696  // The operation failed because it's not valid. For example, you might have
  6697  // tried to delete a rule group or firewall policy that's in use.
  6698  type InvalidOperationException struct {
  6699  	_            struct{}                  `type:"structure"`
  6700  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6701  
  6702  	Message_ *string `locationName:"Message" type:"string"`
  6703  }
  6704  
  6705  // String returns the string representation.
  6706  //
  6707  // API parameter values that are decorated as "sensitive" in the API will not
  6708  // be included in the string output. The member name will be present, but the
  6709  // value will be replaced with "sensitive".
  6710  func (s InvalidOperationException) String() string {
  6711  	return awsutil.Prettify(s)
  6712  }
  6713  
  6714  // GoString returns the string representation.
  6715  //
  6716  // API parameter values that are decorated as "sensitive" in the API will not
  6717  // be included in the string output. The member name will be present, but the
  6718  // value will be replaced with "sensitive".
  6719  func (s InvalidOperationException) GoString() string {
  6720  	return s.String()
  6721  }
  6722  
  6723  func newErrorInvalidOperationException(v protocol.ResponseMetadata) error {
  6724  	return &InvalidOperationException{
  6725  		RespMetadata: v,
  6726  	}
  6727  }
  6728  
  6729  // Code returns the exception type name.
  6730  func (s *InvalidOperationException) Code() string {
  6731  	return "InvalidOperationException"
  6732  }
  6733  
  6734  // Message returns the exception's message.
  6735  func (s *InvalidOperationException) Message() string {
  6736  	if s.Message_ != nil {
  6737  		return *s.Message_
  6738  	}
  6739  	return ""
  6740  }
  6741  
  6742  // OrigErr always returns nil, satisfies awserr.Error interface.
  6743  func (s *InvalidOperationException) OrigErr() error {
  6744  	return nil
  6745  }
  6746  
  6747  func (s *InvalidOperationException) Error() string {
  6748  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  6749  }
  6750  
  6751  // Status code returns the HTTP status code for the request's response error.
  6752  func (s *InvalidOperationException) StatusCode() int {
  6753  	return s.RespMetadata.StatusCode
  6754  }
  6755  
  6756  // RequestID returns the service's response RequestID for request.
  6757  func (s *InvalidOperationException) RequestID() string {
  6758  	return s.RespMetadata.RequestID
  6759  }
  6760  
  6761  // The operation failed because of a problem with your request. Examples include:
  6762  //
  6763  //    * You specified an unsupported parameter name or value.
  6764  //
  6765  //    * You tried to update a property with a value that isn't among the available
  6766  //    types.
  6767  //
  6768  //    * Your request references an ARN that is malformed, or corresponds to
  6769  //    a resource that isn't valid in the context of the request.
  6770  type InvalidRequestException struct {
  6771  	_            struct{}                  `type:"structure"`
  6772  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6773  
  6774  	Message_ *string `locationName:"Message" type:"string"`
  6775  }
  6776  
  6777  // String returns the string representation.
  6778  //
  6779  // API parameter values that are decorated as "sensitive" in the API will not
  6780  // be included in the string output. The member name will be present, but the
  6781  // value will be replaced with "sensitive".
  6782  func (s InvalidRequestException) String() string {
  6783  	return awsutil.Prettify(s)
  6784  }
  6785  
  6786  // GoString returns the string representation.
  6787  //
  6788  // API parameter values that are decorated as "sensitive" in the API will not
  6789  // be included in the string output. The member name will be present, but the
  6790  // value will be replaced with "sensitive".
  6791  func (s InvalidRequestException) GoString() string {
  6792  	return s.String()
  6793  }
  6794  
  6795  func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
  6796  	return &InvalidRequestException{
  6797  		RespMetadata: v,
  6798  	}
  6799  }
  6800  
  6801  // Code returns the exception type name.
  6802  func (s *InvalidRequestException) Code() string {
  6803  	return "InvalidRequestException"
  6804  }
  6805  
  6806  // Message returns the exception's message.
  6807  func (s *InvalidRequestException) Message() string {
  6808  	if s.Message_ != nil {
  6809  		return *s.Message_
  6810  	}
  6811  	return ""
  6812  }
  6813  
  6814  // OrigErr always returns nil, satisfies awserr.Error interface.
  6815  func (s *InvalidRequestException) OrigErr() error {
  6816  	return nil
  6817  }
  6818  
  6819  func (s *InvalidRequestException) Error() string {
  6820  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  6821  }
  6822  
  6823  // Status code returns the HTTP status code for the request's response error.
  6824  func (s *InvalidRequestException) StatusCode() int {
  6825  	return s.RespMetadata.StatusCode
  6826  }
  6827  
  6828  // RequestID returns the service's response RequestID for request.
  6829  func (s *InvalidRequestException) RequestID() string {
  6830  	return s.RespMetadata.RequestID
  6831  }
  6832  
  6833  // The policy statement failed validation.
  6834  type InvalidResourcePolicyException struct {
  6835  	_            struct{}                  `type:"structure"`
  6836  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6837  
  6838  	Message_ *string `locationName:"Message" type:"string"`
  6839  }
  6840  
  6841  // String returns the string representation.
  6842  //
  6843  // API parameter values that are decorated as "sensitive" in the API will not
  6844  // be included in the string output. The member name will be present, but the
  6845  // value will be replaced with "sensitive".
  6846  func (s InvalidResourcePolicyException) String() string {
  6847  	return awsutil.Prettify(s)
  6848  }
  6849  
  6850  // GoString returns the string representation.
  6851  //
  6852  // API parameter values that are decorated as "sensitive" in the API will not
  6853  // be included in the string output. The member name will be present, but the
  6854  // value will be replaced with "sensitive".
  6855  func (s InvalidResourcePolicyException) GoString() string {
  6856  	return s.String()
  6857  }
  6858  
  6859  func newErrorInvalidResourcePolicyException(v protocol.ResponseMetadata) error {
  6860  	return &InvalidResourcePolicyException{
  6861  		RespMetadata: v,
  6862  	}
  6863  }
  6864  
  6865  // Code returns the exception type name.
  6866  func (s *InvalidResourcePolicyException) Code() string {
  6867  	return "InvalidResourcePolicyException"
  6868  }
  6869  
  6870  // Message returns the exception's message.
  6871  func (s *InvalidResourcePolicyException) Message() string {
  6872  	if s.Message_ != nil {
  6873  		return *s.Message_
  6874  	}
  6875  	return ""
  6876  }
  6877  
  6878  // OrigErr always returns nil, satisfies awserr.Error interface.
  6879  func (s *InvalidResourcePolicyException) OrigErr() error {
  6880  	return nil
  6881  }
  6882  
  6883  func (s *InvalidResourcePolicyException) Error() string {
  6884  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  6885  }
  6886  
  6887  // Status code returns the HTTP status code for the request's response error.
  6888  func (s *InvalidResourcePolicyException) StatusCode() int {
  6889  	return s.RespMetadata.StatusCode
  6890  }
  6891  
  6892  // RequestID returns the service's response RequestID for request.
  6893  func (s *InvalidResourcePolicyException) RequestID() string {
  6894  	return s.RespMetadata.RequestID
  6895  }
  6896  
  6897  // The token you provided is stale or isn't valid for the operation.
  6898  type InvalidTokenException struct {
  6899  	_            struct{}                  `type:"structure"`
  6900  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6901  
  6902  	Message_ *string `locationName:"Message" type:"string"`
  6903  }
  6904  
  6905  // String returns the string representation.
  6906  //
  6907  // API parameter values that are decorated as "sensitive" in the API will not
  6908  // be included in the string output. The member name will be present, but the
  6909  // value will be replaced with "sensitive".
  6910  func (s InvalidTokenException) String() string {
  6911  	return awsutil.Prettify(s)
  6912  }
  6913  
  6914  // GoString returns the string representation.
  6915  //
  6916  // API parameter values that are decorated as "sensitive" in the API will not
  6917  // be included in the string output. The member name will be present, but the
  6918  // value will be replaced with "sensitive".
  6919  func (s InvalidTokenException) GoString() string {
  6920  	return s.String()
  6921  }
  6922  
  6923  func newErrorInvalidTokenException(v protocol.ResponseMetadata) error {
  6924  	return &InvalidTokenException{
  6925  		RespMetadata: v,
  6926  	}
  6927  }
  6928  
  6929  // Code returns the exception type name.
  6930  func (s *InvalidTokenException) Code() string {
  6931  	return "InvalidTokenException"
  6932  }
  6933  
  6934  // Message returns the exception's message.
  6935  func (s *InvalidTokenException) Message() string {
  6936  	if s.Message_ != nil {
  6937  		return *s.Message_
  6938  	}
  6939  	return ""
  6940  }
  6941  
  6942  // OrigErr always returns nil, satisfies awserr.Error interface.
  6943  func (s *InvalidTokenException) OrigErr() error {
  6944  	return nil
  6945  }
  6946  
  6947  func (s *InvalidTokenException) Error() string {
  6948  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  6949  }
  6950  
  6951  // Status code returns the HTTP status code for the request's response error.
  6952  func (s *InvalidTokenException) StatusCode() int {
  6953  	return s.RespMetadata.StatusCode
  6954  }
  6955  
  6956  // RequestID returns the service's response RequestID for request.
  6957  func (s *InvalidTokenException) RequestID() string {
  6958  	return s.RespMetadata.RequestID
  6959  }
  6960  
  6961  // Unable to perform the operation because doing so would violate a limit setting.
  6962  type LimitExceededException struct {
  6963  	_            struct{}                  `type:"structure"`
  6964  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  6965  
  6966  	Message_ *string `locationName:"Message" type:"string"`
  6967  }
  6968  
  6969  // String returns the string representation.
  6970  //
  6971  // API parameter values that are decorated as "sensitive" in the API will not
  6972  // be included in the string output. The member name will be present, but the
  6973  // value will be replaced with "sensitive".
  6974  func (s LimitExceededException) String() string {
  6975  	return awsutil.Prettify(s)
  6976  }
  6977  
  6978  // GoString returns the string representation.
  6979  //
  6980  // API parameter values that are decorated as "sensitive" in the API will not
  6981  // be included in the string output. The member name will be present, but the
  6982  // value will be replaced with "sensitive".
  6983  func (s LimitExceededException) GoString() string {
  6984  	return s.String()
  6985  }
  6986  
  6987  func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
  6988  	return &LimitExceededException{
  6989  		RespMetadata: v,
  6990  	}
  6991  }
  6992  
  6993  // Code returns the exception type name.
  6994  func (s *LimitExceededException) Code() string {
  6995  	return "LimitExceededException"
  6996  }
  6997  
  6998  // Message returns the exception's message.
  6999  func (s *LimitExceededException) Message() string {
  7000  	if s.Message_ != nil {
  7001  		return *s.Message_
  7002  	}
  7003  	return ""
  7004  }
  7005  
  7006  // OrigErr always returns nil, satisfies awserr.Error interface.
  7007  func (s *LimitExceededException) OrigErr() error {
  7008  	return nil
  7009  }
  7010  
  7011  func (s *LimitExceededException) Error() string {
  7012  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  7013  }
  7014  
  7015  // Status code returns the HTTP status code for the request's response error.
  7016  func (s *LimitExceededException) StatusCode() int {
  7017  	return s.RespMetadata.StatusCode
  7018  }
  7019  
  7020  // RequestID returns the service's response RequestID for request.
  7021  func (s *LimitExceededException) RequestID() string {
  7022  	return s.RespMetadata.RequestID
  7023  }
  7024  
  7025  type ListFirewallPoliciesInput struct {
  7026  	_ struct{} `type:"structure"`
  7027  
  7028  	// The maximum number of objects that you want Network Firewall to return for
  7029  	// this request. If more objects are available, in the response, Network Firewall
  7030  	// provides a NextToken value that you can use in a subsequent call to get the
  7031  	// next batch of objects.
  7032  	MaxResults *int64 `min:"1" type:"integer"`
  7033  
  7034  	// When you request a list of objects with a MaxResults setting, if the number
  7035  	// of objects that are still available for retrieval exceeds the maximum you
  7036  	// requested, Network Firewall returns a NextToken value in the response. To
  7037  	// retrieve the next batch of objects, use the token returned from the prior
  7038  	// request in your next request.
  7039  	NextToken *string `min:"1" type:"string"`
  7040  }
  7041  
  7042  // String returns the string representation.
  7043  //
  7044  // API parameter values that are decorated as "sensitive" in the API will not
  7045  // be included in the string output. The member name will be present, but the
  7046  // value will be replaced with "sensitive".
  7047  func (s ListFirewallPoliciesInput) String() string {
  7048  	return awsutil.Prettify(s)
  7049  }
  7050  
  7051  // GoString returns the string representation.
  7052  //
  7053  // API parameter values that are decorated as "sensitive" in the API will not
  7054  // be included in the string output. The member name will be present, but the
  7055  // value will be replaced with "sensitive".
  7056  func (s ListFirewallPoliciesInput) GoString() string {
  7057  	return s.String()
  7058  }
  7059  
  7060  // Validate inspects the fields of the type to determine if they are valid.
  7061  func (s *ListFirewallPoliciesInput) Validate() error {
  7062  	invalidParams := request.ErrInvalidParams{Context: "ListFirewallPoliciesInput"}
  7063  	if s.MaxResults != nil && *s.MaxResults < 1 {
  7064  		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
  7065  	}
  7066  	if s.NextToken != nil && len(*s.NextToken) < 1 {
  7067  		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
  7068  	}
  7069  
  7070  	if invalidParams.Len() > 0 {
  7071  		return invalidParams
  7072  	}
  7073  	return nil
  7074  }
  7075  
  7076  // SetMaxResults sets the MaxResults field's value.
  7077  func (s *ListFirewallPoliciesInput) SetMaxResults(v int64) *ListFirewallPoliciesInput {
  7078  	s.MaxResults = &v
  7079  	return s
  7080  }
  7081  
  7082  // SetNextToken sets the NextToken field's value.
  7083  func (s *ListFirewallPoliciesInput) SetNextToken(v string) *ListFirewallPoliciesInput {
  7084  	s.NextToken = &v
  7085  	return s
  7086  }
  7087  
  7088  type ListFirewallPoliciesOutput struct {
  7089  	_ struct{} `type:"structure"`
  7090  
  7091  	// The metadata for the firewall policies. Depending on your setting for max
  7092  	// results and the number of firewall policies that you have, this might not
  7093  	// be the full list.
  7094  	FirewallPolicies []*FirewallPolicyMetadata `type:"list"`
  7095  
  7096  	// When you request a list of objects with a MaxResults setting, if the number
  7097  	// of objects that are still available for retrieval exceeds the maximum you
  7098  	// requested, Network Firewall returns a NextToken value in the response. To
  7099  	// retrieve the next batch of objects, use the token returned from the prior
  7100  	// request in your next request.
  7101  	NextToken *string `min:"1" type:"string"`
  7102  }
  7103  
  7104  // String returns the string representation.
  7105  //
  7106  // API parameter values that are decorated as "sensitive" in the API will not
  7107  // be included in the string output. The member name will be present, but the
  7108  // value will be replaced with "sensitive".
  7109  func (s ListFirewallPoliciesOutput) String() string {
  7110  	return awsutil.Prettify(s)
  7111  }
  7112  
  7113  // GoString returns the string representation.
  7114  //
  7115  // API parameter values that are decorated as "sensitive" in the API will not
  7116  // be included in the string output. The member name will be present, but the
  7117  // value will be replaced with "sensitive".
  7118  func (s ListFirewallPoliciesOutput) GoString() string {
  7119  	return s.String()
  7120  }
  7121  
  7122  // SetFirewallPolicies sets the FirewallPolicies field's value.
  7123  func (s *ListFirewallPoliciesOutput) SetFirewallPolicies(v []*FirewallPolicyMetadata) *ListFirewallPoliciesOutput {
  7124  	s.FirewallPolicies = v
  7125  	return s
  7126  }
  7127  
  7128  // SetNextToken sets the NextToken field's value.
  7129  func (s *ListFirewallPoliciesOutput) SetNextToken(v string) *ListFirewallPoliciesOutput {
  7130  	s.NextToken = &v
  7131  	return s
  7132  }
  7133  
  7134  type ListFirewallsInput struct {
  7135  	_ struct{} `type:"structure"`
  7136  
  7137  	// The maximum number of objects that you want Network Firewall to return for
  7138  	// this request. If more objects are available, in the response, Network Firewall
  7139  	// provides a NextToken value that you can use in a subsequent call to get the
  7140  	// next batch of objects.
  7141  	MaxResults *int64 `min:"1" type:"integer"`
  7142  
  7143  	// When you request a list of objects with a MaxResults setting, if the number
  7144  	// of objects that are still available for retrieval exceeds the maximum you
  7145  	// requested, Network Firewall returns a NextToken value in the response. To
  7146  	// retrieve the next batch of objects, use the token returned from the prior
  7147  	// request in your next request.
  7148  	NextToken *string `min:"1" type:"string"`
  7149  
  7150  	// The unique identifiers of the VPCs that you want Network Firewall to retrieve
  7151  	// the firewalls for. Leave this blank to retrieve all firewalls that you have
  7152  	// defined.
  7153  	VpcIds []*string `type:"list"`
  7154  }
  7155  
  7156  // String returns the string representation.
  7157  //
  7158  // API parameter values that are decorated as "sensitive" in the API will not
  7159  // be included in the string output. The member name will be present, but the
  7160  // value will be replaced with "sensitive".
  7161  func (s ListFirewallsInput) String() string {
  7162  	return awsutil.Prettify(s)
  7163  }
  7164  
  7165  // GoString returns the string representation.
  7166  //
  7167  // API parameter values that are decorated as "sensitive" in the API will not
  7168  // be included in the string output. The member name will be present, but the
  7169  // value will be replaced with "sensitive".
  7170  func (s ListFirewallsInput) GoString() string {
  7171  	return s.String()
  7172  }
  7173  
  7174  // Validate inspects the fields of the type to determine if they are valid.
  7175  func (s *ListFirewallsInput) Validate() error {
  7176  	invalidParams := request.ErrInvalidParams{Context: "ListFirewallsInput"}
  7177  	if s.MaxResults != nil && *s.MaxResults < 1 {
  7178  		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
  7179  	}
  7180  	if s.NextToken != nil && len(*s.NextToken) < 1 {
  7181  		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
  7182  	}
  7183  
  7184  	if invalidParams.Len() > 0 {
  7185  		return invalidParams
  7186  	}
  7187  	return nil
  7188  }
  7189  
  7190  // SetMaxResults sets the MaxResults field's value.
  7191  func (s *ListFirewallsInput) SetMaxResults(v int64) *ListFirewallsInput {
  7192  	s.MaxResults = &v
  7193  	return s
  7194  }
  7195  
  7196  // SetNextToken sets the NextToken field's value.
  7197  func (s *ListFirewallsInput) SetNextToken(v string) *ListFirewallsInput {
  7198  	s.NextToken = &v
  7199  	return s
  7200  }
  7201  
  7202  // SetVpcIds sets the VpcIds field's value.
  7203  func (s *ListFirewallsInput) SetVpcIds(v []*string) *ListFirewallsInput {
  7204  	s.VpcIds = v
  7205  	return s
  7206  }
  7207  
  7208  type ListFirewallsOutput struct {
  7209  	_ struct{} `type:"structure"`
  7210  
  7211  	// The firewall metadata objects for the VPCs that you specified. Depending
  7212  	// on your setting for max results and the number of firewalls you have, a single
  7213  	// call might not be the full list.
  7214  	Firewalls []*FirewallMetadata `type:"list"`
  7215  
  7216  	// When you request a list of objects with a MaxResults setting, if the number
  7217  	// of objects that are still available for retrieval exceeds the maximum you
  7218  	// requested, Network Firewall returns a NextToken value in the response. To
  7219  	// retrieve the next batch of objects, use the token returned from the prior
  7220  	// request in your next request.
  7221  	NextToken *string `min:"1" type:"string"`
  7222  }
  7223  
  7224  // String returns the string representation.
  7225  //
  7226  // API parameter values that are decorated as "sensitive" in the API will not
  7227  // be included in the string output. The member name will be present, but the
  7228  // value will be replaced with "sensitive".
  7229  func (s ListFirewallsOutput) String() string {
  7230  	return awsutil.Prettify(s)
  7231  }
  7232  
  7233  // GoString returns the string representation.
  7234  //
  7235  // API parameter values that are decorated as "sensitive" in the API will not
  7236  // be included in the string output. The member name will be present, but the
  7237  // value will be replaced with "sensitive".
  7238  func (s ListFirewallsOutput) GoString() string {
  7239  	return s.String()
  7240  }
  7241  
  7242  // SetFirewalls sets the Firewalls field's value.
  7243  func (s *ListFirewallsOutput) SetFirewalls(v []*FirewallMetadata) *ListFirewallsOutput {
  7244  	s.Firewalls = v
  7245  	return s
  7246  }
  7247  
  7248  // SetNextToken sets the NextToken field's value.
  7249  func (s *ListFirewallsOutput) SetNextToken(v string) *ListFirewallsOutput {
  7250  	s.NextToken = &v
  7251  	return s
  7252  }
  7253  
  7254  type ListRuleGroupsInput struct {
  7255  	_ struct{} `type:"structure"`
  7256  
  7257  	// The maximum number of objects that you want Network Firewall to return for
  7258  	// this request. If more objects are available, in the response, Network Firewall
  7259  	// provides a NextToken value that you can use in a subsequent call to get the
  7260  	// next batch of objects.
  7261  	MaxResults *int64 `min:"1" type:"integer"`
  7262  
  7263  	// When you request a list of objects with a MaxResults setting, if the number
  7264  	// of objects that are still available for retrieval exceeds the maximum you
  7265  	// requested, Network Firewall returns a NextToken value in the response. To
  7266  	// retrieve the next batch of objects, use the token returned from the prior
  7267  	// request in your next request.
  7268  	NextToken *string `min:"1" type:"string"`
  7269  }
  7270  
  7271  // String returns the string representation.
  7272  //
  7273  // API parameter values that are decorated as "sensitive" in the API will not
  7274  // be included in the string output. The member name will be present, but the
  7275  // value will be replaced with "sensitive".
  7276  func (s ListRuleGroupsInput) String() string {
  7277  	return awsutil.Prettify(s)
  7278  }
  7279  
  7280  // GoString returns the string representation.
  7281  //
  7282  // API parameter values that are decorated as "sensitive" in the API will not
  7283  // be included in the string output. The member name will be present, but the
  7284  // value will be replaced with "sensitive".
  7285  func (s ListRuleGroupsInput) GoString() string {
  7286  	return s.String()
  7287  }
  7288  
  7289  // Validate inspects the fields of the type to determine if they are valid.
  7290  func (s *ListRuleGroupsInput) Validate() error {
  7291  	invalidParams := request.ErrInvalidParams{Context: "ListRuleGroupsInput"}
  7292  	if s.MaxResults != nil && *s.MaxResults < 1 {
  7293  		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
  7294  	}
  7295  	if s.NextToken != nil && len(*s.NextToken) < 1 {
  7296  		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
  7297  	}
  7298  
  7299  	if invalidParams.Len() > 0 {
  7300  		return invalidParams
  7301  	}
  7302  	return nil
  7303  }
  7304  
  7305  // SetMaxResults sets the MaxResults field's value.
  7306  func (s *ListRuleGroupsInput) SetMaxResults(v int64) *ListRuleGroupsInput {
  7307  	s.MaxResults = &v
  7308  	return s
  7309  }
  7310  
  7311  // SetNextToken sets the NextToken field's value.
  7312  func (s *ListRuleGroupsInput) SetNextToken(v string) *ListRuleGroupsInput {
  7313  	s.NextToken = &v
  7314  	return s
  7315  }
  7316  
  7317  type ListRuleGroupsOutput struct {
  7318  	_ struct{} `type:"structure"`
  7319  
  7320  	// When you request a list of objects with a MaxResults setting, if the number
  7321  	// of objects that are still available for retrieval exceeds the maximum you
  7322  	// requested, Network Firewall returns a NextToken value in the response. To
  7323  	// retrieve the next batch of objects, use the token returned from the prior
  7324  	// request in your next request.
  7325  	NextToken *string `min:"1" type:"string"`
  7326  
  7327  	// The rule group metadata objects that you've defined. Depending on your setting
  7328  	// for max results and the number of rule groups, this might not be the full
  7329  	// list.
  7330  	RuleGroups []*RuleGroupMetadata `type:"list"`
  7331  }
  7332  
  7333  // String returns the string representation.
  7334  //
  7335  // API parameter values that are decorated as "sensitive" in the API will not
  7336  // be included in the string output. The member name will be present, but the
  7337  // value will be replaced with "sensitive".
  7338  func (s ListRuleGroupsOutput) String() string {
  7339  	return awsutil.Prettify(s)
  7340  }
  7341  
  7342  // GoString returns the string representation.
  7343  //
  7344  // API parameter values that are decorated as "sensitive" in the API will not
  7345  // be included in the string output. The member name will be present, but the
  7346  // value will be replaced with "sensitive".
  7347  func (s ListRuleGroupsOutput) GoString() string {
  7348  	return s.String()
  7349  }
  7350  
  7351  // SetNextToken sets the NextToken field's value.
  7352  func (s *ListRuleGroupsOutput) SetNextToken(v string) *ListRuleGroupsOutput {
  7353  	s.NextToken = &v
  7354  	return s
  7355  }
  7356  
  7357  // SetRuleGroups sets the RuleGroups field's value.
  7358  func (s *ListRuleGroupsOutput) SetRuleGroups(v []*RuleGroupMetadata) *ListRuleGroupsOutput {
  7359  	s.RuleGroups = v
  7360  	return s
  7361  }
  7362  
  7363  type ListTagsForResourceInput struct {
  7364  	_ struct{} `type:"structure"`
  7365  
  7366  	// The maximum number of objects that you want Network Firewall to return for
  7367  	// this request. If more objects are available, in the response, Network Firewall
  7368  	// provides a NextToken value that you can use in a subsequent call to get the
  7369  	// next batch of objects.
  7370  	MaxResults *int64 `type:"integer"`
  7371  
  7372  	// When you request a list of objects with a MaxResults setting, if the number
  7373  	// of objects that are still available for retrieval exceeds the maximum you
  7374  	// requested, Network Firewall returns a NextToken value in the response. To
  7375  	// retrieve the next batch of objects, use the token returned from the prior
  7376  	// request in your next request.
  7377  	NextToken *string `min:"1" type:"string"`
  7378  
  7379  	// The Amazon Resource Name (ARN) of the resource.
  7380  	//
  7381  	// ResourceArn is a required field
  7382  	ResourceArn *string `min:"1" type:"string" required:"true"`
  7383  }
  7384  
  7385  // String returns the string representation.
  7386  //
  7387  // API parameter values that are decorated as "sensitive" in the API will not
  7388  // be included in the string output. The member name will be present, but the
  7389  // value will be replaced with "sensitive".
  7390  func (s ListTagsForResourceInput) String() string {
  7391  	return awsutil.Prettify(s)
  7392  }
  7393  
  7394  // GoString returns the string representation.
  7395  //
  7396  // API parameter values that are decorated as "sensitive" in the API will not
  7397  // be included in the string output. The member name will be present, but the
  7398  // value will be replaced with "sensitive".
  7399  func (s ListTagsForResourceInput) GoString() string {
  7400  	return s.String()
  7401  }
  7402  
  7403  // Validate inspects the fields of the type to determine if they are valid.
  7404  func (s *ListTagsForResourceInput) Validate() error {
  7405  	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
  7406  	if s.NextToken != nil && len(*s.NextToken) < 1 {
  7407  		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
  7408  	}
  7409  	if s.ResourceArn == nil {
  7410  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  7411  	}
  7412  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  7413  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  7414  	}
  7415  
  7416  	if invalidParams.Len() > 0 {
  7417  		return invalidParams
  7418  	}
  7419  	return nil
  7420  }
  7421  
  7422  // SetMaxResults sets the MaxResults field's value.
  7423  func (s *ListTagsForResourceInput) SetMaxResults(v int64) *ListTagsForResourceInput {
  7424  	s.MaxResults = &v
  7425  	return s
  7426  }
  7427  
  7428  // SetNextToken sets the NextToken field's value.
  7429  func (s *ListTagsForResourceInput) SetNextToken(v string) *ListTagsForResourceInput {
  7430  	s.NextToken = &v
  7431  	return s
  7432  }
  7433  
  7434  // SetResourceArn sets the ResourceArn field's value.
  7435  func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
  7436  	s.ResourceArn = &v
  7437  	return s
  7438  }
  7439  
  7440  type ListTagsForResourceOutput struct {
  7441  	_ struct{} `type:"structure"`
  7442  
  7443  	// When you request a list of objects with a MaxResults setting, if the number
  7444  	// of objects that are still available for retrieval exceeds the maximum you
  7445  	// requested, Network Firewall returns a NextToken value in the response. To
  7446  	// retrieve the next batch of objects, use the token returned from the prior
  7447  	// request in your next request.
  7448  	NextToken *string `min:"1" type:"string"`
  7449  
  7450  	// The tags that are associated with the resource.
  7451  	Tags []*Tag `min:"1" type:"list"`
  7452  }
  7453  
  7454  // String returns the string representation.
  7455  //
  7456  // API parameter values that are decorated as "sensitive" in the API will not
  7457  // be included in the string output. The member name will be present, but the
  7458  // value will be replaced with "sensitive".
  7459  func (s ListTagsForResourceOutput) String() string {
  7460  	return awsutil.Prettify(s)
  7461  }
  7462  
  7463  // GoString returns the string representation.
  7464  //
  7465  // API parameter values that are decorated as "sensitive" in the API will not
  7466  // be included in the string output. The member name will be present, but the
  7467  // value will be replaced with "sensitive".
  7468  func (s ListTagsForResourceOutput) GoString() string {
  7469  	return s.String()
  7470  }
  7471  
  7472  // SetNextToken sets the NextToken field's value.
  7473  func (s *ListTagsForResourceOutput) SetNextToken(v string) *ListTagsForResourceOutput {
  7474  	s.NextToken = &v
  7475  	return s
  7476  }
  7477  
  7478  // SetTags sets the Tags field's value.
  7479  func (s *ListTagsForResourceOutput) SetTags(v []*Tag) *ListTagsForResourceOutput {
  7480  	s.Tags = v
  7481  	return s
  7482  }
  7483  
  7484  // Defines where AWS Network Firewall sends logs for the firewall for one log
  7485  // type. This is used in LoggingConfiguration. You can send each type of log
  7486  // to an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose
  7487  // delivery stream.
  7488  //
  7489  // Network Firewall generates logs for stateful rule groups. You can save alert
  7490  // and flow log types. The stateful rules engine records flow logs for all network
  7491  // traffic that it receives. It records alert logs for traffic that matches
  7492  // stateful rules that have the rule action set to DROP or ALERT.
  7493  type LogDestinationConfig struct {
  7494  	_ struct{} `type:"structure"`
  7495  
  7496  	// The named location for the logs, provided in a key:value mapping that is
  7497  	// specific to the chosen destination type.
  7498  	//
  7499  	//    * For an Amazon S3 bucket, provide the name of the bucket, with key bucketName,
  7500  	//    and optionally provide a prefix, with key prefix. The following example
  7501  	//    specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the prefix
  7502  	//    alerts: "LogDestination": { "bucketName": "DOC-EXAMPLE-BUCKET", "prefix":
  7503  	//    "alerts" }
  7504  	//
  7505  	//    * For a CloudWatch log group, provide the name of the CloudWatch log group,
  7506  	//    with key logGroup. The following example specifies a log group named alert-log-group:
  7507  	//    "LogDestination": { "logGroup": "alert-log-group" }
  7508  	//
  7509  	//    * For a Kinesis Data Firehose delivery stream, provide the name of the
  7510  	//    delivery stream, with key deliveryStream. The following example specifies
  7511  	//    a delivery stream named alert-delivery-stream: "LogDestination": { "deliveryStream":
  7512  	//    "alert-delivery-stream" }
  7513  	//
  7514  	// LogDestination is a required field
  7515  	LogDestination map[string]*string `type:"map" required:"true"`
  7516  
  7517  	// The type of storage destination to send these logs to. You can send logs
  7518  	// to an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose
  7519  	// delivery stream.
  7520  	//
  7521  	// LogDestinationType is a required field
  7522  	LogDestinationType *string `min:"2" type:"string" required:"true" enum:"LogDestinationType"`
  7523  
  7524  	// The type of log to send. Alert logs report traffic that matches a StatefulRule
  7525  	// with an action setting that sends an alert log message. Flow logs are standard
  7526  	// network traffic flow logs.
  7527  	//
  7528  	// LogType is a required field
  7529  	LogType *string `type:"string" required:"true" enum:"LogType"`
  7530  }
  7531  
  7532  // String returns the string representation.
  7533  //
  7534  // API parameter values that are decorated as "sensitive" in the API will not
  7535  // be included in the string output. The member name will be present, but the
  7536  // value will be replaced with "sensitive".
  7537  func (s LogDestinationConfig) String() string {
  7538  	return awsutil.Prettify(s)
  7539  }
  7540  
  7541  // GoString returns the string representation.
  7542  //
  7543  // API parameter values that are decorated as "sensitive" in the API will not
  7544  // be included in the string output. The member name will be present, but the
  7545  // value will be replaced with "sensitive".
  7546  func (s LogDestinationConfig) GoString() string {
  7547  	return s.String()
  7548  }
  7549  
  7550  // Validate inspects the fields of the type to determine if they are valid.
  7551  func (s *LogDestinationConfig) Validate() error {
  7552  	invalidParams := request.ErrInvalidParams{Context: "LogDestinationConfig"}
  7553  	if s.LogDestination == nil {
  7554  		invalidParams.Add(request.NewErrParamRequired("LogDestination"))
  7555  	}
  7556  	if s.LogDestinationType == nil {
  7557  		invalidParams.Add(request.NewErrParamRequired("LogDestinationType"))
  7558  	}
  7559  	if s.LogDestinationType != nil && len(*s.LogDestinationType) < 2 {
  7560  		invalidParams.Add(request.NewErrParamMinLen("LogDestinationType", 2))
  7561  	}
  7562  	if s.LogType == nil {
  7563  		invalidParams.Add(request.NewErrParamRequired("LogType"))
  7564  	}
  7565  
  7566  	if invalidParams.Len() > 0 {
  7567  		return invalidParams
  7568  	}
  7569  	return nil
  7570  }
  7571  
  7572  // SetLogDestination sets the LogDestination field's value.
  7573  func (s *LogDestinationConfig) SetLogDestination(v map[string]*string) *LogDestinationConfig {
  7574  	s.LogDestination = v
  7575  	return s
  7576  }
  7577  
  7578  // SetLogDestinationType sets the LogDestinationType field's value.
  7579  func (s *LogDestinationConfig) SetLogDestinationType(v string) *LogDestinationConfig {
  7580  	s.LogDestinationType = &v
  7581  	return s
  7582  }
  7583  
  7584  // SetLogType sets the LogType field's value.
  7585  func (s *LogDestinationConfig) SetLogType(v string) *LogDestinationConfig {
  7586  	s.LogType = &v
  7587  	return s
  7588  }
  7589  
  7590  // Unable to send logs to a configured logging destination.
  7591  type LogDestinationPermissionException struct {
  7592  	_            struct{}                  `type:"structure"`
  7593  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  7594  
  7595  	Message_ *string `locationName:"Message" type:"string"`
  7596  }
  7597  
  7598  // String returns the string representation.
  7599  //
  7600  // API parameter values that are decorated as "sensitive" in the API will not
  7601  // be included in the string output. The member name will be present, but the
  7602  // value will be replaced with "sensitive".
  7603  func (s LogDestinationPermissionException) String() string {
  7604  	return awsutil.Prettify(s)
  7605  }
  7606  
  7607  // GoString returns the string representation.
  7608  //
  7609  // API parameter values that are decorated as "sensitive" in the API will not
  7610  // be included in the string output. The member name will be present, but the
  7611  // value will be replaced with "sensitive".
  7612  func (s LogDestinationPermissionException) GoString() string {
  7613  	return s.String()
  7614  }
  7615  
  7616  func newErrorLogDestinationPermissionException(v protocol.ResponseMetadata) error {
  7617  	return &LogDestinationPermissionException{
  7618  		RespMetadata: v,
  7619  	}
  7620  }
  7621  
  7622  // Code returns the exception type name.
  7623  func (s *LogDestinationPermissionException) Code() string {
  7624  	return "LogDestinationPermissionException"
  7625  }
  7626  
  7627  // Message returns the exception's message.
  7628  func (s *LogDestinationPermissionException) Message() string {
  7629  	if s.Message_ != nil {
  7630  		return *s.Message_
  7631  	}
  7632  	return ""
  7633  }
  7634  
  7635  // OrigErr always returns nil, satisfies awserr.Error interface.
  7636  func (s *LogDestinationPermissionException) OrigErr() error {
  7637  	return nil
  7638  }
  7639  
  7640  func (s *LogDestinationPermissionException) Error() string {
  7641  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  7642  }
  7643  
  7644  // Status code returns the HTTP status code for the request's response error.
  7645  func (s *LogDestinationPermissionException) StatusCode() int {
  7646  	return s.RespMetadata.StatusCode
  7647  }
  7648  
  7649  // RequestID returns the service's response RequestID for request.
  7650  func (s *LogDestinationPermissionException) RequestID() string {
  7651  	return s.RespMetadata.RequestID
  7652  }
  7653  
  7654  // Defines how AWS Network Firewall performs logging for a Firewall.
  7655  type LoggingConfiguration struct {
  7656  	_ struct{} `type:"structure"`
  7657  
  7658  	// Defines the logging destinations for the logs for a firewall. Network Firewall
  7659  	// generates logs for stateful rule groups.
  7660  	//
  7661  	// LogDestinationConfigs is a required field
  7662  	LogDestinationConfigs []*LogDestinationConfig `type:"list" required:"true"`
  7663  }
  7664  
  7665  // String returns the string representation.
  7666  //
  7667  // API parameter values that are decorated as "sensitive" in the API will not
  7668  // be included in the string output. The member name will be present, but the
  7669  // value will be replaced with "sensitive".
  7670  func (s LoggingConfiguration) String() string {
  7671  	return awsutil.Prettify(s)
  7672  }
  7673  
  7674  // GoString returns the string representation.
  7675  //
  7676  // API parameter values that are decorated as "sensitive" in the API will not
  7677  // be included in the string output. The member name will be present, but the
  7678  // value will be replaced with "sensitive".
  7679  func (s LoggingConfiguration) GoString() string {
  7680  	return s.String()
  7681  }
  7682  
  7683  // Validate inspects the fields of the type to determine if they are valid.
  7684  func (s *LoggingConfiguration) Validate() error {
  7685  	invalidParams := request.ErrInvalidParams{Context: "LoggingConfiguration"}
  7686  	if s.LogDestinationConfigs == nil {
  7687  		invalidParams.Add(request.NewErrParamRequired("LogDestinationConfigs"))
  7688  	}
  7689  	if s.LogDestinationConfigs != nil {
  7690  		for i, v := range s.LogDestinationConfigs {
  7691  			if v == nil {
  7692  				continue
  7693  			}
  7694  			if err := v.Validate(); err != nil {
  7695  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LogDestinationConfigs", i), err.(request.ErrInvalidParams))
  7696  			}
  7697  		}
  7698  	}
  7699  
  7700  	if invalidParams.Len() > 0 {
  7701  		return invalidParams
  7702  	}
  7703  	return nil
  7704  }
  7705  
  7706  // SetLogDestinationConfigs sets the LogDestinationConfigs field's value.
  7707  func (s *LoggingConfiguration) SetLogDestinationConfigs(v []*LogDestinationConfig) *LoggingConfiguration {
  7708  	s.LogDestinationConfigs = v
  7709  	return s
  7710  }
  7711  
  7712  // Criteria for Network Firewall to use to inspect an individual packet in stateless
  7713  // rule inspection. Each match attributes set can include one or more items
  7714  // such as IP address, CIDR range, port number, protocol, and TCP flags.
  7715  type MatchAttributes struct {
  7716  	_ struct{} `type:"structure"`
  7717  
  7718  	// The destination ports to inspect for. If not specified, this matches with
  7719  	// any destination port. This setting is only used for protocols 6 (TCP) and
  7720  	// 17 (UDP).
  7721  	//
  7722  	// You can specify individual ports, for example 1994 and you can specify port
  7723  	// ranges, for example 1990:1994.
  7724  	DestinationPorts []*PortRange `type:"list"`
  7725  
  7726  	// The destination IP addresses and address ranges to inspect for, in CIDR notation.
  7727  	// If not specified, this matches with any destination address.
  7728  	Destinations []*Address `type:"list"`
  7729  
  7730  	// The protocols to inspect for, specified using each protocol's assigned internet
  7731  	// protocol number (IANA). If not specified, this matches with any protocol.
  7732  	Protocols []*int64 `type:"list"`
  7733  
  7734  	// The source ports to inspect for. If not specified, this matches with any
  7735  	// source port. This setting is only used for protocols 6 (TCP) and 17 (UDP).
  7736  	//
  7737  	// You can specify individual ports, for example 1994 and you can specify port
  7738  	// ranges, for example 1990:1994.
  7739  	SourcePorts []*PortRange `type:"list"`
  7740  
  7741  	// The source IP addresses and address ranges to inspect for, in CIDR notation.
  7742  	// If not specified, this matches with any source address.
  7743  	Sources []*Address `type:"list"`
  7744  
  7745  	// The TCP flags and masks to inspect for. If not specified, this matches with
  7746  	// any settings. This setting is only used for protocol 6 (TCP).
  7747  	TCPFlags []*TCPFlagField `type:"list"`
  7748  }
  7749  
  7750  // String returns the string representation.
  7751  //
  7752  // API parameter values that are decorated as "sensitive" in the API will not
  7753  // be included in the string output. The member name will be present, but the
  7754  // value will be replaced with "sensitive".
  7755  func (s MatchAttributes) String() string {
  7756  	return awsutil.Prettify(s)
  7757  }
  7758  
  7759  // GoString returns the string representation.
  7760  //
  7761  // API parameter values that are decorated as "sensitive" in the API will not
  7762  // be included in the string output. The member name will be present, but the
  7763  // value will be replaced with "sensitive".
  7764  func (s MatchAttributes) GoString() string {
  7765  	return s.String()
  7766  }
  7767  
  7768  // Validate inspects the fields of the type to determine if they are valid.
  7769  func (s *MatchAttributes) Validate() error {
  7770  	invalidParams := request.ErrInvalidParams{Context: "MatchAttributes"}
  7771  	if s.DestinationPorts != nil {
  7772  		for i, v := range s.DestinationPorts {
  7773  			if v == nil {
  7774  				continue
  7775  			}
  7776  			if err := v.Validate(); err != nil {
  7777  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DestinationPorts", i), err.(request.ErrInvalidParams))
  7778  			}
  7779  		}
  7780  	}
  7781  	if s.Destinations != nil {
  7782  		for i, v := range s.Destinations {
  7783  			if v == nil {
  7784  				continue
  7785  			}
  7786  			if err := v.Validate(); err != nil {
  7787  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Destinations", i), err.(request.ErrInvalidParams))
  7788  			}
  7789  		}
  7790  	}
  7791  	if s.SourcePorts != nil {
  7792  		for i, v := range s.SourcePorts {
  7793  			if v == nil {
  7794  				continue
  7795  			}
  7796  			if err := v.Validate(); err != nil {
  7797  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SourcePorts", i), err.(request.ErrInvalidParams))
  7798  			}
  7799  		}
  7800  	}
  7801  	if s.Sources != nil {
  7802  		for i, v := range s.Sources {
  7803  			if v == nil {
  7804  				continue
  7805  			}
  7806  			if err := v.Validate(); err != nil {
  7807  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sources", i), err.(request.ErrInvalidParams))
  7808  			}
  7809  		}
  7810  	}
  7811  	if s.TCPFlags != nil {
  7812  		for i, v := range s.TCPFlags {
  7813  			if v == nil {
  7814  				continue
  7815  			}
  7816  			if err := v.Validate(); err != nil {
  7817  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TCPFlags", i), err.(request.ErrInvalidParams))
  7818  			}
  7819  		}
  7820  	}
  7821  
  7822  	if invalidParams.Len() > 0 {
  7823  		return invalidParams
  7824  	}
  7825  	return nil
  7826  }
  7827  
  7828  // SetDestinationPorts sets the DestinationPorts field's value.
  7829  func (s *MatchAttributes) SetDestinationPorts(v []*PortRange) *MatchAttributes {
  7830  	s.DestinationPorts = v
  7831  	return s
  7832  }
  7833  
  7834  // SetDestinations sets the Destinations field's value.
  7835  func (s *MatchAttributes) SetDestinations(v []*Address) *MatchAttributes {
  7836  	s.Destinations = v
  7837  	return s
  7838  }
  7839  
  7840  // SetProtocols sets the Protocols field's value.
  7841  func (s *MatchAttributes) SetProtocols(v []*int64) *MatchAttributes {
  7842  	s.Protocols = v
  7843  	return s
  7844  }
  7845  
  7846  // SetSourcePorts sets the SourcePorts field's value.
  7847  func (s *MatchAttributes) SetSourcePorts(v []*PortRange) *MatchAttributes {
  7848  	s.SourcePorts = v
  7849  	return s
  7850  }
  7851  
  7852  // SetSources sets the Sources field's value.
  7853  func (s *MatchAttributes) SetSources(v []*Address) *MatchAttributes {
  7854  	s.Sources = v
  7855  	return s
  7856  }
  7857  
  7858  // SetTCPFlags sets the TCPFlags field's value.
  7859  func (s *MatchAttributes) SetTCPFlags(v []*TCPFlagField) *MatchAttributes {
  7860  	s.TCPFlags = v
  7861  	return s
  7862  }
  7863  
  7864  // Provides configuration status for a single policy or rule group that is used
  7865  // for a firewall endpoint. Network Firewall provides each endpoint with the
  7866  // rules that are configured in the firewall policy. Each time you add a subnet
  7867  // or modify the associated firewall policy, Network Firewall synchronizes the
  7868  // rules in the endpoint, so it can properly filter network traffic. This is
  7869  // part of a SyncState for a firewall.
  7870  type PerObjectStatus struct {
  7871  	_ struct{} `type:"structure"`
  7872  
  7873  	// Indicates whether this object is in sync with the version indicated in the
  7874  	// update token.
  7875  	SyncStatus *string `type:"string" enum:"PerObjectSyncStatus"`
  7876  
  7877  	// The current version of the object that is either in sync or pending synchronization.
  7878  	UpdateToken *string `min:"1" type:"string"`
  7879  }
  7880  
  7881  // String returns the string representation.
  7882  //
  7883  // API parameter values that are decorated as "sensitive" in the API will not
  7884  // be included in the string output. The member name will be present, but the
  7885  // value will be replaced with "sensitive".
  7886  func (s PerObjectStatus) String() string {
  7887  	return awsutil.Prettify(s)
  7888  }
  7889  
  7890  // GoString returns the string representation.
  7891  //
  7892  // API parameter values that are decorated as "sensitive" in the API will not
  7893  // be included in the string output. The member name will be present, but the
  7894  // value will be replaced with "sensitive".
  7895  func (s PerObjectStatus) GoString() string {
  7896  	return s.String()
  7897  }
  7898  
  7899  // SetSyncStatus sets the SyncStatus field's value.
  7900  func (s *PerObjectStatus) SetSyncStatus(v string) *PerObjectStatus {
  7901  	s.SyncStatus = &v
  7902  	return s
  7903  }
  7904  
  7905  // SetUpdateToken sets the UpdateToken field's value.
  7906  func (s *PerObjectStatus) SetUpdateToken(v string) *PerObjectStatus {
  7907  	s.UpdateToken = &v
  7908  	return s
  7909  }
  7910  
  7911  // A single port range specification. This is used for source and destination
  7912  // port ranges in the stateless rule MatchAttributes, SourcePorts, and DestinationPorts
  7913  // settings.
  7914  type PortRange struct {
  7915  	_ struct{} `type:"structure"`
  7916  
  7917  	// The lower limit of the port range. This must be less than or equal to the
  7918  	// ToPort specification.
  7919  	//
  7920  	// FromPort is a required field
  7921  	FromPort *int64 `type:"integer" required:"true"`
  7922  
  7923  	// The upper limit of the port range. This must be greater than or equal to
  7924  	// the FromPort specification.
  7925  	//
  7926  	// ToPort is a required field
  7927  	ToPort *int64 `type:"integer" required:"true"`
  7928  }
  7929  
  7930  // String returns the string representation.
  7931  //
  7932  // API parameter values that are decorated as "sensitive" in the API will not
  7933  // be included in the string output. The member name will be present, but the
  7934  // value will be replaced with "sensitive".
  7935  func (s PortRange) String() string {
  7936  	return awsutil.Prettify(s)
  7937  }
  7938  
  7939  // GoString returns the string representation.
  7940  //
  7941  // API parameter values that are decorated as "sensitive" in the API will not
  7942  // be included in the string output. The member name will be present, but the
  7943  // value will be replaced with "sensitive".
  7944  func (s PortRange) GoString() string {
  7945  	return s.String()
  7946  }
  7947  
  7948  // Validate inspects the fields of the type to determine if they are valid.
  7949  func (s *PortRange) Validate() error {
  7950  	invalidParams := request.ErrInvalidParams{Context: "PortRange"}
  7951  	if s.FromPort == nil {
  7952  		invalidParams.Add(request.NewErrParamRequired("FromPort"))
  7953  	}
  7954  	if s.ToPort == nil {
  7955  		invalidParams.Add(request.NewErrParamRequired("ToPort"))
  7956  	}
  7957  
  7958  	if invalidParams.Len() > 0 {
  7959  		return invalidParams
  7960  	}
  7961  	return nil
  7962  }
  7963  
  7964  // SetFromPort sets the FromPort field's value.
  7965  func (s *PortRange) SetFromPort(v int64) *PortRange {
  7966  	s.FromPort = &v
  7967  	return s
  7968  }
  7969  
  7970  // SetToPort sets the ToPort field's value.
  7971  func (s *PortRange) SetToPort(v int64) *PortRange {
  7972  	s.ToPort = &v
  7973  	return s
  7974  }
  7975  
  7976  // A set of port ranges for use in the rules in a rule group.
  7977  type PortSet struct {
  7978  	_ struct{} `type:"structure"`
  7979  
  7980  	// The set of port ranges.
  7981  	Definition []*string `type:"list"`
  7982  }
  7983  
  7984  // String returns the string representation.
  7985  //
  7986  // API parameter values that are decorated as "sensitive" in the API will not
  7987  // be included in the string output. The member name will be present, but the
  7988  // value will be replaced with "sensitive".
  7989  func (s PortSet) String() string {
  7990  	return awsutil.Prettify(s)
  7991  }
  7992  
  7993  // GoString returns the string representation.
  7994  //
  7995  // API parameter values that are decorated as "sensitive" in the API will not
  7996  // be included in the string output. The member name will be present, but the
  7997  // value will be replaced with "sensitive".
  7998  func (s PortSet) GoString() string {
  7999  	return s.String()
  8000  }
  8001  
  8002  // SetDefinition sets the Definition field's value.
  8003  func (s *PortSet) SetDefinition(v []*string) *PortSet {
  8004  	s.Definition = v
  8005  	return s
  8006  }
  8007  
  8008  // Stateless inspection criteria that publishes the specified metrics to Amazon
  8009  // CloudWatch for the matching packet. This setting defines a CloudWatch dimension
  8010  // value to be published.
  8011  type PublishMetricAction struct {
  8012  	_ struct{} `type:"structure"`
  8013  
  8014  	// Dimensions is a required field
  8015  	Dimensions []*Dimension `min:"1" type:"list" required:"true"`
  8016  }
  8017  
  8018  // String returns the string representation.
  8019  //
  8020  // API parameter values that are decorated as "sensitive" in the API will not
  8021  // be included in the string output. The member name will be present, but the
  8022  // value will be replaced with "sensitive".
  8023  func (s PublishMetricAction) String() string {
  8024  	return awsutil.Prettify(s)
  8025  }
  8026  
  8027  // GoString returns the string representation.
  8028  //
  8029  // API parameter values that are decorated as "sensitive" in the API will not
  8030  // be included in the string output. The member name will be present, but the
  8031  // value will be replaced with "sensitive".
  8032  func (s PublishMetricAction) GoString() string {
  8033  	return s.String()
  8034  }
  8035  
  8036  // Validate inspects the fields of the type to determine if they are valid.
  8037  func (s *PublishMetricAction) Validate() error {
  8038  	invalidParams := request.ErrInvalidParams{Context: "PublishMetricAction"}
  8039  	if s.Dimensions == nil {
  8040  		invalidParams.Add(request.NewErrParamRequired("Dimensions"))
  8041  	}
  8042  	if s.Dimensions != nil && len(s.Dimensions) < 1 {
  8043  		invalidParams.Add(request.NewErrParamMinLen("Dimensions", 1))
  8044  	}
  8045  	if s.Dimensions != nil {
  8046  		for i, v := range s.Dimensions {
  8047  			if v == nil {
  8048  				continue
  8049  			}
  8050  			if err := v.Validate(); err != nil {
  8051  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Dimensions", i), err.(request.ErrInvalidParams))
  8052  			}
  8053  		}
  8054  	}
  8055  
  8056  	if invalidParams.Len() > 0 {
  8057  		return invalidParams
  8058  	}
  8059  	return nil
  8060  }
  8061  
  8062  // SetDimensions sets the Dimensions field's value.
  8063  func (s *PublishMetricAction) SetDimensions(v []*Dimension) *PublishMetricAction {
  8064  	s.Dimensions = v
  8065  	return s
  8066  }
  8067  
  8068  type PutResourcePolicyInput struct {
  8069  	_ struct{} `type:"structure"`
  8070  
  8071  	// The AWS Identity and Access Management policy statement that lists the accounts
  8072  	// that you want to share your rule group or firewall policy with and the operations
  8073  	// that you want the accounts to be able to perform.
  8074  	//
  8075  	// For a rule group resource, you can specify the following operations in the
  8076  	// Actions section of the statement:
  8077  	//
  8078  	//    * network-firewall:CreateFirewallPolicy
  8079  	//
  8080  	//    * network-firewall:UpdateFirewallPolicy
  8081  	//
  8082  	//    * network-firewall:ListRuleGroups
  8083  	//
  8084  	// For a firewall policy resource, you can specify the following operations
  8085  	// in the Actions section of the statement:
  8086  	//
  8087  	//    * network-firewall:CreateFirewall
  8088  	//
  8089  	//    * network-firewall:UpdateFirewall
  8090  	//
  8091  	//    * network-firewall:AssociateFirewallPolicy
  8092  	//
  8093  	//    * network-firewall:ListFirewallPolicies
  8094  	//
  8095  	// In the Resource section of the statement, you specify the ARNs for the rule
  8096  	// groups and firewall policies that you want to share with the account that
  8097  	// you specified in Arn.
  8098  	//
  8099  	// Policy is a required field
  8100  	Policy *string `min:"1" type:"string" required:"true"`
  8101  
  8102  	// The Amazon Resource Name (ARN) of the account that you want to share rule
  8103  	// groups and firewall policies with.
  8104  	//
  8105  	// ResourceArn is a required field
  8106  	ResourceArn *string `min:"1" type:"string" required:"true"`
  8107  }
  8108  
  8109  // String returns the string representation.
  8110  //
  8111  // API parameter values that are decorated as "sensitive" in the API will not
  8112  // be included in the string output. The member name will be present, but the
  8113  // value will be replaced with "sensitive".
  8114  func (s PutResourcePolicyInput) String() string {
  8115  	return awsutil.Prettify(s)
  8116  }
  8117  
  8118  // GoString returns the string representation.
  8119  //
  8120  // API parameter values that are decorated as "sensitive" in the API will not
  8121  // be included in the string output. The member name will be present, but the
  8122  // value will be replaced with "sensitive".
  8123  func (s PutResourcePolicyInput) GoString() string {
  8124  	return s.String()
  8125  }
  8126  
  8127  // Validate inspects the fields of the type to determine if they are valid.
  8128  func (s *PutResourcePolicyInput) Validate() error {
  8129  	invalidParams := request.ErrInvalidParams{Context: "PutResourcePolicyInput"}
  8130  	if s.Policy == nil {
  8131  		invalidParams.Add(request.NewErrParamRequired("Policy"))
  8132  	}
  8133  	if s.Policy != nil && len(*s.Policy) < 1 {
  8134  		invalidParams.Add(request.NewErrParamMinLen("Policy", 1))
  8135  	}
  8136  	if s.ResourceArn == nil {
  8137  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  8138  	}
  8139  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  8140  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  8141  	}
  8142  
  8143  	if invalidParams.Len() > 0 {
  8144  		return invalidParams
  8145  	}
  8146  	return nil
  8147  }
  8148  
  8149  // SetPolicy sets the Policy field's value.
  8150  func (s *PutResourcePolicyInput) SetPolicy(v string) *PutResourcePolicyInput {
  8151  	s.Policy = &v
  8152  	return s
  8153  }
  8154  
  8155  // SetResourceArn sets the ResourceArn field's value.
  8156  func (s *PutResourcePolicyInput) SetResourceArn(v string) *PutResourcePolicyInput {
  8157  	s.ResourceArn = &v
  8158  	return s
  8159  }
  8160  
  8161  type PutResourcePolicyOutput struct {
  8162  	_ struct{} `type:"structure"`
  8163  }
  8164  
  8165  // String returns the string representation.
  8166  //
  8167  // API parameter values that are decorated as "sensitive" in the API will not
  8168  // be included in the string output. The member name will be present, but the
  8169  // value will be replaced with "sensitive".
  8170  func (s PutResourcePolicyOutput) String() string {
  8171  	return awsutil.Prettify(s)
  8172  }
  8173  
  8174  // GoString returns the string representation.
  8175  //
  8176  // API parameter values that are decorated as "sensitive" in the API will not
  8177  // be included in the string output. The member name will be present, but the
  8178  // value will be replaced with "sensitive".
  8179  func (s PutResourcePolicyOutput) GoString() string {
  8180  	return s.String()
  8181  }
  8182  
  8183  // Unable to locate a resource using the parameters that you provided.
  8184  type ResourceNotFoundException struct {
  8185  	_            struct{}                  `type:"structure"`
  8186  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  8187  
  8188  	Message_ *string `locationName:"Message" type:"string"`
  8189  }
  8190  
  8191  // String returns the string representation.
  8192  //
  8193  // API parameter values that are decorated as "sensitive" in the API will not
  8194  // be included in the string output. The member name will be present, but the
  8195  // value will be replaced with "sensitive".
  8196  func (s ResourceNotFoundException) String() string {
  8197  	return awsutil.Prettify(s)
  8198  }
  8199  
  8200  // GoString returns the string representation.
  8201  //
  8202  // API parameter values that are decorated as "sensitive" in the API will not
  8203  // be included in the string output. The member name will be present, but the
  8204  // value will be replaced with "sensitive".
  8205  func (s ResourceNotFoundException) GoString() string {
  8206  	return s.String()
  8207  }
  8208  
  8209  func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
  8210  	return &ResourceNotFoundException{
  8211  		RespMetadata: v,
  8212  	}
  8213  }
  8214  
  8215  // Code returns the exception type name.
  8216  func (s *ResourceNotFoundException) Code() string {
  8217  	return "ResourceNotFoundException"
  8218  }
  8219  
  8220  // Message returns the exception's message.
  8221  func (s *ResourceNotFoundException) Message() string {
  8222  	if s.Message_ != nil {
  8223  		return *s.Message_
  8224  	}
  8225  	return ""
  8226  }
  8227  
  8228  // OrigErr always returns nil, satisfies awserr.Error interface.
  8229  func (s *ResourceNotFoundException) OrigErr() error {
  8230  	return nil
  8231  }
  8232  
  8233  func (s *ResourceNotFoundException) Error() string {
  8234  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  8235  }
  8236  
  8237  // Status code returns the HTTP status code for the request's response error.
  8238  func (s *ResourceNotFoundException) StatusCode() int {
  8239  	return s.RespMetadata.StatusCode
  8240  }
  8241  
  8242  // RequestID returns the service's response RequestID for request.
  8243  func (s *ResourceNotFoundException) RequestID() string {
  8244  	return s.RespMetadata.RequestID
  8245  }
  8246  
  8247  // Unable to change the resource because your account doesn't own it.
  8248  type ResourceOwnerCheckException struct {
  8249  	_            struct{}                  `type:"structure"`
  8250  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  8251  
  8252  	Message_ *string `locationName:"Message" type:"string"`
  8253  }
  8254  
  8255  // String returns the string representation.
  8256  //
  8257  // API parameter values that are decorated as "sensitive" in the API will not
  8258  // be included in the string output. The member name will be present, but the
  8259  // value will be replaced with "sensitive".
  8260  func (s ResourceOwnerCheckException) String() string {
  8261  	return awsutil.Prettify(s)
  8262  }
  8263  
  8264  // GoString returns the string representation.
  8265  //
  8266  // API parameter values that are decorated as "sensitive" in the API will not
  8267  // be included in the string output. The member name will be present, but the
  8268  // value will be replaced with "sensitive".
  8269  func (s ResourceOwnerCheckException) GoString() string {
  8270  	return s.String()
  8271  }
  8272  
  8273  func newErrorResourceOwnerCheckException(v protocol.ResponseMetadata) error {
  8274  	return &ResourceOwnerCheckException{
  8275  		RespMetadata: v,
  8276  	}
  8277  }
  8278  
  8279  // Code returns the exception type name.
  8280  func (s *ResourceOwnerCheckException) Code() string {
  8281  	return "ResourceOwnerCheckException"
  8282  }
  8283  
  8284  // Message returns the exception's message.
  8285  func (s *ResourceOwnerCheckException) Message() string {
  8286  	if s.Message_ != nil {
  8287  		return *s.Message_
  8288  	}
  8289  	return ""
  8290  }
  8291  
  8292  // OrigErr always returns nil, satisfies awserr.Error interface.
  8293  func (s *ResourceOwnerCheckException) OrigErr() error {
  8294  	return nil
  8295  }
  8296  
  8297  func (s *ResourceOwnerCheckException) Error() string {
  8298  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  8299  }
  8300  
  8301  // Status code returns the HTTP status code for the request's response error.
  8302  func (s *ResourceOwnerCheckException) StatusCode() int {
  8303  	return s.RespMetadata.StatusCode
  8304  }
  8305  
  8306  // RequestID returns the service's response RequestID for request.
  8307  func (s *ResourceOwnerCheckException) RequestID() string {
  8308  	return s.RespMetadata.RequestID
  8309  }
  8310  
  8311  // The inspection criteria and action for a single stateless rule. AWS Network
  8312  // Firewall inspects each packet for the specified matching criteria. When a
  8313  // packet matches the criteria, Network Firewall performs the rule's actions
  8314  // on the packet.
  8315  type RuleDefinition struct {
  8316  	_ struct{} `type:"structure"`
  8317  
  8318  	// The actions to take on a packet that matches one of the stateless rule definition's
  8319  	// match attributes. You must specify a standard action and you can add custom
  8320  	// actions.
  8321  	//
  8322  	// Network Firewall only forwards a packet for stateful rule inspection if you
  8323  	// specify aws:forward_to_sfe for a rule that the packet matches, or if the
  8324  	// packet doesn't match any stateless rule and you specify aws:forward_to_sfe
  8325  	// for the StatelessDefaultActions setting for the FirewallPolicy.
  8326  	//
  8327  	// For every rule, you must specify exactly one of the following standard actions.
  8328  	//
  8329  	//    * aws:pass - Discontinues all inspection of the packet and permits it
  8330  	//    to go to its intended destination.
  8331  	//
  8332  	//    * aws:drop - Discontinues all inspection of the packet and blocks it from
  8333  	//    going to its intended destination.
  8334  	//
  8335  	//    * aws:forward_to_sfe - Discontinues stateless inspection of the packet
  8336  	//    and forwards it to the stateful rule engine for inspection.
  8337  	//
  8338  	// Additionally, you can specify a custom action. To do this, you define a custom
  8339  	// action by name and type, then provide the name you've assigned to the action
  8340  	// in this Actions setting. For information about the options, see CustomAction.
  8341  	//
  8342  	// To provide more than one action in this setting, separate the settings with
  8343  	// a comma. For example, if you have a custom PublishMetrics action that you've
  8344  	// named MyMetricsAction, then you could specify the standard action aws:pass
  8345  	// and the custom action with [“aws:pass”, “MyMetricsAction”].
  8346  	//
  8347  	// Actions is a required field
  8348  	Actions []*string `type:"list" required:"true"`
  8349  
  8350  	// Criteria for Network Firewall to use to inspect an individual packet in stateless
  8351  	// rule inspection. Each match attributes set can include one or more items
  8352  	// such as IP address, CIDR range, port number, protocol, and TCP flags.
  8353  	//
  8354  	// MatchAttributes is a required field
  8355  	MatchAttributes *MatchAttributes `type:"structure" required:"true"`
  8356  }
  8357  
  8358  // String returns the string representation.
  8359  //
  8360  // API parameter values that are decorated as "sensitive" in the API will not
  8361  // be included in the string output. The member name will be present, but the
  8362  // value will be replaced with "sensitive".
  8363  func (s RuleDefinition) String() string {
  8364  	return awsutil.Prettify(s)
  8365  }
  8366  
  8367  // GoString returns the string representation.
  8368  //
  8369  // API parameter values that are decorated as "sensitive" in the API will not
  8370  // be included in the string output. The member name will be present, but the
  8371  // value will be replaced with "sensitive".
  8372  func (s RuleDefinition) GoString() string {
  8373  	return s.String()
  8374  }
  8375  
  8376  // Validate inspects the fields of the type to determine if they are valid.
  8377  func (s *RuleDefinition) Validate() error {
  8378  	invalidParams := request.ErrInvalidParams{Context: "RuleDefinition"}
  8379  	if s.Actions == nil {
  8380  		invalidParams.Add(request.NewErrParamRequired("Actions"))
  8381  	}
  8382  	if s.MatchAttributes == nil {
  8383  		invalidParams.Add(request.NewErrParamRequired("MatchAttributes"))
  8384  	}
  8385  	if s.MatchAttributes != nil {
  8386  		if err := s.MatchAttributes.Validate(); err != nil {
  8387  			invalidParams.AddNested("MatchAttributes", err.(request.ErrInvalidParams))
  8388  		}
  8389  	}
  8390  
  8391  	if invalidParams.Len() > 0 {
  8392  		return invalidParams
  8393  	}
  8394  	return nil
  8395  }
  8396  
  8397  // SetActions sets the Actions field's value.
  8398  func (s *RuleDefinition) SetActions(v []*string) *RuleDefinition {
  8399  	s.Actions = v
  8400  	return s
  8401  }
  8402  
  8403  // SetMatchAttributes sets the MatchAttributes field's value.
  8404  func (s *RuleDefinition) SetMatchAttributes(v *MatchAttributes) *RuleDefinition {
  8405  	s.MatchAttributes = v
  8406  	return s
  8407  }
  8408  
  8409  // The object that defines the rules in a rule group. This, along with RuleGroupResponse,
  8410  // define the rule group. You can retrieve all objects for a rule group by calling
  8411  // DescribeRuleGroup.
  8412  //
  8413  // AWS Network Firewall uses a rule group to inspect and control network traffic.
  8414  // You define stateless rule groups to inspect individual packets and you define
  8415  // stateful rule groups to inspect packets in the context of their traffic flow.
  8416  //
  8417  // To use a rule group, you include it by reference in an Network Firewall firewall
  8418  // policy, then you use the policy in a firewall. You can reference a rule group
  8419  // from more than one firewall policy, and you can use a firewall policy in
  8420  // more than one firewall.
  8421  type RuleGroup struct {
  8422  	_ struct{} `type:"structure"`
  8423  
  8424  	// Settings that are available for use in the rules in the rule group. You can
  8425  	// only use these for stateful rule groups.
  8426  	RuleVariables *RuleVariables `type:"structure"`
  8427  
  8428  	// The stateful rules or stateless rules for the rule group.
  8429  	//
  8430  	// RulesSource is a required field
  8431  	RulesSource *RulesSource `type:"structure" required:"true"`
  8432  
  8433  	// Additional options governing how Network Firewall handles stateful rules.
  8434  	// The policies where you use your stateful rule group must have stateful rule
  8435  	// options settings that are compatible with these settings.
  8436  	StatefulRuleOptions *StatefulRuleOptions `type:"structure"`
  8437  }
  8438  
  8439  // String returns the string representation.
  8440  //
  8441  // API parameter values that are decorated as "sensitive" in the API will not
  8442  // be included in the string output. The member name will be present, but the
  8443  // value will be replaced with "sensitive".
  8444  func (s RuleGroup) String() string {
  8445  	return awsutil.Prettify(s)
  8446  }
  8447  
  8448  // GoString returns the string representation.
  8449  //
  8450  // API parameter values that are decorated as "sensitive" in the API will not
  8451  // be included in the string output. The member name will be present, but the
  8452  // value will be replaced with "sensitive".
  8453  func (s RuleGroup) GoString() string {
  8454  	return s.String()
  8455  }
  8456  
  8457  // Validate inspects the fields of the type to determine if they are valid.
  8458  func (s *RuleGroup) Validate() error {
  8459  	invalidParams := request.ErrInvalidParams{Context: "RuleGroup"}
  8460  	if s.RulesSource == nil {
  8461  		invalidParams.Add(request.NewErrParamRequired("RulesSource"))
  8462  	}
  8463  	if s.RuleVariables != nil {
  8464  		if err := s.RuleVariables.Validate(); err != nil {
  8465  			invalidParams.AddNested("RuleVariables", err.(request.ErrInvalidParams))
  8466  		}
  8467  	}
  8468  	if s.RulesSource != nil {
  8469  		if err := s.RulesSource.Validate(); err != nil {
  8470  			invalidParams.AddNested("RulesSource", err.(request.ErrInvalidParams))
  8471  		}
  8472  	}
  8473  
  8474  	if invalidParams.Len() > 0 {
  8475  		return invalidParams
  8476  	}
  8477  	return nil
  8478  }
  8479  
  8480  // SetRuleVariables sets the RuleVariables field's value.
  8481  func (s *RuleGroup) SetRuleVariables(v *RuleVariables) *RuleGroup {
  8482  	s.RuleVariables = v
  8483  	return s
  8484  }
  8485  
  8486  // SetRulesSource sets the RulesSource field's value.
  8487  func (s *RuleGroup) SetRulesSource(v *RulesSource) *RuleGroup {
  8488  	s.RulesSource = v
  8489  	return s
  8490  }
  8491  
  8492  // SetStatefulRuleOptions sets the StatefulRuleOptions field's value.
  8493  func (s *RuleGroup) SetStatefulRuleOptions(v *StatefulRuleOptions) *RuleGroup {
  8494  	s.StatefulRuleOptions = v
  8495  	return s
  8496  }
  8497  
  8498  // High-level information about a rule group, returned by ListRuleGroups. You
  8499  // can use the information provided in the metadata to retrieve and manage a
  8500  // rule group.
  8501  type RuleGroupMetadata struct {
  8502  	_ struct{} `type:"structure"`
  8503  
  8504  	// The Amazon Resource Name (ARN) of the rule group.
  8505  	Arn *string `min:"1" type:"string"`
  8506  
  8507  	// The descriptive name of the rule group. You can't change the name of a rule
  8508  	// group after you create it.
  8509  	Name *string `min:"1" type:"string"`
  8510  }
  8511  
  8512  // String returns the string representation.
  8513  //
  8514  // API parameter values that are decorated as "sensitive" in the API will not
  8515  // be included in the string output. The member name will be present, but the
  8516  // value will be replaced with "sensitive".
  8517  func (s RuleGroupMetadata) String() string {
  8518  	return awsutil.Prettify(s)
  8519  }
  8520  
  8521  // GoString returns the string representation.
  8522  //
  8523  // API parameter values that are decorated as "sensitive" in the API will not
  8524  // be included in the string output. The member name will be present, but the
  8525  // value will be replaced with "sensitive".
  8526  func (s RuleGroupMetadata) GoString() string {
  8527  	return s.String()
  8528  }
  8529  
  8530  // SetArn sets the Arn field's value.
  8531  func (s *RuleGroupMetadata) SetArn(v string) *RuleGroupMetadata {
  8532  	s.Arn = &v
  8533  	return s
  8534  }
  8535  
  8536  // SetName sets the Name field's value.
  8537  func (s *RuleGroupMetadata) SetName(v string) *RuleGroupMetadata {
  8538  	s.Name = &v
  8539  	return s
  8540  }
  8541  
  8542  // The high-level properties of a rule group. This, along with the RuleGroup,
  8543  // define the rule group. You can retrieve all objects for a rule group by calling
  8544  // DescribeRuleGroup.
  8545  type RuleGroupResponse struct {
  8546  	_ struct{} `type:"structure"`
  8547  
  8548  	// The maximum operating resources that this rule group can use. Rule group
  8549  	// capacity is fixed at creation. When you update a rule group, you are limited
  8550  	// to this capacity. When you reference a rule group from a firewall policy,
  8551  	// Network Firewall reserves this capacity for the rule group.
  8552  	//
  8553  	// You can retrieve the capacity that would be required for a rule group before
  8554  	// you create the rule group by calling CreateRuleGroup with DryRun set to TRUE.
  8555  	Capacity *int64 `type:"integer"`
  8556  
  8557  	// The number of capacity units currently consumed by the rule group rules.
  8558  	ConsumedCapacity *int64 `type:"integer"`
  8559  
  8560  	// A description of the rule group.
  8561  	Description *string `type:"string"`
  8562  
  8563  	// The number of firewall policies that use this rule group.
  8564  	NumberOfAssociations *int64 `type:"integer"`
  8565  
  8566  	// The Amazon Resource Name (ARN) of the rule group.
  8567  	//
  8568  	// If this response is for a create request that had DryRun set to TRUE, then
  8569  	// this ARN is a placeholder that isn't attached to a valid resource.
  8570  	//
  8571  	// RuleGroupArn is a required field
  8572  	RuleGroupArn *string `min:"1" type:"string" required:"true"`
  8573  
  8574  	// The unique identifier for the rule group.
  8575  	//
  8576  	// RuleGroupId is a required field
  8577  	RuleGroupId *string `min:"36" type:"string" required:"true"`
  8578  
  8579  	// The descriptive name of the rule group. You can't change the name of a rule
  8580  	// group after you create it.
  8581  	//
  8582  	// RuleGroupName is a required field
  8583  	RuleGroupName *string `min:"1" type:"string" required:"true"`
  8584  
  8585  	// Detailed information about the current status of a rule group.
  8586  	RuleGroupStatus *string `type:"string" enum:"ResourceStatus"`
  8587  
  8588  	// The key:value pairs to associate with the resource.
  8589  	Tags []*Tag `min:"1" type:"list"`
  8590  
  8591  	// Indicates whether the rule group is stateless or stateful. If the rule group
  8592  	// is stateless, it contains stateless rules. If it is stateful, it contains
  8593  	// stateful rules.
  8594  	Type *string `type:"string" enum:"RuleGroupType"`
  8595  }
  8596  
  8597  // String returns the string representation.
  8598  //
  8599  // API parameter values that are decorated as "sensitive" in the API will not
  8600  // be included in the string output. The member name will be present, but the
  8601  // value will be replaced with "sensitive".
  8602  func (s RuleGroupResponse) String() string {
  8603  	return awsutil.Prettify(s)
  8604  }
  8605  
  8606  // GoString returns the string representation.
  8607  //
  8608  // API parameter values that are decorated as "sensitive" in the API will not
  8609  // be included in the string output. The member name will be present, but the
  8610  // value will be replaced with "sensitive".
  8611  func (s RuleGroupResponse) GoString() string {
  8612  	return s.String()
  8613  }
  8614  
  8615  // SetCapacity sets the Capacity field's value.
  8616  func (s *RuleGroupResponse) SetCapacity(v int64) *RuleGroupResponse {
  8617  	s.Capacity = &v
  8618  	return s
  8619  }
  8620  
  8621  // SetConsumedCapacity sets the ConsumedCapacity field's value.
  8622  func (s *RuleGroupResponse) SetConsumedCapacity(v int64) *RuleGroupResponse {
  8623  	s.ConsumedCapacity = &v
  8624  	return s
  8625  }
  8626  
  8627  // SetDescription sets the Description field's value.
  8628  func (s *RuleGroupResponse) SetDescription(v string) *RuleGroupResponse {
  8629  	s.Description = &v
  8630  	return s
  8631  }
  8632  
  8633  // SetNumberOfAssociations sets the NumberOfAssociations field's value.
  8634  func (s *RuleGroupResponse) SetNumberOfAssociations(v int64) *RuleGroupResponse {
  8635  	s.NumberOfAssociations = &v
  8636  	return s
  8637  }
  8638  
  8639  // SetRuleGroupArn sets the RuleGroupArn field's value.
  8640  func (s *RuleGroupResponse) SetRuleGroupArn(v string) *RuleGroupResponse {
  8641  	s.RuleGroupArn = &v
  8642  	return s
  8643  }
  8644  
  8645  // SetRuleGroupId sets the RuleGroupId field's value.
  8646  func (s *RuleGroupResponse) SetRuleGroupId(v string) *RuleGroupResponse {
  8647  	s.RuleGroupId = &v
  8648  	return s
  8649  }
  8650  
  8651  // SetRuleGroupName sets the RuleGroupName field's value.
  8652  func (s *RuleGroupResponse) SetRuleGroupName(v string) *RuleGroupResponse {
  8653  	s.RuleGroupName = &v
  8654  	return s
  8655  }
  8656  
  8657  // SetRuleGroupStatus sets the RuleGroupStatus field's value.
  8658  func (s *RuleGroupResponse) SetRuleGroupStatus(v string) *RuleGroupResponse {
  8659  	s.RuleGroupStatus = &v
  8660  	return s
  8661  }
  8662  
  8663  // SetTags sets the Tags field's value.
  8664  func (s *RuleGroupResponse) SetTags(v []*Tag) *RuleGroupResponse {
  8665  	s.Tags = v
  8666  	return s
  8667  }
  8668  
  8669  // SetType sets the Type field's value.
  8670  func (s *RuleGroupResponse) SetType(v string) *RuleGroupResponse {
  8671  	s.Type = &v
  8672  	return s
  8673  }
  8674  
  8675  // Additional settings for a stateful rule. This is part of the StatefulRule
  8676  // configuration.
  8677  type RuleOption struct {
  8678  	_ struct{} `type:"structure"`
  8679  
  8680  	// Keyword is a required field
  8681  	Keyword *string `min:"1" type:"string" required:"true"`
  8682  
  8683  	Settings []*string `type:"list"`
  8684  }
  8685  
  8686  // String returns the string representation.
  8687  //
  8688  // API parameter values that are decorated as "sensitive" in the API will not
  8689  // be included in the string output. The member name will be present, but the
  8690  // value will be replaced with "sensitive".
  8691  func (s RuleOption) String() string {
  8692  	return awsutil.Prettify(s)
  8693  }
  8694  
  8695  // GoString returns the string representation.
  8696  //
  8697  // API parameter values that are decorated as "sensitive" in the API will not
  8698  // be included in the string output. The member name will be present, but the
  8699  // value will be replaced with "sensitive".
  8700  func (s RuleOption) GoString() string {
  8701  	return s.String()
  8702  }
  8703  
  8704  // Validate inspects the fields of the type to determine if they are valid.
  8705  func (s *RuleOption) Validate() error {
  8706  	invalidParams := request.ErrInvalidParams{Context: "RuleOption"}
  8707  	if s.Keyword == nil {
  8708  		invalidParams.Add(request.NewErrParamRequired("Keyword"))
  8709  	}
  8710  	if s.Keyword != nil && len(*s.Keyword) < 1 {
  8711  		invalidParams.Add(request.NewErrParamMinLen("Keyword", 1))
  8712  	}
  8713  
  8714  	if invalidParams.Len() > 0 {
  8715  		return invalidParams
  8716  	}
  8717  	return nil
  8718  }
  8719  
  8720  // SetKeyword sets the Keyword field's value.
  8721  func (s *RuleOption) SetKeyword(v string) *RuleOption {
  8722  	s.Keyword = &v
  8723  	return s
  8724  }
  8725  
  8726  // SetSettings sets the Settings field's value.
  8727  func (s *RuleOption) SetSettings(v []*string) *RuleOption {
  8728  	s.Settings = v
  8729  	return s
  8730  }
  8731  
  8732  // Settings that are available for use in the rules in the RuleGroup where this
  8733  // is defined.
  8734  type RuleVariables struct {
  8735  	_ struct{} `type:"structure"`
  8736  
  8737  	// A list of IP addresses and address ranges, in CIDR notation.
  8738  	IPSets map[string]*IPSet `type:"map"`
  8739  
  8740  	// A list of port ranges.
  8741  	PortSets map[string]*PortSet `type:"map"`
  8742  }
  8743  
  8744  // String returns the string representation.
  8745  //
  8746  // API parameter values that are decorated as "sensitive" in the API will not
  8747  // be included in the string output. The member name will be present, but the
  8748  // value will be replaced with "sensitive".
  8749  func (s RuleVariables) String() string {
  8750  	return awsutil.Prettify(s)
  8751  }
  8752  
  8753  // GoString returns the string representation.
  8754  //
  8755  // API parameter values that are decorated as "sensitive" in the API will not
  8756  // be included in the string output. The member name will be present, but the
  8757  // value will be replaced with "sensitive".
  8758  func (s RuleVariables) GoString() string {
  8759  	return s.String()
  8760  }
  8761  
  8762  // Validate inspects the fields of the type to determine if they are valid.
  8763  func (s *RuleVariables) Validate() error {
  8764  	invalidParams := request.ErrInvalidParams{Context: "RuleVariables"}
  8765  	if s.IPSets != nil {
  8766  		for i, v := range s.IPSets {
  8767  			if v == nil {
  8768  				continue
  8769  			}
  8770  			if err := v.Validate(); err != nil {
  8771  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "IPSets", i), err.(request.ErrInvalidParams))
  8772  			}
  8773  		}
  8774  	}
  8775  
  8776  	if invalidParams.Len() > 0 {
  8777  		return invalidParams
  8778  	}
  8779  	return nil
  8780  }
  8781  
  8782  // SetIPSets sets the IPSets field's value.
  8783  func (s *RuleVariables) SetIPSets(v map[string]*IPSet) *RuleVariables {
  8784  	s.IPSets = v
  8785  	return s
  8786  }
  8787  
  8788  // SetPortSets sets the PortSets field's value.
  8789  func (s *RuleVariables) SetPortSets(v map[string]*PortSet) *RuleVariables {
  8790  	s.PortSets = v
  8791  	return s
  8792  }
  8793  
  8794  // The stateless or stateful rules definitions for use in a single rule group.
  8795  // Each rule group requires a single RulesSource. You can use an instance of
  8796  // this for either stateless rules or stateful rules.
  8797  type RulesSource struct {
  8798  	_ struct{} `type:"structure"`
  8799  
  8800  	// Stateful inspection criteria for a domain list rule group.
  8801  	RulesSourceList *RulesSourceList `type:"structure"`
  8802  
  8803  	// Stateful inspection criteria, provided in Suricata compatible intrusion prevention
  8804  	// system (IPS) rules. Suricata is an open-source network IPS that includes
  8805  	// a standard rule-based language for network traffic inspection.
  8806  	//
  8807  	// These rules contain the inspection criteria and the action to take for traffic
  8808  	// that matches the criteria, so this type of rule group doesn't have a separate
  8809  	// action setting.
  8810  	RulesString *string `type:"string"`
  8811  
  8812  	// An array of individual stateful rules inspection criteria to be used together
  8813  	// in a stateful rule group. Use this option to specify simple Suricata rules
  8814  	// with protocol, source and destination, ports, direction, and rule options.
  8815  	// For information about the Suricata Rules format, see Rules Format (https://suricata.readthedocs.io/en/suricata-5.0.0/rules/intro.html#).
  8816  	StatefulRules []*StatefulRule `type:"list"`
  8817  
  8818  	// Stateless inspection criteria to be used in a stateless rule group.
  8819  	StatelessRulesAndCustomActions *StatelessRulesAndCustomActions `type:"structure"`
  8820  }
  8821  
  8822  // String returns the string representation.
  8823  //
  8824  // API parameter values that are decorated as "sensitive" in the API will not
  8825  // be included in the string output. The member name will be present, but the
  8826  // value will be replaced with "sensitive".
  8827  func (s RulesSource) String() string {
  8828  	return awsutil.Prettify(s)
  8829  }
  8830  
  8831  // GoString returns the string representation.
  8832  //
  8833  // API parameter values that are decorated as "sensitive" in the API will not
  8834  // be included in the string output. The member name will be present, but the
  8835  // value will be replaced with "sensitive".
  8836  func (s RulesSource) GoString() string {
  8837  	return s.String()
  8838  }
  8839  
  8840  // Validate inspects the fields of the type to determine if they are valid.
  8841  func (s *RulesSource) Validate() error {
  8842  	invalidParams := request.ErrInvalidParams{Context: "RulesSource"}
  8843  	if s.RulesSourceList != nil {
  8844  		if err := s.RulesSourceList.Validate(); err != nil {
  8845  			invalidParams.AddNested("RulesSourceList", err.(request.ErrInvalidParams))
  8846  		}
  8847  	}
  8848  	if s.StatefulRules != nil {
  8849  		for i, v := range s.StatefulRules {
  8850  			if v == nil {
  8851  				continue
  8852  			}
  8853  			if err := v.Validate(); err != nil {
  8854  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StatefulRules", i), err.(request.ErrInvalidParams))
  8855  			}
  8856  		}
  8857  	}
  8858  	if s.StatelessRulesAndCustomActions != nil {
  8859  		if err := s.StatelessRulesAndCustomActions.Validate(); err != nil {
  8860  			invalidParams.AddNested("StatelessRulesAndCustomActions", err.(request.ErrInvalidParams))
  8861  		}
  8862  	}
  8863  
  8864  	if invalidParams.Len() > 0 {
  8865  		return invalidParams
  8866  	}
  8867  	return nil
  8868  }
  8869  
  8870  // SetRulesSourceList sets the RulesSourceList field's value.
  8871  func (s *RulesSource) SetRulesSourceList(v *RulesSourceList) *RulesSource {
  8872  	s.RulesSourceList = v
  8873  	return s
  8874  }
  8875  
  8876  // SetRulesString sets the RulesString field's value.
  8877  func (s *RulesSource) SetRulesString(v string) *RulesSource {
  8878  	s.RulesString = &v
  8879  	return s
  8880  }
  8881  
  8882  // SetStatefulRules sets the StatefulRules field's value.
  8883  func (s *RulesSource) SetStatefulRules(v []*StatefulRule) *RulesSource {
  8884  	s.StatefulRules = v
  8885  	return s
  8886  }
  8887  
  8888  // SetStatelessRulesAndCustomActions sets the StatelessRulesAndCustomActions field's value.
  8889  func (s *RulesSource) SetStatelessRulesAndCustomActions(v *StatelessRulesAndCustomActions) *RulesSource {
  8890  	s.StatelessRulesAndCustomActions = v
  8891  	return s
  8892  }
  8893  
  8894  // Stateful inspection criteria for a domain list rule group.
  8895  //
  8896  // For HTTPS traffic, domain filtering is SNI-based. It uses the server name
  8897  // indicator extension of the TLS handshake.
  8898  //
  8899  // By default, Network Firewall domain list inspection only includes traffic
  8900  // coming from the VPC where you deploy the firewall. To inspect traffic from
  8901  // IP addresses outside of the deployment VPC, you set the HOME_NET rule variable
  8902  // to include the CIDR range of the deployment VPC plus the other CIDR ranges.
  8903  // For more information, see RuleVariables in this guide and Stateful domain
  8904  // list rule groups in AWS Network Firewall (https://docs.aws.amazon.com/network-firewall/latest/developerguide/stateful-rule-groups-domain-names.html)
  8905  // in the Network Firewall Developer Guide.
  8906  type RulesSourceList struct {
  8907  	_ struct{} `type:"structure"`
  8908  
  8909  	// Whether you want to allow or deny access to the domains in your target list.
  8910  	//
  8911  	// GeneratedRulesType is a required field
  8912  	GeneratedRulesType *string `type:"string" required:"true" enum:"GeneratedRulesType"`
  8913  
  8914  	// The protocols you want to inspect. Specify TLS_SNI for HTTPS. Specify HTTP_HOST
  8915  	// for HTTP. You can specify either or both.
  8916  	//
  8917  	// TargetTypes is a required field
  8918  	TargetTypes []*string `type:"list" required:"true"`
  8919  
  8920  	// The domains that you want to inspect for in your traffic flows. To provide
  8921  	// multiple domains, separate them with commas. Valid domain specifications
  8922  	// are the following:
  8923  	//
  8924  	//    * Explicit names. For example, abc.example.com matches only the domain
  8925  	//    abc.example.com.
  8926  	//
  8927  	//    * Names that use a domain wildcard, which you indicate with an initial
  8928  	//    '.'. For example,.example.com matches example.com and matches all subdomains
  8929  	//    of example.com, such as abc.example.com and www.example.com.
  8930  	//
  8931  	// Targets is a required field
  8932  	Targets []*string `type:"list" required:"true"`
  8933  }
  8934  
  8935  // String returns the string representation.
  8936  //
  8937  // API parameter values that are decorated as "sensitive" in the API will not
  8938  // be included in the string output. The member name will be present, but the
  8939  // value will be replaced with "sensitive".
  8940  func (s RulesSourceList) String() string {
  8941  	return awsutil.Prettify(s)
  8942  }
  8943  
  8944  // GoString returns the string representation.
  8945  //
  8946  // API parameter values that are decorated as "sensitive" in the API will not
  8947  // be included in the string output. The member name will be present, but the
  8948  // value will be replaced with "sensitive".
  8949  func (s RulesSourceList) GoString() string {
  8950  	return s.String()
  8951  }
  8952  
  8953  // Validate inspects the fields of the type to determine if they are valid.
  8954  func (s *RulesSourceList) Validate() error {
  8955  	invalidParams := request.ErrInvalidParams{Context: "RulesSourceList"}
  8956  	if s.GeneratedRulesType == nil {
  8957  		invalidParams.Add(request.NewErrParamRequired("GeneratedRulesType"))
  8958  	}
  8959  	if s.TargetTypes == nil {
  8960  		invalidParams.Add(request.NewErrParamRequired("TargetTypes"))
  8961  	}
  8962  	if s.Targets == nil {
  8963  		invalidParams.Add(request.NewErrParamRequired("Targets"))
  8964  	}
  8965  
  8966  	if invalidParams.Len() > 0 {
  8967  		return invalidParams
  8968  	}
  8969  	return nil
  8970  }
  8971  
  8972  // SetGeneratedRulesType sets the GeneratedRulesType field's value.
  8973  func (s *RulesSourceList) SetGeneratedRulesType(v string) *RulesSourceList {
  8974  	s.GeneratedRulesType = &v
  8975  	return s
  8976  }
  8977  
  8978  // SetTargetTypes sets the TargetTypes field's value.
  8979  func (s *RulesSourceList) SetTargetTypes(v []*string) *RulesSourceList {
  8980  	s.TargetTypes = v
  8981  	return s
  8982  }
  8983  
  8984  // SetTargets sets the Targets field's value.
  8985  func (s *RulesSourceList) SetTargets(v []*string) *RulesSourceList {
  8986  	s.Targets = v
  8987  	return s
  8988  }
  8989  
  8990  // Configuration settings for the handling of the stateful rule groups in a
  8991  // firewall policy.
  8992  type StatefulEngineOptions struct {
  8993  	_ struct{} `type:"structure"`
  8994  
  8995  	// Indicates how to manage the order of stateful rule evaluation for the policy.
  8996  	// By default, Network Firewall leaves the rule evaluation order up to the Suricata
  8997  	// rule processing engine. If you set this to STRICT_ORDER, your rules are evaluated
  8998  	// in the exact order that you provide them in the policy. With strict ordering,
  8999  	// the rule groups are evaluated by order of priority, starting from the lowest
  9000  	// number, and the rules in each rule group are processed in the order that
  9001  	// they're defined.
  9002  	RuleOrder *string `type:"string" enum:"RuleOrder"`
  9003  }
  9004  
  9005  // String returns the string representation.
  9006  //
  9007  // API parameter values that are decorated as "sensitive" in the API will not
  9008  // be included in the string output. The member name will be present, but the
  9009  // value will be replaced with "sensitive".
  9010  func (s StatefulEngineOptions) String() string {
  9011  	return awsutil.Prettify(s)
  9012  }
  9013  
  9014  // GoString returns the string representation.
  9015  //
  9016  // API parameter values that are decorated as "sensitive" in the API will not
  9017  // be included in the string output. The member name will be present, but the
  9018  // value will be replaced with "sensitive".
  9019  func (s StatefulEngineOptions) GoString() string {
  9020  	return s.String()
  9021  }
  9022  
  9023  // SetRuleOrder sets the RuleOrder field's value.
  9024  func (s *StatefulEngineOptions) SetRuleOrder(v string) *StatefulEngineOptions {
  9025  	s.RuleOrder = &v
  9026  	return s
  9027  }
  9028  
  9029  // A single Suricata rules specification, for use in a stateful rule group.
  9030  // Use this option to specify a simple Suricata rule with protocol, source and
  9031  // destination, ports, direction, and rule options. For information about the
  9032  // Suricata Rules format, see Rules Format (https://suricata.readthedocs.io/en/suricata-5.0.0/rules/intro.html#).
  9033  type StatefulRule struct {
  9034  	_ struct{} `type:"structure"`
  9035  
  9036  	// Defines what Network Firewall should do with the packets in a traffic flow
  9037  	// when the flow matches the stateful rule criteria. For all actions, Network
  9038  	// Firewall performs the specified action and discontinues stateful inspection
  9039  	// of the traffic flow.
  9040  	//
  9041  	// The actions for a stateful rule are defined as follows:
  9042  	//
  9043  	//    * PASS - Permits the packets to go to the intended destination.
  9044  	//
  9045  	//    * DROP - Blocks the packets from going to the intended destination and
  9046  	//    sends an alert log message, if alert logging is configured in the Firewall
  9047  	//    LoggingConfiguration.
  9048  	//
  9049  	//    * ALERT - Permits the packets to go to the intended destination and sends
  9050  	//    an alert log message, if alert logging is configured in the Firewall LoggingConfiguration.
  9051  	//    You can use this action to test a rule that you intend to use to drop
  9052  	//    traffic. You can enable the rule with ALERT action, verify in the logs
  9053  	//    that the rule is filtering as you want, then change the action to DROP.
  9054  	//
  9055  	// Action is a required field
  9056  	Action *string `type:"string" required:"true" enum:"StatefulAction"`
  9057  
  9058  	// The stateful inspection criteria for this rule, used to inspect traffic flows.
  9059  	//
  9060  	// Header is a required field
  9061  	Header *Header `type:"structure" required:"true"`
  9062  
  9063  	// Additional options for the rule. These are the Suricata RuleOptions settings.
  9064  	//
  9065  	// RuleOptions is a required field
  9066  	RuleOptions []*RuleOption `type:"list" required:"true"`
  9067  }
  9068  
  9069  // String returns the string representation.
  9070  //
  9071  // API parameter values that are decorated as "sensitive" in the API will not
  9072  // be included in the string output. The member name will be present, but the
  9073  // value will be replaced with "sensitive".
  9074  func (s StatefulRule) String() string {
  9075  	return awsutil.Prettify(s)
  9076  }
  9077  
  9078  // GoString returns the string representation.
  9079  //
  9080  // API parameter values that are decorated as "sensitive" in the API will not
  9081  // be included in the string output. The member name will be present, but the
  9082  // value will be replaced with "sensitive".
  9083  func (s StatefulRule) GoString() string {
  9084  	return s.String()
  9085  }
  9086  
  9087  // Validate inspects the fields of the type to determine if they are valid.
  9088  func (s *StatefulRule) Validate() error {
  9089  	invalidParams := request.ErrInvalidParams{Context: "StatefulRule"}
  9090  	if s.Action == nil {
  9091  		invalidParams.Add(request.NewErrParamRequired("Action"))
  9092  	}
  9093  	if s.Header == nil {
  9094  		invalidParams.Add(request.NewErrParamRequired("Header"))
  9095  	}
  9096  	if s.RuleOptions == nil {
  9097  		invalidParams.Add(request.NewErrParamRequired("RuleOptions"))
  9098  	}
  9099  	if s.Header != nil {
  9100  		if err := s.Header.Validate(); err != nil {
  9101  			invalidParams.AddNested("Header", err.(request.ErrInvalidParams))
  9102  		}
  9103  	}
  9104  	if s.RuleOptions != nil {
  9105  		for i, v := range s.RuleOptions {
  9106  			if v == nil {
  9107  				continue
  9108  			}
  9109  			if err := v.Validate(); err != nil {
  9110  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RuleOptions", i), err.(request.ErrInvalidParams))
  9111  			}
  9112  		}
  9113  	}
  9114  
  9115  	if invalidParams.Len() > 0 {
  9116  		return invalidParams
  9117  	}
  9118  	return nil
  9119  }
  9120  
  9121  // SetAction sets the Action field's value.
  9122  func (s *StatefulRule) SetAction(v string) *StatefulRule {
  9123  	s.Action = &v
  9124  	return s
  9125  }
  9126  
  9127  // SetHeader sets the Header field's value.
  9128  func (s *StatefulRule) SetHeader(v *Header) *StatefulRule {
  9129  	s.Header = v
  9130  	return s
  9131  }
  9132  
  9133  // SetRuleOptions sets the RuleOptions field's value.
  9134  func (s *StatefulRule) SetRuleOptions(v []*RuleOption) *StatefulRule {
  9135  	s.RuleOptions = v
  9136  	return s
  9137  }
  9138  
  9139  // Identifier for a single stateful rule group, used in a firewall policy to
  9140  // refer to a rule group.
  9141  type StatefulRuleGroupReference struct {
  9142  	_ struct{} `type:"structure"`
  9143  
  9144  	// An integer setting that indicates the order in which to run the stateful
  9145  	// rule groups in a single FirewallPolicy. This setting only applies to firewall
  9146  	// policies that specify the STRICT_ORDER rule order in the stateful engine
  9147  	// options settings.
  9148  	//
  9149  	// Network Firewall evalutes each stateful rule group against a packet starting
  9150  	// with the group that has the lowest priority setting. You must ensure that
  9151  	// the priority settings are unique within each policy.
  9152  	//
  9153  	// You can change the priority settings of your rule groups at any time. To
  9154  	// make it easier to insert rule groups later, number them so there's a wide
  9155  	// range in between, for example use 100, 200, and so on.
  9156  	Priority *int64 `min:"1" type:"integer"`
  9157  
  9158  	// The Amazon Resource Name (ARN) of the stateful rule group.
  9159  	//
  9160  	// ResourceArn is a required field
  9161  	ResourceArn *string `min:"1" type:"string" required:"true"`
  9162  }
  9163  
  9164  // String returns the string representation.
  9165  //
  9166  // API parameter values that are decorated as "sensitive" in the API will not
  9167  // be included in the string output. The member name will be present, but the
  9168  // value will be replaced with "sensitive".
  9169  func (s StatefulRuleGroupReference) String() string {
  9170  	return awsutil.Prettify(s)
  9171  }
  9172  
  9173  // GoString returns the string representation.
  9174  //
  9175  // API parameter values that are decorated as "sensitive" in the API will not
  9176  // be included in the string output. The member name will be present, but the
  9177  // value will be replaced with "sensitive".
  9178  func (s StatefulRuleGroupReference) GoString() string {
  9179  	return s.String()
  9180  }
  9181  
  9182  // Validate inspects the fields of the type to determine if they are valid.
  9183  func (s *StatefulRuleGroupReference) Validate() error {
  9184  	invalidParams := request.ErrInvalidParams{Context: "StatefulRuleGroupReference"}
  9185  	if s.Priority != nil && *s.Priority < 1 {
  9186  		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
  9187  	}
  9188  	if s.ResourceArn == nil {
  9189  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9190  	}
  9191  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  9192  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  9193  	}
  9194  
  9195  	if invalidParams.Len() > 0 {
  9196  		return invalidParams
  9197  	}
  9198  	return nil
  9199  }
  9200  
  9201  // SetPriority sets the Priority field's value.
  9202  func (s *StatefulRuleGroupReference) SetPriority(v int64) *StatefulRuleGroupReference {
  9203  	s.Priority = &v
  9204  	return s
  9205  }
  9206  
  9207  // SetResourceArn sets the ResourceArn field's value.
  9208  func (s *StatefulRuleGroupReference) SetResourceArn(v string) *StatefulRuleGroupReference {
  9209  	s.ResourceArn = &v
  9210  	return s
  9211  }
  9212  
  9213  // Additional options governing how Network Firewall handles the rule group.
  9214  // You can only use these for stateful rule groups.
  9215  type StatefulRuleOptions struct {
  9216  	_ struct{} `type:"structure"`
  9217  
  9218  	// Indicates how to manage the order of the rule evaluation for the rule group.
  9219  	// By default, Network Firewall leaves the rule evaluation order up to the Suricata
  9220  	// rule processing engine. If you set this to STRICT_ORDER, your rules are evaluated
  9221  	// in the exact order that they're listed in your Suricata rules string.
  9222  	RuleOrder *string `type:"string" enum:"RuleOrder"`
  9223  }
  9224  
  9225  // String returns the string representation.
  9226  //
  9227  // API parameter values that are decorated as "sensitive" in the API will not
  9228  // be included in the string output. The member name will be present, but the
  9229  // value will be replaced with "sensitive".
  9230  func (s StatefulRuleOptions) String() string {
  9231  	return awsutil.Prettify(s)
  9232  }
  9233  
  9234  // GoString returns the string representation.
  9235  //
  9236  // API parameter values that are decorated as "sensitive" in the API will not
  9237  // be included in the string output. The member name will be present, but the
  9238  // value will be replaced with "sensitive".
  9239  func (s StatefulRuleOptions) GoString() string {
  9240  	return s.String()
  9241  }
  9242  
  9243  // SetRuleOrder sets the RuleOrder field's value.
  9244  func (s *StatefulRuleOptions) SetRuleOrder(v string) *StatefulRuleOptions {
  9245  	s.RuleOrder = &v
  9246  	return s
  9247  }
  9248  
  9249  // A single stateless rule. This is used in StatelessRulesAndCustomActions.
  9250  type StatelessRule struct {
  9251  	_ struct{} `type:"structure"`
  9252  
  9253  	// Indicates the order in which to run this rule relative to all of the rules
  9254  	// that are defined for a stateless rule group. Network Firewall evaluates the
  9255  	// rules in a rule group starting with the lowest priority setting. You must
  9256  	// ensure that the priority settings are unique for the rule group.
  9257  	//
  9258  	// Each stateless rule group uses exactly one StatelessRulesAndCustomActions
  9259  	// object, and each StatelessRulesAndCustomActions contains exactly one StatelessRules
  9260  	// object. To ensure unique priority settings for your rule groups, set unique
  9261  	// priorities for the stateless rules that you define inside any single StatelessRules
  9262  	// object.
  9263  	//
  9264  	// You can change the priority settings of your rules at any time. To make it
  9265  	// easier to insert rules later, number them so there's a wide range in between,
  9266  	// for example use 100, 200, and so on.
  9267  	//
  9268  	// Priority is a required field
  9269  	Priority *int64 `min:"1" type:"integer" required:"true"`
  9270  
  9271  	// Defines the stateless 5-tuple packet inspection criteria and the action to
  9272  	// take on a packet that matches the criteria.
  9273  	//
  9274  	// RuleDefinition is a required field
  9275  	RuleDefinition *RuleDefinition `type:"structure" required:"true"`
  9276  }
  9277  
  9278  // String returns the string representation.
  9279  //
  9280  // API parameter values that are decorated as "sensitive" in the API will not
  9281  // be included in the string output. The member name will be present, but the
  9282  // value will be replaced with "sensitive".
  9283  func (s StatelessRule) String() string {
  9284  	return awsutil.Prettify(s)
  9285  }
  9286  
  9287  // GoString returns the string representation.
  9288  //
  9289  // API parameter values that are decorated as "sensitive" in the API will not
  9290  // be included in the string output. The member name will be present, but the
  9291  // value will be replaced with "sensitive".
  9292  func (s StatelessRule) GoString() string {
  9293  	return s.String()
  9294  }
  9295  
  9296  // Validate inspects the fields of the type to determine if they are valid.
  9297  func (s *StatelessRule) Validate() error {
  9298  	invalidParams := request.ErrInvalidParams{Context: "StatelessRule"}
  9299  	if s.Priority == nil {
  9300  		invalidParams.Add(request.NewErrParamRequired("Priority"))
  9301  	}
  9302  	if s.Priority != nil && *s.Priority < 1 {
  9303  		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
  9304  	}
  9305  	if s.RuleDefinition == nil {
  9306  		invalidParams.Add(request.NewErrParamRequired("RuleDefinition"))
  9307  	}
  9308  	if s.RuleDefinition != nil {
  9309  		if err := s.RuleDefinition.Validate(); err != nil {
  9310  			invalidParams.AddNested("RuleDefinition", err.(request.ErrInvalidParams))
  9311  		}
  9312  	}
  9313  
  9314  	if invalidParams.Len() > 0 {
  9315  		return invalidParams
  9316  	}
  9317  	return nil
  9318  }
  9319  
  9320  // SetPriority sets the Priority field's value.
  9321  func (s *StatelessRule) SetPriority(v int64) *StatelessRule {
  9322  	s.Priority = &v
  9323  	return s
  9324  }
  9325  
  9326  // SetRuleDefinition sets the RuleDefinition field's value.
  9327  func (s *StatelessRule) SetRuleDefinition(v *RuleDefinition) *StatelessRule {
  9328  	s.RuleDefinition = v
  9329  	return s
  9330  }
  9331  
  9332  // Identifier for a single stateless rule group, used in a firewall policy to
  9333  // refer to the rule group.
  9334  type StatelessRuleGroupReference struct {
  9335  	_ struct{} `type:"structure"`
  9336  
  9337  	// An integer setting that indicates the order in which to run the stateless
  9338  	// rule groups in a single FirewallPolicy. Network Firewall applies each stateless
  9339  	// rule group to a packet starting with the group that has the lowest priority
  9340  	// setting. You must ensure that the priority settings are unique within each
  9341  	// policy.
  9342  	//
  9343  	// Priority is a required field
  9344  	Priority *int64 `min:"1" type:"integer" required:"true"`
  9345  
  9346  	// The Amazon Resource Name (ARN) of the stateless rule group.
  9347  	//
  9348  	// ResourceArn is a required field
  9349  	ResourceArn *string `min:"1" type:"string" required:"true"`
  9350  }
  9351  
  9352  // String returns the string representation.
  9353  //
  9354  // API parameter values that are decorated as "sensitive" in the API will not
  9355  // be included in the string output. The member name will be present, but the
  9356  // value will be replaced with "sensitive".
  9357  func (s StatelessRuleGroupReference) String() string {
  9358  	return awsutil.Prettify(s)
  9359  }
  9360  
  9361  // GoString returns the string representation.
  9362  //
  9363  // API parameter values that are decorated as "sensitive" in the API will not
  9364  // be included in the string output. The member name will be present, but the
  9365  // value will be replaced with "sensitive".
  9366  func (s StatelessRuleGroupReference) GoString() string {
  9367  	return s.String()
  9368  }
  9369  
  9370  // Validate inspects the fields of the type to determine if they are valid.
  9371  func (s *StatelessRuleGroupReference) Validate() error {
  9372  	invalidParams := request.ErrInvalidParams{Context: "StatelessRuleGroupReference"}
  9373  	if s.Priority == nil {
  9374  		invalidParams.Add(request.NewErrParamRequired("Priority"))
  9375  	}
  9376  	if s.Priority != nil && *s.Priority < 1 {
  9377  		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
  9378  	}
  9379  	if s.ResourceArn == nil {
  9380  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9381  	}
  9382  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  9383  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  9384  	}
  9385  
  9386  	if invalidParams.Len() > 0 {
  9387  		return invalidParams
  9388  	}
  9389  	return nil
  9390  }
  9391  
  9392  // SetPriority sets the Priority field's value.
  9393  func (s *StatelessRuleGroupReference) SetPriority(v int64) *StatelessRuleGroupReference {
  9394  	s.Priority = &v
  9395  	return s
  9396  }
  9397  
  9398  // SetResourceArn sets the ResourceArn field's value.
  9399  func (s *StatelessRuleGroupReference) SetResourceArn(v string) *StatelessRuleGroupReference {
  9400  	s.ResourceArn = &v
  9401  	return s
  9402  }
  9403  
  9404  // Stateless inspection criteria. Each stateless rule group uses exactly one
  9405  // of these data types to define its stateless rules.
  9406  type StatelessRulesAndCustomActions struct {
  9407  	_ struct{} `type:"structure"`
  9408  
  9409  	// Defines an array of individual custom action definitions that are available
  9410  	// for use by the stateless rules in this StatelessRulesAndCustomActions specification.
  9411  	// You name each custom action that you define, and then you can use it by name
  9412  	// in your StatelessRule RuleDefinition Actions specification.
  9413  	CustomActions []*CustomAction `type:"list"`
  9414  
  9415  	// Defines the set of stateless rules for use in a stateless rule group.
  9416  	//
  9417  	// StatelessRules is a required field
  9418  	StatelessRules []*StatelessRule `type:"list" required:"true"`
  9419  }
  9420  
  9421  // String returns the string representation.
  9422  //
  9423  // API parameter values that are decorated as "sensitive" in the API will not
  9424  // be included in the string output. The member name will be present, but the
  9425  // value will be replaced with "sensitive".
  9426  func (s StatelessRulesAndCustomActions) String() string {
  9427  	return awsutil.Prettify(s)
  9428  }
  9429  
  9430  // GoString returns the string representation.
  9431  //
  9432  // API parameter values that are decorated as "sensitive" in the API will not
  9433  // be included in the string output. The member name will be present, but the
  9434  // value will be replaced with "sensitive".
  9435  func (s StatelessRulesAndCustomActions) GoString() string {
  9436  	return s.String()
  9437  }
  9438  
  9439  // Validate inspects the fields of the type to determine if they are valid.
  9440  func (s *StatelessRulesAndCustomActions) Validate() error {
  9441  	invalidParams := request.ErrInvalidParams{Context: "StatelessRulesAndCustomActions"}
  9442  	if s.StatelessRules == nil {
  9443  		invalidParams.Add(request.NewErrParamRequired("StatelessRules"))
  9444  	}
  9445  	if s.CustomActions != nil {
  9446  		for i, v := range s.CustomActions {
  9447  			if v == nil {
  9448  				continue
  9449  			}
  9450  			if err := v.Validate(); err != nil {
  9451  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CustomActions", i), err.(request.ErrInvalidParams))
  9452  			}
  9453  		}
  9454  	}
  9455  	if s.StatelessRules != nil {
  9456  		for i, v := range s.StatelessRules {
  9457  			if v == nil {
  9458  				continue
  9459  			}
  9460  			if err := v.Validate(); err != nil {
  9461  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StatelessRules", i), err.(request.ErrInvalidParams))
  9462  			}
  9463  		}
  9464  	}
  9465  
  9466  	if invalidParams.Len() > 0 {
  9467  		return invalidParams
  9468  	}
  9469  	return nil
  9470  }
  9471  
  9472  // SetCustomActions sets the CustomActions field's value.
  9473  func (s *StatelessRulesAndCustomActions) SetCustomActions(v []*CustomAction) *StatelessRulesAndCustomActions {
  9474  	s.CustomActions = v
  9475  	return s
  9476  }
  9477  
  9478  // SetStatelessRules sets the StatelessRules field's value.
  9479  func (s *StatelessRulesAndCustomActions) SetStatelessRules(v []*StatelessRule) *StatelessRulesAndCustomActions {
  9480  	s.StatelessRules = v
  9481  	return s
  9482  }
  9483  
  9484  // The ID for a subnet that you want to associate with the firewall. This is
  9485  // used with CreateFirewall and AssociateSubnets. AWS Network Firewall creates
  9486  // an instance of the associated firewall in each subnet that you specify, to
  9487  // filter traffic in the subnet's Availability Zone.
  9488  type SubnetMapping struct {
  9489  	_ struct{} `type:"structure"`
  9490  
  9491  	// The unique identifier for the subnet.
  9492  	//
  9493  	// SubnetId is a required field
  9494  	SubnetId *string `type:"string" required:"true"`
  9495  }
  9496  
  9497  // String returns the string representation.
  9498  //
  9499  // API parameter values that are decorated as "sensitive" in the API will not
  9500  // be included in the string output. The member name will be present, but the
  9501  // value will be replaced with "sensitive".
  9502  func (s SubnetMapping) String() string {
  9503  	return awsutil.Prettify(s)
  9504  }
  9505  
  9506  // GoString returns the string representation.
  9507  //
  9508  // API parameter values that are decorated as "sensitive" in the API will not
  9509  // be included in the string output. The member name will be present, but the
  9510  // value will be replaced with "sensitive".
  9511  func (s SubnetMapping) GoString() string {
  9512  	return s.String()
  9513  }
  9514  
  9515  // Validate inspects the fields of the type to determine if they are valid.
  9516  func (s *SubnetMapping) Validate() error {
  9517  	invalidParams := request.ErrInvalidParams{Context: "SubnetMapping"}
  9518  	if s.SubnetId == nil {
  9519  		invalidParams.Add(request.NewErrParamRequired("SubnetId"))
  9520  	}
  9521  
  9522  	if invalidParams.Len() > 0 {
  9523  		return invalidParams
  9524  	}
  9525  	return nil
  9526  }
  9527  
  9528  // SetSubnetId sets the SubnetId field's value.
  9529  func (s *SubnetMapping) SetSubnetId(v string) *SubnetMapping {
  9530  	s.SubnetId = &v
  9531  	return s
  9532  }
  9533  
  9534  // The status of the firewall endpoint and firewall policy configuration for
  9535  // a single VPC subnet.
  9536  //
  9537  // For each VPC subnet that you associate with a firewall, AWS Network Firewall
  9538  // does the following:
  9539  //
  9540  //    * Instantiates a firewall endpoint in the subnet, ready to take traffic.
  9541  //
  9542  //    * Configures the endpoint with the current firewall policy settings, to
  9543  //    provide the filtering behavior for the endpoint.
  9544  //
  9545  // When you update a firewall, for example to add a subnet association or change
  9546  // a rule group in the firewall policy, the affected sync states reflect out-of-sync
  9547  // or not ready status until the changes are complete.
  9548  type SyncState struct {
  9549  	_ struct{} `type:"structure"`
  9550  
  9551  	// The attachment status of the firewall's association with a single VPC subnet.
  9552  	// For each configured subnet, Network Firewall creates the attachment by instantiating
  9553  	// the firewall endpoint in the subnet so that it's ready to take traffic. This
  9554  	// is part of the FirewallStatus.
  9555  	Attachment *Attachment `type:"structure"`
  9556  
  9557  	// The configuration status of the firewall endpoint in a single VPC subnet.
  9558  	// Network Firewall provides each endpoint with the rules that are configured
  9559  	// in the firewall policy. Each time you add a subnet or modify the associated
  9560  	// firewall policy, Network Firewall synchronizes the rules in the endpoint,
  9561  	// so it can properly filter network traffic. This is part of the FirewallStatus.
  9562  	Config map[string]*PerObjectStatus `type:"map"`
  9563  }
  9564  
  9565  // String returns the string representation.
  9566  //
  9567  // API parameter values that are decorated as "sensitive" in the API will not
  9568  // be included in the string output. The member name will be present, but the
  9569  // value will be replaced with "sensitive".
  9570  func (s SyncState) String() string {
  9571  	return awsutil.Prettify(s)
  9572  }
  9573  
  9574  // GoString returns the string representation.
  9575  //
  9576  // API parameter values that are decorated as "sensitive" in the API will not
  9577  // be included in the string output. The member name will be present, but the
  9578  // value will be replaced with "sensitive".
  9579  func (s SyncState) GoString() string {
  9580  	return s.String()
  9581  }
  9582  
  9583  // SetAttachment sets the Attachment field's value.
  9584  func (s *SyncState) SetAttachment(v *Attachment) *SyncState {
  9585  	s.Attachment = v
  9586  	return s
  9587  }
  9588  
  9589  // SetConfig sets the Config field's value.
  9590  func (s *SyncState) SetConfig(v map[string]*PerObjectStatus) *SyncState {
  9591  	s.Config = v
  9592  	return s
  9593  }
  9594  
  9595  // TCP flags and masks to inspect packets for, used in stateless rules MatchAttributes
  9596  // settings.
  9597  type TCPFlagField struct {
  9598  	_ struct{} `type:"structure"`
  9599  
  9600  	// Used in conjunction with the Masks setting to define the flags that must
  9601  	// be set and flags that must not be set in order for the packet to match. This
  9602  	// setting can only specify values that are also specified in the Masks setting.
  9603  	//
  9604  	// For the flags that are specified in the masks setting, the following must
  9605  	// be true for the packet to match:
  9606  	//
  9607  	//    * The ones that are set in this flags setting must be set in the packet.
  9608  	//
  9609  	//    * The ones that are not set in this flags setting must also not be set
  9610  	//    in the packet.
  9611  	//
  9612  	// Flags is a required field
  9613  	Flags []*string `type:"list" required:"true"`
  9614  
  9615  	// The set of flags to consider in the inspection. To inspect all flags in the
  9616  	// valid values list, leave this with no setting.
  9617  	Masks []*string `type:"list"`
  9618  }
  9619  
  9620  // String returns the string representation.
  9621  //
  9622  // API parameter values that are decorated as "sensitive" in the API will not
  9623  // be included in the string output. The member name will be present, but the
  9624  // value will be replaced with "sensitive".
  9625  func (s TCPFlagField) String() string {
  9626  	return awsutil.Prettify(s)
  9627  }
  9628  
  9629  // GoString returns the string representation.
  9630  //
  9631  // API parameter values that are decorated as "sensitive" in the API will not
  9632  // be included in the string output. The member name will be present, but the
  9633  // value will be replaced with "sensitive".
  9634  func (s TCPFlagField) GoString() string {
  9635  	return s.String()
  9636  }
  9637  
  9638  // Validate inspects the fields of the type to determine if they are valid.
  9639  func (s *TCPFlagField) Validate() error {
  9640  	invalidParams := request.ErrInvalidParams{Context: "TCPFlagField"}
  9641  	if s.Flags == nil {
  9642  		invalidParams.Add(request.NewErrParamRequired("Flags"))
  9643  	}
  9644  
  9645  	if invalidParams.Len() > 0 {
  9646  		return invalidParams
  9647  	}
  9648  	return nil
  9649  }
  9650  
  9651  // SetFlags sets the Flags field's value.
  9652  func (s *TCPFlagField) SetFlags(v []*string) *TCPFlagField {
  9653  	s.Flags = v
  9654  	return s
  9655  }
  9656  
  9657  // SetMasks sets the Masks field's value.
  9658  func (s *TCPFlagField) SetMasks(v []*string) *TCPFlagField {
  9659  	s.Masks = v
  9660  	return s
  9661  }
  9662  
  9663  // A key:value pair associated with an AWS resource. The key:value pair can
  9664  // be anything you define. Typically, the tag key represents a category (such
  9665  // as "environment") and the tag value represents a specific value within that
  9666  // category (such as "test," "development," or "production"). You can add up
  9667  // to 50 tags to each AWS resource.
  9668  type Tag struct {
  9669  	_ struct{} `type:"structure"`
  9670  
  9671  	// The part of the key:value pair that defines a tag. You can use a tag key
  9672  	// to describe a category of information, such as "customer." Tag keys are case-sensitive.
  9673  	//
  9674  	// Key is a required field
  9675  	Key *string `min:"1" type:"string" required:"true"`
  9676  
  9677  	// The part of the key:value pair that defines a tag. You can use a tag value
  9678  	// to describe a specific value within a category, such as "companyA" or "companyB."
  9679  	// Tag values are case-sensitive.
  9680  	//
  9681  	// Value is a required field
  9682  	Value *string `type:"string" required:"true"`
  9683  }
  9684  
  9685  // String returns the string representation.
  9686  //
  9687  // API parameter values that are decorated as "sensitive" in the API will not
  9688  // be included in the string output. The member name will be present, but the
  9689  // value will be replaced with "sensitive".
  9690  func (s Tag) String() string {
  9691  	return awsutil.Prettify(s)
  9692  }
  9693  
  9694  // GoString returns the string representation.
  9695  //
  9696  // API parameter values that are decorated as "sensitive" in the API will not
  9697  // be included in the string output. The member name will be present, but the
  9698  // value will be replaced with "sensitive".
  9699  func (s Tag) GoString() string {
  9700  	return s.String()
  9701  }
  9702  
  9703  // Validate inspects the fields of the type to determine if they are valid.
  9704  func (s *Tag) Validate() error {
  9705  	invalidParams := request.ErrInvalidParams{Context: "Tag"}
  9706  	if s.Key == nil {
  9707  		invalidParams.Add(request.NewErrParamRequired("Key"))
  9708  	}
  9709  	if s.Key != nil && len(*s.Key) < 1 {
  9710  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
  9711  	}
  9712  	if s.Value == nil {
  9713  		invalidParams.Add(request.NewErrParamRequired("Value"))
  9714  	}
  9715  
  9716  	if invalidParams.Len() > 0 {
  9717  		return invalidParams
  9718  	}
  9719  	return nil
  9720  }
  9721  
  9722  // SetKey sets the Key field's value.
  9723  func (s *Tag) SetKey(v string) *Tag {
  9724  	s.Key = &v
  9725  	return s
  9726  }
  9727  
  9728  // SetValue sets the Value field's value.
  9729  func (s *Tag) SetValue(v string) *Tag {
  9730  	s.Value = &v
  9731  	return s
  9732  }
  9733  
  9734  type TagResourceInput struct {
  9735  	_ struct{} `type:"structure"`
  9736  
  9737  	// The Amazon Resource Name (ARN) of the resource.
  9738  	//
  9739  	// ResourceArn is a required field
  9740  	ResourceArn *string `min:"1" type:"string" required:"true"`
  9741  
  9742  	// Tags is a required field
  9743  	Tags []*Tag `min:"1" type:"list" required:"true"`
  9744  }
  9745  
  9746  // String returns the string representation.
  9747  //
  9748  // API parameter values that are decorated as "sensitive" in the API will not
  9749  // be included in the string output. The member name will be present, but the
  9750  // value will be replaced with "sensitive".
  9751  func (s TagResourceInput) String() string {
  9752  	return awsutil.Prettify(s)
  9753  }
  9754  
  9755  // GoString returns the string representation.
  9756  //
  9757  // API parameter values that are decorated as "sensitive" in the API will not
  9758  // be included in the string output. The member name will be present, but the
  9759  // value will be replaced with "sensitive".
  9760  func (s TagResourceInput) GoString() string {
  9761  	return s.String()
  9762  }
  9763  
  9764  // Validate inspects the fields of the type to determine if they are valid.
  9765  func (s *TagResourceInput) Validate() error {
  9766  	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
  9767  	if s.ResourceArn == nil {
  9768  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9769  	}
  9770  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  9771  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  9772  	}
  9773  	if s.Tags == nil {
  9774  		invalidParams.Add(request.NewErrParamRequired("Tags"))
  9775  	}
  9776  	if s.Tags != nil && len(s.Tags) < 1 {
  9777  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  9778  	}
  9779  	if s.Tags != nil {
  9780  		for i, v := range s.Tags {
  9781  			if v == nil {
  9782  				continue
  9783  			}
  9784  			if err := v.Validate(); err != nil {
  9785  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  9786  			}
  9787  		}
  9788  	}
  9789  
  9790  	if invalidParams.Len() > 0 {
  9791  		return invalidParams
  9792  	}
  9793  	return nil
  9794  }
  9795  
  9796  // SetResourceArn sets the ResourceArn field's value.
  9797  func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
  9798  	s.ResourceArn = &v
  9799  	return s
  9800  }
  9801  
  9802  // SetTags sets the Tags field's value.
  9803  func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {
  9804  	s.Tags = v
  9805  	return s
  9806  }
  9807  
  9808  type TagResourceOutput struct {
  9809  	_ struct{} `type:"structure"`
  9810  }
  9811  
  9812  // String returns the string representation.
  9813  //
  9814  // API parameter values that are decorated as "sensitive" in the API will not
  9815  // be included in the string output. The member name will be present, but the
  9816  // value will be replaced with "sensitive".
  9817  func (s TagResourceOutput) String() string {
  9818  	return awsutil.Prettify(s)
  9819  }
  9820  
  9821  // GoString returns the string representation.
  9822  //
  9823  // API parameter values that are decorated as "sensitive" in the API will not
  9824  // be included in the string output. The member name will be present, but the
  9825  // value will be replaced with "sensitive".
  9826  func (s TagResourceOutput) GoString() string {
  9827  	return s.String()
  9828  }
  9829  
  9830  // Unable to process the request due to throttling limitations.
  9831  type ThrottlingException struct {
  9832  	_            struct{}                  `type:"structure"`
  9833  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  9834  
  9835  	Message_ *string `locationName:"Message" type:"string"`
  9836  }
  9837  
  9838  // String returns the string representation.
  9839  //
  9840  // API parameter values that are decorated as "sensitive" in the API will not
  9841  // be included in the string output. The member name will be present, but the
  9842  // value will be replaced with "sensitive".
  9843  func (s ThrottlingException) String() string {
  9844  	return awsutil.Prettify(s)
  9845  }
  9846  
  9847  // GoString returns the string representation.
  9848  //
  9849  // API parameter values that are decorated as "sensitive" in the API will not
  9850  // be included in the string output. The member name will be present, but the
  9851  // value will be replaced with "sensitive".
  9852  func (s ThrottlingException) GoString() string {
  9853  	return s.String()
  9854  }
  9855  
  9856  func newErrorThrottlingException(v protocol.ResponseMetadata) error {
  9857  	return &ThrottlingException{
  9858  		RespMetadata: v,
  9859  	}
  9860  }
  9861  
  9862  // Code returns the exception type name.
  9863  func (s *ThrottlingException) Code() string {
  9864  	return "ThrottlingException"
  9865  }
  9866  
  9867  // Message returns the exception's message.
  9868  func (s *ThrottlingException) Message() string {
  9869  	if s.Message_ != nil {
  9870  		return *s.Message_
  9871  	}
  9872  	return ""
  9873  }
  9874  
  9875  // OrigErr always returns nil, satisfies awserr.Error interface.
  9876  func (s *ThrottlingException) OrigErr() error {
  9877  	return nil
  9878  }
  9879  
  9880  func (s *ThrottlingException) Error() string {
  9881  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  9882  }
  9883  
  9884  // Status code returns the HTTP status code for the request's response error.
  9885  func (s *ThrottlingException) StatusCode() int {
  9886  	return s.RespMetadata.StatusCode
  9887  }
  9888  
  9889  // RequestID returns the service's response RequestID for request.
  9890  func (s *ThrottlingException) RequestID() string {
  9891  	return s.RespMetadata.RequestID
  9892  }
  9893  
  9894  // The operation you requested isn't supported by Network Firewall.
  9895  type UnsupportedOperationException struct {
  9896  	_            struct{}                  `type:"structure"`
  9897  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  9898  
  9899  	Message_ *string `locationName:"Message" type:"string"`
  9900  }
  9901  
  9902  // String returns the string representation.
  9903  //
  9904  // API parameter values that are decorated as "sensitive" in the API will not
  9905  // be included in the string output. The member name will be present, but the
  9906  // value will be replaced with "sensitive".
  9907  func (s UnsupportedOperationException) String() string {
  9908  	return awsutil.Prettify(s)
  9909  }
  9910  
  9911  // GoString returns the string representation.
  9912  //
  9913  // API parameter values that are decorated as "sensitive" in the API will not
  9914  // be included in the string output. The member name will be present, but the
  9915  // value will be replaced with "sensitive".
  9916  func (s UnsupportedOperationException) GoString() string {
  9917  	return s.String()
  9918  }
  9919  
  9920  func newErrorUnsupportedOperationException(v protocol.ResponseMetadata) error {
  9921  	return &UnsupportedOperationException{
  9922  		RespMetadata: v,
  9923  	}
  9924  }
  9925  
  9926  // Code returns the exception type name.
  9927  func (s *UnsupportedOperationException) Code() string {
  9928  	return "UnsupportedOperationException"
  9929  }
  9930  
  9931  // Message returns the exception's message.
  9932  func (s *UnsupportedOperationException) Message() string {
  9933  	if s.Message_ != nil {
  9934  		return *s.Message_
  9935  	}
  9936  	return ""
  9937  }
  9938  
  9939  // OrigErr always returns nil, satisfies awserr.Error interface.
  9940  func (s *UnsupportedOperationException) OrigErr() error {
  9941  	return nil
  9942  }
  9943  
  9944  func (s *UnsupportedOperationException) Error() string {
  9945  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  9946  }
  9947  
  9948  // Status code returns the HTTP status code for the request's response error.
  9949  func (s *UnsupportedOperationException) StatusCode() int {
  9950  	return s.RespMetadata.StatusCode
  9951  }
  9952  
  9953  // RequestID returns the service's response RequestID for request.
  9954  func (s *UnsupportedOperationException) RequestID() string {
  9955  	return s.RespMetadata.RequestID
  9956  }
  9957  
  9958  type UntagResourceInput struct {
  9959  	_ struct{} `type:"structure"`
  9960  
  9961  	// The Amazon Resource Name (ARN) of the resource.
  9962  	//
  9963  	// ResourceArn is a required field
  9964  	ResourceArn *string `min:"1" type:"string" required:"true"`
  9965  
  9966  	// TagKeys is a required field
  9967  	TagKeys []*string `min:"1" type:"list" required:"true"`
  9968  }
  9969  
  9970  // String returns the string representation.
  9971  //
  9972  // API parameter values that are decorated as "sensitive" in the API will not
  9973  // be included in the string output. The member name will be present, but the
  9974  // value will be replaced with "sensitive".
  9975  func (s UntagResourceInput) String() string {
  9976  	return awsutil.Prettify(s)
  9977  }
  9978  
  9979  // GoString returns the string representation.
  9980  //
  9981  // API parameter values that are decorated as "sensitive" in the API will not
  9982  // be included in the string output. The member name will be present, but the
  9983  // value will be replaced with "sensitive".
  9984  func (s UntagResourceInput) GoString() string {
  9985  	return s.String()
  9986  }
  9987  
  9988  // Validate inspects the fields of the type to determine if they are valid.
  9989  func (s *UntagResourceInput) Validate() error {
  9990  	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
  9991  	if s.ResourceArn == nil {
  9992  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9993  	}
  9994  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  9995  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  9996  	}
  9997  	if s.TagKeys == nil {
  9998  		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
  9999  	}
 10000  	if s.TagKeys != nil && len(s.TagKeys) < 1 {
 10001  		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
 10002  	}
 10003  
 10004  	if invalidParams.Len() > 0 {
 10005  		return invalidParams
 10006  	}
 10007  	return nil
 10008  }
 10009  
 10010  // SetResourceArn sets the ResourceArn field's value.
 10011  func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
 10012  	s.ResourceArn = &v
 10013  	return s
 10014  }
 10015  
 10016  // SetTagKeys sets the TagKeys field's value.
 10017  func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
 10018  	s.TagKeys = v
 10019  	return s
 10020  }
 10021  
 10022  type UntagResourceOutput struct {
 10023  	_ struct{} `type:"structure"`
 10024  }
 10025  
 10026  // String returns the string representation.
 10027  //
 10028  // API parameter values that are decorated as "sensitive" in the API will not
 10029  // be included in the string output. The member name will be present, but the
 10030  // value will be replaced with "sensitive".
 10031  func (s UntagResourceOutput) String() string {
 10032  	return awsutil.Prettify(s)
 10033  }
 10034  
 10035  // GoString returns the string representation.
 10036  //
 10037  // API parameter values that are decorated as "sensitive" in the API will not
 10038  // be included in the string output. The member name will be present, but the
 10039  // value will be replaced with "sensitive".
 10040  func (s UntagResourceOutput) GoString() string {
 10041  	return s.String()
 10042  }
 10043  
 10044  type UpdateFirewallDeleteProtectionInput struct {
 10045  	_ struct{} `type:"structure"`
 10046  
 10047  	// A flag indicating whether it is possible to delete the firewall. A setting
 10048  	// of TRUE indicates that the firewall is protected against deletion. Use this
 10049  	// setting to protect against accidentally deleting a firewall that is in use.
 10050  	// When you create a firewall, the operation initializes this flag to TRUE.
 10051  	//
 10052  	// DeleteProtection is a required field
 10053  	DeleteProtection *bool `type:"boolean" required:"true"`
 10054  
 10055  	// The Amazon Resource Name (ARN) of the firewall.
 10056  	//
 10057  	// You must specify the ARN or the name, and you can specify both.
 10058  	FirewallArn *string `min:"1" type:"string"`
 10059  
 10060  	// The descriptive name of the firewall. You can't change the name of a firewall
 10061  	// after you create it.
 10062  	//
 10063  	// You must specify the ARN or the name, and you can specify both.
 10064  	FirewallName *string `min:"1" type:"string"`
 10065  
 10066  	// An optional token that you can use for optimistic locking. Network Firewall
 10067  	// returns a token to your requests that access the firewall. The token marks
 10068  	// the state of the firewall resource at the time of the request.
 10069  	//
 10070  	// To make an unconditional change to the firewall, omit the token in your update
 10071  	// request. Without the token, Network Firewall performs your updates regardless
 10072  	// of whether the firewall has changed since you last retrieved it.
 10073  	//
 10074  	// To make a conditional change to the firewall, provide the token in your update
 10075  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 10076  	// changed since you last retrieved it. If it has changed, the operation fails
 10077  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 10078  	// to get a current copy of it with a new token. Reapply your changes as needed,
 10079  	// then try the operation again using the new token.
 10080  	UpdateToken *string `min:"1" type:"string"`
 10081  }
 10082  
 10083  // String returns the string representation.
 10084  //
 10085  // API parameter values that are decorated as "sensitive" in the API will not
 10086  // be included in the string output. The member name will be present, but the
 10087  // value will be replaced with "sensitive".
 10088  func (s UpdateFirewallDeleteProtectionInput) String() string {
 10089  	return awsutil.Prettify(s)
 10090  }
 10091  
 10092  // GoString returns the string representation.
 10093  //
 10094  // API parameter values that are decorated as "sensitive" in the API will not
 10095  // be included in the string output. The member name will be present, but the
 10096  // value will be replaced with "sensitive".
 10097  func (s UpdateFirewallDeleteProtectionInput) GoString() string {
 10098  	return s.String()
 10099  }
 10100  
 10101  // Validate inspects the fields of the type to determine if they are valid.
 10102  func (s *UpdateFirewallDeleteProtectionInput) Validate() error {
 10103  	invalidParams := request.ErrInvalidParams{Context: "UpdateFirewallDeleteProtectionInput"}
 10104  	if s.DeleteProtection == nil {
 10105  		invalidParams.Add(request.NewErrParamRequired("DeleteProtection"))
 10106  	}
 10107  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
 10108  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
 10109  	}
 10110  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
 10111  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
 10112  	}
 10113  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
 10114  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
 10115  	}
 10116  
 10117  	if invalidParams.Len() > 0 {
 10118  		return invalidParams
 10119  	}
 10120  	return nil
 10121  }
 10122  
 10123  // SetDeleteProtection sets the DeleteProtection field's value.
 10124  func (s *UpdateFirewallDeleteProtectionInput) SetDeleteProtection(v bool) *UpdateFirewallDeleteProtectionInput {
 10125  	s.DeleteProtection = &v
 10126  	return s
 10127  }
 10128  
 10129  // SetFirewallArn sets the FirewallArn field's value.
 10130  func (s *UpdateFirewallDeleteProtectionInput) SetFirewallArn(v string) *UpdateFirewallDeleteProtectionInput {
 10131  	s.FirewallArn = &v
 10132  	return s
 10133  }
 10134  
 10135  // SetFirewallName sets the FirewallName field's value.
 10136  func (s *UpdateFirewallDeleteProtectionInput) SetFirewallName(v string) *UpdateFirewallDeleteProtectionInput {
 10137  	s.FirewallName = &v
 10138  	return s
 10139  }
 10140  
 10141  // SetUpdateToken sets the UpdateToken field's value.
 10142  func (s *UpdateFirewallDeleteProtectionInput) SetUpdateToken(v string) *UpdateFirewallDeleteProtectionInput {
 10143  	s.UpdateToken = &v
 10144  	return s
 10145  }
 10146  
 10147  type UpdateFirewallDeleteProtectionOutput struct {
 10148  	_ struct{} `type:"structure"`
 10149  
 10150  	DeleteProtection *bool `type:"boolean"`
 10151  
 10152  	// The Amazon Resource Name (ARN) of the firewall.
 10153  	FirewallArn *string `min:"1" type:"string"`
 10154  
 10155  	// The descriptive name of the firewall. You can't change the name of a firewall
 10156  	// after you create it.
 10157  	FirewallName *string `min:"1" type:"string"`
 10158  
 10159  	// An optional token that you can use for optimistic locking. Network Firewall
 10160  	// returns a token to your requests that access the firewall. The token marks
 10161  	// the state of the firewall resource at the time of the request.
 10162  	//
 10163  	// To make an unconditional change to the firewall, omit the token in your update
 10164  	// request. Without the token, Network Firewall performs your updates regardless
 10165  	// of whether the firewall has changed since you last retrieved it.
 10166  	//
 10167  	// To make a conditional change to the firewall, provide the token in your update
 10168  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 10169  	// changed since you last retrieved it. If it has changed, the operation fails
 10170  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 10171  	// to get a current copy of it with a new token. Reapply your changes as needed,
 10172  	// then try the operation again using the new token.
 10173  	UpdateToken *string `min:"1" type:"string"`
 10174  }
 10175  
 10176  // String returns the string representation.
 10177  //
 10178  // API parameter values that are decorated as "sensitive" in the API will not
 10179  // be included in the string output. The member name will be present, but the
 10180  // value will be replaced with "sensitive".
 10181  func (s UpdateFirewallDeleteProtectionOutput) String() string {
 10182  	return awsutil.Prettify(s)
 10183  }
 10184  
 10185  // GoString returns the string representation.
 10186  //
 10187  // API parameter values that are decorated as "sensitive" in the API will not
 10188  // be included in the string output. The member name will be present, but the
 10189  // value will be replaced with "sensitive".
 10190  func (s UpdateFirewallDeleteProtectionOutput) GoString() string {
 10191  	return s.String()
 10192  }
 10193  
 10194  // SetDeleteProtection sets the DeleteProtection field's value.
 10195  func (s *UpdateFirewallDeleteProtectionOutput) SetDeleteProtection(v bool) *UpdateFirewallDeleteProtectionOutput {
 10196  	s.DeleteProtection = &v
 10197  	return s
 10198  }
 10199  
 10200  // SetFirewallArn sets the FirewallArn field's value.
 10201  func (s *UpdateFirewallDeleteProtectionOutput) SetFirewallArn(v string) *UpdateFirewallDeleteProtectionOutput {
 10202  	s.FirewallArn = &v
 10203  	return s
 10204  }
 10205  
 10206  // SetFirewallName sets the FirewallName field's value.
 10207  func (s *UpdateFirewallDeleteProtectionOutput) SetFirewallName(v string) *UpdateFirewallDeleteProtectionOutput {
 10208  	s.FirewallName = &v
 10209  	return s
 10210  }
 10211  
 10212  // SetUpdateToken sets the UpdateToken field's value.
 10213  func (s *UpdateFirewallDeleteProtectionOutput) SetUpdateToken(v string) *UpdateFirewallDeleteProtectionOutput {
 10214  	s.UpdateToken = &v
 10215  	return s
 10216  }
 10217  
 10218  type UpdateFirewallDescriptionInput struct {
 10219  	_ struct{} `type:"structure"`
 10220  
 10221  	// The new description for the firewall. If you omit this setting, Network Firewall
 10222  	// removes the description for the firewall.
 10223  	Description *string `type:"string"`
 10224  
 10225  	// The Amazon Resource Name (ARN) of the firewall.
 10226  	//
 10227  	// You must specify the ARN or the name, and you can specify both.
 10228  	FirewallArn *string `min:"1" type:"string"`
 10229  
 10230  	// The descriptive name of the firewall. You can't change the name of a firewall
 10231  	// after you create it.
 10232  	//
 10233  	// You must specify the ARN or the name, and you can specify both.
 10234  	FirewallName *string `min:"1" type:"string"`
 10235  
 10236  	// An optional token that you can use for optimistic locking. Network Firewall
 10237  	// returns a token to your requests that access the firewall. The token marks
 10238  	// the state of the firewall resource at the time of the request.
 10239  	//
 10240  	// To make an unconditional change to the firewall, omit the token in your update
 10241  	// request. Without the token, Network Firewall performs your updates regardless
 10242  	// of whether the firewall has changed since you last retrieved it.
 10243  	//
 10244  	// To make a conditional change to the firewall, provide the token in your update
 10245  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 10246  	// changed since you last retrieved it. If it has changed, the operation fails
 10247  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 10248  	// to get a current copy of it with a new token. Reapply your changes as needed,
 10249  	// then try the operation again using the new token.
 10250  	UpdateToken *string `min:"1" type:"string"`
 10251  }
 10252  
 10253  // String returns the string representation.
 10254  //
 10255  // API parameter values that are decorated as "sensitive" in the API will not
 10256  // be included in the string output. The member name will be present, but the
 10257  // value will be replaced with "sensitive".
 10258  func (s UpdateFirewallDescriptionInput) String() string {
 10259  	return awsutil.Prettify(s)
 10260  }
 10261  
 10262  // GoString returns the string representation.
 10263  //
 10264  // API parameter values that are decorated as "sensitive" in the API will not
 10265  // be included in the string output. The member name will be present, but the
 10266  // value will be replaced with "sensitive".
 10267  func (s UpdateFirewallDescriptionInput) GoString() string {
 10268  	return s.String()
 10269  }
 10270  
 10271  // Validate inspects the fields of the type to determine if they are valid.
 10272  func (s *UpdateFirewallDescriptionInput) Validate() error {
 10273  	invalidParams := request.ErrInvalidParams{Context: "UpdateFirewallDescriptionInput"}
 10274  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
 10275  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
 10276  	}
 10277  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
 10278  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
 10279  	}
 10280  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
 10281  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
 10282  	}
 10283  
 10284  	if invalidParams.Len() > 0 {
 10285  		return invalidParams
 10286  	}
 10287  	return nil
 10288  }
 10289  
 10290  // SetDescription sets the Description field's value.
 10291  func (s *UpdateFirewallDescriptionInput) SetDescription(v string) *UpdateFirewallDescriptionInput {
 10292  	s.Description = &v
 10293  	return s
 10294  }
 10295  
 10296  // SetFirewallArn sets the FirewallArn field's value.
 10297  func (s *UpdateFirewallDescriptionInput) SetFirewallArn(v string) *UpdateFirewallDescriptionInput {
 10298  	s.FirewallArn = &v
 10299  	return s
 10300  }
 10301  
 10302  // SetFirewallName sets the FirewallName field's value.
 10303  func (s *UpdateFirewallDescriptionInput) SetFirewallName(v string) *UpdateFirewallDescriptionInput {
 10304  	s.FirewallName = &v
 10305  	return s
 10306  }
 10307  
 10308  // SetUpdateToken sets the UpdateToken field's value.
 10309  func (s *UpdateFirewallDescriptionInput) SetUpdateToken(v string) *UpdateFirewallDescriptionInput {
 10310  	s.UpdateToken = &v
 10311  	return s
 10312  }
 10313  
 10314  type UpdateFirewallDescriptionOutput struct {
 10315  	_ struct{} `type:"structure"`
 10316  
 10317  	// A description of the firewall.
 10318  	Description *string `type:"string"`
 10319  
 10320  	// The Amazon Resource Name (ARN) of the firewall.
 10321  	FirewallArn *string `min:"1" type:"string"`
 10322  
 10323  	// The descriptive name of the firewall. You can't change the name of a firewall
 10324  	// after you create it.
 10325  	FirewallName *string `min:"1" type:"string"`
 10326  
 10327  	// An optional token that you can use for optimistic locking. Network Firewall
 10328  	// returns a token to your requests that access the firewall. The token marks
 10329  	// the state of the firewall resource at the time of the request.
 10330  	//
 10331  	// To make an unconditional change to the firewall, omit the token in your update
 10332  	// request. Without the token, Network Firewall performs your updates regardless
 10333  	// of whether the firewall has changed since you last retrieved it.
 10334  	//
 10335  	// To make a conditional change to the firewall, provide the token in your update
 10336  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 10337  	// changed since you last retrieved it. If it has changed, the operation fails
 10338  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 10339  	// to get a current copy of it with a new token. Reapply your changes as needed,
 10340  	// then try the operation again using the new token.
 10341  	UpdateToken *string `min:"1" type:"string"`
 10342  }
 10343  
 10344  // String returns the string representation.
 10345  //
 10346  // API parameter values that are decorated as "sensitive" in the API will not
 10347  // be included in the string output. The member name will be present, but the
 10348  // value will be replaced with "sensitive".
 10349  func (s UpdateFirewallDescriptionOutput) String() string {
 10350  	return awsutil.Prettify(s)
 10351  }
 10352  
 10353  // GoString returns the string representation.
 10354  //
 10355  // API parameter values that are decorated as "sensitive" in the API will not
 10356  // be included in the string output. The member name will be present, but the
 10357  // value will be replaced with "sensitive".
 10358  func (s UpdateFirewallDescriptionOutput) GoString() string {
 10359  	return s.String()
 10360  }
 10361  
 10362  // SetDescription sets the Description field's value.
 10363  func (s *UpdateFirewallDescriptionOutput) SetDescription(v string) *UpdateFirewallDescriptionOutput {
 10364  	s.Description = &v
 10365  	return s
 10366  }
 10367  
 10368  // SetFirewallArn sets the FirewallArn field's value.
 10369  func (s *UpdateFirewallDescriptionOutput) SetFirewallArn(v string) *UpdateFirewallDescriptionOutput {
 10370  	s.FirewallArn = &v
 10371  	return s
 10372  }
 10373  
 10374  // SetFirewallName sets the FirewallName field's value.
 10375  func (s *UpdateFirewallDescriptionOutput) SetFirewallName(v string) *UpdateFirewallDescriptionOutput {
 10376  	s.FirewallName = &v
 10377  	return s
 10378  }
 10379  
 10380  // SetUpdateToken sets the UpdateToken field's value.
 10381  func (s *UpdateFirewallDescriptionOutput) SetUpdateToken(v string) *UpdateFirewallDescriptionOutput {
 10382  	s.UpdateToken = &v
 10383  	return s
 10384  }
 10385  
 10386  type UpdateFirewallPolicyChangeProtectionInput struct {
 10387  	_ struct{} `type:"structure"`
 10388  
 10389  	// The Amazon Resource Name (ARN) of the firewall.
 10390  	//
 10391  	// You must specify the ARN or the name, and you can specify both.
 10392  	FirewallArn *string `min:"1" type:"string"`
 10393  
 10394  	// The descriptive name of the firewall. You can't change the name of a firewall
 10395  	// after you create it.
 10396  	//
 10397  	// You must specify the ARN or the name, and you can specify both.
 10398  	FirewallName *string `min:"1" type:"string"`
 10399  
 10400  	// A setting indicating whether the firewall is protected against a change to
 10401  	// the firewall policy association. Use this setting to protect against accidentally
 10402  	// modifying the firewall policy for a firewall that is in use. When you create
 10403  	// a firewall, the operation initializes this setting to TRUE.
 10404  	//
 10405  	// FirewallPolicyChangeProtection is a required field
 10406  	FirewallPolicyChangeProtection *bool `type:"boolean" required:"true"`
 10407  
 10408  	// An optional token that you can use for optimistic locking. Network Firewall
 10409  	// returns a token to your requests that access the firewall. The token marks
 10410  	// the state of the firewall resource at the time of the request.
 10411  	//
 10412  	// To make an unconditional change to the firewall, omit the token in your update
 10413  	// request. Without the token, Network Firewall performs your updates regardless
 10414  	// of whether the firewall has changed since you last retrieved it.
 10415  	//
 10416  	// To make a conditional change to the firewall, provide the token in your update
 10417  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 10418  	// changed since you last retrieved it. If it has changed, the operation fails
 10419  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 10420  	// to get a current copy of it with a new token. Reapply your changes as needed,
 10421  	// then try the operation again using the new token.
 10422  	UpdateToken *string `min:"1" type:"string"`
 10423  }
 10424  
 10425  // String returns the string representation.
 10426  //
 10427  // API parameter values that are decorated as "sensitive" in the API will not
 10428  // be included in the string output. The member name will be present, but the
 10429  // value will be replaced with "sensitive".
 10430  func (s UpdateFirewallPolicyChangeProtectionInput) String() string {
 10431  	return awsutil.Prettify(s)
 10432  }
 10433  
 10434  // GoString returns the string representation.
 10435  //
 10436  // API parameter values that are decorated as "sensitive" in the API will not
 10437  // be included in the string output. The member name will be present, but the
 10438  // value will be replaced with "sensitive".
 10439  func (s UpdateFirewallPolicyChangeProtectionInput) GoString() string {
 10440  	return s.String()
 10441  }
 10442  
 10443  // Validate inspects the fields of the type to determine if they are valid.
 10444  func (s *UpdateFirewallPolicyChangeProtectionInput) Validate() error {
 10445  	invalidParams := request.ErrInvalidParams{Context: "UpdateFirewallPolicyChangeProtectionInput"}
 10446  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
 10447  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
 10448  	}
 10449  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
 10450  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
 10451  	}
 10452  	if s.FirewallPolicyChangeProtection == nil {
 10453  		invalidParams.Add(request.NewErrParamRequired("FirewallPolicyChangeProtection"))
 10454  	}
 10455  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
 10456  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
 10457  	}
 10458  
 10459  	if invalidParams.Len() > 0 {
 10460  		return invalidParams
 10461  	}
 10462  	return nil
 10463  }
 10464  
 10465  // SetFirewallArn sets the FirewallArn field's value.
 10466  func (s *UpdateFirewallPolicyChangeProtectionInput) SetFirewallArn(v string) *UpdateFirewallPolicyChangeProtectionInput {
 10467  	s.FirewallArn = &v
 10468  	return s
 10469  }
 10470  
 10471  // SetFirewallName sets the FirewallName field's value.
 10472  func (s *UpdateFirewallPolicyChangeProtectionInput) SetFirewallName(v string) *UpdateFirewallPolicyChangeProtectionInput {
 10473  	s.FirewallName = &v
 10474  	return s
 10475  }
 10476  
 10477  // SetFirewallPolicyChangeProtection sets the FirewallPolicyChangeProtection field's value.
 10478  func (s *UpdateFirewallPolicyChangeProtectionInput) SetFirewallPolicyChangeProtection(v bool) *UpdateFirewallPolicyChangeProtectionInput {
 10479  	s.FirewallPolicyChangeProtection = &v
 10480  	return s
 10481  }
 10482  
 10483  // SetUpdateToken sets the UpdateToken field's value.
 10484  func (s *UpdateFirewallPolicyChangeProtectionInput) SetUpdateToken(v string) *UpdateFirewallPolicyChangeProtectionInput {
 10485  	s.UpdateToken = &v
 10486  	return s
 10487  }
 10488  
 10489  type UpdateFirewallPolicyChangeProtectionOutput struct {
 10490  	_ struct{} `type:"structure"`
 10491  
 10492  	// The Amazon Resource Name (ARN) of the firewall.
 10493  	FirewallArn *string `min:"1" type:"string"`
 10494  
 10495  	// The descriptive name of the firewall. You can't change the name of a firewall
 10496  	// after you create it.
 10497  	FirewallName *string `min:"1" type:"string"`
 10498  
 10499  	// A setting indicating whether the firewall is protected against a change to
 10500  	// the firewall policy association. Use this setting to protect against accidentally
 10501  	// modifying the firewall policy for a firewall that is in use. When you create
 10502  	// a firewall, the operation initializes this setting to TRUE.
 10503  	FirewallPolicyChangeProtection *bool `type:"boolean"`
 10504  
 10505  	// An optional token that you can use for optimistic locking. Network Firewall
 10506  	// returns a token to your requests that access the firewall. The token marks
 10507  	// the state of the firewall resource at the time of the request.
 10508  	//
 10509  	// To make an unconditional change to the firewall, omit the token in your update
 10510  	// request. Without the token, Network Firewall performs your updates regardless
 10511  	// of whether the firewall has changed since you last retrieved it.
 10512  	//
 10513  	// To make a conditional change to the firewall, provide the token in your update
 10514  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 10515  	// changed since you last retrieved it. If it has changed, the operation fails
 10516  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 10517  	// to get a current copy of it with a new token. Reapply your changes as needed,
 10518  	// then try the operation again using the new token.
 10519  	UpdateToken *string `min:"1" type:"string"`
 10520  }
 10521  
 10522  // String returns the string representation.
 10523  //
 10524  // API parameter values that are decorated as "sensitive" in the API will not
 10525  // be included in the string output. The member name will be present, but the
 10526  // value will be replaced with "sensitive".
 10527  func (s UpdateFirewallPolicyChangeProtectionOutput) String() string {
 10528  	return awsutil.Prettify(s)
 10529  }
 10530  
 10531  // GoString returns the string representation.
 10532  //
 10533  // API parameter values that are decorated as "sensitive" in the API will not
 10534  // be included in the string output. The member name will be present, but the
 10535  // value will be replaced with "sensitive".
 10536  func (s UpdateFirewallPolicyChangeProtectionOutput) GoString() string {
 10537  	return s.String()
 10538  }
 10539  
 10540  // SetFirewallArn sets the FirewallArn field's value.
 10541  func (s *UpdateFirewallPolicyChangeProtectionOutput) SetFirewallArn(v string) *UpdateFirewallPolicyChangeProtectionOutput {
 10542  	s.FirewallArn = &v
 10543  	return s
 10544  }
 10545  
 10546  // SetFirewallName sets the FirewallName field's value.
 10547  func (s *UpdateFirewallPolicyChangeProtectionOutput) SetFirewallName(v string) *UpdateFirewallPolicyChangeProtectionOutput {
 10548  	s.FirewallName = &v
 10549  	return s
 10550  }
 10551  
 10552  // SetFirewallPolicyChangeProtection sets the FirewallPolicyChangeProtection field's value.
 10553  func (s *UpdateFirewallPolicyChangeProtectionOutput) SetFirewallPolicyChangeProtection(v bool) *UpdateFirewallPolicyChangeProtectionOutput {
 10554  	s.FirewallPolicyChangeProtection = &v
 10555  	return s
 10556  }
 10557  
 10558  // SetUpdateToken sets the UpdateToken field's value.
 10559  func (s *UpdateFirewallPolicyChangeProtectionOutput) SetUpdateToken(v string) *UpdateFirewallPolicyChangeProtectionOutput {
 10560  	s.UpdateToken = &v
 10561  	return s
 10562  }
 10563  
 10564  type UpdateFirewallPolicyInput struct {
 10565  	_ struct{} `type:"structure"`
 10566  
 10567  	// A description of the firewall policy.
 10568  	Description *string `type:"string"`
 10569  
 10570  	// Indicates whether you want Network Firewall to just check the validity of
 10571  	// the request, rather than run the request.
 10572  	//
 10573  	// If set to TRUE, Network Firewall checks whether the request can run successfully,
 10574  	// but doesn't actually make the requested changes. The call returns the value
 10575  	// that the request would return if you ran it with dry run set to FALSE, but
 10576  	// doesn't make additions or changes to your resources. This option allows you
 10577  	// to make sure that you have the required permissions to run the request and
 10578  	// that your request parameters are valid.
 10579  	//
 10580  	// If set to FALSE, Network Firewall makes the requested changes to your resources.
 10581  	DryRun *bool `type:"boolean"`
 10582  
 10583  	// The updated firewall policy to use for the firewall.
 10584  	//
 10585  	// FirewallPolicy is a required field
 10586  	FirewallPolicy *FirewallPolicy `type:"structure" required:"true"`
 10587  
 10588  	// The Amazon Resource Name (ARN) of the firewall policy.
 10589  	//
 10590  	// You must specify the ARN or the name, and you can specify both.
 10591  	FirewallPolicyArn *string `min:"1" type:"string"`
 10592  
 10593  	// The descriptive name of the firewall policy. You can't change the name of
 10594  	// a firewall policy after you create it.
 10595  	//
 10596  	// You must specify the ARN or the name, and you can specify both.
 10597  	FirewallPolicyName *string `min:"1" type:"string"`
 10598  
 10599  	// A token used for optimistic locking. Network Firewall returns a token to
 10600  	// your requests that access the firewall policy. The token marks the state
 10601  	// of the policy resource at the time of the request.
 10602  	//
 10603  	// To make changes to the policy, you provide the token in your request. Network
 10604  	// Firewall uses the token to ensure that the policy hasn't changed since you
 10605  	// last retrieved it. If it has changed, the operation fails with an InvalidTokenException.
 10606  	// If this happens, retrieve the firewall policy again to get a current copy
 10607  	// of it with current token. Reapply your changes as needed, then try the operation
 10608  	// again using the new token.
 10609  	//
 10610  	// UpdateToken is a required field
 10611  	UpdateToken *string `min:"1" type:"string" required:"true"`
 10612  }
 10613  
 10614  // String returns the string representation.
 10615  //
 10616  // API parameter values that are decorated as "sensitive" in the API will not
 10617  // be included in the string output. The member name will be present, but the
 10618  // value will be replaced with "sensitive".
 10619  func (s UpdateFirewallPolicyInput) String() string {
 10620  	return awsutil.Prettify(s)
 10621  }
 10622  
 10623  // GoString returns the string representation.
 10624  //
 10625  // API parameter values that are decorated as "sensitive" in the API will not
 10626  // be included in the string output. The member name will be present, but the
 10627  // value will be replaced with "sensitive".
 10628  func (s UpdateFirewallPolicyInput) GoString() string {
 10629  	return s.String()
 10630  }
 10631  
 10632  // Validate inspects the fields of the type to determine if they are valid.
 10633  func (s *UpdateFirewallPolicyInput) Validate() error {
 10634  	invalidParams := request.ErrInvalidParams{Context: "UpdateFirewallPolicyInput"}
 10635  	if s.FirewallPolicy == nil {
 10636  		invalidParams.Add(request.NewErrParamRequired("FirewallPolicy"))
 10637  	}
 10638  	if s.FirewallPolicyArn != nil && len(*s.FirewallPolicyArn) < 1 {
 10639  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyArn", 1))
 10640  	}
 10641  	if s.FirewallPolicyName != nil && len(*s.FirewallPolicyName) < 1 {
 10642  		invalidParams.Add(request.NewErrParamMinLen("FirewallPolicyName", 1))
 10643  	}
 10644  	if s.UpdateToken == nil {
 10645  		invalidParams.Add(request.NewErrParamRequired("UpdateToken"))
 10646  	}
 10647  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
 10648  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
 10649  	}
 10650  	if s.FirewallPolicy != nil {
 10651  		if err := s.FirewallPolicy.Validate(); err != nil {
 10652  			invalidParams.AddNested("FirewallPolicy", err.(request.ErrInvalidParams))
 10653  		}
 10654  	}
 10655  
 10656  	if invalidParams.Len() > 0 {
 10657  		return invalidParams
 10658  	}
 10659  	return nil
 10660  }
 10661  
 10662  // SetDescription sets the Description field's value.
 10663  func (s *UpdateFirewallPolicyInput) SetDescription(v string) *UpdateFirewallPolicyInput {
 10664  	s.Description = &v
 10665  	return s
 10666  }
 10667  
 10668  // SetDryRun sets the DryRun field's value.
 10669  func (s *UpdateFirewallPolicyInput) SetDryRun(v bool) *UpdateFirewallPolicyInput {
 10670  	s.DryRun = &v
 10671  	return s
 10672  }
 10673  
 10674  // SetFirewallPolicy sets the FirewallPolicy field's value.
 10675  func (s *UpdateFirewallPolicyInput) SetFirewallPolicy(v *FirewallPolicy) *UpdateFirewallPolicyInput {
 10676  	s.FirewallPolicy = v
 10677  	return s
 10678  }
 10679  
 10680  // SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
 10681  func (s *UpdateFirewallPolicyInput) SetFirewallPolicyArn(v string) *UpdateFirewallPolicyInput {
 10682  	s.FirewallPolicyArn = &v
 10683  	return s
 10684  }
 10685  
 10686  // SetFirewallPolicyName sets the FirewallPolicyName field's value.
 10687  func (s *UpdateFirewallPolicyInput) SetFirewallPolicyName(v string) *UpdateFirewallPolicyInput {
 10688  	s.FirewallPolicyName = &v
 10689  	return s
 10690  }
 10691  
 10692  // SetUpdateToken sets the UpdateToken field's value.
 10693  func (s *UpdateFirewallPolicyInput) SetUpdateToken(v string) *UpdateFirewallPolicyInput {
 10694  	s.UpdateToken = &v
 10695  	return s
 10696  }
 10697  
 10698  type UpdateFirewallPolicyOutput struct {
 10699  	_ struct{} `type:"structure"`
 10700  
 10701  	// The high-level properties of a firewall policy. This, along with the FirewallPolicy,
 10702  	// define the policy. You can retrieve all objects for a firewall policy by
 10703  	// calling DescribeFirewallPolicy.
 10704  	//
 10705  	// FirewallPolicyResponse is a required field
 10706  	FirewallPolicyResponse *FirewallPolicyResponse `type:"structure" required:"true"`
 10707  
 10708  	// A token used for optimistic locking. Network Firewall returns a token to
 10709  	// your requests that access the firewall policy. The token marks the state
 10710  	// of the policy resource at the time of the request.
 10711  	//
 10712  	// To make changes to the policy, you provide the token in your request. Network
 10713  	// Firewall uses the token to ensure that the policy hasn't changed since you
 10714  	// last retrieved it. If it has changed, the operation fails with an InvalidTokenException.
 10715  	// If this happens, retrieve the firewall policy again to get a current copy
 10716  	// of it with current token. Reapply your changes as needed, then try the operation
 10717  	// again using the new token.
 10718  	//
 10719  	// UpdateToken is a required field
 10720  	UpdateToken *string `min:"1" type:"string" required:"true"`
 10721  }
 10722  
 10723  // String returns the string representation.
 10724  //
 10725  // API parameter values that are decorated as "sensitive" in the API will not
 10726  // be included in the string output. The member name will be present, but the
 10727  // value will be replaced with "sensitive".
 10728  func (s UpdateFirewallPolicyOutput) String() string {
 10729  	return awsutil.Prettify(s)
 10730  }
 10731  
 10732  // GoString returns the string representation.
 10733  //
 10734  // API parameter values that are decorated as "sensitive" in the API will not
 10735  // be included in the string output. The member name will be present, but the
 10736  // value will be replaced with "sensitive".
 10737  func (s UpdateFirewallPolicyOutput) GoString() string {
 10738  	return s.String()
 10739  }
 10740  
 10741  // SetFirewallPolicyResponse sets the FirewallPolicyResponse field's value.
 10742  func (s *UpdateFirewallPolicyOutput) SetFirewallPolicyResponse(v *FirewallPolicyResponse) *UpdateFirewallPolicyOutput {
 10743  	s.FirewallPolicyResponse = v
 10744  	return s
 10745  }
 10746  
 10747  // SetUpdateToken sets the UpdateToken field's value.
 10748  func (s *UpdateFirewallPolicyOutput) SetUpdateToken(v string) *UpdateFirewallPolicyOutput {
 10749  	s.UpdateToken = &v
 10750  	return s
 10751  }
 10752  
 10753  type UpdateLoggingConfigurationInput struct {
 10754  	_ struct{} `type:"structure"`
 10755  
 10756  	// The Amazon Resource Name (ARN) of the firewall.
 10757  	//
 10758  	// You must specify the ARN or the name, and you can specify both.
 10759  	FirewallArn *string `min:"1" type:"string"`
 10760  
 10761  	// The descriptive name of the firewall. You can't change the name of a firewall
 10762  	// after you create it.
 10763  	//
 10764  	// You must specify the ARN or the name, and you can specify both.
 10765  	FirewallName *string `min:"1" type:"string"`
 10766  
 10767  	// Defines how Network Firewall performs logging for a firewall. If you omit
 10768  	// this setting, Network Firewall disables logging for the firewall.
 10769  	LoggingConfiguration *LoggingConfiguration `type:"structure"`
 10770  }
 10771  
 10772  // String returns the string representation.
 10773  //
 10774  // API parameter values that are decorated as "sensitive" in the API will not
 10775  // be included in the string output. The member name will be present, but the
 10776  // value will be replaced with "sensitive".
 10777  func (s UpdateLoggingConfigurationInput) String() string {
 10778  	return awsutil.Prettify(s)
 10779  }
 10780  
 10781  // GoString returns the string representation.
 10782  //
 10783  // API parameter values that are decorated as "sensitive" in the API will not
 10784  // be included in the string output. The member name will be present, but the
 10785  // value will be replaced with "sensitive".
 10786  func (s UpdateLoggingConfigurationInput) GoString() string {
 10787  	return s.String()
 10788  }
 10789  
 10790  // Validate inspects the fields of the type to determine if they are valid.
 10791  func (s *UpdateLoggingConfigurationInput) Validate() error {
 10792  	invalidParams := request.ErrInvalidParams{Context: "UpdateLoggingConfigurationInput"}
 10793  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
 10794  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
 10795  	}
 10796  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
 10797  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
 10798  	}
 10799  	if s.LoggingConfiguration != nil {
 10800  		if err := s.LoggingConfiguration.Validate(); err != nil {
 10801  			invalidParams.AddNested("LoggingConfiguration", err.(request.ErrInvalidParams))
 10802  		}
 10803  	}
 10804  
 10805  	if invalidParams.Len() > 0 {
 10806  		return invalidParams
 10807  	}
 10808  	return nil
 10809  }
 10810  
 10811  // SetFirewallArn sets the FirewallArn field's value.
 10812  func (s *UpdateLoggingConfigurationInput) SetFirewallArn(v string) *UpdateLoggingConfigurationInput {
 10813  	s.FirewallArn = &v
 10814  	return s
 10815  }
 10816  
 10817  // SetFirewallName sets the FirewallName field's value.
 10818  func (s *UpdateLoggingConfigurationInput) SetFirewallName(v string) *UpdateLoggingConfigurationInput {
 10819  	s.FirewallName = &v
 10820  	return s
 10821  }
 10822  
 10823  // SetLoggingConfiguration sets the LoggingConfiguration field's value.
 10824  func (s *UpdateLoggingConfigurationInput) SetLoggingConfiguration(v *LoggingConfiguration) *UpdateLoggingConfigurationInput {
 10825  	s.LoggingConfiguration = v
 10826  	return s
 10827  }
 10828  
 10829  type UpdateLoggingConfigurationOutput struct {
 10830  	_ struct{} `type:"structure"`
 10831  
 10832  	// The Amazon Resource Name (ARN) of the firewall.
 10833  	FirewallArn *string `min:"1" type:"string"`
 10834  
 10835  	// The descriptive name of the firewall. You can't change the name of a firewall
 10836  	// after you create it.
 10837  	FirewallName *string `min:"1" type:"string"`
 10838  
 10839  	// Defines how AWS Network Firewall performs logging for a Firewall.
 10840  	LoggingConfiguration *LoggingConfiguration `type:"structure"`
 10841  }
 10842  
 10843  // String returns the string representation.
 10844  //
 10845  // API parameter values that are decorated as "sensitive" in the API will not
 10846  // be included in the string output. The member name will be present, but the
 10847  // value will be replaced with "sensitive".
 10848  func (s UpdateLoggingConfigurationOutput) String() string {
 10849  	return awsutil.Prettify(s)
 10850  }
 10851  
 10852  // GoString returns the string representation.
 10853  //
 10854  // API parameter values that are decorated as "sensitive" in the API will not
 10855  // be included in the string output. The member name will be present, but the
 10856  // value will be replaced with "sensitive".
 10857  func (s UpdateLoggingConfigurationOutput) GoString() string {
 10858  	return s.String()
 10859  }
 10860  
 10861  // SetFirewallArn sets the FirewallArn field's value.
 10862  func (s *UpdateLoggingConfigurationOutput) SetFirewallArn(v string) *UpdateLoggingConfigurationOutput {
 10863  	s.FirewallArn = &v
 10864  	return s
 10865  }
 10866  
 10867  // SetFirewallName sets the FirewallName field's value.
 10868  func (s *UpdateLoggingConfigurationOutput) SetFirewallName(v string) *UpdateLoggingConfigurationOutput {
 10869  	s.FirewallName = &v
 10870  	return s
 10871  }
 10872  
 10873  // SetLoggingConfiguration sets the LoggingConfiguration field's value.
 10874  func (s *UpdateLoggingConfigurationOutput) SetLoggingConfiguration(v *LoggingConfiguration) *UpdateLoggingConfigurationOutput {
 10875  	s.LoggingConfiguration = v
 10876  	return s
 10877  }
 10878  
 10879  type UpdateRuleGroupInput struct {
 10880  	_ struct{} `type:"structure"`
 10881  
 10882  	// A description of the rule group.
 10883  	Description *string `type:"string"`
 10884  
 10885  	// Indicates whether you want Network Firewall to just check the validity of
 10886  	// the request, rather than run the request.
 10887  	//
 10888  	// If set to TRUE, Network Firewall checks whether the request can run successfully,
 10889  	// but doesn't actually make the requested changes. The call returns the value
 10890  	// that the request would return if you ran it with dry run set to FALSE, but
 10891  	// doesn't make additions or changes to your resources. This option allows you
 10892  	// to make sure that you have the required permissions to run the request and
 10893  	// that your request parameters are valid.
 10894  	//
 10895  	// If set to FALSE, Network Firewall makes the requested changes to your resources.
 10896  	DryRun *bool `type:"boolean"`
 10897  
 10898  	// An object that defines the rule group rules.
 10899  	//
 10900  	// You must provide either this rule group setting or a Rules setting, but not
 10901  	// both.
 10902  	RuleGroup *RuleGroup `type:"structure"`
 10903  
 10904  	// The Amazon Resource Name (ARN) of the rule group.
 10905  	//
 10906  	// You must specify the ARN or the name, and you can specify both.
 10907  	RuleGroupArn *string `min:"1" type:"string"`
 10908  
 10909  	// The descriptive name of the rule group. You can't change the name of a rule
 10910  	// group after you create it.
 10911  	//
 10912  	// You must specify the ARN or the name, and you can specify both.
 10913  	RuleGroupName *string `min:"1" type:"string"`
 10914  
 10915  	// A string containing stateful rule group rules specifications in Suricata
 10916  	// flat format, with one rule per line. Use this to import your existing Suricata
 10917  	// compatible rule groups.
 10918  	//
 10919  	// You must provide either this rules setting or a populated RuleGroup setting,
 10920  	// but not both.
 10921  	//
 10922  	// You can provide your rule group specification in Suricata flat format through
 10923  	// this setting when you create or update your rule group. The call response
 10924  	// returns a RuleGroup object that Network Firewall has populated from your
 10925  	// string.
 10926  	Rules *string `type:"string"`
 10927  
 10928  	// Indicates whether the rule group is stateless or stateful. If the rule group
 10929  	// is stateless, it contains stateless rules. If it is stateful, it contains
 10930  	// stateful rules.
 10931  	//
 10932  	// This setting is required for requests that do not include the RuleGroupARN.
 10933  	Type *string `type:"string" enum:"RuleGroupType"`
 10934  
 10935  	// A token used for optimistic locking. Network Firewall returns a token to
 10936  	// your requests that access the rule group. The token marks the state of the
 10937  	// rule group resource at the time of the request.
 10938  	//
 10939  	// To make changes to the rule group, you provide the token in your request.
 10940  	// Network Firewall uses the token to ensure that the rule group hasn't changed
 10941  	// since you last retrieved it. If it has changed, the operation fails with
 10942  	// an InvalidTokenException. If this happens, retrieve the rule group again
 10943  	// to get a current copy of it with a current token. Reapply your changes as
 10944  	// needed, then try the operation again using the new token.
 10945  	//
 10946  	// UpdateToken is a required field
 10947  	UpdateToken *string `min:"1" type:"string" required:"true"`
 10948  }
 10949  
 10950  // String returns the string representation.
 10951  //
 10952  // API parameter values that are decorated as "sensitive" in the API will not
 10953  // be included in the string output. The member name will be present, but the
 10954  // value will be replaced with "sensitive".
 10955  func (s UpdateRuleGroupInput) String() string {
 10956  	return awsutil.Prettify(s)
 10957  }
 10958  
 10959  // GoString returns the string representation.
 10960  //
 10961  // API parameter values that are decorated as "sensitive" in the API will not
 10962  // be included in the string output. The member name will be present, but the
 10963  // value will be replaced with "sensitive".
 10964  func (s UpdateRuleGroupInput) GoString() string {
 10965  	return s.String()
 10966  }
 10967  
 10968  // Validate inspects the fields of the type to determine if they are valid.
 10969  func (s *UpdateRuleGroupInput) Validate() error {
 10970  	invalidParams := request.ErrInvalidParams{Context: "UpdateRuleGroupInput"}
 10971  	if s.RuleGroupArn != nil && len(*s.RuleGroupArn) < 1 {
 10972  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupArn", 1))
 10973  	}
 10974  	if s.RuleGroupName != nil && len(*s.RuleGroupName) < 1 {
 10975  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupName", 1))
 10976  	}
 10977  	if s.UpdateToken == nil {
 10978  		invalidParams.Add(request.NewErrParamRequired("UpdateToken"))
 10979  	}
 10980  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
 10981  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
 10982  	}
 10983  	if s.RuleGroup != nil {
 10984  		if err := s.RuleGroup.Validate(); err != nil {
 10985  			invalidParams.AddNested("RuleGroup", err.(request.ErrInvalidParams))
 10986  		}
 10987  	}
 10988  
 10989  	if invalidParams.Len() > 0 {
 10990  		return invalidParams
 10991  	}
 10992  	return nil
 10993  }
 10994  
 10995  // SetDescription sets the Description field's value.
 10996  func (s *UpdateRuleGroupInput) SetDescription(v string) *UpdateRuleGroupInput {
 10997  	s.Description = &v
 10998  	return s
 10999  }
 11000  
 11001  // SetDryRun sets the DryRun field's value.
 11002  func (s *UpdateRuleGroupInput) SetDryRun(v bool) *UpdateRuleGroupInput {
 11003  	s.DryRun = &v
 11004  	return s
 11005  }
 11006  
 11007  // SetRuleGroup sets the RuleGroup field's value.
 11008  func (s *UpdateRuleGroupInput) SetRuleGroup(v *RuleGroup) *UpdateRuleGroupInput {
 11009  	s.RuleGroup = v
 11010  	return s
 11011  }
 11012  
 11013  // SetRuleGroupArn sets the RuleGroupArn field's value.
 11014  func (s *UpdateRuleGroupInput) SetRuleGroupArn(v string) *UpdateRuleGroupInput {
 11015  	s.RuleGroupArn = &v
 11016  	return s
 11017  }
 11018  
 11019  // SetRuleGroupName sets the RuleGroupName field's value.
 11020  func (s *UpdateRuleGroupInput) SetRuleGroupName(v string) *UpdateRuleGroupInput {
 11021  	s.RuleGroupName = &v
 11022  	return s
 11023  }
 11024  
 11025  // SetRules sets the Rules field's value.
 11026  func (s *UpdateRuleGroupInput) SetRules(v string) *UpdateRuleGroupInput {
 11027  	s.Rules = &v
 11028  	return s
 11029  }
 11030  
 11031  // SetType sets the Type field's value.
 11032  func (s *UpdateRuleGroupInput) SetType(v string) *UpdateRuleGroupInput {
 11033  	s.Type = &v
 11034  	return s
 11035  }
 11036  
 11037  // SetUpdateToken sets the UpdateToken field's value.
 11038  func (s *UpdateRuleGroupInput) SetUpdateToken(v string) *UpdateRuleGroupInput {
 11039  	s.UpdateToken = &v
 11040  	return s
 11041  }
 11042  
 11043  type UpdateRuleGroupOutput struct {
 11044  	_ struct{} `type:"structure"`
 11045  
 11046  	// The high-level properties of a rule group. This, along with the RuleGroup,
 11047  	// define the rule group. You can retrieve all objects for a rule group by calling
 11048  	// DescribeRuleGroup.
 11049  	//
 11050  	// RuleGroupResponse is a required field
 11051  	RuleGroupResponse *RuleGroupResponse `type:"structure" required:"true"`
 11052  
 11053  	// A token used for optimistic locking. Network Firewall returns a token to
 11054  	// your requests that access the rule group. The token marks the state of the
 11055  	// rule group resource at the time of the request.
 11056  	//
 11057  	// To make changes to the rule group, you provide the token in your request.
 11058  	// Network Firewall uses the token to ensure that the rule group hasn't changed
 11059  	// since you last retrieved it. If it has changed, the operation fails with
 11060  	// an InvalidTokenException. If this happens, retrieve the rule group again
 11061  	// to get a current copy of it with a current token. Reapply your changes as
 11062  	// needed, then try the operation again using the new token.
 11063  	//
 11064  	// UpdateToken is a required field
 11065  	UpdateToken *string `min:"1" type:"string" required:"true"`
 11066  }
 11067  
 11068  // String returns the string representation.
 11069  //
 11070  // API parameter values that are decorated as "sensitive" in the API will not
 11071  // be included in the string output. The member name will be present, but the
 11072  // value will be replaced with "sensitive".
 11073  func (s UpdateRuleGroupOutput) String() string {
 11074  	return awsutil.Prettify(s)
 11075  }
 11076  
 11077  // GoString returns the string representation.
 11078  //
 11079  // API parameter values that are decorated as "sensitive" in the API will not
 11080  // be included in the string output. The member name will be present, but the
 11081  // value will be replaced with "sensitive".
 11082  func (s UpdateRuleGroupOutput) GoString() string {
 11083  	return s.String()
 11084  }
 11085  
 11086  // SetRuleGroupResponse sets the RuleGroupResponse field's value.
 11087  func (s *UpdateRuleGroupOutput) SetRuleGroupResponse(v *RuleGroupResponse) *UpdateRuleGroupOutput {
 11088  	s.RuleGroupResponse = v
 11089  	return s
 11090  }
 11091  
 11092  // SetUpdateToken sets the UpdateToken field's value.
 11093  func (s *UpdateRuleGroupOutput) SetUpdateToken(v string) *UpdateRuleGroupOutput {
 11094  	s.UpdateToken = &v
 11095  	return s
 11096  }
 11097  
 11098  type UpdateSubnetChangeProtectionInput struct {
 11099  	_ struct{} `type:"structure"`
 11100  
 11101  	// The Amazon Resource Name (ARN) of the firewall.
 11102  	//
 11103  	// You must specify the ARN or the name, and you can specify both.
 11104  	FirewallArn *string `min:"1" type:"string"`
 11105  
 11106  	// The descriptive name of the firewall. You can't change the name of a firewall
 11107  	// after you create it.
 11108  	//
 11109  	// You must specify the ARN or the name, and you can specify both.
 11110  	FirewallName *string `min:"1" type:"string"`
 11111  
 11112  	// A setting indicating whether the firewall is protected against changes to
 11113  	// the subnet associations. Use this setting to protect against accidentally
 11114  	// modifying the subnet associations for a firewall that is in use. When you
 11115  	// create a firewall, the operation initializes this setting to TRUE.
 11116  	//
 11117  	// SubnetChangeProtection is a required field
 11118  	SubnetChangeProtection *bool `type:"boolean" required:"true"`
 11119  
 11120  	// An optional token that you can use for optimistic locking. Network Firewall
 11121  	// returns a token to your requests that access the firewall. The token marks
 11122  	// the state of the firewall resource at the time of the request.
 11123  	//
 11124  	// To make an unconditional change to the firewall, omit the token in your update
 11125  	// request. Without the token, Network Firewall performs your updates regardless
 11126  	// of whether the firewall has changed since you last retrieved it.
 11127  	//
 11128  	// To make a conditional change to the firewall, provide the token in your update
 11129  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 11130  	// changed since you last retrieved it. If it has changed, the operation fails
 11131  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 11132  	// to get a current copy of it with a new token. Reapply your changes as needed,
 11133  	// then try the operation again using the new token.
 11134  	UpdateToken *string `min:"1" type:"string"`
 11135  }
 11136  
 11137  // String returns the string representation.
 11138  //
 11139  // API parameter values that are decorated as "sensitive" in the API will not
 11140  // be included in the string output. The member name will be present, but the
 11141  // value will be replaced with "sensitive".
 11142  func (s UpdateSubnetChangeProtectionInput) String() string {
 11143  	return awsutil.Prettify(s)
 11144  }
 11145  
 11146  // GoString returns the string representation.
 11147  //
 11148  // API parameter values that are decorated as "sensitive" in the API will not
 11149  // be included in the string output. The member name will be present, but the
 11150  // value will be replaced with "sensitive".
 11151  func (s UpdateSubnetChangeProtectionInput) GoString() string {
 11152  	return s.String()
 11153  }
 11154  
 11155  // Validate inspects the fields of the type to determine if they are valid.
 11156  func (s *UpdateSubnetChangeProtectionInput) Validate() error {
 11157  	invalidParams := request.ErrInvalidParams{Context: "UpdateSubnetChangeProtectionInput"}
 11158  	if s.FirewallArn != nil && len(*s.FirewallArn) < 1 {
 11159  		invalidParams.Add(request.NewErrParamMinLen("FirewallArn", 1))
 11160  	}
 11161  	if s.FirewallName != nil && len(*s.FirewallName) < 1 {
 11162  		invalidParams.Add(request.NewErrParamMinLen("FirewallName", 1))
 11163  	}
 11164  	if s.SubnetChangeProtection == nil {
 11165  		invalidParams.Add(request.NewErrParamRequired("SubnetChangeProtection"))
 11166  	}
 11167  	if s.UpdateToken != nil && len(*s.UpdateToken) < 1 {
 11168  		invalidParams.Add(request.NewErrParamMinLen("UpdateToken", 1))
 11169  	}
 11170  
 11171  	if invalidParams.Len() > 0 {
 11172  		return invalidParams
 11173  	}
 11174  	return nil
 11175  }
 11176  
 11177  // SetFirewallArn sets the FirewallArn field's value.
 11178  func (s *UpdateSubnetChangeProtectionInput) SetFirewallArn(v string) *UpdateSubnetChangeProtectionInput {
 11179  	s.FirewallArn = &v
 11180  	return s
 11181  }
 11182  
 11183  // SetFirewallName sets the FirewallName field's value.
 11184  func (s *UpdateSubnetChangeProtectionInput) SetFirewallName(v string) *UpdateSubnetChangeProtectionInput {
 11185  	s.FirewallName = &v
 11186  	return s
 11187  }
 11188  
 11189  // SetSubnetChangeProtection sets the SubnetChangeProtection field's value.
 11190  func (s *UpdateSubnetChangeProtectionInput) SetSubnetChangeProtection(v bool) *UpdateSubnetChangeProtectionInput {
 11191  	s.SubnetChangeProtection = &v
 11192  	return s
 11193  }
 11194  
 11195  // SetUpdateToken sets the UpdateToken field's value.
 11196  func (s *UpdateSubnetChangeProtectionInput) SetUpdateToken(v string) *UpdateSubnetChangeProtectionInput {
 11197  	s.UpdateToken = &v
 11198  	return s
 11199  }
 11200  
 11201  type UpdateSubnetChangeProtectionOutput struct {
 11202  	_ struct{} `type:"structure"`
 11203  
 11204  	// The Amazon Resource Name (ARN) of the firewall.
 11205  	FirewallArn *string `min:"1" type:"string"`
 11206  
 11207  	// The descriptive name of the firewall. You can't change the name of a firewall
 11208  	// after you create it.
 11209  	FirewallName *string `min:"1" type:"string"`
 11210  
 11211  	// A setting indicating whether the firewall is protected against changes to
 11212  	// the subnet associations. Use this setting to protect against accidentally
 11213  	// modifying the subnet associations for a firewall that is in use. When you
 11214  	// create a firewall, the operation initializes this setting to TRUE.
 11215  	SubnetChangeProtection *bool `type:"boolean"`
 11216  
 11217  	// An optional token that you can use for optimistic locking. Network Firewall
 11218  	// returns a token to your requests that access the firewall. The token marks
 11219  	// the state of the firewall resource at the time of the request.
 11220  	//
 11221  	// To make an unconditional change to the firewall, omit the token in your update
 11222  	// request. Without the token, Network Firewall performs your updates regardless
 11223  	// of whether the firewall has changed since you last retrieved it.
 11224  	//
 11225  	// To make a conditional change to the firewall, provide the token in your update
 11226  	// request. Network Firewall uses the token to ensure that the firewall hasn't
 11227  	// changed since you last retrieved it. If it has changed, the operation fails
 11228  	// with an InvalidTokenException. If this happens, retrieve the firewall again
 11229  	// to get a current copy of it with a new token. Reapply your changes as needed,
 11230  	// then try the operation again using the new token.
 11231  	UpdateToken *string `min:"1" type:"string"`
 11232  }
 11233  
 11234  // String returns the string representation.
 11235  //
 11236  // API parameter values that are decorated as "sensitive" in the API will not
 11237  // be included in the string output. The member name will be present, but the
 11238  // value will be replaced with "sensitive".
 11239  func (s UpdateSubnetChangeProtectionOutput) String() string {
 11240  	return awsutil.Prettify(s)
 11241  }
 11242  
 11243  // GoString returns the string representation.
 11244  //
 11245  // API parameter values that are decorated as "sensitive" in the API will not
 11246  // be included in the string output. The member name will be present, but the
 11247  // value will be replaced with "sensitive".
 11248  func (s UpdateSubnetChangeProtectionOutput) GoString() string {
 11249  	return s.String()
 11250  }
 11251  
 11252  // SetFirewallArn sets the FirewallArn field's value.
 11253  func (s *UpdateSubnetChangeProtectionOutput) SetFirewallArn(v string) *UpdateSubnetChangeProtectionOutput {
 11254  	s.FirewallArn = &v
 11255  	return s
 11256  }
 11257  
 11258  // SetFirewallName sets the FirewallName field's value.
 11259  func (s *UpdateSubnetChangeProtectionOutput) SetFirewallName(v string) *UpdateSubnetChangeProtectionOutput {
 11260  	s.FirewallName = &v
 11261  	return s
 11262  }
 11263  
 11264  // SetSubnetChangeProtection sets the SubnetChangeProtection field's value.
 11265  func (s *UpdateSubnetChangeProtectionOutput) SetSubnetChangeProtection(v bool) *UpdateSubnetChangeProtectionOutput {
 11266  	s.SubnetChangeProtection = &v
 11267  	return s
 11268  }
 11269  
 11270  // SetUpdateToken sets the UpdateToken field's value.
 11271  func (s *UpdateSubnetChangeProtectionOutput) SetUpdateToken(v string) *UpdateSubnetChangeProtectionOutput {
 11272  	s.UpdateToken = &v
 11273  	return s
 11274  }
 11275  
 11276  const (
 11277  	// AttachmentStatusCreating is a AttachmentStatus enum value
 11278  	AttachmentStatusCreating = "CREATING"
 11279  
 11280  	// AttachmentStatusDeleting is a AttachmentStatus enum value
 11281  	AttachmentStatusDeleting = "DELETING"
 11282  
 11283  	// AttachmentStatusScaling is a AttachmentStatus enum value
 11284  	AttachmentStatusScaling = "SCALING"
 11285  
 11286  	// AttachmentStatusReady is a AttachmentStatus enum value
 11287  	AttachmentStatusReady = "READY"
 11288  )
 11289  
 11290  // AttachmentStatus_Values returns all elements of the AttachmentStatus enum
 11291  func AttachmentStatus_Values() []string {
 11292  	return []string{
 11293  		AttachmentStatusCreating,
 11294  		AttachmentStatusDeleting,
 11295  		AttachmentStatusScaling,
 11296  		AttachmentStatusReady,
 11297  	}
 11298  }
 11299  
 11300  const (
 11301  	// ConfigurationSyncStatePending is a ConfigurationSyncState enum value
 11302  	ConfigurationSyncStatePending = "PENDING"
 11303  
 11304  	// ConfigurationSyncStateInSync is a ConfigurationSyncState enum value
 11305  	ConfigurationSyncStateInSync = "IN_SYNC"
 11306  )
 11307  
 11308  // ConfigurationSyncState_Values returns all elements of the ConfigurationSyncState enum
 11309  func ConfigurationSyncState_Values() []string {
 11310  	return []string{
 11311  		ConfigurationSyncStatePending,
 11312  		ConfigurationSyncStateInSync,
 11313  	}
 11314  }
 11315  
 11316  const (
 11317  	// FirewallStatusValueProvisioning is a FirewallStatusValue enum value
 11318  	FirewallStatusValueProvisioning = "PROVISIONING"
 11319  
 11320  	// FirewallStatusValueDeleting is a FirewallStatusValue enum value
 11321  	FirewallStatusValueDeleting = "DELETING"
 11322  
 11323  	// FirewallStatusValueReady is a FirewallStatusValue enum value
 11324  	FirewallStatusValueReady = "READY"
 11325  )
 11326  
 11327  // FirewallStatusValue_Values returns all elements of the FirewallStatusValue enum
 11328  func FirewallStatusValue_Values() []string {
 11329  	return []string{
 11330  		FirewallStatusValueProvisioning,
 11331  		FirewallStatusValueDeleting,
 11332  		FirewallStatusValueReady,
 11333  	}
 11334  }
 11335  
 11336  const (
 11337  	// GeneratedRulesTypeAllowlist is a GeneratedRulesType enum value
 11338  	GeneratedRulesTypeAllowlist = "ALLOWLIST"
 11339  
 11340  	// GeneratedRulesTypeDenylist is a GeneratedRulesType enum value
 11341  	GeneratedRulesTypeDenylist = "DENYLIST"
 11342  )
 11343  
 11344  // GeneratedRulesType_Values returns all elements of the GeneratedRulesType enum
 11345  func GeneratedRulesType_Values() []string {
 11346  	return []string{
 11347  		GeneratedRulesTypeAllowlist,
 11348  		GeneratedRulesTypeDenylist,
 11349  	}
 11350  }
 11351  
 11352  const (
 11353  	// LogDestinationTypeS3 is a LogDestinationType enum value
 11354  	LogDestinationTypeS3 = "S3"
 11355  
 11356  	// LogDestinationTypeCloudWatchLogs is a LogDestinationType enum value
 11357  	LogDestinationTypeCloudWatchLogs = "CloudWatchLogs"
 11358  
 11359  	// LogDestinationTypeKinesisDataFirehose is a LogDestinationType enum value
 11360  	LogDestinationTypeKinesisDataFirehose = "KinesisDataFirehose"
 11361  )
 11362  
 11363  // LogDestinationType_Values returns all elements of the LogDestinationType enum
 11364  func LogDestinationType_Values() []string {
 11365  	return []string{
 11366  		LogDestinationTypeS3,
 11367  		LogDestinationTypeCloudWatchLogs,
 11368  		LogDestinationTypeKinesisDataFirehose,
 11369  	}
 11370  }
 11371  
 11372  const (
 11373  	// LogTypeAlert is a LogType enum value
 11374  	LogTypeAlert = "ALERT"
 11375  
 11376  	// LogTypeFlow is a LogType enum value
 11377  	LogTypeFlow = "FLOW"
 11378  )
 11379  
 11380  // LogType_Values returns all elements of the LogType enum
 11381  func LogType_Values() []string {
 11382  	return []string{
 11383  		LogTypeAlert,
 11384  		LogTypeFlow,
 11385  	}
 11386  }
 11387  
 11388  const (
 11389  	// PerObjectSyncStatusPending is a PerObjectSyncStatus enum value
 11390  	PerObjectSyncStatusPending = "PENDING"
 11391  
 11392  	// PerObjectSyncStatusInSync is a PerObjectSyncStatus enum value
 11393  	PerObjectSyncStatusInSync = "IN_SYNC"
 11394  )
 11395  
 11396  // PerObjectSyncStatus_Values returns all elements of the PerObjectSyncStatus enum
 11397  func PerObjectSyncStatus_Values() []string {
 11398  	return []string{
 11399  		PerObjectSyncStatusPending,
 11400  		PerObjectSyncStatusInSync,
 11401  	}
 11402  }
 11403  
 11404  const (
 11405  	// ResourceStatusActive is a ResourceStatus enum value
 11406  	ResourceStatusActive = "ACTIVE"
 11407  
 11408  	// ResourceStatusDeleting is a ResourceStatus enum value
 11409  	ResourceStatusDeleting = "DELETING"
 11410  )
 11411  
 11412  // ResourceStatus_Values returns all elements of the ResourceStatus enum
 11413  func ResourceStatus_Values() []string {
 11414  	return []string{
 11415  		ResourceStatusActive,
 11416  		ResourceStatusDeleting,
 11417  	}
 11418  }
 11419  
 11420  const (
 11421  	// RuleGroupTypeStateless is a RuleGroupType enum value
 11422  	RuleGroupTypeStateless = "STATELESS"
 11423  
 11424  	// RuleGroupTypeStateful is a RuleGroupType enum value
 11425  	RuleGroupTypeStateful = "STATEFUL"
 11426  )
 11427  
 11428  // RuleGroupType_Values returns all elements of the RuleGroupType enum
 11429  func RuleGroupType_Values() []string {
 11430  	return []string{
 11431  		RuleGroupTypeStateless,
 11432  		RuleGroupTypeStateful,
 11433  	}
 11434  }
 11435  
 11436  const (
 11437  	// RuleOrderDefaultActionOrder is a RuleOrder enum value
 11438  	RuleOrderDefaultActionOrder = "DEFAULT_ACTION_ORDER"
 11439  
 11440  	// RuleOrderStrictOrder is a RuleOrder enum value
 11441  	RuleOrderStrictOrder = "STRICT_ORDER"
 11442  )
 11443  
 11444  // RuleOrder_Values returns all elements of the RuleOrder enum
 11445  func RuleOrder_Values() []string {
 11446  	return []string{
 11447  		RuleOrderDefaultActionOrder,
 11448  		RuleOrderStrictOrder,
 11449  	}
 11450  }
 11451  
 11452  const (
 11453  	// StatefulActionPass is a StatefulAction enum value
 11454  	StatefulActionPass = "PASS"
 11455  
 11456  	// StatefulActionDrop is a StatefulAction enum value
 11457  	StatefulActionDrop = "DROP"
 11458  
 11459  	// StatefulActionAlert is a StatefulAction enum value
 11460  	StatefulActionAlert = "ALERT"
 11461  )
 11462  
 11463  // StatefulAction_Values returns all elements of the StatefulAction enum
 11464  func StatefulAction_Values() []string {
 11465  	return []string{
 11466  		StatefulActionPass,
 11467  		StatefulActionDrop,
 11468  		StatefulActionAlert,
 11469  	}
 11470  }
 11471  
 11472  const (
 11473  	// StatefulRuleDirectionForward is a StatefulRuleDirection enum value
 11474  	StatefulRuleDirectionForward = "FORWARD"
 11475  
 11476  	// StatefulRuleDirectionAny is a StatefulRuleDirection enum value
 11477  	StatefulRuleDirectionAny = "ANY"
 11478  )
 11479  
 11480  // StatefulRuleDirection_Values returns all elements of the StatefulRuleDirection enum
 11481  func StatefulRuleDirection_Values() []string {
 11482  	return []string{
 11483  		StatefulRuleDirectionForward,
 11484  		StatefulRuleDirectionAny,
 11485  	}
 11486  }
 11487  
 11488  const (
 11489  	// StatefulRuleProtocolIp is a StatefulRuleProtocol enum value
 11490  	StatefulRuleProtocolIp = "IP"
 11491  
 11492  	// StatefulRuleProtocolTcp is a StatefulRuleProtocol enum value
 11493  	StatefulRuleProtocolTcp = "TCP"
 11494  
 11495  	// StatefulRuleProtocolUdp is a StatefulRuleProtocol enum value
 11496  	StatefulRuleProtocolUdp = "UDP"
 11497  
 11498  	// StatefulRuleProtocolIcmp is a StatefulRuleProtocol enum value
 11499  	StatefulRuleProtocolIcmp = "ICMP"
 11500  
 11501  	// StatefulRuleProtocolHttp is a StatefulRuleProtocol enum value
 11502  	StatefulRuleProtocolHttp = "HTTP"
 11503  
 11504  	// StatefulRuleProtocolFtp is a StatefulRuleProtocol enum value
 11505  	StatefulRuleProtocolFtp = "FTP"
 11506  
 11507  	// StatefulRuleProtocolTls is a StatefulRuleProtocol enum value
 11508  	StatefulRuleProtocolTls = "TLS"
 11509  
 11510  	// StatefulRuleProtocolSmb is a StatefulRuleProtocol enum value
 11511  	StatefulRuleProtocolSmb = "SMB"
 11512  
 11513  	// StatefulRuleProtocolDns is a StatefulRuleProtocol enum value
 11514  	StatefulRuleProtocolDns = "DNS"
 11515  
 11516  	// StatefulRuleProtocolDcerpc is a StatefulRuleProtocol enum value
 11517  	StatefulRuleProtocolDcerpc = "DCERPC"
 11518  
 11519  	// StatefulRuleProtocolSsh is a StatefulRuleProtocol enum value
 11520  	StatefulRuleProtocolSsh = "SSH"
 11521  
 11522  	// StatefulRuleProtocolSmtp is a StatefulRuleProtocol enum value
 11523  	StatefulRuleProtocolSmtp = "SMTP"
 11524  
 11525  	// StatefulRuleProtocolImap is a StatefulRuleProtocol enum value
 11526  	StatefulRuleProtocolImap = "IMAP"
 11527  
 11528  	// StatefulRuleProtocolMsn is a StatefulRuleProtocol enum value
 11529  	StatefulRuleProtocolMsn = "MSN"
 11530  
 11531  	// StatefulRuleProtocolKrb5 is a StatefulRuleProtocol enum value
 11532  	StatefulRuleProtocolKrb5 = "KRB5"
 11533  
 11534  	// StatefulRuleProtocolIkev2 is a StatefulRuleProtocol enum value
 11535  	StatefulRuleProtocolIkev2 = "IKEV2"
 11536  
 11537  	// StatefulRuleProtocolTftp is a StatefulRuleProtocol enum value
 11538  	StatefulRuleProtocolTftp = "TFTP"
 11539  
 11540  	// StatefulRuleProtocolNtp is a StatefulRuleProtocol enum value
 11541  	StatefulRuleProtocolNtp = "NTP"
 11542  
 11543  	// StatefulRuleProtocolDhcp is a StatefulRuleProtocol enum value
 11544  	StatefulRuleProtocolDhcp = "DHCP"
 11545  )
 11546  
 11547  // StatefulRuleProtocol_Values returns all elements of the StatefulRuleProtocol enum
 11548  func StatefulRuleProtocol_Values() []string {
 11549  	return []string{
 11550  		StatefulRuleProtocolIp,
 11551  		StatefulRuleProtocolTcp,
 11552  		StatefulRuleProtocolUdp,
 11553  		StatefulRuleProtocolIcmp,
 11554  		StatefulRuleProtocolHttp,
 11555  		StatefulRuleProtocolFtp,
 11556  		StatefulRuleProtocolTls,
 11557  		StatefulRuleProtocolSmb,
 11558  		StatefulRuleProtocolDns,
 11559  		StatefulRuleProtocolDcerpc,
 11560  		StatefulRuleProtocolSsh,
 11561  		StatefulRuleProtocolSmtp,
 11562  		StatefulRuleProtocolImap,
 11563  		StatefulRuleProtocolMsn,
 11564  		StatefulRuleProtocolKrb5,
 11565  		StatefulRuleProtocolIkev2,
 11566  		StatefulRuleProtocolTftp,
 11567  		StatefulRuleProtocolNtp,
 11568  		StatefulRuleProtocolDhcp,
 11569  	}
 11570  }
 11571  
 11572  const (
 11573  	// TCPFlagFin is a TCPFlag enum value
 11574  	TCPFlagFin = "FIN"
 11575  
 11576  	// TCPFlagSyn is a TCPFlag enum value
 11577  	TCPFlagSyn = "SYN"
 11578  
 11579  	// TCPFlagRst is a TCPFlag enum value
 11580  	TCPFlagRst = "RST"
 11581  
 11582  	// TCPFlagPsh is a TCPFlag enum value
 11583  	TCPFlagPsh = "PSH"
 11584  
 11585  	// TCPFlagAck is a TCPFlag enum value
 11586  	TCPFlagAck = "ACK"
 11587  
 11588  	// TCPFlagUrg is a TCPFlag enum value
 11589  	TCPFlagUrg = "URG"
 11590  
 11591  	// TCPFlagEce is a TCPFlag enum value
 11592  	TCPFlagEce = "ECE"
 11593  
 11594  	// TCPFlagCwr is a TCPFlag enum value
 11595  	TCPFlagCwr = "CWR"
 11596  )
 11597  
 11598  // TCPFlag_Values returns all elements of the TCPFlag enum
 11599  func TCPFlag_Values() []string {
 11600  	return []string{
 11601  		TCPFlagFin,
 11602  		TCPFlagSyn,
 11603  		TCPFlagRst,
 11604  		TCPFlagPsh,
 11605  		TCPFlagAck,
 11606  		TCPFlagUrg,
 11607  		TCPFlagEce,
 11608  		TCPFlagCwr,
 11609  	}
 11610  }
 11611  
 11612  const (
 11613  	// TargetTypeTlsSni is a TargetType enum value
 11614  	TargetTypeTlsSni = "TLS_SNI"
 11615  
 11616  	// TargetTypeHttpHost is a TargetType enum value
 11617  	TargetTypeHttpHost = "HTTP_HOST"
 11618  )
 11619  
 11620  // TargetType_Values returns all elements of the TargetType enum
 11621  func TargetType_Values() []string {
 11622  	return []string{
 11623  		TargetTypeTlsSni,
 11624  		TargetTypeHttpHost,
 11625  	}
 11626  }