xref: /aosp_15_r20/external/googleapis/google/cloud/networkmanagement/v1/trace.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.networkmanagement.v1;
18
19import "google/api/field_behavior.proto";
20import "google/api/field_info.proto";
21
22option csharp_namespace = "Google.Cloud.NetworkManagement.V1";
23option go_package = "cloud.google.com/go/networkmanagement/apiv1/networkmanagementpb;networkmanagementpb";
24option java_multiple_files = true;
25option java_outer_classname = "TraceProto";
26option java_package = "com.google.cloud.networkmanagement.v1";
27option php_namespace = "Google\\Cloud\\NetworkManagement\\V1";
28option ruby_package = "Google::Cloud::NetworkManagement::V1";
29
30// Trace represents one simulated packet forwarding path.
31//
32//   * Each trace contains multiple ordered steps.
33//   * Each step is in a particular state with associated configuration.
34//   * State is categorized as final or non-final states.
35//   * Each final state has a reason associated.
36//   * Each trace must end with a final state (the last step).
37// ```
38//   |---------------------Trace----------------------|
39//   Step1(State) Step2(State) ---  StepN(State(final))
40// ```
41message Trace {
42  // Derived from the source and destination endpoints definition specified by
43  // user request, and validated by the data plane model.
44  // If there are multiple traces starting from different source locations, then
45  // the endpoint_info may be different between traces.
46  EndpointInfo endpoint_info = 1;
47
48  // A trace of a test contains multiple steps from the initial state to the
49  // final state (delivered, dropped, forwarded, or aborted).
50  //
51  // The steps are ordered by the processing sequence within the simulated
52  // network state machine. It is critical to preserve the order of the steps
53  // and avoid reordering or sorting them.
54  repeated Step steps = 2;
55
56  // ID of trace. For forward traces, this ID is unique for each trace. For
57  // return traces, it matches ID of associated forward trace. A single forward
58  // trace can be associated with none, one or more than one return trace.
59  int32 forward_trace_id = 4;
60}
61
62// A simulated forwarding path is composed of multiple steps.
63// Each step has a well-defined state and an associated configuration.
64message Step {
65  // Type of states that are defined in the network state machine.
66  // Each step in the packet trace is in a specific state.
67  enum State {
68    // Unspecified state.
69    STATE_UNSPECIFIED = 0;
70
71    // Initial state: packet originating from a Compute Engine instance.
72    // An InstanceInfo is populated with starting instance information.
73    START_FROM_INSTANCE = 1;
74
75    // Initial state: packet originating from the internet.
76    // The endpoint information is populated.
77    START_FROM_INTERNET = 2;
78
79    // Initial state: packet originating from a Google service.
80    // The google_service information is populated.
81    START_FROM_GOOGLE_SERVICE = 27;
82
83    // Initial state: packet originating from a VPC or on-premises network
84    // with internal source IP.
85    // If the source is a VPC network visible to the user, a NetworkInfo
86    // is populated with details of the network.
87    START_FROM_PRIVATE_NETWORK = 3;
88
89    // Initial state: packet originating from a Google Kubernetes Engine cluster
90    // master. A GKEMasterInfo is populated with starting instance information.
91    START_FROM_GKE_MASTER = 21;
92
93    // Initial state: packet originating from a Cloud SQL instance.
94    // A CloudSQLInstanceInfo is populated with starting instance information.
95    START_FROM_CLOUD_SQL_INSTANCE = 22;
96
97    // Initial state: packet originating from a Cloud Function.
98    // A CloudFunctionInfo is populated with starting function information.
99    START_FROM_CLOUD_FUNCTION = 23;
100
101    // Initial state: packet originating from an App Engine service version.
102    // An AppEngineVersionInfo is populated with starting version information.
103    START_FROM_APP_ENGINE_VERSION = 25;
104
105    // Initial state: packet originating from a Cloud Run revision.
106    // A CloudRunRevisionInfo is populated with starting revision information.
107    START_FROM_CLOUD_RUN_REVISION = 26;
108
109    // Initial state: packet originating from a Storage Bucket. Used only for
110    // return traces.
111    // The storage_bucket information is populated.
112    START_FROM_STORAGE_BUCKET = 29;
113
114    // Initial state: packet originating from a published service that uses
115    // Private Service Connect. Used only for return traces.
116    START_FROM_PSC_PUBLISHED_SERVICE = 30;
117
118    // Config checking state: verify ingress firewall rule.
119    APPLY_INGRESS_FIREWALL_RULE = 4;
120
121    // Config checking state: verify egress firewall rule.
122    APPLY_EGRESS_FIREWALL_RULE = 5;
123
124    // Config checking state: verify route.
125    APPLY_ROUTE = 6;
126
127    // Config checking state: match forwarding rule.
128    APPLY_FORWARDING_RULE = 7;
129
130    // Config checking state: verify load balancer backend configuration.
131    ANALYZE_LOAD_BALANCER_BACKEND = 28;
132
133    // Config checking state: packet sent or received under foreign IP
134    // address and allowed.
135    SPOOFING_APPROVED = 8;
136
137    // Forwarding state: arriving at a Compute Engine instance.
138    ARRIVE_AT_INSTANCE = 9;
139
140    // Forwarding state: arriving at a Compute Engine internal load balancer.
141    ARRIVE_AT_INTERNAL_LOAD_BALANCER = 10 [deprecated = true];
142
143    // Forwarding state: arriving at a Compute Engine external load balancer.
144    ARRIVE_AT_EXTERNAL_LOAD_BALANCER = 11 [deprecated = true];
145
146    // Forwarding state: arriving at a Cloud VPN gateway.
147    ARRIVE_AT_VPN_GATEWAY = 12;
148
149    // Forwarding state: arriving at a Cloud VPN tunnel.
150    ARRIVE_AT_VPN_TUNNEL = 13;
151
152    // Forwarding state: arriving at a VPC connector.
153    ARRIVE_AT_VPC_CONNECTOR = 24;
154
155    // Transition state: packet header translated.
156    NAT = 14;
157
158    // Transition state: original connection is terminated and a new proxied
159    // connection is initiated.
160    PROXY_CONNECTION = 15;
161
162    // Final state: packet could be delivered.
163    DELIVER = 16;
164
165    // Final state: packet could be dropped.
166    DROP = 17;
167
168    // Final state: packet could be forwarded to a network with an unknown
169    // configuration.
170    FORWARD = 18;
171
172    // Final state: analysis is aborted.
173    ABORT = 19;
174
175    // Special state: viewer of the test result does not have permission to
176    // see the configuration in this step.
177    VIEWER_PERMISSION_MISSING = 20;
178  }
179
180  // A description of the step. Usually this is a summary of the state.
181  string description = 1;
182
183  // Each step is in one of the pre-defined states.
184  State state = 2;
185
186  // This is a step that leads to the final state Drop.
187  bool causes_drop = 3;
188
189  // Project ID that contains the configuration this step is validating.
190  string project_id = 4;
191
192  // Configuration or metadata associated with each step.
193  // The configuration is filtered based on viewer's permission. If a viewer
194  // has no permission to view the configuration in this step, for non-final
195  // states a special state is populated (VIEWER_PERMISSION_MISSING), and for
196  // final state the configuration is cleared.
197  oneof step_info {
198    // Display information of a Compute Engine instance.
199    InstanceInfo instance = 5;
200
201    // Display information of a Compute Engine firewall rule.
202    FirewallInfo firewall = 6;
203
204    // Display information of a Compute Engine route.
205    RouteInfo route = 7;
206
207    // Display information of the source and destination under analysis.
208    // The endpoint information in an intermediate state may differ with the
209    // initial input, as it might be modified by state like NAT,
210    // or Connection Proxy.
211    EndpointInfo endpoint = 8;
212
213    // Display information of a Google service
214    GoogleServiceInfo google_service = 24;
215
216    // Display information of a Compute Engine forwarding rule.
217    ForwardingRuleInfo forwarding_rule = 9;
218
219    // Display information of a Compute Engine VPN gateway.
220    VpnGatewayInfo vpn_gateway = 10;
221
222    // Display information of a Compute Engine VPN tunnel.
223    VpnTunnelInfo vpn_tunnel = 11;
224
225    // Display information of a VPC connector.
226    VpcConnectorInfo vpc_connector = 21;
227
228    // Display information of the final state "deliver" and reason.
229    DeliverInfo deliver = 12;
230
231    // Display information of the final state "forward" and reason.
232    ForwardInfo forward = 13;
233
234    // Display information of the final state "abort" and reason.
235    AbortInfo abort = 14;
236
237    // Display information of the final state "drop" and reason.
238    DropInfo drop = 15;
239
240    // Display information of the load balancers. Deprecated in favor of the
241    // `load_balancer_backend_info` field, not used in new tests.
242    LoadBalancerInfo load_balancer = 16 [deprecated = true];
243
244    // Display information of a Google Cloud network.
245    NetworkInfo network = 17;
246
247    // Display information of a Google Kubernetes Engine cluster master.
248    GKEMasterInfo gke_master = 18;
249
250    // Display information of a Cloud SQL instance.
251    CloudSQLInstanceInfo cloud_sql_instance = 19;
252
253    // Display information of a Cloud Function.
254    CloudFunctionInfo cloud_function = 20;
255
256    // Display information of an App Engine service version.
257    AppEngineVersionInfo app_engine_version = 22;
258
259    // Display information of a Cloud Run revision.
260    CloudRunRevisionInfo cloud_run_revision = 23;
261
262    // Display information of a NAT.
263    NatInfo nat = 25;
264
265    // Display information of a ProxyConnection.
266    ProxyConnectionInfo proxy_connection = 26;
267
268    // Display information of a specific load balancer backend.
269    LoadBalancerBackendInfo load_balancer_backend_info = 27;
270
271    // Display information of a Storage Bucket. Used only for return traces.
272    StorageBucketInfo storage_bucket = 28;
273  }
274}
275
276// For display only. Metadata associated with a Compute Engine instance.
277message InstanceInfo {
278  // Name of a Compute Engine instance.
279  string display_name = 1;
280
281  // URI of a Compute Engine instance.
282  string uri = 2;
283
284  // Name of the network interface of a Compute Engine instance.
285  string interface = 3;
286
287  // URI of a Compute Engine network.
288  string network_uri = 4;
289
290  // Internal IP address of the network interface.
291  string internal_ip = 5;
292
293  // External IP address of the network interface.
294  string external_ip = 6;
295
296  // Network tags configured on the instance.
297  repeated string network_tags = 7;
298
299  // Service account authorized for the instance.
300  string service_account = 8 [deprecated = true];
301}
302
303// For display only. Metadata associated with a Compute Engine network.
304message NetworkInfo {
305  // Name of a Compute Engine network.
306  string display_name = 1;
307
308  // URI of a Compute Engine network.
309  string uri = 2;
310
311  // The IP range that matches the test.
312  string matched_ip_range = 4;
313}
314
315// For display only. Metadata associated with a VPC firewall rule, an implied
316// VPC firewall rule, or a hierarchical firewall policy rule.
317message FirewallInfo {
318  // The firewall rule's type.
319  enum FirewallRuleType {
320    // Unspecified type.
321    FIREWALL_RULE_TYPE_UNSPECIFIED = 0;
322
323    // Hierarchical firewall policy rule. For details, see
324    // [Hierarchical firewall policies
325    // overview](https://cloud.google.com/vpc/docs/firewall-policies).
326    HIERARCHICAL_FIREWALL_POLICY_RULE = 1;
327
328    // VPC firewall rule. For details, see
329    // [VPC firewall rules
330    // overview](https://cloud.google.com/vpc/docs/firewalls).
331    VPC_FIREWALL_RULE = 2;
332
333    // Implied VPC firewall rule. For details, see
334    // [Implied
335    // rules](https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules).
336    IMPLIED_VPC_FIREWALL_RULE = 3;
337
338    // Implicit firewall rules that are managed by serverless VPC access to
339    // allow ingress access. They are not visible in the Google Cloud console.
340    // For details, see [VPC connector's implicit
341    // rules](https://cloud.google.com/functions/docs/networking/connecting-vpc#restrict-access).
342    SERVERLESS_VPC_ACCESS_MANAGED_FIREWALL_RULE = 4;
343
344    // Global network firewall policy rule.
345    // For details, see [Network firewall
346    // policies](https://cloud.google.com/vpc/docs/network-firewall-policies).
347    NETWORK_FIREWALL_POLICY_RULE = 5;
348
349    // Regional network firewall policy rule.
350    // For details, see [Regional network firewall
351    // policies](https://cloud.google.com/firewall/docs/regional-firewall-policies).
352    NETWORK_REGIONAL_FIREWALL_POLICY_RULE = 6;
353
354    // Firewall policy rule containing attributes not yet supported in
355    // Connectivity tests. Firewall analysis is skipped if such a rule can
356    // potentially be matched. Please see the [list of unsupported
357    // configurations](https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/concepts/overview#unsupported-configs).
358    UNSUPPORTED_FIREWALL_POLICY_RULE = 100;
359
360    // Tracking state for response traffic created when request traffic goes
361    // through allow firewall rule.
362    // For details, see [firewall rules
363    // specifications](https://cloud.google.com/firewall/docs/firewalls#specifications)
364    TRACKING_STATE = 101;
365  }
366
367  // The display name of the VPC firewall rule. This field is not applicable
368  // to hierarchical firewall policy rules.
369  string display_name = 1;
370
371  // The URI of the VPC firewall rule. This field is not applicable to
372  // implied firewall rules or hierarchical firewall policy rules.
373  string uri = 2;
374
375  // Possible values: INGRESS, EGRESS
376  string direction = 3;
377
378  // Possible values: ALLOW, DENY, APPLY_SECURITY_PROFILE_GROUP
379  string action = 4;
380
381  // The priority of the firewall rule.
382  int32 priority = 5;
383
384  // The URI of the VPC network that the firewall rule is associated with.
385  // This field is not applicable to hierarchical firewall policy rules.
386  string network_uri = 6;
387
388  // The target tags defined by the VPC firewall rule. This field is not
389  // applicable to hierarchical firewall policy rules.
390  repeated string target_tags = 7;
391
392  // The target service accounts specified by the firewall rule.
393  repeated string target_service_accounts = 8;
394
395  // The hierarchical firewall policy that this rule is associated with.
396  // This field is not applicable to VPC firewall rules.
397  string policy = 9;
398
399  // The firewall rule's type.
400  FirewallRuleType firewall_rule_type = 10;
401}
402
403// For display only. Metadata associated with a Compute Engine route.
404message RouteInfo {
405  // Type of route:
406  enum RouteType {
407    // Unspecified type. Default value.
408    ROUTE_TYPE_UNSPECIFIED = 0;
409
410    // Route is a subnet route automatically created by the system.
411    SUBNET = 1;
412
413    // Static route created by the user, including the default route to the
414    // internet.
415    STATIC = 2;
416
417    // Dynamic route exchanged between BGP peers.
418    DYNAMIC = 3;
419
420    // A subnet route received from peering network.
421    PEERING_SUBNET = 4;
422
423    // A static route received from peering network.
424    PEERING_STATIC = 5;
425
426    // A dynamic route received from peering network.
427    PEERING_DYNAMIC = 6;
428
429    // Policy based route.
430    POLICY_BASED = 7;
431  }
432
433  // Type of next hop:
434  enum NextHopType {
435    // Unspecified type. Default value.
436    NEXT_HOP_TYPE_UNSPECIFIED = 0;
437
438    // Next hop is an IP address.
439    NEXT_HOP_IP = 1;
440
441    // Next hop is a Compute Engine instance.
442    NEXT_HOP_INSTANCE = 2;
443
444    // Next hop is a VPC network gateway.
445    NEXT_HOP_NETWORK = 3;
446
447    // Next hop is a peering VPC.
448    NEXT_HOP_PEERING = 4;
449
450    // Next hop is an interconnect.
451    NEXT_HOP_INTERCONNECT = 5;
452
453    // Next hop is a VPN tunnel.
454    NEXT_HOP_VPN_TUNNEL = 6;
455
456    // Next hop is a VPN gateway. This scenario only happens when tracing
457    // connectivity from an on-premises network to Google Cloud through a VPN.
458    // The analysis simulates a packet departing from the on-premises network
459    // through a VPN tunnel and arriving at a Cloud VPN gateway.
460    NEXT_HOP_VPN_GATEWAY = 7;
461
462    // Next hop is an internet gateway.
463    NEXT_HOP_INTERNET_GATEWAY = 8;
464
465    // Next hop is blackhole; that is, the next hop either does not exist or is
466    // not running.
467    NEXT_HOP_BLACKHOLE = 9;
468
469    // Next hop is the forwarding rule of an Internal Load Balancer.
470    NEXT_HOP_ILB = 10;
471
472    // Next hop is a
473    // [router appliance
474    // instance](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/ra-overview).
475    NEXT_HOP_ROUTER_APPLIANCE = 11;
476
477    // Next hop is an NCC hub.
478    NEXT_HOP_NCC_HUB = 12;
479  }
480
481  // Indicates where routes are applicable.
482  enum RouteScope {
483    // Unspecified scope. Default value.
484    ROUTE_SCOPE_UNSPECIFIED = 0;
485
486    // Route is applicable to packets in Network.
487    NETWORK = 1;
488
489    // Route is applicable to packets using NCC Hub's routing table.
490    NCC_HUB = 2;
491  }
492
493  // Type of route.
494  RouteType route_type = 8;
495
496  // Type of next hop.
497  NextHopType next_hop_type = 9;
498
499  // Indicates where route is applicable.
500  RouteScope route_scope = 14;
501
502  // Name of a route.
503  string display_name = 1;
504
505  // URI of a route.
506  // Dynamic, peering static and peering dynamic routes do not have an URI.
507  // Advertised route from Google Cloud VPC to on-premises network also does
508  // not have an URI.
509  string uri = 2;
510
511  // Destination IP range of the route.
512  string dest_ip_range = 3;
513
514  // Next hop of the route.
515  string next_hop = 4;
516
517  // URI of a Compute Engine network. NETWORK routes only.
518  string network_uri = 5;
519
520  // Priority of the route.
521  int32 priority = 6;
522
523  // Instance tags of the route.
524  repeated string instance_tags = 7;
525
526  // Source IP address range of the route. Policy based routes only.
527  string src_ip_range = 10;
528
529  // Destination port ranges of the route. Policy based routes only.
530  repeated string dest_port_ranges = 11;
531
532  // Source port ranges of the route. Policy based routes only.
533  repeated string src_port_ranges = 12;
534
535  // Protocols of the route. Policy based routes only.
536  repeated string protocols = 13;
537
538  // URI of a NCC Hub. NCC_HUB routes only.
539  optional string ncc_hub_uri = 15;
540
541  // URI of a NCC Spoke. NCC_HUB routes only.
542  optional string ncc_spoke_uri = 16;
543}
544
545// For display only. Details of a Google Service sending packets to a
546// VPC network. Although the source IP might be a publicly routable address,
547// some Google Services use special routes within Google production
548// infrastructure to reach Compute Engine Instances.
549// https://cloud.google.com/vpc/docs/routes#special_return_paths
550message GoogleServiceInfo {
551  // Recognized type of a Google Service.
552  enum GoogleServiceType {
553    // Unspecified Google Service.
554    GOOGLE_SERVICE_TYPE_UNSPECIFIED = 0;
555
556    // Identity aware proxy.
557    // https://cloud.google.com/iap/docs/using-tcp-forwarding
558    IAP = 1;
559
560    // One of two services sharing IP ranges:
561    // * Load Balancer proxy
562    // * Centralized Health Check prober
563    // https://cloud.google.com/load-balancing/docs/firewall-rules
564    GFE_PROXY_OR_HEALTH_CHECK_PROBER = 2;
565
566    // Connectivity from Cloud DNS to forwarding targets or alternate name
567    // servers that use private routing.
568    // https://cloud.google.com/dns/docs/zones/forwarding-zones#firewall-rules
569    // https://cloud.google.com/dns/docs/policies#firewall-rules
570    CLOUD_DNS = 3;
571
572    // private.googleapis.com and restricted.googleapis.com
573    GOOGLE_API = 4;
574
575    // Google API via Private Service Connect.
576    // https://cloud.google.com/vpc/docs/configure-private-service-connect-apis
577    GOOGLE_API_PSC = 5;
578
579    // Google API via VPC Service Controls.
580    // https://cloud.google.com/vpc/docs/configure-private-service-connect-apis
581    GOOGLE_API_VPC_SC = 6;
582  }
583
584  // Source IP address.
585  string source_ip = 1;
586
587  // Recognized type of a Google Service.
588  GoogleServiceType google_service_type = 2;
589}
590
591// For display only. Metadata associated with a Compute Engine forwarding rule.
592message ForwardingRuleInfo {
593  // Name of a Compute Engine forwarding rule.
594  string display_name = 1;
595
596  // URI of a Compute Engine forwarding rule.
597  string uri = 2;
598
599  // Protocol defined in the forwarding rule that matches the test.
600  string matched_protocol = 3;
601
602  // Port range defined in the forwarding rule that matches the test.
603  string matched_port_range = 6;
604
605  // VIP of the forwarding rule.
606  string vip = 4;
607
608  // Target type of the forwarding rule.
609  string target = 5;
610
611  // Network URI. Only valid for Internal Load Balancer.
612  string network_uri = 7;
613}
614
615// For display only. Metadata associated with a load balancer.
616message LoadBalancerInfo {
617  // The type definition for a load balancer:
618  enum LoadBalancerType {
619    // Type is unspecified.
620    LOAD_BALANCER_TYPE_UNSPECIFIED = 0;
621
622    // Internal TCP/UDP load balancer.
623    INTERNAL_TCP_UDP = 1;
624
625    // Network TCP/UDP load balancer.
626    NETWORK_TCP_UDP = 2;
627
628    // HTTP(S) proxy load balancer.
629    HTTP_PROXY = 3;
630
631    // TCP proxy load balancer.
632    TCP_PROXY = 4;
633
634    // SSL proxy load balancer.
635    SSL_PROXY = 5;
636  }
637
638  // The type definition for a load balancer backend configuration:
639  enum BackendType {
640    // Type is unspecified.
641    BACKEND_TYPE_UNSPECIFIED = 0;
642
643    // Backend Service as the load balancer's backend.
644    BACKEND_SERVICE = 1;
645
646    // Target Pool as the load balancer's backend.
647    TARGET_POOL = 2;
648
649    // Target Instance as the load balancer's backend.
650    TARGET_INSTANCE = 3;
651  }
652
653  // Type of the load balancer.
654  LoadBalancerType load_balancer_type = 1;
655
656  // URI of the health check for the load balancer. Deprecated and no longer
657  // populated as different load balancer backends might have different health
658  // checks.
659  string health_check_uri = 2 [deprecated = true];
660
661  // Information for the loadbalancer backends.
662  repeated LoadBalancerBackend backends = 3;
663
664  // Type of load balancer's backend configuration.
665  BackendType backend_type = 4;
666
667  // Backend configuration URI.
668  string backend_uri = 5;
669}
670
671// For display only. Metadata associated with a specific load balancer backend.
672message LoadBalancerBackend {
673  // State of a health check firewall configuration:
674  enum HealthCheckFirewallState {
675    // State is unspecified. Default state if not populated.
676    HEALTH_CHECK_FIREWALL_STATE_UNSPECIFIED = 0;
677
678    // There are configured firewall rules to allow health check probes to the
679    // backend.
680    CONFIGURED = 1;
681
682    // There are firewall rules configured to allow partial health check ranges
683    // or block all health check ranges.
684    // If a health check probe is sent from denied IP ranges,
685    // the health check to the backend will fail. Then, the backend will be
686    // marked unhealthy and will not receive traffic sent to the load balancer.
687    MISCONFIGURED = 2;
688  }
689
690  // Name of a Compute Engine instance or network endpoint.
691  string display_name = 1;
692
693  // URI of a Compute Engine instance or network endpoint.
694  string uri = 2;
695
696  // State of the health check firewall configuration.
697  HealthCheckFirewallState health_check_firewall_state = 3;
698
699  // A list of firewall rule URIs allowing probes from health check IP ranges.
700  repeated string health_check_allowing_firewall_rules = 4;
701
702  // A list of firewall rule URIs blocking probes from health check IP ranges.
703  repeated string health_check_blocking_firewall_rules = 5;
704}
705
706// For display only. Metadata associated with a Compute Engine VPN gateway.
707message VpnGatewayInfo {
708  // Name of a VPN gateway.
709  string display_name = 1;
710
711  // URI of a VPN gateway.
712  string uri = 2;
713
714  // URI of a Compute Engine network where the VPN gateway is configured.
715  string network_uri = 3;
716
717  // IP address of the VPN gateway.
718  string ip_address = 4;
719
720  // A VPN tunnel that is associated with this VPN gateway.
721  // There may be multiple VPN tunnels configured on a VPN gateway, and only
722  // the one relevant to the test is displayed.
723  string vpn_tunnel_uri = 5;
724
725  // Name of a Google Cloud region where this VPN gateway is configured.
726  string region = 6;
727}
728
729// For display only. Metadata associated with a Compute Engine VPN tunnel.
730message VpnTunnelInfo {
731  // Types of VPN routing policy. For details, refer to [Networks and Tunnel
732  // routing](https://cloud.google.com/network-connectivity/docs/vpn/concepts/choosing-networks-routing/).
733  enum RoutingType {
734    // Unspecified type. Default value.
735    ROUTING_TYPE_UNSPECIFIED = 0;
736
737    // Route based VPN.
738    ROUTE_BASED = 1;
739
740    // Policy based routing.
741    POLICY_BASED = 2;
742
743    // Dynamic (BGP) routing.
744    DYNAMIC = 3;
745  }
746
747  // Name of a VPN tunnel.
748  string display_name = 1;
749
750  // URI of a VPN tunnel.
751  string uri = 2;
752
753  // URI of the VPN gateway at local end of the tunnel.
754  string source_gateway = 3;
755
756  // URI of a VPN gateway at remote end of the tunnel.
757  string remote_gateway = 4;
758
759  // Remote VPN gateway's IP address.
760  string remote_gateway_ip = 5;
761
762  // Local VPN gateway's IP address.
763  string source_gateway_ip = 6;
764
765  // URI of a Compute Engine network where the VPN tunnel is configured.
766  string network_uri = 7;
767
768  // Name of a Google Cloud region where this VPN tunnel is configured.
769  string region = 8;
770
771  // Type of the routing policy.
772  RoutingType routing_type = 9;
773}
774
775// For display only. The specification of the endpoints for the test.
776// EndpointInfo is derived from source and destination Endpoint and validated
777// by the backend data plane model.
778message EndpointInfo {
779  // Source IP address.
780  string source_ip = 1;
781
782  // Destination IP address.
783  string destination_ip = 2;
784
785  // IP protocol in string format, for example: "TCP", "UDP", "ICMP".
786  string protocol = 3;
787
788  // Source port. Only valid when protocol is TCP or UDP.
789  int32 source_port = 4;
790
791  // Destination port. Only valid when protocol is TCP or UDP.
792  int32 destination_port = 5;
793
794  // URI of the network where this packet originates from.
795  string source_network_uri = 6;
796
797  // URI of the network where this packet is sent to.
798  string destination_network_uri = 7;
799
800  // URI of the source telemetry agent this packet originates from.
801  string source_agent_uri = 8;
802}
803
804// Details of the final state "deliver" and associated resource.
805message DeliverInfo {
806  // Deliver target types:
807  enum Target {
808    // Target not specified.
809    TARGET_UNSPECIFIED = 0;
810
811    // Target is a Compute Engine instance.
812    INSTANCE = 1;
813
814    // Target is the internet.
815    INTERNET = 2;
816
817    // Target is a Google API.
818    GOOGLE_API = 3;
819
820    // Target is a Google Kubernetes Engine cluster master.
821    GKE_MASTER = 4;
822
823    // Target is a Cloud SQL instance.
824    CLOUD_SQL_INSTANCE = 5;
825
826    // Target is a published service that uses [Private Service
827    // Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services).
828    PSC_PUBLISHED_SERVICE = 6;
829
830    // Target is all Google APIs that use [Private Service
831    // Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-apis).
832    PSC_GOOGLE_API = 7;
833
834    // Target is a VPC-SC that uses [Private Service
835    // Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-apis).
836    PSC_VPC_SC = 8;
837
838    // Target is a serverless network endpoint group.
839    SERVERLESS_NEG = 9;
840
841    // Target is a Cloud Storage bucket.
842    STORAGE_BUCKET = 10;
843
844    // Target is a private network. Used only for return traces.
845    PRIVATE_NETWORK = 11;
846
847    // Target is a Cloud Function. Used only for return traces.
848    CLOUD_FUNCTION = 12;
849
850    // Target is a App Engine service version. Used only for return traces.
851    APP_ENGINE_VERSION = 13;
852
853    // Target is a Cloud Run revision. Used only for return traces.
854    CLOUD_RUN_REVISION = 14;
855  }
856
857  // Target type where the packet is delivered to.
858  Target target = 1;
859
860  // URI of the resource that the packet is delivered to.
861  string resource_uri = 2;
862
863  // IP address of the target (if applicable).
864  string ip_address = 3 [(google.api.field_info).format = IPV4_OR_IPV6];
865}
866
867// Details of the final state "forward" and associated resource.
868message ForwardInfo {
869  // Forward target types.
870  enum Target {
871    // Target not specified.
872    TARGET_UNSPECIFIED = 0;
873
874    // Forwarded to a VPC peering network.
875    PEERING_VPC = 1;
876
877    // Forwarded to a Cloud VPN gateway.
878    VPN_GATEWAY = 2;
879
880    // Forwarded to a Cloud Interconnect connection.
881    INTERCONNECT = 3;
882
883    // Forwarded to a Google Kubernetes Engine Container cluster master.
884    GKE_MASTER = 4 [deprecated = true];
885
886    // Forwarded to the next hop of a custom route imported from a peering VPC.
887    IMPORTED_CUSTOM_ROUTE_NEXT_HOP = 5;
888
889    // Forwarded to a Cloud SQL instance.
890    CLOUD_SQL_INSTANCE = 6 [deprecated = true];
891
892    // Forwarded to a VPC network in another project.
893    ANOTHER_PROJECT = 7;
894
895    // Forwarded to an NCC Hub.
896    NCC_HUB = 8;
897
898    // Forwarded to a router appliance.
899    ROUTER_APPLIANCE = 9;
900  }
901
902  // Target type where this packet is forwarded to.
903  Target target = 1;
904
905  // URI of the resource that the packet is forwarded to.
906  string resource_uri = 2;
907
908  // IP address of the target (if applicable).
909  string ip_address = 3 [(google.api.field_info).format = IPV4_OR_IPV6];
910}
911
912// Details of the final state "abort" and associated resource.
913message AbortInfo {
914  // Abort cause types:
915  enum Cause {
916    // Cause is unspecified.
917    CAUSE_UNSPECIFIED = 0;
918
919    // Aborted due to unknown network. Deprecated, not used in the new tests.
920    UNKNOWN_NETWORK = 1 [deprecated = true];
921
922    // Aborted because no project information can be derived from the test
923    // input. Deprecated, not used in the new tests.
924    UNKNOWN_PROJECT = 3 [deprecated = true];
925
926    // Aborted because traffic is sent from a public IP to an instance without
927    // an external IP. Deprecated, not used in the new tests.
928    NO_EXTERNAL_IP = 7 [deprecated = true];
929
930    // Aborted because none of the traces matches destination information
931    // specified in the input test request. Deprecated, not used in the new
932    // tests.
933    UNINTENDED_DESTINATION = 8 [deprecated = true];
934
935    // Aborted because the source endpoint could not be found. Deprecated, not
936    // used in the new tests.
937    SOURCE_ENDPOINT_NOT_FOUND = 11 [deprecated = true];
938
939    // Aborted because the source network does not match the source endpoint.
940    // Deprecated, not used in the new tests.
941    MISMATCHED_SOURCE_NETWORK = 12 [deprecated = true];
942
943    // Aborted because the destination endpoint could not be found. Deprecated,
944    // not used in the new tests.
945    DESTINATION_ENDPOINT_NOT_FOUND = 13 [deprecated = true];
946
947    // Aborted because the destination network does not match the destination
948    // endpoint. Deprecated, not used in the new tests.
949    MISMATCHED_DESTINATION_NETWORK = 14 [deprecated = true];
950
951    // Aborted because no endpoint with the packet's destination IP address is
952    // found.
953    UNKNOWN_IP = 2;
954
955    // Aborted because the source IP address doesn't belong to any of the
956    // subnets of the source VPC network.
957    SOURCE_IP_ADDRESS_NOT_IN_SOURCE_NETWORK = 23;
958
959    // Aborted because user lacks permission to access all or part of the
960    // network configurations required to run the test.
961    PERMISSION_DENIED = 4;
962
963    // Aborted because user lacks permission to access Cloud NAT configs
964    // required to run the test.
965    PERMISSION_DENIED_NO_CLOUD_NAT_CONFIGS = 28;
966
967    // Aborted because user lacks permission to access Network endpoint group
968    // endpoint configs required to run the test.
969    PERMISSION_DENIED_NO_NEG_ENDPOINT_CONFIGS = 29;
970
971    // Aborted because no valid source or destination endpoint is derived from
972    // the input test request.
973    NO_SOURCE_LOCATION = 5;
974
975    // Aborted because the source or destination endpoint specified in
976    // the request is invalid. Some examples:
977    // - The request might contain malformed resource URI, project ID, or IP
978    // address.
979    // - The request might contain inconsistent information (for example, the
980    // request might include both the instance and the network, but the instance
981    // might not have a NIC in that network).
982    INVALID_ARGUMENT = 6;
983
984    // Aborted because the number of steps in the trace exceeds a certain
985    // limit. It might be caused by a routing loop.
986    TRACE_TOO_LONG = 9;
987
988    // Aborted due to internal server error.
989    INTERNAL_ERROR = 10;
990
991    // Aborted because the test scenario is not supported.
992    UNSUPPORTED = 15;
993
994    // Aborted because the source and destination resources have no common IP
995    // version.
996    MISMATCHED_IP_VERSION = 16;
997
998    // Aborted because the connection between the control plane and the node of
999    // the source cluster is initiated by the node and managed by the
1000    // Konnectivity proxy.
1001    GKE_KONNECTIVITY_PROXY_UNSUPPORTED = 17;
1002
1003    // Aborted because expected resource configuration was missing.
1004    RESOURCE_CONFIG_NOT_FOUND = 18;
1005
1006    // Aborted because expected VM instance configuration was missing.
1007    VM_INSTANCE_CONFIG_NOT_FOUND = 24;
1008
1009    // Aborted because expected network configuration was missing.
1010    NETWORK_CONFIG_NOT_FOUND = 25;
1011
1012    // Aborted because expected firewall configuration was missing.
1013    FIREWALL_CONFIG_NOT_FOUND = 26;
1014
1015    // Aborted because expected route configuration was missing.
1016    ROUTE_CONFIG_NOT_FOUND = 27;
1017
1018    // Aborted because a PSC endpoint selection for the Google-managed service
1019    // is ambiguous (several PSC endpoints satisfy test input).
1020    GOOGLE_MANAGED_SERVICE_AMBIGUOUS_PSC_ENDPOINT = 19;
1021
1022    // Aborted because tests with a PSC-based Cloud SQL instance as a source are
1023    // not supported.
1024    SOURCE_PSC_CLOUD_SQL_UNSUPPORTED = 20;
1025
1026    // Aborted because tests with a forwarding rule as a source are not
1027    // supported.
1028    SOURCE_FORWARDING_RULE_UNSUPPORTED = 21;
1029
1030    // Aborted because one of the endpoints is a non-routable IP address
1031    // (loopback, link-local, etc).
1032    NON_ROUTABLE_IP_ADDRESS = 22;
1033
1034    // Aborted due to an unknown issue in the Google-managed project.
1035    UNKNOWN_ISSUE_IN_GOOGLE_MANAGED_PROJECT = 30;
1036
1037    // Aborted due to an unsupported configuration of the Google-managed
1038    // project.
1039    UNSUPPORTED_GOOGLE_MANAGED_PROJECT_CONFIG = 31;
1040  }
1041
1042  // Causes that the analysis is aborted.
1043  Cause cause = 1;
1044
1045  // URI of the resource that caused the abort.
1046  string resource_uri = 2;
1047
1048  // IP address that caused the abort.
1049  string ip_address = 4 [(google.api.field_info).format = IPV4_OR_IPV6];
1050
1051  // List of project IDs the user specified in the request but lacks access to.
1052  // In this case, analysis is aborted with the PERMISSION_DENIED cause.
1053  repeated string projects_missing_permission = 3;
1054}
1055
1056// Details of the final state "drop" and associated resource.
1057message DropInfo {
1058  // Drop cause types:
1059  enum Cause {
1060    // Cause is unspecified.
1061    CAUSE_UNSPECIFIED = 0;
1062
1063    // Destination external address cannot be resolved to a known target. If
1064    // the address is used in a Google Cloud project, provide the project ID
1065    // as test input.
1066    UNKNOWN_EXTERNAL_ADDRESS = 1;
1067
1068    // A Compute Engine instance can only send or receive a packet with a
1069    // foreign IP address if ip_forward is enabled.
1070    FOREIGN_IP_DISALLOWED = 2;
1071
1072    // Dropped due to a firewall rule, unless allowed due to connection
1073    // tracking.
1074    FIREWALL_RULE = 3;
1075
1076    // Dropped due to no matching routes.
1077    NO_ROUTE = 4;
1078
1079    // Dropped due to invalid route. Route's next hop is a blackhole.
1080    ROUTE_BLACKHOLE = 5;
1081
1082    // Packet is sent to a wrong (unintended) network. Example: you trace a
1083    // packet from VM1:Network1 to VM2:Network2, however, the route configured
1084    // in Network1 sends the packet destined for VM2's IP address to Network3.
1085    ROUTE_WRONG_NETWORK = 6;
1086
1087    // Route's next hop IP address cannot be resolved to a GCP resource.
1088    ROUTE_NEXT_HOP_IP_ADDRESS_NOT_RESOLVED = 42;
1089
1090    // Route's next hop resource is not found.
1091    ROUTE_NEXT_HOP_RESOURCE_NOT_FOUND = 43;
1092
1093    // Route's next hop instance doesn't have a NIC in the route's network.
1094    ROUTE_NEXT_HOP_INSTANCE_WRONG_NETWORK = 49;
1095
1096    // Route's next hop IP address is not a primary IP address of the next hop
1097    // instance.
1098    ROUTE_NEXT_HOP_INSTANCE_NON_PRIMARY_IP = 50;
1099
1100    // Route's next hop forwarding rule doesn't match next hop IP address.
1101    ROUTE_NEXT_HOP_FORWARDING_RULE_IP_MISMATCH = 51;
1102
1103    // Route's next hop VPN tunnel is down (does not have valid IKE SAs).
1104    ROUTE_NEXT_HOP_VPN_TUNNEL_NOT_ESTABLISHED = 52;
1105
1106    // Route's next hop forwarding rule type is invalid (it's not a forwarding
1107    // rule of the internal passthrough load balancer).
1108    ROUTE_NEXT_HOP_FORWARDING_RULE_TYPE_INVALID = 53;
1109
1110    // Packet is sent from the Internet to the private IPv6 address.
1111    NO_ROUTE_FROM_INTERNET_TO_PRIVATE_IPV6_ADDRESS = 44;
1112
1113    // The packet does not match a policy-based VPN tunnel local selector.
1114    VPN_TUNNEL_LOCAL_SELECTOR_MISMATCH = 45;
1115
1116    // The packet does not match a policy-based VPN tunnel remote selector.
1117    VPN_TUNNEL_REMOTE_SELECTOR_MISMATCH = 46;
1118
1119    // Packet with internal destination address sent to the internet gateway.
1120    PRIVATE_TRAFFIC_TO_INTERNET = 7;
1121
1122    // Instance with only an internal IP address tries to access Google API and
1123    // services, but private Google access is not enabled in the subnet.
1124    PRIVATE_GOOGLE_ACCESS_DISALLOWED = 8;
1125
1126    // Source endpoint tries to access Google API and services through the VPN
1127    // tunnel to another network, but Private Google Access needs to be enabled
1128    // in the source endpoint network.
1129    PRIVATE_GOOGLE_ACCESS_VIA_VPN_TUNNEL_UNSUPPORTED = 47;
1130
1131    // Instance with only an internal IP address tries to access external hosts,
1132    // but Cloud NAT is not enabled in the subnet, unless special configurations
1133    // on a VM allow this connection.
1134    NO_EXTERNAL_ADDRESS = 9;
1135
1136    // Destination internal address cannot be resolved to a known target. If
1137    // this is a shared VPC scenario, verify if the service project ID is
1138    // provided as test input. Otherwise, verify if the IP address is being
1139    // used in the project.
1140    UNKNOWN_INTERNAL_ADDRESS = 10;
1141
1142    // Forwarding rule's protocol and ports do not match the packet header.
1143    FORWARDING_RULE_MISMATCH = 11;
1144
1145    // Forwarding rule does not have backends configured.
1146    FORWARDING_RULE_NO_INSTANCES = 12;
1147
1148    // Firewalls block the health check probes to the backends and cause
1149    // the backends to be unavailable for traffic from the load balancer.
1150    // For more details, see [Health check firewall
1151    // rules](https://cloud.google.com/load-balancing/docs/health-checks#firewall_rules).
1152    FIREWALL_BLOCKING_LOAD_BALANCER_BACKEND_HEALTH_CHECK = 13;
1153
1154    // Packet is sent from or to a Compute Engine instance that is not in a
1155    // running state.
1156    INSTANCE_NOT_RUNNING = 14;
1157
1158    // Packet sent from or to a GKE cluster that is not in running state.
1159    GKE_CLUSTER_NOT_RUNNING = 27;
1160
1161    // Packet sent from or to a Cloud SQL instance that is not in running state.
1162    CLOUD_SQL_INSTANCE_NOT_RUNNING = 28;
1163
1164    // The type of traffic is blocked and the user cannot configure a firewall
1165    // rule to enable it. See [Always blocked
1166    // traffic](https://cloud.google.com/vpc/docs/firewalls#blockedtraffic) for
1167    // more details.
1168    TRAFFIC_TYPE_BLOCKED = 15;
1169
1170    // Access to Google Kubernetes Engine cluster master's endpoint is not
1171    // authorized. See [Access to the cluster
1172    // endpoints](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#access_to_the_cluster_endpoints)
1173    // for more details.
1174    GKE_MASTER_UNAUTHORIZED_ACCESS = 16;
1175
1176    // Access to the Cloud SQL instance endpoint is not authorized.
1177    // See [Authorizing with authorized
1178    // networks](https://cloud.google.com/sql/docs/mysql/authorize-networks) for
1179    // more details.
1180    CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS = 17;
1181
1182    // Packet was dropped inside Google Kubernetes Engine Service.
1183    DROPPED_INSIDE_GKE_SERVICE = 18;
1184
1185    // Packet was dropped inside Cloud SQL Service.
1186    DROPPED_INSIDE_CLOUD_SQL_SERVICE = 19;
1187
1188    // Packet was dropped because there is no peering between the originating
1189    // network and the Google Managed Services Network.
1190    GOOGLE_MANAGED_SERVICE_NO_PEERING = 20;
1191
1192    // Packet was dropped because the Google-managed service uses Private
1193    // Service Connect (PSC), but the PSC endpoint is not found in the project.
1194    GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT = 38;
1195
1196    // Packet was dropped because the GKE cluster uses Private Service Connect
1197    // (PSC), but the PSC endpoint is not found in the project.
1198    GKE_PSC_ENDPOINT_MISSING = 36;
1199
1200    // Packet was dropped because the Cloud SQL instance has neither a private
1201    // nor a public IP address.
1202    CLOUD_SQL_INSTANCE_NO_IP_ADDRESS = 21;
1203
1204    // Packet was dropped because a GKE cluster private endpoint is
1205    // unreachable from a region different from the cluster's region.
1206    GKE_CONTROL_PLANE_REGION_MISMATCH = 30;
1207
1208    // Packet sent from a public GKE cluster control plane to a private
1209    // IP address.
1210    PUBLIC_GKE_CONTROL_PLANE_TO_PRIVATE_DESTINATION = 31;
1211
1212    // Packet was dropped because there is no route from a GKE cluster
1213    // control plane to a destination network.
1214    GKE_CONTROL_PLANE_NO_ROUTE = 32;
1215
1216    // Packet sent from a Cloud SQL instance to an external IP address is not
1217    // allowed. The Cloud SQL instance is not configured to send packets to
1218    // external IP addresses.
1219    CLOUD_SQL_INSTANCE_NOT_CONFIGURED_FOR_EXTERNAL_TRAFFIC = 33;
1220
1221    // Packet sent from a Cloud SQL instance with only a public IP address to a
1222    // private IP address.
1223    PUBLIC_CLOUD_SQL_INSTANCE_TO_PRIVATE_DESTINATION = 34;
1224
1225    // Packet was dropped because there is no route from a Cloud SQL
1226    // instance to a destination network.
1227    CLOUD_SQL_INSTANCE_NO_ROUTE = 35;
1228
1229    // Packet could be dropped because the Cloud Function is not in an active
1230    // status.
1231    CLOUD_FUNCTION_NOT_ACTIVE = 22;
1232
1233    // Packet could be dropped because no VPC connector is set.
1234    VPC_CONNECTOR_NOT_SET = 23;
1235
1236    // Packet could be dropped because the VPC connector is not in a running
1237    // state.
1238    VPC_CONNECTOR_NOT_RUNNING = 24;
1239
1240    // Packet could be dropped because it was sent from a different region
1241    // to a regional forwarding without global access.
1242    FORWARDING_RULE_REGION_MISMATCH = 25;
1243
1244    // The Private Service Connect endpoint is in a project that is not approved
1245    // to connect to the service.
1246    PSC_CONNECTION_NOT_ACCEPTED = 26;
1247
1248    // The packet is sent to the Private Service Connect endpoint over the
1249    // peering, but [it's not
1250    // supported](https://cloud.google.com/vpc/docs/configure-private-service-connect-services#on-premises).
1251    PSC_ENDPOINT_ACCESSED_FROM_PEERED_NETWORK = 41;
1252
1253    // The packet is sent to the Private Service Connect backend (network
1254    // endpoint group), but the producer PSC forwarding rule does not have
1255    // global access enabled.
1256    PSC_NEG_PRODUCER_ENDPOINT_NO_GLOBAL_ACCESS = 48;
1257
1258    // The packet is sent to the Private Service Connect backend (network
1259    // endpoint group), but the producer PSC forwarding rule has multiple ports
1260    // specified.
1261    PSC_NEG_PRODUCER_FORWARDING_RULE_MULTIPLE_PORTS = 54;
1262
1263    // The packet is sent to the Private Service Connect backend (network
1264    // endpoint group) targeting a Cloud SQL service attachment, but this
1265    // configuration is not supported.
1266    CLOUD_SQL_PSC_NEG_UNSUPPORTED = 58;
1267
1268    // No NAT subnets are defined for the PSC service attachment.
1269    NO_NAT_SUBNETS_FOR_PSC_SERVICE_ATTACHMENT = 57;
1270
1271    // The packet sent from the hybrid NEG proxy matches a non-dynamic route,
1272    // but such a configuration is not supported.
1273    HYBRID_NEG_NON_DYNAMIC_ROUTE_MATCHED = 55;
1274
1275    // The packet sent from the hybrid NEG proxy matches a dynamic route with a
1276    // next hop in a different region, but such a configuration is not
1277    // supported.
1278    HYBRID_NEG_NON_LOCAL_DYNAMIC_ROUTE_MATCHED = 56;
1279
1280    // Packet sent from a Cloud Run revision that is not ready.
1281    CLOUD_RUN_REVISION_NOT_READY = 29;
1282
1283    // Packet was dropped inside Private Service Connect service producer.
1284    DROPPED_INSIDE_PSC_SERVICE_PRODUCER = 37;
1285
1286    // Packet sent to a load balancer, which requires a proxy-only subnet and
1287    // the subnet is not found.
1288    LOAD_BALANCER_HAS_NO_PROXY_SUBNET = 39;
1289
1290    // Packet sent to Cloud Nat without active NAT IPs.
1291    CLOUD_NAT_NO_ADDRESSES = 40;
1292
1293    // Packet is stuck in a routing loop.
1294    ROUTING_LOOP = 59;
1295  }
1296
1297  // Cause that the packet is dropped.
1298  Cause cause = 1;
1299
1300  // URI of the resource that caused the drop.
1301  string resource_uri = 2;
1302
1303  // Source IP address of the dropped packet (if relevant).
1304  string source_ip = 3;
1305
1306  // Destination IP address of the dropped packet (if relevant).
1307  string destination_ip = 4;
1308
1309  // Region of the dropped packet (if relevant).
1310  string region = 5;
1311}
1312
1313// For display only. Metadata associated with a Google Kubernetes Engine (GKE)
1314// cluster master.
1315message GKEMasterInfo {
1316  // URI of a GKE cluster.
1317  string cluster_uri = 2;
1318
1319  // URI of a GKE cluster network.
1320  string cluster_network_uri = 4;
1321
1322  // Internal IP address of a GKE cluster master.
1323  string internal_ip = 5;
1324
1325  // External IP address of a GKE cluster master.
1326  string external_ip = 6;
1327}
1328
1329// For display only. Metadata associated with a Cloud SQL instance.
1330message CloudSQLInstanceInfo {
1331  // Name of a Cloud SQL instance.
1332  string display_name = 1;
1333
1334  // URI of a Cloud SQL instance.
1335  string uri = 2;
1336
1337  // URI of a Cloud SQL instance network or empty string if the instance does
1338  // not have one.
1339  string network_uri = 4;
1340
1341  // Internal IP address of a Cloud SQL instance.
1342  string internal_ip = 5;
1343
1344  // External IP address of a Cloud SQL instance.
1345  string external_ip = 6;
1346
1347  // Region in which the Cloud SQL instance is running.
1348  string region = 7;
1349}
1350
1351// For display only. Metadata associated with a Cloud Function.
1352message CloudFunctionInfo {
1353  // Name of a Cloud Function.
1354  string display_name = 1;
1355
1356  // URI of a Cloud Function.
1357  string uri = 2;
1358
1359  // Location in which the Cloud Function is deployed.
1360  string location = 3;
1361
1362  // Latest successfully deployed version id of the Cloud Function.
1363  int64 version_id = 4;
1364}
1365
1366// For display only. Metadata associated with a Cloud Run revision.
1367message CloudRunRevisionInfo {
1368  // Name of a Cloud Run revision.
1369  string display_name = 1;
1370
1371  // URI of a Cloud Run revision.
1372  string uri = 2;
1373
1374  // Location in which this revision is deployed.
1375  string location = 4;
1376
1377  // URI of Cloud Run service this revision belongs to.
1378  string service_uri = 5;
1379}
1380
1381// For display only. Metadata associated with an App Engine version.
1382message AppEngineVersionInfo {
1383  // Name of an App Engine version.
1384  string display_name = 1;
1385
1386  // URI of an App Engine version.
1387  string uri = 2;
1388
1389  // Runtime of the App Engine version.
1390  string runtime = 3;
1391
1392  // App Engine execution environment for a version.
1393  string environment = 4;
1394}
1395
1396// For display only. Metadata associated with a VPC connector.
1397message VpcConnectorInfo {
1398  // Name of a VPC connector.
1399  string display_name = 1;
1400
1401  // URI of a VPC connector.
1402  string uri = 2;
1403
1404  // Location in which the VPC connector is deployed.
1405  string location = 3;
1406}
1407
1408// For display only. Metadata associated with NAT.
1409message NatInfo {
1410  // Types of NAT.
1411  enum Type {
1412    // Type is unspecified.
1413    TYPE_UNSPECIFIED = 0;
1414
1415    // From Compute Engine instance's internal address to external address.
1416    INTERNAL_TO_EXTERNAL = 1;
1417
1418    // From Compute Engine instance's external address to internal address.
1419    EXTERNAL_TO_INTERNAL = 2;
1420
1421    // Cloud NAT Gateway.
1422    CLOUD_NAT = 3;
1423
1424    // Private service connect NAT.
1425    PRIVATE_SERVICE_CONNECT = 4;
1426  }
1427
1428  // Type of NAT.
1429  Type type = 1;
1430
1431  // IP protocol in string format, for example: "TCP", "UDP", "ICMP".
1432  string protocol = 2;
1433
1434  // URI of the network where NAT translation takes place.
1435  string network_uri = 3;
1436
1437  // Source IP address before NAT translation.
1438  string old_source_ip = 4;
1439
1440  // Source IP address after NAT translation.
1441  string new_source_ip = 5;
1442
1443  // Destination IP address before NAT translation.
1444  string old_destination_ip = 6;
1445
1446  // Destination IP address after NAT translation.
1447  string new_destination_ip = 7;
1448
1449  // Source port before NAT translation. Only valid when protocol is TCP or UDP.
1450  int32 old_source_port = 8;
1451
1452  // Source port after NAT translation. Only valid when protocol is TCP or UDP.
1453  int32 new_source_port = 9;
1454
1455  // Destination port before NAT translation. Only valid when protocol is TCP or
1456  // UDP.
1457  int32 old_destination_port = 10;
1458
1459  // Destination port after NAT translation. Only valid when protocol is TCP or
1460  // UDP.
1461  int32 new_destination_port = 11;
1462
1463  // Uri of the Cloud Router. Only valid when type is CLOUD_NAT.
1464  string router_uri = 12;
1465
1466  // The name of Cloud NAT Gateway. Only valid when type is CLOUD_NAT.
1467  string nat_gateway_name = 13;
1468}
1469
1470// For display only. Metadata associated with ProxyConnection.
1471message ProxyConnectionInfo {
1472  // IP protocol in string format, for example: "TCP", "UDP", "ICMP".
1473  string protocol = 1;
1474
1475  // Source IP address of an original connection.
1476  string old_source_ip = 2;
1477
1478  // Source IP address of a new connection.
1479  string new_source_ip = 3;
1480
1481  // Destination IP address of an original connection
1482  string old_destination_ip = 4;
1483
1484  // Destination IP address of a new connection.
1485  string new_destination_ip = 5;
1486
1487  // Source port of an original connection. Only valid when protocol is TCP or
1488  // UDP.
1489  int32 old_source_port = 6;
1490
1491  // Source port of a new connection. Only valid when protocol is TCP or UDP.
1492  int32 new_source_port = 7;
1493
1494  // Destination port of an original connection. Only valid when protocol is TCP
1495  // or UDP.
1496  int32 old_destination_port = 8;
1497
1498  // Destination port of a new connection. Only valid when protocol is TCP or
1499  // UDP.
1500  int32 new_destination_port = 9;
1501
1502  // Uri of proxy subnet.
1503  string subnet_uri = 10;
1504
1505  // URI of the network where connection is proxied.
1506  string network_uri = 11;
1507}
1508
1509// For display only. Metadata associated with the load balancer backend.
1510message LoadBalancerBackendInfo {
1511  // Health check firewalls configuration state enum.
1512  enum HealthCheckFirewallsConfigState {
1513    // Configuration state unspecified. It usually means that the backend has
1514    // no health check attached, or there was an unexpected configuration error
1515    // preventing Connectivity tests from verifying health check configuration.
1516    HEALTH_CHECK_FIREWALLS_CONFIG_STATE_UNSPECIFIED = 0;
1517
1518    // Firewall rules (policies) allowing health check traffic from all required
1519    // IP ranges to the backend are configured.
1520    FIREWALLS_CONFIGURED = 1;
1521
1522    // Firewall rules (policies) allow health check traffic only from a part of
1523    // required IP ranges.
1524    FIREWALLS_PARTIALLY_CONFIGURED = 2;
1525
1526    // Firewall rules (policies) deny health check traffic from all required
1527    // IP ranges to the backend.
1528    FIREWALLS_NOT_CONFIGURED = 3;
1529
1530    // The network contains firewall rules of unsupported types, so Connectivity
1531    // tests were not able to verify health check configuration status. Please
1532    // refer to the documentation for the list of unsupported configurations:
1533    // https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/concepts/overview#unsupported-configs
1534    FIREWALLS_UNSUPPORTED = 4;
1535  }
1536
1537  // Display name of the backend. For example, it might be an instance name for
1538  // the instance group backends, or an IP address and port for zonal network
1539  // endpoint group backends.
1540  string name = 1;
1541
1542  // URI of the backend instance (if applicable). Populated for instance group
1543  // backends, and zonal NEG backends.
1544  string instance_uri = 2;
1545
1546  // URI of the backend service this backend belongs to (if applicable).
1547  string backend_service_uri = 3;
1548
1549  // URI of the instance group this backend belongs to (if applicable).
1550  string instance_group_uri = 4;
1551
1552  // URI of the network endpoint group this backend belongs to (if applicable).
1553  string network_endpoint_group_uri = 5;
1554
1555  // URI of the backend bucket this backend targets (if applicable).
1556  string backend_bucket_uri = 8;
1557
1558  // URI of the PSC service attachment this PSC NEG backend targets (if
1559  // applicable).
1560  string psc_service_attachment_uri = 9;
1561
1562  // PSC Google API target this PSC NEG backend targets (if applicable).
1563  string psc_google_api_target = 10;
1564
1565  // URI of the health check attached to this backend (if applicable).
1566  string health_check_uri = 6;
1567
1568  // Output only. Health check firewalls configuration state for the backend.
1569  // This is a result of the static firewall analysis (verifying that health
1570  // check traffic from required IP ranges to the backend is allowed or not).
1571  // The backend might still be unhealthy even if these firewalls are
1572  // configured. Please refer to the documentation for more information:
1573  // https://cloud.google.com/load-balancing/docs/firewall-rules
1574  HealthCheckFirewallsConfigState health_check_firewalls_config_state = 7
1575      [(google.api.field_behavior) = OUTPUT_ONLY];
1576}
1577
1578// Type of a load balancer. For more information, see [Summary of Google Cloud
1579// load
1580// balancers](https://cloud.google.com/load-balancing/docs/load-balancing-overview#summary-of-google-cloud-load-balancers).
1581enum LoadBalancerType {
1582  // Forwarding rule points to a different target than a load balancer or a
1583  // load balancer type is unknown.
1584  LOAD_BALANCER_TYPE_UNSPECIFIED = 0;
1585
1586  // Global external HTTP(S) load balancer.
1587  HTTPS_ADVANCED_LOAD_BALANCER = 1;
1588
1589  // Global external HTTP(S) load balancer (classic)
1590  HTTPS_LOAD_BALANCER = 2;
1591
1592  // Regional external HTTP(S) load balancer.
1593  REGIONAL_HTTPS_LOAD_BALANCER = 3;
1594
1595  // Internal HTTP(S) load balancer.
1596  INTERNAL_HTTPS_LOAD_BALANCER = 4;
1597
1598  // External SSL proxy load balancer.
1599  SSL_PROXY_LOAD_BALANCER = 5;
1600
1601  // External TCP proxy load balancer.
1602  TCP_PROXY_LOAD_BALANCER = 6;
1603
1604  // Internal regional TCP proxy load balancer.
1605  INTERNAL_TCP_PROXY_LOAD_BALANCER = 7;
1606
1607  // External TCP/UDP Network load balancer.
1608  NETWORK_LOAD_BALANCER = 8;
1609
1610  // Target-pool based external TCP/UDP Network load balancer.
1611  LEGACY_NETWORK_LOAD_BALANCER = 9;
1612
1613  // Internal TCP/UDP load balancer.
1614  TCP_UDP_INTERNAL_LOAD_BALANCER = 10;
1615}
1616
1617// For display only. Metadata associated with Storage Bucket.
1618message StorageBucketInfo {
1619  // Cloud Storage Bucket name.
1620  string bucket = 1;
1621}
1622