From 6cbd1fd8e42e07ad6cf1ebd274c2664184c0f72c Mon Sep 17 00:00:00 2001 From: waseembaig Date: Mon, 29 Aug 2022 13:57:47 +0530 Subject: [PATCH 01/27] L4-7 models L4-7 Model support for TCP and HTTP --- artifacts/openapi.html | 724 --------------------------------------- artifacts/openapi.yaml | 192 +++++++++++ artifacts/otg.proto | 161 ++++++++- common/common.yaml | 14 + device/http/command.yaml | 35 ++ device/http/http.yaml | 53 +++ device/http/traffic.yaml | 17 + device/ipv4.yaml | 6 +- device/tcp/tcp.yaml | 56 +++ 9 files changed, 529 insertions(+), 729 deletions(-) delete mode 100644 artifacts/openapi.html create mode 100644 device/http/command.yaml create mode 100644 device/http/http.yaml create mode 100644 device/http/traffic.yaml create mode 100644 device/tcp/tcp.yaml diff --git a/artifacts/openapi.html b/artifacts/openapi.html deleted file mode 100644 index baa08cb6..00000000 --- a/artifacts/openapi.html +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - Open Traffic Generator API - - - - - - - - - -

Open Traffic Generator API (0.8.7)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard -interface for emulating layer 2-7 network devices and generating test traffic.

-

Contributions can be made in the following ways:

- -

Configuration

set_config

Sets configuration resources on the traffic generator.

-
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

-
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

-
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

-
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

-
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. -Each device contains configurations for network interfaces and -protocols running on top of those interfaces.

-
Array of objects (Flow)

The flows that will be configured on the traffic generator.

-
object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

-

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. -The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

-
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. -If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Flow/properties/name
  • -
-
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. -If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). -If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. -If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. -If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

-

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. -If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-
state
required
string
Enum: "start" "stop"

The capture state.

-

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

-
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

-
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

-

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

-

x-constraint:

-
    -
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • -
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • -
  • /components/schemas/Isis.V4RouteRange/properties/name
  • -
  • /components/schemas/Isis.V6RouteRange/properties/name
  • -
-
state
required
string
Enum: "withdraw" "advertise"

Route specific states

-

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

-
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

-

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

-
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

-

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

-
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

-

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

-
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

-
object (Flow.Metrics.Request)

The container for a flow metric request.

-
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

-
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

-
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

-
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

-
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

-
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

-
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

-
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

-
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

-
port_name
required
string

The name of a port a capture is started on.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
- - - - \ No newline at end of file diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 1faace2d..495951cd 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -754,6 +754,10 @@ components: The IPv4 address of the gateway type: string format: ipv4 + tcp: + description: |- + TCP config + $ref: '#/components/schemas/Device.Tcp' address: description: |- The IPv4 address @@ -799,6 +803,194 @@ components: Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.Tcp: + description: |- + TCP configs. + type: object + properties: + keep_alive_time: + description: |- + The TCP keep alive timer + type: integer + default: 7200 + receive_buffer_size: + description: |- + The TCP receive buffer size + type: integer + default: 4096 + transmit_buffer_size: + description: |- + The TCP transmit buffer size + type: integer + default: 4096 + source_port_range: + description: "Source port range -> min, max " + $ref: '#/components/schemas/Value.Object' + retransmission_timeout: + description: |- + Retransmission Timeout value -> min, max. + $ref: '#/components/schemas/Value.Object' + http: + description: "HTTP config " + $ref: '#/components/schemas/Device.Http' + inter_packet_gap: + description: |- + The number of bytes separating packets in a stream + type: integer + default: 8 + fragment_reassembly_timer: + description: |- + The number of seconds the TCP should keep IP fragments before discarding them. + type: integer + default: 30 + fin_timeout: + description: |- + The number of seconds the client or server waits to receive a final FIN before closing a socket. + type: integer + default: 60 + syn_retries: + description: |- + Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + type: integer + default: 5 + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + ChoiceNone: + description: |- + A empty container that is used to indicate a null choice. + type: object + Value.Object: + type: object + properties: + max: + description: |- + Maximum value of object + type: integer + min: + description: |- + Minimum value of object + type: integer + Device.Http: + description: |- + HTTP configs. + type: object + properties: + enable_ssl: + description: |- + Enable SSL for HTTP + type: boolean + default: false + http_version: + description: |- + HTTP Version + type: integer + default: 1 + enable_cookie_support: + description: |- + Enable cookie support for HTTP + type: boolean + default: false + max_sessions: + description: |- + Max HTTP sessions + type: integer + default: 1 + max_streams: + description: |- + Max HTTP streams + type: integer + default: 1 + command_timeout: + description: |- + Command timeout timer in seconds + type: integer + default: 600 + url_stats_count: + description: "URL stats count " + type: integer + default: 10 + enable_per_conn_cookie_support: + description: |- + Enable cookie support for per connection + type: boolean + default: false + traffic: + description: |- + Enable cookie support for per connection + $ref: '#/components/schemas/Traffic' + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Traffic: + description: |- + HTTP traffic configs such as get,post commands. + type: object + properties: + get: + description: |- + HTTP get command + $ref: '#/components/schemas/Traffic.Get' + post: + description: |- + HTTP get command + $ref: '#/components/schemas/Traffic.Post' + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Traffic.Get: + description: |- + A get operation such as HTTP->GET + type: object + required: + - destination + - name + properties: + destination: + description: |- + The Server name/IP address + type: string + page: + description: |- + The page name to perform get opertaion. + type: string + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Traffic.Post: + description: "A Post operation such as HTTP->POST " + type: object + required: + - destination + - name + properties: + destination: + description: |- + The Server name/IP address + type: string + page: + description: |- + The page name to perform get opertaion. + type: string + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ Device.Ipv6: description: |- Status: under-review diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 30861e07..112de2ea 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -342,18 +342,21 @@ message DeviceIpv4 { // required = true string gateway = 1; + // TCP config + optional DeviceTcp tcp = 2; + // The IPv4 address // required = true - string address = 2; + string address = 3; // The prefix of the IPv4 address. // default = 24 - optional int32 prefix = 3; + optional int32 prefix = 4; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 4; + string name = 5; } // An IPv4 Loopback interface. @@ -378,6 +381,158 @@ message DeviceIpv4Loopback { string name = 3; } +// TCP configs. +message DeviceTcp { + + // The TCP keep alive timer + // default = 7200 + optional int32 keep_alive_time = 1; + + // The TCP receive buffer size + // default = 4096 + optional int32 receive_buffer_size = 2; + + // The TCP transmit buffer size + // default = 4096 + optional int32 transmit_buffer_size = 3; + + // Source port range -> min, max + optional ValueObject source_port_range = 4; + + // Retransmission Timeout value -> min, max. + optional ValueObject retransmission_timeout = 5; + + // HTTP config + optional DeviceHttp http = 6; + + // The number of bytes separating packets in a stream + // default = 8 + optional int32 inter_packet_gap = 7; + + // The number of seconds the TCP should keep IP fragments before discarding them. + // default = 30 + optional int32 fragment_reassembly_timer = 8; + + // The number of seconds the client or server waits to receive a final FIN before closing + // a socket. + // default = 60 + optional int32 fin_timeout = 9; + + // Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + // default = 5 + optional int32 syn_retries = 10; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 11; +} + +// A empty container that is used to indicate a null choice. +message ChoiceNone { +} + +// Description missing in models +message ValueObject { + + // Maximum value of object + optional int32 max = 1; + + // Minimum value of object + optional int32 min = 2; +} + +// HTTP configs. +message DeviceHttp { + + // Enable SSL for HTTP + // default = False + optional bool enable_ssl = 1; + + // HTTP Version + // default = 1 + optional int32 http_version = 2; + + // Enable cookie support for HTTP + // default = False + optional bool enable_cookie_support = 3; + + // Max HTTP sessions + // default = 1 + optional int32 max_sessions = 4; + + // Max HTTP streams + // default = 1 + optional int32 max_streams = 5; + + // Command timeout timer in seconds + // default = 600 + optional int32 command_timeout = 6; + + // URL stats count + // default = 10 + optional int32 url_stats_count = 7; + + // Enable cookie support for per connection + // default = False + optional bool enable_per_conn_cookie_support = 8; + + // Enable cookie support for per connection + optional Traffic traffic = 9; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 10; +} + +// HTTP traffic configs such as get,post commands. +message Traffic { + + // HTTP get command + optional TrafficGet get = 1; + + // HTTP get command + optional TrafficPost post = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + +// A get operation such as HTTP->GET +message TrafficGet { + + // The Server name/IP address + // required = true + string destination = 1; + + // The page name to perform get opertaion. + optional string page = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + +// A Post operation such as HTTP->POST +message TrafficPost { + + // The Server name/IP address + // required = true + string destination = 1; + + // The page name to perform get opertaion. + optional string page = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + // Status: under-review // An IPv6 interface with gateway. // A base IPv6 interface. diff --git a/common/common.yaml b/common/common.yaml index ad996f94..79f6c337 100644 --- a/common/common.yaml +++ b/common/common.yaml @@ -24,3 +24,17 @@ components: description: >- A empty container that is used to indicate a null choice. type: object + + Value.Object: + type: object + properties: + max: + description: >- + Maximum value of object + type: integer + min: + description: >- + Minimum value of object + type: integer + + diff --git a/device/http/command.yaml b/device/http/command.yaml new file mode 100644 index 00000000..8640e94a --- /dev/null +++ b/device/http/command.yaml @@ -0,0 +1,35 @@ +components: + schemas: + Traffic.Get: + x-include: + - '../../common/common.yaml#/components/schemas/Named.Object' + description: >- + A get operation such as HTTP->GET + type: object + required: [destination] + properties: + destination: + description: >- + The Server name/IP address + type: string + page: + description: >- + The page name to perform get opertaion. + type: string + + Traffic.Post: + x-include: + - '../../common/common.yaml#/components/schemas/Named.Object' + description: >- + A Post operation such as HTTP->POST + type: object + required: [destination] + properties: + destination: + description: >- + The Server name/IP address + type: string + page: + description: >- + The page name to perform get opertaion. + type: string \ No newline at end of file diff --git a/device/http/http.yaml b/device/http/http.yaml new file mode 100644 index 00000000..4e4076d7 --- /dev/null +++ b/device/http/http.yaml @@ -0,0 +1,53 @@ +components: + schemas: + Device.Http: + x-include: + - '../common/common.yaml#/components/schemas/Named.Object' + description: >- + HTTP configs. + type: object + properties: + enable_ssl: + description: >- + Enable SSL for HTTP + type: boolean + default: false + http_version: + description: >- + HTTP Version + type: integer + default: 1 + enable_cookie_support: + description: >- + Enable cookie support for HTTP + type: boolean + default: false + max_sessions: + description: >- + Max HTTP sessions + type: integer + default: 1 + max_streams: + description: >- + Max HTTP streams + type: integer + default: 1 + command_timeout: + description: >- + Command timeout timer in seconds + type: integer + default: 600 + url_stats_count: + description: >- + URL stats count + type: integer + default: 10 + enable_per_conn_cookie_support: + description: >- + Enable cookie support for per connection + type: boolean + default: false + traffic: + description: >- + Enable cookie support for per connection + $ref: './traffic.yaml#/components/schemas/Traffic' diff --git a/device/http/traffic.yaml b/device/http/traffic.yaml new file mode 100644 index 00000000..35ad5db2 --- /dev/null +++ b/device/http/traffic.yaml @@ -0,0 +1,17 @@ +components: + schemas: + Traffic: + x-include: + - '../common/common.yaml#/components/schemas/Named.Object' + description: >- + HTTP traffic configs such as get,post commands. + type: object + properties: + get: + description: >- + HTTP get command + $ref: './command.yaml#/components/schemas/Traffic.Get' + post: + description: >- + HTTP get command + $ref: './command.yaml#/components/schemas/Traffic.Post' \ No newline at end of file diff --git a/device/ipv4.yaml b/device/ipv4.yaml index 114908ec..e9af012c 100644 --- a/device/ipv4.yaml +++ b/device/ipv4.yaml @@ -34,6 +34,10 @@ components: The IPv4 address of the gateway type: string format: ipv4 + tcp: + description: >- + TCP config + $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' # Can not derive LoopbackIpv4 from Ipv4Base as default prefix length must be 32. Device.Ipv4Loopback: @@ -57,7 +61,5 @@ components: type: string format: ipv4 default: 0.0.0.0 - - diff --git a/device/tcp/tcp.yaml b/device/tcp/tcp.yaml new file mode 100644 index 00000000..4f9dd323 --- /dev/null +++ b/device/tcp/tcp.yaml @@ -0,0 +1,56 @@ +components: + schemas: + Device.Tcp: + x-include: + - '../common/common.yaml#/components/schemas/Named.Object' + description: >- + TCP configs. + type: object + properties: + keep_alive_time: + description: >- + The TCP keep alive timer + type: integer + default: 7200 + receive_buffer_size: + description: >- + The TCP receive buffer size + type: integer + default: 4096 + transmit_buffer_size: + description: >- + The TCP transmit buffer size + type: integer + default: 4096 + source_port_range: + description: >- + Source port range -> min, max + $ref: '../../common/common.yaml#/components/schemas/Value.Object' + retransmission_timeout: + description: >- + Retransmission Timeout value -> min, max. + $ref: '../../common/common.yaml#/components/schemas/Value.Object' + http: + description: >- + HTTP config + $ref: '../http/http.yaml#/components/schemas/Device.Http' + inter_packet_gap: + description: >- + The number of bytes separating packets in a stream + type: integer + default: 8 + fragment_reassembly_timer: + description: >- + The number of seconds the TCP should keep IP fragments before discarding them. + type: integer + default: 30 + fin_timeout: + description: >- + The number of seconds the client or server waits to receive a final FIN before closing a socket. + type: integer + default: 60 + syn_retries: + description: >- + Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + type: integer + default: 5 From a23befe80cbe3eaaf3f8c0a1bccb4dde7ec02a61 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 8 Sep 2022 16:52:26 +0530 Subject: [PATCH 02/27] updated model Moved tcp and http tp device --- artifacts/openapi.yaml | 383 ++++++++++++++++++++--------------------- artifacts/otg.proto | 318 +++++++++++++++++----------------- device/device.yaml | 10 +- device/ipv4.yaml | 4 - device/tcp/tcp.yaml | 4 - 5 files changed, 359 insertions(+), 360 deletions(-) diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 495951cd..4c650b51 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -754,10 +754,6 @@ components: The IPv4 address of the gateway type: string format: ipv4 - tcp: - description: |- - TCP config - $ref: '#/components/schemas/Device.Tcp' address: description: |- The IPv4 address @@ -803,194 +799,6 @@ components: Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.Tcp: - description: |- - TCP configs. - type: object - properties: - keep_alive_time: - description: |- - The TCP keep alive timer - type: integer - default: 7200 - receive_buffer_size: - description: |- - The TCP receive buffer size - type: integer - default: 4096 - transmit_buffer_size: - description: |- - The TCP transmit buffer size - type: integer - default: 4096 - source_port_range: - description: "Source port range -> min, max " - $ref: '#/components/schemas/Value.Object' - retransmission_timeout: - description: |- - Retransmission Timeout value -> min, max. - $ref: '#/components/schemas/Value.Object' - http: - description: "HTTP config " - $ref: '#/components/schemas/Device.Http' - inter_packet_gap: - description: |- - The number of bytes separating packets in a stream - type: integer - default: 8 - fragment_reassembly_timer: - description: |- - The number of seconds the TCP should keep IP fragments before discarding them. - type: integer - default: 30 - fin_timeout: - description: |- - The number of seconds the client or server waits to receive a final FIN before closing a socket. - type: integer - default: 60 - syn_retries: - description: |- - Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted - type: integer - default: 5 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - ChoiceNone: - description: |- - A empty container that is used to indicate a null choice. - type: object - Value.Object: - type: object - properties: - max: - description: |- - Maximum value of object - type: integer - min: - description: |- - Minimum value of object - type: integer - Device.Http: - description: |- - HTTP configs. - type: object - properties: - enable_ssl: - description: |- - Enable SSL for HTTP - type: boolean - default: false - http_version: - description: |- - HTTP Version - type: integer - default: 1 - enable_cookie_support: - description: |- - Enable cookie support for HTTP - type: boolean - default: false - max_sessions: - description: |- - Max HTTP sessions - type: integer - default: 1 - max_streams: - description: |- - Max HTTP streams - type: integer - default: 1 - command_timeout: - description: |- - Command timeout timer in seconds - type: integer - default: 600 - url_stats_count: - description: "URL stats count " - type: integer - default: 10 - enable_per_conn_cookie_support: - description: |- - Enable cookie support for per connection - type: boolean - default: false - traffic: - description: |- - Enable cookie support for per connection - $ref: '#/components/schemas/Traffic' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Traffic: - description: |- - HTTP traffic configs such as get,post commands. - type: object - properties: - get: - description: |- - HTTP get command - $ref: '#/components/schemas/Traffic.Get' - post: - description: |- - HTTP get command - $ref: '#/components/schemas/Traffic.Post' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Traffic.Get: - description: |- - A get operation such as HTTP->GET - type: object - required: - - destination - - name - properties: - destination: - description: |- - The Server name/IP address - type: string - page: - description: |- - The page name to perform get opertaion. - type: string - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Traffic.Post: - description: "A Post operation such as HTTP->POST " - type: object - required: - - destination - - name - properties: - destination: - description: |- - The Server name/IP address - type: string - page: - description: |- - The page name to perform get opertaion. - type: string - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ Device.Ipv6: description: |- Status: under-review @@ -1479,6 +1287,12 @@ components: description: |- Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 $ref: '#/components/schemas/Device.Vxlan' + tcp: + description: "The properties of TCP and its children, " + $ref: '#/components/schemas/Device.Tcp' + http: + description: "The properties of HTTP and its children, " + $ref: '#/components/schemas/Device.Http' name: description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. @@ -4596,6 +4410,191 @@ components: IPv6 Multicast address type: string format: ipv6 + Device.Tcp: + description: |- + TCP configs. + type: object + properties: + keep_alive_time: + description: |- + The TCP keep alive timer + type: integer + default: 7200 + receive_buffer_size: + description: |- + The TCP receive buffer size + type: integer + default: 4096 + transmit_buffer_size: + description: |- + The TCP transmit buffer size + type: integer + default: 4096 + source_port_range: + description: "Source port range -> min, max " + $ref: '#/components/schemas/Value.Object' + retransmission_timeout: + description: |- + Retransmission Timeout value -> min, max. + $ref: '#/components/schemas/Value.Object' + inter_packet_gap: + description: |- + The number of bytes separating packets in a stream + type: integer + default: 8 + fragment_reassembly_timer: + description: |- + The number of seconds the TCP should keep IP fragments before discarding them. + type: integer + default: 30 + fin_timeout: + description: |- + The number of seconds the client or server waits to receive a final FIN before closing a socket. + type: integer + default: 60 + syn_retries: + description: |- + Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + type: integer + default: 5 + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + ChoiceNone: + description: |- + A empty container that is used to indicate a null choice. + type: object + Value.Object: + type: object + properties: + max: + description: |- + Maximum value of object + type: integer + min: + description: |- + Minimum value of object + type: integer + Device.Http: + description: |- + HTTP configs. + type: object + properties: + enable_ssl: + description: |- + Enable SSL for HTTP + type: boolean + default: false + http_version: + description: |- + HTTP Version + type: integer + default: 1 + enable_cookie_support: + description: |- + Enable cookie support for HTTP + type: boolean + default: false + max_sessions: + description: |- + Max HTTP sessions + type: integer + default: 1 + max_streams: + description: |- + Max HTTP streams + type: integer + default: 1 + command_timeout: + description: |- + Command timeout timer in seconds + type: integer + default: 600 + url_stats_count: + description: "URL stats count " + type: integer + default: 10 + enable_per_conn_cookie_support: + description: |- + Enable cookie support for per connection + type: boolean + default: false + traffic: + description: |- + Enable cookie support for per connection + $ref: '#/components/schemas/Traffic' + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Traffic: + description: |- + HTTP traffic configs such as get,post commands. + type: object + properties: + get: + description: |- + HTTP get command + $ref: '#/components/schemas/Traffic.Get' + post: + description: |- + HTTP get command + $ref: '#/components/schemas/Traffic.Post' + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Traffic.Get: + description: |- + A get operation such as HTTP->GET + type: object + required: + - destination + - name + properties: + destination: + description: |- + The Server name/IP address + type: string + page: + description: |- + The page name to perform get opertaion. + type: string + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Traffic.Post: + description: "A Post operation such as HTTP->POST " + type: object + required: + - destination + - name + properties: + destination: + description: |- + The Server name/IP address + type: string + page: + description: |- + The page name to perform get opertaion. + type: string + name: + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ Flow: description: |- A high level data plane traffic flow. diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 112de2ea..5d8a4963 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -342,21 +342,18 @@ message DeviceIpv4 { // required = true string gateway = 1; - // TCP config - optional DeviceTcp tcp = 2; - // The IPv4 address // required = true - string address = 3; + string address = 2; // The prefix of the IPv4 address. // default = 24 - optional int32 prefix = 4; + optional int32 prefix = 3; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 5; + string name = 4; } // An IPv4 Loopback interface. @@ -381,158 +378,6 @@ message DeviceIpv4Loopback { string name = 3; } -// TCP configs. -message DeviceTcp { - - // The TCP keep alive timer - // default = 7200 - optional int32 keep_alive_time = 1; - - // The TCP receive buffer size - // default = 4096 - optional int32 receive_buffer_size = 2; - - // The TCP transmit buffer size - // default = 4096 - optional int32 transmit_buffer_size = 3; - - // Source port range -> min, max - optional ValueObject source_port_range = 4; - - // Retransmission Timeout value -> min, max. - optional ValueObject retransmission_timeout = 5; - - // HTTP config - optional DeviceHttp http = 6; - - // The number of bytes separating packets in a stream - // default = 8 - optional int32 inter_packet_gap = 7; - - // The number of seconds the TCP should keep IP fragments before discarding them. - // default = 30 - optional int32 fragment_reassembly_timer = 8; - - // The number of seconds the client or server waits to receive a final FIN before closing - // a socket. - // default = 60 - optional int32 fin_timeout = 9; - - // Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted - // default = 5 - optional int32 syn_retries = 10; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 11; -} - -// A empty container that is used to indicate a null choice. -message ChoiceNone { -} - -// Description missing in models -message ValueObject { - - // Maximum value of object - optional int32 max = 1; - - // Minimum value of object - optional int32 min = 2; -} - -// HTTP configs. -message DeviceHttp { - - // Enable SSL for HTTP - // default = False - optional bool enable_ssl = 1; - - // HTTP Version - // default = 1 - optional int32 http_version = 2; - - // Enable cookie support for HTTP - // default = False - optional bool enable_cookie_support = 3; - - // Max HTTP sessions - // default = 1 - optional int32 max_sessions = 4; - - // Max HTTP streams - // default = 1 - optional int32 max_streams = 5; - - // Command timeout timer in seconds - // default = 600 - optional int32 command_timeout = 6; - - // URL stats count - // default = 10 - optional int32 url_stats_count = 7; - - // Enable cookie support for per connection - // default = False - optional bool enable_per_conn_cookie_support = 8; - - // Enable cookie support for per connection - optional Traffic traffic = 9; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 10; -} - -// HTTP traffic configs such as get,post commands. -message Traffic { - - // HTTP get command - optional TrafficGet get = 1; - - // HTTP get command - optional TrafficPost post = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - -// A get operation such as HTTP->GET -message TrafficGet { - - // The Server name/IP address - // required = true - string destination = 1; - - // The page name to perform get opertaion. - optional string page = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - -// A Post operation such as HTTP->POST -message TrafficPost { - - // The Server name/IP address - // required = true - string destination = 1; - - // The page name to perform get opertaion. - optional string page = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - // Status: under-review // An IPv6 interface with gateway. // A base IPv6 interface. @@ -1019,10 +864,16 @@ message Device { // Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 optional DeviceVxlan vxlan = 6; + // The properties of TCP and its children, + optional DeviceTcp tcp = 7; + + // The properties of HTTP and its children, + optional DeviceHttp http = 8; + // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 7; + string name = 9; } // Status: under-review @@ -3718,6 +3569,155 @@ message VxlanV6TunnelDestinationIPModeMulticast { optional string address = 1; } +// TCP configs. +message DeviceTcp { + + // The TCP keep alive timer + // default = 7200 + optional int32 keep_alive_time = 1; + + // The TCP receive buffer size + // default = 4096 + optional int32 receive_buffer_size = 2; + + // The TCP transmit buffer size + // default = 4096 + optional int32 transmit_buffer_size = 3; + + // Source port range -> min, max + optional ValueObject source_port_range = 4; + + // Retransmission Timeout value -> min, max. + optional ValueObject retransmission_timeout = 5; + + // The number of bytes separating packets in a stream + // default = 8 + optional int32 inter_packet_gap = 6; + + // The number of seconds the TCP should keep IP fragments before discarding them. + // default = 30 + optional int32 fragment_reassembly_timer = 7; + + // The number of seconds the client or server waits to receive a final FIN before closing + // a socket. + // default = 60 + optional int32 fin_timeout = 8; + + // Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + // default = 5 + optional int32 syn_retries = 9; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 10; +} + +// A empty container that is used to indicate a null choice. +message ChoiceNone { +} + +// Description missing in models +message ValueObject { + + // Maximum value of object + optional int32 max = 1; + + // Minimum value of object + optional int32 min = 2; +} + +// HTTP configs. +message DeviceHttp { + + // Enable SSL for HTTP + // default = False + optional bool enable_ssl = 1; + + // HTTP Version + // default = 1 + optional int32 http_version = 2; + + // Enable cookie support for HTTP + // default = False + optional bool enable_cookie_support = 3; + + // Max HTTP sessions + // default = 1 + optional int32 max_sessions = 4; + + // Max HTTP streams + // default = 1 + optional int32 max_streams = 5; + + // Command timeout timer in seconds + // default = 600 + optional int32 command_timeout = 6; + + // URL stats count + // default = 10 + optional int32 url_stats_count = 7; + + // Enable cookie support for per connection + // default = False + optional bool enable_per_conn_cookie_support = 8; + + // Enable cookie support for per connection + optional Traffic traffic = 9; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 10; +} + +// HTTP traffic configs such as get,post commands. +message Traffic { + + // HTTP get command + optional TrafficGet get = 1; + + // HTTP get command + optional TrafficPost post = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + +// A get operation such as HTTP->GET +message TrafficGet { + + // The Server name/IP address + // required = true + string destination = 1; + + // The page name to perform get opertaion. + optional string page = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + +// A Post operation such as HTTP->POST +message TrafficPost { + + // The Server name/IP address + // required = true + string destination = 1; + + // The page name to perform get opertaion. + optional string page = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + // A high level data plane traffic flow. message Flow { diff --git a/device/device.yaml b/device/device.yaml index 894136e3..658da244 100644 --- a/device/device.yaml +++ b/device/device.yaml @@ -54,6 +54,14 @@ components: description: >- Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 - $ref: './vxlan/vxlan.yaml#/components/schemas/Device.Vxlan' + $ref: './vxlan/vxlan.yaml#/components/schemas/Device.Vxlan' + tcp: + description: >- + The properties of TCP and its children, + $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' + http: + description: >- + The properties of HTTP and its children, + $ref: './http/http.yaml#/components/schemas/Device.Http' \ No newline at end of file diff --git a/device/ipv4.yaml b/device/ipv4.yaml index e9af012c..b299e320 100644 --- a/device/ipv4.yaml +++ b/device/ipv4.yaml @@ -34,10 +34,6 @@ components: The IPv4 address of the gateway type: string format: ipv4 - tcp: - description: >- - TCP config - $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' # Can not derive LoopbackIpv4 from Ipv4Base as default prefix length must be 32. Device.Ipv4Loopback: diff --git a/device/tcp/tcp.yaml b/device/tcp/tcp.yaml index 4f9dd323..b00bb66f 100644 --- a/device/tcp/tcp.yaml +++ b/device/tcp/tcp.yaml @@ -30,10 +30,6 @@ components: description: >- Retransmission Timeout value -> min, max. $ref: '../../common/common.yaml#/components/schemas/Value.Object' - http: - description: >- - HTTP config - $ref: '../http/http.yaml#/components/schemas/Device.Http' inter_packet_gap: description: >- The number of bytes separating packets in a stream From a5308816d6b429a7a465e81e3faf92f6712155ef Mon Sep 17 00:00:00 2001 From: waseembaig Date: Fri, 9 Sep 2022 00:12:36 +0530 Subject: [PATCH 03/27] Updated with model updated with model design --- artifacts/openapi.yaml | 119 ++++++++----------- artifacts/otg.proto | 132 ++++++++++------------ device/device.yaml | 8 +- device/http/http.yaml | 19 +++- device/http/{command.yaml => method.yaml} | 20 ++-- device/http/traffic.yaml | 17 --- device/tcp/tcp.yaml | 37 +++--- 7 files changed, 153 insertions(+), 199 deletions(-) rename device/http/{command.yaml => method.yaml} (63%) delete mode 100644 device/http/traffic.yaml diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 4c650b51..1feec9f5 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -1289,10 +1289,14 @@ components: $ref: '#/components/schemas/Device.Vxlan' tcp: description: "The properties of TCP and its children, " - $ref: '#/components/schemas/Device.Tcp' + type: array + items: + $ref: '#/components/schemas/Device.Tcp' http: description: "The properties of HTTP and its children, " - $ref: '#/components/schemas/Device.Http' + type: array + items: + $ref: '#/components/schemas/Device.Http' name: description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. @@ -4414,7 +4418,19 @@ components: description: |- TCP configs. type: object + required: + - ip_interface_name + - name properties: + ip_interface_name: + description: | + IPv4/v6 interface name + + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name keep_alive_time: description: |- The TCP keep alive timer @@ -4430,60 +4446,33 @@ components: The TCP transmit buffer size type: integer default: 4096 - source_port_range: - description: "Source port range -> min, max " - $ref: '#/components/schemas/Value.Object' - retransmission_timeout: - description: |- - Retransmission Timeout value -> min, max. - $ref: '#/components/schemas/Value.Object' - inter_packet_gap: - description: |- - The number of bytes separating packets in a stream - type: integer - default: 8 - fragment_reassembly_timer: - description: |- - The number of seconds the TCP should keep IP fragments before discarding them. - type: integer - default: 30 - fin_timeout: - description: |- - The number of seconds the client or server waits to receive a final FIN before closing a socket. + source_port: + description: "TCP source port no " type: integer - default: 60 - syn_retries: - description: |- - Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + default: 1024 + destination_port: + description: "TCP destination port no " type: integer - default: 5 + default: 1024 name: description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - ChoiceNone: - description: |- - A empty container that is used to indicate a null choice. - type: object - Value.Object: - type: object - properties: - max: - description: |- - Maximum value of object - type: integer - min: - description: |- - Minimum value of object - type: integer Device.Http: description: |- HTTP configs. type: object properties: + tcp_name: + description: | + TCP interface name + + x-constraint: + - /components/schemas/Device.Tcp/properties/name + type: string + x-constraint: + - /components/schemas/Device.Tcp/properties/name enable_ssl: description: |- Enable SSL for HTTP @@ -4523,30 +4512,17 @@ components: Enable cookie support for per connection type: boolean default: false - traffic: - description: |- - Enable cookie support for per connection - $ref: '#/components/schemas/Traffic' - name: + method: description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. + HTTP method like GET, POST type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Traffic: - description: |- - HTTP traffic configs such as get,post commands. - type: object - properties: + enum: + - get + - post get: - description: |- - HTTP get command - $ref: '#/components/schemas/Traffic.Get' + $ref: '#/components/schemas/Method.Get' post: - description: |- - HTTP get command - $ref: '#/components/schemas/Traffic.Post' + $ref: '#/components/schemas/Method.Post' name: description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. @@ -4554,17 +4530,18 @@ components: pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ required: - name - Traffic.Get: + Method.Get: description: |- - A get operation such as HTTP->GET + A GET operation of HTTP type: object required: - destination + - page - name properties: destination: description: |- - The Server name/IP address + Server name/IP address type: string page: description: |- @@ -4575,11 +4552,13 @@ components: Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Traffic.Post: - description: "A Post operation such as HTTP->POST " + Method.Post: + description: |- + A POST operation of HTTP type: object required: - destination + - page - name properties: destination: @@ -4588,7 +4567,7 @@ components: type: string page: description: |- - The page name to perform get opertaion. + The page name to perform post opertaion. type: string name: description: |- diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 5d8a4963..d92ee181 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -865,10 +865,10 @@ message Device { optional DeviceVxlan vxlan = 6; // The properties of TCP and its children, - optional DeviceTcp tcp = 7; + repeated DeviceTcp tcp = 7; // The properties of HTTP and its children, - optional DeviceHttp http = 8; + repeated DeviceHttp http = 8; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. @@ -3572,129 +3572,114 @@ message VxlanV6TunnelDestinationIPModeMulticast { // TCP configs. message DeviceTcp { + // IPv4/v6 interface name + // + // x-constraint: + // - /components/schemas/Device.Ipv4Base/properties/name + // + // required = true + string ip_interface_name = 1; + // The TCP keep alive timer // default = 7200 - optional int32 keep_alive_time = 1; + optional int32 keep_alive_time = 2; // The TCP receive buffer size // default = 4096 - optional int32 receive_buffer_size = 2; + optional int32 receive_buffer_size = 3; // The TCP transmit buffer size // default = 4096 - optional int32 transmit_buffer_size = 3; + optional int32 transmit_buffer_size = 4; - // Source port range -> min, max - optional ValueObject source_port_range = 4; + // TCP source port no + // default = 1024 + optional int32 source_port = 5; - // Retransmission Timeout value -> min, max. - optional ValueObject retransmission_timeout = 5; - - // The number of bytes separating packets in a stream - // default = 8 - optional int32 inter_packet_gap = 6; - - // The number of seconds the TCP should keep IP fragments before discarding them. - // default = 30 - optional int32 fragment_reassembly_timer = 7; - - // The number of seconds the client or server waits to receive a final FIN before closing - // a socket. - // default = 60 - optional int32 fin_timeout = 8; - - // Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted - // default = 5 - optional int32 syn_retries = 9; + // TCP destination port no + // default = 1024 + optional int32 destination_port = 6; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 10; -} - -// A empty container that is used to indicate a null choice. -message ChoiceNone { -} - -// Description missing in models -message ValueObject { - - // Maximum value of object - optional int32 max = 1; - - // Minimum value of object - optional int32 min = 2; + string name = 7; } // HTTP configs. message DeviceHttp { + // TCP interface name + // + // x-constraint: + // - /components/schemas/Device.Tcp/properties/name + // + optional string tcp_name = 1; + // Enable SSL for HTTP // default = False - optional bool enable_ssl = 1; + optional bool enable_ssl = 2; // HTTP Version // default = 1 - optional int32 http_version = 2; + optional int32 http_version = 3; // Enable cookie support for HTTP // default = False - optional bool enable_cookie_support = 3; + optional bool enable_cookie_support = 4; // Max HTTP sessions // default = 1 - optional int32 max_sessions = 4; + optional int32 max_sessions = 5; // Max HTTP streams // default = 1 - optional int32 max_streams = 5; + optional int32 max_streams = 6; // Command timeout timer in seconds // default = 600 - optional int32 command_timeout = 6; + optional int32 command_timeout = 7; // URL stats count // default = 10 - optional int32 url_stats_count = 7; + optional int32 url_stats_count = 8; // Enable cookie support for per connection // default = False - optional bool enable_per_conn_cookie_support = 8; - - // Enable cookie support for per connection - optional Traffic traffic = 9; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 10; -} + optional bool enable_per_conn_cookie_support = 9; -// HTTP traffic configs such as get,post commands. -message Traffic { + message Method { + enum Enum { + unspecified = 0; + get = 1; + post = 2; + } + } + // HTTP method like GET, POST + optional Method.Enum method = 10; - // HTTP get command - optional TrafficGet get = 1; + // Description missing in models + optional MethodGet get = 11; - // HTTP get command - optional TrafficPost post = 2; + // Description missing in models + optional MethodPost post = 12; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 3; + string name = 13; } -// A get operation such as HTTP->GET -message TrafficGet { +// A GET operation of HTTP +message MethodGet { - // The Server name/IP address + // Server name/IP address // required = true string destination = 1; // The page name to perform get opertaion. - optional string page = 2; + // required = true + string page = 2; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. @@ -3702,15 +3687,16 @@ message TrafficGet { string name = 3; } -// A Post operation such as HTTP->POST -message TrafficPost { +// A POST operation of HTTP +message MethodPost { // The Server name/IP address // required = true string destination = 1; - // The page name to perform get opertaion. - optional string page = 2; + // The page name to perform post opertaion. + // required = true + string page = 2; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. diff --git a/device/device.yaml b/device/device.yaml index 658da244..79e05a32 100644 --- a/device/device.yaml +++ b/device/device.yaml @@ -58,10 +58,14 @@ components: tcp: description: >- The properties of TCP and its children, - $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' + type: array + items: + $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' http: description: >- The properties of HTTP and its children, - $ref: './http/http.yaml#/components/schemas/Device.Http' + type: array + items: + $ref: './http/http.yaml#/components/schemas/Device.Http' \ No newline at end of file diff --git a/device/http/http.yaml b/device/http/http.yaml index 4e4076d7..96ed0b5a 100644 --- a/device/http/http.yaml +++ b/device/http/http.yaml @@ -7,6 +7,12 @@ components: HTTP configs. type: object properties: + tcp_name: + description: >- + TCP interface name + type: string + x-constraint: + - '/components/schemas/Device.Tcp/properties/name' enable_ssl: description: >- Enable SSL for HTTP @@ -47,7 +53,14 @@ components: Enable cookie support for per connection type: boolean default: false - traffic: + method: description: >- - Enable cookie support for per connection - $ref: './traffic.yaml#/components/schemas/Traffic' + HTTP method like GET, POST + type: string + enum: + - get + - post + get: + $ref: './method.yaml#/components/schemas/Method.Get' + post: + $ref: './method.yaml#/components/schemas/Method.Post' diff --git a/device/http/command.yaml b/device/http/method.yaml similarity index 63% rename from device/http/command.yaml rename to device/http/method.yaml index 8640e94a..2336ced4 100644 --- a/device/http/command.yaml +++ b/device/http/method.yaml @@ -1,29 +1,29 @@ components: schemas: - Traffic.Get: + Method.Get: x-include: - - '../../common/common.yaml#/components/schemas/Named.Object' + - '../common/common.yaml#/components/schemas/Named.Object' description: >- - A get operation such as HTTP->GET + A GET operation of HTTP type: object - required: [destination] + required: [destination, page] properties: destination: description: >- - The Server name/IP address + Server name/IP address type: string page: description: >- The page name to perform get opertaion. type: string - - Traffic.Post: + + Method.Post: x-include: - '../../common/common.yaml#/components/schemas/Named.Object' description: >- - A Post operation such as HTTP->POST + A POST operation of HTTP type: object - required: [destination] + required: [destination, page] properties: destination: description: >- @@ -31,5 +31,5 @@ components: type: string page: description: >- - The page name to perform get opertaion. + The page name to perform post opertaion. type: string \ No newline at end of file diff --git a/device/http/traffic.yaml b/device/http/traffic.yaml deleted file mode 100644 index 35ad5db2..00000000 --- a/device/http/traffic.yaml +++ /dev/null @@ -1,17 +0,0 @@ -components: - schemas: - Traffic: - x-include: - - '../common/common.yaml#/components/schemas/Named.Object' - description: >- - HTTP traffic configs such as get,post commands. - type: object - properties: - get: - description: >- - HTTP get command - $ref: './command.yaml#/components/schemas/Traffic.Get' - post: - description: >- - HTTP get command - $ref: './command.yaml#/components/schemas/Traffic.Post' \ No newline at end of file diff --git a/device/tcp/tcp.yaml b/device/tcp/tcp.yaml index b00bb66f..1e622200 100644 --- a/device/tcp/tcp.yaml +++ b/device/tcp/tcp.yaml @@ -6,7 +6,14 @@ components: description: >- TCP configs. type: object + required: [ip_interface_name] properties: + ip_interface_name: + description: >- + IPv4/v6 interface name + type: string + x-constraint: + - '/components/schemas/Device.Ipv4Base/properties/name' keep_alive_time: description: >- The TCP keep alive timer @@ -22,31 +29,13 @@ components: The TCP transmit buffer size type: integer default: 4096 - source_port_range: - description: >- - Source port range -> min, max - $ref: '../../common/common.yaml#/components/schemas/Value.Object' - retransmission_timeout: - description: >- - Retransmission Timeout value -> min, max. - $ref: '../../common/common.yaml#/components/schemas/Value.Object' - inter_packet_gap: - description: >- - The number of bytes separating packets in a stream - type: integer - default: 8 - fragment_reassembly_timer: - description: >- - The number of seconds the TCP should keep IP fragments before discarding them. - type: integer - default: 30 - fin_timeout: + source_port: description: >- - The number of seconds the client or server waits to receive a final FIN before closing a socket. + TCP source port no type: integer - default: 60 - syn_retries: + default: 1024 + destination_port: description: >- - Number of times an un-acknowledged SYN for an active TCP connection will be re-transmitted + TCP destination port no type: integer - default: 5 + default: 1024 \ No newline at end of file From 084b9a4709ebd96b51d402d660fe0dd5c9ae805c Mon Sep 17 00:00:00 2001 From: waseembaig Date: Fri, 9 Sep 2022 14:45:12 +0530 Subject: [PATCH 04/27] updated with x-field-uid --- artifacts/openapi.html | 724 -- artifacts/openapi.yaml | 15278 -------------------------------------- artifacts/otg.proto | 14514 ------------------------------------ device/device.yaml | 17 +- device/http/http.yaml | 21 +- device/http/method.yaml | 26 +- device/tcp/tcp.yaml | 9 +- 7 files changed, 59 insertions(+), 30530 deletions(-) delete mode 100644 artifacts/openapi.html delete mode 100644 artifacts/openapi.yaml delete mode 100644 artifacts/otg.proto diff --git a/artifacts/openapi.html b/artifacts/openapi.html deleted file mode 100644 index 9be88bc7..00000000 --- a/artifacts/openapi.html +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - Open Traffic Generator API - - - - - - - - - -

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard -interface for emulating layer 2-7 network devices and generating test traffic.

-

Contributions can be made in the following ways:

- -

Configuration

set_config

Sets configuration resources on the traffic generator.

-
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

-
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

-
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

-
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

-
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. -Each device contains configurations for network interfaces and -protocols running on top of those interfaces.

-
Array of objects (Flow)

The flows that will be configured on the traffic generator.

-
object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

-

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. -The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

-
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. -If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Flow/properties/name
  • -
-
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. -If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). -If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. -If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. -If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

-

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. -If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-
state
required
string
Enum: "start" "stop"

The capture state.

-

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

-
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

-
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

-

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

-

x-constraint:

-
    -
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • -
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • -
  • /components/schemas/Isis.V4RouteRange/properties/name
  • -
  • /components/schemas/Isis.V6RouteRange/properties/name
  • -
-
state
required
string
Enum: "withdraw" "advertise"

Route specific states

-

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

-
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

-

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

-
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

-

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

-
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

-

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

-
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

-
object (Flow.Metrics.Request)

The container for a flow metric request.

-
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

-
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

-
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

-
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

-
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

-
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

-
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

-
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

-
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

-
port_name
required
string

The name of a port a capture is started on.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
- - - - \ No newline at end of file diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml deleted file mode 100644 index 1feec9f5..00000000 --- a/artifacts/openapi.yaml +++ /dev/null @@ -1,15278 +0,0 @@ -openapi: 3.0.3 -info: - title: Open Traffic Generator API - description: "Open Traffic Generator API defines a model-driven, vendor-neutral\ - \ and standard \ninterface for emulating layer 2-7 network devices and generating\ - \ test traffic.\n\nContributions can be made in the following ways:\n- [open an\ - \ issue](https://github.com/open-traffic-generator/models/issues) in the models\ - \ repository\n- [fork the models repository](https://github.com/open-traffic-generator/models)\ - \ and submit a PR" - version: 0.8.7 - contact: - url: https://github.com/open-traffic-generator/models - license: - name: MIT - url: https://opensource.org/licenses/MIT - x-model-guide: https://github.com/open-traffic-generator/models/blob/master/MODEL-GUIDE.md -servers: -- url: / -paths: - /config: - post: - tags: - - Configuration - operationId: set_config - description: |- - Sets configuration resources on the traffic generator. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Config' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - get: - tags: - - Configuration - operationId: get_config - responses: - '200': - description: |- - Config response from the traffic generator - content: - application/json: - schema: - $ref: '#/components/schemas/Config' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/transmit: - post: - tags: - - Control - operationId: set_transmit_state - description: |- - Updates the state of configuration resources on the traffic generator. - The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Transmit.State' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/link: - post: - tags: - - Control - operationId: set_link_state - description: |- - Updates the state of configuration resources on the traffic generator. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Link.State' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/capture: - post: - tags: - - Control - operationId: set_capture_state - description: |- - Updates the state of configuration resources on the traffic generator. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Capture.State' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/flows: - post: - tags: - - Control - operationId: update_flows - description: |- - Updates flow properties without disruption of transmit state. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Flows.Update' - responses: - '200': - description: |- - Response with updated Config from the traffic generator - content: - application/json: - schema: - $ref: '#/components/schemas/Config' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/routes: - post: - tags: - - Control - operationId: set_route_state - description: |- - Updates the state of configuration resources on the traffic generator. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Route.State' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/ping: - post: - tags: - - Control - operationId: send_ping - description: |- - API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Ping.Request' - responses: - '200': - description: |- - Responses for Ping - content: - application/json: - schema: - $ref: '#/components/schemas/Ping.Response' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/protocols: - post: - tags: - - Control - operationId: set_protocol_state - description: |- - Sets all configured protocols to `start` or `stop` state. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Protocol.State' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /control/devices: - post: - tags: - - Control - operationId: set_device_state - description: |- - Set specific state/actions on device configuration resources on the traffic generator. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Device.State' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /results/metrics: - description: |- - Metrics API - post: - tags: - - Metrics - operationId: get_metrics - requestBody: - description: |- - Request to traffic generator for metrics of choice - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Metrics.Request' - responses: - '200': - description: |- - Response from traffic generator for chosen metrics - content: - application/json: - schema: - $ref: '#/components/schemas/Metrics.Response' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /results/states: - description: |- - States API - post: - tags: - - States - operationId: get_states - requestBody: - description: |- - Request to traffic generator for states of choice - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/States.Request' - responses: - '200': - description: |- - Response from traffic generator for chosen states - content: - application/json: - schema: - $ref: '#/components/schemas/States.Response' - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' - /results/capture: - description: |- - Capture results API - post: - tags: - - Capture - operationId: get_capture - requestBody: - description: |- - Capture results request to the traffic generator. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Capture.Request' - responses: - '200': - description: |- - Capture results response from the traffic generator. - content: - application/octet-stream: - schema: - type: string - format: binary - '400': - $ref: '#/components/responses/BadRequest' - '500': - $ref: '#/components/responses/InternalServerError' -components: - responses: - Success: - description: "The request has succeeded with no application content but the\ - \ server \nmay return a list of detailed warnings." - content: - application/json: - schema: - $ref: '#/components/schemas/Response.Warning' - BadRequest: - description: "This indicates that the server cannot or will not process the\ - \ request \ndue to something that is perceived to be a client error.\nAdditional\ - \ details are in the errors." - content: - application/json: - schema: - $ref: '#/components/schemas/Response.Error' - InternalServerError: - description: "This indicates that the server encountered an unexpected condition\ - \ that \nprevented it from fulfilling the request.\nAdditional details are\ - \ in the errors." - content: - application/json: - schema: - $ref: '#/components/schemas/Response.Error' - schemas: - Config: - description: |- - A container for all models that are part of the configuration. - type: object - properties: - ports: - description: |- - The ports that will be configured on the traffic generator. - type: array - items: - $ref: '#/components/schemas/Port' - lags: - description: |- - The LAGs that will be configured on the traffic generator. - type: array - items: - $ref: '#/components/schemas/Lag' - layer1: - description: |- - The layer1 settings that will be configured on the traffic generator. - type: array - items: - $ref: '#/components/schemas/Layer1' - captures: - description: |- - The capture settings that will be configured on the traffic generator. - type: array - items: - $ref: '#/components/schemas/Capture' - devices: - description: "The emulated devices that will be configured on the traffic\ - \ generator.\nEach device contains configurations for network interfaces\ - \ and \nprotocols running on top of those interfaces." - type: array - items: - $ref: '#/components/schemas/Device' - flows: - description: |- - The flows that will be configured on the traffic generator. - type: array - items: - $ref: '#/components/schemas/Flow' - events: - $ref: '#/components/schemas/Event' - options: - $ref: '#/components/schemas/Config.Options' - Config.Options: - description: |- - Global configuration options. - type: object - properties: - port_options: - $ref: '#/components/schemas/Port.Options' - Port: - description: |- - An abstract test port. - type: object - properties: - location: - description: |- - The location of a test port. It is the endpoint where packets will emit from. - Test port locations can be the following: - - physical appliance with multiple ports - - physical chassis with multiple cards and ports - - local interface - - virtual machine, docker container, kubernetes cluster - - The test port location format is implementation specific. Use the /results/capabilities API to determine what formats an implementation supports for the location property. - Get the configured location state by using the /results/port API. - type: string - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Port.Options: - description: "Common port options that apply to all configured Port objects. " - type: object - properties: - location_preemption: - description: |- - Preempt all the test port locations as defined by the Port.Port.properties.location. If the test ports defined by their location values are in use and this value is true, the test ports will be preempted. - type: boolean - default: false - Lag: - description: |- - The container for LAG (ports group) - aggregation of multiple LAG members (ports) - type: object - properties: - ports: - type: array - items: - $ref: '#/components/schemas/Lag.Port' - minItems: 1 - maxItems: 32 - protocol: - $ref: '#/components/schemas/Lag.Protocol' - min_links: - description: |- - Specifies the mininum number of member interfaces that must be active for the aggregate interface to be available - type: integer - format: int32 - minimum: 0 - maximum: 32 - default: 1 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Lag.Port: - description: |- - The container for a port's ethernet interface and LAG protocol settings - type: object - required: - - port_name - - ethernet - properties: - port_name: - description: "The name of a port object that will be part of the LAG. \n\ - \nx-constraint:\n- /components/schemas/Port/properties/name\n" - type: string - x-constraint: - - /components/schemas/Port/properties/name - lacp: - $ref: '#/components/schemas/Lag.Port.Lacp' - ethernet: - $ref: '#/components/schemas/Device.EthernetBase' - Lag.Protocol: - type: object - properties: - choice: - description: |- - The type of controlling protocol for the LAG (ports group). - type: string - enum: - - lacp - - static - default: lacp - lacp: - $ref: '#/components/schemas/Lag.Protocol.Lacp' - static: - $ref: '#/components/schemas/Lag.Protocol.Static' - Lag.Protocol.Static: - description: |- - The container for static link aggregation protocol settings. - type: object - properties: - lag_id: - description: |- - The static lag id - type: integer - minimum: 0 - maximum: 65535 - default: 0 - Lag.Protocol.Lacp: - description: |- - The container for link aggregation control protocol settings of a LAG (ports group). - type: object - properties: - actor_system_id: - description: |- - The actor system id - type: string - format: mac - default: 00:00:00:00:00:00 - actor_system_priority: - description: |- - The actor system priority - type: integer - minimum: 0 - maximum: 65535 - default: 0 - actor_key: - description: |- - The actor key - type: integer - minimum: 0 - maximum: 65535 - default: 0 - Lag.Port.Lacp: - description: |- - The container for link aggregation control protocol settings of a LAG member (port). - type: object - properties: - actor_port_number: - description: |- - The actor port number - type: integer - minimum: 0 - maximum: 65535 - default: 0 - actor_port_priority: - description: |- - The actor port priority - type: integer - minimum: 0 - maximum: 65535 - default: 1 - actor_activity: - description: |- - Sets the value of LACP actor activity as either passive or active. - Passive indicates the port's preference for not transmitting LACPDUs unless its partner's control is Active. - Active indicates the port's preference to participate in the protocol regardless of the partner's control value. - type: string - enum: - - passive - - active - default: active - lacpdu_periodic_time_interval: - x-constants: - fast: 1 - slow: 30 - auto: 0 - description: |- - This field defines how frequently LACPDUs are sent to the link partner - type: integer - minimum: 0 - maximum: 65535 - default: 0 - lacpdu_timeout: - x-constants: - short: 3 - long: 90 - auto: 0 - description: |- - This timer is used to detect whether received protocol information has expired - type: integer - minimum: 0 - maximum: 65535 - default: 0 - Device.EthernetBase: - description: |- - Base Ethernet interface. - type: object - required: - - mac - - name - properties: - mac: - description: |- - Media Access Control address. - type: string - format: mac - mtu: - description: |- - Maximum Transmission Unit. - type: integer - minimum: 0 - maximum: 65535 - default: 1500 - vlans: - description: |- - List of VLANs - type: array - items: - $ref: '#/components/schemas/Device.Vlan' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.Ethernet: - description: |- - An Ethernet interface with IPv4 and IPv6 addresses. - Base Ethernet interface. - type: object - properties: - port_name: - description: | - Status: deprecated - The unique name of a Port or a LAG that will emulate this interface. - port_name is deprecated and will be removed in future release.port_name and connection can't be used together, use either port_name or connection. - - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - x-status: deprecated - type: string - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - connection: - description: |- - Device connection to physical, LAG or another device. - $ref: '#/components/schemas/Ethernet.Connection' - ipv4_addresses: - description: "List of IPv4 addresses and their gateways. " - type: array - items: - $ref: '#/components/schemas/Device.Ipv4' - ipv6_addresses: - description: |- - List of global IPv6 addresses and their gateways. - The Link Local IPv6 address will be automatically generated. - type: array - items: - $ref: '#/components/schemas/Device.Ipv6' - mac: - description: |- - Media Access Control address. - type: string - format: mac - mtu: - description: |- - Maximum Transmission Unit. - type: integer - minimum: 0 - maximum: 65535 - default: 1500 - vlans: - description: |- - List of VLANs - type: array - items: - $ref: '#/components/schemas/Device.Vlan' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - mac - - name - Ethernet.Connection: - description: |- - Ethernet interface connection to a port, LAG or VXLAN tunnel. - type: object - properties: - choice: - description: |- - port_name, lag_name or vxlan_name - type: string - enum: - - port_name - - lag_name - - vxlan_name - port_name: - description: | - Name of the port that the Ethernet interface is configured on. - - x-constraint: - - /components/schemas/Port/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name - lag_name: - description: | - Name of the LAG that the Ethernet interface is configured on. - - x-constraint: - - /components/schemas/Lag/properties/name - type: string - x-constraint: - - /components/schemas/Lag/properties/name - vxlan_name: - description: | - Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to. - - x-constraint: - - #/components/schemas/VXlan.V4Tunnel/properties/name - - #/components/schemas/VXlan.V6Tunnel/properties/name - type: string - x-constraint: - - '#/components/schemas/VXlan.V4Tunnel/properties/name' - - '#/components/schemas/VXlan.V6Tunnel/properties/name' - Device.Vlan: - description: |- - Emulated VLAN protocol. - type: object - properties: - tpid: - description: |- - Tag protocol identifier - type: string - enum: - - x8100 - - x88A8 - - x9100 - - x9200 - - x9300 - default: x8100 - priority: - description: |- - Priority code point - type: integer - minimum: 0 - maximum: 3 - default: 0 - id: - description: |- - VLAN identifier - type: integer - minimum: 0 - maximum: 4095 - default: 1 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Device.Ipv4: - description: |- - An IPv4 interface with gateway - A base IPv4 interface. - type: object - required: - - gateway - - address - - name - properties: - gateway: - description: |- - The IPv4 address of the gateway - type: string - format: ipv4 - address: - description: |- - The IPv4 address - type: string - format: ipv4 - prefix: - description: |- - The prefix of the IPv4 address. - type: integer - minimum: 1 - maximum: 32 - default: 24 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.Ipv4Loopback: - description: |- - An IPv4 Loopback interface. - type: object - required: - - eth_name - - name - properties: - eth_name: - description: | - The unique name of the Ethernet interface behind which this Loopback interface will be created. - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - address: - description: |- - The IPv4 Loopback address with prefix length of 32. - type: string - format: ipv4 - default: 0.0.0.0 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.Ipv6: - description: |- - Status: under-review - An IPv6 interface with gateway. - A base IPv6 interface. - type: object - required: - - gateway - - address - - name - properties: - gateway: - description: |- - The IPv6 gateway address. - type: string - format: ipv6 - address: - description: |- - The IPv6 address. - type: string - format: ipv6 - prefix: - description: |- - The network prefix. - type: integer - minimum: 1 - maximum: 128 - default: 64 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-status: under-review - Device.Ipv6Loopback: - description: |- - An IPv6 Loopback interface - type: object - required: - - eth_name - - name - properties: - eth_name: - description: "The unique name of the Ethernet interface behind which this\ - \ Loopback \n interface will be created.\n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - address: - description: |- - The IPv6 Loopback address with prefix length of 128. - type: string - format: ipv6 - default: ::0 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Layer1: - description: |- - A container for layer1 settings. - type: object - required: - - port_names - - name - properties: - port_names: - description: "A list of unique names of port objects that will share the\n\ - choice settings. \n\nx-constraint:\n- /components/schemas/Port/properties/name\n" - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - speed: - description: |- - Set the speed if supported. - type: string - enum: - - speed_10_fd_mbps - - speed_10_hd_mbps - - speed_100_fd_mbps - - speed_100_hd_mbps - - speed_1_gbps - - speed_10_gbps - - speed_25_gbps - - speed_40_gbps - - speed_50_gbps - - speed_100_gbps - - speed_200_gbps - - speed_400_gbps - default: speed_10_gbps - media: - description: |- - Set the type of media interface if supported. - type: string - enum: - - copper - - fiber - - sgmii - promiscuous: - description: |- - Enable promiscuous mode if supported. - type: boolean - default: true - mtu: - description: |- - Set the maximum transmission unit size if supported. - type: integer - minimum: 64 - maximum: 9000 - default: 1500 - ieee_media_defaults: - description: |- - Set to true to override the auto_negotiate, link_training - and rs_fec settings for gigabit ethernet interfaces. - type: boolean - auto_negotiate: - description: |- - Enable/disable auto negotiation. - type: boolean - auto_negotiation: - $ref: '#/components/schemas/Layer1.AutoNegotiation' - flow_control: - $ref: '#/components/schemas/Layer1.FlowControl' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Layer1.AutoNegotiation: - description: |- - Configuration for auto negotiation settings - type: object - properties: - advertise_1000_mbps: - description: |- - If auto_negotiate is true and the interface supports this option - then this speed will be advertised. - type: boolean - default: true - advertise_100_fd_mbps: - description: |- - If auto_negotiate is true and the interface supports this option - then this speed will be advertised. - type: boolean - default: true - advertise_100_hd_mbps: - description: |- - If auto_negotiate is true and the interface supports this option - then this speed will be advertised. - type: boolean - default: true - advertise_10_fd_mbps: - description: |- - If auto_negotiate is true and the interface supports this option - then this speed will be advertised. - type: boolean - default: true - advertise_10_hd_mbps: - description: |- - If auto_negotiate is true and the interface supports this option - then this speed will be advertised. - type: boolean - default: true - link_training: - description: |- - Enable/disable gigabit ethernet link training. - type: boolean - default: false - rs_fec: - description: |- - Enable/disable gigabit ethernet reed solomon forward error correction (RS FEC). - type: boolean - default: false - Layer1.FlowControl: - description: |- - A container for layer1 receive flow control settings. - To enable flow control settings on ports this object must be a valid - object not a null value. - type: object - properties: - directed_address: - description: |- - The 48bit mac address that the layer1 port names will listen on - for a directed pause. - type: string - format: mac - default: 01:80:C2:00:00:01 - choice: - description: |- - The type of priority flow control. - type: string - enum: - - ieee_802_1qbb - - ieee_802_3x - default: ieee_802_1qbb - ieee_802_1qbb: - $ref: '#/components/schemas/Layer1.Ieee8021qbb' - ieee_802_3x: - $ref: '#/components/schemas/Layer1.Ieee8023x' - Layer1.Ieee8023x: - description: |- - A container for ieee 802.3x rx pause settings - type: object - Layer1.Ieee8021qbb: - description: "These settings enhance the existing 802.3x pause priority capabilities\ - \ \nto enable flow control based on 802.1p priorities (classes of service). " - type: object - properties: - pfc_delay: - description: "The upper limit on the transmit time of a queue after receiving\ - \ a \nmessage to pause a specified priority.\nA value of 0 or null indicates\ - \ that pfc delay will not be enabled. " - type: integer - default: 0 - pfc_class_0: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 0 - pfc_class_1: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 1 - pfc_class_2: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 2 - pfc_class_3: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 3 - pfc_class_4: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 4 - pfc_class_5: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 5 - pfc_class_6: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 6 - pfc_class_7: - description: |- - The valid values are null, 0 - 7. - A null value indicates there is no setting for this pfc class. - type: integer - default: 7 - Capture: - x-status: under-review - description: |- - Status: under-review - Configuration for capture settings. - type: object - required: - - port_names - - name - properties: - port_names: - description: | - The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects. - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - filters: - description: |- - A list of filters to apply to the capturing ports. If no filters are specified then all packets will be captured. A capture can have multiple filters. The number of filters supported is determined by the implementation which can be retrieved using the capabilities API. - When multiple filters are specified the capture implementation must && (and) all the filters. - type: array - items: - $ref: '#/components/schemas/Capture.Filter' - overwrite: - description: |- - Overwrite the capture buffer. - type: boolean - default: true - packet_size: - description: |- - The maximum size of each captured packet. If no value is specified or it is null then the entire packet will be captured. - type: integer - format: - description: |- - The format of the capture file. - type: string - enum: - - pcap - - pcapng - default: pcap - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Capture.Filter: - description: |- - Configuration for capture filters - type: object - properties: - choice: - description: |- - The type of capture filter. - type: string - enum: - - custom - - ethernet - - vlan - - ipv4 - - ipv6 - default: custom - custom: - description: |- - Offset from last filter in the list. If no filters are present it is offset from position 0. Multiple custom filters can be present, the length of each custom filter is the length of the value being filtered. - $ref: '#/components/schemas/Capture.Custom' - ethernet: - $ref: '#/components/schemas/Capture.Ethernet' - vlan: - $ref: '#/components/schemas/Capture.Vlan' - ipv4: - $ref: '#/components/schemas/Capture.Ipv4' - ipv6: - $ref: '#/components/schemas/Capture.Ipv6' - Capture.Custom: - properties: - offset: - description: |- - The bit offset of field to filter on - type: integer - default: 0 - bit_length: - description: |- - The bit length of field to filter on - type: integer - default: 8 - value: - type: string - format: hex - default: '00' - mask: - type: string - format: hex - default: '00' - negate: - type: boolean - default: false - type: object - Capture.Field: - type: object - properties: - value: - type: string - format: hex - default: '00' - mask: - type: string - format: hex - default: '00' - negate: - type: boolean - default: false - Capture.Ethernet: - type: object - properties: - src: - $ref: '#/components/schemas/Capture.Field' - dst: - $ref: '#/components/schemas/Capture.Field' - ether_type: - $ref: '#/components/schemas/Capture.Field' - pfc_queue: - $ref: '#/components/schemas/Capture.Field' - Capture.Vlan: - type: object - properties: - priority: - $ref: '#/components/schemas/Capture.Field' - cfi: - $ref: '#/components/schemas/Capture.Field' - id: - $ref: '#/components/schemas/Capture.Field' - protocol: - $ref: '#/components/schemas/Capture.Field' - Capture.Ipv4: - type: object - properties: - version: - $ref: '#/components/schemas/Capture.Field' - header_length: - $ref: '#/components/schemas/Capture.Field' - priority: - $ref: '#/components/schemas/Capture.Field' - total_length: - $ref: '#/components/schemas/Capture.Field' - identification: - $ref: '#/components/schemas/Capture.Field' - reserved: - $ref: '#/components/schemas/Capture.Field' - dont_fragment: - $ref: '#/components/schemas/Capture.Field' - more_fragments: - $ref: '#/components/schemas/Capture.Field' - fragment_offset: - $ref: '#/components/schemas/Capture.Field' - time_to_live: - $ref: '#/components/schemas/Capture.Field' - protocol: - $ref: '#/components/schemas/Capture.Field' - header_checksum: - $ref: '#/components/schemas/Capture.Field' - src: - $ref: '#/components/schemas/Capture.Field' - dst: - $ref: '#/components/schemas/Capture.Field' - Capture.Ipv6: - type: object - properties: - version: - $ref: '#/components/schemas/Capture.Field' - traffic_class: - $ref: '#/components/schemas/Capture.Field' - flow_label: - $ref: '#/components/schemas/Capture.Field' - payload_length: - $ref: '#/components/schemas/Capture.Field' - next_header: - $ref: '#/components/schemas/Capture.Field' - hop_limit: - $ref: '#/components/schemas/Capture.Field' - src: - $ref: '#/components/schemas/Capture.Field' - dst: - $ref: '#/components/schemas/Capture.Field' - Device: - description: |- - A container for emulated interfaces, loopback interfaces and protocol configurations. - type: object - properties: - ethernets: - description: |- - Ethernet configuration for one or more emulated network interfaces. - type: array - items: - $ref: '#/components/schemas/Device.Ethernet' - ipv4_loopbacks: - description: |- - IPv4 Loopback interface that can be attached to an Ethernet in the same device or to an Ethernet in another device. - type: array - items: - $ref: '#/components/schemas/Device.Ipv4Loopback' - ipv6_loopbacks: - description: |- - IPv6 Loopback interface that can be attached to an Ethernet in the same device or to an Ethernet in another device. - type: array - items: - $ref: '#/components/schemas/Device.Ipv6Loopback' - isis: - description: |- - The properties of an IS-IS router and its children, such as IS-IS interfaces and route ranges. - $ref: '#/components/schemas/Device.IsisRouter' - bgp: - description: |- - The properties of BGP router and its children, such as BGPv4, BGPv6 peers and their route ranges. - $ref: '#/components/schemas/Device.BgpRouter' - vxlan: - description: |- - Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 - $ref: '#/components/schemas/Device.Vxlan' - tcp: - description: "The properties of TCP and its children, " - type: array - items: - $ref: '#/components/schemas/Device.Tcp' - http: - description: "The properties of HTTP and its children, " - type: array - items: - $ref: '#/components/schemas/Device.Http' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Device.IsisRouter: - x-status: under-review - description: |- - Status: under-review - A container of properties for an ISIS router and its interfaces. - type: object - required: - - system_id - - interfaces - - name - properties: - instance: - description: |- - This contains the properties of a Multi-Instance-capable routers or MI-RTR. Each router can emulate one ISIS instance at a time. - $ref: '#/components/schemas/Device.IsisMultiInstance' - system_id: - description: |- - The System ID for this emulated ISIS router, e.g. "640100010000". - type: string - format: hex - interfaces: - description: |- - List of ISIS interfaces for this router. - type: array - items: - $ref: '#/components/schemas/Isis.Interface' - basic: - description: "Contains basic properties of an ISIS Router. " - $ref: '#/components/schemas/Isis.Basic' - advanced: - description: |- - Contains advance properties of an ISIS Router.. - $ref: '#/components/schemas/Isis.Advanced' - router_auth: - description: |- - ISIS Router authentication properties. - $ref: '#/components/schemas/Isis.Authentication' - v4_routes: - description: |- - Emulated ISIS IPv4 routes. - type: array - items: - $ref: '#/components/schemas/Isis.V4RouteRange' - v6_routes: - description: |- - Emulated ISIS IPv6 routes. - type: array - items: - $ref: '#/components/schemas/Isis.V6RouteRange' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.IsisMultiInstance: - x-status: under-review - description: "Status: under-review\nThis container properties of an Multi-Instance-capable\ - \ router (MI-RTR). " - type: object - properties: - iid: - description: |- - Instance Identifier (IID) TLV will associate a PDU with an ISIS instance by using a unique 16-bit number and including one or more Instance-Specific Topology Identifiers (ITIDs). - type: integer - default: 1 - minimum: 0 - maximum: 65535 - itids: - description: |- - This contains one or more ITIDs that will be advertised in IID TLV. - type: array - items: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - Isis.Interface: - x-status: under-review - description: |- - Status: under-review - Configuration for single ISIS interface. - type: object - required: - - eth_name - - name - properties: - eth_name: - description: "The unique name of the Ethernet interface on which ISIS is\ - \ running. Two ISIS interfaces cannot share the same Ethernet. \ - \ \n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - metric: - description: |- - The default metric cost for the interface. - type: integer - default: 10 - network_type: - description: "The type of network link. " - type: string - enum: - - broadcast - - point_to_point - default: broadcast - level_type: - description: "This indicates whether this router is participating in Level-1\ - \ (L1), \nLevel-2 (L2) or both L1 and L2 domains on this interface." - type: string - enum: - - level_1 - - level_2 - - level_1_2 - default: level_2 - l1_settings: - description: |- - Settings of Level 1 Hello. - $ref: '#/components/schemas/IsisInterface.Level' - l2_settings: - description: |- - Settings of Level 2 Hello. - $ref: '#/components/schemas/IsisInterface.Level' - multi_topology_ids: - description: |- - Contains the properties of multiple topologies. - type: array - items: - $ref: '#/components/schemas/Isis.MT' - traffic_engineering: - description: |- - Contains a list of Traffic Engineering attributes. - type: array - items: - $ref: '#/components/schemas/LinkState.TE' - authentication: - description: |- - The Circuit authentication method used for the interfaces on this emulated ISIS v4/v6 router. - $ref: '#/components/schemas/IsisInterface.Authentication' - advanced: - description: |- - Optional container for advanced interface properties. - $ref: '#/components/schemas/IsisInterface.Advanced' - link_protection: - description: |- - Link protection on the ISIS link between two interfaces. - $ref: '#/components/schemas/IsisInterface.LinkProtection' - srlg_values: - description: |- - This contains list of SRLG values for the link between two interfaces. - type: array - items: - type: integer - default: 0 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - IsisInterface.Level: - description: |- - Configuration for the properties of Level 1 Hello. - type: object - properties: - priority: - description: |- - The Priority setting in Level 1 LAN Hellos for Designated Router election. - type: integer - default: 0 - hello_interval: - description: |- - The Hello interval for Level 1 Hello messages, in seconds. - type: integer - default: 10 - dead_interval: - description: |- - The Dead (Holding Time) interval for Level 1 Hello messages, in seconds. - type: integer - default: 30 - Isis.MT: - x-status: under-review - description: |- - Status: under-review - Configuration of properties per interface per topology when multiple topologies are configured in an ISIS router. - in a ISIS router. - type: object - properties: - mt_id: - description: |- - The Multi Topology ID for one of the topologies supported on the ISIS interface. - type: integer - minimum: 0 - maximum: 65535 - default: 0 - link_metric: - description: |- - Specifies the link metric for this topology on the ISIS interface. - type: integer - default: 10 - minimum: 0 - maximum: 16777215 - LinkState.TE: - x-status: under-review - description: |- - Status: under-review - A container for Traffic Engineering properties on a interface. - type: object - properties: - administrative_group: - description: "The Administrative group sub-TLV (sub-TLV 3). It is a 4-octet\ - \ \nuser-defined bit mask used to assign administrative group numbers\ - \ \nto the interface, for use in assigning colors and resource classes.\ - \ \nEach set bit corresponds to a single administrative group for this\ - \ \ninterface. The settings translate into Group numbers, which range\ - \ \nfrom 0 to 31 (integers)." - type: string - format: hex - default: '00000000' - metric_level: - description: |- - The user-assigned link metric for Traffic Engineering. - type: integer - format: int64 - minimum: 0 - maximum: 4261412864 - default: 0 - max_bandwith: - description: "The maximum link bandwidth (sub-TLV 9) in bytes/sec allowed\ - \ for this \nlink for a direction." - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - max_reservable_bandwidth: - description: "The maximum link bandwidth (sub-TLV 10) in bytes/sec allowed\ - \ for this \nlink in a direction." - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - priority_bandwidths: - description: |- - Configuration of bandwidths of priority 0 through priority 7. - $ref: '#/components/schemas/LinkState.priorityBandwidths' - LinkState.priorityBandwidths: - description: "Specifies the amount of bandwidth that can be reserved with a\ - \ setup priority of 0 \nthrough 7, arranged in increasing order with priority\ - \ 0 having highest priority. \nIn ISIS, this is sent in sub-TLV (11) of Extended\ - \ IS Reachability TLV. " - type: object - properties: - pb0: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 0. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb1: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 1. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb2: - description: |- - Specify the amount of bandwidth that can be reserved for the Priority 2. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb3: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 3. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb4: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 4. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb5: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 5. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb6: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 6. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - pb7: - description: |- - Specifies the amount of bandwidth that can be reserved for the Priority 7. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 125000000 - IsisInterface.Authentication: - description: |- - Optional container for circuit authentication properties. - type: object - required: - - auth_type - properties: - auth_type: - description: |- - The circuit authentication method. - type: string - enum: - - md5 - - password - md5: - description: |- - MD5 key to be used for authentication. - type: string - minLength: 0 - maxLength: 255 - password: - description: |- - The password, in clear text, to be used for Authentication. - type: string - minLength: 0 - maxLength: 255 - IsisInterface.Advanced: - description: |- - Optional container for advanced interface properties. - type: object - properties: - auto_adjust_mtu: - description: "If a padded Hello message is received on the interface, the\ - \ length of \nthe Hello packets sent out on that interface is adjusted\ - \ to match." - type: boolean - default: true - auto_adjust_area: - description: "If a Level 1 Hello is received on this emulated router for\ - \ an area \nnot currently in its area list, an area from the received\ - \ Hello is \nadded to that list. This ensures an area match for all future\ - \ \nLevel 1 Hellos from the source L1 router." - type: boolean - default: true - auto_adjust_supported_protocols: - description: "If a Hello message listing supported protocols is received\ - \ on this \nemulated router, the supported protocols advertised by this\ - \ router \nare changed to match exactly." - type: boolean - default: false - enable_3way_handshake: - description: |- - If it is true, the Point-to-Point circuit will include 3-way TLV in its Point-to-Point IIH and attempt to establish the adjacency as specified in RFC 5303. This field is not applicable if network_type is set to 'broadcast' type in ISIS interface. - type: boolean - default: true - p2p_hellos_to_unicast_mac: - description: "If it is true, the Point-to-Point Hello messages will be sent\ - \ to the unicast MAC address. " - type: boolean - default: false - IsisInterface.LinkProtection: - description: |- - Optional container for the link protection sub TLV (type 20). - type: object - properties: - extra_traffic: - description: |- - Enable this to protect other link or links. LSPs on a link of this type are lost - if any of the links fail. - type: boolean - default: false - unprotected: - description: "Enabling this signifies that there is no other link protecting\ - \ this \nlink. LSPs on a link of this type are lost if the link fails." - type: boolean - default: false - shared: - description: "Enable this to share the Extra Traffic links between one or\ - \ more \nlinks of type Shared.There are one or more disjoint links of\ - \ type \nExtra Traffic that are protecting this link." - type: boolean - default: false - dedicated_1_to_1: - description: "Enabling this signifies that there is one dedicated disjoint\ - \ link \nof type Extra Traffic that is protecting this link." - type: boolean - default: false - dedicated_1_plus_1: - description: "Enabling this signifies that a dedicated disjoint link is\ - \ protecting \nthis link. However, the protecting link is not advertised\ - \ in the \nlink state database and is therefore not available for the\ - \ routing \nof LSPs." - type: boolean - default: false - enhanced: - description: "Enabling this signifies that a protection scheme that is more\ - \ \nreliable than Dedicated 1+1." - type: boolean - default: false - reserved_40: - description: "This is a Protection Scheme with value 0x40. " - type: boolean - default: false - reserved_80: - description: "This is a Protection Scheme with value 0x80. " - type: boolean - default: false - Isis.Basic: - description: |- - This contains ISIS router basic properties. - type: object - properties: - ipv4_te_router_id: - description: "IPv4 Traffic Engineering(TE) router id. This address should\ - \ be configured as an IPv4 Loopback address in 'ipv4_loopbacks' in the\ - \ Device. " - type: string - format: ipv4 - hostname: - description: |- - Host name for the router. The host name is transmitted in all the packets sent from the router. - type: string - enable_wide_metric: - description: |- - When set to true, it allows sending of more detailed metric information for the routes using 32-bit wide values using TLV 135 IP reachability and more detailed reachability information for IS reachability by using TLV 22. The detailed usage is described in RFC3784. - type: boolean - default: true - learned_lsp_filter: - description: |- - Configuration for controlling storage of ISIS learned LSPs are received from the neighbors. - type: boolean - default: false - Isis.Advanced: - description: |- - Contains ISIS router advanced properties. - type: object - properties: - enable_hello_padding: - description: |- - It enables padding of Hello message to MTU size. - type: boolean - default: true - max_area_addresses: - description: "The Number of Area Addresses permitted, with a valid range\ - \ from 0 to 254. A zero indicates a maximum of 3 addresses. " - type: integer - minimum: 0 - maximum: 254 - default: 3 - area_addresses: - description: |- - Its combination of the ISP and HO-DSP.Usually all nodes within an area have the same area address. If no area addresses are configured, a default area of "490001" will be advertised. - type: array - items: - type: string - format: hex - lsp_refresh_rate: - description: |- - The rate at which LSPs are re-sent in seconds. - type: integer - minimum: 1 - maximum: 65535 - default: 600 - lsp_lifetime: - description: |- - The MaxAge for retaining a learned LSP on this router in seconds. - type: integer - minimum: 1 - maximum: 65535 - default: 1200 - psnp_interval: - description: |- - The number of milliseconds between transmissions of Partial Sequence Number PDU. - type: integer - minimum: 1 - maximum: 60000 - default: 2000 - csnp_interval: - description: |- - The number of milliseconds between transmissions of Partial Sequence Number PDU. - type: integer - minimum: 1 - maximum: 65535000 - default: 10000 - max_lsp_size: - description: |- - The maximum size in bytes of any LSP that can be transmitted over a link of equal or less than maximum MTU size. - type: integer - minimum: 64 - maximum: 9216 - default: 1492 - lsp_mgroup_min_trans_interval: - description: |- - The number of seconds between transmissions of LSPs/MGROUP-PDUs. - type: integer - minimum: 1 - maximum: 60000 - default: 5000 - enable_attached_bit: - description: |- - If the Attached bit is enabled, it indicates that the ISIS router is attached to another area or the Level 2 backbone. The purpose of an Attached-Bit is to accomplish Inter-Area Routing. When an L1/L2 router is connected to more than one area, it sets the Attached-bit on its L1 LSP. This can cause a default route ( 0.0.0.0/0 ) to be installed by the receiving router. - type: boolean - default: true - Isis.Authentication: - description: |- - This contains ISIS Area/Domain authentication properties. - type: object - properties: - ignore_receive_md5: - description: |- - Do not verify MD5 checksum in received LSPs. - type: boolean - default: true - area_auth: - description: |- - The Area authentication method used for the emulated ISIS router. - This is used for L1 LSPs. - $ref: '#/components/schemas/Isis.AuthenticationBase' - domain_auth: - description: |- - The Domain authentication method used for the emulated ISIS router. - This is used for L2 LSPs. - $ref: '#/components/schemas/Isis.AuthenticationBase' - Isis.AuthenticationBase: - description: |- - Optional container for ISIS authentication properties. - type: object - required: - - auth_type - properties: - auth_type: - description: |- - The authentication method. - type: string - enum: - - md5 - - password - md5: - description: |- - Authentication as an MD5 key. - type: string - minLength: 0 - maxLength: 255 - password: - description: |- - Authentication as a clear text password. - type: string - minLength: 0 - maxLength: 255 - Isis.V4RouteRange: - description: |- - Emulated ISIS IPv4 routes. - Configuration for ISIS route ranges. - This contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - type: object - properties: - addresses: - description: |- - A list of group of IPv4 route addresses. - type: array - items: - $ref: '#/components/schemas/V4RouteAddress' - link_metric: - description: |- - The user-defined metric associated with this route range. - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - origin_type: - description: "The origin of the advertised route-internal or external to\ - \ the ISIS area. Options include the following: \n Internal-for intra-area\ - \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ - \ within L1, through Level 1 LSPs." - type: string - enum: - - internal - - external - default: internal - redistribution_type: - description: "Defines the Up/Down (Redistribution) bit defined for TLVs\ - \ 128 and 130 by RFC 2966. It is used for domain-wide advertisement of\ - \ prefix information. \n Up (0)-used when a prefix is initially advertised\ - \ within the ISIS L3 hierarchy, \n and for all other prefixes\ - \ in L1 and L2 LSPs. (default) \n Down (1)-used when an L1/L2 router\ - \ advertises L2 prefixes in L1 LSPs. \nThe prefixes are being advertised\ - \ from a higher level (L2) down to a lower level (L1). " - type: string - enum: - - up - - down - default: up - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - prefix_attr_enabled: - description: "Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability\ - \ Attribute Flags\nwill be advertised or not. " - type: boolean - default: false - x_flag: - description: |- - External Prefix Flag (Bit 0) - type: boolean - default: false - r_flag: - description: |- - Re-advertisement Flag (Bit 1) - type: boolean - default: false - n_flag: - description: |- - Node Flag (Bit 2) - type: boolean - default: false - required: - - name - V4RouteAddress: - description: |- - A container for IPv4 route addresses. - type: object - required: - - address - properties: - address: - description: |- - The starting address of the network. - type: string - format: ipv4 - prefix: - description: "The IPv4 network prefix length to be applied to the address. " - type: integer - default: 24 - minimum: 0 - maximum: 32 - count: - description: |- - The total number of addresses in the range. - type: integer - default: 1 - minimum: 1 - step: - description: |- - Increments the network address prefixes within a route range where multiple routes are present. The value is incremented according to the Prefix Length and Step. - type: integer - default: 1 - minimum: 1 - V6RouteAddress: - description: |- - A container for IPv6 route addresses. - type: object - required: - - address - properties: - address: - description: |- - The starting address of the network. - type: string - format: ipv6 - prefix: - description: |- - The IPv6 network prefix length to be applied to the address. - type: integer - default: 64 - minimum: 0 - maximum: 128 - count: - description: |- - The total number of addresses in the range. - type: integer - default: 1 - minimum: 1 - step: - description: |- - Increments the network address prefixes within a route range where multiple routes are present. The value is incremented according to the Prefix Length and Step. - type: integer - default: 1 - minimum: 1 - MACRouteAddress: - description: |- - A container for MAC route addresses. - type: object - required: - - address - properties: - address: - description: |- - The starting address of the MAC Range. - type: string - format: mac - prefix: - description: "The MAC prefix length to be applied to the address. " - type: integer - default: 48 - minimum: 0 - maximum: 48 - count: - description: |- - The total number of mac addresses in the range. - type: integer - default: 1 - minimum: 1 - step: - description: |- - Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. - type: integer - default: 1 - minimum: 1 - Isis.V6RouteRange: - description: |- - Emulated ISIS IPv6 routes. - Configuration for ISIS route ranges. - This contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - type: object - properties: - addresses: - description: |- - A list of group of IPv6 route addresses. - type: array - items: - $ref: '#/components/schemas/V6RouteAddress' - link_metric: - description: |- - The user-defined metric associated with this route range. - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - origin_type: - description: "The origin of the advertised route-internal or external to\ - \ the ISIS area. Options include the following: \n Internal-for intra-area\ - \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ - \ within L1, through Level 1 LSPs." - type: string - enum: - - internal - - external - default: internal - redistribution_type: - description: "Defines the Up/Down (Redistribution) bit defined for TLVs\ - \ 128 and 130 by RFC 2966. It is used for domain-wide advertisement of\ - \ prefix information. \n Up (0)-used when a prefix is initially advertised\ - \ within the ISIS L3 hierarchy, \n and for all other prefixes\ - \ in L1 and L2 LSPs. (default) \n Down (1)-used when an L1/L2 router\ - \ advertises L2 prefixes in L1 LSPs. \nThe prefixes are being advertised\ - \ from a higher level (L2) down to a lower level (L1). " - type: string - enum: - - up - - down - default: up - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - prefix_attr_enabled: - description: "Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability\ - \ Attribute Flags\nwill be advertised or not. " - type: boolean - default: false - x_flag: - description: |- - External Prefix Flag (Bit 0) - type: boolean - default: false - r_flag: - description: |- - Re-advertisement Flag (Bit 1) - type: boolean - default: false - n_flag: - description: |- - Node Flag (Bit 2) - type: boolean - default: false - required: - - name - Device.BgpRouter: - description: |- - Configuration for one or more IPv4 or IPv6 BGP peers. - type: object - required: - - router_id - properties: - router_id: - description: |- - The BGP router ID is a unique identifier used by BGP. It is a 32-bit value that is often represented by an IPv4 address. - type: string - format: ipv4 - ipv4_interfaces: - description: "This contains an array of references to IPv4 interfaces, \ - \ each of which will have list of peers to different destinations. " - type: array - items: - $ref: '#/components/schemas/Bgp.V4Interface' - ipv6_interfaces: - description: |- - This contains an array of references to IPv6 interfaces, each of which will have list of peers to different destinations. - type: array - items: - $ref: '#/components/schemas/Bgp.V6Interface' - Bgp.V4Peer: - x-status: under-review - description: |- - Status: under-review - Configuration for emulated BGPv4 peers and routes. - Configuration for basic emulated BGP peer settings. - type: object - required: - - peer_address - - as_type - - as_number - - name - properties: - peer_address: - description: |- - IPv4 address of the BGP peer for the session. - type: string - format: ipv4 - evpn_ethernet_segments: - description: "This contains the list of Ethernet Virtual Private Network\ - \ (EVPN) Ethernet Segments (ES) Per BGP Peer for IPv4 Address Family Identifier\ - \ (AFI).\n\nEach Ethernet Segment contains a list of EVPN Instances (EVIs)\ - \ . \nEach EVI contains a list of Broadcast Domains. \nEach Broadcast\ - \ Domain contains a list of MAC/IP Ranges. \n\n is responsible for advertising Ethernet Auto-discovery\ - \ Route Per EVI (Type 1).\n\n is responsible for\ - \ advertising Ethernet Auto-discovery Route Per Ethernet Segment (Type\ - \ 1).\n\n is responsible\ - \ for advertising MAC/IP Advertisement Route (Type 2).\n\n is responsible for advertising Inclusive Multicast\ - \ Ethernet Tag Route (Type 3).\n\nEthernet Segment is responsible for\ - \ advertising Ethernet Segment Route (Type 4)." - type: array - items: - $ref: '#/components/schemas/BgpV4.EthernetSegment' - as_type: - description: |- - The type of BGP autonomous system. External BGP is used for BGP links between two or more autonomous systems (ebgp). Internal BGP is used within a single autonomous system (ibgp). BGP property defaults are aligned with this object defined as an internal BGP peer. If the as_type is specified as 'ebgp' then other properties will need to be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' attribute in 'as_path' field in any Route Range should be changed from default value 'do_not_include_local_as' to any other value. - type: string - enum: - - ibgp - - ebgp - as_number: - description: |- - Autonomous System Number (AS number or ASN) - type: integer - as_number_width: - description: |- - The width in bytes of the as_number values. Any as_number values that exceeds the width MUST result in an error. - type: string - enum: - - two - - four - default: four - advanced: - $ref: '#/components/schemas/Bgp.Advanced' - capability: - $ref: '#/components/schemas/Bgp.Capability' - learned_information_filter: - $ref: '#/components/schemas/Bgp.LearnedInformationFilter' - v4_routes: - description: |- - Emulated BGPv4 route ranges. - type: array - items: - $ref: '#/components/schemas/Bgp.V4RouteRange' - v6_routes: - description: |- - Emulated BGPv6 route ranges. - type: array - items: - $ref: '#/components/schemas/Bgp.V6RouteRange' - v4_srte_policies: - description: |- - Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier (AFI). - type: array - items: - $ref: '#/components/schemas/BgpSrte.V4Policy' - v6_srte_policies: - description: |- - Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier (AFI). - type: array - items: - $ref: '#/components/schemas/BgpSrte.V6Policy' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Bgp.V4Interface: - description: |- - Configuration for emulated BGPv4 peers and routes on a single IPv4 interface. - type: object - required: - - ipv4_name - properties: - ipv4_name: - description: | - The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers. - - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - peers: - description: |- - This contains the list of BGPv4 peers configured on this interface. - type: array - items: - $ref: '#/components/schemas/Bgp.V4Peer' - Bgp.Advanced: - x-status: under-review - description: |- - Status: under-review - Configuration for BGP advanced settings. - type: object - properties: - hold_time_interval: - description: |- - Number of seconds the sender proposes for the value of the Hold Timer. - type: integer - default: 90 - keep_alive_interval: - description: |- - Number of seconds between transmissions of Keepalive messages by this peer. - type: integer - default: 30 - update_interval: - description: |- - The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. - type: integer - default: 0 - time_to_live: - description: |- - The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. - type: integer - default: 64 - md5_key: - description: |- - The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. - type: string - Bgp.Capability: - x-status: under-review - description: |- - Status: under-review - Configuration for BGP capability settings. - type: object - properties: - ipv4_unicast: - description: |- - Support for the IPv4 Unicast address family. - type: boolean - default: true - ipv4_multicast: - description: "Support for the IPv4 Multicast address family. " - type: boolean - default: false - ipv6_unicast: - description: |- - Support for the IPv4 Unicast address family. - type: boolean - default: true - ipv6_multicast: - description: |- - Support for the IPv6 Multicast address family. - type: boolean - default: false - vpls: - description: "Support for VPLS as below. \nRFC4761 - Virtual Private LAN\ - \ Service (VPLS) using BGP for Auto-Discovery\nand Signaling. \nRFC6624\ - \ - Layer 2 Virtual Private Networks using BGP for Auto-Discovery \nand\ - \ Signaling." - type: boolean - default: false - route_refresh: - description: |- - Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. - type: boolean - default: true - route_constraint: - description: |- - Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. - type: boolean - default: false - link_state_non_vpn: - description: |- - Support for BGP Link State for ISIS and OSPF. - type: boolean - default: false - link_state_vpn: - description: |- - Capability advertisement of BGP Link State for VPNs. - type: boolean - default: false - evpn: - description: |- - Support for the EVPN address family. - type: boolean - default: false - extended_next_hop_encoding: - description: |- - Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. - type: boolean - default: false - ipv4_multicast_vpn: - description: |- - Support for the IPv4 Multicast VPN address family. - type: boolean - default: false - ipv4_mpls_vpn: - description: |- - Support for the IPv4 MPLS L3VPN address family. - type: boolean - default: false - ipv4_mdt: - description: |- - Supports for IPv4 MDT address family messages. - type: boolean - default: false - ipv4_multicast_mpls_vpn: - description: |- - Support for the IPv4 Multicast VPN address family. - type: boolean - default: false - ipv4_unicast_flow_spec: - description: |- - Support for propagation of IPv4 unicast flow specification rules. - type: boolean - default: false - ipv4_sr_te_policy: - description: |- - Support for IPv4 SRTE policy. - type: boolean - default: false - ipv4_unicast_add_path: - description: |- - Support for IPv4 Unicast Add Path Capability. - type: boolean - default: false - ipv6_multicast_vpn: - description: |- - Support for the IPv6 Multicast VPN address family. - type: boolean - default: false - ipv6_mpls_vpn: - description: |- - Support for the IPv6 MPLS L3VPN address family. - type: boolean - default: false - ipv6_mdt: - description: |- - Support for IPv6 MDT address family messages. - type: boolean - default: false - ipv6_multicast_mpls_vpn: - description: |- - Support for the IPv6 Multicast VPN address family. - type: boolean - default: false - ipv6_unicast_flow_spec: - description: |- - Support for propagation of IPv6 unicast flow specification rules. - type: boolean - default: false - ipv6_sr_te_policy: - description: |- - Support for IPv6 SRTE policy. - type: boolean - default: false - ipv6_unicast_add_path: - description: |- - Support for IPv6 Unicast Add Path Capability. - type: boolean - default: false - Bgp.LearnedInformationFilter: - x-status: under-review - description: |- - Status: under-review - Configuration for controlling storage of BGP learned information recieved from the peer. - type: object - properties: - unicast_ipv4_prefix: - description: |- - If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. - type: boolean - default: false - unicast_ipv6_prefix: - description: |- - If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. - type: boolean - default: false - Bgp.V4RouteRange: - description: |- - Emulated BGPv4 route range. - Configuration for BGP route ranges. - type: object - properties: - addresses: - description: |- - A list of group of IPv4 route addresses. - type: array - items: - $ref: '#/components/schemas/V4RouteAddress' - next_hop_mode: - description: "Specify the NextHop in MP REACH NLRI. The mode for setting\ - \ the IP address of the NextHop in the MP REACH NLRI can be one of the\ - \ following:\n Local IP: Automatically fills the Nexthop with the Local\ - \ IP of the BGP peer.\n If BGP peer is of type IPv6, Nexthop Encoding\ - \ capability should be enabled.\n Manual: Override the Nexthop with any\ - \ arbitrary IPv4/IPv6 address. " - type: string - enum: - - local_ip - - manual - default: local_ip - next_hop_address_type: - description: "If the Nexthop Mode is Manual, it sets the type of the NextHop\ - \ IP address. " - type: string - enum: - - ipv4 - - ipv6 - default: ipv4 - next_hop_ipv4_address: - description: |- - The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - type: string - format: ipv4 - default: 0.0.0.0 - next_hop_ipv6_address: - description: "The IPv6 address of the next hop if the Nexthop Mode is manual\ - \ and the Nexthop type is IPv6. " - type: string - format: ipv6 - default: ::0 - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - as_path: - $ref: '#/components/schemas/Bgp.AsPath' - add_path: - $ref: '#/components/schemas/Bgp.AddPath' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Bgp.RouteAdvanced: - description: |- - Configuration for advanced BGP route range settings. - type: object - properties: - multi_exit_discriminator: - description: |- - The multi exit discriminator (MED) value. A null value means the MED feature is not enabled. - type: integer - origin: - description: |- - The origin value. A null value means the origin feature is not enabled. - type: string - enum: - - igp - - egp - default: igp - Bgp.Community: - description: |- - BGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. - type: object - properties: - type: - description: |- - The type of community AS number. - type: string - enum: - - manual_as_number - - no_export - - no_advertised - - no_export_subconfed - - llgr_stale - - no_llgr - as_number: - description: |- - First two octets of 32 bit community AS number. - type: integer - minimum: 0 - maximum: 65535 - default: 0 - as_custom: - description: "Last two octets of the community value. " - type: integer - minimum: 0 - maximum: 65535 - default: 0 - Bgp.AsPath: - description: |- - This attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - type: object - properties: - as_set_mode: - description: |- - Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, "Do Not Include Local AS" must be chosen. For eBGP sessions, any choice other than "Do Not Include Local AS" can be chosen. - type: string - enum: - - do_not_include_local_as - - include_as_seq - - include_as_set - - include_as_confed_seq - - include_as_confed_set - - prepend_to_first_segment - default: do_not_include_local_as - segments: - description: "The additional AS path segments to be added in the NLRI. \ - \ By default, an empty AS path is always included and the local AS is\ - \ added to it as per the value of 'as_set_mode' attribute. " - type: array - items: - $ref: '#/components/schemas/Bgp.AsPathSegment' - Bgp.AsPathSegment: - description: |- - Configuration for a single BGP AS path segment - type: object - properties: - type: - description: |- - AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. - The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. - type: string - enum: - - as_seq - - as_set - - as_confed_seq - - as_confed_set - default: as_seq - as_numbers: - description: |- - The AS numbers in this AS path segment. - type: array - items: - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 1 - Bgp.AddPath: - description: |- - The BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - type: object - properties: - path_id: - description: |- - The id of the additional path. - type: integer - default: 1 - Bgp.V6RouteRange: - description: |- - Emulated BGPv6 route range. - Configuration for BGP route ranges. - type: object - properties: - addresses: - description: |- - A list of group of IPv6 route addresses. - type: array - items: - $ref: '#/components/schemas/V6RouteAddress' - next_hop_mode: - description: "Specify the NextHop in MP REACH NLRI. The mode for setting\ - \ the IP address of the NextHop in the MP REACH NLRI can be one of the\ - \ following:\n Local IP: Automatically fills the Nexthop with the Local\ - \ IP of the BGP peer.\n If BGP peer is of type IPv6, Nexthop Encoding\ - \ capability should be enabled.\n Manual: Override the Nexthop with any\ - \ arbitrary IPv4/IPv6 address. " - type: string - enum: - - local_ip - - manual - default: local_ip - next_hop_address_type: - description: "If the Nexthop Mode is Manual, it sets the type of the NextHop\ - \ IP address. " - type: string - enum: - - ipv4 - - ipv6 - default: ipv6 - next_hop_ipv4_address: - description: |- - The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - type: string - format: ipv4 - default: 0.0.0.0 - next_hop_ipv6_address: - description: "The IPv6 address of the next hop if the Nexthop Mode is manual\ - \ and the Nexthop type is IPv6. " - type: string - format: ipv6 - default: ::0 - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - as_path: - $ref: '#/components/schemas/Bgp.AsPath' - add_path: - $ref: '#/components/schemas/Bgp.AddPath' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - BgpSrte.V4Policy: - description: "Configuration for BGP Segment Routing Traffic Engineering(SRTE)\ - \ \npolicy.\n" - type: object - required: - - ipv4_endpoint - - name - properties: - distinguisher: - description: |- - 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 1 - color: - description: |- - Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 100 - ipv4_endpoint: - description: |- - Specifies a single node or a set of nodes (e.g. an anycast address). It is selected on the basis of the SR Policy type (AFI). - type: string - format: ipv4 - next_hop_mode: - description: |- - Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. - type: string - enum: - - local_ip - - manual - default: local_ip - next_hop_address_type: - description: "Type of next hop IP address to be used when 'next_hop_mode'\ - \ is set to 'manual'. " - type: string - enum: - - ipv4 - - ipv6 - default: ipv4 - next_hop_ipv4_address: - description: |- - The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. - type: string - format: ipv4 - next_hop_ipv6_address: - description: "The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type'\ - \ is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. " - type: string - format: ipv6 - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - add_path: - $ref: '#/components/schemas/Bgp.AddPath' - as_path: - $ref: '#/components/schemas/Bgp.AsPath' - communities: - description: |- - Optional Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - ext_communities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - tunnel_tlvs: - description: |- - List Tunnel Encapsulation Attributes. - type: array - items: - $ref: '#/components/schemas/BgpSrte.V4TunnelTlv' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - active: - description: |- - If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. - type: boolean - default: true - Bgp.ExtCommunity: - description: |- - The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is also divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. - type: object - properties: - type: - description: "Extended Community Type field of 1 Byte.\n - administrator_as_2octet:\ - \ Two-Octet AS Specific Extended Community (RFC 4360).\n - administrator_ipv4_address:\ - \ IPv4 Address Specific Extended Community (RFC 4360).\n - administrator_as_4octet:\ - \ 4-Octet AS Specific Extended Community (RFC 5668).\n - opaque: Opaque\ - \ Extended Community (RFC 7432).\n - evpn: EVPN Extended Community (RFC\ - \ 7153). \n - administrator_as_2octet_link_bandwidth : Link Bandwidth\ - \ Extended Community (RFC 7153)." - type: string - enum: - - administrator_as_2octet - - administrator_ipv4_address - - administrator_as_4octet - - opaque - - evpn - - administrator_as_2octet_link_bandwidth - subtype: - description: |- - Extended Community Sub Type field of 1 Byte. - - route_target: Route Target. - - origin: Origin. - - extended_bandwidth: Specifies the link bandwidth. - - color: Specifies the color value. - - encapsulation: Specifies the Encapsulation Extended Community. - - mac_address: Specifies the Extended community MAC address. - type: string - enum: - - route_target - - origin - - extended_bandwidth - - color - - encapsulation - - mac_address - value: - description: |- - Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. - type: string - format: hex - BgpSrte.V4TunnelTlv: - description: |- - Configuration for BGP SRTE Tunnel TLV. - type: object - properties: - remote_endpoint_sub_tlv: - $ref: '#/components/schemas/BgpSrte.RemoteEndpointSubTlv' - color_sub_tlv: - $ref: '#/components/schemas/BgpSrte.ColorSubTlv' - binding_sub_tlv: - $ref: '#/components/schemas/BgpSrte.BindingSubTlv' - preference_sub_tlv: - $ref: '#/components/schemas/BgpSrte.PreferenceSubTlv' - policy_priority_sub_tlv: - $ref: '#/components/schemas/BgpSrte.PolicyPrioritySubTlv' - policy_name_sub_tlv: - $ref: '#/components/schemas/BgpSrte.PolicyNameSubTlv' - explicit_null_label_policy_sub_tlv: - $ref: '#/components/schemas/BgpSrte.ExplicitNullLabelPolicySubTlv' - segment_lists: - type: array - items: - $ref: '#/components/schemas/BgpSrte.SegmentList' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - active: - description: |- - If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. - type: boolean - default: true - required: - - name - BgpSrte.RemoteEndpointSubTlv: - description: |- - Configuration for the BGP remote endpoint sub TLV. - type: object - properties: - as_number: - description: |- - Autonomous system (AS) number - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 0 - address_family: - description: |- - Determines the address type - type: string - enum: - - ipv4 - - ipv6 - default: ipv4 - ipv4_address: - description: |- - The IPv4 address of the Remote Endpoint. - type: string - format: ipv4 - default: 0.0.0.0 - ipv6_address: - description: |- - The IPv6 address of the Remote Endpoint. - type: string - format: ipv6 - default: ::0 - BgpSrte.ColorSubTlv: - description: "Configuration for the Policy Color attribute sub-TLV. The Color\ - \ sub-TLV MAY be used as a way to \"color\" the corresponding Tunnel TLV.\ - \ The Value field of the sub-TLV is eight octets long and consists of a Color\ - \ Extended Community. First two octets of its Value field are 0x030b as type\ - \ and subtype of extended community. Remaining six octets are are exposed\ - \ to configure. " - type: object - properties: - color: - description: |- - Six octet values. Example: 000000000064 for color value 100. - type: string - format: hex - BgpSrte.BindingSubTlv: - description: |- - Configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. - type: object - properties: - binding_sid_type: - description: |- - Type of the binding SID. Supported types are "No Binding SID" or "Four Octets Sid" or "IPv6 SID". - type: string - enum: - - no_binding - - four_octet_sid - - ipv6_sid - default: no_binding - four_octet_sid: - description: "Binding SID is encoded in 4 octets. " - type: integer - ipv6_sid: - description: |- - IPv6 SID value. - type: string - format: ipv6 - s_flag: - description: |- - S-Flag encodes the "Specified-BSID-only" behavior. - type: boolean - default: false - i_flag: - description: |- - I-Flag encodes the "Drop Upon Invalid" behavior. - type: boolean - default: false - BgpSrte.PreferenceSubTlv: - description: |- - Configuration for BGP preference sub TLV of the SR Policy candidate path. - type: object - properties: - preference: - description: |- - The preference value of the SR Policy candidate path. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 0 - BgpSrte.PolicyPrioritySubTlv: - description: |- - Configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. - type: object - properties: - policy_priority: - description: |- - One-octet Priority value. - type: integer - minimum: 0 - maximum: 255 - BgpSrte.PolicyNameSubTlv: - description: |- - Configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. - type: object - properties: - policy_name: - description: |- - Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. - type: string - minLength: 1 - maxLength: 32 - BgpSrte.ExplicitNullLabelPolicySubTlv: - description: |- - Configuration for BGP explicit null label policy sub TLV settings. - type: object - properties: - explicit_null_label_policy: - description: "The value of the explicit null label policy " - type: string - enum: - - reserved_enlp - - push_ipv4_enlp - - push_ipv6_enlp - - push_ipv4_ipv6_enlp - - do_not_push_enlp - default: do_not_push_enlp - BgpSrte.SegmentList: - x-status: under-review - description: |- - Status: under-review - Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. - type: object - properties: - weight: - description: |- - The Weight associated with a given path and the sub-TLV is optional. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 0 - segments: - type: array - items: - $ref: '#/components/schemas/BgpSrte.Segment' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - active: - description: |- - If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. - type: boolean - default: true - required: - - name - BgpSrte.Segment: - x-status: under-review - description: |- - Status: under-review - A Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. - type: object - required: - - segment_type - - name - properties: - segment_type: - description: |- - Specify one of the segment type. - https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13 - Type A: SID only, in the form of MPLS Label. - Type B: SID only, in the form of IPv6 Address. - Type C: IPv4 Node Address with optional SID. - Type D: IPv6 Node Address with optional SID for SR MPLS. - Type E: IPv4 Address and index with optional SID. - Type F: IPv4 Local and Remote addresses with optional SID. - Type G: IPv6 Address and index for local and remote pair with optional - SID for SR MPLS. - Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. - Type I: IPv6 Node Address with optional SID for SRv6. - Type J: IPv6 Address and index for local and remote pair with optional - SID for SRv6. - Type K: IPv6 Local and Remote addresses for SRv6. - type: string - enum: - - type_a - - type_b - - type_c - - type_d - - type_e - - type_f - - type_g - - type_h - - type_i - - type_j - - type_k - type_a: - $ref: '#/components/schemas/BgpSrte.SegmentATypeSubTlv' - type_b: - $ref: '#/components/schemas/BgpSrte.SegmentBTypeSubTlv' - type_c: - $ref: '#/components/schemas/BgpSrte.SegmentCTypeSubTlv' - type_d: - $ref: '#/components/schemas/BgpSrte.SegmentDTypeSubTlv' - type_e: - $ref: '#/components/schemas/BgpSrte.SegmentETypeSubTlv' - type_f: - $ref: '#/components/schemas/BgpSrte.SegmentFTypeSubTlv' - type_g: - $ref: '#/components/schemas/BgpSrte.SegmentGTypeSubTlv' - type_h: - $ref: '#/components/schemas/BgpSrte.SegmentHTypeSubTlv' - type_i: - $ref: '#/components/schemas/BgpSrte.SegmentITypeSubTlv' - type_j: - $ref: '#/components/schemas/BgpSrte.SegmentJTypeSubTlv' - type_k: - $ref: '#/components/schemas/BgpSrte.SegmentKTypeSubTlv' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - active: - description: |- - If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. - type: boolean - default: true - BgpSrte.SrMplsSid: - description: |- - Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - type: object - properties: - label: - description: |- - Label value in [0, 2^20 -1]. - type: integer - minimum: 0 - maximum: 1048575 - tc: - description: |- - Traffic class in bits. - type: integer - minimum: 0 - maximum: 7 - s_bit: - description: |- - Bottom-of-Stack bit. - type: boolean - ttl: - description: "Time To Live. " - type: integer - minimum: 0 - maximum: 255 - BgpSrte.SRv6SIDEndpointBehaviorAndStructure: - description: |- - Configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - type: object - properties: - lb_length: - description: |- - SRv6 SID Locator Block length in bits. - type: integer - minimum: 0 - maximum: 128 - default: 0 - ln_length: - description: |- - SRv6 SID Locator Node length in bits. - type: integer - minimum: 0 - maximum: 128 - default: 0 - func_length: - description: |- - SRv6 SID Function length in bits. - type: integer - minimum: 0 - maximum: 128 - default: 0 - arg_length: - description: |- - SRv6 SID Arguments length in bits. - type: integer - minimum: 0 - maximum: 128 - default: 0 - BgpSrte.SegmentATypeSubTlv: - description: |- - Type A: SID only, in the form of MPLS Label. - Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - type: object - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - label: - description: |- - Label value in [0, 2^20 -1]. - type: integer - minimum: 0 - maximum: 1048575 - tc: - description: |- - Traffic class in bits. - type: integer - minimum: 0 - maximum: 7 - s_bit: - description: |- - Bottom-of-Stack bit. - type: boolean - ttl: - description: "Time To Live. " - type: integer - minimum: 0 - maximum: 255 - BgpSrte.SegmentBTypeSubTlv: - description: |- - Type B: SID only, in the form of IPv6 address. - type: object - required: - - srv6_sid - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - srv6_sid: - description: |- - SRv6 SID. - type: string - format: ipv6 - srv6_sid_endpoint_behavior: - description: |- - Optional SRv6 Endpoint Behavior and SID Structure. - $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' - BgpSrte.SegmentCTypeSubTlv: - x-status: under-review - description: |- - Status: under-review - Type C: IPv4 Node Address with optional SID. - type: object - required: - - ipv4_node_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - sr_algorithm: - description: |- - SR Algorithm identifier when A-Flag in on. - type: integer - minimum: 0 - maximum: 255 - default: 0 - ipv4_node_address: - description: |- - IPv4 address representing a node. - type: string - format: ipv4 - sr_mpls_sid: - description: |- - Optional SR-MPLS SID. - $ref: '#/components/schemas/BgpSrte.SrMplsSid' - BgpSrte.SegmentDTypeSubTlv: - description: |- - Type D: IPv6 Node Address with optional SID for SR MPLS. - type: object - required: - - ipv6_node_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - sr_algorithm: - description: |- - specifying SR Algorithm when when A-Flag as defined in above flags. - type: integer - minimum: 0 - maximum: 255 - default: 0 - ipv6_node_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - sr_mpls_sid: - description: |- - Optional SR-MPLS SID. - $ref: '#/components/schemas/BgpSrte.SrMplsSid' - BgpSrte.SegmentETypeSubTlv: - description: |- - Type E: IPv4 Address and Local Interface ID with optional SID - type: object - required: - - ipv4_node_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - local_interface_id: - description: |- - Local Interface ID: The Interface Index as defined in [RFC8664]. - type: integer - minimum: 0 - maximum: 2147483647 - default: 0 - ipv4_node_address: - description: |- - IPv4 address representing a node. - type: string - format: ipv4 - sr_mpls_sid: - description: |- - Optional SR-MPLS SID. - $ref: '#/components/schemas/BgpSrte.SrMplsSid' - BgpSrte.SegmentFTypeSubTlv: - description: |- - Type F: IPv4 Local and Remote addresses with optional SID. - type: object - required: - - local_ipv4_address - - remote_ipv4_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - local_ipv4_address: - description: |- - Local IPv4 Address. - type: string - format: ipv4 - remote_ipv4_address: - description: |- - Remote IPv4 Address. - type: string - format: ipv4 - sr_mpls_sid: - description: |- - Optional SR-MPLS SID. - $ref: '#/components/schemas/BgpSrte.SrMplsSid' - BgpSrte.SegmentGTypeSubTlv: - description: |- - Type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. - type: object - required: - - local_ipv6_node_address - - remote_ipv6_node_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - local_interface_id: - description: |- - Local Interface ID: The Interface Index as defined in [RFC8664]. - type: integer - minimum: 0 - maximum: 2147483647 - default: 0 - local_ipv6_node_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - remote_interface_id: - description: |- - Local Interface ID: The Interface Index as defined in [RFC8664]. - type: integer - minimum: 0 - maximum: 2147483647 - default: 0 - remote_ipv6_node_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - sr_mpls_sid: - description: |- - Optional SR-MPLS SID. - $ref: '#/components/schemas/BgpSrte.SrMplsSid' - BgpSrte.SegmentHTypeSubTlv: - description: |- - Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. - type: object - required: - - local_ipv6_address - - remote_ipv6_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - local_ipv6_address: - description: |- - Local IPv6 Address. - type: string - format: ipv6 - remote_ipv6_address: - description: |- - Remote IPv6 Address. - type: string - format: ipv6 - sr_mpls_sid: - description: |- - Optional SR-MPLS SID. - $ref: '#/components/schemas/BgpSrte.SrMplsSid' - BgpSrte.SegmentITypeSubTlv: - description: |- - Type I: IPv6 Node Address with optional SRv6 SID. - type: object - required: - - ipv6_node_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - ipv6_node_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - srv6_sid: - description: |- - Optional SRv6 SID. - type: string - format: ipv6 - srv6_sid_endpoint_behavior: - description: |- - Optional SRv6 Endpoint Behavior and SID Structure. - $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' - BgpSrte.SegmentJTypeSubTlv: - description: |- - Type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. - type: object - required: - - local_ipv6_node_address - - remote_ipv6_node_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - sr_algorithm: - description: |- - SR Algorithm identifier when A-Flag in on. - type: integer - minimum: 0 - maximum: 255 - default: 0 - local_interface_id: - description: |- - Local Interface ID: The Interface Index as defined in [RFC8664]. - type: integer - minimum: 0 - maximum: 2147483647 - default: 0 - local_ipv6_node_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - remote_interface_id: - description: |- - Local Interface ID: The Interface Index as defined in [RFC8664]. - type: integer - minimum: 0 - maximum: 2147483647 - default: 0 - remote_ipv6_node_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - srv6_sid: - description: |- - Optional SRv6 SID. - type: string - format: ipv6 - srv6_sid_endpoint_behavior: - description: |- - Optional SRv6 Endpoint Behavior and SID Structure. - $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' - BgpSrte.SegmentKTypeSubTlv: - description: |- - Type K: IPv6 Local and Remote addresses for SRv6 with optional SID. - type: object - required: - - local_ipv6_address - - remote_ipv6_address - properties: - flags: - description: |- - One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - type: string - format: hex - sr_algorithm: - description: |- - SR Algorithm identifier when A-Flag in on. - type: integer - minimum: 0 - maximum: 255 - default: 0 - local_ipv6_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - remote_ipv6_address: - description: |- - IPv6 address representing a node. - type: string - format: ipv6 - srv6_sid: - description: |- - Optional SRv6 SID. - type: string - format: ipv6 - srv6_sid_endpoint_behavior: - description: |- - Optional SRv6 Endpoint Behavior and SID Structure. - $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' - BgpSrte.V6Policy: - description: | - Configuration for BGP Segment Routing Traffic Engineering policy. - type: object - required: - - ipv6_endpoint - - name - properties: - distinguisher: - description: |- - Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 1 - color: - description: "Identifies the policy. It is used to match the color of the\ - \ destination prefixes to steer traffic into the SR Policy. " - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - default: 100 - ipv6_endpoint: - description: |- - Specifies a single node or a set of nodes (e.g., an anycast address). It is selected on the basis of the SR Policy type (AFI). - type: string - format: ipv6 - next_hop_mode: - description: |- - Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. - type: string - enum: - - local_ip - - manual - default: local_ip - next_hop_address_type: - description: "Type of next hop IP address to be used when 'next_hop_mode'\ - \ is set to 'manual'. " - type: string - enum: - - ipv4 - - ipv6 - default: ipv6 - next_hop_ipv4_address: - description: |- - The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. - type: string - format: ipv4 - default: 0.0.0.0 - next_hop_ipv6_address: - description: "The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type'\ - \ is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. " - type: string - format: ipv6 - default: ::0 - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - add_path: - $ref: '#/components/schemas/Bgp.AddPath' - as_path: - $ref: '#/components/schemas/Bgp.AsPath' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - extcommunities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - tunnel_tlvs: - description: |- - List of optional tunnel TLV settings. - type: array - items: - $ref: '#/components/schemas/BgpSrte.V6TunnelTlv' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - active: - description: |- - If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. - type: boolean - default: true - BgpSrte.V6TunnelTlv: - description: |- - Configuration for BGP SRTE Tunnel TLV. - type: object - properties: - remote_endpoint_sub_tlv: - $ref: '#/components/schemas/BgpSrte.RemoteEndpointSubTlv' - color_sub_tlv: - $ref: '#/components/schemas/BgpSrte.ColorSubTlv' - binding_sub_tlv: - $ref: '#/components/schemas/BgpSrte.BindingSubTlv' - preference_sub_tlv: - $ref: '#/components/schemas/BgpSrte.PreferenceSubTlv' - policy_priority_sub_tlv: - $ref: '#/components/schemas/BgpSrte.PolicyPrioritySubTlv' - policy_name_sub_tlv: - $ref: '#/components/schemas/BgpSrte.PolicyNameSubTlv' - explicit_null_label_policy_sub_tlv: - $ref: '#/components/schemas/BgpSrte.ExplicitNullLabelPolicySubTlv' - segment_lists: - type: array - items: - $ref: '#/components/schemas/BgpSrte.SegmentList' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - active: - description: |- - If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. - type: boolean - default: true - required: - - name - BgpV4.EthernetSegment: - description: "Configuration for BGP Ethernet Segment ranges. Advertises following\ - \ routes - \n\nType 4 - Ethernet Segment Route" - type: object - properties: - df_election: - description: |- - Designated Forwarder (DF) election configuration. - $ref: '#/components/schemas/Bgp.EthernetSegment.DfElection' - evis: - description: |- - This contains the list of EVIs. - type: array - items: - $ref: '#/components/schemas/BgpV4.EvpnEvis' - esi: - description: |- - 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . - type: string - format: hex - default: '00000000000000000000' - active_mode: - description: |- - Single Active or All Active mode Redundancy mode selection for Multi-home. - type: string - enum: - - single_active - - all_active - default: all_active - esi_label: - description: "The label value to be advertised as ESI Label in ESI Label\ - \ Extended Community. This is included in Ethernet Auto-discovery per\ - \ ES Routes advertised by a router. " - type: integer - minimum: 0 - maximum: 16777215 - default: 0 - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - ext_communities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - as_path: - description: |- - Optional AS PATH settings. - $ref: '#/components/schemas/Bgp.AsPath' - Bgp.EthernetSegment.DfElection: - description: |- - Configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. - type: object - properties: - election_timer: - description: |- - The DF election timer in seconds. - type: integer - minimum: 1 - maximum: 300 - default: 3 - BgpV4.EvpnEvis: - description: "This contains a list of different flavors of EVPN. \nFor example\ - \ EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment.\ - \ \nNeed to instantiate correct type of EVPN instance as per requirement." - type: object - properties: - choice: - type: string - enum: - - evi_vxlan - default: evi_vxlan - evi_vxlan: - description: "EVPN VXLAN instance to be configured per Ethernet Segment.\ - \ " - $ref: '#/components/schemas/BgpV4.EviVxlan' - BgpV4.EviVxlan: - description: "Configuration for BGP EVPN EVI. Advertises following routes -\ - \ \n\nType 3 - Inclusive Multicast Ethernet Tag Route\n\nType 1 - Ethernet\ - \ Auto-discovery Route (Per EVI)\n\nType 1 - Ethernet Auto-discovery Route\ - \ (Per ES)" - type: object - properties: - broadcast_domains: - description: |- - This contains the list of Broadcast Domains to be configured per EVI. - type: array - items: - $ref: '#/components/schemas/BgpV4.EviVxlan.BroadcastDomain' - replication_type: - description: |- - This model only supports Ingress Replication - type: string - enum: - - ingress_replication - default: ingress_replication - pmsi_label: - description: |- - Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. - type: integer - minimum: 0 - maximum: 16777215 - default: 16 - ad_label: - description: |- - The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per - type: integer - minimum: 0 - maximum: 16777215 - default: 0 - route_distinguisher: - description: |- - Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". - $ref: '#/components/schemas/Bgp.RouteDistinguisher' - route_target_export: - description: "List of Layer 2 Virtual Network Identifier (L2VNI) export\ - \ targets associated with this EVI. " - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - route_target_import: - description: "List of L2VNI import targets associated with this EVI. " - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - l3_route_target_export: - description: |- - List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - l3_route_target_import: - description: |- - List of L3VNI Import Route Targets. - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - ext_communities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - as_path: - description: |- - Optional AS PATH settings. - $ref: '#/components/schemas/Bgp.AsPath' - Bgp.RouteDistinguisher: - description: |- - BGP Route Distinguisher. - type: object - properties: - rd_type: - description: "Route Distinguisher Type field of 2 Byte.\n - as_2octet: Two-Octet\ - \ AS Specific Extended Community (RFC 4360).\n - ipv4_address: IPv4 Address\ - \ Specific Extended Community (RFC 4360).\n - as_4octet: 4-Octet AS Specific\ - \ Extended Community (RFC 5668). " - type: string - enum: - - as_2octet - - ipv4_address - - as_4octet - default: as_2octet - auto_config_rd_ip_addr: - description: |- - Allow to automatically configure RD IP address from local ip. - type: boolean - default: false - rd_value: - description: |- - Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" - type: string - Bgp.RouteTarget: - description: |- - BGP Route Target. - type: object - properties: - rt_type: - description: "Extended Community Type field of 2 Byte.\n - as_2octet: Two-Octet\ - \ AS Specific Extended Community (RFC 4360).\n - ipv4_address: IPv4 Address\ - \ Specific Extended Community (RFC 4360).\n - as_4octet: 4-Octet AS Specific\ - \ Extended Community (RFC 5668). " - type: string - enum: - - as_2octet - - ipv4_address - - as_4octet - rt_value: - description: |- - Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" - type: string - BgpV4.EviVxlan.BroadcastDomain: - description: |- - Configuration for Broadcast Domains per EVI. - type: object - properties: - cmac_ip_range: - description: "This contains the list of Customer MAC/IP Ranges to be configured\ - \ per Broadcast Domain. \n\nAdvertises following route - \nType 2 - MAC/IP\ - \ Advertisement Route." - type: array - items: - $ref: '#/components/schemas/Bgp.CMacIpRange' - ethernet_tag_id: - description: |- - The Ethernet Tag ID of the Broadcast Domain. - type: integer - minimum: 0 - maximum: 4294967295 - default: 0 - vlan_aware_service: - description: |- - VLAN-Aware service to be enabled or disabled. - type: boolean - default: false - Bgp.CMacIpRange: - description: "Configuration for MAC/IP Ranges per Broadcast Domain. \n\nAdvertises\ - \ following route -\n\nType 2 - MAC/IP Advertisement Route." - type: object - properties: - mac_addresses: - description: "Host MAC address range per Broadcast Domain. " - $ref: '#/components/schemas/MACRouteAddress' - l2vni: - description: |- - Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) - type: integer - minimum: 0 - maximum: 16777215 - default: 0 - ipv4_addresses: - description: "Host IPv4 address range per Broadcast Domain. " - $ref: '#/components/schemas/V4RouteAddress' - ipv6_addresses: - description: "Host IPv6 address range per Broadcast Domain. \ - \ " - $ref: '#/components/schemas/V6RouteAddress' - l3vni: - description: |- - Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). - type: integer - minimum: 0 - maximum: 16777215 - default: 0 - include_default_gateway: - description: |- - Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). - type: boolean - default: false - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - ext_communities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - as_path: - description: |- - Optional AS PATH settings. - $ref: '#/components/schemas/Bgp.AsPath' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Bgp.V6Peer: - x-status: under-review - description: |- - Status: under-review - Configuration for BGPv6 peer settings and routes. - Configuration for basic emulated BGP peer settings. - type: object - required: - - peer_address - - as_type - - as_number - - name - properties: - peer_address: - description: |- - IPv6 address of the BGP peer for the session - type: string - format: ipv6 - segment_routing: - $ref: '#/components/schemas/Bgp.V6SegmentRouting' - evpn_ethernet_segments: - description: "This contains the list of Ethernet Virtual Private Network\ - \ (EVPN) Ethernet Segments (ES) Per BGP Peer for IPv6 Address Family Identifier\ - \ (AFI).\n\nEach Ethernet Segment contains a list of EVPN Instances (EVIs)\ - \ . \nEach EVI contains a list of Broadcast Domains. \nEach Broadcast\ - \ Domain contains a list of MAC/IP Ranges. \n\n is responsible for advertising Ethernet Auto-discovery\ - \ Route Per EVI (Type 1).\n\n is responsible for\ - \ advertising Ethernet Auto-discovery Route Per Ethernet Segment (Type\ - \ 1).\n\n is responsible\ - \ for advertising MAC/IP Advertisement Route (Type 2).\n\n is responsible for advertising Inclusive Multicast\ - \ Ethernet Tag Route (Type 3).\n\nEthernet Segment is responsible for\ - \ advertising Ethernet Segment Route (Type 4)." - type: array - items: - $ref: '#/components/schemas/BgpV6.EthernetSegment' - as_type: - description: |- - The type of BGP autonomous system. External BGP is used for BGP links between two or more autonomous systems (ebgp). Internal BGP is used within a single autonomous system (ibgp). BGP property defaults are aligned with this object defined as an internal BGP peer. If the as_type is specified as 'ebgp' then other properties will need to be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' attribute in 'as_path' field in any Route Range should be changed from default value 'do_not_include_local_as' to any other value. - type: string - enum: - - ibgp - - ebgp - as_number: - description: |- - Autonomous System Number (AS number or ASN) - type: integer - as_number_width: - description: |- - The width in bytes of the as_number values. Any as_number values that exceeds the width MUST result in an error. - type: string - enum: - - two - - four - default: four - advanced: - $ref: '#/components/schemas/Bgp.Advanced' - capability: - $ref: '#/components/schemas/Bgp.Capability' - learned_information_filter: - $ref: '#/components/schemas/Bgp.LearnedInformationFilter' - v4_routes: - description: |- - Emulated BGPv4 route ranges. - type: array - items: - $ref: '#/components/schemas/Bgp.V4RouteRange' - v6_routes: - description: |- - Emulated BGPv6 route ranges. - type: array - items: - $ref: '#/components/schemas/Bgp.V6RouteRange' - v4_srte_policies: - description: |- - Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier (AFI). - type: array - items: - $ref: '#/components/schemas/BgpSrte.V4Policy' - v6_srte_policies: - description: |- - Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier (AFI). - type: array - items: - $ref: '#/components/schemas/BgpSrte.V6Policy' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Bgp.V6Interface: - description: |- - Configuration for emulated BGPv6 peers and routes on a single IPv6 interface. - type: object - required: - - ipv6_name - properties: - ipv6_name: - description: | - The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers. - - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Device.Ipv6Loopback/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Device.Ipv6Loopback/properties/name - peers: - description: |- - This contains the list of BGPv6 peers configured on this interface. - type: array - items: - $ref: '#/components/schemas/Bgp.V6Peer' - Bgp.V6SegmentRouting: - x-status: under-review - description: |- - Status: under-review - Configuration for BGPv6 segment routing settings. - type: object - properties: - ingress_supports_vpn: - description: |- - TBD - type: boolean - default: false - reduced_encapsulation: - description: |- - TBD - type: boolean - default: false - copy_time_to_live: - description: |- - TBD - type: boolean - default: false - time_to_live: - description: |- - TBD - type: integer - default: 0 - max_sids_per_srh: - description: |- - TBD - type: integer - default: 0 - auto_generate_segment_left_value: - description: |- - TBD - type: boolean - default: false - segment_left_value: - description: |- - TBD - type: integer - default: 0 - advertise_sr_te_policy: - description: |- - TBD - type: boolean - default: false - BgpV6.EthernetSegment: - description: |- - Configuration for BGP Ethernet Segment ranges. Advertises following routes - - - Type 4 - Ethernet Segment Route - type: object - properties: - df_election: - description: |- - Designated Forwarder (DF) election configuration. - $ref: '#/components/schemas/Bgp.EthernetSegment.DfElection' - evis: - description: |- - This contains the list of EVIs. - type: array - items: - $ref: '#/components/schemas/BgpV6.EvpnEvis' - esi: - description: |- - 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . - type: string - format: hex - default: '00000000000000000000' - active_mode: - description: |- - Single Active or All Active mode Redundancy mode selection for Multi-home. - type: string - enum: - - single_active - - all_active - default: all_active - esi_label: - description: "The label value to be advertised as ESI Label in ESI Label\ - \ Extended Community. This is included in Ethernet Auto-discovery per\ - \ ES Routes advertised by a router. " - type: integer - minimum: 0 - maximum: 16777215 - default: 0 - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - ext_communities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - as_path: - description: |- - Optional AS PATH settings. - $ref: '#/components/schemas/Bgp.AsPath' - BgpV6.EvpnEvis: - description: "This contains a list of different flavors of EVPN. \nFor example\ - \ EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment.\ - \ \nNeed to instantiate correct type of EVPN instance as per requirement." - type: object - properties: - choice: - type: string - enum: - - evi_vxlan - default: evi_vxlan - evi_vxlan: - description: "EVPN VXLAN instance to be configured per Ethernet Segment.\ - \ " - $ref: '#/components/schemas/BgpV6.EviVxlan' - BgpV6.EviVxlan: - description: |- - Configuration for BGP EVPN EVI. Advertises following routes - - - Type 3 - Inclusive Multicast Ethernet Tag Route - - Type 1 - Ethernet Auto-discovery Route (Per EVI) - - Type 1 - Ethernet Auto-discovery Route (Per ES) - type: object - properties: - broadcast_domains: - description: |- - This contains the list of Broadcast Domains to be configured per EVI. - type: array - items: - $ref: '#/components/schemas/BgpV6.EviVxlan.BroadcastDomain' - replication_type: - description: |- - This model only supports Ingress Replication - type: string - enum: - - ingress_replication - default: ingress_replication - pmsi_label: - description: |- - Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. - type: integer - minimum: 0 - maximum: 16777215 - default: 16 - ad_label: - description: |- - The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per - type: integer - minimum: 0 - maximum: 16777215 - default: 0 - route_distinguisher: - description: |- - Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". - $ref: '#/components/schemas/Bgp.RouteDistinguisher' - route_target_export: - description: "List of Layer 2 Virtual Network Identifier (L2VNI) export\ - \ targets associated with this EVI. " - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - route_target_import: - description: "List of L2VNI import targets associated with this EVI. " - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - l3_route_target_export: - description: |- - List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - l3_route_target_import: - description: |- - List of L3VNI Import Route Targets. - type: array - items: - $ref: '#/components/schemas/Bgp.RouteTarget' - advanced: - $ref: '#/components/schemas/Bgp.RouteAdvanced' - communities: - description: |- - Optional community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.Community' - ext_communities: - description: |- - Optional Extended Community settings. - type: array - items: - $ref: '#/components/schemas/Bgp.ExtCommunity' - as_path: - description: |- - Optional AS PATH settings. - $ref: '#/components/schemas/Bgp.AsPath' - BgpV6.EviVxlan.BroadcastDomain: - description: |- - Configuration for Broadcast Domains per EVI. - type: object - properties: - cmac_ip_range: - description: "This contains the list of Customer MAC/IP Ranges to be configured\ - \ per Broadcast Domain. \n\nAdvertises following route - \nType 2 - MAC/IP\ - \ Advertisement Route." - type: array - items: - $ref: '#/components/schemas/Bgp.CMacIpRange' - ethernet_tag_id: - description: |- - The Ethernet Tag ID of the Broadcast Domain. - type: integer - minimum: 0 - maximum: 4294967295 - default: 0 - vlan_aware_service: - description: |- - VLAN-Aware service to be enabled or disabled. - type: boolean - default: false - Device.Vxlan: - properties: - v4_tunnels: - description: |- - IPv4 VXLAN Tunnels - type: array - items: - $ref: '#/components/schemas/Vxlan.V4Tunnel' - v6_tunnels: - description: |- - IPv6 VXLAN Tunnels - type: array - items: - $ref: '#/components/schemas/Vxlan.V6Tunnel' - Vxlan.V4Tunnel: - description: |- - Configuration and operational state parameters relating to IPv4 VXLAN tunnel end-point interface. - type: object - required: - - source_interface - - vni - - name - properties: - source_interface: - description: | - Determines the source interface. - - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - destination_ip_mode: - $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode' - vni: - description: |- - VXLAN Network Identifier (VNI) to distinguish network instances on the wire - type: integer - minimum: 1 - maximum: 16777215 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Vxlan.V6Tunnel: - description: |- - Configuration and operational state parameters relating to IPv6 VXLAN tunnel end-point interface. - type: object - required: - - source_interface - - vni - - name - properties: - source_interface: - description: | - Determines the source interface. - - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Device.Ipv6Loopback/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Device.Ipv6Loopback/properties/name - destination_ip_mode: - $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode' - vni: - description: |- - VXLAN Network Identifier (VNI) to distinguish network instances on the wire - type: integer - minimum: 1 - maximum: 16777215 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Vxlan.V4Tunnel.DestinationIPMode: - description: |- - Communication mode between the VTEPs, either unicast or multicast. - type: object - properties: - choice: - description: |- - unicast or multicast - type: string - enum: - - unicast - - multicast - default: multicast - unicast: - $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode.Unicast' - multicast: - $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode.Multicast' - Vxlan.V6Tunnel.DestinationIPMode: - description: |- - Communication mode between the VTEPs, either unicast or multicast. - type: object - properties: - choice: - description: |- - unicast or multicast - type: string - enum: - - unicast - - multicast - default: multicast - unicast: - $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode.Unicast' - multicast: - $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode.Multicast' - Vxlan.V4Tunnel.DestinationIPMode.Unicast: - properties: - vteps: - description: |- - List of VTEPs for member VNI(VXLAN Network Identifier) - type: array - items: - $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode.Unicast.Vtep' - Vxlan.V6Tunnel.DestinationIPMode.Unicast: - properties: - vteps: - description: |- - List of VTEPs for member VNI(VXLAN Network Identifier) - type: array - items: - $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode.Unicast.Vtep' - Vxlan.Tunnel.DestinationIPMode.Unicast.ArpSuppressionCache: - description: |- - Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. - type: object - properties: - remote_vm_mac: - description: |- - Remote VM MAC address bound to Remote VM IPv4 address - type: string - format: mac - remote_vm_ipv4: - description: |- - Remote VM IPv4 address - type: string - format: ipv4 - Vxlan.V4Tunnel.DestinationIPMode.Unicast.Vtep: - description: |- - VTEP (VXLAN Tunnel End Point (VTEP)) parameters - DestinationIPMode Unicast VTEP Base - type: object - properties: - remote_vtep_address: - description: |- - Remote VXLAN Tunnel End Point address - type: string - format: ipv4 - arp_suppression_cache: - description: |- - Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. - type: array - items: - $ref: '#/components/schemas/Vxlan.Tunnel.DestinationIPMode.Unicast.ArpSuppressionCache' - Vxlan.V6Tunnel.DestinationIPMode.Unicast.Vtep: - description: |- - VTEP (VXLAN Tunnel End Point (VTEP)) parameters - DestinationIPMode Unicast VTEP Base - type: object - properties: - remote_vtep_address: - description: |- - Remote VXLAN Tunnel End Point address - type: string - format: ipv6 - arp_suppression_cache: - description: |- - Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. - type: array - items: - $ref: '#/components/schemas/Vxlan.Tunnel.DestinationIPMode.Unicast.ArpSuppressionCache' - Vxlan.V4Tunnel.DestinationIPMode.Multicast: - description: |- - Multicast Group address for member VNI(VXLAN Network Identifier) - type: object - properties: - address: - description: |- - IPv4 Multicast address - type: string - format: ipv4 - Vxlan.V6Tunnel.DestinationIPMode.Multicast: - description: |- - Multicast Group address for member VNI(VXLAN Network Identifier) - type: object - properties: - address: - description: |- - IPv6 Multicast address - type: string - format: ipv6 - Device.Tcp: - description: |- - TCP configs. - type: object - required: - - ip_interface_name - - name - properties: - ip_interface_name: - description: | - IPv4/v6 interface name - - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - keep_alive_time: - description: |- - The TCP keep alive timer - type: integer - default: 7200 - receive_buffer_size: - description: |- - The TCP receive buffer size - type: integer - default: 4096 - transmit_buffer_size: - description: |- - The TCP transmit buffer size - type: integer - default: 4096 - source_port: - description: "TCP source port no " - type: integer - default: 1024 - destination_port: - description: "TCP destination port no " - type: integer - default: 1024 - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.Http: - description: |- - HTTP configs. - type: object - properties: - tcp_name: - description: | - TCP interface name - - x-constraint: - - /components/schemas/Device.Tcp/properties/name - type: string - x-constraint: - - /components/schemas/Device.Tcp/properties/name - enable_ssl: - description: |- - Enable SSL for HTTP - type: boolean - default: false - http_version: - description: |- - HTTP Version - type: integer - default: 1 - enable_cookie_support: - description: |- - Enable cookie support for HTTP - type: boolean - default: false - max_sessions: - description: |- - Max HTTP sessions - type: integer - default: 1 - max_streams: - description: |- - Max HTTP streams - type: integer - default: 1 - command_timeout: - description: |- - Command timeout timer in seconds - type: integer - default: 600 - url_stats_count: - description: "URL stats count " - type: integer - default: 10 - enable_per_conn_cookie_support: - description: |- - Enable cookie support for per connection - type: boolean - default: false - method: - description: |- - HTTP method like GET, POST - type: string - enum: - - get - - post - get: - $ref: '#/components/schemas/Method.Get' - post: - $ref: '#/components/schemas/Method.Post' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - required: - - name - Method.Get: - description: |- - A GET operation of HTTP - type: object - required: - - destination - - page - - name - properties: - destination: - description: |- - Server name/IP address - type: string - page: - description: |- - The page name to perform get opertaion. - type: string - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Method.Post: - description: |- - A POST operation of HTTP - type: object - required: - - destination - - page - - name - properties: - destination: - description: |- - The Server name/IP address - type: string - page: - description: |- - The page name to perform post opertaion. - type: string - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Flow: - description: |- - A high level data plane traffic flow. - type: object - required: - - tx_rx - - name - properties: - tx_rx: - description: |- - The transmit and receive endpoints. - $ref: '#/components/schemas/Flow.TxRx' - packet: - description: "The header is a list of traffic protocol headers.\n\nThe order\ - \ of traffic protocol headers assigned to the list is the\norder they\ - \ will appear on the wire.\n\nIn the case of an empty list the keyword/value\ - \ of minItems: 1 \nindicates that an implementation MUST provide at least\ - \ one \nFlow.Header object.\n\nThe default value for the Flow.Header choice\ - \ property is ethernet \nwhich will result in an implementation by default\ - \ providing at least \none ethernet packet header." - type: array - minItems: 1 - items: - $ref: '#/components/schemas/Flow.Header' - size: - description: |- - The size of the packets. - $ref: '#/components/schemas/Flow.Size' - rate: - description: |- - The transmit rate of the packets. - $ref: '#/components/schemas/Flow.Rate' - duration: - description: |- - The transmit duration of the packets. - $ref: '#/components/schemas/Flow.Duration' - metrics: - description: "Flow metrics. " - $ref: '#/components/schemas/Flow.Metrics' - name: - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Flow.TxRx: - description: "A container for different types of transmit and receive \nendpoint\ - \ containers." - type: object - properties: - choice: - description: |- - The type of transmit and receive container used by the flow. - type: string - enum: - - port - - device - default: port - port: - $ref: '#/components/schemas/Flow.Port' - device: - $ref: '#/components/schemas/Flow.Router' - Flow.Port: - description: "A container for a transmit port and 0..n intended receive ports.\n\ - When assigning this container to a flow the flows's \npacket headers will\ - \ not be populated with any address resolution \ninformation such as source\ - \ and/or destination addresses. \nFor example Flow.Ethernet dst mac address\ - \ values will be defaulted to 0. \nFor full control over the Flow.properties.packet\ - \ header contents use this \ncontainer. " - type: object - required: - - tx_name - properties: - tx_name: - description: | - The unique name of a port that is the transmit port. - - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - rx_name: - description: | - The unique name of a port that is the intended receive port. - - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - Flow.Router: - description: |- - A container for declaring a map of 1..n transmit devices to 1..n receive devices. This allows for a single flow to have different tx to rx device flows such as a single one to one map or a many to many map. - type: object - required: - - tx_names - - rx_names - properties: - mode: - description: "Determines the mapping of tx_names to rx_names.\n\nThe mesh\ - \ mode creates traffic between each value in tx_names to\nevery value\ - \ in rx_names except in the case where the individual \ntx_names value\ - \ is equal to rx_names value which will be ignored.\nIdentical values\ - \ in tx_names or rx_names MUST raise an error.\n\nThe one_to_one mode\ - \ creates traffic between each value pair in \nof tx_names and rx_names\ - \ by index.\nThe length of tx_names and rx_name MUST be the same.\nIdentical\ - \ values in tx_names or rx_names MUST raise an error." - type: string - enum: - - mesh - - one_to_one - default: mesh - tx_names: - type: array - items: - description: |- - The unique name of an emulated device that will be transmitting. - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Bgp.CMacIpRange/properties/name - example: - - Eth 1 - - Eth 2 - - Eth 3 - - IPv4 1 - - IPv6 1 - - Bgp V4RouteRange 1 - - Bgp V6RouteRange 1 - description: | - TBD - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Bgp.CMacIpRange/properties/name - rx_names: - type: array - items: - description: |- - The unique name of an emulated device that will be receiving. - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Bgp.CMacIpRange/properties/name - example: - - Eth 1 - - Eth 2 - - Eth 3 - - IPv4 1 - - IPv6 1 - - Bgp V4RouteRange 1 - - Bgp V6RouteRange 1 - description: | - TBD - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Bgp.CMacIpRange/properties/name - Flow.Header: - description: |- - Configuration for all traffic packet headers - type: object - properties: - choice: - description: "The available types of flow headers. If one is not provided\ - \ the \ndefault ethernet packet header MUST be provided." - type: string - enum: - - custom - - ethernet - - vlan - - vxlan - - ipv4 - - ipv6 - - pfcpause - - ethernetpause - - tcp - - udp - - gre - - gtpv1 - - gtpv2 - - arp - - icmp - - icmpv6 - - ppp - - igmpv1 - - mpls - default: ethernet - custom: - $ref: '#/components/schemas/Flow.Custom' - ethernet: - $ref: '#/components/schemas/Flow.Ethernet' - vlan: - $ref: '#/components/schemas/Flow.Vlan' - vxlan: - $ref: '#/components/schemas/Flow.Vxlan' - ipv4: - $ref: '#/components/schemas/Flow.Ipv4' - ipv6: - $ref: '#/components/schemas/Flow.Ipv6' - pfcpause: - $ref: '#/components/schemas/Flow.PfcPause' - ethernetpause: - $ref: '#/components/schemas/Flow.EthernetPause' - tcp: - $ref: '#/components/schemas/Flow.Tcp' - udp: - $ref: '#/components/schemas/Flow.Udp' - gre: - $ref: '#/components/schemas/Flow.Gre' - gtpv1: - $ref: '#/components/schemas/Flow.Gtpv1' - gtpv2: - $ref: '#/components/schemas/Flow.Gtpv2' - arp: - $ref: '#/components/schemas/Flow.Arp' - icmp: - $ref: '#/components/schemas/Flow.Icmp' - icmpv6: - $ref: '#/components/schemas/Flow.Icmpv6' - ppp: - $ref: '#/components/schemas/Flow.Ppp' - igmpv1: - $ref: '#/components/schemas/Flow.Igmpv1' - mpls: - $ref: '#/components/schemas/Flow.Mpls' - Flow.Custom: - type: object - description: |- - Custom packet header - required: - - bytes - properties: - bytes: - description: |- - A custom packet header defined as a string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. - type: string - pattern: '^[A-Fa-f0-9: ]+$' - Flow.Ethernet: - description: |- - Ethernet packet header - type: object - properties: - dst: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst' - src: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src' - ether_type: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType' - pfc_queue: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue' - Flow.Vlan: - description: |- - VLAN packet header - type: object - properties: - priority: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority' - cfi: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi' - id: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Id' - tpid: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid' - Flow.Vxlan: - description: |- - VXLAN packet header - type: object - properties: - flags: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags' - reserved0: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0' - vni: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni' - reserved1: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1' - Flow.Ipv4: - description: |- - IPv4 packet header - type: object - properties: - version: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version' - header_length: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength' - priority: - $ref: '#/components/schemas/Flow.Ipv4.Priority' - total_length: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength' - identification: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification' - reserved: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved' - dont_fragment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment' - more_fragments: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments' - fragment_offset: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset' - time_to_live: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive' - protocol: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol' - header_checksum: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderChecksum' - src: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src' - dst: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst' - Flow.Ipv4.Priority: - description: |- - A container for ipv4 raw, tos, dscp ip priorities. - type: object - properties: - choice: - type: string - enum: - - raw - - tos - - dscp - default: dscp - raw: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw' - tos: - $ref: '#/components/schemas/Flow.Ipv4.Tos' - dscp: - $ref: '#/components/schemas/Flow.Ipv4.Dscp' - Flow.Ipv4.Dscp: - description: |- - Differentiated services code point (DSCP) packet field. - type: object - properties: - phb: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb' - ecn: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn' - Flow.Ipv4.Tos: - description: |- - Type of service (TOS) packet field. - type: object - properties: - precedence: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence' - delay: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay' - throughput: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput' - reliability: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability' - monetary: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary' - unused: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused' - Flow.Ipv6: - description: |- - IPv6 packet header - type: object - properties: - version: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version' - traffic_class: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass' - flow_label: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel' - payload_length: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength' - next_header: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader' - hop_limit: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit' - src: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src' - dst: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst' - Flow.PfcPause: - description: |- - IEEE 802.1Qbb PFC Pause packet header. - type: object - properties: - dst: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst' - src: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src' - ether_type: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType' - control_op_code: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode' - class_enable_vector: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector' - pause_class_0: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0' - pause_class_1: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1' - pause_class_2: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2' - pause_class_3: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3' - pause_class_4: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4' - pause_class_5: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5' - pause_class_6: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6' - pause_class_7: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7' - Flow.EthernetPause: - description: |- - IEEE 802.3x global ethernet pause packet header - type: object - properties: - dst: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst' - src: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src' - ether_type: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType' - control_op_code: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode' - time: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time' - Flow.Tcp: - description: |- - TCP packet header - type: object - properties: - src_port: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort' - dst_port: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort' - seq_num: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum' - ack_num: - $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum' - data_offset: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset' - ecn_ns: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs' - ecn_cwr: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr' - ecn_echo: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho' - ctl_urg: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg' - ctl_ack: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck' - ctl_psh: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh' - ctl_rst: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst' - ctl_syn: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn' - ctl_fin: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin' - window: - $ref: '#/components/schemas/Pattern.Flow.Tcp.Window' - Flow.Udp: - description: |- - UDP packet header - type: object - properties: - src_port: - $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort' - dst_port: - $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort' - length: - $ref: '#/components/schemas/Pattern.Flow.Udp.Length' - checksum: - $ref: '#/components/schemas/Pattern.Flow.Udp.Checksum' - Flow.Gre: - description: |- - Standard GRE packet header (RFC2784) - type: object - properties: - checksum_present: - $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent' - reserved0: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0' - version: - $ref: '#/components/schemas/Pattern.Flow.Gre.Version' - protocol: - $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol' - checksum: - $ref: '#/components/schemas/Pattern.Flow.Gre.Checksum' - reserved1: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1' - Flow.Gtpv1: - description: |- - GTPv1 packet header - type: object - properties: - version: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version' - protocol_type: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType' - reserved: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved' - e_flag: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag' - s_flag: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag' - pn_flag: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag' - message_type: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType' - message_length: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength' - teid: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid' - squence_number: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber' - n_pdu_number: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber' - next_extension_header_type: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType' - extension_headers: - description: |- - A list of optional extension headers. - type: array - items: - $ref: '#/components/schemas/Flow.GtpExtension' - Flow.GtpExtension: - type: object - properties: - extension_length: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength' - contents: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents' - next_extension_header: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader' - Flow.Gtpv2: - description: |- - GTPv2 packet header - type: object - properties: - version: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version' - piggybacking_flag: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag' - teid_flag: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag' - spare1: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1' - message_type: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType' - message_length: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength' - teid: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid' - sequence_number: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber' - spare2: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2' - Flow.Arp: - description: |- - ARP packet header - type: object - properties: - hardware_type: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType' - protocol_type: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType' - hardware_length: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength' - protocol_length: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength' - operation: - $ref: '#/components/schemas/Pattern.Flow.Arp.Operation' - sender_hardware_addr: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr' - sender_protocol_addr: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr' - target_hardware_addr: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr' - target_protocol_addr: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr' - Flow.Icmp: - description: |- - ICMP packet header - type: object - properties: - choice: - type: string - enum: - - echo - default: echo - echo: - $ref: '#/components/schemas/Flow.Icmp.Echo' - Flow.Icmp.Echo: - description: |- - Packet Header for ICMP echo request - Common properties for ICMP packet headers that require checksum - Common properties for ICMP packet headers that require identifier and sequence number properties - type: object - properties: - type: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type' - code: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code' - checksum: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Checksum' - identifier: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier' - sequence_number: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber' - Flow.Icmpv6: - description: |- - ICMPv6 packet header - type: object - properties: - choice: - type: string - enum: - - echo - default: echo - echo: - $ref: '#/components/schemas/Flow.Icmpv6.Echo' - Flow.Icmpv6.Echo: - description: |- - Packet Header for ICMPv6 Echo - Common properties for ICMPv6 packet headers that require checksum - type: object - properties: - type: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type' - code: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code' - identifier: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier' - sequence_number: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber' - checksum: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Checksum' - Flow.Ppp: - description: |- - PPP packet header - type: object - properties: - address: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Address' - control: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Control' - protocol_type: - $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType' - Flow.Igmpv1: - description: |- - IGMPv1 packet header - type: object - properties: - version: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version' - type: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type' - unused: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused' - checksum: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Checksum' - group_address: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress' - Flow.Mpls: - description: |- - MPLS packet header; When configuring multiple such headers, the count shall not exceed 20. - type: object - properties: - label: - $ref: '#/components/schemas/Pattern.Flow.Mpls.Label' - traffic_class: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass' - bottom_of_stack: - $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack' - time_to_live: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive' - Flow.Size: - description: |- - The frame size which overrides the total length of the packet - type: object - properties: - choice: - type: string - enum: - - fixed - - increment - - random - default: fixed - fixed: - type: integer - default: 64 - increment: - $ref: '#/components/schemas/Flow.SizeIncrement' - random: - $ref: '#/components/schemas/Flow.SizeRandom' - Flow.SizeIncrement: - type: object - description: "Frame size that increments from a starting size to \nan ending\ - \ size incrementing by a step size." - properties: - start: - description: |- - Starting frame size in bytes - type: integer - minimum: 1 - default: 64 - end: - description: |- - Ending frame size in bytes - type: integer - minimum: 64 - default: 1518 - step: - description: |- - Step frame size in bytes - type: integer - default: 1 - Flow.SizeRandom: - type: object - description: |- - Random frame size from a min value to a max value. - properties: - min: - type: integer - default: 64 - max: - type: integer - default: 1518 - Flow.Rate: - type: object - description: |- - The rate of packet transmission - properties: - choice: - description: |- - The available types of flow rate. - type: string - enum: - - pps - - bps - - kbps - - mbps - - gbps - - percentage - default: pps - pps: - description: |- - Packets per second. - type: integer - format: int64 - minimum: 1 - default: 1000 - bps: - description: |- - Bits per second. - type: integer - format: int64 - minimum: 672 - default: 1000000000 - kbps: - description: |- - Kilobits per second. - type: integer - format: int64 - minimum: 1 - default: 1000000 - mbps: - description: "Megabits per second. " - type: integer - format: int64 - minimum: 1 - default: 1000 - gbps: - description: |- - Gigabits per second. - type: integer - format: int32 - minimum: 1 - default: 1 - percentage: - description: |- - The percentage of a port location's available bandwidth. - type: number - format: float - minimum: 0 - maximum: 100 - default: 100 - Flow.Duration: - description: "A container for different transmit durations. " - type: object - properties: - choice: - description: |- - A choice used to determine the type of duration. - type: string - enum: - - fixed_packets - - fixed_seconds - - burst - - continuous - default: continuous - fixed_packets: - $ref: '#/components/schemas/Flow.FixedPackets' - fixed_seconds: - $ref: '#/components/schemas/Flow.FixedSeconds' - burst: - $ref: '#/components/schemas/Flow.Burst' - continuous: - $ref: '#/components/schemas/Flow.Continuous' - Flow.Continuous: - description: "Transmit will be continuous and will not stop automatically. " - type: object - properties: - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - minimum: 0 - default: 12 - delay: - $ref: '#/components/schemas/Flow.Delay' - Flow.Delay: - description: "The optional container to specify the delay before starting \n\ - transmission of packets." - type: object - properties: - choice: - type: string - enum: - - bytes - - nanoseconds - - microseconds - default: bytes - bytes: - description: |- - The delay before starting transmission of packets. - A value of 0 indicates no delay. - type: number - format: float - minimum: 0 - default: 0 - nanoseconds: - description: |- - The delay before starting transmission of packets. - A value of 0 indicates no delay. - type: number - format: float - minimum: 0 - default: 0 - microseconds: - description: |- - The delay before starting transmission of packets. - A value of 0 indicates no delay. - type: number - format: float - minimum: 0 - default: 0 - Flow.FixedPackets: - description: |- - Transmit a fixed number of packets after which the flow will stop. - type: object - properties: - packets: - description: |- - Stop transmit of the flow after this number of packets. - type: integer - minimum: 1 - default: 1 - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - minimum: 0 - default: 12 - delay: - $ref: '#/components/schemas/Flow.Delay' - Flow.FixedSeconds: - description: |- - Transmit for a fixed number of seconds after which the flow will stop. - type: object - properties: - seconds: - description: |- - Stop transmit of the flow after this number of seconds. - type: number - minimum: 0 - default: 1 - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - minimum: 0 - default: 12 - delay: - $ref: '#/components/schemas/Flow.Delay' - Flow.Burst: - description: "Transmits continuous or fixed burst of packets. \nFor continuous\ - \ burst of packets, it will not automatically stop.\nFor fixed burst of packets,\ - \ it will stop after transmitting fixed number of bursts. " - type: object - properties: - bursts: - description: |- - The number of packet bursts transmitted per flow. - A value of 0 implies continuous burst of packets. - type: integer - minimum: 0 - default: 0 - packets: - description: |- - The number of packets transmitted per burst. - type: integer - minimum: 1 - default: 1 - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - minimum: 0 - default: 12 - inter_burst_gap: - $ref: '#/components/schemas/Flow.Duration.InterBurstGap' - Flow.Duration.InterBurstGap: - type: object - description: |- - The optional container for specifying a gap between bursts. - properties: - choice: - description: |- - The type of inter burst gap units. - type: string - enum: - - bytes - - nanoseconds - - microseconds - default: bytes - bytes: - description: |- - The amount of time between bursts expressed in bytes. - A value of 0 indicates no gap between bursts. - type: number - format: double - minimum: 0 - default: 12 - nanoseconds: - description: |- - The amount of time between bursts expressed in nanoseconds. - A value of 0 indicates no gap between bursts. - type: number - format: double - minimum: 0 - default: 96 - microseconds: - description: |- - The amount of time between bursts expressed in microseconds. - A value of 0 indicates no gap between bursts. - type: number - format: double - minimum: 0 - default: 0.096 - Flow.Metrics: - description: |- - The optional container for configuring flow metrics. - type: object - properties: - enable: - description: "Enables flow metrics.\nEnabling this option may affect the\ - \ resultant packet payload due to \nadditional instrumentation data." - type: boolean - default: false - loss: - description: |- - Enables additional flow metric loss calculation. - type: boolean - default: false - timestamps: - description: |- - Enables additional flow metric first and last timestamps. - type: boolean - default: false - latency: - description: |- - Latency metrics. - $ref: '#/components/schemas/Flow.Latency.Metrics' - Flow.Latency.Metrics: - description: |- - The optional container for per flow latency metric configuration. - type: object - properties: - enable: - description: "True to enable latency metrics using timestamps.\n\nEnabling\ - \ this option may affect the resultant packet payload due to \nadditional\ - \ instrumentation data." - type: boolean - default: false - mode: - description: "Select the type of latency measurement. The different types\ - \ of \nlatency measurements are:\n\n\nstore_forward:\nThe time interval\ - \ starting when the last bit of the frame leaves the\nsending port and\ - \ ending when the first bit of the frame is seen on\nthe receiving port\ - \ (LIFO). This is based on the RFC 1242 standard.\n\n\ncut_through:\n\ - The time interval starting when the first bit of the frame leaves\nthe\ - \ sending port and ending when the first bit of the frame is seen\non\ - \ the receiving port (FIFO). This is based on the RFC 1242 \nstandard." - type: string - enum: - - store_forward - - cut_through - default: store_forward - Event: - description: |- - The optional container for event configuration. - type: object - properties: - enable: - description: "True to enable all events. \nEnabling this option may affect\ - \ the resultant packet payload due to \nadditional instrumentation data." - type: boolean - default: false - link: - $ref: '#/components/schemas/Event.Link' - rx_rate_threshold: - $ref: '#/components/schemas/Event.RxRateThreshold' - route_advertise_withdraw: - $ref: '#/components/schemas/Event.RouteAdvertiseWithdraw' - Event.RxRateThreshold: - description: |- - The optional container for rx rate threshold event configuration. - type: object - properties: - enable: - description: "True to enable the rx_rate_threshold event. \nEnabling this\ - \ option may affect the resultant packet payload due to \nadditional instrumentation\ - \ data." - type: boolean - default: false - threshold: - description: "True to enable notifications when the rx rate of a flow passes\ - \ above \nor below the threshold value. " - type: number - format: float - maximum: 100 - minimum: 0 - default: 95 - Event.Link: - description: |- - The optional container for link up/down event configuration. - type: object - properties: - enable: - description: "True to enable notifications when a link up/down event occurs. " - type: boolean - default: false - Event.RouteAdvertiseWithdraw: - description: |- - The optional container for route advertise/withdraw event configuration. - type: object - properties: - enable: - description: "True to enable notifications when a route advertise/withdraw\ - \ \nevent occurs. " - type: boolean - default: false - Event.Request: - type: object - properties: - type: - description: "Constrain the events being returned by specifying event types.\n\ - If the list is empty then all event types will be returned. " - type: array - items: - type: string - enum: - - link_down - - link_up - - route_withdraw - - route_advertise - - flow_rx_rate_above_threshold - - flow_rx_rate_below_threshold - example: route_withdraw - source: - description: "Constrain the events being returned by specifying event sources.\ - \ \nIf the list is empty then all event sources will be returned. \n\n\ - x-constraint:\n- /components/schemas/Port/properties/name\n- /components/schemas/Bgp.V4RouteRange/name\n\ - - /components/schemas/Bgp.V6RouteRange/name\n" - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Bgp.V4RouteRange/name - - /components/schemas/Bgp.V6RouteRange/name - Event.Subscription: - description: "A container that describes what events a system should provide\ - \ and \noptionally where to publish them. " - type: object - properties: - events: - $ref: '#/components/schemas/Event.Request' - callbackUrl: - description: |- - Indicates where a client wants to be notified of the events set in - the events property. - If this property is empty or null then no event notifications will - be forwarded. - type: string - format: uri - example: https://127.0.0.1/event/notification - Response.Error: - description: |- - A list of errors that may have occurred while executing the request. - type: object - properties: - errors: - description: "A list of any system specific errors that have occurred while\ - \ \nexecuting the request." - type: array - items: - type: string - Response.Warning: - description: |- - A list of warnings that have occurred while executing the request. - type: object - properties: - warnings: - description: "A list of any system specific warnings that have occurred\ - \ while \nexecuting the request." - type: array - items: - type: string - Link.State: - description: |- - Port link state. - type: object - required: - - state - properties: - port_names: - description: | - The names of port objects to. An empty or null list will control all port objects. - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - state: - description: |- - The link state. - type: string - enum: - - up - - down - Transmit.State: - description: |- - Flow transmit state. - type: object - required: - - state - properties: - flow_names: - description: | - The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. - If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change. - - x-constraint: - - /components/schemas/Flow/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Flow/properties/name - state: - description: |- - The transmit state. - If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). - If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. - If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. - If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared. - type: string - enum: - - start - - stop - - pause - - resume - Capture.State: - description: |- - Control port capture state - type: object - required: - - state - properties: - port_names: - description: | - The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. - If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change. - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - state: - description: |- - The capture state. - type: string - enum: - - start - - stop - Flows.Update: - description: |- - A container of flows with associated properties to be updated without affecting the flows current transmit state. - type: object - required: - - property_names - - flows - properties: - property_names: - description: |- - Flow properties to be updated without affecting the transmit state. - type: array - items: - type: string - enum: - - rate - - size - flows: - description: |- - The list of configured flows for which given property will be updated. - type: array - items: - $ref: '#/components/schemas/Flow' - Route.State: - description: |- - Sets the device route state - type: object - required: - - state - properties: - names: - description: | - The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected. - - x-constraint: - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name - state: - description: |- - Route specific states - type: string - enum: - - withdraw - - advertise - Ping.Request: - description: |- - Ping request details - type: object - properties: - endpoints: - description: |- - Array of ping requests - type: array - items: - $ref: '#/components/schemas/Ping' - Protocol.State: - description: |- - Sets all configured protocols to `start` or `stop` state. - type: object - required: - - state - properties: - state: - description: |- - Protocol specific states - type: string - enum: - - start - - stop - Device.State: - description: |- - Sets attributes for the requested state/actions to be performed on device(s) - type: object - properties: - choice: - type: string - enum: - - lacp_member_state - lacp_member_state: - $ref: '#/components/schemas/LacpMember.State' - Ping: - type: object - properties: - choice: - description: |- - IPv4 or IPv6 ping. - type: string - enum: - - ipv4 - - ipv6 - default: ipv4 - ipv4: - $ref: '#/components/schemas/Ping.Ipv4' - ipv6: - $ref: '#/components/schemas/Ping.Ipv6' - Ping.Ipv4: - type: object - properties: - src_name: - description: | - A base IPv4 interface - - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - dst_ip: - description: |- - IPv4 address to ping - type: string - format: ipv4 - Ping.Ipv6: - type: object - properties: - src_name: - description: | - A base IPv6 interface - - x-constraint: - - /components/schemas/Device.Ipv6Base/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv6Base/properties/name - dst_ip: - description: |- - IPv6 addresses to ping. - type: string - format: ipv6 - Ping.Response: - description: |- - A container for ping responses. - type: object - properties: - responses: - type: array - items: - $ref: '#/components/schemas/Response' - Response: - type: object - properties: - src_name: - description: | - The name of the source IPv4 or IPv6 interface from which ping was sent. - - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - - /components/schemas/Device.Ipv6Base/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - - /components/schemas/Device.Ipv6Base/properties/name - dst_ip: - description: |- - Destination address. - type: string - result: - description: |- - Result of the ping request. - type: string - enum: - - success - - failure - default: failure - LacpMember.State: - description: |- - Set LACP state for specified LAG Member Port(s). - type: object - required: - - state - properties: - lag_member_port_names: - description: | - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members. - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - state: - description: |- - The LACP Member admin state. 'up' will start transmission of LACPDUs on selected member ports. 'down' will send a LACPDU with 'sync' flag unset and then stop transmission of LACPDUs on selected member ports. - type: string - enum: - - up - - down - Metrics.Request: - description: |- - Request to traffic generator for metrics of choice - type: object - properties: - choice: - type: string - enum: - - port - - flow - - bgpv4 - - bgpv6 - - isis - - lag - - lacp_lag_member - default: port - port: - $ref: '#/components/schemas/Port.Metrics.Request' - flow: - $ref: '#/components/schemas/Flow.Metrics.Request' - bgpv4: - $ref: '#/components/schemas/Bgpv4.Metrics.Request' - bgpv6: - $ref: '#/components/schemas/Bgpv6.Metrics.Request' - isis: - $ref: '#/components/schemas/Isis.Metrics.Request' - lag: - $ref: '#/components/schemas/Lag.Metrics.Request' - lacp_lag_member: - $ref: '#/components/schemas/LacpLagMember.Metrics.Request' - Metrics.Response: - description: |- - Response containing chosen traffic generator metrics - type: object - properties: - choice: - type: string - enum: - - flow_metrics - - port_metrics - - bgpv4_metrics - - bgpv6_metrics - - isis_metrics - - lag_metrics - - lacp_lag_member_metrics - default: port_metrics - port_metrics: - type: array - items: - $ref: '#/components/schemas/Port.Metric' - flow_metrics: - type: array - items: - $ref: '#/components/schemas/Flow.Metric' - bgpv4_metrics: - type: array - items: - $ref: '#/components/schemas/Bgpv4.Metric' - bgpv6_metrics: - type: array - items: - $ref: '#/components/schemas/Bgpv6.Metric' - isis_metrics: - type: array - items: - $ref: '#/components/schemas/Isis.Metric' - lag_metrics: - type: array - items: - $ref: '#/components/schemas/Lag.Metric' - lacp_lag_member_metrics: - type: array - items: - $ref: '#/components/schemas/LacpLagMember.Metric' - Port.Metrics.Request: - description: |- - The port result request to the traffic generator - type: object - properties: - port_names: - description: | - The names of objects to return results for. An empty list will return all port row results. - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the port cannot be excluded. - type: array - items: - type: string - enum: - - transmit - - location - - link - - capture - - frames_tx - - frames_rx - - bytes_tx - - bytes_rx - - frames_tx_rate - - frames_rx_rate - - bytes_tx_rate - - bytes_rx_rate - Port.Metric: - type: object - properties: - name: - description: | - The name of a configured port - - x-constraint: - - /components/schemas/Port/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name - location: - description: |- - The state of the connection to the test port location. The format should be the configured port location along with any custom connection state message. - type: string - link: - description: |- - The state of the test port link The string can be up, down or a custom error message. - type: string - enum: - - up - - down - capture: - description: |- - The state of the test port capture infrastructure. The string can be started, stopped or a custom error message. - type: string - enum: - - started - - stopped - frames_tx: - description: |- - The current total number of frames transmitted - type: integer - format: int64 - minimum: 0 - frames_rx: - description: |- - The current total number of valid frames received - type: integer - format: int64 - minimum: 0 - bytes_tx: - description: |- - The current total number of bytes transmitted - type: integer - format: int64 - minimum: 0 - bytes_rx: - description: |- - The current total number of valid bytes received - type: integer - format: int64 - minimum: 0 - frames_tx_rate: - description: |- - The current rate of frames transmitted - type: number - frames_rx_rate: - description: |- - The current rate of valid frames received - type: number - bytes_tx_rate: - description: |- - The current rate of bytes transmitted - type: number - bytes_rx_rate: - description: |- - The current rate of bytes received - type: number - Flow.Metrics.Request: - description: |- - The container for a flow metric request. - type: object - properties: - flow_names: - description: | - Flow metrics will be retrieved for these flow names. - If no flow names are specified then all flows will be returned. - - x-constraint: - - /components/schemas/Flow/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Flow/properties/name - metric_groups: - description: |- - A list of metric groups used to disaggregate flows. A metric group that does not exist for a flow group MUST return an error. - $ref: '#/components/schemas/Flow.MetricGroup.Request' - metric_names: - description: |- - The list of metric names that the returned result set will contain. If the list is empty then all metrics will be returned. - type: array - items: - type: string - enum: - - transmit - - frames_tx - - frames_rx - - bytes_tx - - bytes_rx - - frames_tx_rate - - frames_rx_rate - Flow.MetricGroup.Request: - type: object - properties: - choice: - description: |- - The type of disaggregation to be applied to the flow metrics. - type: string - enum: - - ingress - - egress - default: ingress - ingress: - description: "Disaggregate the flow metrics by ingress packet header field\ - \ names.\nIf the items is empty then no disaggregation will be done. \n\ - \nx-constraint:\n- /components/schemas/Flow/properties/packet/../metric_group\n" - type: array - default: [] - items: - type: string - x-constraint: - - /components/schemas/Flow/properties/packet/../metric_group - egress: - description: "Disaggregate the flow metrics by egress packet header field\ - \ names \nIf the items is empty then no disaggregation will be done. \n\ - \nx-constraint:\n- /components/schemas/Flow/properties/egress/../metric_group\n" - type: array - default: [] - items: - type: string - x-constraint: - - /components/schemas/Flow/properties/egress/../metric_group - Flow.Metric: - description: |- - A container for flow metrics. - The container is keyed by the name, port_tx, port_rx and metric_groups - values. - type: object - properties: - name: - description: |- - The name of the flow - type: string - example: Tx -> Rx - port_tx: - description: |- - The name of the transmit port - type: string - port_rx: - description: |- - The name of the receive port - type: string - metric_groups: - description: |- - Flow disaggregation groups. - type: array - items: - $ref: '#/components/schemas/Flow.MetricGroup' - transmit: - description: |- - The transmit state of the flow. - type: string - enum: - - started - - stopped - - paused - frames_tx: - description: |- - The current total number of frames transmitted - type: integer - format: int64 - minimum: 0 - frames_rx: - description: |- - The current total number of valid frames received - type: integer - format: int64 - minimum: 0 - bytes_tx: - description: |- - The current total number of bytes transmitted - type: integer - format: int64 - minimum: 0 - bytes_rx: - description: |- - The current total number of bytes received - type: integer - format: int64 - minimum: 0 - frames_tx_rate: - description: |- - The current rate of frames transmitted - type: number - frames_rx_rate: - description: |- - The current rate of valid frames received - type: number - loss: - description: |- - The percentage of lost frames - type: number - timestamps: - $ref: '#/components/schemas/Metric.Timestamp' - latency: - $ref: '#/components/schemas/Metric.Latency' - Flow.MetricGroup: - type: object - properties: - name: - description: |- - Name of packet field metric group - type: string - value: - description: |- - Value of named packet field metric group - type: string - Metric.Timestamp: - description: |- - The container for timestamp metrics. - The container will be empty if the timestamp has not been configured for - the flow. - type: object - properties: - first_timestamp_ns: - description: |- - First timestamp in nanoseconds - type: number - format: double - last_timestamp_ns: - description: |- - Last timestamp in nanoseconds - type: number - format: double - Metric.Latency: - description: "The container for latency metrics. \nThe min/max/avg values are\ - \ dependent on the type of latency measurement \nmode that is configured.\n\ - The container will be empty if the latency has not been configured for\nthe\ - \ flow." - type: object - properties: - minimum_ns: - description: |- - Minimum latency in nanoseconds - type: number - format: double - maximum_ns: - description: |- - Maximum latency in nanoseconds - type: number - format: double - average_ns: - description: |- - Average latency in nanoseconds - type: number - format: double - Bgpv4.Metrics.Request: - description: |- - The request to retrieve BGPv4 per peer metrics/statistics. - type: object - properties: - peer_names: - description: | - The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers. - - x-constraint: - - /components/schemas/Bgp.V4peer/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.V4peer/properties/name - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv4 peer cannot be excluded. - type: array - items: - type: string - enum: - - session_state - - session_flap_count - - routes_advertised - - routes_received - - route_withdraws_sent - - route_withdraws_received - - updates_sent - - updates_received - - opens_sent - - opens_received - - keepalives_sent - - keepalives_received - - notifications_sent - - notifications_received - Bgpv4.Metric: - description: |- - BGPv4 per peer statistics information. - type: object - properties: - name: - description: |- - The name of a configured BGPv4 peer. - type: string - session_state: - description: |- - Session state as up or down. Up refers to an Established state and Down refers to any other state. - type: string - enum: - - up - - down - session_flap_count: - description: |- - Number of times the session went from Up to Down state. - type: integer - routes_advertised: - description: |- - Number of routes advertised. - type: integer - routes_received: - description: |- - Number of routes received. - type: integer - route_withdraws_sent: - description: |- - Number of route withdraws sent. - type: integer - route_withdraws_received: - description: |- - Number of route withdraws received. - type: integer - updates_sent: - description: |- - Number of Update messages sent. - type: integer - updates_received: - description: |- - Number of Update messages received. - type: integer - opens_sent: - description: |- - Number of Open messages sent. - type: integer - opens_received: - description: |- - Number of Open messages received. - type: integer - keepalives_sent: - description: |- - Number of Keepalive messages sent. - type: integer - keepalives_received: - description: |- - Number of Keepalive messages received. - type: integer - notifications_sent: - description: |- - Number of Notification messages sent. - type: integer - notifications_received: - description: |- - Number of Notification messages received. - type: integer - Bgpv6.Metrics.Request: - description: |- - The request to retrieve BGPv6 per peer metrics/statistics. - type: object - properties: - peer_names: - description: | - The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers. - - x-constraint: - - /components/schemas/Bgp.V6peer/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.V6peer/properties/name - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv6 peer cannot be excluded. - type: array - items: - type: string - enum: - - session_state - - session_flap_count - - routes_advertised - - routes_received - - route_withdraws_sent - - route_withdraws_received - - updates_sent - - updates_received - - opens_sent - - opens_received - - keepalives_sent - - keepalives_received - - notifications_sent - - notifications_received - Bgpv6.Metric: - description: |- - BGPv6 per peer statistics information. - type: object - properties: - name: - description: |- - The name of a configured BGPv6 peer. - type: string - session_state: - description: |- - Session state as up or down. Up refers to an Established state and Down refers to any other state. - type: string - enum: - - up - - down - session_flap_count: - description: |- - Number of times the session went from Up to Down state. - type: integer - routes_advertised: - description: |- - Number of routes advertised. - type: integer - routes_received: - description: |- - Number of routes received. - type: integer - route_withdraws_sent: - description: |- - Number of route withdraws sent. - type: integer - route_withdraws_received: - description: |- - Number of route withdraws received. - type: integer - updates_sent: - description: |- - Number of Update messages sent. - type: integer - updates_received: - description: |- - Number of Update messages received. - type: integer - opens_sent: - description: |- - Number of Open messages sent. - type: integer - opens_received: - description: |- - Number of Open messages received. - type: integer - keepalives_sent: - description: |- - Number of Keepalive messages sent. - type: integer - keepalives_received: - description: |- - Number of Keepalive messages received. - type: integer - notifications_sent: - description: |- - Number of Notification messages sent. - type: integer - notifications_received: - description: |- - Number of Notification messages received. - type: integer - Isis.Metrics.Request: - description: |- - The request to retrieve ISIS per Router metrics/statistics. - type: object - properties: - router_names: - description: | - The names of ISIS Routers to return results for. An empty list will return results for all ISIS router. - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the ISIS Router cannot be excluded. - type: array - items: - type: string - enum: - - l1_sessions_up - - l1_session_flap - - l1_database_size - - l1_broadcast_hellos_sent - - l1_broadcast_hellos_received - - l1_point_to_point_hellos_sent - - l1_point_to_point_hellos_received - - l1_psnp_sent - - l1_psnp_received - - l1_csnp_sent - - l1_csnp_received - - l1_lsp_sent - - l1_lsp_received - - l2_sessions_up - - l2_session_flap - - l2_database_size - - l2_broadcast_hellos_sent - - l2_broadcast_hellos_received - - l2_point_to_point_hellos_sent - - l2_point_to_point_hellos_received - - l2_psnp_sent - - l2_psnp_received - - l2_csnp_sent - - l2_csnp_received - - l2_lsp_sent - - l2_lsp_received - Isis.Metric: - description: |- - ISIS per router statistics information. - type: object - properties: - name: - description: |- - The name of a configured ISIS router. - type: string - l1_sessions_up: - description: |- - The number of Level 1 (L1) sessions that are fully up. - type: integer - l1_session_flap: - description: |- - The number of Level 1 Sessions Flap. - type: integer - l1_broadcast_hellos_sent: - description: |- - Number of Level 1 Hello messages sent. - type: integer - l1_broadcast_hellos_received: - description: |- - Number of Level 1 Hello messages received. - type: integer - l1_point_to_point_hellos_sent: - description: |- - Number of Level 1 Point-to-Point(P2P) Hello messages sent. - type: integer - l1_point_to_point_hellos_received: - description: |- - Number of Level 1 Point-to-Point(P2P) Hello messages received. - type: integer - l1_database_size: - description: |- - Number of Link State Updates (LSPs) in the Level 1 LSP Databases. - type: integer - l1_psnp_sent: - description: |- - Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. - type: integer - l1_psnp_received: - description: |- - Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. - type: integer - l1_csnp_sent: - description: |- - Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. - type: integer - l1_csnp_received: - description: |- - Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. - type: integer - l1_lsp_sent: - description: |- - Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. - type: integer - l1_lsp_received: - description: |- - Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. - type: integer - l2_sessions_up: - description: |- - The number of Level 2 (L2) sessions that are fully up. - type: integer - l2_session_flap: - description: |- - The number of Level 2 Sessions Flap. - type: integer - l2_broadcast_hellos_sent: - description: |- - Number of Level 2 Hello messages sent. - type: integer - l2_broadcast_hellos_received: - description: |- - Number of Level 2 Hello messages received. - type: integer - l2_point_to_point_hellos_sent: - description: |- - Number of Level 2 Point-to-Point(P2P) Hello messages sent. - type: integer - l2_point_to_point_hellos_received: - description: |- - Number of Level 2 Point-to-Point(P2P) Hello messages received. - type: integer - l2_database_size: - description: |- - Number of Link State Updates (LSPs) in the Level 2 LSP Databases. - type: integer - l2_psnp_sent: - description: |- - Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. - type: integer - l2_psnp_received: - description: |- - Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. - type: integer - l2_csnp_sent: - description: |- - Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. - type: integer - l2_csnp_received: - description: |- - Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. - type: integer - l2_lsp_sent: - description: |- - Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. - type: integer - l2_lsp_received: - description: |- - Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. - type: integer - Lag.Metrics.Request: - description: |- - The request to retrieve per LAG metrics/statistics. - type: object - properties: - lag_names: - description: | - The names of LAGs to return results for. An empty list will return results for all LAGs. - - x-constraint: - - /components/schemas/Lag/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Lag/properties/name - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the LAG cannot be excluded. - type: array - items: - type: string - enum: - - oper_states - - member_ports_up - - frames_tx - - frames_rx - - bytes_tx - - bytes_rx - - frames_tx_rate - - frames_rx_rate - - bytes_tx_rate - - bytes_rx_rate - Lag.Metric: - type: object - properties: - name: - description: | - The name of a configured LAG - - x-constraint: - - /components/schemas/Lag/properties/name - type: string - x-constraint: - - /components/schemas/Lag/properties/name - oper_status: - description: |- - The current operational state of the LAG. The state can be up or down. State 'up' indicates member_ports_up >= min_links. - type: string - enum: - - up - - down - member_ports_up: - description: |- - The number of LAG member ports up. - type: integer - frames_tx: - description: |- - The current total number of frames transmitted. - type: integer - format: int64 - minimum: 0 - frames_rx: - description: |- - The current total number of valid frames received. - type: integer - format: int64 - minimum: 0 - bytes_tx: - description: |- - The current total number of bytes transmitted. - type: integer - format: int64 - minimum: 0 - bytes_rx: - description: |- - The current total number of valid bytes received. - type: integer - format: int64 - minimum: 0 - frames_tx_rate: - description: |- - The current rate of frames transmitted. - type: number - frames_rx_rate: - description: |- - The current rate of valid frames received. - type: number - bytes_tx_rate: - description: |- - The current rate of bytes transmitted. - type: number - bytes_rx_rate: - description: |- - The current rate of bytes received. - type: number - LacpLagMember.Metrics.Request: - description: |- - The request to retrieve LACP per LAG member metrics/statistics. - type: object - properties: - lag_names: - description: | - The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs. - - x-constraint: - - /components/schemas/Lag/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Lag/properties/name - lag_member_port_names: - description: | - The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members. - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of LAG and LAG member can not be excluded. - type: array - items: - type: string - enum: - - lacp_in_pkts - - lacp_out_pkts - - lacp_rx_errors - - activity - - timeout - - synchronization - - aggregatable - - collecting - - distributing - - system_id - - oper_key - - partner_id - - partner_key - - port_num - - partner_port_num - LacpLagMember.Metric: - description: |- - LACP metrics (statistics) per LAG member. - type: object - properties: - lag_name: - description: |- - The name of a LAG (ports group) configured with LACP. - type: string - lag_member_port_name: - description: |- - The name of a LAG member (port) configured with LACP. - type: string - lacp_in_pkts: - description: |- - Number of LACPDUs received. - type: integer - format: int64 - minimum: 0 - lacp_out_pkts: - description: |- - Number of LACPDUs transmitted. - type: integer - format: int64 - minimum: 0 - lacp_rx_errors: - description: |- - Number of LACPDUs receive packet errors. - type: integer - format: int64 - minimum: 0 - activity: - description: |- - Indicates participant is active or passive. - type: string - enum: - - active - - passive - timeout: - description: |- - The timeout type (short or long) used by the participant. - type: string - enum: - - short - - long - synchronization: - description: |- - Indicates whether the participant is in-sync or out-of-sync. - type: string - enum: - - in_sync - - out_sync - aggregatable: - description: |- - A true value indicates that the participant will allow the link to be used as part of the aggregate. A false value indicates the link should be used as an individual link. - type: boolean - collecting: - description: |- - If true, the participant is collecting incoming frames on the link, otherwise false. - type: boolean - distributing: - description: |- - When true, the participant is distributing outgoing frames; when false, distribution is disabled. - type: boolean - system_id: - description: |- - MAC address that defines the local system ID for the aggregate interface. - type: string - format: mac - oper_key: - description: |- - Current operational value of the key for the aggregate interface. - type: integer - format: int32 - partner_id: - description: |- - MAC address representing the protocol partner's interface system ID. - type: string - format: mac - partner_key: - description: |- - Operational value of the protocol partner's key. - type: integer - format: int32 - port_num: - description: |- - Port number of the local (actor) aggregation member. - type: integer - format: int32 - partner_port_num: - description: |- - Port number of the partner (remote) port for this member port. - type: integer - format: int32 - States.Request: - description: |- - Request to traffic generator for states of choice - type: object - properties: - choice: - type: string - enum: - - ipv4_neighbors - - ipv6_neighbors - - bgp_prefixes - - isis_lsps - default: ipv4_neighbors - ipv4_neighbors: - $ref: '#/components/schemas/Neighborsv4.States.Request' - ipv6_neighbors: - $ref: '#/components/schemas/Neighborsv6.States.Request' - bgp_prefixes: - $ref: '#/components/schemas/BgpPrefix.State.Request' - isis_lsps: - $ref: '#/components/schemas/IsisLsps.State.Request' - States.Response: - description: |- - Response containing chosen traffic generator states - type: object - properties: - choice: - type: string - enum: - - ipv4_neighbors - - ipv6_neighbors - - bgp_prefixes - - isis_lsps - default: ipv4_neighbors - ipv4_neighbors: - type: array - items: - $ref: '#/components/schemas/Neighborsv4.State' - ipv6_neighbors: - type: array - items: - $ref: '#/components/schemas/Neighborsv6.State' - bgp_prefixes: - type: array - items: - $ref: '#/components/schemas/BgpPrefixes.State' - isis_lsps: - type: array - items: - $ref: '#/components/schemas/IsisLsps.State' - Neighborsv4.States.Request: - description: |- - The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). - type: object - properties: - ethernet_names: - description: | - The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces. - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - Neighborsv4.State: - description: |- - IPv4 Neighbor state (ARP cache entry). - type: object - required: - - ethernet_name - - ipv4_address - properties: - ethernet_name: - description: |- - The name of the Ethernet interface associated with the Neighbor state (ARP cache entry). - type: string - ipv4_address: - description: |- - The IPv4 address of the neighbor. - type: string - format: ipv4 - link_layer_address: - description: |- - The link-layer address (MAC) of the neighbor. - type: string - format: mac - Neighborsv6.States.Request: - description: |- - The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). - type: object - properties: - ethernet_names: - description: | - The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces. - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - Neighborsv6.State: - description: |- - IPv6 Neighbor state (NDISC cache entry). - type: object - required: - - ethernet_name - - ipv6_address - properties: - ethernet_name: - description: |- - The name of the Ethernet interface associated with the Neighbor state (NDISC cache entry). - type: string - ipv6_address: - description: |- - The IPv6 address of the neighbor. - type: string - format: ipv6 - link_layer_address: - description: |- - The link-layer address (MAC) of the neighbor. - type: string - format: mac - BgpPrefix.State.Request: - description: |- - The request to retrieve BGP peer prefix information. - type: object - properties: - bgp_peer_names: - description: | - The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers. - - x-constraint: - - /components/schemas/Bgp.v4Peer/properties/name - - /components/schemas/Bgp.v6Peer/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.v4Peer/properties/name - - /components/schemas/Bgp.v6Peer/properties/name - prefix_filters: - description: |- - Specify which prefixes to return. If the list is empty or missing then all prefixes will be returned. - type: array - items: - type: string - enum: - - ipv4_unicast - - ipv6_unicast - ipv4_unicast_filters: - description: |- - The IPv4 unicast results can be filtered by specifying additional prefix search criteria. If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will be returned. - type: array - items: - $ref: '#/components/schemas/BgpPrefix.Ipv4Unicast.Filter' - ipv6_unicast_filters: - description: |- - The IPv6 unicast results can be filtered by specifying additional prefix search criteria. If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will be returned. - type: array - items: - $ref: '#/components/schemas/BgpPrefix.Ipv6Unicast.Filter' - BgpPrefix.Ipv4Unicast.Filter: - type: object - properties: - addresses: - description: |- - The addresses to match. If the addresses property is missing or empty then all addresses will match. - type: array - items: - type: string - format: ipv4 - prefix_length: - description: |- - The prefix length to match. If the prefix length is missing then all prefix lengths will match. - type: integer - origin: - description: |- - The origin to match. If the origin is missing then all origins will match. - type: string - enum: - - igp - - egp - path_id: - description: |- - The path id to match. If the path id is missing then all path ids will match. - type: integer - BgpPrefix.Ipv6Unicast.Filter: - type: object - properties: - addresses: - description: |- - The addresses to match. If the addresses property is missing or empty then all addresses will match. - type: array - items: - type: string - format: ipv6 - prefix_length: - description: |- - The prefix length to match. If the prefix length is missing then all prefix lengths will match. - type: integer - origin: - description: |- - The origin to match. If the origin is missing then all origins will match. - type: string - enum: - - igp - - egp - path_id: - description: |- - The path id to match. If the path id is missing then all path ids will match. - type: integer - BgpPrefixes.State: - description: |- - BGP peer prefixes. - type: object - properties: - bgp_peer_name: - description: |- - The name of a BGP peer. - type: string - ipv4_unicast_prefixes: - type: array - items: - $ref: '#/components/schemas/BgpPrefixIpv4Unicast.State' - ipv6_unicast_prefixes: - type: array - items: - $ref: '#/components/schemas/BgpPrefixIpv6Unicast.State' - BgpPrefixIpv4Unicast.State: - description: |- - IPv4 unicast prefix. - BGP peer prefix. - type: object - properties: - ipv4_address: - description: |- - An IPv4 unicast address - type: string - prefix_length: - description: |- - The length of the prefix. - type: integer - origin: - description: |- - The origin of the prefix. - type: string - enum: - - igp - - egp - path_id: - description: |- - The path id. - type: integer - ipv4_next_hop: - description: |- - The IPv4 address of the egress interface. - type: string - format: ipv4 - ipv6_next_hop: - description: |- - The IPv6 address of the egress interface. - type: string - format: ipv6 - communities: - description: |- - Optional community attributes. - type: array - items: - $ref: '#/components/schemas/Result.BgpCommunity' - as_path: - $ref: '#/components/schemas/Result.BgpAsPath' - BgpPrefixIpv6Unicast.State: - description: |- - IPv6 unicast prefix. - BGP peer prefix. - type: object - properties: - ipv6_address: - description: |- - An IPv6 unicast address - type: string - prefix_length: - description: |- - The length of the prefix. - type: integer - origin: - description: |- - The origin of the prefix. - type: string - enum: - - igp - - egp - path_id: - description: |- - The path id. - type: integer - ipv4_next_hop: - description: |- - The IPv4 address of the egress interface. - type: string - format: ipv4 - ipv6_next_hop: - description: |- - The IPv6 address of the egress interface. - type: string - format: ipv6 - communities: - description: |- - Optional community attributes. - type: array - items: - $ref: '#/components/schemas/Result.BgpCommunity' - as_path: - $ref: '#/components/schemas/Result.BgpAsPath' - Result.BgpCommunity: - description: |- - BGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. - type: object - properties: - type: - description: |- - The type of community AS number. If community type is manual_as_number then as_number and as_custom will be available. - type: string - enum: - - manual_as_number - - no_export - - no_advertised - - no_export_subconfed - - llgr_stale - - no_llgr - as_number: - description: |- - First two octets of 32 bit community AS number. - type: integer - minimum: 0 - maximum: 65535 - as_custom: - description: "Last two octets of the community value. " - type: integer - minimum: 0 - maximum: 65535 - Result.BgpAsPath: - description: |- - This attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. - type: object - properties: - segments: - description: "AS Path segments present in the received AS Path attribute. " - type: array - items: - $ref: '#/components/schemas/Result.BgpAsPathSegment' - Result.BgpAsPathSegment: - description: |- - Configuration for a single BGP AS path segment - type: object - properties: - type: - description: |- - AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. - The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. - type: string - enum: - - as_seq - - as_set - - as_confed_seq - - as_confed_set - as_numbers: - description: |- - The AS numbers in this AS path segment. - type: array - items: - type: integer - format: int64 - minimum: 0 - maximum: 4294967295 - IsisLsps.State.Request: - description: |- - The request to retrieve ISIS Link State PDU (LSP) information learned by the router. - type: object - properties: - isis_router_names: - description: | - The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers. - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - IsisLsps.State: - description: |- - The result of ISIS LSP information that are retrieved. - type: object - properties: - isis_router_name: - description: |- - The name of the ISIS Router. - type: string - lsps: - description: |- - One or more LSPs that are learned by this ISIS router. - type: array - items: - $ref: '#/components/schemas/IsisLsp.State' - IsisLsp.State: - description: |- - ISIS LSP. - type: object - required: - - lsp_id - properties: - lsp_id: - description: |- - LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent Pseudonode ID and LSP number respectively. A pseudonode is a logical representation of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. Then the sequence number is incremented by 1. - type: string - pdu_type: - description: |- - Link State PDU type. - type: string - enum: - - level_1 - - level_2 - remaining_lifetime: - description: |- - Remaining lifetime in seconds before LSP expires. - type: integer - format: int64 - sequence_number: - description: |- - Sequence number of the LSP. - type: integer - format: int64 - pdu_length: - description: |- - Total length of the LSP. - type: integer - flags: - description: |- - LSP Type-Block flags. - $ref: '#/components/schemas/IsisLsp.Flags' - is_type: - description: "IS Type - bits 1 and 2 indicate the type of Intermediate System.\n\ - 1 - ( i.e. bit 1 set) Level 1 Intermediate system.\n2 - Unused value.\n\ - 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. " - type: integer - tlvs: - description: |- - It refers to Link State PDU State TLVs container. - $ref: '#/components/schemas/IsisLsp.Tlvs' - IsisLsp.Tlvs: - description: |- - This contains the list of TLVs present in one LSP. - type: object - properties: - hostname_tlvs: - description: |- - Array of Hostname TLVs ( type 137) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Hostname' - is_reachability_tlvs: - description: |- - Array of IS-Reachability TLVs (type 2) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.IsReachabilityTlv' - extended_is_reachability_tlvs: - description: |- - Array of Extended IS-Reachability TLVs (type 22) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.ExtendedIsReachabilityTlv' - ipv4_internal_reachability_tlvs: - description: |- - Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Ipv4InternalReachabilityTlv' - ipv4_external_reachability_tlvs: - description: |- - Array of IPv4 External Reachability TLVs (type 130) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Ipv4ExternalReachabilityTlv' - extended_ipv4_reachability_tlvs: - description: |- - Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.ExtendedIpv4ReachabilityTlv' - ipv6_reachability_tlvs: - description: |- - Array of IPv6 Reachability TLVs (type 236) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Ipv6ReachabilityTlv' - IsisLsp.Hostname: - description: |- - It contains Hostname for the TLV 137. - type: object - properties: - hostname: - description: |- - Hostname for an ISIS router. - type: string - IsisLsp.Flags: - description: |- - LSP Type flags. - type: object - properties: - partition_repair: - description: |- - When set, the originator supports partition repair. - type: boolean - attached_error: - description: |- - When set, the originator is attached to another area using the referred metric. - type: boolean - attached_expense: - description: |- - When set, the originator is attached to another - area using the referred metric. - type: boolean - attached_delay: - description: |- - Delay Metric - when set, the originator is attached to another - area using the referred metric. - type: boolean - attached_default: - description: |- - Default Metric - when set, the originator is attached to another - area using the referred metric. - type: boolean - overload: - description: |- - Overload bit - when set, the originator is overloaded, and must - be avoided in path calculation. - type: boolean - IsisLsp.IsReachabilityTlv: - description: |- - This container describes list of ISIS neighbors and attributes in IS-Reachability TLV (type 2). - type: object - properties: - neighbors: - description: |- - This container describes Intermediate System (IS) neighbors. - type: array - items: - $ref: '#/components/schemas/IsisLsp.neighbor' - IsisLsp.ExtendedIsReachabilityTlv: - description: |- - This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type 22). - type: object - properties: - neighbors: - description: |- - This container describes IS neighbors. - type: array - items: - $ref: '#/components/schemas/IsisLsp.neighbor' - IsisLsp.neighbor: - description: |- - This contains IS neighbors. - type: object - properties: - system_id: - description: |- - The System ID for this emulated ISIS router, e.g. "640100010000". - type: string - format: hex - IsisLsp.Ipv4InternalReachabilityTlv: - description: |- - This container defines list of IPv4 internal reachability information in one IPv4 internal reachability TLV. - This is advertised when the origin-type is set 'internal' in route range configurations. - type: object - properties: - prefixes: - description: |- - Describes list of IPv4 prefixes in this TLV. - type: array - items: - $ref: '#/components/schemas/IsisLsp.V4Prefix' - IsisLsp.Ipv4ExternalReachabilityTlv: - description: |- - This container defines list of IPv4 external reachability information in one IPv4 external reachability TLV. - This is advertised when the origin-type is set 'external' in route range configurations. - type: object - properties: - prefixes: - description: |- - Describes list of IPv4 prefixes in this TLV.. - type: array - items: - $ref: '#/components/schemas/IsisLsp.V4Prefix' - IsisLsp.V4Prefix: - description: |- - This group defines attributes of an IPv4 standard prefix. - type: object - properties: - ipv4_address: - description: |- - An IPv4 unicast prefix reachable via the originator of this LSP. - type: string - prefix_length: - description: |- - The length of the IPv4 prefix. - type: integer - redistribution_type: - description: "Up (0)-used when a prefix is initially advertised within the\ - \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ - \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ - \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ - \ (L2) down to a lower level (L1). " - type: string - enum: - - up - - down - default_metric: - description: |- - ISIS default metric value. - type: integer - origin_type: - description: "The origin of the advertised route-internal or external to\ - \ the ISIS area. Options include the following: \n Internal-for intra-area\ - \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ - \ within L1, through Level 1 LSPs." - type: string - enum: - - internal - - external - IsisLsp.ExtendedIpv4ReachabilityTlv: - description: |- - This container defines list of IPv4 extended reachability information in one Extended IPv4 External Reachability TLV. - It is advertised when the 'wide metric' is enabled. - type: object - properties: - prefixes: - description: |- - IPv4 prefix contained within extended reachability TLVs. - type: array - items: - $ref: '#/components/schemas/IsisLsp.ExtendedV4Prefix' - IsisLsp.ExtendedV4Prefix: - description: |- - This group defines attributes of an IPv4 standard prefix. - type: object - properties: - ipv4_address: - description: |- - An IPv4 unicast prefix reachable via the originator of this LSP. - type: string - format: ipv4 - prefix_length: - description: |- - The length of the IPv4 prefix. - type: integer - metric: - description: |- - ISIS wide metric. - type: integer - redistribution_type: - description: "Up (0)-used when a prefix is initially advertised within the\ - \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ - \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ - \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ - \ (L2) down to a lower level (L1). " - type: string - enum: - - up - - down - prefix_attributes: - $ref: '#/components/schemas/IsisLsp.PrefixAttributes' - IsisLsp.Ipv6ReachabilityTlv: - description: |- - It defines list of IPv6 extended reachability information in one IPv6 Reachability TLV. - type: object - properties: - prefixes: - description: |- - IPv6 prefix contained within reachability TLVs. - type: array - items: - $ref: '#/components/schemas/IsisLsp.V6Prefix' - IsisLsp.V6Prefix: - description: |- - It defines attributes of an IPv6 standard prefix. - type: object - properties: - ipv6_address: - description: |- - An IPv6 unicast prefix reachable via the originator of this LSP. - type: string - format: ipv6 - prefix_length: - description: |- - The length of the IPv6 prefix. - type: integer - metric: - description: |- - ISIS wide metric. - type: integer - redistribution_type: - description: "Up (0)-used when a prefix is initially advertised within the\ - \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ - \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ - \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ - \ (L2) down to a lower level (L1). " - type: string - enum: - - up - - down - origin_type: - description: "The origin of the advertised route-internal or external to\ - \ the ISIS area. Options include the following: \n Internal-for intra-area\ - \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ - \ within L1, through Level 1 LSPs." - type: string - enum: - - internal - - external - prefix_attributes: - $ref: '#/components/schemas/IsisLsp.PrefixAttributes' - IsisLsp.PrefixAttributes: - description: |- - This contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - type: object - properties: - x_flag: - description: |- - External Prefix Flag (Bit 0) - type: boolean - r_flag: - description: |- - Re-advertisement Flag (Bit 1) - type: boolean - n_flag: - description: |- - Node Flag (Bit 2) - type: boolean - Capture.Request: - description: |- - The capture result request to the traffic generator. Stops the port capture on the port_name and returns the capture. - type: object - required: - - port_name - properties: - port_name: - description: | - The name of a port a capture is started on. - - x-constraint: - - /components/schemas/Port/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name - Pattern.Flow.Ethernet.Dst.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 00:00:00:00:00:00 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.Ethernet.Dst: - description: |- - Destination MAC address - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: string - default: 00:00:00:00:00:00 - format: mac - values: - type: array - items: - type: string - default: - - 00:00:00:00:00:00 - format: mac - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: string - default: 00:00:00:00:00:00 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' - Pattern.Flow.Ethernet.Src.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 00:00:00:00:00:00 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.Ethernet.Src: - description: |- - Source MAC address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 00:00:00:00:00:00 - format: mac - values: - type: array - items: - type: string - default: - - 00:00:00:00:00:00 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' - Pattern.Flow.Ethernet.EtherType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 65535 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - ipv4: 2048 - ipv6: 34525 - arp: 2054 - vlan_802_1_q: 33024 - reserved: 65535 - Pattern.Flow.Ethernet.EtherType: - description: |- - Ethernet type - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 65535 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 65535 - minimum: 0 - maximum: 65535 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 65535 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' - x-constants: - ipv4: 2048 - ipv6: 34525 - arp: 2054 - vlan_802_1_q: 33024 - reserved: 65535 - Pattern.Flow.Ethernet.PfcQueue.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Ethernet.PfcQueue: - description: |- - Priority flow control queue - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' - Pattern.Flow.Vlan.Priority.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Vlan.Priority: - description: |- - Priority code point - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' - Pattern.Flow.Vlan.Cfi.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Vlan.Cfi: - description: |- - Canonical format indicator or drop elegible indicator - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' - Pattern.Flow.Vlan.Id.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 4095 - step: - type: integer - default: 1 - minimum: 0 - maximum: 4095 - count: - type: integer - default: 1 - Pattern.Flow.Vlan.Id: - description: |- - Vlan identifier - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 4095 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 4095 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' - Pattern.Flow.Vlan.Tpid.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 33024 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - x8100: 33024 - x88A8: 34984 - x9100: 37120 - x9200: 37376 - x9300: 37632 - Pattern.Flow.Vlan.Tpid: - description: |- - Protocol identifier - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 33024 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 33024 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' - x-constants: - x8100: 33024 - x88A8: 34984 - x9100: 37120 - x9200: 37376 - x9300: 37632 - Pattern.Flow.Vxlan.Flags.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 8 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Vxlan.Flags: - description: |- - Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid vxlan network id (VNI). The other 7 bits (designated "R") are reserved fields and MUST be set to zero on transmission and ignored on receipt. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 8 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 8 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' - Pattern.Flow.Vxlan.Reserved0.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - step: - type: integer - default: 1 - minimum: 0 - maximum: 16777215 - count: - type: integer - default: 1 - Pattern.Flow.Vxlan.Reserved0: - description: |- - Reserved field - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 16777215 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' - Pattern.Flow.Vxlan.Vni.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - step: - type: integer - default: 1 - minimum: 0 - maximum: 16777215 - count: - type: integer - default: 1 - Pattern.Flow.Vxlan.Vni: - description: |- - VXLAN network id - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 16777215 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' - Pattern.Flow.Vxlan.Reserved1.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Vxlan.Reserved1: - description: |- - Reserved field - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' - Pattern.Flow.Ipv4.Version.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 4 - minimum: 0 - maximum: 15 - step: - type: integer - default: 1 - minimum: 0 - maximum: 15 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Version: - description: |- - Version - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 4 - minimum: 0 - maximum: 15 - values: - type: array - items: - type: integer - default: - - 4 - minimum: 0 - maximum: 15 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' - Pattern.Flow.Ipv4.HeaderLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 5 - minimum: 0 - maximum: 15 - step: - type: integer - default: 1 - minimum: 0 - maximum: 15 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.HeaderLength: - description: |- - Header length - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 5 - minimum: 0 - maximum: 15 - values: - type: array - items: - type: integer - default: - - 5 - minimum: 0 - maximum: 15 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 5 - minimum: 0 - maximum: 15 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' - Pattern.Flow.Ipv4.TotalLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 46 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.TotalLength: - description: |- - Total length - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 46 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 46 - minimum: 0 - maximum: 65535 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 46 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' - Pattern.Flow.Ipv4.Identification.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Identification: - description: |- - Identification - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' - Pattern.Flow.Ipv4.Reserved.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Reserved: - description: |- - Reserved flag. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' - Pattern.Flow.Ipv4.DontFragment.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.DontFragment: - description: |- - Dont fragment flag If the dont_fragment flag is set and fragmentation is required to route the packet then the packet is dropped. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' - Pattern.Flow.Ipv4.MoreFragments.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.MoreFragments: - description: |- - More fragments flag - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' - Pattern.Flow.Ipv4.FragmentOffset.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 31 - step: - type: integer - default: 1 - minimum: 0 - maximum: 31 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.FragmentOffset: - description: |- - Fragment offset - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 31 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 31 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' - Pattern.Flow.Ipv4.TimeToLive.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 64 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.TimeToLive: - description: |- - Time to live - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 64 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 64 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' - Pattern.Flow.Ipv4.Protocol.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 61 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Protocol: - description: |- - Protocol, default is 61 any host internal protocol - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 61 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 61 - minimum: 0 - maximum: 255 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 61 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' - Pattern.Flow.Ipv4.HeaderChecksum: - description: |- - Header checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Ipv4.Src.Counter: - description: |- - ipv4 counter pattern - type: object - properties: - start: - type: string - default: 0.0.0.0 - format: ipv4 - step: - type: string - default: 0.0.0.1 - format: ipv4 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Src: - description: |- - Source address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 0.0.0.0 - format: ipv4 - values: - type: array - items: - type: string - default: - - 0.0.0.0 - format: ipv4 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' - Pattern.Flow.Ipv4.Dst.Counter: - description: |- - ipv4 counter pattern - type: object - properties: - start: - type: string - default: 0.0.0.0 - format: ipv4 - step: - type: string - default: 0.0.0.1 - format: ipv4 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Dst: - description: |- - Destination address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 0.0.0.0 - format: ipv4 - values: - type: array - items: - type: string - default: - - 0.0.0.0 - format: ipv4 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' - Pattern.Flow.Ipv4.Priority.Raw.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Priority.Raw: - description: |- - Raw priority - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' - Pattern.Flow.Ipv4.Dscp.Phb.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 63 - step: - type: integer - default: 1 - minimum: 0 - maximum: 63 - count: - type: integer - default: 1 - x-constants: - default: 0 - cs1: 8 - cs2: 16 - cs3: 24 - cs4: 32 - cs5: 40 - cs6: 48 - cs7: 56 - af11: 10 - af12: 12 - af13: 14 - af21: 18 - af22: 20 - af23: 22 - af31: 26 - af32: 28 - af33: 30 - af41: 34 - af42: 36 - af43: 38 - ef46: 46 - Pattern.Flow.Ipv4.Dscp.Phb: - description: |- - Per hop behavior - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 63 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 63 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' - x-constants: - default: 0 - cs1: 8 - cs2: 16 - cs3: 24 - cs4: 32 - cs5: 40 - cs6: 48 - cs7: 56 - af11: 10 - af12: 12 - af13: 14 - af21: 18 - af22: 20 - af23: 22 - af31: 26 - af32: 28 - af33: 30 - af41: 34 - af42: 36 - af43: 38 - ef46: 46 - Pattern.Flow.Ipv4.Dscp.Ecn.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 3 - step: - type: integer - default: 1 - minimum: 0 - maximum: 3 - count: - type: integer - default: 1 - x-constants: - non_capable: 0 - capable_transport_0: 1 - capable_transport_1: 2 - congestion_encountered: 3 - Pattern.Flow.Ipv4.Dscp.Ecn: - description: |- - Explicit congestion notification - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 3 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 3 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' - x-constants: - non_capable: 0 - capable_transport_0: 1 - capable_transport_1: 2 - congestion_encountered: 3 - Pattern.Flow.Ipv4.Tos.Precedence.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - x-constants: - routine: 0 - priority: 1 - immediate: 2 - flash: 3 - flash_override: 4 - critic_ecp: 5 - internetwork_control: 6 - network_control: 7 - Pattern.Flow.Ipv4.Tos.Precedence: - description: |- - Precedence - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' - x-constants: - routine: 0 - priority: 1 - immediate: 2 - flash: 3 - flash_override: 4 - critic_ecp: 5 - internetwork_control: 6 - network_control: 7 - Pattern.Flow.Ipv4.Tos.Delay.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Delay: - description: |- - Delay - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Throughput.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Throughput: - description: |- - Throughput - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Reliability.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Reliability: - description: |- - Reliability - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Monetary.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Monetary: - description: |- - Monetary - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Unused.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Ipv4.Tos.Unused: - description: |- - Unused - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' - Pattern.Flow.Ipv6.Version.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 6 - minimum: 0 - maximum: 15 - step: - type: integer - default: 1 - minimum: 0 - maximum: 15 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.Version: - description: |- - Version number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 6 - minimum: 0 - maximum: 15 - values: - type: array - items: - type: integer - default: - - 6 - minimum: 0 - maximum: 15 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' - Pattern.Flow.Ipv6.TrafficClass.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.TrafficClass: - description: |- - Traffic class - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' - Pattern.Flow.Ipv6.FlowLabel.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1048575 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1048575 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.FlowLabel: - description: |- - Flow label - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1048575 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1048575 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' - Pattern.Flow.Ipv6.PayloadLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.PayloadLength: - description: |- - Payload length - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' - Pattern.Flow.Ipv6.NextHeader.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 59 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - x-constants: - hopopt: 0 - icmp: 1 - igmp: 2 - ggp: 3 - ip_in_ip: 4 - st: 5 - tcp: 6 - cpt: 7 - egp: 8 - igp: 9 - no_next_header: 59 - Pattern.Flow.Ipv6.NextHeader: - description: |- - Next header - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 59 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 59 - minimum: 0 - maximum: 255 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 59 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' - x-constants: - hopopt: 0 - icmp: 1 - igmp: 2 - ggp: 3 - ip_in_ip: 4 - st: 5 - tcp: 6 - cpt: 7 - egp: 8 - igp: 9 - no_next_header: 59 - Pattern.Flow.Ipv6.HopLimit.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 64 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.HopLimit: - description: |- - Hop limit - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 64 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 64 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' - Pattern.Flow.Ipv6.Src.Counter: - description: |- - ipv6 counter pattern - type: object - properties: - start: - type: string - default: ::0 - format: ipv6 - step: - type: string - default: ::1 - format: ipv6 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.Src: - description: |- - Source address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: ::0 - format: ipv6 - values: - type: array - items: - type: string - default: - - ::0 - format: ipv6 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' - Pattern.Flow.Ipv6.Dst.Counter: - description: |- - ipv6 counter pattern - type: object - properties: - start: - type: string - default: ::0 - format: ipv6 - step: - type: string - default: ::1 - format: ipv6 - count: - type: integer - default: 1 - Pattern.Flow.Ipv6.Dst: - description: |- - Destination address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: ::0 - format: ipv6 - values: - type: array - items: - type: string - default: - - ::0 - format: ipv6 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' - Pattern.Flow.PfcPause.Dst.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 01:80:c2:00:00:01 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.Dst: - description: |- - Destination MAC address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 01:80:c2:00:00:01 - format: mac - values: - type: array - items: - type: string - default: - - 01:80:c2:00:00:01 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' - Pattern.Flow.PfcPause.Src.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 00:00:00:00:00:00 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.Src: - description: |- - Source MAC address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 00:00:00:00:00:00 - format: mac - values: - type: array - items: - type: string - default: - - 00:00:00:00:00:00 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' - Pattern.Flow.PfcPause.EtherType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 34824 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - x8808: 34824 - Pattern.Flow.PfcPause.EtherType: - description: |- - Ethernet type - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 34824 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 34824 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' - x-constants: - x8808: 34824 - Pattern.Flow.PfcPause.ControlOpCode.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 257 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.ControlOpCode: - description: |- - Control operation code - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 257 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 257 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' - Pattern.Flow.PfcPause.ClassEnableVector.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.ClassEnableVector: - description: |- - Destination - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' - Pattern.Flow.PfcPause.PauseClass0.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass0: - description: |- - Pause class 0 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' - Pattern.Flow.PfcPause.PauseClass1.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass1: - description: |- - Pause class 1 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' - Pattern.Flow.PfcPause.PauseClass2.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass2: - description: |- - Pause class 2 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' - Pattern.Flow.PfcPause.PauseClass3.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass3: - description: |- - Pause class 3 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' - Pattern.Flow.PfcPause.PauseClass4.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass4: - description: |- - Pause class 4 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' - Pattern.Flow.PfcPause.PauseClass5.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass5: - description: |- - Pause class 5 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' - Pattern.Flow.PfcPause.PauseClass6.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass6: - description: |- - Pause class 6 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' - Pattern.Flow.PfcPause.PauseClass7.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.PfcPause.PauseClass7: - description: |- - Pause class 7 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' - Pattern.Flow.EthernetPause.Dst.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 01:80:c2:00:00:01 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.EthernetPause.Dst: - description: |- - Destination MAC address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 01:80:c2:00:00:01 - format: mac - values: - type: array - items: - type: string - default: - - 01:80:c2:00:00:01 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' - Pattern.Flow.EthernetPause.Src.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 00:00:00:00:00:00 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.EthernetPause.Src: - description: |- - Source MAC address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 00:00:00:00:00:00 - format: mac - values: - type: array - items: - type: string - default: - - 00:00:00:00:00:00 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' - Pattern.Flow.EthernetPause.EtherType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 34824 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - flow_control: 34824 - Pattern.Flow.EthernetPause.EtherType: - description: |- - Ethernet type - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 34824 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 34824 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' - x-constants: - flow_control: 34824 - Pattern.Flow.EthernetPause.ControlOpCode.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.EthernetPause.ControlOpCode: - description: |- - Control operation code - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' - Pattern.Flow.EthernetPause.Time.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.EthernetPause.Time: - description: |- - Time - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' - Pattern.Flow.Tcp.SrcPort.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.SrcPort: - description: |- - Source port - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' - Pattern.Flow.Tcp.DstPort.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.DstPort: - description: |- - Destination port - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' - Pattern.Flow.Tcp.SeqNum.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - step: - type: integer - default: 1 - minimum: 0 - maximum: 4294967295 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.SeqNum: - description: |- - Sequence number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 4294967295 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' - Pattern.Flow.Tcp.AckNum.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - step: - type: integer - default: 1 - minimum: 0 - maximum: 4294967295 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.AckNum: - description: |- - Acknowledgement number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 4294967295 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' - Pattern.Flow.Tcp.DataOffset.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 15 - step: - type: integer - default: 1 - minimum: 0 - maximum: 15 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.DataOffset: - description: |- - The number of 32 bit words in the TCP header. This indicates where the data begins. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 15 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 15 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' - Pattern.Flow.Tcp.EcnNs.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.EcnNs: - description: |- - Explicit congestion notification, concealment protection. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' - Pattern.Flow.Tcp.EcnCwr.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.EcnCwr: - description: |- - Explicit congestion notification, congestion window reduced. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' - Pattern.Flow.Tcp.EcnEcho.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.EcnEcho: - description: |- - Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' - Pattern.Flow.Tcp.CtlUrg.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.CtlUrg: - description: |- - A value of 1 indicates that the urgent pointer field is significant. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' - Pattern.Flow.Tcp.CtlAck.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.CtlAck: - description: |- - A value of 1 indicates that the ackknowledgment field is significant. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' - Pattern.Flow.Tcp.CtlPsh.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.CtlPsh: - description: "Asks to push the buffered data to the receiving application. " - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' - Pattern.Flow.Tcp.CtlRst.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.CtlRst: - description: "Reset the connection. " - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' - Pattern.Flow.Tcp.CtlSyn.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.CtlSyn: - description: "Synchronize sequenece numbers. " - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' - Pattern.Flow.Tcp.CtlFin.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.CtlFin: - description: "Last packet from the sender. " - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' - Pattern.Flow.Tcp.Window.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Tcp.Window: - description: |- - Tcp connection window. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' - Pattern.Flow.Udp.SrcPort.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Udp.SrcPort: - description: |- - Source port - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' - Pattern.Flow.Udp.DstPort.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Udp.DstPort: - description: |- - Destination port - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' - Pattern.Flow.Udp.Length.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Udp.Length: - description: |- - Length - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' - Pattern.Flow.Udp.Checksum: - description: |- - UDP checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Gre.ChecksumPresent.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gre.ChecksumPresent: - description: |- - Checksum present bit - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' - Pattern.Flow.Gre.Reserved0.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 4095 - step: - type: integer - default: 1 - minimum: 0 - maximum: 4095 - count: - type: integer - default: 1 - Pattern.Flow.Gre.Reserved0: - description: |- - Reserved bits - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 4095 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 4095 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' - Pattern.Flow.Gre.Version.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Gre.Version: - description: |- - GRE version number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' - Pattern.Flow.Gre.Protocol.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 2048 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Gre.Protocol: - description: |- - Protocol type of encapsulated payload - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 2048 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 2048 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Gre.Checksum: - description: |- - Optional checksum of GRE header and payload. Only present if the checksum_present bit is set. - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Gre.Reserved1.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Gre.Reserved1: - description: |- - Optional reserved field. Only present if the checksum_present bit is set. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' - Pattern.Flow.Gtpv1.Version.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.Version: - description: |- - GTPv1 version - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' - Pattern.Flow.Gtpv1.ProtocolType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.ProtocolType: - description: |- - Protocol type, GTP is 1, GTP' is 0 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' - Pattern.Flow.Gtpv1.Reserved.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.Reserved: - description: |- - Reserved field - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' - Pattern.Flow.Gtpv1.EFlag.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.EFlag: - description: |- - Extension header field present - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' - Pattern.Flow.Gtpv1.SFlag.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.SFlag: - description: |- - Sequence number field present - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' - Pattern.Flow.Gtpv1.PnFlag.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.PnFlag: - description: |- - N-PDU field present - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' - Pattern.Flow.Gtpv1.MessageType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.MessageType: - description: |- - The type of GTP message Different types of messages are defined in 3GPP TS 29.060 section 7.1 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' - Pattern.Flow.Gtpv1.MessageLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.MessageLength: - description: |- - The length of the payload (the bytes following the mandatory 8-byte GTP header) in bytes that includes any optional fields - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' - Pattern.Flow.Gtpv1.Teid.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - step: - type: integer - default: 1 - minimum: 0 - maximum: 4294967295 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.Teid: - description: |- - Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 4294967295 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' - Pattern.Flow.Gtpv1.SquenceNumber.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.SquenceNumber: - description: |- - Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the s_flag bit is on. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' - Pattern.Flow.Gtpv1.NPduNumber.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.NPduNumber: - description: |- - N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the pn_flag bit is on. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' - Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv1.NextExtensionHeaderType: - description: |- - Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the e_flag bit is on. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' - Pattern.Flow.GtpExtension.ExtensionLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.GtpExtension.ExtensionLength: - description: |- - This field states the length of this extension header, including the length, the contents, and the next extension header field, in 4-octet units, so the length of the extension must always be a multiple of 4. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' - Pattern.Flow.GtpExtension.Contents.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 281474976710655 - step: - type: integer - default: 1 - minimum: 0 - maximum: 281474976710655 - count: - type: integer - default: 1 - Pattern.Flow.GtpExtension.Contents: - description: |- - The extension header contents - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 281474976710655 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 281474976710655 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' - Pattern.Flow.GtpExtension.NextExtensionHeader.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.GtpExtension.NextExtensionHeader: - description: |- - It states the type of the next extension, or 0 if no next extension exists. This permits chaining several next extension headers. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' - Pattern.Flow.Gtpv2.Version.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 2 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.Version: - description: |- - Version number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 2 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 2 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' - Pattern.Flow.Gtpv2.PiggybackingFlag.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.PiggybackingFlag: - description: |- - If piggybacking_flag is set to 1 then another GTP-C message with its own header shall be present at the end of the current message - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' - Pattern.Flow.Gtpv2.TeidFlag.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.TeidFlag: - description: |- - If teid_flag is set to 1 then the TEID field will be present between the message length and the sequence number. All messages except Echo and Echo reply require TEID to be present - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' - Pattern.Flow.Gtpv2.Spare1.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.Spare1: - description: |- - A 3-bit reserved field (must be 0). - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' - Pattern.Flow.Gtpv2.MessageType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.MessageType: - description: |- - An 8-bit field that indicates the type of GTP message. Different types of messages are defined in 3GPP TS 29.060 section 7.1 - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' - Pattern.Flow.Gtpv2.MessageLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.MessageLength: - description: |- - A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' - Pattern.Flow.Gtpv2.Teid.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - step: - type: integer - default: 1 - minimum: 0 - maximum: 4294967295 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.Teid: - description: |- - Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different connections in the same GTP tunnel. Is present only if the teid_flag is set. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 4294967295 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 4294967295 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' - Pattern.Flow.Gtpv2.SequenceNumber.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - step: - type: integer - default: 1 - minimum: 0 - maximum: 16777215 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.SequenceNumber: - description: |- - The sequence number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 16777215 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 16777215 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' - Pattern.Flow.Gtpv2.Spare2.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Gtpv2.Spare2: - description: |- - Reserved field - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' - Pattern.Flow.Arp.HardwareType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - ethernet: 1 - Pattern.Flow.Arp.HardwareType: - description: |- - Network link protocol type - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' - x-constants: - ethernet: 1 - Pattern.Flow.Arp.ProtocolType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 2048 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Arp.ProtocolType: - description: |- - The internetwork protocol for which the ARP request is intended - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 2048 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 2048 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Arp.HardwareLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 6 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Arp.HardwareLength: - description: |- - Length (in octets) of a hardware address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 6 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 6 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' - Pattern.Flow.Arp.ProtocolLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 4 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Arp.ProtocolLength: - description: |- - Length (in octets) of internetwork addresses - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 4 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 4 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' - Pattern.Flow.Arp.Operation.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - x-constants: - request: 1 - reply: 2 - Pattern.Flow.Arp.Operation: - description: |- - The operation that the sender is performing - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' - x-constants: - request: 1 - reply: 2 - Pattern.Flow.Arp.SenderHardwareAddr.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 00:00:00:00:00:00 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.Arp.SenderHardwareAddr: - description: |- - Media address of the sender - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 00:00:00:00:00:00 - format: mac - values: - type: array - items: - type: string - default: - - 00:00:00:00:00:00 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' - Pattern.Flow.Arp.SenderProtocolAddr.Counter: - description: |- - ipv4 counter pattern - type: object - properties: - start: - type: string - default: 0.0.0.0 - format: ipv4 - step: - type: string - default: 0.0.0.1 - format: ipv4 - count: - type: integer - default: 1 - Pattern.Flow.Arp.SenderProtocolAddr: - description: |- - Internetwork address of the sender - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 0.0.0.0 - format: ipv4 - values: - type: array - items: - type: string - default: - - 0.0.0.0 - format: ipv4 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' - Pattern.Flow.Arp.TargetHardwareAddr.Counter: - description: |- - mac counter pattern - type: object - properties: - start: - type: string - default: 00:00:00:00:00:00 - format: mac - step: - type: string - default: 00:00:00:00:00:01 - format: mac - count: - type: integer - default: 1 - Pattern.Flow.Arp.TargetHardwareAddr: - description: |- - Media address of the target - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 00:00:00:00:00:00 - format: mac - values: - type: array - items: - type: string - default: - - 00:00:00:00:00:00 - format: mac - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' - Pattern.Flow.Arp.TargetProtocolAddr.Counter: - description: |- - ipv4 counter pattern - type: object - properties: - start: - type: string - default: 0.0.0.0 - format: ipv4 - step: - type: string - default: 0.0.0.1 - format: ipv4 - count: - type: integer - default: 1 - Pattern.Flow.Arp.TargetProtocolAddr: - description: |- - Internetwork address of the target - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 0.0.0.0 - format: ipv4 - values: - type: array - items: - type: string - default: - - 0.0.0.0 - format: ipv4 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' - Pattern.Flow.Icmp.Echo.Type.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 8 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - x-constants: - reply: 0 - request: 8 - Pattern.Flow.Icmp.Echo.Type: - description: |- - The type of ICMP echo packet - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 8 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 8 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' - x-constants: - reply: 0 - request: 8 - Pattern.Flow.Icmp.Echo.Code.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Icmp.Echo.Code: - description: |- - The ICMP subtype. The default code for ICMP echo request and reply is 0. - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' - Pattern.Flow.Icmp.Echo.Checksum: - description: |- - ICMP checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Icmp.Echo.Identifier.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Icmp.Echo.Identifier: - description: |- - ICMP identifier - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' - Pattern.Flow.Icmp.Echo.SequenceNumber.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Icmp.Echo.SequenceNumber: - description: |- - ICMP sequence number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' - Pattern.Flow.Icmp.Common.Checksum: - description: |- - ICMP checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Icmp.NextFields.Identifier.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Icmp.NextFields.Identifier: - description: |- - ICMP identifier - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' - Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Icmp.NextFields.SequenceNumber: - description: |- - ICMP sequence number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' - Pattern.Flow.Icmpv6.Echo.Type.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 128 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - x-constants: - request: 128 - reply: 129 - Pattern.Flow.Icmpv6.Echo.Type: - description: |- - ICMPv6 echo type - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 128 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 128 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' - x-constants: - request: 128 - reply: 129 - Pattern.Flow.Icmpv6.Echo.Code.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Icmpv6.Echo.Code: - description: |- - ICMPv6 echo sub type - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' - Pattern.Flow.Icmpv6.Echo.Identifier.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Icmpv6.Echo.Identifier: - description: |- - ICMPv6 echo identifier - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' - Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Icmpv6.Echo.SequenceNumber: - description: |- - ICMPv6 echo sequence number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' - Pattern.Flow.Icmpv6.Echo.Checksum: - description: |- - ICMPv6 checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Icmpv6.Common.Checksum: - description: |- - ICMPv6 checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Ppp.Address.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 255 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - x-constants: - standard_address: 255 - Pattern.Flow.Ppp.Address: - description: |- - PPP address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 255 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 255 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' - x-constants: - standard_address: 255 - Pattern.Flow.Ppp.Control.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 3 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - x-constants: - unnumbered_data: 3 - Pattern.Flow.Ppp.Control: - description: |- - PPP control - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 3 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 3 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' - x-constants: - unnumbered_data: 3 - Pattern.Flow.Ppp.ProtocolType.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 33 - minimum: 0 - maximum: 65535 - step: - type: integer - default: 1 - minimum: 0 - maximum: 65535 - count: - type: integer - default: 1 - Pattern.Flow.Ppp.ProtocolType: - description: |- - PPP protocol type - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 33 - minimum: 0 - maximum: 65535 - values: - type: array - items: - type: integer - default: - - 33 - minimum: 0 - maximum: 65535 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 33 - minimum: 0 - maximum: 65535 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' - Pattern.Flow.Igmpv1.Version.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 15 - step: - type: integer - default: 1 - minimum: 0 - maximum: 15 - count: - type: integer - default: 1 - Pattern.Flow.Igmpv1.Version: - description: |- - Version number - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 15 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 15 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' - Pattern.Flow.Igmpv1.Type.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 15 - step: - type: integer - default: 1 - minimum: 0 - maximum: 15 - count: - type: integer - default: 1 - x-constants: - query: 1 - report: 2 - Pattern.Flow.Igmpv1.Type: - description: |- - Type of message - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 1 - minimum: 0 - maximum: 15 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 15 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' - x-constants: - query: 1 - report: 2 - Pattern.Flow.Igmpv1.Unused.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Igmpv1.Unused: - description: |- - Unused - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' - Pattern.Flow.Igmpv1.Checksum: - description: |- - Checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - enum: - - generated - - custom - default: generated - generated: - description: |- - A system generated checksum value - type: string - enum: - - good - - bad - default: good - custom: - description: |- - A custom checksum value - type: integer - minimum: 0 - maximum: 65535 - Pattern.Flow.Igmpv1.GroupAddress.Counter: - description: |- - ipv4 counter pattern - type: object - properties: - start: - type: string - default: 0.0.0.0 - format: ipv4 - step: - type: string - default: 0.0.0.1 - format: ipv4 - count: - type: integer - default: 1 - Pattern.Flow.Igmpv1.GroupAddress: - description: |- - Group address - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: string - default: 0.0.0.0 - format: ipv4 - values: - type: array - items: - type: string - default: - - 0.0.0.0 - format: ipv4 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' - Pattern.Flow.Mpls.Label.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 16 - minimum: 0 - maximum: 1048575 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1048575 - count: - type: integer - default: 1 - Pattern.Flow.Mpls.Label: - description: |- - Label of routers - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 16 - minimum: 0 - maximum: 1048575 - values: - type: array - items: - type: integer - default: - - 16 - minimum: 0 - maximum: 1048575 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 16 - minimum: 0 - maximum: 1048575 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' - Pattern.Flow.Mpls.TrafficClass.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 0 - minimum: 0 - maximum: 7 - step: - type: integer - default: 1 - minimum: 0 - maximum: 7 - count: - type: integer - default: 1 - Pattern.Flow.Mpls.TrafficClass: - description: |- - Traffic class - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 0 - minimum: 0 - maximum: 7 - values: - type: array - items: - type: integer - default: - - 0 - minimum: 0 - maximum: 7 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' - Pattern.Flow.Mpls.BottomOfStack.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 1 - minimum: 0 - maximum: 1 - step: - type: integer - default: 1 - minimum: 0 - maximum: 1 - count: - type: integer - default: 1 - Pattern.Flow.Mpls.BottomOfStack: - description: |- - Bottom of stack - type: object - properties: - choice: - type: string - enum: - - value - - values - - auto - - increment - - decrement - default: auto - value: - type: integer - default: 1 - minimum: 0 - maximum: 1 - values: - type: array - items: - type: integer - default: - - 1 - minimum: 0 - maximum: 1 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - default: 1 - minimum: 0 - maximum: 1 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' - Pattern.Flow.Mpls.TimeToLive.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - default: 64 - minimum: 0 - maximum: 255 - step: - type: integer - default: 1 - minimum: 0 - maximum: 255 - count: - type: integer - default: 1 - Pattern.Flow.Mpls.TimeToLive: - description: |- - Time to live - type: object - properties: - choice: - type: string - enum: - - value - - values - - increment - - decrement - default: value - value: - type: integer - default: 64 - minimum: 0 - maximum: 255 - values: - type: array - items: - type: integer - default: - - 64 - minimum: 0 - maximum: 255 - metric_group: - description: |- - A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. - type: string - increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' - decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' diff --git a/artifacts/otg.proto b/artifacts/otg.proto deleted file mode 100644 index 744bb4b5..00000000 --- a/artifacts/otg.proto +++ /dev/null @@ -1,14514 +0,0 @@ -/* Open Traffic Generator API 0.9.2 - * Open Traffic Generator API defines a model-driven, vendor-neutral and standard - * interface for emulating layer 2-7 network devices and generating test traffic. - * - * Contributions can be made in the following ways: - * - [open an issue](https://github.com/open-traffic-generator/models/issues) in the - * models repository - * - [fork the models repository](https://github.com/open-traffic-generator/models) - * and submit a PR - * License: MIT */ - -syntax = "proto3"; - -package otg; - -import "google/protobuf/descriptor.proto"; -import "google/protobuf/empty.proto"; - -// A container for all models that are part of the configuration. -message Config { - - // The ports that will be configured on the traffic generator. - repeated Port ports = 1; - - // The LAGs that will be configured on the traffic generator. - repeated Lag lags = 2; - - // The layer1 settings that will be configured on the traffic generator. - repeated Layer1 layer1 = 3; - - // The capture settings that will be configured on the traffic generator. - repeated Capture captures = 4; - - // The emulated devices that will be configured on the traffic generator. - // Each device contains configurations for network interfaces and - // protocols running on top of those interfaces. - repeated Device devices = 5; - - // The flows that will be configured on the traffic generator. - repeated Flow flows = 6; - - // Description missing in models - optional Event events = 7; - - // Description missing in models - optional ConfigOptions options = 8; -} - -// Global configuration options. -message ConfigOptions { - - // Description missing in models - optional PortOptions port_options = 1; -} - -// An abstract test port. -message Port { - - // The location of a test port. It is the endpoint where packets will emit from. - // Test port locations can be the following: - // - physical appliance with multiple ports - // - physical chassis with multiple cards and ports - // - local interface - // - virtual machine, docker container, kubernetes cluster - // - // The test port location format is implementation specific. Use the /results/capabilities - // API to determine what formats an implementation supports for the location property. - // Get the configured location state by using the /results/port API. - optional string location = 1; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 2; -} - -// Common port options that apply to all configured Port objects. -message PortOptions { - - // Preempt all the test port locations as defined by the Port.Port.properties.location. - // If the test ports defined by their location values are in use and this value is - // true, the test ports will be preempted. - // default = False - optional bool location_preemption = 1; -} - -// The container for LAG (ports group) - aggregation of multiple LAG members (ports) -message Lag { - - // Description missing in models - repeated LagPort ports = 1; - - // Description missing in models - optional LagProtocol protocol = 2; - - // Specifies the mininum number of member interfaces that must be active for the aggregate - // interface to be available - // default = 1 - optional int32 min_links = 3; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 4; -} - -// The container for a port's ethernet interface and LAG protocol settings -message LagPort { - - // The name of a port object that will be part of the LAG. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // required = true - string port_name = 1; - - // Description missing in models - optional LagPortLacp lacp = 2; - - // Description missing in models - // required = true - DeviceEthernetBase ethernet = 3; -} - -// Description missing in models -message LagProtocol { - - message Choice { - enum Enum { - unspecified = 0; - lacp = 1; - static = 2; - } - } - // The type of controlling protocol for the LAG (ports group). - // default = Choice.Enum.lacp - optional Choice.Enum choice = 1; - - // Description missing in models - optional LagProtocolLacp lacp = 2; - - // Description missing in models - optional LagProtocolStatic static = 3; -} - -// The container for static link aggregation protocol settings. -message LagProtocolStatic { - - // The static lag id - // default = 0 - optional int32 lag_id = 1; -} - -// The container for link aggregation control protocol settings of a LAG (ports group). -message LagProtocolLacp { - - // The actor system id - // default = 00:00:00:00:00:00 - optional string actor_system_id = 1; - - // The actor system priority - // default = 0 - optional int32 actor_system_priority = 2; - - // The actor key - // default = 0 - optional int32 actor_key = 3; -} - -// The container for link aggregation control protocol settings of a LAG member (port). -message LagPortLacp { - - // The actor port number - // default = 0 - optional int32 actor_port_number = 1; - - // The actor port priority - // default = 1 - optional int32 actor_port_priority = 2; - - message ActorActivity { - enum Enum { - unspecified = 0; - passive = 1; - active = 2; - } - } - // Sets the value of LACP actor activity as either passive or active. - // Passive indicates the port's preference for not transmitting LACPDUs unless its - // partner's control is Active. - // Active indicates the port's preference to participate in the protocol regardless - // of the partner's control value. - // default = ActorActivity.Enum.active - optional ActorActivity.Enum actor_activity = 3; - - // This field defines how frequently LACPDUs are sent to the link partner - // default = 0 - optional int32 lacpdu_periodic_time_interval = 4; - - // This timer is used to detect whether received protocol information has expired - // default = 0 - optional int32 lacpdu_timeout = 5; -} - -// Base Ethernet interface. -message DeviceEthernetBase { - - // Media Access Control address. - // required = true - string mac = 1; - - // Maximum Transmission Unit. - // default = 1500 - optional int32 mtu = 2; - - // List of VLANs - repeated DeviceVlan vlans = 3; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 4; -} - -// An Ethernet interface with IPv4 and IPv6 addresses. -message DeviceEthernet { - - // Status: deprecated - // The unique name of a Port or a LAG that will emulate this interface. - // port_name is deprecated and will be removed in future release.port_name and connection - // can't be used together, use either port_name or connection. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - optional string port_name = 1; - - // Device connection to physical, LAG or another device. - optional EthernetConnection connection = 2; - - // List of IPv4 addresses and their gateways. - repeated DeviceIpv4 ipv4_addresses = 3; - - // List of global IPv6 addresses and their gateways. - // The Link Local IPv6 address will be automatically generated. - repeated DeviceIpv6 ipv6_addresses = 4; - - // Media Access Control address. - // required = true - string mac = 5; - - // Maximum Transmission Unit. - // default = 1500 - optional int32 mtu = 6; - - // List of VLANs - repeated DeviceVlan vlans = 7; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 8; -} - -// Ethernet interface connection to a port, LAG or VXLAN tunnel. -message EthernetConnection { - - message Choice { - enum Enum { - unspecified = 0; - port_name = 1; - lag_name = 2; - vxlan_name = 3; - } - } - // port_name, lag_name or vxlan_name - optional Choice.Enum choice = 1; - - // Name of the port that the Ethernet interface is configured on. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - optional string port_name = 2; - - // Name of the LAG that the Ethernet interface is configured on. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - optional string lag_name = 3; - - // Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected - // to. - // - // x-constraint: - // - #/components/schemas/VXlan.V4Tunnel/properties/name - // - #/components/schemas/VXlan.V6Tunnel/properties/name - // - optional string vxlan_name = 4; -} - -// Emulated VLAN protocol. -message DeviceVlan { - - message Tpid { - enum Enum { - unspecified = 0; - x8100 = 1; - x88a8 = 2; - x9100 = 3; - x9200 = 4; - x9300 = 5; - } - } - // Tag protocol identifier - // default = Tpid.Enum.x8100 - optional Tpid.Enum tpid = 1; - - // Priority code point - // default = 0 - optional int32 priority = 2; - - // VLAN identifier - // default = 1 - optional int32 id = 3; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 4; -} - -// An IPv4 interface with gateway -message DeviceIpv4 { - - // The IPv4 address of the gateway - // required = true - string gateway = 1; - - // Description missing in models - optional DeviceIpv4GatewayMAC gateway_mac = 2; - - // The IPv4 address - // required = true - string address = 3; - - // The prefix of the IPv4 address. - // default = 24 - optional int32 prefix = 4; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 5; -} - -// An IPv4 Loopback interface. -message DeviceIpv4Loopback { - - // The unique name of the Ethernet interface behind which this Loopback interface will - // be created. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // required = true - string eth_name = 1; - - // The IPv4 Loopback address with prefix length of 32. - // default = 0.0.0.0 - optional string address = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - -// By default auto(resolved gateway mac) is set. Setting a value would mean that ARP -// will not be used for learning MAC of connected device. The user-configured MAC address -// will be used for auto-filling the destination -// MAC address in the control and data packets sent from this IPv4 endpoint -// whenever applicable. -message DeviceIpv4GatewayMAC { - - message Choice { - enum Enum { - unspecified = 0; - auto = 1; - value = 2; - } - } - // auto or configured value. - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // The OTG implementation can provide a system generated value for this property. If - // the OTG is unable to generate a value the default value must be used. - // default = 00:00:00:00:00:00 - optional string auto = 2; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 3; -} - -// Status: under-review -// An IPv6 interface with gateway. -message DeviceIpv6 { - - // The IPv6 gateway address. - // required = true - string gateway = 1; - - // Description missing in models - optional DeviceIpv6GatewayMAC gateway_mac = 2; - - // The IPv6 address. - // required = true - string address = 3; - - // The network prefix. - // default = 64 - optional int32 prefix = 4; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 5; -} - -// An IPv6 Loopback interface -message DeviceIpv6Loopback { - - // The unique name of the Ethernet interface behind which this Loopback - // interface will be created. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // required = true - string eth_name = 1; - - // The IPv6 Loopback address with prefix length of 128. - // default = ::0 - optional string address = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - -// By default auto(resolved gateway mac) is set. Setting a value would mean that ND -// will not be used for learning MAC of connected device. The user-configured MAC address -// will be used for auto-filling the destination -// MAC address in the control and data packets sent from this IPv6 endpoint -// whenever applicable. -message DeviceIpv6GatewayMAC { - - message Choice { - enum Enum { - unspecified = 0; - auto = 1; - value = 2; - } - } - // auto or configured value. - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // The OTG implementation can provide a system generated value for this property. If - // the OTG is unable to generate a value the default value must be used. - // default = 00:00:00:00:00:00 - optional string auto = 2; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 3; -} - -// A container for layer1 settings. -message Layer1 { - - // A list of unique names of port objects that will share the - // choice settings. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; - - message Speed { - enum Enum { - unspecified = 0; - speed_10_fd_mbps = 1; - speed_10_hd_mbps = 2; - speed_100_fd_mbps = 3; - speed_100_hd_mbps = 4; - speed_1_gbps = 5; - speed_10_gbps = 6; - speed_25_gbps = 7; - speed_40_gbps = 8; - speed_50_gbps = 9; - speed_100_gbps = 10; - speed_200_gbps = 11; - speed_400_gbps = 12; - } - } - // Set the speed if supported. - // default = Speed.Enum.speed_10_gbps - optional Speed.Enum speed = 2; - - message Media { - enum Enum { - unspecified = 0; - copper = 1; - fiber = 2; - sgmii = 3; - } - } - // Set the type of media interface if supported. - optional Media.Enum media = 3; - - // Enable promiscuous mode if supported. - // default = True - optional bool promiscuous = 4; - - // Set the maximum transmission unit size if supported. - // default = 1500 - optional int32 mtu = 5; - - // Set to true to override the auto_negotiate, link_training - // and rs_fec settings for gigabit ethernet interfaces. - optional bool ieee_media_defaults = 6; - - // Enable/disable auto negotiation. - optional bool auto_negotiate = 7; - - // Description missing in models - optional Layer1AutoNegotiation auto_negotiation = 8; - - // Description missing in models - optional Layer1FlowControl flow_control = 9; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 10; -} - -// Configuration for auto negotiation settings -message Layer1AutoNegotiation { - - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - optional bool advertise_1000_mbps = 1; - - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - optional bool advertise_100_fd_mbps = 2; - - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - optional bool advertise_100_hd_mbps = 3; - - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - optional bool advertise_10_fd_mbps = 4; - - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - optional bool advertise_10_hd_mbps = 5; - - // Enable/disable gigabit ethernet link training. - // default = False - optional bool link_training = 6; - - // Enable/disable gigabit ethernet reed solomon forward error correction (RS FEC). - // default = False - optional bool rs_fec = 7; -} - -// A container for layer1 receive flow control settings. -// To enable flow control settings on ports this object must be a valid -// object not a null value. -message Layer1FlowControl { - - // The 48bit mac address that the layer1 port names will listen on - // for a directed pause. - // default = 01:80:C2:00:00:01 - optional string directed_address = 1; - - message Choice { - enum Enum { - unspecified = 0; - ieee_802_1qbb = 1; - ieee_802_3x = 2; - } - } - // The type of priority flow control. - // default = Choice.Enum.ieee_802_1qbb - optional Choice.Enum choice = 2; - - // Description missing in models - optional Layer1Ieee8021qbb ieee_802_1qbb = 3; - - // Description missing in models - optional Layer1Ieee8023x ieee_802_3x = 4; -} - -// A container for ieee 802.3x rx pause settings -message Layer1Ieee8023x { -} - -// These settings enhance the existing 802.3x pause priority capabilities -// to enable flow control based on 802.1p priorities (classes of service). -message Layer1Ieee8021qbb { - - // The upper limit on the transmit time of a queue after receiving a - // message to pause a specified priority. - // A value of 0 or null indicates that pfc delay will not be enabled. - // default = 0 - optional int32 pfc_delay = 1; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 0 - optional int32 pfc_class_0 = 2; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 1 - optional int32 pfc_class_1 = 3; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 2 - optional int32 pfc_class_2 = 4; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 3 - optional int32 pfc_class_3 = 5; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 4 - optional int32 pfc_class_4 = 6; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 5 - optional int32 pfc_class_5 = 7; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 6 - optional int32 pfc_class_6 = 8; - - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 7 - optional int32 pfc_class_7 = 9; -} - -// Status: under-review -// Configuration for capture settings. -message Capture { - - // The unique names of ports that the capture settings will apply to. Port_names cannot - // be duplicated between capture objects. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; - - // A list of filters to apply to the capturing ports. If no filters are specified then - // all packets will be captured. A capture can have multiple filters. The number of - // filters supported is determined by the implementation which can be retrieved using - // the capabilities API. - // When multiple filters are specified the capture implementation must && (and) all - // the filters. - repeated CaptureFilter filters = 2; - - // Overwrite the capture buffer. - // default = True - optional bool overwrite = 3; - - // The maximum size of each captured packet. If no value is specified or it is null - // then the entire packet will be captured. - optional int32 packet_size = 4; - - message Format { - enum Enum { - unspecified = 0; - pcap = 1; - pcapng = 2; - } - } - // The format of the capture file. - // default = Format.Enum.pcap - optional Format.Enum format = 5; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 6; -} - -// Configuration for capture filters -message CaptureFilter { - - message Choice { - enum Enum { - unspecified = 0; - custom = 1; - ethernet = 2; - vlan = 3; - ipv4 = 4; - ipv6 = 5; - } - } - // The type of capture filter. - // default = Choice.Enum.custom - optional Choice.Enum choice = 1; - - // Offset from last filter in the list. If no filters are present it is offset from - // position 0. Multiple custom filters can be present, the length of each custom filter - // is the length of the value being filtered. - optional CaptureCustom custom = 2; - - // Description missing in models - optional CaptureEthernet ethernet = 3; - - // Description missing in models - optional CaptureVlan vlan = 4; - - // Description missing in models - optional CaptureIpv4 ipv4 = 5; - - // Description missing in models - optional CaptureIpv6 ipv6 = 6; -} - -// Description missing in models -message CaptureCustom { - - // The bit offset of field to filter on - // default = 0 - optional int32 offset = 1; - - // The bit length of field to filter on - // default = 8 - optional int32 bit_length = 2; - - // Description missing in models - // default = 00 - optional string value = 3; - - // Description missing in models - // default = 00 - optional string mask = 4; - - // Description missing in models - // default = False - optional bool negate = 5; -} - -// Description missing in models -message CaptureField { - - // Description missing in models - // default = 00 - optional string value = 1; - - // Description missing in models - // default = 00 - optional string mask = 2; - - // Description missing in models - // default = False - optional bool negate = 3; -} - -// Description missing in models -message CaptureEthernet { - - // Description missing in models - optional CaptureField src = 1; - - // Description missing in models - optional CaptureField dst = 2; - - // Description missing in models - optional CaptureField ether_type = 3; - - // Description missing in models - optional CaptureField pfc_queue = 4; -} - -// Description missing in models -message CaptureVlan { - - // Description missing in models - optional CaptureField priority = 1; - - // Description missing in models - optional CaptureField cfi = 2; - - // Description missing in models - optional CaptureField id = 3; - - // Description missing in models - optional CaptureField protocol = 4; -} - -// Description missing in models -message CaptureIpv4 { - - // Description missing in models - optional CaptureField version = 1; - - // Description missing in models - optional CaptureField header_length = 2; - - // Description missing in models - optional CaptureField priority = 3; - - // Description missing in models - optional CaptureField total_length = 4; - - // Description missing in models - optional CaptureField identification = 5; - - // Description missing in models - optional CaptureField reserved = 6; - - // Description missing in models - optional CaptureField dont_fragment = 7; - - // Description missing in models - optional CaptureField more_fragments = 8; - - // Description missing in models - optional CaptureField fragment_offset = 9; - - // Description missing in models - optional CaptureField time_to_live = 10; - - // Description missing in models - optional CaptureField protocol = 11; - - // Description missing in models - optional CaptureField header_checksum = 12; - - // Description missing in models - optional CaptureField src = 13; - - // Description missing in models - optional CaptureField dst = 14; -} - -// Description missing in models -message CaptureIpv6 { - - // Description missing in models - optional CaptureField version = 1; - - // Description missing in models - optional CaptureField traffic_class = 2; - - // Description missing in models - optional CaptureField flow_label = 3; - - // Description missing in models - optional CaptureField payload_length = 4; - - // Description missing in models - optional CaptureField next_header = 5; - - // Description missing in models - optional CaptureField hop_limit = 6; - - // Description missing in models - optional CaptureField src = 7; - - // Description missing in models - optional CaptureField dst = 8; -} - -// A container for emulated interfaces, loopback interfaces and protocol configurations. -message Device { - - // Ethernet configuration for one or more emulated network interfaces. - repeated DeviceEthernet ethernets = 1; - - // IPv4 Loopback interface that can be attached to an Ethernet in the same device or - // to an Ethernet in another device. - repeated DeviceIpv4Loopback ipv4_loopbacks = 2; - - // IPv6 Loopback interface that can be attached to an Ethernet in the same device or - // to an Ethernet in another device. - repeated DeviceIpv6Loopback ipv6_loopbacks = 3; - - // The properties of an IS-IS router and its children, such as IS-IS interfaces and - // route ranges. - optional DeviceIsisRouter isis = 4; - - // The properties of BGP router and its children, such as BGPv4, BGPv6 peers and their - // route ranges. - optional DeviceBgpRouter bgp = 5; - - // Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 - optional DeviceVxlan vxlan = 6; - - // The properties of TCP and its children, - repeated DeviceTcp tcp = 7; - - // The properties of HTTP and its children, - repeated DeviceHttp http = 8; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 9; -} - -// Status: under-review -// A container of properties for an ISIS router and its interfaces. -message DeviceIsisRouter { - - // This contains the properties of a Multi-Instance-capable routers or MI-RTR. Each - // router can emulate one ISIS instance at a time. - optional DeviceIsisMultiInstance instance = 1; - - // The System ID for this emulated ISIS router, e.g. 640100010000. - // required = true - string system_id = 2; - - // List of ISIS interfaces for this router. - repeated IsisInterface interfaces = 3; - - // Contains basic properties of an ISIS Router. - optional IsisBasic basic = 4; - - // Contains advance properties of an ISIS Router.. - optional IsisAdvanced advanced = 5; - - // ISIS Router authentication properties. - optional IsisAuthentication router_auth = 6; - - // Emulated ISIS IPv4 routes. - repeated IsisV4RouteRange v4_routes = 7; - - // Emulated ISIS IPv6 routes. - repeated IsisV6RouteRange v6_routes = 8; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 9; -} - -// Status: under-review -// This container properties of an Multi-Instance-capable router (MI-RTR). -message DeviceIsisMultiInstance { - - // Instance Identifier (IID) TLV will associate a PDU with an ISIS instance by using - // a unique 16-bit number and including one or more Instance-Specific Topology Identifiers - // (ITIDs). - // default = 1 - optional int32 iid = 1; - - // This contains one or more ITIDs that will be advertised in IID TLV. - repeated int32 itids = 2; -} - -// Status: under-review -// Configuration for single ISIS interface. -message IsisInterface { - - // The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces - // cannot share the same Ethernet. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // required = true - string eth_name = 1; - - // The default metric cost for the interface. - // default = 10 - optional int32 metric = 2; - - message NetworkType { - enum Enum { - unspecified = 0; - broadcast = 1; - point_to_point = 2; - } - } - // The type of network link. - // default = NetworkType.Enum.broadcast - optional NetworkType.Enum network_type = 3; - - message LevelType { - enum Enum { - unspecified = 0; - level_1 = 1; - level_2 = 2; - level_1_2 = 3; - } - } - // This indicates whether this router is participating in Level-1 (L1), - // Level-2 (L2) or both L1 and L2 domains on this interface. - // default = LevelType.Enum.level_2 - optional LevelType.Enum level_type = 4; - - // Settings of Level 1 Hello. - optional IsisInterfaceLevel l1_settings = 5; - - // Settings of Level 2 Hello. - optional IsisInterfaceLevel l2_settings = 6; - - // Contains the properties of multiple topologies. - repeated IsisMT multi_topology_ids = 7; - - // Contains a list of Traffic Engineering attributes. - repeated LinkStateTE traffic_engineering = 8; - - // The Circuit authentication method used for the interfaces on this emulated ISIS v4/v6 - // router. - optional IsisInterfaceAuthentication authentication = 9; - - // Optional container for advanced interface properties. - optional IsisInterfaceAdvanced advanced = 10; - - // Link protection on the ISIS link between two interfaces. - optional IsisInterfaceLinkProtection link_protection = 11; - - // This contains list of SRLG values for the link between two interfaces. - repeated int32 srlg_values = 12; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 13; -} - -// Configuration for the properties of Level 1 Hello. -message IsisInterfaceLevel { - - // The Priority setting in Level 1 LAN Hellos for Designated Router election. - // default = 0 - optional int32 priority = 1; - - // The Hello interval for Level 1 Hello messages, in seconds. - // default = 10 - optional int32 hello_interval = 2; - - // The Dead (Holding Time) interval for Level 1 Hello messages, in seconds. - // default = 30 - optional int32 dead_interval = 3; -} - -// Status: under-review -// Configuration of properties per interface per topology when multiple topologies are -// configured in an ISIS router. -// in a ISIS router. -message IsisMT { - - // The Multi Topology ID for one of the topologies supported on the ISIS interface. - // default = 0 - optional int32 mt_id = 1; - - // Specifies the link metric for this topology on the ISIS interface. - // default = 10 - optional int32 link_metric = 2; -} - -// Status: under-review -// A container for Traffic Engineering properties on a interface. -message LinkStateTE { - - // The Administrative group sub-TLV (sub-TLV 3). It is a 4-octet - // user-defined bit mask used to assign administrative group numbers - // to the interface, for use in assigning colors and resource classes. - // Each set bit corresponds to a single administrative group for this - // interface. The settings translate into Group numbers, which range - // from 0 to 31 (integers). - // default = 00000000 - optional string administrative_group = 1; - - // The user-assigned link metric for Traffic Engineering. - // default = 0 - optional int64 metric_level = 2; - - // The maximum link bandwidth (sub-TLV 9) in bytes/sec allowed for this - // link for a direction. - // default = 125000000 - optional int64 max_bandwith = 3; - - // The maximum link bandwidth (sub-TLV 10) in bytes/sec allowed for this - // link in a direction. - // default = 125000000 - optional int64 max_reservable_bandwidth = 4; - - // Configuration of bandwidths of priority 0 through priority 7. - optional LinkStatepriorityBandwidths priority_bandwidths = 5; -} - -// Specifies the amount of bandwidth that can be reserved with a setup priority of 0 -// -// through 7, arranged in increasing order with priority 0 having highest priority. -// -// In ISIS, this is sent in sub-TLV (11) of Extended IS Reachability TLV. -message LinkStatepriorityBandwidths { - - // Specifies the amount of bandwidth that can be reserved for the Priority 0. - // default = 125000000 - optional int64 pb0 = 1; - - // Specifies the amount of bandwidth that can be reserved for the Priority 1. - // default = 125000000 - optional int64 pb1 = 2; - - // Specify the amount of bandwidth that can be reserved for the Priority 2. - // default = 125000000 - optional int64 pb2 = 3; - - // Specifies the amount of bandwidth that can be reserved for the Priority 3. - // default = 125000000 - optional int64 pb3 = 4; - - // Specifies the amount of bandwidth that can be reserved for the Priority 4. - // default = 125000000 - optional int64 pb4 = 5; - - // Specifies the amount of bandwidth that can be reserved for the Priority 5. - // default = 125000000 - optional int64 pb5 = 6; - - // Specifies the amount of bandwidth that can be reserved for the Priority 6. - // default = 125000000 - optional int64 pb6 = 7; - - // Specifies the amount of bandwidth that can be reserved for the Priority 7. - // default = 125000000 - optional int64 pb7 = 8; -} - -// Optional container for circuit authentication properties. -message IsisInterfaceAuthentication { - - message AuthType { - enum Enum { - unspecified = 0; - md5 = 1; - password = 2; - } - } - // The circuit authentication method. - // required = true - AuthType.Enum auth_type = 1; - - // MD5 key to be used for authentication. - optional string md5 = 2; - - // The password, in clear text, to be used for Authentication. - optional string password = 3; -} - -// Optional container for advanced interface properties. -message IsisInterfaceAdvanced { - - // If a padded Hello message is received on the interface, the length of - // the Hello packets sent out on that interface is adjusted to match. - // default = True - optional bool auto_adjust_mtu = 1; - - // If a Level 1 Hello is received on this emulated router for an area - // not currently in its area list, an area from the received Hello is - // added to that list. This ensures an area match for all future - // Level 1 Hellos from the source L1 router. - // default = True - optional bool auto_adjust_area = 2; - - // If a Hello message listing supported protocols is received on this - // emulated router, the supported protocols advertised by this router - // are changed to match exactly. - // default = False - optional bool auto_adjust_supported_protocols = 3; - - // If it is true, the Point-to-Point circuit will include 3-way TLV in its Point-to-Point - // IIH and attempt to establish the adjacency as specified in RFC 5303. This field - // is not applicable if network_type is set to 'broadcast' type in ISIS interface. - // default = True - optional bool enable_3way_handshake = 4; - - // If it is true, the Point-to-Point Hello messages will be sent to the unicast MAC - // address. - // default = False - optional bool p2p_hellos_to_unicast_mac = 5; -} - -// Optional container for the link protection sub TLV (type 20). -message IsisInterfaceLinkProtection { - - // Enable this to protect other link or links. LSPs on a link of this type are lost - // if any of the links fail. - // default = False - optional bool extra_traffic = 1; - - // Enabling this signifies that there is no other link protecting this - // link. LSPs on a link of this type are lost if the link fails. - // default = False - optional bool unprotected = 2; - - // Enable this to share the Extra Traffic links between one or more - // links of type Shared.There are one or more disjoint links of type - // Extra Traffic that are protecting this link. - // default = False - optional bool shared = 3; - - // Enabling this signifies that there is one dedicated disjoint link - // of type Extra Traffic that is protecting this link. - // default = False - optional bool dedicated_1_to_1 = 4; - - // Enabling this signifies that a dedicated disjoint link is protecting - // this link. However, the protecting link is not advertised in the - // link state database and is therefore not available for the routing - // of LSPs. - // default = False - optional bool dedicated_1_plus_1 = 5; - - // Enabling this signifies that a protection scheme that is more - // reliable than Dedicated 1+1. - // default = False - optional bool enhanced = 6; - - // This is a Protection Scheme with value 0x40. - // default = False - optional bool reserved_40 = 7; - - // This is a Protection Scheme with value 0x80. - // default = False - optional bool reserved_80 = 8; -} - -// This contains ISIS router basic properties. -message IsisBasic { - - // IPv4 Traffic Engineering(TE) router id. This address should be configured as an IPv4 - // Loopback address in 'ipv4_loopbacks' in the Device. - optional string ipv4_te_router_id = 1; - - // Host name for the router. The host name is transmitted in all the packets sent from - // the router. - optional string hostname = 2; - - // When set to true, it allows sending of more detailed metric information for the - // routes using 32-bit wide values using TLV 135 IP reachability and more detailed - // reachability information for IS reachability by using TLV 22. The detailed usage - // is described in RFC3784. - // default = True - optional bool enable_wide_metric = 3; - - // Configuration for controlling storage of ISIS learned LSPs are received from the - // neighbors. - // default = False - optional bool learned_lsp_filter = 4; -} - -// Contains ISIS router advanced properties. -message IsisAdvanced { - - // It enables padding of Hello message to MTU size. - // default = True - optional bool enable_hello_padding = 1; - - // The Number of Area Addresses permitted, with a valid range from 0 to 254. A zero - // indicates a maximum of 3 addresses. - // default = 3 - optional int32 max_area_addresses = 2; - - // Its combination of the ISP and HO-DSP.Usually all nodes within an area have the - // same area address. If no area addresses are configured, a default area of 490001 - // will be advertised. - repeated string area_addresses = 3; - - // The rate at which LSPs are re-sent in seconds. - // default = 600 - optional int32 lsp_refresh_rate = 4; - - // The MaxAge for retaining a learned LSP on this router in seconds. - // default = 1200 - optional int32 lsp_lifetime = 5; - - // The number of milliseconds between transmissions of Partial Sequence Number PDU. - // default = 2000 - optional int32 psnp_interval = 6; - - // The number of milliseconds between transmissions of Partial Sequence Number PDU. - // default = 10000 - optional int32 csnp_interval = 7; - - // The maximum size in bytes of any LSP that can be transmitted over a link of equal - // or less than maximum MTU size. - // default = 1492 - optional int32 max_lsp_size = 8; - - // The number of seconds between transmissions of LSPs/MGROUP-PDUs. - // default = 5000 - optional int32 lsp_mgroup_min_trans_interval = 9; - - // If the Attached bit is enabled, it indicates that the ISIS router is attached to - // another area or the Level 2 backbone. The purpose of an Attached-Bit is to accomplish - // Inter-Area Routing. When an L1/L2 router is connected to more than one area, it - // sets the Attached-bit on its L1 LSP. This can cause a default route ( 0.0.0.0/0 ) - // to be installed by the receiving router. - // default = True - optional bool enable_attached_bit = 10; -} - -// This contains ISIS Area/Domain authentication properties. -message IsisAuthentication { - - // Do not verify MD5 checksum in received LSPs. - // default = True - optional bool ignore_receive_md5 = 1; - - // The Area authentication method used for the emulated ISIS router. - // This is used for L1 LSPs. - optional IsisAuthenticationBase area_auth = 2; - - // The Domain authentication method used for the emulated ISIS router. - // This is used for L2 LSPs. - optional IsisAuthenticationBase domain_auth = 3; -} - -// Optional container for ISIS authentication properties. -message IsisAuthenticationBase { - - message AuthType { - enum Enum { - unspecified = 0; - md5 = 1; - password = 2; - } - } - // The authentication method. - // required = true - AuthType.Enum auth_type = 1; - - // Authentication as an MD5 key. - optional string md5 = 2; - - // Authentication as a clear text password. - optional string password = 3; -} - -// Emulated ISIS IPv4 routes. -message IsisV4RouteRange { - - // A list of group of IPv4 route addresses. - repeated V4RouteAddress addresses = 1; - - // The user-defined metric associated with this route range. - // default = 0 - optional int32 link_metric = 2; - - message OriginType { - enum Enum { - unspecified = 0; - internal = 1; - external = 2; - } - } - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - // default = OriginType.Enum.internal - optional OriginType.Enum origin_type = 3; - - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. - // It is used for domain-wide advertisement of prefix information. - // - // Up (0)-used when a prefix is initially advertised within the ISIS L3 - // hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - // default = RedistributionType.Enum.up - optional RedistributionType.Enum redistribution_type = 4; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 5; - - // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags - // will be advertised or not. - // default = False - optional bool prefix_attr_enabled = 6; - - // External Prefix Flag (Bit 0) - // default = False - optional bool x_flag = 7; - - // Re-advertisement Flag (Bit 1) - // default = False - optional bool r_flag = 8; - - // Node Flag (Bit 2) - // default = False - optional bool n_flag = 9; -} - -// A container for IPv4 route addresses. -message V4RouteAddress { - - // The starting address of the network. - // required = true - string address = 1; - - // The IPv4 network prefix length to be applied to the address. - // default = 24 - optional int32 prefix = 2; - - // The total number of addresses in the range. - // default = 1 - optional int32 count = 3; - - // Increments the network address prefixes within a route range where multiple routes - // are present. The value is incremented according to the Prefix Length and Step. - // default = 1 - optional int32 step = 4; -} - -// A container for IPv6 route addresses. -message V6RouteAddress { - - // The starting address of the network. - // required = true - string address = 1; - - // The IPv6 network prefix length to be applied to the address. - // default = 64 - optional int32 prefix = 2; - - // The total number of addresses in the range. - // default = 1 - optional int32 count = 3; - - // Increments the network address prefixes within a route range where multiple routes - // are present. The value is incremented according to the Prefix Length and Step. - // default = 1 - optional int32 step = 4; -} - -// A container for MAC route addresses. -message MACRouteAddress { - - // The starting address of the MAC Range. - // required = true - string address = 1; - - // The MAC prefix length to be applied to the address. - // default = 48 - optional int32 prefix = 2; - - // The total number of mac addresses in the range. - // default = 1 - optional int32 count = 3; - - // Increments the mac address prefixes within a mac range where multiple routes are - // present. The value is incremented according to the mac prefix Length and Step. - // default = 1 - optional int32 step = 4; -} - -// Emulated ISIS IPv6 routes. -message IsisV6RouteRange { - - // A list of group of IPv6 route addresses. - repeated V6RouteAddress addresses = 1; - - // The user-defined metric associated with this route range. - // default = 0 - optional int32 link_metric = 2; - - message OriginType { - enum Enum { - unspecified = 0; - internal = 1; - external = 2; - } - } - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - // default = OriginType.Enum.internal - optional OriginType.Enum origin_type = 3; - - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. - // It is used for domain-wide advertisement of prefix information. - // - // Up (0)-used when a prefix is initially advertised within the ISIS L3 - // hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - // default = RedistributionType.Enum.up - optional RedistributionType.Enum redistribution_type = 4; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 5; - - // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags - // will be advertised or not. - // default = False - optional bool prefix_attr_enabled = 6; - - // External Prefix Flag (Bit 0) - // default = False - optional bool x_flag = 7; - - // Re-advertisement Flag (Bit 1) - // default = False - optional bool r_flag = 8; - - // Node Flag (Bit 2) - // default = False - optional bool n_flag = 9; -} - -// Configuration for one or more IPv4 or IPv6 BGP peers. -message DeviceBgpRouter { - - // The BGP router ID is a unique identifier used by BGP. It is a 32-bit value that is - // often represented by an IPv4 address. - // required = true - string router_id = 1; - - // This contains an array of references to IPv4 interfaces, each of which will have - // list of peers to different destinations. - repeated BgpV4Interface ipv4_interfaces = 2; - - // This contains an array of references to IPv6 interfaces, each of which will have - // list of peers to different destinations. - repeated BgpV6Interface ipv6_interfaces = 3; -} - -// Status: under-review -// Configuration for emulated BGPv4 peers and routes. -message BgpV4Peer { - - // IPv4 address of the BGP peer for the session. - // required = true - string peer_address = 1; - - // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments - // (ES) Per BGP Peer for IPv4 Address Family Identifier (AFI). - // - // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . - // Each EVI contains a list of Broadcast Domains. - // Each Broadcast Domain contains a list of MAC/IP Ranges. - // - // is responsible for advertising Ethernet - // Auto-discovery Route Per EVI (Type 1). - // - // is responsible for advertising Ethernet Auto-discovery Route - // Per Ethernet Segment (Type 1). - // - // is responsible for advertising - // MAC/IP Advertisement Route (Type 2). - // - // is responsible for advertising Inclusive - // Multicast Ethernet Tag Route (Type 3). - // - // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). - repeated BgpV4EthernetSegment evpn_ethernet_segments = 2; - - message AsType { - enum Enum { - unspecified = 0; - ibgp = 1; - ebgp = 2; - } - } - // The type of BGP autonomous system. External BGP is used for BGP links between two - // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous - // system (ibgp). BGP property defaults are aligned with this object defined as an internal - // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to - // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' - // attribute in 'as_path' field in any Route Range should be changed from default value - // 'do_not_include_local_as' to any other value. - // required = true - AsType.Enum as_type = 3; - - // Autonomous System Number (AS number or ASN) - // required = true - int32 as_number = 4; - - message AsNumberWidth { - enum Enum { - unspecified = 0; - two = 1; - four = 2; - } - } - // The width in bytes of the as_number values. Any as_number values that exceeds the - // width MUST result in an error. - // default = AsNumberWidth.Enum.four - optional AsNumberWidth.Enum as_number_width = 5; - - // Description missing in models - optional BgpAdvanced advanced = 6; - - // Description missing in models - optional BgpCapability capability = 7; - - // Description missing in models - optional BgpLearnedInformationFilter learned_information_filter = 8; - - // Emulated BGPv4 route ranges. - repeated BgpV4RouteRange v4_routes = 9; - - // Emulated BGPv6 route ranges. - repeated BgpV6RouteRange v6_routes = 10; - - // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier - // (AFI). - repeated BgpSrteV4Policy v4_srte_policies = 11; - - // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier - // (AFI). - repeated BgpSrteV6Policy v6_srte_policies = 12; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 13; -} - -// Configuration for emulated BGPv4 peers and routes on a single IPv4 interface. -message BgpV4Interface { - - // The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for - // this list of BGP peers. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // required = true - string ipv4_name = 1; - - // This contains the list of BGPv4 peers configured on this interface. - repeated BgpV4Peer peers = 2; -} - -// Configuration for BGP Ethernet Segment ranges. Advertises following routes - -// -// Type 4 - Ethernet Segment Route -message BgpV4EthernetSegment { - - // Designated Forwarder (DF) election configuration. - optional BgpEthernetSegmentDfElection df_election = 1; - - // This contains the list of EVIs. - repeated BgpV4EvpnEvis evis = 2; - - // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero - // ESI is '10000000000000000000' . - // default = 00000000000000000000 - optional string esi = 3; - - message ActiveMode { - enum Enum { - unspecified = 0; - single_active = 1; - all_active = 2; - } - } - // Single Active or All Active mode Redundancy mode selection for Multi-home. - // default = ActiveMode.Enum.all_active - optional ActiveMode.Enum active_mode = 4; - - // The label value to be advertised as ESI Label in ESI Label Extended Community. This - // is included in Ethernet Auto-discovery per ES Routes advertised by a router. - // default = 0 - optional int32 esi_label = 5; - - // Description missing in models - optional BgpRouteAdvanced advanced = 6; - - // Optional community settings. - repeated BgpCommunity communities = 7; - - // Optional Extended Community settings. - repeated BgpExtCommunity ext_communities = 8; - - // Optional AS PATH settings. - optional BgpAsPath as_path = 9; -} - -// Configuration for Designated Forwarder (DF) election among the Provider Edge (PE) -// routers on the same Ethernet Segment. -message BgpEthernetSegmentDfElection { - - // The DF election timer in seconds. - // default = 3 - optional int32 election_timer = 1; -} - -// Configuration for advanced BGP route range settings. -message BgpRouteAdvanced { - - // The multi exit discriminator (MED) value. A null value means the MED feature is - // not enabled. - optional int32 multi_exit_discriminator = 1; - - message Origin { - enum Enum { - unspecified = 0; - igp = 1; - egp = 2; - } - } - // The origin value. A null value means the origin feature is not enabled. - // default = Origin.Enum.igp - optional Origin.Enum origin = 2; -} - -// BGP communities provide additional capability for tagging routes and for modifying -// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit -// number which is broken into 16-bit AS number and a 16-bit custom value. -message BgpCommunity { - - message Type { - enum Enum { - unspecified = 0; - manual_as_number = 1; - no_export = 2; - no_advertised = 3; - no_export_subconfed = 4; - llgr_stale = 5; - no_llgr = 6; - } - } - // The type of community AS number. - optional Type.Enum type = 1; - - // First two octets of 32 bit community AS number. - // default = 0 - optional int32 as_number = 2; - - // Last two octets of the community value. - // default = 0 - optional int32 as_custom = 3; -} - -// The Extended Communities Attribute is a transitive optional BGP attribute, with the -// Type Code 16. Community and Extended Communities attributes to trigger routing decisions, -// such as acceptance, rejection, preference, or redistribution. An extended community -// is an 8-Bytes value. It is also divided into two main parts. The first 2 Bytes of -// the community encode a type and sub-type fields and the last 6 Bytes carry a unique -// set of data in a format defined by the type and sub-type field. Extended communities -// provide a larger range for grouping or categorizing communities. -message BgpExtCommunity { - - message Type { - enum Enum { - unspecified = 0; - administrator_as_2octet = 1; - administrator_ipv4_address = 2; - administrator_as_4octet = 3; - opaque = 4; - evpn = 5; - administrator_as_2octet_link_bandwidth = 6; - } - } - // Extended Community Type field of 1 Byte. - // - administrator_as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). - // - administrator_ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). - // - administrator_as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). - // - opaque: Opaque Extended Community (RFC 7432). - // - evpn: EVPN Extended Community (RFC 7153). - // - administrator_as_2octet_link_bandwidth : Link Bandwidth Extended Community (RFC - // 7153). - optional Type.Enum type = 1; - - message Subtype { - enum Enum { - unspecified = 0; - route_target = 1; - origin = 2; - extended_bandwidth = 3; - color = 4; - encapsulation = 5; - mac_address = 6; - } - } - // Extended Community Sub Type field of 1 Byte. - // - route_target: Route Target. - // - origin: Origin. - // - extended_bandwidth: Specifies the link bandwidth. - // - color: Specifies the color value. - // - encapsulation: Specifies the Encapsulation Extended Community. - // - mac_address: Specifies the Extended community MAC address. - optional Subtype.Enum subtype = 2; - - // Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype - // value can be '0000000000c8' for the color value 200. - optional string value = 3; -} - -// This attribute identifies the autonomous systems through which routing information -// carried in this UPDATE message has passed. This contains the configuration of how -// to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains -// optional configuration of additional AS Path Segments that can be included in the -// AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems -// (AS) numbers that a routing information passes through to reach the destination. -message BgpAsPath { - - message AsSetMode { - enum Enum { - unspecified = 0; - do_not_include_local_as = 1; - include_as_seq = 2; - include_as_set = 3; - include_as_confed_seq = 4; - include_as_confed_set = 5; - prepend_to_first_segment = 6; - } - } - // Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, - // Do Not Include Local AS must be chosen. For eBGP sessions, any choice other than - // Do Not Include Local AS can be chosen. - // default = AsSetMode.Enum.do_not_include_local_as - optional AsSetMode.Enum as_set_mode = 1; - - // The additional AS path segments to be added in the NLRI. By default, an empty AS - // path is always included and the local AS is added to it as per the value of 'as_set_mode' - // attribute. - repeated BgpAsPathSegment segments = 2; -} - -// Configuration for a single BGP AS path segment -message BgpAsPathSegment { - - message Type { - enum Enum { - unspecified = 0; - as_seq = 1; - as_set = 2; - as_confed_seq = 3; - as_confed_set = 4; - } - } - // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting - // with the most recent ASN being added read from left to right. - // The other three AS_PATH types are used for Confederations - AS_SET is the type of - // AS_PATH attribute that summarizes routes using using the aggregate-address command, - // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives - // the list of ASNs in the path starting with the most recent ASN to be added reading - // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be - // sent in BGP Updates. - // default = Type.Enum.as_seq - optional Type.Enum type = 1; - - // The AS numbers in this AS path segment. - repeated int64 as_numbers = 2; -} - -// This contains a list of different flavors of EVPN. -// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. -// -// Need to instantiate correct type of EVPN instance as per requirement. -message BgpV4EvpnEvis { - - message Choice { - enum Enum { - unspecified = 0; - evi_vxlan = 1; - } - } - // Description missing in models - // default = Choice.Enum.evi_vxlan - optional Choice.Enum choice = 1; - - // EVPN VXLAN instance to be configured per Ethernet Segment. - optional BgpV4EviVxlan evi_vxlan = 2; -} - -// Configuration for BGP EVPN EVI. Advertises following routes - -// -// Type 3 - Inclusive Multicast Ethernet Tag Route -// -// Type 1 - Ethernet Auto-discovery Route (Per EVI) -// -// Type 1 - Ethernet Auto-discovery Route (Per ES) -message BgpV4EviVxlan { - - // This contains the list of Broadcast Domains to be configured per EVI. - repeated BgpV4EviVxlanBroadcastDomain broadcast_domains = 1; - - message ReplicationType { - enum Enum { - unspecified = 0; - ingress_replication = 1; - } - } - // This model only supports Ingress Replication - // default = ReplicationType.Enum.ingress_replication - optional ReplicationType.Enum replication_type = 2; - - // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel - // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. - // default = 16 - optional int32 pmsi_label = 3; - - // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet - // Auto-discovery Route per - // default = 0 - optional int32 ad_label = 4; - - // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying - // an EVI. Example - for the as_2octet 60005:100. - optional BgpRouteDistinguisher route_distinguisher = 5; - - // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with - // this EVI. - repeated BgpRouteTarget route_target_export = 6; - - // List of L2VNI import targets associated with this EVI. - repeated BgpRouteTarget route_target_import = 7; - - // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. - repeated BgpRouteTarget l3_route_target_export = 8; - - // List of L3VNI Import Route Targets. - repeated BgpRouteTarget l3_route_target_import = 9; - - // Description missing in models - optional BgpRouteAdvanced advanced = 10; - - // Optional community settings. - repeated BgpCommunity communities = 11; - - // Optional Extended Community settings. - repeated BgpExtCommunity ext_communities = 12; - - // Optional AS PATH settings. - optional BgpAsPath as_path = 13; -} - -// Configuration for Broadcast Domains per EVI. -message BgpV4EviVxlanBroadcastDomain { - - // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. - // - // - // Advertises following route - - // Type 2 - MAC/IP Advertisement Route. - repeated BgpCMacIpRange cmac_ip_range = 1; - - // The Ethernet Tag ID of the Broadcast Domain. - // default = 0 - optional int64 ethernet_tag_id = 2; - - // VLAN-Aware service to be enabled or disabled. - // default = False - optional bool vlan_aware_service = 3; -} - -// Configuration for MAC/IP Ranges per Broadcast Domain. -// -// Advertises following route - -// -// Type 2 - MAC/IP Advertisement Route. -message BgpCMacIpRange { - - // Host MAC address range per Broadcast Domain. - optional MACRouteAddress mac_addresses = 1; - - // Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement - // Route (Type 2) - // default = 0 - optional int32 l2vni = 2; - - // Host IPv4 address range per Broadcast Domain. - optional V4RouteAddress ipv4_addresses = 3; - - // Host IPv6 address range per Broadcast Domain. - optional V6RouteAddress ipv6_addresses = 4; - - // Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement - // Route (Type 2). - // default = 0 - optional int32 l3vni = 5; - - // Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). - // default = False - optional bool include_default_gateway = 6; - - // Description missing in models - optional BgpRouteAdvanced advanced = 7; - - // Optional community settings. - repeated BgpCommunity communities = 8; - - // Optional Extended Community settings. - repeated BgpExtCommunity ext_communities = 9; - - // Optional AS PATH settings. - optional BgpAsPath as_path = 10; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 11; -} - -// BGP Route Distinguisher. -message BgpRouteDistinguisher { - - message RdType { - enum Enum { - unspecified = 0; - as_2octet = 1; - ipv4_address = 2; - as_4octet = 3; - } - } - // Route Distinguisher Type field of 2 Byte. - // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). - // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). - // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). - // default = RdType.Enum.as_2octet - optional RdType.Enum rd_type = 1; - - // Allow to automatically configure RD IP address from local ip. - // default = False - optional bool auto_config_rd_ip_addr = 2; - - // Colon separated Extended Community value of 6 Bytes - AS number: Value. Example - // - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 - optional string rd_value = 3; -} - -// BGP Route Target. -message BgpRouteTarget { - - message RtType { - enum Enum { - unspecified = 0; - as_2octet = 1; - ipv4_address = 2; - as_4octet = 3; - } - } - // Extended Community Type field of 2 Byte. - // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). - // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). - // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). - optional RtType.Enum rt_type = 1; - - // Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. - // Example - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 - optional string rt_value = 2; -} - -// Status: under-review -// Configuration for BGP advanced settings. -message BgpAdvanced { - - // Number of seconds the sender proposes for the value of the Hold Timer. - // default = 90 - optional int32 hold_time_interval = 1; - - // Number of seconds between transmissions of Keepalive messages by this peer. - // default = 30 - optional int32 keep_alive_interval = 2; - - // The time interval at which Update messages are sent to the DUT, expressed as the - // number of milliseconds between Update messages. The update interval 0 implies to - // send all the updates as fast as possible. - // default = 0 - optional int32 update_interval = 3; - - // The limited number of iterations that a unit of data can experience before the data - // is discarded. This is placed in the TTL field in the IP header of the transmitted - // packets. - // default = 64 - optional int32 time_to_live = 4; - - // The value to be used as a secret MD5 key for authentication. If not configured, MD5 - // authentication will not be enabled. - optional string md5_key = 5; -} - -// Status: under-review -// Configuration for BGP capability settings. -message BgpCapability { - - // Support for the IPv4 Unicast address family. - // default = True - optional bool ipv4_unicast = 1; - - // Support for the IPv4 Multicast address family. - // default = False - optional bool ipv4_multicast = 2; - - // Support for the IPv4 Unicast address family. - // default = True - optional bool ipv6_unicast = 3; - - // Support for the IPv6 Multicast address family. - // default = False - optional bool ipv6_multicast = 4; - - // Support for VPLS as below. - // RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery - // and Signaling. - // RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery - // and Signaling. - // default = False - optional bool vpls = 5; - - // Support for the route refresh capabilities. Route Refresh allows the dynamic exchange - // of route refresh requests and routing information between BGP peers and the subsequent - // re-advertisement of the outbound or inbound routing table. - // default = True - optional bool route_refresh = 6; - - // Supports for the route constraint capabilities. Route Constraint allows the advertisement - // of Route Target Membership information. The BGP peers exchange Route Target Reachability - // Information, which is used to build a route distribution graph. This limits the - // propagation of VPN Network Layer Reachability Information (NLRI) between different - // autonomous systems or distinct clusters of the same autonomous system. This is supported - // for Layer 3 Virtual Private Network scenario. - // default = False - optional bool route_constraint = 7; - - // Support for BGP Link State for ISIS and OSPF. - // default = False - optional bool link_state_non_vpn = 8; - - // Capability advertisement of BGP Link State for VPNs. - // default = False - optional bool link_state_vpn = 9; - - // Support for the EVPN address family. - // default = False - optional bool evpn = 10; - - // Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. - // This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. - // default = False - optional bool extended_next_hop_encoding = 11; - - // Support for the IPv4 Multicast VPN address family. - // default = False - optional bool ipv4_multicast_vpn = 12; - - // Support for the IPv4 MPLS L3VPN address family. - // default = False - optional bool ipv4_mpls_vpn = 13; - - // Supports for IPv4 MDT address family messages. - // default = False - optional bool ipv4_mdt = 14; - - // Support for the IPv4 Multicast VPN address family. - // default = False - optional bool ipv4_multicast_mpls_vpn = 15; - - // Support for propagation of IPv4 unicast flow specification rules. - // default = False - optional bool ipv4_unicast_flow_spec = 16; - - // Support for IPv4 SRTE policy. - // default = False - optional bool ipv4_sr_te_policy = 17; - - // Support for IPv4 Unicast Add Path Capability. - // default = False - optional bool ipv4_unicast_add_path = 18; - - // Support for the IPv6 Multicast VPN address family. - // default = False - optional bool ipv6_multicast_vpn = 19; - - // Support for the IPv6 MPLS L3VPN address family. - // default = False - optional bool ipv6_mpls_vpn = 20; - - // Support for IPv6 MDT address family messages. - // default = False - optional bool ipv6_mdt = 21; - - // Support for the IPv6 Multicast VPN address family. - // default = False - optional bool ipv6_multicast_mpls_vpn = 22; - - // Support for propagation of IPv6 unicast flow specification rules. - // default = False - optional bool ipv6_unicast_flow_spec = 23; - - // Support for IPv6 SRTE policy. - // default = False - optional bool ipv6_sr_te_policy = 24; - - // Support for IPv6 Unicast Add Path Capability. - // default = False - optional bool ipv6_unicast_add_path = 25; -} - -// Status: under-review -// Configuration for controlling storage of BGP learned information recieved from the -// peer. -message BgpLearnedInformationFilter { - - // If enabled, will store the information related to Unicast IPv4 Prefixes recieved - // from the peer. - // default = False - optional bool unicast_ipv4_prefix = 1; - - // If enabled, will store the information related to Unicast IPv6 Prefixes recieved - // from the peer. - // default = False - optional bool unicast_ipv6_prefix = 2; -} - -// Emulated BGPv4 route range. -message BgpV4RouteRange { - - // A list of group of IPv4 route addresses. - repeated V4RouteAddress addresses = 1; - - message NextHopMode { - enum Enum { - unspecified = 0; - local_ip = 1; - manual = 2; - } - } - // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the - // NextHop in the MP REACH NLRI can be one of the following: - // Local IP: Automatically fills the Nexthop with the Local IP of the BGP - // peer. - // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - optional NextHopMode.Enum next_hop_mode = 2; - - message NextHopAddressType { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - } - } - // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. - // default = NextHopAddressType.Enum.ipv4 - optional NextHopAddressType.Enum next_hop_address_type = 3; - - // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // default = 0.0.0.0 - optional string next_hop_ipv4_address = 4; - - // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv6. - // default = ::0 - optional string next_hop_ipv6_address = 5; - - // Description missing in models - optional BgpRouteAdvanced advanced = 6; - - // Optional community settings. - repeated BgpCommunity communities = 7; - - // Description missing in models - optional BgpAsPath as_path = 8; - - // Description missing in models - optional BgpAddPath add_path = 9; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 10; -} - -// The BGP Additional Paths feature is a BGP extension that allows the advertisement -// of multiple paths for the same prefix without the new paths implicitly replacing -// any previous paths. -message BgpAddPath { - - // The id of the additional path. - // default = 1 - optional int32 path_id = 1; -} - -// Emulated BGPv6 route range. -message BgpV6RouteRange { - - // A list of group of IPv6 route addresses. - repeated V6RouteAddress addresses = 1; - - message NextHopMode { - enum Enum { - unspecified = 0; - local_ip = 1; - manual = 2; - } - } - // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the - // NextHop in the MP REACH NLRI can be one of the following: - // Local IP: Automatically fills the Nexthop with the Local IP of the BGP - // peer. - // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - optional NextHopMode.Enum next_hop_mode = 2; - - message NextHopAddressType { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - } - } - // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. - // default = NextHopAddressType.Enum.ipv6 - optional NextHopAddressType.Enum next_hop_address_type = 3; - - // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // default = 0.0.0.0 - optional string next_hop_ipv4_address = 4; - - // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv6. - // default = ::0 - optional string next_hop_ipv6_address = 5; - - // Description missing in models - optional BgpRouteAdvanced advanced = 6; - - // Optional community settings. - repeated BgpCommunity communities = 7; - - // Description missing in models - optional BgpAsPath as_path = 8; - - // Description missing in models - optional BgpAddPath add_path = 9; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 10; -} - -// Configuration for BGP Segment Routing Traffic Engineering(SRTE) -// policy. -// -message BgpSrteV4Policy { - - // 4-octet value uniquely identifying the policy in the context of (color, endpoint) - // tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) - // both for multiple candidate paths of the same SR Policy as well as candidate paths - // of different SR Policies (i.e. with different segment list) with the same Color - // and Endpoint but meant for different head-ends. - // default = 1 - optional int64 distinguisher = 1; - - // Policy color is used to match the color of the destination prefixes to steer traffic - // into the SR Policy. - // default = 100 - optional int64 color = 2; - - // Specifies a single node or a set of nodes (e.g. an anycast address). It is selected - // on the basis of the SR Policy type (AFI). - // required = true - string ipv4_endpoint = 3; - - message NextHopMode { - enum Enum { - unspecified = 0; - local_ip = 1; - manual = 2; - } - } - // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically - // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop - // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary - // IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - optional NextHopMode.Enum next_hop_mode = 4; - - message NextHopAddressType { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - } - } - // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. - // default = NextHopAddressType.Enum.ipv4 - optional NextHopAddressType.Enum next_hop_address_type = 5; - - // The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' - // and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, - // Nexthop Encoding capability extended_next_hop_encoding should be enabled. - optional string next_hop_ipv4_address = 6; - - // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' - // and the Nexthop type 'next_hop_address_type' is IPv6. - optional string next_hop_ipv6_address = 7; - - // Description missing in models - optional BgpRouteAdvanced advanced = 8; - - // Description missing in models - optional BgpAddPath add_path = 9; - - // Description missing in models - optional BgpAsPath as_path = 10; - - // Optional Community settings. - repeated BgpCommunity communities = 11; - - // Optional Extended Community settings. - repeated BgpExtCommunity ext_communities = 12; - - // List Tunnel Encapsulation Attributes. - repeated BgpSrteV4TunnelTlv tunnel_tlvs = 13; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 14; - - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - optional bool active = 15; -} - -// Configuration for BGP SRTE Tunnel TLV. -message BgpSrteV4TunnelTlv { - - // Description missing in models - optional BgpSrteRemoteEndpointSubTlv remote_endpoint_sub_tlv = 1; - - // Description missing in models - optional BgpSrteColorSubTlv color_sub_tlv = 2; - - // Description missing in models - optional BgpSrteBindingSubTlv binding_sub_tlv = 3; - - // Description missing in models - optional BgpSrtePreferenceSubTlv preference_sub_tlv = 4; - - // Description missing in models - optional BgpSrtePolicyPrioritySubTlv policy_priority_sub_tlv = 5; - - // Description missing in models - optional BgpSrtePolicyNameSubTlv policy_name_sub_tlv = 6; - - // Description missing in models - optional BgpSrteExplicitNullLabelPolicySubTlv explicit_null_label_policy_sub_tlv = 7; - - // Description missing in models - repeated BgpSrteSegmentList segment_lists = 8; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 9; - - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - optional bool active = 10; -} - -// Configuration for the BGP remote endpoint sub TLV. -message BgpSrteRemoteEndpointSubTlv { - - // Autonomous system (AS) number - // default = 0 - optional int64 as_number = 1; - - message AddressFamily { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - } - } - // Determines the address type - // default = AddressFamily.Enum.ipv4 - optional AddressFamily.Enum address_family = 2; - - // The IPv4 address of the Remote Endpoint. - // default = 0.0.0.0 - optional string ipv4_address = 3; - - // The IPv6 address of the Remote Endpoint. - // default = ::0 - optional string ipv6_address = 4; -} - -// Configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used -// as a way to color the corresponding Tunnel TLV. The Value field of the sub-TLV is -// eight octets long and consists of a Color Extended Community. First two octets of -// its Value field are 0x030b as type and subtype of extended community. Remaining -// six octets are are exposed to configure. -message BgpSrteColorSubTlv { - - // Six octet values. Example: 000000000064 for color value 100. - optional string color = 1; -} - -// Configuration for the binding SID sub-TLV. This is used to signal the binding SID -// related information of the SR Policy candidate path. -message BgpSrteBindingSubTlv { - - message BindingSidType { - enum Enum { - unspecified = 0; - no_binding = 1; - four_octet_sid = 2; - ipv6_sid = 3; - } - } - // Type of the binding SID. Supported types are No Binding SID or Four Octets Sid or - // IPv6 SID. - // default = BindingSidType.Enum.no_binding - optional BindingSidType.Enum binding_sid_type = 1; - - // Binding SID is encoded in 4 octets. - optional int32 four_octet_sid = 2; - - // IPv6 SID value. - optional string ipv6_sid = 3; - - // S-Flag encodes the Specified-BSID-only behavior. - // default = False - optional bool s_flag = 4; - - // I-Flag encodes the Drop Upon Invalid behavior. - // default = False - optional bool i_flag = 5; -} - -// Configuration for BGP preference sub TLV of the SR Policy candidate path. -message BgpSrtePreferenceSubTlv { - - // The preference value of the SR Policy candidate path. - // default = 0 - optional int64 preference = 1; -} - -// Configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the -// order in which the SR policies are re-computed upon topological change. -message BgpSrtePolicyPrioritySubTlv { - - // One-octet Priority value. - optional int32 policy_priority = 1; -} - -// Configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach -// a symbolic name to the SR Policy candidate path. -message BgpSrtePolicyNameSubTlv { - - // Symbolic name for the policy that should be a string of printable ASCII characters, - // without a NULL terminator. - optional string policy_name = 1; -} - -// Configuration for BGP explicit null label policy sub TLV settings. -message BgpSrteExplicitNullLabelPolicySubTlv { - - message ExplicitNullLabelPolicy { - enum Enum { - unspecified = 0; - reserved_enlp = 1; - push_ipv4_enlp = 2; - push_ipv6_enlp = 3; - push_ipv4_ipv6_enlp = 4; - do_not_push_enlp = 5; - } - } - // The value of the explicit null label policy - // default = ExplicitNullLabelPolicy.Enum.do_not_push_enlp - optional ExplicitNullLabelPolicy.Enum explicit_null_label_policy = 1; -} - -// Status: under-review -// Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV -// encodes a single explicit path towards the Endpoint. -message BgpSrteSegmentList { - - // The Weight associated with a given path and the sub-TLV is optional. - // default = 0 - optional int64 weight = 1; - - // Description missing in models - repeated BgpSrteSegment segments = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; - - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - optional bool active = 4; -} - -// Status: under-review -// A Segment sub-TLV describes a single segment in a segment list i.e., a single element -// of the explicit path. The Segment sub-TLVs are optional. -message BgpSrteSegment { - - message SegmentType { - enum Enum { - unspecified = 0; - type_a = 1; - type_b = 2; - type_c = 3; - type_d = 4; - type_e = 5; - type_f = 6; - type_g = 7; - type_h = 8; - type_i = 9; - type_j = 10; - type_k = 11; - } - } - // Specify one of the segment type. - // https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13 - // Type A: SID only, in the form of MPLS Label. - // Type B: SID only, in the form of IPv6 Address. - // Type C: IPv4 Node Address with optional SID. - // Type D: IPv6 Node Address with optional SID for SR MPLS. - // Type E: IPv4 Address and index with optional SID. - // Type F: IPv4 Local and Remote addresses with optional SID. - // Type G: IPv6 Address and index for local and remote pair with optional - // SID for SR MPLS. - // Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. - // Type I: IPv6 Node Address with optional SID for SRv6. - // Type J: IPv6 Address and index for local and remote pair with optional - // SID for SRv6. - // Type K: IPv6 Local and Remote addresses for SRv6. - // required = true - SegmentType.Enum segment_type = 1; - - // Description missing in models - optional BgpSrteSegmentATypeSubTlv type_a = 2; - - // Description missing in models - optional BgpSrteSegmentBTypeSubTlv type_b = 3; - - // Description missing in models - optional BgpSrteSegmentCTypeSubTlv type_c = 4; - - // Description missing in models - optional BgpSrteSegmentDTypeSubTlv type_d = 5; - - // Description missing in models - optional BgpSrteSegmentETypeSubTlv type_e = 6; - - // Description missing in models - optional BgpSrteSegmentFTypeSubTlv type_f = 7; - - // Description missing in models - optional BgpSrteSegmentGTypeSubTlv type_g = 8; - - // Description missing in models - optional BgpSrteSegmentHTypeSubTlv type_h = 9; - - // Description missing in models - optional BgpSrteSegmentITypeSubTlv type_i = 10; - - // Description missing in models - optional BgpSrteSegmentJTypeSubTlv type_j = 11; - - // Description missing in models - optional BgpSrteSegmentKTypeSubTlv type_k = 12; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 13; - - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - optional bool active = 14; -} - -// Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. -message BgpSrteSrMplsSid { - - // Label value in [0, 2^20 -1]. - optional int32 label = 1; - - // Traffic class in bits. - optional int32 tc = 2; - - // Bottom-of-Stack bit. - optional bool s_bit = 3; - - // Time To Live. - optional int32 ttl = 4; -} - -// Configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation -// of lengths for Locator Block, Locator Node, Function, and Argument MUST be less -// than or equal to 128. -message BgpSrteSRv6SIDEndpointBehaviorAndStructure { - - // SRv6 SID Locator Block length in bits. - // default = 0 - optional int32 lb_length = 1; - - // SRv6 SID Locator Node length in bits. - // default = 0 - optional int32 ln_length = 2; - - // SRv6 SID Function length in bits. - // default = 0 - optional int32 func_length = 3; - - // SRv6 SID Arguments length in bits. - // default = 0 - optional int32 arg_length = 4; -} - -// Type A: SID only, in the form of MPLS Label. -message BgpSrteSegmentATypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // Label value in [0, 2^20 -1]. - optional int32 label = 2; - - // Traffic class in bits. - optional int32 tc = 3; - - // Bottom-of-Stack bit. - optional bool s_bit = 4; - - // Time To Live. - optional int32 ttl = 5; -} - -// Type B: SID only, in the form of IPv6 address. -message BgpSrteSegmentBTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // SRv6 SID. - // required = true - string srv6_sid = 2; - - // Optional SRv6 Endpoint Behavior and SID Structure. - optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 3; -} - -// Status: under-review -// Type C: IPv4 Node Address with optional SID. -message BgpSrteSegmentCTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // SR Algorithm identifier when A-Flag in on. - // default = 0 - optional int32 sr_algorithm = 2; - - // IPv4 address representing a node. - // required = true - string ipv4_node_address = 3; - - // Optional SR-MPLS SID. - optional BgpSrteSrMplsSid sr_mpls_sid = 4; -} - -// Type D: IPv6 Node Address with optional SID for SR MPLS. -message BgpSrteSegmentDTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // specifying SR Algorithm when when A-Flag as defined in above flags. - // default = 0 - optional int32 sr_algorithm = 2; - - // IPv6 address representing a node. - // required = true - string ipv6_node_address = 3; - - // Optional SR-MPLS SID. - optional BgpSrteSrMplsSid sr_mpls_sid = 4; -} - -// Type E: IPv4 Address and Local Interface ID with optional SID -message BgpSrteSegmentETypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - optional int32 local_interface_id = 2; - - // IPv4 address representing a node. - // required = true - string ipv4_node_address = 3; - - // Optional SR-MPLS SID. - optional BgpSrteSrMplsSid sr_mpls_sid = 4; -} - -// Type F: IPv4 Local and Remote addresses with optional SID. -message BgpSrteSegmentFTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // Local IPv4 Address. - // required = true - string local_ipv4_address = 2; - - // Remote IPv4 Address. - // required = true - string remote_ipv4_address = 3; - - // Optional SR-MPLS SID. - optional BgpSrteSrMplsSid sr_mpls_sid = 4; -} - -// Type G: IPv6 Address, Interface ID for local and remote pair with optional SID for -// SR MPLS. -message BgpSrteSegmentGTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - optional int32 local_interface_id = 2; - - // IPv6 address representing a node. - // required = true - string local_ipv6_node_address = 3; - - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - optional int32 remote_interface_id = 4; - - // IPv6 address representing a node. - // required = true - string remote_ipv6_node_address = 5; - - // Optional SR-MPLS SID. - optional BgpSrteSrMplsSid sr_mpls_sid = 6; -} - -// Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. -message BgpSrteSegmentHTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // Local IPv6 Address. - // required = true - string local_ipv6_address = 2; - - // Remote IPv6 Address. - // required = true - string remote_ipv6_address = 3; - - // Optional SR-MPLS SID. - optional BgpSrteSrMplsSid sr_mpls_sid = 4; -} - -// Type I: IPv6 Node Address with optional SRv6 SID. -message BgpSrteSegmentITypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // IPv6 address representing a node. - // required = true - string ipv6_node_address = 2; - - // Optional SRv6 SID. - optional string srv6_sid = 3; - - // Optional SRv6 Endpoint Behavior and SID Structure. - optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 4; -} - -// Type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional -// SID. -message BgpSrteSegmentJTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // SR Algorithm identifier when A-Flag in on. - // default = 0 - optional int32 sr_algorithm = 2; - - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - optional int32 local_interface_id = 3; - - // IPv6 address representing a node. - // required = true - string local_ipv6_node_address = 4; - - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - optional int32 remote_interface_id = 5; - - // IPv6 address representing a node. - // required = true - string remote_ipv6_node_address = 6; - - // Optional SRv6 SID. - optional string srv6_sid = 7; - - // Optional SRv6 Endpoint Behavior and SID Structure. - optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 8; -} - -// Type K: IPv6 Local and Remote addresses for SRv6 with optional SID. -message BgpSrteSegmentKTypeSubTlv { - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - optional string flags = 1; - - // SR Algorithm identifier when A-Flag in on. - // default = 0 - optional int32 sr_algorithm = 2; - - // IPv6 address representing a node. - // required = true - string local_ipv6_address = 3; - - // IPv6 address representing a node. - // required = true - string remote_ipv6_address = 4; - - // Optional SRv6 SID. - optional string srv6_sid = 5; - - // Optional SRv6 Endpoint Behavior and SID Structure. - optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 6; -} - -// Configuration for BGP Segment Routing Traffic Engineering policy. -// -message BgpSrteV6Policy { - - // Identifies the policy in the context of (color and endpoint) tuple. It is used by - // the SR Policy originator to make unique multiple occurrences of the same SR Policy. - // default = 1 - optional int64 distinguisher = 1; - - // Identifies the policy. It is used to match the color of the destination prefixes - // to steer traffic into the SR Policy. - // default = 100 - optional int64 color = 2; - - // Specifies a single node or a set of nodes (e.g., an anycast address). It is selected - // on the basis of the SR Policy type (AFI). - // required = true - string ipv6_endpoint = 3; - - message NextHopMode { - enum Enum { - unspecified = 0; - local_ip = 1; - manual = 2; - } - } - // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically - // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop - // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary - // IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - optional NextHopMode.Enum next_hop_mode = 4; - - message NextHopAddressType { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - } - } - // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. - // default = NextHopAddressType.Enum.ipv6 - optional NextHopAddressType.Enum next_hop_address_type = 5; - - // The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop - // type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding - // capability extended_next_hop_encoding should be enabled. - // default = 0.0.0.0 - optional string next_hop_ipv4_address = 6; - - // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' - // and the Nexthop type 'next_hop_address_type' is IPv6. - // default = ::0 - optional string next_hop_ipv6_address = 7; - - // Description missing in models - optional BgpRouteAdvanced advanced = 8; - - // Description missing in models - optional BgpAddPath add_path = 9; - - // Description missing in models - optional BgpAsPath as_path = 10; - - // Optional community settings. - repeated BgpCommunity communities = 11; - - // Optional Extended Community settings. - repeated BgpExtCommunity extcommunities = 12; - - // List of optional tunnel TLV settings. - repeated BgpSrteV6TunnelTlv tunnel_tlvs = 13; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 14; - - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - optional bool active = 15; -} - -// Configuration for BGP SRTE Tunnel TLV. -message BgpSrteV6TunnelTlv { - - // Description missing in models - optional BgpSrteRemoteEndpointSubTlv remote_endpoint_sub_tlv = 1; - - // Description missing in models - optional BgpSrteColorSubTlv color_sub_tlv = 2; - - // Description missing in models - optional BgpSrteBindingSubTlv binding_sub_tlv = 3; - - // Description missing in models - optional BgpSrtePreferenceSubTlv preference_sub_tlv = 4; - - // Description missing in models - optional BgpSrtePolicyPrioritySubTlv policy_priority_sub_tlv = 5; - - // Description missing in models - optional BgpSrtePolicyNameSubTlv policy_name_sub_tlv = 6; - - // Description missing in models - optional BgpSrteExplicitNullLabelPolicySubTlv explicit_null_label_policy_sub_tlv = 7; - - // Description missing in models - repeated BgpSrteSegmentList segment_lists = 8; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 9; - - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - optional bool active = 10; -} - -// Status: under-review -// Configuration for BGPv6 peer settings and routes. -message BgpV6Peer { - - // IPv6 address of the BGP peer for the session - // required = true - string peer_address = 1; - - // Description missing in models - optional BgpV6SegmentRouting segment_routing = 2; - - // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments - // (ES) Per BGP Peer for IPv6 Address Family Identifier (AFI). - // - // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . - // Each EVI contains a list of Broadcast Domains. - // Each Broadcast Domain contains a list of MAC/IP Ranges. - // - // is responsible for advertising Ethernet - // Auto-discovery Route Per EVI (Type 1). - // - // is responsible for advertising Ethernet Auto-discovery Route - // Per Ethernet Segment (Type 1). - // - // is responsible for advertising - // MAC/IP Advertisement Route (Type 2). - // - // is responsible for advertising Inclusive - // Multicast Ethernet Tag Route (Type 3). - // - // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). - repeated BgpV6EthernetSegment evpn_ethernet_segments = 3; - - message AsType { - enum Enum { - unspecified = 0; - ibgp = 1; - ebgp = 2; - } - } - // The type of BGP autonomous system. External BGP is used for BGP links between two - // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous - // system (ibgp). BGP property defaults are aligned with this object defined as an internal - // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to - // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' - // attribute in 'as_path' field in any Route Range should be changed from default value - // 'do_not_include_local_as' to any other value. - // required = true - AsType.Enum as_type = 4; - - // Autonomous System Number (AS number or ASN) - // required = true - int32 as_number = 5; - - message AsNumberWidth { - enum Enum { - unspecified = 0; - two = 1; - four = 2; - } - } - // The width in bytes of the as_number values. Any as_number values that exceeds the - // width MUST result in an error. - // default = AsNumberWidth.Enum.four - optional AsNumberWidth.Enum as_number_width = 6; - - // Description missing in models - optional BgpAdvanced advanced = 7; - - // Description missing in models - optional BgpCapability capability = 8; - - // Description missing in models - optional BgpLearnedInformationFilter learned_information_filter = 9; - - // Emulated BGPv4 route ranges. - repeated BgpV4RouteRange v4_routes = 10; - - // Emulated BGPv6 route ranges. - repeated BgpV6RouteRange v6_routes = 11; - - // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier - // (AFI). - repeated BgpSrteV4Policy v4_srte_policies = 12; - - // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier - // (AFI). - repeated BgpSrteV6Policy v6_srte_policies = 13; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 14; -} - -// Configuration for emulated BGPv6 peers and routes on a single IPv6 interface. -message BgpV6Interface { - - // The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this - // list of BGP peers. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // - // required = true - string ipv6_name = 1; - - // This contains the list of BGPv6 peers configured on this interface. - repeated BgpV6Peer peers = 2; -} - -// Status: under-review -// Configuration for BGPv6 segment routing settings. -message BgpV6SegmentRouting { - - // TBD - // default = False - optional bool ingress_supports_vpn = 1; - - // TBD - // default = False - optional bool reduced_encapsulation = 2; - - // TBD - // default = False - optional bool copy_time_to_live = 3; - - // TBD - // default = 0 - optional int32 time_to_live = 4; - - // TBD - // default = 0 - optional int32 max_sids_per_srh = 5; - - // TBD - // default = False - optional bool auto_generate_segment_left_value = 6; - - // TBD - // default = 0 - optional int32 segment_left_value = 7; - - // TBD - // default = False - optional bool advertise_sr_te_policy = 8; -} - -// Configuration for BGP Ethernet Segment ranges. Advertises following routes - -// -// Type 4 - Ethernet Segment Route -message BgpV6EthernetSegment { - - // Designated Forwarder (DF) election configuration. - optional BgpEthernetSegmentDfElection df_election = 1; - - // This contains the list of EVIs. - repeated BgpV6EvpnEvis evis = 2; - - // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero - // ESI is '10000000000000000000' . - // default = 00000000000000000000 - optional string esi = 3; - - message ActiveMode { - enum Enum { - unspecified = 0; - single_active = 1; - all_active = 2; - } - } - // Single Active or All Active mode Redundancy mode selection for Multi-home. - // default = ActiveMode.Enum.all_active - optional ActiveMode.Enum active_mode = 4; - - // The label value to be advertised as ESI Label in ESI Label Extended Community. This - // is included in Ethernet Auto-discovery per ES Routes advertised by a router. - // default = 0 - optional int32 esi_label = 5; - - // Description missing in models - optional BgpRouteAdvanced advanced = 6; - - // Optional community settings. - repeated BgpCommunity communities = 7; - - // Optional Extended Community settings. - repeated BgpExtCommunity ext_communities = 8; - - // Optional AS PATH settings. - optional BgpAsPath as_path = 9; -} - -// This contains a list of different flavors of EVPN. -// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. -// -// Need to instantiate correct type of EVPN instance as per requirement. -message BgpV6EvpnEvis { - - message Choice { - enum Enum { - unspecified = 0; - evi_vxlan = 1; - } - } - // Description missing in models - // default = Choice.Enum.evi_vxlan - optional Choice.Enum choice = 1; - - // EVPN VXLAN instance to be configured per Ethernet Segment. - optional BgpV6EviVxlan evi_vxlan = 2; -} - -// Configuration for BGP EVPN EVI. Advertises following routes - -// -// Type 3 - Inclusive Multicast Ethernet Tag Route -// -// Type 1 - Ethernet Auto-discovery Route (Per EVI) -// -// Type 1 - Ethernet Auto-discovery Route (Per ES) -message BgpV6EviVxlan { - - // This contains the list of Broadcast Domains to be configured per EVI. - repeated BgpV6EviVxlanBroadcastDomain broadcast_domains = 1; - - message ReplicationType { - enum Enum { - unspecified = 0; - ingress_replication = 1; - } - } - // This model only supports Ingress Replication - // default = ReplicationType.Enum.ingress_replication - optional ReplicationType.Enum replication_type = 2; - - // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel - // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. - // default = 16 - optional int32 pmsi_label = 3; - - // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet - // Auto-discovery Route per - // default = 0 - optional int32 ad_label = 4; - - // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying - // an EVI. Example - for the as_2octet 60005:100. - optional BgpRouteDistinguisher route_distinguisher = 5; - - // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with - // this EVI. - repeated BgpRouteTarget route_target_export = 6; - - // List of L2VNI import targets associated with this EVI. - repeated BgpRouteTarget route_target_import = 7; - - // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. - repeated BgpRouteTarget l3_route_target_export = 8; - - // List of L3VNI Import Route Targets. - repeated BgpRouteTarget l3_route_target_import = 9; - - // Description missing in models - optional BgpRouteAdvanced advanced = 10; - - // Optional community settings. - repeated BgpCommunity communities = 11; - - // Optional Extended Community settings. - repeated BgpExtCommunity ext_communities = 12; - - // Optional AS PATH settings. - optional BgpAsPath as_path = 13; -} - -// Configuration for Broadcast Domains per EVI. -message BgpV6EviVxlanBroadcastDomain { - - // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. - // - // - // Advertises following route - - // Type 2 - MAC/IP Advertisement Route. - repeated BgpCMacIpRange cmac_ip_range = 1; - - // The Ethernet Tag ID of the Broadcast Domain. - // default = 0 - optional int64 ethernet_tag_id = 2; - - // VLAN-Aware service to be enabled or disabled. - // default = False - optional bool vlan_aware_service = 3; -} - -// Description missing in models -message DeviceVxlan { - - // IPv4 VXLAN Tunnels - repeated VxlanV4Tunnel v4_tunnels = 1; - - // IPv6 VXLAN Tunnels - repeated VxlanV6Tunnel v6_tunnels = 2; -} - -// Configuration and operational state parameters relating to IPv4 VXLAN tunnel end-point -// interface. -message VxlanV4Tunnel { - - // Determines the source interface. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // required = true - string source_interface = 1; - - // Description missing in models - optional VxlanV4TunnelDestinationIPMode destination_ip_mode = 2; - - // VXLAN Network Identifier (VNI) to distinguish network instances on the wire - // required = true - int32 vni = 3; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 4; -} - -// Configuration and operational state parameters relating to IPv6 VXLAN tunnel end-point -// interface. -message VxlanV6Tunnel { - - // Determines the source interface. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // - // required = true - string source_interface = 1; - - // Description missing in models - optional VxlanV6TunnelDestinationIPMode destination_ip_mode = 2; - - // VXLAN Network Identifier (VNI) to distinguish network instances on the wire - // required = true - int32 vni = 3; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 4; -} - -// Communication mode between the VTEPs, either unicast or multicast. -message VxlanV4TunnelDestinationIPMode { - - message Choice { - enum Enum { - unspecified = 0; - unicast = 1; - multicast = 2; - } - } - // unicast or multicast - // default = Choice.Enum.multicast - optional Choice.Enum choice = 1; - - // Description missing in models - optional VxlanV4TunnelDestinationIPModeUnicast unicast = 2; - - // Description missing in models - optional VxlanV4TunnelDestinationIPModeMulticast multicast = 3; -} - -// Communication mode between the VTEPs, either unicast or multicast. -message VxlanV6TunnelDestinationIPMode { - - message Choice { - enum Enum { - unspecified = 0; - unicast = 1; - multicast = 2; - } - } - // unicast or multicast - // default = Choice.Enum.multicast - optional Choice.Enum choice = 1; - - // Description missing in models - optional VxlanV6TunnelDestinationIPModeUnicast unicast = 2; - - // Description missing in models - optional VxlanV6TunnelDestinationIPModeMulticast multicast = 3; -} - -// Description missing in models -message VxlanV4TunnelDestinationIPModeUnicast { - - // List of VTEPs for member VNI(VXLAN Network Identifier) - repeated VxlanV4TunnelDestinationIPModeUnicastVtep vteps = 1; -} - -// Description missing in models -message VxlanV6TunnelDestinationIPModeUnicast { - - // List of VTEPs for member VNI(VXLAN Network Identifier) - repeated VxlanV6TunnelDestinationIPModeUnicastVtep vteps = 1; -} - -// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated -// MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request -// for another end-host IP address, its local VTEP intercepts the ARP request and checks -// for the ARP-resolved IP address in its ARP suppression cache table. If it finds -// a match, the local VTEP sends an ARP response on behalf of the remote end host. -message VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - - // Remote VM MAC address bound to Remote VM IPv4 address - optional string remote_vm_mac = 1; - - // Remote VM IPv4 address - optional string remote_vm_ipv4 = 2; -} - -// VTEP (VXLAN Tunnel End Point (VTEP)) parameters -message VxlanV4TunnelDestinationIPModeUnicastVtep { - - // Remote VXLAN Tunnel End Point address - optional string remote_vtep_address = 1; - - // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated - // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request - // for another end-host IP address, its local VTEP intercepts the ARP request and checks - // for the ARP-resolved IP address in its ARP suppression cache table. If it finds - // a match, the local VTEP sends an ARP response on behalf of the remote end host. - repeated VxlanTunnelDestinationIPModeUnicastArpSuppressionCache arp_suppression_cache = 2; -} - -// VTEP (VXLAN Tunnel End Point (VTEP)) parameters -message VxlanV6TunnelDestinationIPModeUnicastVtep { - - // Remote VXLAN Tunnel End Point address - optional string remote_vtep_address = 1; - - // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated - // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request - // for another end-host IP address, its local VTEP intercepts the ARP request and checks - // for the ARP-resolved IP address in its ARP suppression cache table. If it finds - // a match, the local VTEP sends an ARP response on behalf of the remote end host. - repeated VxlanTunnelDestinationIPModeUnicastArpSuppressionCache arp_suppression_cache = 2; -} - -// Multicast Group address for member VNI(VXLAN Network Identifier) -message VxlanV4TunnelDestinationIPModeMulticast { - - // IPv4 Multicast address - optional string address = 1; -} - -// Multicast Group address for member VNI(VXLAN Network Identifier) -message VxlanV6TunnelDestinationIPModeMulticast { - - // IPv6 Multicast address - optional string address = 1; -} - -// TCP configs. -message DeviceTcp { - - // IPv4/v6 interface name - // - // x-constraint: - // - /components/schemas/Device.Ipv4Base/properties/name - // - // required = true - string ip_interface_name = 1; - - // The TCP keep alive timer - // default = 7200 - optional int32 keep_alive_time = 2; - - // The TCP receive buffer size - // default = 4096 - optional int32 receive_buffer_size = 3; - - // The TCP transmit buffer size - // default = 4096 - optional int32 transmit_buffer_size = 4; - - // TCP source port no - // default = 1024 - optional int32 source_port = 5; - - // TCP destination port no - // default = 1024 - optional int32 destination_port = 6; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 7; -} - -// HTTP configs. -message DeviceHttp { - - // TCP interface name - // - // x-constraint: - // - /components/schemas/Device.Tcp/properties/name - // - optional string tcp_name = 1; - - // Enable SSL for HTTP - // default = False - optional bool enable_ssl = 2; - - // HTTP Version - // default = 1 - optional int32 http_version = 3; - - // Enable cookie support for HTTP - // default = False - optional bool enable_cookie_support = 4; - - // Max HTTP sessions - // default = 1 - optional int32 max_sessions = 5; - - // Max HTTP streams - // default = 1 - optional int32 max_streams = 6; - - // Command timeout timer in seconds - // default = 600 - optional int32 command_timeout = 7; - - // URL stats count - // default = 10 - optional int32 url_stats_count = 8; - - // Enable cookie support for per connection - // default = False - optional bool enable_per_conn_cookie_support = 9; - - message Method { - enum Enum { - unspecified = 0; - get = 1; - post = 2; - } - } - // HTTP method like GET, POST - optional Method.Enum method = 10; - - // Description missing in models - optional MethodGet get = 11; - - // Description missing in models - optional MethodPost post = 12; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 13; -} - -// A GET operation of HTTP -message MethodGet { - - // Server name/IP address - // required = true - string destination = 1; - - // The page name to perform get opertaion. - // required = true - string page = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - -// A POST operation of HTTP -message MethodPost { - - // The Server name/IP address - // required = true - string destination = 1; - - // The page name to perform post opertaion. - // required = true - string page = 2; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 3; -} - -// A high level data plane traffic flow. -message Flow { - - // The transmit and receive endpoints. - // required = true - FlowTxRx tx_rx = 1; - - // The header is a list of traffic protocol headers. - // - // The order of traffic protocol headers assigned to the list is the - // order they will appear on the wire. - // - // In the case of an empty list the keyword/value of minItems: 1 - // indicates that an implementation MUST provide at least one - // Flow.Header object. - // - // The default value for the Flow.Header choice property is ethernet - // which will result in an implementation by default providing at least - // one ethernet packet header. - repeated FlowHeader packet = 2; - - // The size of the packets. - optional FlowSize size = 3; - - // The transmit rate of the packets. - optional FlowRate rate = 4; - - // The transmit duration of the packets. - optional FlowDuration duration = 5; - - // Flow metrics. - optional FlowMetrics metrics = 6; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - string name = 7; -} - -// A container for different types of transmit and receive -// endpoint containers. -message FlowTxRx { - - message Choice { - enum Enum { - unspecified = 0; - port = 1; - device = 2; - } - } - // The type of transmit and receive container used by the flow. - // default = Choice.Enum.port - optional Choice.Enum choice = 1; - - // Description missing in models - optional FlowPort port = 2; - - // Description missing in models - optional FlowRouter device = 3; -} - -// A container for a transmit port and 0..n intended receive ports. -// When assigning this container to a flow the flows's -// packet headers will not be populated with any address resolution -// information such as source and/or destination addresses. -// For example Flow.Ethernet dst mac address values will be defaulted to 0. -// For full control over the Flow.properties.packet header contents use this -// container. -message FlowPort { - - // The unique name of a port that is the transmit port. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - // required = true - string tx_name = 1; - - // The unique name of a port that is the intended receive port. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - optional string rx_name = 2; -} - -// A container for declaring a map of 1..n transmit devices to 1..n receive devices. -// This allows for a single flow to have different tx to rx device flows such as a -// single one to one map or a many to many map. -message FlowRouter { - - message Mode { - enum Enum { - unspecified = 0; - mesh = 1; - one_to_one = 2; - } - } - // Determines the mapping of tx_names to rx_names. - // - // The mesh mode creates traffic between each value in tx_names to - // every value in rx_names except in the case where the individual - // tx_names value is equal to rx_names value which will be ignored. - // Identical values in tx_names or rx_names MUST raise an error. - // - // The one_to_one mode creates traffic between each value pair in - // of tx_names and rx_names by index. - // The length of tx_names and rx_name MUST be the same. - // Identical values in tx_names or rx_names MUST raise an error. - // default = Mode.Enum.mesh - optional Mode.Enum mode = 1; - - // TBD - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - repeated string tx_names = 2; - - // TBD - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - repeated string rx_names = 3; -} - -// Configuration for all traffic packet headers -message FlowHeader { - - message Choice { - enum Enum { - unspecified = 0; - custom = 1; - ethernet = 2; - vlan = 3; - vxlan = 4; - ipv4 = 5; - ipv6 = 6; - pfcpause = 7; - ethernetpause = 8; - tcp = 9; - udp = 10; - gre = 11; - gtpv1 = 12; - gtpv2 = 13; - arp = 14; - icmp = 15; - icmpv6 = 16; - ppp = 17; - igmpv1 = 18; - mpls = 19; - } - } - // The available types of flow headers. If one is not provided the - // default ethernet packet header MUST be provided. - // default = Choice.Enum.ethernet - optional Choice.Enum choice = 1; - - // Description missing in models - optional FlowCustom custom = 2; - - // Description missing in models - optional FlowEthernet ethernet = 3; - - // Description missing in models - optional FlowVlan vlan = 4; - - // Description missing in models - optional FlowVxlan vxlan = 5; - - // Description missing in models - optional FlowIpv4 ipv4 = 6; - - // Description missing in models - optional FlowIpv6 ipv6 = 7; - - // Description missing in models - optional FlowPfcPause pfcpause = 8; - - // Description missing in models - optional FlowEthernetPause ethernetpause = 9; - - // Description missing in models - optional FlowTcp tcp = 10; - - // Description missing in models - optional FlowUdp udp = 11; - - // Description missing in models - optional FlowGre gre = 12; - - // Description missing in models - optional FlowGtpv1 gtpv1 = 13; - - // Description missing in models - optional FlowGtpv2 gtpv2 = 14; - - // Description missing in models - optional FlowArp arp = 15; - - // Description missing in models - optional FlowIcmp icmp = 16; - - // Description missing in models - optional FlowIcmpv6 icmpv6 = 17; - - // Description missing in models - optional FlowPpp ppp = 18; - - // Description missing in models - optional FlowIgmpv1 igmpv1 = 19; - - // Description missing in models - optional FlowMpls mpls = 20; -} - -// Custom packet header -message FlowCustom { - - // A custom packet header defined as a string of hex bytes. The string MUST contain - // sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be - // discarded. This packet header can be used in multiple places in the packet. - // required = true - string bytes = 1; -} - -// Ethernet packet header -message FlowEthernet { - - // Description missing in models - optional PatternFlowEthernetDst dst = 1; - - // Description missing in models - optional PatternFlowEthernetSrc src = 2; - - // Description missing in models - optional PatternFlowEthernetEtherType ether_type = 3; - - // Description missing in models - optional PatternFlowEthernetPfcQueue pfc_queue = 4; -} - -// VLAN packet header -message FlowVlan { - - // Description missing in models - optional PatternFlowVlanPriority priority = 1; - - // Description missing in models - optional PatternFlowVlanCfi cfi = 2; - - // Description missing in models - optional PatternFlowVlanId id = 3; - - // Description missing in models - optional PatternFlowVlanTpid tpid = 4; -} - -// VXLAN packet header -message FlowVxlan { - - // Description missing in models - optional PatternFlowVxlanFlags flags = 1; - - // Description missing in models - optional PatternFlowVxlanReserved0 reserved0 = 2; - - // Description missing in models - optional PatternFlowVxlanVni vni = 3; - - // Description missing in models - optional PatternFlowVxlanReserved1 reserved1 = 4; -} - -// IPv4 packet header -message FlowIpv4 { - - // Description missing in models - optional PatternFlowIpv4Version version = 1; - - // Description missing in models - optional PatternFlowIpv4HeaderLength header_length = 2; - - // Description missing in models - optional FlowIpv4Priority priority = 3; - - // Description missing in models - optional PatternFlowIpv4TotalLength total_length = 4; - - // Description missing in models - optional PatternFlowIpv4Identification identification = 5; - - // Description missing in models - optional PatternFlowIpv4Reserved reserved = 6; - - // Description missing in models - optional PatternFlowIpv4DontFragment dont_fragment = 7; - - // Description missing in models - optional PatternFlowIpv4MoreFragments more_fragments = 8; - - // Description missing in models - optional PatternFlowIpv4FragmentOffset fragment_offset = 9; - - // Description missing in models - optional PatternFlowIpv4TimeToLive time_to_live = 10; - - // Description missing in models - optional PatternFlowIpv4Protocol protocol = 11; - - // Description missing in models - optional PatternFlowIpv4HeaderChecksum header_checksum = 12; - - // Description missing in models - optional PatternFlowIpv4Src src = 13; - - // Description missing in models - optional PatternFlowIpv4Dst dst = 14; -} - -// A container for ipv4 raw, tos, dscp ip priorities. -message FlowIpv4Priority { - - message Choice { - enum Enum { - unspecified = 0; - raw = 1; - tos = 2; - dscp = 3; - } - } - // Description missing in models - // default = Choice.Enum.dscp - optional Choice.Enum choice = 1; - - // Description missing in models - optional PatternFlowIpv4PriorityRaw raw = 2; - - // Description missing in models - optional FlowIpv4Tos tos = 3; - - // Description missing in models - optional FlowIpv4Dscp dscp = 4; -} - -// Differentiated services code point (DSCP) packet field. -message FlowIpv4Dscp { - - // Description missing in models - optional PatternFlowIpv4DscpPhb phb = 1; - - // Description missing in models - optional PatternFlowIpv4DscpEcn ecn = 2; -} - -// Type of service (TOS) packet field. -message FlowIpv4Tos { - - // Description missing in models - optional PatternFlowIpv4TosPrecedence precedence = 1; - - // Description missing in models - optional PatternFlowIpv4TosDelay delay = 2; - - // Description missing in models - optional PatternFlowIpv4TosThroughput throughput = 3; - - // Description missing in models - optional PatternFlowIpv4TosReliability reliability = 4; - - // Description missing in models - optional PatternFlowIpv4TosMonetary monetary = 5; - - // Description missing in models - optional PatternFlowIpv4TosUnused unused = 6; -} - -// IPv6 packet header -message FlowIpv6 { - - // Description missing in models - optional PatternFlowIpv6Version version = 1; - - // Description missing in models - optional PatternFlowIpv6TrafficClass traffic_class = 2; - - // Description missing in models - optional PatternFlowIpv6FlowLabel flow_label = 3; - - // Description missing in models - optional PatternFlowIpv6PayloadLength payload_length = 4; - - // Description missing in models - optional PatternFlowIpv6NextHeader next_header = 5; - - // Description missing in models - optional PatternFlowIpv6HopLimit hop_limit = 6; - - // Description missing in models - optional PatternFlowIpv6Src src = 7; - - // Description missing in models - optional PatternFlowIpv6Dst dst = 8; -} - -// IEEE 802.1Qbb PFC Pause packet header. -message FlowPfcPause { - - // Description missing in models - optional PatternFlowPfcPauseDst dst = 1; - - // Description missing in models - optional PatternFlowPfcPauseSrc src = 2; - - // Description missing in models - optional PatternFlowPfcPauseEtherType ether_type = 3; - - // Description missing in models - optional PatternFlowPfcPauseControlOpCode control_op_code = 4; - - // Description missing in models - optional PatternFlowPfcPauseClassEnableVector class_enable_vector = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass0 pause_class_0 = 6; - - // Description missing in models - optional PatternFlowPfcPausePauseClass1 pause_class_1 = 7; - - // Description missing in models - optional PatternFlowPfcPausePauseClass2 pause_class_2 = 8; - - // Description missing in models - optional PatternFlowPfcPausePauseClass3 pause_class_3 = 9; - - // Description missing in models - optional PatternFlowPfcPausePauseClass4 pause_class_4 = 10; - - // Description missing in models - optional PatternFlowPfcPausePauseClass5 pause_class_5 = 11; - - // Description missing in models - optional PatternFlowPfcPausePauseClass6 pause_class_6 = 12; - - // Description missing in models - optional PatternFlowPfcPausePauseClass7 pause_class_7 = 13; -} - -// IEEE 802.3x global ethernet pause packet header -message FlowEthernetPause { - - // Description missing in models - optional PatternFlowEthernetPauseDst dst = 1; - - // Description missing in models - optional PatternFlowEthernetPauseSrc src = 2; - - // Description missing in models - optional PatternFlowEthernetPauseEtherType ether_type = 3; - - // Description missing in models - optional PatternFlowEthernetPauseControlOpCode control_op_code = 4; - - // Description missing in models - optional PatternFlowEthernetPauseTime time = 5; -} - -// TCP packet header -message FlowTcp { - - // Description missing in models - optional PatternFlowTcpSrcPort src_port = 1; - - // Description missing in models - optional PatternFlowTcpDstPort dst_port = 2; - - // Description missing in models - optional PatternFlowTcpSeqNum seq_num = 3; - - // Description missing in models - optional PatternFlowTcpAckNum ack_num = 4; - - // Description missing in models - optional PatternFlowTcpDataOffset data_offset = 5; - - // Description missing in models - optional PatternFlowTcpEcnNs ecn_ns = 6; - - // Description missing in models - optional PatternFlowTcpEcnCwr ecn_cwr = 7; - - // Description missing in models - optional PatternFlowTcpEcnEcho ecn_echo = 8; - - // Description missing in models - optional PatternFlowTcpCtlUrg ctl_urg = 9; - - // Description missing in models - optional PatternFlowTcpCtlAck ctl_ack = 10; - - // Description missing in models - optional PatternFlowTcpCtlPsh ctl_psh = 11; - - // Description missing in models - optional PatternFlowTcpCtlRst ctl_rst = 12; - - // Description missing in models - optional PatternFlowTcpCtlSyn ctl_syn = 13; - - // Description missing in models - optional PatternFlowTcpCtlFin ctl_fin = 14; - - // Description missing in models - optional PatternFlowTcpWindow window = 15; -} - -// UDP packet header -message FlowUdp { - - // Description missing in models - optional PatternFlowUdpSrcPort src_port = 1; - - // Description missing in models - optional PatternFlowUdpDstPort dst_port = 2; - - // Description missing in models - optional PatternFlowUdpLength length = 3; - - // Description missing in models - optional PatternFlowUdpChecksum checksum = 4; -} - -// Standard GRE packet header (RFC2784) -message FlowGre { - - // Description missing in models - optional PatternFlowGreChecksumPresent checksum_present = 1; - - // Description missing in models - optional PatternFlowGreReserved0 reserved0 = 2; - - // Description missing in models - optional PatternFlowGreVersion version = 3; - - // Description missing in models - optional PatternFlowGreProtocol protocol = 4; - - // Description missing in models - optional PatternFlowGreChecksum checksum = 5; - - // Description missing in models - optional PatternFlowGreReserved1 reserved1 = 6; -} - -// GTPv1 packet header -message FlowGtpv1 { - - // Description missing in models - optional PatternFlowGtpv1Version version = 1; - - // Description missing in models - optional PatternFlowGtpv1ProtocolType protocol_type = 2; - - // Description missing in models - optional PatternFlowGtpv1Reserved reserved = 3; - - // Description missing in models - optional PatternFlowGtpv1EFlag e_flag = 4; - - // Description missing in models - optional PatternFlowGtpv1SFlag s_flag = 5; - - // Description missing in models - optional PatternFlowGtpv1PnFlag pn_flag = 6; - - // Description missing in models - optional PatternFlowGtpv1MessageType message_type = 7; - - // Description missing in models - optional PatternFlowGtpv1MessageLength message_length = 8; - - // Description missing in models - optional PatternFlowGtpv1Teid teid = 9; - - // Description missing in models - optional PatternFlowGtpv1SquenceNumber squence_number = 10; - - // Description missing in models - optional PatternFlowGtpv1NPduNumber n_pdu_number = 11; - - // Description missing in models - optional PatternFlowGtpv1NextExtensionHeaderType next_extension_header_type = 12; - - // A list of optional extension headers. - repeated FlowGtpExtension extension_headers = 13; -} - -// Description missing in models -message FlowGtpExtension { - - // Description missing in models - optional PatternFlowGtpExtensionExtensionLength extension_length = 1; - - // Description missing in models - optional PatternFlowGtpExtensionContents contents = 2; - - // Description missing in models - optional PatternFlowGtpExtensionNextExtensionHeader next_extension_header = 3; -} - -// GTPv2 packet header -message FlowGtpv2 { - - // Description missing in models - optional PatternFlowGtpv2Version version = 1; - - // Description missing in models - optional PatternFlowGtpv2PiggybackingFlag piggybacking_flag = 2; - - // Description missing in models - optional PatternFlowGtpv2TeidFlag teid_flag = 3; - - // Description missing in models - optional PatternFlowGtpv2Spare1 spare1 = 4; - - // Description missing in models - optional PatternFlowGtpv2MessageType message_type = 5; - - // Description missing in models - optional PatternFlowGtpv2MessageLength message_length = 6; - - // Description missing in models - optional PatternFlowGtpv2Teid teid = 7; - - // Description missing in models - optional PatternFlowGtpv2SequenceNumber sequence_number = 8; - - // Description missing in models - optional PatternFlowGtpv2Spare2 spare2 = 9; -} - -// ARP packet header -message FlowArp { - - // Description missing in models - optional PatternFlowArpHardwareType hardware_type = 1; - - // Description missing in models - optional PatternFlowArpProtocolType protocol_type = 2; - - // Description missing in models - optional PatternFlowArpHardwareLength hardware_length = 3; - - // Description missing in models - optional PatternFlowArpProtocolLength protocol_length = 4; - - // Description missing in models - optional PatternFlowArpOperation operation = 5; - - // Description missing in models - optional PatternFlowArpSenderHardwareAddr sender_hardware_addr = 6; - - // Description missing in models - optional PatternFlowArpSenderProtocolAddr sender_protocol_addr = 7; - - // Description missing in models - optional PatternFlowArpTargetHardwareAddr target_hardware_addr = 8; - - // Description missing in models - optional PatternFlowArpTargetProtocolAddr target_protocol_addr = 9; -} - -// ICMP packet header -message FlowIcmp { - - message Choice { - enum Enum { - unspecified = 0; - echo = 1; - } - } - // Description missing in models - // default = Choice.Enum.echo - optional Choice.Enum choice = 1; - - // Description missing in models - optional FlowIcmpEcho echo = 2; -} - -// Packet Header for ICMP echo request -message FlowIcmpEcho { - - // Description missing in models - optional PatternFlowIcmpEchoType type = 1; - - // Description missing in models - optional PatternFlowIcmpEchoCode code = 2; - - // Description missing in models - optional PatternFlowIcmpEchoChecksum checksum = 3; - - // Description missing in models - optional PatternFlowIcmpEchoIdentifier identifier = 4; - - // Description missing in models - optional PatternFlowIcmpEchoSequenceNumber sequence_number = 5; -} - -// ICMPv6 packet header -message FlowIcmpv6 { - - message Choice { - enum Enum { - unspecified = 0; - echo = 1; - } - } - // Description missing in models - // default = Choice.Enum.echo - optional Choice.Enum choice = 1; - - // Description missing in models - optional FlowIcmpv6Echo echo = 2; -} - -// Packet Header for ICMPv6 Echo -message FlowIcmpv6Echo { - - // Description missing in models - optional PatternFlowIcmpv6EchoType type = 1; - - // Description missing in models - optional PatternFlowIcmpv6EchoCode code = 2; - - // Description missing in models - optional PatternFlowIcmpv6EchoIdentifier identifier = 3; - - // Description missing in models - optional PatternFlowIcmpv6EchoSequenceNumber sequence_number = 4; - - // Description missing in models - optional PatternFlowIcmpv6EchoChecksum checksum = 5; -} - -// PPP packet header -message FlowPpp { - - // Description missing in models - optional PatternFlowPppAddress address = 1; - - // Description missing in models - optional PatternFlowPppControl control = 2; - - // Description missing in models - optional PatternFlowPppProtocolType protocol_type = 3; -} - -// IGMPv1 packet header -message FlowIgmpv1 { - - // Description missing in models - optional PatternFlowIgmpv1Version version = 1; - - // Description missing in models - optional PatternFlowIgmpv1Type type = 2; - - // Description missing in models - optional PatternFlowIgmpv1Unused unused = 3; - - // Description missing in models - optional PatternFlowIgmpv1Checksum checksum = 4; - - // Description missing in models - optional PatternFlowIgmpv1GroupAddress group_address = 5; -} - -// MPLS packet header; When configuring multiple such headers, the count shall not exceed -// 20. -message FlowMpls { - - // Description missing in models - optional PatternFlowMplsLabel label = 1; - - // Description missing in models - optional PatternFlowMplsTrafficClass traffic_class = 2; - - // Description missing in models - optional PatternFlowMplsBottomOfStack bottom_of_stack = 3; - - // Description missing in models - optional PatternFlowMplsTimeToLive time_to_live = 4; -} - -// The frame size which overrides the total length of the packet -message FlowSize { - - message Choice { - enum Enum { - unspecified = 0; - fixed = 1; - increment = 2; - random = 3; - } - } - // Description missing in models - // default = Choice.Enum.fixed - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 64 - optional int32 fixed = 2; - - // Description missing in models - optional FlowSizeIncrement increment = 3; - - // Description missing in models - optional FlowSizeRandom random = 4; -} - -// Frame size that increments from a starting size to -// an ending size incrementing by a step size. -message FlowSizeIncrement { - - // Starting frame size in bytes - // default = 64 - optional int32 start = 1; - - // Ending frame size in bytes - // default = 1518 - optional int32 end = 2; - - // Step frame size in bytes - // default = 1 - optional int32 step = 3; -} - -// Random frame size from a min value to a max value. -message FlowSizeRandom { - - // Description missing in models - // default = 64 - optional int32 min = 1; - - // Description missing in models - // default = 1518 - optional int32 max = 2; -} - -// The rate of packet transmission -message FlowRate { - - message Choice { - enum Enum { - unspecified = 0; - pps = 1; - bps = 2; - kbps = 3; - mbps = 4; - gbps = 5; - percentage = 6; - } - } - // The available types of flow rate. - // default = Choice.Enum.pps - optional Choice.Enum choice = 1; - - // Packets per second. - // default = 1000 - optional int64 pps = 2; - - // Bits per second. - // default = 1000000000 - optional int64 bps = 3; - - // Kilobits per second. - // default = 1000000 - optional int64 kbps = 4; - - // Megabits per second. - // default = 1000 - optional int64 mbps = 5; - - // Gigabits per second. - // default = 1 - optional int32 gbps = 6; - - // The percentage of a port location's available bandwidth. - // default = 100 - optional float percentage = 7; -} - -// A container for different transmit durations. -message FlowDuration { - - message Choice { - enum Enum { - unspecified = 0; - fixed_packets = 1; - fixed_seconds = 2; - burst = 3; - continuous = 4; - } - } - // A choice used to determine the type of duration. - // default = Choice.Enum.continuous - optional Choice.Enum choice = 1; - - // Description missing in models - optional FlowFixedPackets fixed_packets = 2; - - // Description missing in models - optional FlowFixedSeconds fixed_seconds = 3; - - // Description missing in models - optional FlowBurst burst = 4; - - // Description missing in models - optional FlowContinuous continuous = 5; -} - -// Transmit will be continuous and will not stop automatically. -message FlowContinuous { - - // The minimum gap between packets expressed as bytes. - // default = 12 - optional int32 gap = 1; - - // Description missing in models - optional FlowDelay delay = 2; -} - -// The optional container to specify the delay before starting -// transmission of packets. -message FlowDelay { - - message Choice { - enum Enum { - unspecified = 0; - bytes = 1; - nanoseconds = 2; - microseconds = 3; - } - } - // Description missing in models - // default = Choice.Enum.bytes - optional Choice.Enum choice = 1; - - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - optional float bytes = 2; - - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - optional float nanoseconds = 3; - - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - optional float microseconds = 4; -} - -// Transmit a fixed number of packets after which the flow will stop. -message FlowFixedPackets { - - // Stop transmit of the flow after this number of packets. - // default = 1 - optional int32 packets = 1; - - // The minimum gap between packets expressed as bytes. - // default = 12 - optional int32 gap = 2; - - // Description missing in models - optional FlowDelay delay = 3; -} - -// Transmit for a fixed number of seconds after which the flow will stop. -message FlowFixedSeconds { - - // Stop transmit of the flow after this number of seconds. - // default = 1 - optional float seconds = 1; - - // The minimum gap between packets expressed as bytes. - // default = 12 - optional int32 gap = 2; - - // Description missing in models - optional FlowDelay delay = 3; -} - -// Transmits continuous or fixed burst of packets. -// For continuous burst of packets, it will not automatically stop. -// For fixed burst of packets, it will stop after transmitting fixed number of bursts. -// -message FlowBurst { - - // The number of packet bursts transmitted per flow. - // A value of 0 implies continuous burst of packets. - // default = 0 - optional int32 bursts = 1; - - // The number of packets transmitted per burst. - // default = 1 - optional int32 packets = 2; - - // The minimum gap between packets expressed as bytes. - // default = 12 - optional int32 gap = 3; - - // Description missing in models - optional FlowDurationInterBurstGap inter_burst_gap = 4; -} - -// The optional container for specifying a gap between bursts. -message FlowDurationInterBurstGap { - - message Choice { - enum Enum { - unspecified = 0; - bytes = 1; - nanoseconds = 2; - microseconds = 3; - } - } - // The type of inter burst gap units. - // default = Choice.Enum.bytes - optional Choice.Enum choice = 1; - - // The amount of time between bursts expressed in bytes. - // A value of 0 indicates no gap between bursts. - // default = 12 - optional double bytes = 2; - - // The amount of time between bursts expressed in nanoseconds. - // A value of 0 indicates no gap between bursts. - // default = 96 - optional double nanoseconds = 3; - - // The amount of time between bursts expressed in microseconds. - // A value of 0 indicates no gap between bursts. - // default = 0.096 - optional double microseconds = 4; -} - -// The optional container for configuring flow metrics. -message FlowMetrics { - - // Enables flow metrics. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; - - // Enables additional flow metric loss calculation. - // default = False - optional bool loss = 2; - - // Enables additional flow metric first and last timestamps. - // default = False - optional bool timestamps = 3; - - // Latency metrics. - optional FlowLatencyMetrics latency = 4; -} - -// The optional container for per flow latency metric configuration. -message FlowLatencyMetrics { - - // True to enable latency metrics using timestamps. - // - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; - - message Mode { - enum Enum { - unspecified = 0; - store_forward = 1; - cut_through = 2; - } - } - // Select the type of latency measurement. The different types of - // latency measurements are: - // - // - // store_forward: - // The time interval starting when the last bit of the frame leaves the - // sending port and ending when the first bit of the frame is seen on - // the receiving port (LIFO). This is based on the RFC 1242 standard. - // - // - // cut_through: - // The time interval starting when the first bit of the frame leaves - // the sending port and ending when the first bit of the frame is seen - // on the receiving port (FIFO). This is based on the RFC 1242 - // standard. - // default = Mode.Enum.store_forward - optional Mode.Enum mode = 2; -} - -// The optional container for event configuration. -message Event { - - // True to enable all events. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; - - // Description missing in models - optional EventLink link = 2; - - // Description missing in models - optional EventRxRateThreshold rx_rate_threshold = 3; - - // Description missing in models - optional EventRouteAdvertiseWithdraw route_advertise_withdraw = 4; -} - -// The optional container for rx rate threshold event configuration. -message EventRxRateThreshold { - - // True to enable the rx_rate_threshold event. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; - - // True to enable notifications when the rx rate of a flow passes above - // or below the threshold value. - // default = 95 - optional float threshold = 2; -} - -// The optional container for link up/down event configuration. -message EventLink { - - // True to enable notifications when a link up/down event occurs. - // default = False - optional bool enable = 1; -} - -// The optional container for route advertise/withdraw event configuration. -message EventRouteAdvertiseWithdraw { - - // True to enable notifications when a route advertise/withdraw - // event occurs. - // default = False - optional bool enable = 1; -} - -// Description missing in models -message EventRequest { - - message Type { - enum Enum { - unspecified = 0; - link_down = 1; - link_up = 2; - route_withdraw = 3; - route_advertise = 4; - flow_rx_rate_above_threshold = 5; - flow_rx_rate_below_threshold = 6; - } - } - // Constrain the events being returned by specifying event types. - // If the list is empty then all event types will be returned. - repeated Type.Enum type = 1; - - // Constrain the events being returned by specifying event sources. - // If the list is empty then all event sources will be returned. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Bgp.V4RouteRange/name - // - /components/schemas/Bgp.V6RouteRange/name - // - repeated string source = 2; -} - -// A container that describes what events a system should provide and -// optionally where to publish them. -message EventSubscription { - - // Description missing in models - optional EventRequest events = 1; - - // Indicates where a client wants to be notified of the events set in - // the events property. - // If this property is empty or null then no event notifications will - // be forwarded. - optional string callbackurl = 2; -} - -// A list of errors that may have occurred while executing the request. -message ResponseError { - - // A list of any system specific errors that have occurred while - // executing the request. - repeated string errors = 1; -} - -// A list of warnings that have occurred while executing the request. -message ResponseWarning { - - // A list of any system specific warnings that have occurred while - // executing the request. - repeated string warnings = 1; -} - -// Port link state. -message LinkState { - - // The names of port objects to. An empty or null list will control all port objects. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; - - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The link state. - // required = true - State.Enum state = 2; -} - -// Flow transmit state. -message TransmitState { - - // The names of flows to which the transmit state will be applied to. If the list of - // flow_names is empty or null the state will be applied to all configured flows. - // If the list is not empty any flow that is not included in the list of flow_names - // MUST be ignored and not included in the state change. - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - repeated string flow_names = 1; - - message State { - enum Enum { - unspecified = 0; - start = 1; - stop = 2; - pause = 3; - resume = 4; - } - } - // The transmit state. - // If the value of the state property is 'start' then all flows defined by the 'flow_names' - // property will be started and the metric counters MUST be cleared prior to starting - // the flow(s). - // If the value of the state property is 'stop' then all flows defined by the 'flow_names' - // property will be stopped and the metric counters MUST NOT be cleared. - // If the value of the state property is 'pause' then all flows defined by the 'flow_names' - // property will be paused and the metric counters MUST NOT be cleared. - // If the value of the state property is 'resume' then any paused flows defined by the - // 'flow_names' property will start transmit at the point at which they were paused. - // Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) - // MUST NOT have their metric counters cleared. - // required = true - State.Enum state = 2; -} - -// Control port capture state -message CaptureState { - - // The names of ports to which the capture state will be applied to. If the list of - // port_names is empty or null the state will be applied to all configured ports. - // If the list is not empty any port that is not included in the list of port_names - // MUST be ignored and not included in the state change. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; - - message State { - enum Enum { - unspecified = 0; - start = 1; - stop = 2; - } - } - // The capture state. - // required = true - State.Enum state = 2; -} - -// A container of flows with associated properties to be updated without affecting the -// flows current transmit state. -message FlowsUpdate { - - message PropertyNames { - enum Enum { - unspecified = 0; - rate = 1; - size = 2; - } - } - // Flow properties to be updated without affecting the transmit state. - repeated PropertyNames.Enum property_names = 1; - - // The list of configured flows for which given property will be updated. - repeated Flow flows = 2; -} - -// Sets the device route state -message RouteState { - - // The names of device route objects to control. If no names are specified then all - // route objects that match the x-constraint will be affected. - // - // x-constraint: - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // - repeated string names = 1; - - message State { - enum Enum { - unspecified = 0; - withdraw = 1; - advertise = 2; - } - } - // Route specific states - // required = true - State.Enum state = 2; -} - -// Ping request details -message PingRequest { - - // Array of ping requests - repeated Ping endpoints = 1; -} - -// Sets all configured protocols to `start` or `stop` state. -message ProtocolState { - - message State { - enum Enum { - unspecified = 0; - start = 1; - stop = 2; - } - } - // Protocol specific states - // required = true - State.Enum state = 1; -} - -// Sets attributes for the requested state/actions to be performed on device(s) -message DeviceState { - - message Choice { - enum Enum { - unspecified = 0; - lacp_member_state = 1; - } - } - // Description missing in models - optional Choice.Enum choice = 1; - - // Description missing in models - optional LacpMemberState lacp_member_state = 2; -} - -// Description missing in models -message Ping { - - message Choice { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - } - } - // IPv4 or IPv6 ping. - // default = Choice.Enum.ipv4 - optional Choice.Enum choice = 1; - - // Description missing in models - optional PingIpv4 ipv4 = 2; - - // Description missing in models - optional PingIpv6 ipv6 = 3; -} - -// Description missing in models -message PingIpv4 { - - // A base IPv4 interface - // - // x-constraint: - // - /components/schemas/Device.Ipv4Base/properties/name - // - optional string src_name = 1; - - // IPv4 address to ping - optional string dst_ip = 2; -} - -// Description missing in models -message PingIpv6 { - - // A base IPv6 interface - // - // x-constraint: - // - /components/schemas/Device.Ipv6Base/properties/name - // - optional string src_name = 1; - - // IPv6 addresses to ping. - optional string dst_ip = 2; -} - -// A container for ping responses. -message PingResponse { - - // Description missing in models - repeated Response responses = 1; -} - -// Description missing in models -message Response { - - // The name of the source IPv4 or IPv6 interface from which ping was sent. - // - // x-constraint: - // - /components/schemas/Device.Ipv4Base/properties/name - // - /components/schemas/Device.Ipv6Base/properties/name - // - optional string src_name = 1; - - // Destination address. - optional string dst_ip = 2; - - message Result { - enum Enum { - unspecified = 0; - success = 1; - failure = 2; - } - } - // Result of the ping request. - // default = Result.Enum.failure - optional Result.Enum result = 3; -} - -// Set LACP state for specified LAG Member Port(s). -message LacpMemberState { - - // The names of LAG members (ports) for which the state has to be applied. An empty - // or null list will control all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string lag_member_port_names = 1; - - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The LACP Member admin state. 'up' will start transmission of LACPDUs on selected - // member ports. 'down' will send a LACPDU with 'sync' flag unset and then stop transmission - // of LACPDUs on selected member ports. - // required = true - State.Enum state = 2; -} - -// Request to traffic generator for metrics of choice -message MetricsRequest { - - message Choice { - enum Enum { - unspecified = 0; - port = 1; - flow = 2; - bgpv4 = 3; - bgpv6 = 4; - isis = 5; - lag = 6; - lacp_lag_member = 7; - } - } - // Description missing in models - // default = Choice.Enum.port - optional Choice.Enum choice = 1; - - // Description missing in models - optional PortMetricsRequest port = 2; - - // Description missing in models - optional FlowMetricsRequest flow = 3; - - // Description missing in models - optional Bgpv4MetricsRequest bgpv4 = 4; - - // Description missing in models - optional Bgpv6MetricsRequest bgpv6 = 5; - - // Description missing in models - optional IsisMetricsRequest isis = 6; - - // Description missing in models - optional LagMetricsRequest lag = 7; - - // Description missing in models - optional LacpLagMemberMetricsRequest lacp_lag_member = 8; -} - -// Response containing chosen traffic generator metrics -message MetricsResponse { - - message Choice { - enum Enum { - unspecified = 0; - flow_metrics = 1; - port_metrics = 2; - bgpv4_metrics = 3; - bgpv6_metrics = 4; - isis_metrics = 5; - lag_metrics = 6; - lacp_lag_member_metrics = 7; - } - } - // Description missing in models - // default = Choice.Enum.port_metrics - optional Choice.Enum choice = 1; - - // Description missing in models - repeated PortMetric port_metrics = 2; - - // Description missing in models - repeated FlowMetric flow_metrics = 3; - - // Description missing in models - repeated Bgpv4Metric bgpv4_metrics = 4; - - // Description missing in models - repeated Bgpv6Metric bgpv6_metrics = 5; - - // Description missing in models - repeated IsisMetric isis_metrics = 6; - - // Description missing in models - repeated LagMetric lag_metrics = 7; - - // Description missing in models - repeated LacpLagMemberMetric lacp_lag_member_metrics = 8; -} - -// The port result request to the traffic generator -message PortMetricsRequest { - - // The names of objects to return results for. An empty list will return all port row - // results. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; - - message ColumnNames { - enum Enum { - unspecified = 0; - transmit = 1; - location = 2; - link = 3; - capture = 4; - frames_tx = 5; - frames_rx = 6; - bytes_tx = 7; - bytes_rx = 8; - frames_tx_rate = 9; - frames_rx_rate = 10; - bytes_tx_rate = 11; - bytes_rx_rate = 12; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of the port cannot be excluded. - repeated ColumnNames.Enum column_names = 2; -} - -// Description missing in models -message PortMetric { - - // The name of a configured port - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - optional string name = 1; - - // The state of the connection to the test port location. The format should be the configured - // port location along with any custom connection state message. - optional string location = 2; - - message Link { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The state of the test port link The string can be up, down or a custom error message. - optional Link.Enum link = 3; - - message Capture { - enum Enum { - unspecified = 0; - started = 1; - stopped = 2; - } - } - // The state of the test port capture infrastructure. The string can be started, stopped - // or a custom error message. - optional Capture.Enum capture = 4; - - // The current total number of frames transmitted - optional int64 frames_tx = 5; - - // The current total number of valid frames received - optional int64 frames_rx = 6; - - // The current total number of bytes transmitted - optional int64 bytes_tx = 7; - - // The current total number of valid bytes received - optional int64 bytes_rx = 8; - - // The current rate of frames transmitted - optional float frames_tx_rate = 9; - - // The current rate of valid frames received - optional float frames_rx_rate = 10; - - // The current rate of bytes transmitted - optional float bytes_tx_rate = 11; - - // The current rate of bytes received - optional float bytes_rx_rate = 12; -} - -// The container for a flow metric request. -message FlowMetricsRequest { - - // Flow metrics will be retrieved for these flow names. - // If no flow names are specified then all flows will be returned. - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - repeated string flow_names = 1; - - // A list of metric groups used to disaggregate flows. A metric group that does not - // exist for a flow group MUST return an error. - optional FlowMetricGroupRequest metric_groups = 2; - - message MetricNames { - enum Enum { - unspecified = 0; - transmit = 1; - frames_tx = 2; - frames_rx = 3; - bytes_tx = 4; - bytes_rx = 5; - frames_tx_rate = 6; - frames_rx_rate = 7; - } - } - // The list of metric names that the returned result set will contain. If the list is - // empty then all metrics will be returned. - repeated MetricNames.Enum metric_names = 3; -} - -// Description missing in models -message FlowMetricGroupRequest { - - message Choice { - enum Enum { - unspecified = 0; - ingress = 1; - egress = 2; - } - } - // The type of disaggregation to be applied to the flow metrics. - // default = Choice.Enum.ingress - optional Choice.Enum choice = 1; - - // Disaggregate the flow metrics by ingress packet header field names. - // If the items is empty then no disaggregation will be done. - // - // x-constraint: - // - /components/schemas/Flow/properties/packet/../metric_group - // - // default = [] - repeated string ingress = 2; - - // Disaggregate the flow metrics by egress packet header field names - // If the items is empty then no disaggregation will be done. - // - // x-constraint: - // - /components/schemas/Flow/properties/egress/../metric_group - // - // default = [] - repeated string egress = 3; -} - -// A container for flow metrics. -// The container is keyed by the name, port_tx, port_rx and metric_groups -// values. -message FlowMetric { - - // The name of the flow - optional string name = 1; - - // The name of the transmit port - optional string port_tx = 2; - - // The name of the receive port - optional string port_rx = 3; - - // Flow disaggregation groups. - repeated FlowMetricGroup metric_groups = 4; - - message Transmit { - enum Enum { - unspecified = 0; - started = 1; - stopped = 2; - paused = 3; - } - } - // The transmit state of the flow. - optional Transmit.Enum transmit = 5; - - // The current total number of frames transmitted - optional int64 frames_tx = 6; - - // The current total number of valid frames received - optional int64 frames_rx = 7; - - // The current total number of bytes transmitted - optional int64 bytes_tx = 8; - - // The current total number of bytes received - optional int64 bytes_rx = 9; - - // The current rate of frames transmitted - optional float frames_tx_rate = 10; - - // The current rate of valid frames received - optional float frames_rx_rate = 11; - - // The percentage of lost frames - optional float loss = 12; - - // Description missing in models - optional MetricTimestamp timestamps = 13; - - // Description missing in models - optional MetricLatency latency = 14; -} - -// Description missing in models -message FlowMetricGroup { - - // Name of packet field metric group - optional string name = 1; - - // Value of named packet field metric group - optional string value = 2; -} - -// The container for timestamp metrics. -// The container will be empty if the timestamp has not been configured for -// the flow. -message MetricTimestamp { - - // First timestamp in nanoseconds - optional double first_timestamp_ns = 1; - - // Last timestamp in nanoseconds - optional double last_timestamp_ns = 2; -} - -// The container for latency metrics. -// The min/max/avg values are dependent on the type of latency measurement -// mode that is configured. -// The container will be empty if the latency has not been configured for -// the flow. -message MetricLatency { - - // Minimum latency in nanoseconds - optional double minimum_ns = 1; - - // Maximum latency in nanoseconds - optional double maximum_ns = 2; - - // Average latency in nanoseconds - optional double average_ns = 3; -} - -// The request to retrieve BGPv4 per peer metrics/statistics. -message Bgpv4MetricsRequest { - - // The names of BGPv4 peers to return results for. An empty list will return results - // for all BGPv4 peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4peer/properties/name - // - repeated string peer_names = 1; - - message ColumnNames { - enum Enum { - unspecified = 0; - session_state = 1; - session_flap_count = 2; - routes_advertised = 3; - routes_received = 4; - route_withdraws_sent = 5; - route_withdraws_received = 6; - updates_sent = 7; - updates_received = 8; - opens_sent = 9; - opens_received = 10; - keepalives_sent = 11; - keepalives_received = 12; - notifications_sent = 13; - notifications_received = 14; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the BGPv4 peer cannot be excluded. - repeated ColumnNames.Enum column_names = 2; -} - -// BGPv4 per peer statistics information. -message Bgpv4Metric { - - // The name of a configured BGPv4 peer. - optional string name = 1; - - message SessionState { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Session state as up or down. Up refers to an Established state and Down refers to - // any other state. - optional SessionState.Enum session_state = 2; - - // Number of times the session went from Up to Down state. - optional int32 session_flap_count = 3; - - // Number of routes advertised. - optional int32 routes_advertised = 4; - - // Number of routes received. - optional int32 routes_received = 5; - - // Number of route withdraws sent. - optional int32 route_withdraws_sent = 6; - - // Number of route withdraws received. - optional int32 route_withdraws_received = 7; - - // Number of Update messages sent. - optional int32 updates_sent = 8; - - // Number of Update messages received. - optional int32 updates_received = 9; - - // Number of Open messages sent. - optional int32 opens_sent = 10; - - // Number of Open messages received. - optional int32 opens_received = 11; - - // Number of Keepalive messages sent. - optional int32 keepalives_sent = 12; - - // Number of Keepalive messages received. - optional int32 keepalives_received = 13; - - // Number of Notification messages sent. - optional int32 notifications_sent = 14; - - // Number of Notification messages received. - optional int32 notifications_received = 15; -} - -// The request to retrieve BGPv6 per peer metrics/statistics. -message Bgpv6MetricsRequest { - - // The names of BGPv6 peers to return results for. An empty list will return results - // for all BGPv6 peers. - // - // x-constraint: - // - /components/schemas/Bgp.V6peer/properties/name - // - repeated string peer_names = 1; - - message ColumnNames { - enum Enum { - unspecified = 0; - session_state = 1; - session_flap_count = 2; - routes_advertised = 3; - routes_received = 4; - route_withdraws_sent = 5; - route_withdraws_received = 6; - updates_sent = 7; - updates_received = 8; - opens_sent = 9; - opens_received = 10; - keepalives_sent = 11; - keepalives_received = 12; - notifications_sent = 13; - notifications_received = 14; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the BGPv6 peer cannot be excluded. - repeated ColumnNames.Enum column_names = 2; -} - -// BGPv6 per peer statistics information. -message Bgpv6Metric { - - // The name of a configured BGPv6 peer. - optional string name = 1; - - message SessionState { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Session state as up or down. Up refers to an Established state and Down refers to - // any other state. - optional SessionState.Enum session_state = 2; - - // Number of times the session went from Up to Down state. - optional int32 session_flap_count = 3; - - // Number of routes advertised. - optional int32 routes_advertised = 4; - - // Number of routes received. - optional int32 routes_received = 5; - - // Number of route withdraws sent. - optional int32 route_withdraws_sent = 6; - - // Number of route withdraws received. - optional int32 route_withdraws_received = 7; - - // Number of Update messages sent. - optional int32 updates_sent = 8; - - // Number of Update messages received. - optional int32 updates_received = 9; - - // Number of Open messages sent. - optional int32 opens_sent = 10; - - // Number of Open messages received. - optional int32 opens_received = 11; - - // Number of Keepalive messages sent. - optional int32 keepalives_sent = 12; - - // Number of Keepalive messages received. - optional int32 keepalives_received = 13; - - // Number of Notification messages sent. - optional int32 notifications_sent = 14; - - // Number of Notification messages received. - optional int32 notifications_received = 15; -} - -// The request to retrieve ISIS per Router metrics/statistics. -message IsisMetricsRequest { - - // The names of ISIS Routers to return results for. An empty list will return results - // for all ISIS router. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - repeated string router_names = 1; - - message ColumnNames { - enum Enum { - unspecified = 0; - l1_sessions_up = 1; - l1_session_flap = 2; - l1_database_size = 3; - l1_broadcast_hellos_sent = 4; - l1_broadcast_hellos_received = 5; - l1_point_to_point_hellos_sent = 6; - l1_point_to_point_hellos_received = 7; - l1_psnp_sent = 8; - l1_psnp_received = 9; - l1_csnp_sent = 10; - l1_csnp_received = 11; - l1_lsp_sent = 12; - l1_lsp_received = 13; - l2_sessions_up = 14; - l2_session_flap = 15; - l2_database_size = 16; - l2_broadcast_hellos_sent = 17; - l2_broadcast_hellos_received = 18; - l2_point_to_point_hellos_sent = 19; - l2_point_to_point_hellos_received = 20; - l2_psnp_sent = 21; - l2_psnp_received = 22; - l2_csnp_sent = 23; - l2_csnp_received = 24; - l2_lsp_sent = 25; - l2_lsp_received = 26; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the ISIS Router cannot be excluded. - repeated ColumnNames.Enum column_names = 2; -} - -// ISIS per router statistics information. -message IsisMetric { - - // The name of a configured ISIS router. - optional string name = 1; - - // The number of Level 1 (L1) sessions that are fully up. - optional int32 l1_sessions_up = 2; - - // The number of Level 1 Sessions Flap. - optional int32 l1_session_flap = 3; - - // Number of Level 1 Hello messages sent. - optional int32 l1_broadcast_hellos_sent = 4; - - // Number of Level 1 Hello messages received. - optional int32 l1_broadcast_hellos_received = 5; - - // Number of Level 1 Point-to-Point(P2P) Hello messages sent. - optional int32 l1_point_to_point_hellos_sent = 6; - - // Number of Level 1 Point-to-Point(P2P) Hello messages received. - optional int32 l1_point_to_point_hellos_received = 7; - - // Number of Link State Updates (LSPs) in the Level 1 LSP Databases. - optional int32 l1_database_size = 8; - - // Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. - optional int32 l1_psnp_sent = 9; - - // Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. - optional int32 l1_psnp_received = 10; - - // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. - optional int32 l1_csnp_sent = 11; - - // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. - optional int32 l1_csnp_received = 12; - - // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. - optional int32 l1_lsp_sent = 13; - - // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. - optional int32 l1_lsp_received = 14; - - // The number of Level 2 (L2) sessions that are fully up. - optional int32 l2_sessions_up = 15; - - // The number of Level 2 Sessions Flap. - optional int32 l2_session_flap = 16; - - // Number of Level 2 Hello messages sent. - optional int32 l2_broadcast_hellos_sent = 17; - - // Number of Level 2 Hello messages received. - optional int32 l2_broadcast_hellos_received = 18; - - // Number of Level 2 Point-to-Point(P2P) Hello messages sent. - optional int32 l2_point_to_point_hellos_sent = 19; - - // Number of Level 2 Point-to-Point(P2P) Hello messages received. - optional int32 l2_point_to_point_hellos_received = 20; - - // Number of Link State Updates (LSPs) in the Level 2 LSP Databases. - optional int32 l2_database_size = 21; - - // Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. - optional int32 l2_psnp_sent = 22; - - // Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. - optional int32 l2_psnp_received = 23; - - // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. - optional int32 l2_csnp_sent = 24; - - // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. - optional int32 l2_csnp_received = 25; - - // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. - optional int32 l2_lsp_sent = 26; - - // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. - optional int32 l2_lsp_received = 27; -} - -// The request to retrieve per LAG metrics/statistics. -message LagMetricsRequest { - - // The names of LAGs to return results for. An empty list will return results for all - // LAGs. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - repeated string lag_names = 1; - - message ColumnNames { - enum Enum { - unspecified = 0; - oper_states = 1; - member_ports_up = 2; - frames_tx = 3; - frames_rx = 4; - bytes_tx = 5; - bytes_rx = 6; - frames_tx_rate = 7; - frames_rx_rate = 8; - bytes_tx_rate = 9; - bytes_rx_rate = 10; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of the LAG cannot be excluded. - repeated ColumnNames.Enum column_names = 2; -} - -// Description missing in models -message LagMetric { - - // The name of a configured LAG - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - optional string name = 1; - - message OperStatus { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The current operational state of the LAG. The state can be up or down. State 'up' - // indicates member_ports_up >= min_links. - optional OperStatus.Enum oper_status = 2; - - // The number of LAG member ports up. - optional int32 member_ports_up = 3; - - // The current total number of frames transmitted. - optional int64 frames_tx = 4; - - // The current total number of valid frames received. - optional int64 frames_rx = 5; - - // The current total number of bytes transmitted. - optional int64 bytes_tx = 6; - - // The current total number of valid bytes received. - optional int64 bytes_rx = 7; - - // The current rate of frames transmitted. - optional float frames_tx_rate = 8; - - // The current rate of valid frames received. - optional float frames_rx_rate = 9; - - // The current rate of bytes transmitted. - optional float bytes_tx_rate = 10; - - // The current rate of bytes received. - optional float bytes_rx_rate = 11; -} - -// The request to retrieve LACP per LAG member metrics/statistics. -message LacpLagMemberMetricsRequest { - - // The names of LAG (ports group) for which LACP metrics to be returned. An empty list - // will return metrics for all LAGs. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - repeated string lag_names = 1; - - // The names of LAG members (ports) for which LACP metrics to be returned. An empty - // list will return metrics for all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string lag_member_port_names = 2; - - message ColumnNames { - enum Enum { - unspecified = 0; - lacp_in_pkts = 1; - lacp_out_pkts = 2; - lacp_rx_errors = 3; - activity = 4; - timeout = 5; - synchronization = 6; - aggregatable = 7; - collecting = 8; - distributing = 9; - system_id = 10; - oper_key = 11; - partner_id = 12; - partner_key = 13; - port_num = 14; - partner_port_num = 15; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of LAG and LAG member can not be - // excluded. - repeated ColumnNames.Enum column_names = 3; -} - -// LACP metrics (statistics) per LAG member. -message LacpLagMemberMetric { - - // The name of a LAG (ports group) configured with LACP. - optional string lag_name = 1; - - // The name of a LAG member (port) configured with LACP. - optional string lag_member_port_name = 2; - - // Number of LACPDUs received. - optional int64 lacp_in_pkts = 3; - - // Number of LACPDUs transmitted. - optional int64 lacp_out_pkts = 4; - - // Number of LACPDUs receive packet errors. - optional int64 lacp_rx_errors = 5; - - message Activity { - enum Enum { - unspecified = 0; - active = 1; - passive = 2; - } - } - // Indicates participant is active or passive. - optional Activity.Enum activity = 6; - - message Timeout { - enum Enum { - unspecified = 0; - short = 1; - long = 2; - } - } - // The timeout type (short or long) used by the participant. - optional Timeout.Enum timeout = 7; - - message Synchronization { - enum Enum { - unspecified = 0; - in_sync = 1; - out_sync = 2; - } - } - // Indicates whether the participant is in-sync or out-of-sync. - optional Synchronization.Enum synchronization = 8; - - // A true value indicates that the participant will allow the link to be used as part - // of the aggregate. A false value indicates the link should be used as an individual - // link. - optional bool aggregatable = 9; - - // If true, the participant is collecting incoming frames on the link, otherwise false. - optional bool collecting = 10; - - // When true, the participant is distributing outgoing frames; when false, distribution - // is disabled. - optional bool distributing = 11; - - // MAC address that defines the local system ID for the aggregate interface. - optional string system_id = 12; - - // Current operational value of the key for the aggregate interface. - optional int32 oper_key = 13; - - // MAC address representing the protocol partner's interface system ID. - optional string partner_id = 14; - - // Operational value of the protocol partner's key. - optional int32 partner_key = 15; - - // Port number of the local (actor) aggregation member. - optional int32 port_num = 16; - - // Port number of the partner (remote) port for this member port. - optional int32 partner_port_num = 17; -} - -// Request to traffic generator for states of choice -message StatesRequest { - - message Choice { - enum Enum { - unspecified = 0; - ipv4_neighbors = 1; - ipv6_neighbors = 2; - bgp_prefixes = 3; - isis_lsps = 4; - } - } - // Description missing in models - // default = Choice.Enum.ipv4_neighbors - optional Choice.Enum choice = 1; - - // Description missing in models - optional Neighborsv4StatesRequest ipv4_neighbors = 2; - - // Description missing in models - optional Neighborsv6StatesRequest ipv6_neighbors = 3; - - // Description missing in models - optional BgpPrefixStateRequest bgp_prefixes = 4; - - // Description missing in models - optional IsisLspsStateRequest isis_lsps = 5; -} - -// Response containing chosen traffic generator states -message StatesResponse { - - message Choice { - enum Enum { - unspecified = 0; - ipv4_neighbors = 1; - ipv6_neighbors = 2; - bgp_prefixes = 3; - isis_lsps = 4; - } - } - // Description missing in models - // default = Choice.Enum.ipv4_neighbors - optional Choice.Enum choice = 1; - - // Description missing in models - repeated Neighborsv4State ipv4_neighbors = 2; - - // Description missing in models - repeated Neighborsv6State ipv6_neighbors = 3; - - // Description missing in models - repeated BgpPrefixesState bgp_prefixes = 4; - - // Description missing in models - repeated IsisLspsState isis_lsps = 5; -} - -// The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). -message Neighborsv4StatesRequest { - - // The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will - // be retrieved. If no names are specified then the results will contain Neighbor state - // (ARP cache entries) for all available Ethernet interfaces. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - repeated string ethernet_names = 1; -} - -// IPv4 Neighbor state (ARP cache entry). -message Neighborsv4State { - - // The name of the Ethernet interface associated with the Neighbor state (ARP cache - // entry). - // required = true - string ethernet_name = 1; - - // The IPv4 address of the neighbor. - // required = true - string ipv4_address = 2; - - // The link-layer address (MAC) of the neighbor. - optional string link_layer_address = 3; -} - -// The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). -message Neighborsv6StatesRequest { - - // The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will - // be retrieved. If no names are specified then the results will contain Neighbor state - // (NDISC cache entries) for all available Ethernet interfaces. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - repeated string ethernet_names = 1; -} - -// IPv6 Neighbor state (NDISC cache entry). -message Neighborsv6State { - - // The name of the Ethernet interface associated with the Neighbor state (NDISC cache - // entry). - // required = true - string ethernet_name = 1; - - // The IPv6 address of the neighbor. - // required = true - string ipv6_address = 2; - - // The link-layer address (MAC) of the neighbor. - optional string link_layer_address = 3; -} - -// The request to retrieve BGP peer prefix information. -message BgpPrefixStateRequest { - - // The names of BGP peers for which prefix information will be retrieved. If no names - // are specified then the results will contain prefix information for all configured - // BGP peers. - // - // x-constraint: - // - /components/schemas/Bgp.v4Peer/properties/name - // - /components/schemas/Bgp.v6Peer/properties/name - // - repeated string bgp_peer_names = 1; - - message PrefixFilters { - enum Enum { - unspecified = 0; - ipv4_unicast = 1; - ipv6_unicast = 2; - } - } - // Specify which prefixes to return. If the list is empty or missing then all prefixes - // will be returned. - repeated PrefixFilters.Enum prefix_filters = 2; - - // The IPv4 unicast results can be filtered by specifying additional prefix search criteria. - // If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will - // be returned. - repeated BgpPrefixIpv4UnicastFilter ipv4_unicast_filters = 3; - - // The IPv6 unicast results can be filtered by specifying additional prefix search criteria. - // If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will - // be returned. - repeated BgpPrefixIpv6UnicastFilter ipv6_unicast_filters = 4; -} - -// Description missing in models -message BgpPrefixIpv4UnicastFilter { - - // The addresses to match. If the addresses property is missing or empty then all addresses - // will match. - repeated string addresses = 1; - - // The prefix length to match. If the prefix length is missing then all prefix lengths - // will match. - optional int32 prefix_length = 2; - - message Origin { - enum Enum { - unspecified = 0; - igp = 1; - egp = 2; - } - } - // The origin to match. If the origin is missing then all origins will match. - optional Origin.Enum origin = 3; - - // The path id to match. If the path id is missing then all path ids will match. - optional int32 path_id = 4; -} - -// Description missing in models -message BgpPrefixIpv6UnicastFilter { - - // The addresses to match. If the addresses property is missing or empty then all addresses - // will match. - repeated string addresses = 1; - - // The prefix length to match. If the prefix length is missing then all prefix lengths - // will match. - optional int32 prefix_length = 2; - - message Origin { - enum Enum { - unspecified = 0; - igp = 1; - egp = 2; - } - } - // The origin to match. If the origin is missing then all origins will match. - optional Origin.Enum origin = 3; - - // The path id to match. If the path id is missing then all path ids will match. - optional int32 path_id = 4; -} - -// BGP peer prefixes. -message BgpPrefixesState { - - // The name of a BGP peer. - optional string bgp_peer_name = 1; - - // Description missing in models - repeated BgpPrefixIpv4UnicastState ipv4_unicast_prefixes = 2; - - // Description missing in models - repeated BgpPrefixIpv6UnicastState ipv6_unicast_prefixes = 3; -} - -// IPv4 unicast prefix. -message BgpPrefixIpv4UnicastState { - - // An IPv4 unicast address - optional string ipv4_address = 1; - - // The length of the prefix. - optional int32 prefix_length = 2; - - message Origin { - enum Enum { - unspecified = 0; - igp = 1; - egp = 2; - } - } - // The origin of the prefix. - optional Origin.Enum origin = 3; - - // The path id. - optional int32 path_id = 4; - - // The IPv4 address of the egress interface. - optional string ipv4_next_hop = 5; - - // The IPv6 address of the egress interface. - optional string ipv6_next_hop = 6; - - // Optional community attributes. - repeated ResultBgpCommunity communities = 7; - - // Description missing in models - optional ResultBgpAsPath as_path = 8; -} - -// IPv6 unicast prefix. -message BgpPrefixIpv6UnicastState { - - // An IPv6 unicast address - optional string ipv6_address = 1; - - // The length of the prefix. - optional int32 prefix_length = 2; - - message Origin { - enum Enum { - unspecified = 0; - igp = 1; - egp = 2; - } - } - // The origin of the prefix. - optional Origin.Enum origin = 3; - - // The path id. - optional int32 path_id = 4; - - // The IPv4 address of the egress interface. - optional string ipv4_next_hop = 5; - - // The IPv6 address of the egress interface. - optional string ipv6_next_hop = 6; - - // Optional community attributes. - repeated ResultBgpCommunity communities = 7; - - // Description missing in models - optional ResultBgpAsPath as_path = 8; -} - -// BGP communities provide additional capability for tagging routes and for modifying -// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit -// number which is broken into 16-bit AS number and a 16-bit custom value. -message ResultBgpCommunity { - - message Type { - enum Enum { - unspecified = 0; - manual_as_number = 1; - no_export = 2; - no_advertised = 3; - no_export_subconfed = 4; - llgr_stale = 5; - no_llgr = 6; - } - } - // The type of community AS number. If community type is manual_as_number then as_number - // and as_custom will be available. - optional Type.Enum type = 1; - - // First two octets of 32 bit community AS number. - optional int32 as_number = 2; - - // Last two octets of the community value. - optional int32 as_custom = 3; -} - -// This attribute identifies the autonomous systems through which routing information -// carried in this UPDATE message has passed. -message ResultBgpAsPath { - - // AS Path segments present in the received AS Path attribute. - repeated ResultBgpAsPathSegment segments = 1; -} - -// Configuration for a single BGP AS path segment -message ResultBgpAsPathSegment { - - message Type { - enum Enum { - unspecified = 0; - as_seq = 1; - as_set = 2; - as_confed_seq = 3; - as_confed_set = 4; - } - } - // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting - // with the most recent ASN being added read from left to right. - // The other three AS_PATH types are used for Confederations - AS_SET is the type of - // AS_PATH attribute that summarizes routes using using the aggregate-address command, - // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives - // the list of ASNs in the path starting with the most recent ASN to be added reading - // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be - // sent in BGP Updates. - optional Type.Enum type = 1; - - // The AS numbers in this AS path segment. - repeated int64 as_numbers = 2; -} - -// The request to retrieve ISIS Link State PDU (LSP) information learned by the router. -message IsisLspsStateRequest { - - // The names of ISIS routers for which learned information is requested. An empty list - // will return results for all ISIS routers. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - repeated string isis_router_names = 1; -} - -// The result of ISIS LSP information that are retrieved. -message IsisLspsState { - - // The name of the ISIS Router. - optional string isis_router_name = 1; - - // One or more LSPs that are learned by this ISIS router. - repeated IsisLspState lsps = 2; -} - -// ISIS LSP. -message IsisLspState { - - // LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID - // of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent - // Pseudonode ID and LSP number respectively. A pseudonode is a logical representation - // of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN - // segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with - // the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. - // Then the sequence number is incremented by 1. - // required = true - string lsp_id = 1; - - message PduType { - enum Enum { - unspecified = 0; - level_1 = 1; - level_2 = 2; - } - } - // Link State PDU type. - optional PduType.Enum pdu_type = 2; - - // Remaining lifetime in seconds before LSP expires. - optional int64 remaining_lifetime = 3; - - // Sequence number of the LSP. - optional int64 sequence_number = 4; - - // Total length of the LSP. - optional int32 pdu_length = 5; - - // LSP Type-Block flags. - optional IsisLspFlags flags = 6; - - // IS Type - bits 1 and 2 indicate the type of Intermediate System. - // 1 - ( i.e. bit 1 set) Level 1 Intermediate system. - // 2 - Unused value. - // 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. - optional int32 is_type = 7; - - // It refers to Link State PDU State TLVs container. - optional IsisLspTlvs tlvs = 8; -} - -// This contains the list of TLVs present in one LSP. -message IsisLspTlvs { - - // Array of Hostname TLVs ( type 137) present in this LSP. - repeated IsisLspHostname hostname_tlvs = 1; - - // Array of IS-Reachability TLVs (type 2) present in this LSP. - repeated IsisLspIsReachabilityTlv is_reachability_tlvs = 2; - - // Array of Extended IS-Reachability TLVs (type 22) present in this LSP. - repeated IsisLspExtendedIsReachabilityTlv extended_is_reachability_tlvs = 3; - - // Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. - repeated IsisLspIpv4InternalReachabilityTlv ipv4_internal_reachability_tlvs = 4; - - // Array of IPv4 External Reachability TLVs (type 130) present in this LSP. - repeated IsisLspIpv4ExternalReachabilityTlv ipv4_external_reachability_tlvs = 5; - - // Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. - repeated IsisLspExtendedIpv4ReachabilityTlv extended_ipv4_reachability_tlvs = 6; - - // Array of IPv6 Reachability TLVs (type 236) present in this LSP. - repeated IsisLspIpv6ReachabilityTlv ipv6_reachability_tlvs = 7; -} - -// It contains Hostname for the TLV 137. -message IsisLspHostname { - - // Hostname for an ISIS router. - optional string hostname = 1; -} - -// LSP Type flags. -message IsisLspFlags { - - // When set, the originator supports partition repair. - optional bool partition_repair = 1; - - // When set, the originator is attached to another area using the referred metric. - optional bool attached_error = 2; - - // When set, the originator is attached to another - // area using the referred metric. - optional bool attached_expense = 3; - - // Delay Metric - when set, the originator is attached to another - // area using the referred metric. - optional bool attached_delay = 4; - - // Default Metric - when set, the originator is attached to another - // area using the referred metric. - optional bool attached_default = 5; - - // Overload bit - when set, the originator is overloaded, and must - // be avoided in path calculation. - optional bool overload = 6; -} - -// This container describes list of ISIS neighbors and attributes in IS-Reachability -// TLV (type 2). -message IsisLspIsReachabilityTlv { - - // This container describes Intermediate System (IS) neighbors. - repeated IsisLspneighbor neighbors = 1; -} - -// This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type -// 22). -message IsisLspExtendedIsReachabilityTlv { - - // This container describes IS neighbors. - repeated IsisLspneighbor neighbors = 1; -} - -// This contains IS neighbors. -message IsisLspneighbor { - - // The System ID for this emulated ISIS router, e.g. 640100010000. - optional string system_id = 1; -} - -// This container defines list of IPv4 internal reachability information in one IPv4 -// internal reachability TLV. -// This is advertised when the origin-type is set 'internal' in route range configurations. -message IsisLspIpv4InternalReachabilityTlv { - - // Describes list of IPv4 prefixes in this TLV. - repeated IsisLspV4Prefix prefixes = 1; -} - -// This container defines list of IPv4 external reachability information in one IPv4 -// external reachability TLV. -// This is advertised when the origin-type is set 'external' in route range configurations. -message IsisLspIpv4ExternalReachabilityTlv { - - // Describes list of IPv4 prefixes in this TLV.. - repeated IsisLspV4Prefix prefixes = 1; -} - -// This group defines attributes of an IPv4 standard prefix. -message IsisLspV4Prefix { - - // An IPv4 unicast prefix reachable via the originator of this LSP. - optional string ipv4_address = 1; - - // The length of the IPv4 prefix. - optional int32 prefix_length = 2; - - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - optional RedistributionType.Enum redistribution_type = 3; - - // ISIS default metric value. - optional int32 default_metric = 4; - - message OriginType { - enum Enum { - unspecified = 0; - internal = 1; - external = 2; - } - } - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - optional OriginType.Enum origin_type = 5; -} - -// This container defines list of IPv4 extended reachability information in one Extended -// IPv4 External Reachability TLV. -// It is advertised when the 'wide metric' is enabled. -message IsisLspExtendedIpv4ReachabilityTlv { - - // IPv4 prefix contained within extended reachability TLVs. - repeated IsisLspExtendedV4Prefix prefixes = 1; -} - -// This group defines attributes of an IPv4 standard prefix. -message IsisLspExtendedV4Prefix { - - // An IPv4 unicast prefix reachable via the originator of this LSP. - optional string ipv4_address = 1; - - // The length of the IPv4 prefix. - optional int32 prefix_length = 2; - - // ISIS wide metric. - optional int32 metric = 3; - - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - optional RedistributionType.Enum redistribution_type = 4; - - // Description missing in models - optional IsisLspPrefixAttributes prefix_attributes = 5; -} - -// It defines list of IPv6 extended reachability information in one IPv6 Reachability -// TLV. -message IsisLspIpv6ReachabilityTlv { - - // IPv6 prefix contained within reachability TLVs. - repeated IsisLspV6Prefix prefixes = 1; -} - -// It defines attributes of an IPv6 standard prefix. -message IsisLspV6Prefix { - - // An IPv6 unicast prefix reachable via the originator of this LSP. - optional string ipv6_address = 1; - - // The length of the IPv6 prefix. - optional int32 prefix_length = 2; - - // ISIS wide metric. - optional int32 metric = 3; - - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - optional RedistributionType.Enum redistribution_type = 4; - - message OriginType { - enum Enum { - unspecified = 0; - internal = 1; - external = 2; - } - } - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - optional OriginType.Enum origin_type = 5; - - // Description missing in models - optional IsisLspPrefixAttributes prefix_attributes = 6; -} - -// This contains the properties of ISIS Prefix attributes for the extended IPv4 and -// IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html -message IsisLspPrefixAttributes { - - // External Prefix Flag (Bit 0) - optional bool x_flag = 1; - - // Re-advertisement Flag (Bit 1) - optional bool r_flag = 2; - - // Node Flag (Bit 2) - optional bool n_flag = 3; -} - -// The capture result request to the traffic generator. Stops the port capture on the -// port_name and returns the capture. -message CaptureRequest { - - // The name of a port a capture is started on. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // required = true - string port_name = 1; -} - -// mac counter pattern -message PatternFlowEthernetDstCounter { - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination MAC address -message PatternFlowEthernetDst { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 00:00:00:00:00:00 - optional string auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowEthernetDstCounter increment = 6; - - // Description missing in models - optional PatternFlowEthernetDstCounter decrement = 7; -} - -// mac counter pattern -message PatternFlowEthernetSrcCounter { - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source MAC address -message PatternFlowEthernetSrc { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetSrcCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetSrcCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowEthernetEtherTypeCounter { - - // Description missing in models - // default = 65535 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Ethernet type -message PatternFlowEthernetEtherType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 65535 - optional int32 value = 2; - - // Description missing in models - // default = [65535] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 65535 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowEthernetEtherTypeCounter increment = 6; - - // Description missing in models - optional PatternFlowEthernetEtherTypeCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowEthernetPfcQueueCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Priority flow control queue -message PatternFlowEthernetPfcQueue { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetPfcQueueCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetPfcQueueCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowVlanPriorityCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Priority code point -message PatternFlowVlanPriority { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVlanPriorityCounter increment = 5; - - // Description missing in models - optional PatternFlowVlanPriorityCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowVlanCfiCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Canonical format indicator or drop elegible indicator -message PatternFlowVlanCfi { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVlanCfiCounter increment = 5; - - // Description missing in models - optional PatternFlowVlanCfiCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowVlanIdCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Vlan identifier -message PatternFlowVlanId { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVlanIdCounter increment = 5; - - // Description missing in models - optional PatternFlowVlanIdCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowVlanTpidCounter { - - // Description missing in models - // default = 33024 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Protocol identifier -message PatternFlowVlanTpid { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 33024 - optional int32 value = 2; - - // Description missing in models - // default = [33024] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVlanTpidCounter increment = 5; - - // Description missing in models - optional PatternFlowVlanTpidCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowVxlanFlagsCounter { - - // Description missing in models - // default = 8 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid -// vxlan network id (VNI). The other 7 bits (designated R) are reserved fields and -// MUST be set to zero on transmission and ignored on receipt. -message PatternFlowVxlanFlags { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 8 - optional int32 value = 2; - - // Description missing in models - // default = [8] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVxlanFlagsCounter increment = 5; - - // Description missing in models - optional PatternFlowVxlanFlagsCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowVxlanReserved0Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reserved field -message PatternFlowVxlanReserved0 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVxlanReserved0Counter increment = 5; - - // Description missing in models - optional PatternFlowVxlanReserved0Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowVxlanVniCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// VXLAN network id -message PatternFlowVxlanVni { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 0 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowVxlanVniCounter increment = 6; - - // Description missing in models - optional PatternFlowVxlanVniCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowVxlanReserved1Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reserved field -message PatternFlowVxlanReserved1 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowVxlanReserved1Counter increment = 5; - - // Description missing in models - optional PatternFlowVxlanReserved1Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4VersionCounter { - - // Description missing in models - // default = 4 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Version -message PatternFlowIpv4Version { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 4 - optional int32 value = 2; - - // Description missing in models - // default = [4] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4VersionCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4VersionCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4HeaderLengthCounter { - - // Description missing in models - // default = 5 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Header length -message PatternFlowIpv4HeaderLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 5 - optional int32 value = 2; - - // Description missing in models - // default = [5] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 5 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowIpv4HeaderLengthCounter increment = 6; - - // Description missing in models - optional PatternFlowIpv4HeaderLengthCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowIpv4TotalLengthCounter { - - // Description missing in models - // default = 46 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Total length -message PatternFlowIpv4TotalLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 46 - optional int32 value = 2; - - // Description missing in models - // default = [46] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 46 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowIpv4TotalLengthCounter increment = 6; - - // Description missing in models - optional PatternFlowIpv4TotalLengthCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowIpv4IdentificationCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Identification -message PatternFlowIpv4Identification { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4IdentificationCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4IdentificationCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4ReservedCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reserved flag. -message PatternFlowIpv4Reserved { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4ReservedCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4ReservedCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4DontFragmentCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Dont fragment flag If the dont_fragment flag is set and fragmentation is required -// to route the packet then the packet is dropped. -message PatternFlowIpv4DontFragment { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4DontFragmentCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4DontFragmentCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4MoreFragmentsCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// More fragments flag -message PatternFlowIpv4MoreFragments { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4MoreFragmentsCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4MoreFragmentsCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4FragmentOffsetCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Fragment offset -message PatternFlowIpv4FragmentOffset { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4FragmentOffsetCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4FragmentOffsetCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TimeToLiveCounter { - - // Description missing in models - // default = 64 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Time to live -message PatternFlowIpv4TimeToLive { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 64 - optional int32 value = 2; - - // Description missing in models - // default = [64] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TimeToLiveCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TimeToLiveCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4ProtocolCounter { - - // Description missing in models - // default = 61 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Protocol, default is 61 any host internal protocol -message PatternFlowIpv4Protocol { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 61 - optional int32 value = 2; - - // Description missing in models - // default = [61] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 61 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowIpv4ProtocolCounter increment = 6; - - // Description missing in models - optional PatternFlowIpv4ProtocolCounter decrement = 7; -} - -// Header checksum -message PatternFlowIpv4HeaderChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// ipv4 counter pattern -message PatternFlowIpv4SrcCounter { - - // Description missing in models - // default = 0.0.0.0 - optional string start = 1; - - // Description missing in models - // default = 0.0.0.1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source address -message PatternFlowIpv4Src { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0.0.0.0 - optional string value = 2; - - // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4SrcCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4SrcCounter decrement = 6; -} - -// ipv4 counter pattern -message PatternFlowIpv4DstCounter { - - // Description missing in models - // default = 0.0.0.0 - optional string start = 1; - - // Description missing in models - // default = 0.0.0.1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination address -message PatternFlowIpv4Dst { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0.0.0.0 - optional string value = 2; - - // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4DstCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4DstCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4PriorityRawCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Raw priority -message PatternFlowIpv4PriorityRaw { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4PriorityRawCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4PriorityRawCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4DscpPhbCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Per hop behavior -message PatternFlowIpv4DscpPhb { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4DscpPhbCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4DscpPhbCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4DscpEcnCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Explicit congestion notification -message PatternFlowIpv4DscpEcn { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4DscpEcnCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4DscpEcnCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TosPrecedenceCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Precedence -message PatternFlowIpv4TosPrecedence { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TosPrecedenceCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TosPrecedenceCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TosDelayCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Delay -message PatternFlowIpv4TosDelay { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TosDelayCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TosDelayCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TosThroughputCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Throughput -message PatternFlowIpv4TosThroughput { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TosThroughputCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TosThroughputCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TosReliabilityCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reliability -message PatternFlowIpv4TosReliability { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TosReliabilityCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TosReliabilityCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TosMonetaryCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Monetary -message PatternFlowIpv4TosMonetary { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TosMonetaryCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TosMonetaryCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv4TosUnusedCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Unused -message PatternFlowIpv4TosUnused { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv4TosUnusedCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv4TosUnusedCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv6VersionCounter { - - // Description missing in models - // default = 6 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Version number -message PatternFlowIpv6Version { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 6 - optional int32 value = 2; - - // Description missing in models - // default = [6] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv6VersionCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv6VersionCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv6TrafficClassCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Traffic class -message PatternFlowIpv6TrafficClass { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv6TrafficClassCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv6TrafficClassCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv6FlowLabelCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Flow label -message PatternFlowIpv6FlowLabel { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv6FlowLabelCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv6FlowLabelCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIpv6PayloadLengthCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Payload length -message PatternFlowIpv6PayloadLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 0 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowIpv6PayloadLengthCounter increment = 6; - - // Description missing in models - optional PatternFlowIpv6PayloadLengthCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowIpv6NextHeaderCounter { - - // Description missing in models - // default = 59 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Next header -message PatternFlowIpv6NextHeader { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 59 - optional int32 value = 2; - - // Description missing in models - // default = [59] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 59 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowIpv6NextHeaderCounter increment = 6; - - // Description missing in models - optional PatternFlowIpv6NextHeaderCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowIpv6HopLimitCounter { - - // Description missing in models - // default = 64 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Hop limit -message PatternFlowIpv6HopLimit { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 64 - optional int32 value = 2; - - // Description missing in models - // default = [64] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv6HopLimitCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv6HopLimitCounter decrement = 6; -} - -// ipv6 counter pattern -message PatternFlowIpv6SrcCounter { - - // Description missing in models - // default = ::0 - optional string start = 1; - - // Description missing in models - // default = ::1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source address -message PatternFlowIpv6Src { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = ::0 - optional string value = 2; - - // Description missing in models - // default = ['::0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv6SrcCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv6SrcCounter decrement = 6; -} - -// ipv6 counter pattern -message PatternFlowIpv6DstCounter { - - // Description missing in models - // default = ::0 - optional string start = 1; - - // Description missing in models - // default = ::1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination address -message PatternFlowIpv6Dst { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = ::0 - optional string value = 2; - - // Description missing in models - // default = ['::0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIpv6DstCounter increment = 5; - - // Description missing in models - optional PatternFlowIpv6DstCounter decrement = 6; -} - -// mac counter pattern -message PatternFlowPfcPauseDstCounter { - - // Description missing in models - // default = 01:80:c2:00:00:01 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination MAC address -message PatternFlowPfcPauseDst { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 01:80:c2:00:00:01 - optional string value = 2; - - // Description missing in models - // default = ['01:80:c2:00:00:01'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPauseDstCounter increment = 5; - - // Description missing in models - optional PatternFlowPfcPauseDstCounter decrement = 6; -} - -// mac counter pattern -message PatternFlowPfcPauseSrcCounter { - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source MAC address -message PatternFlowPfcPauseSrc { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPauseSrcCounter increment = 5; - - // Description missing in models - optional PatternFlowPfcPauseSrcCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPauseEtherTypeCounter { - - // Description missing in models - // default = 34824 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Ethernet type -message PatternFlowPfcPauseEtherType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 34824 - optional int32 value = 2; - - // Description missing in models - // default = [34824] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPauseEtherTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowPfcPauseEtherTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPauseControlOpCodeCounter { - - // Description missing in models - // default = 257 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Control operation code -message PatternFlowPfcPauseControlOpCode { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 257 - optional int32 value = 2; - - // Description missing in models - // default = [257] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPauseControlOpCodeCounter increment = 5; - - // Description missing in models - optional PatternFlowPfcPauseControlOpCodeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPauseClassEnableVectorCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination -message PatternFlowPfcPauseClassEnableVector { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPauseClassEnableVectorCounter increment = 5; - - // Description missing in models - optional PatternFlowPfcPauseClassEnableVectorCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass0Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 0 -message PatternFlowPfcPausePauseClass0 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass0Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass0Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass1Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 1 -message PatternFlowPfcPausePauseClass1 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass1Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass1Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass2Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 2 -message PatternFlowPfcPausePauseClass2 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass2Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass2Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass3Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 3 -message PatternFlowPfcPausePauseClass3 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass3Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass3Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass4Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 4 -message PatternFlowPfcPausePauseClass4 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass4Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass4Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass5Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 5 -message PatternFlowPfcPausePauseClass5 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass5Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass5Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass6Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 6 -message PatternFlowPfcPausePauseClass6 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass6Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass6Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowPfcPausePauseClass7Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Pause class 7 -message PatternFlowPfcPausePauseClass7 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPfcPausePauseClass7Counter increment = 5; - - // Description missing in models - optional PatternFlowPfcPausePauseClass7Counter decrement = 6; -} - -// mac counter pattern -message PatternFlowEthernetPauseDstCounter { - - // Description missing in models - // default = 01:80:c2:00:00:01 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination MAC address -message PatternFlowEthernetPauseDst { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 01:80:c2:00:00:01 - optional string value = 2; - - // Description missing in models - // default = ['01:80:c2:00:00:01'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetPauseDstCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetPauseDstCounter decrement = 6; -} - -// mac counter pattern -message PatternFlowEthernetPauseSrcCounter { - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source MAC address -message PatternFlowEthernetPauseSrc { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetPauseSrcCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetPauseSrcCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowEthernetPauseEtherTypeCounter { - - // Description missing in models - // default = 34824 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Ethernet type -message PatternFlowEthernetPauseEtherType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 34824 - optional int32 value = 2; - - // Description missing in models - // default = [34824] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetPauseEtherTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetPauseEtherTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowEthernetPauseControlOpCodeCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Control operation code -message PatternFlowEthernetPauseControlOpCode { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetPauseControlOpCodeCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetPauseControlOpCodeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowEthernetPauseTimeCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Time -message PatternFlowEthernetPauseTime { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowEthernetPauseTimeCounter increment = 5; - - // Description missing in models - optional PatternFlowEthernetPauseTimeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpSrcPortCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source port -message PatternFlowTcpSrcPort { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpSrcPortCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpSrcPortCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpDstPortCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination port -message PatternFlowTcpDstPort { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpDstPortCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpDstPortCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpSeqNumCounter { - - // Description missing in models - // default = 0 - optional int64 start = 1; - - // Description missing in models - // default = 1 - optional int64 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Sequence number -message PatternFlowTcpSeqNum { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int64 value = 2; - - // Description missing in models - // default = [0] - repeated int64 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpSeqNumCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpSeqNumCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpAckNumCounter { - - // Description missing in models - // default = 0 - optional int64 start = 1; - - // Description missing in models - // default = 1 - optional int64 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Acknowledgement number -message PatternFlowTcpAckNum { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int64 value = 2; - - // Description missing in models - // default = [0] - repeated int64 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpAckNumCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpAckNumCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpDataOffsetCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The number of 32 bit words in the TCP header. This indicates where the data begins. -message PatternFlowTcpDataOffset { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpDataOffsetCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpDataOffsetCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpEcnNsCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Explicit congestion notification, concealment protection. -message PatternFlowTcpEcnNs { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpEcnNsCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpEcnNsCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpEcnCwrCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Explicit congestion notification, congestion window reduced. -message PatternFlowTcpEcnCwr { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpEcnCwrCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpEcnCwrCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpEcnEchoCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates -// that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. -message PatternFlowTcpEcnEcho { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpEcnEchoCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpEcnEchoCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpCtlUrgCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// A value of 1 indicates that the urgent pointer field is significant. -message PatternFlowTcpCtlUrg { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpCtlUrgCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpCtlUrgCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpCtlAckCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// A value of 1 indicates that the ackknowledgment field is significant. -message PatternFlowTcpCtlAck { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpCtlAckCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpCtlAckCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpCtlPshCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Asks to push the buffered data to the receiving application. -message PatternFlowTcpCtlPsh { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpCtlPshCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpCtlPshCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpCtlRstCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reset the connection. -message PatternFlowTcpCtlRst { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpCtlRstCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpCtlRstCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpCtlSynCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Synchronize sequenece numbers. -message PatternFlowTcpCtlSyn { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpCtlSynCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpCtlSynCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpCtlFinCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Last packet from the sender. -message PatternFlowTcpCtlFin { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpCtlFinCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpCtlFinCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowTcpWindowCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Tcp connection window. -message PatternFlowTcpWindow { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowTcpWindowCounter increment = 5; - - // Description missing in models - optional PatternFlowTcpWindowCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowUdpSrcPortCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Source port -message PatternFlowUdpSrcPort { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowUdpSrcPortCounter increment = 5; - - // Description missing in models - optional PatternFlowUdpSrcPortCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowUdpDstPortCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Destination port -message PatternFlowUdpDstPort { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowUdpDstPortCounter increment = 5; - - // Description missing in models - optional PatternFlowUdpDstPortCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowUdpLengthCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Length -message PatternFlowUdpLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowUdpLengthCounter increment = 5; - - // Description missing in models - optional PatternFlowUdpLengthCounter decrement = 6; -} - -// UDP checksum -message PatternFlowUdpChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// integer counter pattern -message PatternFlowGreChecksumPresentCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Checksum present bit -message PatternFlowGreChecksumPresent { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGreChecksumPresentCounter increment = 5; - - // Description missing in models - optional PatternFlowGreChecksumPresentCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGreReserved0Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reserved bits -message PatternFlowGreReserved0 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGreReserved0Counter increment = 5; - - // Description missing in models - optional PatternFlowGreReserved0Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowGreVersionCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// GRE version number -message PatternFlowGreVersion { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGreVersionCounter increment = 5; - - // Description missing in models - optional PatternFlowGreVersionCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGreProtocolCounter { - - // Description missing in models - // default = 2048 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Protocol type of encapsulated payload -message PatternFlowGreProtocol { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 2048 - optional int32 value = 2; - - // Description missing in models - // default = [2048] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGreProtocolCounter increment = 5; - - // Description missing in models - optional PatternFlowGreProtocolCounter decrement = 6; -} - -// Optional checksum of GRE header and payload. Only present if the checksum_present -// bit is set. -message PatternFlowGreChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// integer counter pattern -message PatternFlowGreReserved1Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Optional reserved field. Only present if the checksum_present bit is set. -message PatternFlowGreReserved1 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGreReserved1Counter increment = 5; - - // Description missing in models - optional PatternFlowGreReserved1Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1VersionCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// GTPv1 version -message PatternFlowGtpv1Version { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1VersionCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1VersionCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1ProtocolTypeCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Protocol type, GTP is 1, GTP' is 0 -message PatternFlowGtpv1ProtocolType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1ProtocolTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1ProtocolTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1ReservedCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reserved field -message PatternFlowGtpv1Reserved { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1ReservedCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1ReservedCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1EFlagCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Extension header field present -message PatternFlowGtpv1EFlag { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1EFlagCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1EFlagCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1SFlagCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Sequence number field present -message PatternFlowGtpv1SFlag { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1SFlagCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1SFlagCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1PnFlagCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// N-PDU field present -message PatternFlowGtpv1PnFlag { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1PnFlagCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1PnFlagCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1MessageTypeCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The type of GTP message Different types of messages are defined in 3GPP TS 29.060 -// section 7.1 -message PatternFlowGtpv1MessageType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1MessageTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1MessageTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1MessageLengthCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The length of the payload (the bytes following the mandatory 8-byte GTP header) in -// bytes that includes any optional fields -message PatternFlowGtpv1MessageLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1MessageLengthCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1MessageLengthCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1TeidCounter { - - // Description missing in models - // default = 0 - optional int64 start = 1; - - // Description missing in models - // default = 1 - optional int64 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel -message PatternFlowGtpv1Teid { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int64 value = 2; - - // Description missing in models - // default = [0] - repeated int64 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1TeidCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1TeidCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1SquenceNumberCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must -// be interpreted only if the s_flag bit is on. -message PatternFlowGtpv1SquenceNumber { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1SquenceNumberCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1SquenceNumberCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1NPduNumberCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must -// be interpreted only if the pn_flag bit is on. -message PatternFlowGtpv1NPduNumber { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1NPduNumberCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1NPduNumberCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv1NextExtensionHeaderTypeCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. -// Must be interpreted only if the e_flag bit is on. -message PatternFlowGtpv1NextExtensionHeaderType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv1NextExtensionHeaderTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv1NextExtensionHeaderTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpExtensionExtensionLengthCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// This field states the length of this extension header, including the length, the -// contents, and the next extension header field, in 4-octet units, so the length of -// the extension must always be a multiple of 4. -message PatternFlowGtpExtensionExtensionLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpExtensionExtensionLengthCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpExtensionExtensionLengthCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpExtensionContentsCounter { - - // Description missing in models - // default = 0 - optional int64 start = 1; - - // Description missing in models - // default = 1 - optional int64 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The extension header contents -message PatternFlowGtpExtensionContents { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int64 value = 2; - - // Description missing in models - // default = [0] - repeated int64 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpExtensionContentsCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpExtensionContentsCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpExtensionNextExtensionHeaderCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// It states the type of the next extension, or 0 if no next extension exists. This -// permits chaining several next extension headers. -message PatternFlowGtpExtensionNextExtensionHeader { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpExtensionNextExtensionHeaderCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpExtensionNextExtensionHeaderCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2VersionCounter { - - // Description missing in models - // default = 2 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Version number -message PatternFlowGtpv2Version { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 2 - optional int32 value = 2; - - // Description missing in models - // default = [2] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2VersionCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2VersionCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2PiggybackingFlagCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// If piggybacking_flag is set to 1 then another GTP-C message with its own header shall -// be present at the end of the current message -message PatternFlowGtpv2PiggybackingFlag { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2PiggybackingFlagCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2PiggybackingFlagCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2TeidFlagCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// If teid_flag is set to 1 then the TEID field will be present between the message -// length and the sequence number. All messages except Echo and Echo reply require TEID -// to be present -message PatternFlowGtpv2TeidFlag { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2TeidFlagCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2TeidFlagCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2Spare1Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// A 3-bit reserved field (must be 0). -message PatternFlowGtpv2Spare1 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2Spare1Counter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2Spare1Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2MessageTypeCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// An 8-bit field that indicates the type of GTP message. Different types of messages -// are defined in 3GPP TS 29.060 section 7.1 -message PatternFlowGtpv2MessageType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2MessageTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2MessageTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2MessageLengthCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory -// GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. -message PatternFlowGtpv2MessageLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2MessageLengthCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2MessageLengthCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2TeidCounter { - - // Description missing in models - // default = 0 - optional int64 start = 1; - - // Description missing in models - // default = 1 - optional int64 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different -// connections in the same GTP tunnel. Is present only if the teid_flag is set. -message PatternFlowGtpv2Teid { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int64 value = 2; - - // Description missing in models - // default = [0] - repeated int64 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2TeidCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2TeidCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2SequenceNumberCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The sequence number -message PatternFlowGtpv2SequenceNumber { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2SequenceNumberCounter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2SequenceNumberCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowGtpv2Spare2Counter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Reserved field -message PatternFlowGtpv2Spare2 { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowGtpv2Spare2Counter increment = 5; - - // Description missing in models - optional PatternFlowGtpv2Spare2Counter decrement = 6; -} - -// integer counter pattern -message PatternFlowArpHardwareTypeCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Network link protocol type -message PatternFlowArpHardwareType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpHardwareTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowArpHardwareTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowArpProtocolTypeCounter { - - // Description missing in models - // default = 2048 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The internetwork protocol for which the ARP request is intended -message PatternFlowArpProtocolType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 2048 - optional int32 value = 2; - - // Description missing in models - // default = [2048] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpProtocolTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowArpProtocolTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowArpHardwareLengthCounter { - - // Description missing in models - // default = 6 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Length (in octets) of a hardware address -message PatternFlowArpHardwareLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 6 - optional int32 value = 2; - - // Description missing in models - // default = [6] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpHardwareLengthCounter increment = 5; - - // Description missing in models - optional PatternFlowArpHardwareLengthCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowArpProtocolLengthCounter { - - // Description missing in models - // default = 4 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Length (in octets) of internetwork addresses -message PatternFlowArpProtocolLength { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 4 - optional int32 value = 2; - - // Description missing in models - // default = [4] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpProtocolLengthCounter increment = 5; - - // Description missing in models - optional PatternFlowArpProtocolLengthCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowArpOperationCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The operation that the sender is performing -message PatternFlowArpOperation { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpOperationCounter increment = 5; - - // Description missing in models - optional PatternFlowArpOperationCounter decrement = 6; -} - -// mac counter pattern -message PatternFlowArpSenderHardwareAddrCounter { - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Media address of the sender -message PatternFlowArpSenderHardwareAddr { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpSenderHardwareAddrCounter increment = 5; - - // Description missing in models - optional PatternFlowArpSenderHardwareAddrCounter decrement = 6; -} - -// ipv4 counter pattern -message PatternFlowArpSenderProtocolAddrCounter { - - // Description missing in models - // default = 0.0.0.0 - optional string start = 1; - - // Description missing in models - // default = 0.0.0.1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Internetwork address of the sender -message PatternFlowArpSenderProtocolAddr { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0.0.0.0 - optional string value = 2; - - // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpSenderProtocolAddrCounter increment = 5; - - // Description missing in models - optional PatternFlowArpSenderProtocolAddrCounter decrement = 6; -} - -// mac counter pattern -message PatternFlowArpTargetHardwareAddrCounter { - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; - - // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Media address of the target -message PatternFlowArpTargetHardwareAddr { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpTargetHardwareAddrCounter increment = 5; - - // Description missing in models - optional PatternFlowArpTargetHardwareAddrCounter decrement = 6; -} - -// ipv4 counter pattern -message PatternFlowArpTargetProtocolAddrCounter { - - // Description missing in models - // default = 0.0.0.0 - optional string start = 1; - - // Description missing in models - // default = 0.0.0.1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Internetwork address of the target -message PatternFlowArpTargetProtocolAddr { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0.0.0.0 - optional string value = 2; - - // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowArpTargetProtocolAddrCounter increment = 5; - - // Description missing in models - optional PatternFlowArpTargetProtocolAddrCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpEchoTypeCounter { - - // Description missing in models - // default = 8 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The type of ICMP echo packet -message PatternFlowIcmpEchoType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 8 - optional int32 value = 2; - - // Description missing in models - // default = [8] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpEchoTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpEchoTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpEchoCodeCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// The ICMP subtype. The default code for ICMP echo request and reply is 0. -message PatternFlowIcmpEchoCode { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpEchoCodeCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpEchoCodeCounter decrement = 6; -} - -// ICMP checksum -message PatternFlowIcmpEchoChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// integer counter pattern -message PatternFlowIcmpEchoIdentifierCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMP identifier -message PatternFlowIcmpEchoIdentifier { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpEchoIdentifierCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpEchoIdentifierCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpEchoSequenceNumberCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMP sequence number -message PatternFlowIcmpEchoSequenceNumber { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpEchoSequenceNumberCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpEchoSequenceNumberCounter decrement = 6; -} - -// ICMP checksum -message PatternFlowIcmpCommonChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// integer counter pattern -message PatternFlowIcmpNextFieldsIdentifierCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMP identifier -message PatternFlowIcmpNextFieldsIdentifier { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpNextFieldsIdentifierCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpNextFieldsIdentifierCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpNextFieldsSequenceNumberCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMP sequence number -message PatternFlowIcmpNextFieldsSequenceNumber { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpNextFieldsSequenceNumberCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpNextFieldsSequenceNumberCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpv6EchoTypeCounter { - - // Description missing in models - // default = 128 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMPv6 echo type -message PatternFlowIcmpv6EchoType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 128 - optional int32 value = 2; - - // Description missing in models - // default = [128] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpv6EchoTypeCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpv6EchoTypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpv6EchoCodeCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMPv6 echo sub type -message PatternFlowIcmpv6EchoCode { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpv6EchoCodeCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpv6EchoCodeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpv6EchoIdentifierCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMPv6 echo identifier -message PatternFlowIcmpv6EchoIdentifier { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpv6EchoIdentifierCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpv6EchoIdentifierCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIcmpv6EchoSequenceNumberCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// ICMPv6 echo sequence number -message PatternFlowIcmpv6EchoSequenceNumber { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIcmpv6EchoSequenceNumberCounter increment = 5; - - // Description missing in models - optional PatternFlowIcmpv6EchoSequenceNumberCounter decrement = 6; -} - -// ICMPv6 checksum -message PatternFlowIcmpv6EchoChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// ICMPv6 checksum -message PatternFlowIcmpv6CommonChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// integer counter pattern -message PatternFlowPppAddressCounter { - - // Description missing in models - // default = 255 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// PPP address -message PatternFlowPppAddress { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 255 - optional int32 value = 2; - - // Description missing in models - // default = [255] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPppAddressCounter increment = 5; - - // Description missing in models - optional PatternFlowPppAddressCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowPppControlCounter { - - // Description missing in models - // default = 3 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// PPP control -message PatternFlowPppControl { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 3 - optional int32 value = 2; - - // Description missing in models - // default = [3] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowPppControlCounter increment = 5; - - // Description missing in models - optional PatternFlowPppControlCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowPppProtocolTypeCounter { - - // Description missing in models - // default = 33 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// PPP protocol type -message PatternFlowPppProtocolType { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 33 - optional int32 value = 2; - - // Description missing in models - // default = [33] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 33 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowPppProtocolTypeCounter increment = 6; - - // Description missing in models - optional PatternFlowPppProtocolTypeCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowIgmpv1VersionCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Version number -message PatternFlowIgmpv1Version { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIgmpv1VersionCounter increment = 5; - - // Description missing in models - optional PatternFlowIgmpv1VersionCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIgmpv1TypeCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Type of message -message PatternFlowIgmpv1Type { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIgmpv1TypeCounter increment = 5; - - // Description missing in models - optional PatternFlowIgmpv1TypeCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowIgmpv1UnusedCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Unused -message PatternFlowIgmpv1Unused { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIgmpv1UnusedCounter increment = 5; - - // Description missing in models - optional PatternFlowIgmpv1UnusedCounter decrement = 6; -} - -// Checksum -message PatternFlowIgmpv1Checksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional int32 custom = 3; -} - -// ipv4 counter pattern -message PatternFlowIgmpv1GroupAddressCounter { - - // Description missing in models - // default = 0.0.0.0 - optional string start = 1; - - // Description missing in models - // default = 0.0.0.1 - optional string step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Group address -message PatternFlowIgmpv1GroupAddress { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0.0.0.0 - optional string value = 2; - - // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowIgmpv1GroupAddressCounter increment = 5; - - // Description missing in models - optional PatternFlowIgmpv1GroupAddressCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowMplsLabelCounter { - - // Description missing in models - // default = 16 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Label of routers -message PatternFlowMplsLabel { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 16 - optional int32 value = 2; - - // Description missing in models - // default = [16] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 16 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowMplsLabelCounter increment = 6; - - // Description missing in models - optional PatternFlowMplsLabelCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowMplsTrafficClassCounter { - - // Description missing in models - // default = 0 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Traffic class -message PatternFlowMplsTrafficClass { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 0 - optional int32 value = 2; - - // Description missing in models - // default = [0] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowMplsTrafficClassCounter increment = 5; - - // Description missing in models - optional PatternFlowMplsTrafficClassCounter decrement = 6; -} - -// integer counter pattern -message PatternFlowMplsBottomOfStackCounter { - - // Description missing in models - // default = 1 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Bottom of stack -message PatternFlowMplsBottomOfStack { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - auto = 1; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 1 - optional int32 value = 2; - - // Description missing in models - // default = [1] - repeated int32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 1 - optional int32 auto = 4; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 5; - - // Description missing in models - optional PatternFlowMplsBottomOfStackCounter increment = 6; - - // Description missing in models - optional PatternFlowMplsBottomOfStackCounter decrement = 7; -} - -// integer counter pattern -message PatternFlowMplsTimeToLiveCounter { - - // Description missing in models - // default = 64 - optional int32 start = 1; - - // Description missing in models - // default = 1 - optional int32 step = 2; - - // Description missing in models - // default = 1 - optional int32 count = 3; -} - -// Time to live -message PatternFlowMplsTimeToLive { - - message Choice { - enum Enum { - unspecified = 0; - value = 2; - values = 3; - increment = 4; - decrement = 5; - } - } - // Description missing in models - // default = Choice.Enum.value - optional Choice.Enum choice = 1; - - // Description missing in models - // default = 64 - optional int32 value = 2; - - // Description missing in models - // default = [64] - repeated int32 values = 3; - - // A unique name is used to indicate to the system that the field may extend the metric - // row key and create an aggregate metric row for every unique value. To have metric - // group columns appear in the flow metric rows the flow metric request allows for the - // metric_group value to be specified as part of the request. - optional string metric_group = 4; - - // Description missing in models - optional PatternFlowMplsTimeToLiveCounter increment = 5; - - // Description missing in models - optional PatternFlowMplsTimeToLiveCounter decrement = 6; -} - -// The request has succeeded with no application content but the server -// may return a list of detailed warnings. -message Success { - ResponseWarning response_warning = 1; -} - -// This indicates that the server cannot or will not process the request -// due to something that is perceived to be a client error. -// Additional details are in the errors. -message BadRequest { - ResponseError response_error = 1; -} - -// This indicates that the server encountered an unexpected condition that -// prevented it from fulfilling the request. -// Additional details are in the errors. -message InternalServerError { - ResponseError response_error = 1; -} - -message SetConfigRequest { - Config config = 1; -} -message SetConfigResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - -message GetConfigResponse { - optional Config status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SetTransmitStateRequest { - TransmitState transmit_state = 1; -} -message SetTransmitStateResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SetLinkStateRequest { - LinkState link_state = 1; -} -message SetLinkStateResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SetCaptureStateRequest { - CaptureState capture_state = 1; -} -message SetCaptureStateResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message UpdateFlowsRequest { - FlowsUpdate flows_update = 1; -} -message UpdateFlowsResponse { - optional Config status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SetRouteStateRequest { - RouteState route_state = 1; -} -message SetRouteStateResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SendPingRequest { - PingRequest ping_request = 1; -} -message SendPingResponse { - optional PingResponse status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SetProtocolStateRequest { - ProtocolState protocol_state = 1; -} -message SetProtocolStateResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message SetDeviceStateRequest { - DeviceState device_state = 1; -} -message SetDeviceStateResponse { - optional ResponseWarning status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message GetMetricsRequest { - MetricsRequest metrics_request = 1; -} -message GetMetricsResponse { - optional MetricsResponse status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message GetStatesRequest { - StatesRequest states_request = 1; -} -message GetStatesResponse { - optional StatesResponse status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - -message GetCaptureRequest { - CaptureRequest capture_request = 1; -} -message GetCaptureResponse { - optional bytes status_code_200 = 1; - optional ResponseError status_code_400 = 2; - optional ResponseError status_code_500 = 3; -} - - - // Description missing in models -service Openapi { - - // Sets configuration resources on the traffic generator. - rpc SetConfig(SetConfigRequest) returns (SetConfigResponse); - // Description missing in models - rpc GetConfig(google.protobuf.Empty) returns (GetConfigResponse); - // Updates the state of configuration resources on the traffic generator. - // The Response.Warnings in the Success response is available for implementers to disclose - // additional information about a state change including any implicit changes that are - // outside the scope of the state change. - rpc SetTransmitState(SetTransmitStateRequest) returns (SetTransmitStateResponse); - // Updates the state of configuration resources on the traffic generator. - rpc SetLinkState(SetLinkStateRequest) returns (SetLinkStateResponse); - // Updates the state of configuration resources on the traffic generator. - rpc SetCaptureState(SetCaptureStateRequest) returns (SetCaptureStateResponse); - // Updates flow properties without disruption of transmit state. - rpc UpdateFlows(UpdateFlowsRequest) returns (UpdateFlowsResponse); - // Updates the state of configuration resources on the traffic generator. - rpc SetRouteState(SetRouteStateRequest) returns (SetRouteStateResponse); - // API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each - // endpoint 1 ping packet will be sent and API shall wait for ping response to either - // be successful or timeout. The API wait timeout for each request is 300ms. - rpc SendPing(SendPingRequest) returns (SendPingResponse); - // Sets all configured protocols to `start` or `stop` state. - rpc SetProtocolState(SetProtocolStateRequest) returns (SetProtocolStateResponse); - // Set specific state/actions on device configuration resources on the traffic generator. - rpc SetDeviceState(SetDeviceStateRequest) returns (SetDeviceStateResponse); - // Description missing in models - rpc GetMetrics(GetMetricsRequest) returns (GetMetricsResponse); - // Description missing in models - rpc GetStates(GetStatesRequest) returns (GetStatesResponse); - // Description missing in models - rpc GetCapture(GetCaptureRequest) returns (GetCaptureResponse); -} diff --git a/device/device.yaml b/device/device.yaml index f2403553..69e82b2e 100644 --- a/device/device.yaml +++ b/device/device.yaml @@ -59,7 +59,22 @@ components: RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 $ref: './vxlan/vxlan.yaml#/components/schemas/Device.Vxlan' x-field-uid: 6 + tcp: + description: >- + The properties of TCP and its children, + type: array + items: + $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' + x-field-uid: 7 + http: + description: >- + The properties of HTTP and its children, + type: array + items: + $ref: './http/http.yaml#/components/schemas/Device.Http' + x-field-uid: 8 name: x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 7 + x-field-uid: 9 required: [name] + \ No newline at end of file diff --git a/device/http/http.yaml b/device/http/http.yaml index 96ed0b5a..1653fab9 100644 --- a/device/http/http.yaml +++ b/device/http/http.yaml @@ -13,54 +13,55 @@ components: type: string x-constraint: - '/components/schemas/Device.Tcp/properties/name' + x-field-uid: 1 enable_ssl: description: >- Enable SSL for HTTP type: boolean default: false + x-field-uid: 2 http_version: description: >- HTTP Version type: integer default: 1 + x-field-uid: 3 enable_cookie_support: description: >- Enable cookie support for HTTP type: boolean default: false + x-field-uid: 4 max_sessions: description: >- Max HTTP sessions type: integer default: 1 + x-field-uid: 5 max_streams: description: >- Max HTTP streams type: integer default: 1 + x-field-uid: 6 command_timeout: description: >- Command timeout timer in seconds type: integer default: 600 + x-field-uid: 7 url_stats_count: description: >- URL stats count type: integer default: 10 + x-field-uid: 8 enable_per_conn_cookie_support: description: >- Enable cookie support for per connection type: boolean default: false + x-field-uid: 9 method: - description: >- - HTTP method like GET, POST - type: string - enum: - - get - - post - get: - $ref: './method.yaml#/components/schemas/Method.Get' - post: - $ref: './method.yaml#/components/schemas/Method.Post' + $ref: './method.yaml#/components/schemas/Http.Method' + x-field-uid: 10 diff --git a/device/http/method.yaml b/device/http/method.yaml index 2336ced4..f36dfab4 100644 --- a/device/http/method.yaml +++ b/device/http/method.yaml @@ -1,5 +1,24 @@ components: schemas: + Http.Method: + type: object + properties: + choice: + type: string + default: get + x-field-uid: 1 + x-enum: + get: + x-field-uid: 1 + post: + x-field-uid: 2 + get: + x-field-uid: 2 + $ref: '#/components/schemas/Method.Get' + post: + x-field-uid: 3 + $ref: '#/components/schemas/Method.Post' + Method.Get: x-include: - '../common/common.yaml#/components/schemas/Named.Object' @@ -12,11 +31,12 @@ components: description: >- Server name/IP address type: string + x-field-uid: 1 page: description: >- The page name to perform get opertaion. type: string - + x-field-uid: 2 Method.Post: x-include: - '../../common/common.yaml#/components/schemas/Named.Object' @@ -29,7 +49,9 @@ components: description: >- The Server name/IP address type: string + x-field-uid: 1 page: description: >- The page name to perform post opertaion. - type: string \ No newline at end of file + type: string + x-field-uid: 2 \ No newline at end of file diff --git a/device/tcp/tcp.yaml b/device/tcp/tcp.yaml index 1e622200..c84c79b1 100644 --- a/device/tcp/tcp.yaml +++ b/device/tcp/tcp.yaml @@ -14,28 +14,35 @@ components: type: string x-constraint: - '/components/schemas/Device.Ipv4Base/properties/name' + - '/components/schemas/Device.Ipv6Base/properties/name' + x-field-uid: 1 keep_alive_time: description: >- The TCP keep alive timer type: integer default: 7200 + x-field-uid: 2 receive_buffer_size: description: >- The TCP receive buffer size type: integer default: 4096 + x-field-uid: 3 transmit_buffer_size: description: >- The TCP transmit buffer size type: integer default: 4096 + x-field-uid: 4 source_port: description: >- TCP source port no type: integer default: 1024 + x-field-uid: 5 destination_port: description: >- TCP destination port no type: integer - default: 1024 \ No newline at end of file + default: 1024 + x-field-uid: 6 \ No newline at end of file From 4d4f47bb1dbf06127eda66ee5c5b459230ab191e Mon Sep 17 00:00:00 2001 From: waseembaig Date: Fri, 9 Sep 2022 15:55:49 +0530 Subject: [PATCH 05/27] updated with x-field-uid --- device/http/http.yaml | 5 +++-- device/http/method.yaml | 4 ---- device/tcp/tcp.yaml | 7 ++++--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/device/http/http.yaml b/device/http/http.yaml index 1653fab9..e5a4bb65 100644 --- a/device/http/http.yaml +++ b/device/http/http.yaml @@ -1,8 +1,6 @@ components: schemas: Device.Http: - x-include: - - '../common/common.yaml#/components/schemas/Named.Object' description: >- HTTP configs. type: object @@ -65,3 +63,6 @@ components: method: $ref: './method.yaml#/components/schemas/Http.Method' x-field-uid: 10 + name: + x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name + x-field-uid: 11 diff --git a/device/http/method.yaml b/device/http/method.yaml index f36dfab4..cabff026 100644 --- a/device/http/method.yaml +++ b/device/http/method.yaml @@ -20,8 +20,6 @@ components: $ref: '#/components/schemas/Method.Post' Method.Get: - x-include: - - '../common/common.yaml#/components/schemas/Named.Object' description: >- A GET operation of HTTP type: object @@ -38,8 +36,6 @@ components: type: string x-field-uid: 2 Method.Post: - x-include: - - '../../common/common.yaml#/components/schemas/Named.Object' description: >- A POST operation of HTTP type: object diff --git a/device/tcp/tcp.yaml b/device/tcp/tcp.yaml index c84c79b1..423775be 100644 --- a/device/tcp/tcp.yaml +++ b/device/tcp/tcp.yaml @@ -1,8 +1,6 @@ components: schemas: Device.Tcp: - x-include: - - '../common/common.yaml#/components/schemas/Named.Object' description: >- TCP configs. type: object @@ -45,4 +43,7 @@ components: TCP destination port no type: integer default: 1024 - x-field-uid: 6 \ No newline at end of file + x-field-uid: 6 + name: + x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name + x-field-uid: 7 \ No newline at end of file From fea185cc62bc4c8151364f43f877d0f1436566c2 Mon Sep 17 00:00:00 2001 From: Github Actions Bot Date: Fri, 9 Sep 2022 10:27:45 +0000 Subject: [PATCH 06/27] Update auto generated content --- artifacts/openapi.html | 724 ++ artifacts/openapi.yaml | 20017 +++++++++++++++++++++++++++++++++++++++ artifacts/otg.proto | 14511 ++++++++++++++++++++++++++++ 3 files changed, 35252 insertions(+) create mode 100644 artifacts/openapi.html create mode 100644 artifacts/openapi.yaml create mode 100644 artifacts/otg.proto diff --git a/artifacts/openapi.html b/artifacts/openapi.html new file mode 100644 index 00000000..9b37cc16 --- /dev/null +++ b/artifacts/openapi.html @@ -0,0 +1,724 @@ + + + + + + Open Traffic Generator API + + + + + + + + + +

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard +interface for emulating layer 2-7 network devices and generating test traffic.

+

Contributions can be made in the following ways:

+ +

Configuration

set_config

Sets configuration resources on the traffic generator.

+
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

+
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

+
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

+
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

+
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. +Each device contains configurations for network interfaces and +protocols running on top of those interfaces.

+
Array of objects (Flow)

The flows that will be configured on the traffic generator.

+
object (Event)

The optional container for event configuration.

+
object (Config.Options)

Global configuration options.

+

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. +The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

+
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. +If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Flow/properties/name
  • +
+
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. +If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). +If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. +If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. +If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

+

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. +If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+
state
required
string
Enum: "start" "stop"

The capture state.

+

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

+
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

+
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

+

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

+

x-constraint:

+
    +
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • +
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • +
  • /components/schemas/Isis.V4RouteRange/properties/name
  • +
  • /components/schemas/Isis.V6RouteRange/properties/name
  • +
+
state
required
string
Enum: "withdraw" "advertise"

Route specific states

+

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

+
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

+

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

+
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

+

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

+
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

+

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

+
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

+
object (Flow.Metrics.Request)

The container for a flow metric request.

+
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

+
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

+
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

+
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

+
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

+
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

+
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

+
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

+
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

+
port_name
required
string

The name of a port a capture is started on.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
+ + + + \ No newline at end of file diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml new file mode 100644 index 00000000..e77323e9 --- /dev/null +++ b/artifacts/openapi.yaml @@ -0,0 +1,20017 @@ +openapi: 3.0.3 +info: + title: Open Traffic Generator API + description: "Open Traffic Generator API defines a model-driven, vendor-neutral\ + \ and standard \ninterface for emulating layer 2-7 network devices and generating\ + \ test traffic.\n\nContributions can be made in the following ways:\n- [open an\ + \ issue](https://github.com/open-traffic-generator/models/issues) in the models\ + \ repository\n- [fork the models repository](https://github.com/open-traffic-generator/models)\ + \ and submit a PR" + version: 0.9.2 + contact: + url: https://github.com/open-traffic-generator/models + license: + name: MIT + url: https://opensource.org/licenses/MIT + x-model-guide: https://github.com/open-traffic-generator/models/blob/master/MODEL-GUIDE.md +servers: +- url: / +paths: + /config: + post: + tags: + - Configuration + operationId: set_config + description: |- + Sets configuration resources on the traffic generator. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Config' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + get: + tags: + - Configuration + operationId: get_config + responses: + '200': + description: |- + Config response from the traffic generator + content: + application/json: + schema: + $ref: '#/components/schemas/Config' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/transmit: + post: + tags: + - Control + operationId: set_transmit_state + description: |- + Updates the state of configuration resources on the traffic generator. + The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Transmit.State' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/link: + post: + tags: + - Control + operationId: set_link_state + description: |- + Updates the state of configuration resources on the traffic generator. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Link.State' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/capture: + post: + tags: + - Control + operationId: set_capture_state + description: |- + Updates the state of configuration resources on the traffic generator. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Capture.State' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/flows: + post: + tags: + - Control + operationId: update_flows + description: |- + Updates flow properties without disruption of transmit state. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Flows.Update' + responses: + '200': + description: |- + Response with updated Config from the traffic generator + content: + application/json: + schema: + $ref: '#/components/schemas/Config' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/routes: + post: + tags: + - Control + operationId: set_route_state + description: |- + Updates the state of configuration resources on the traffic generator. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Route.State' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/ping: + post: + tags: + - Control + operationId: send_ping + description: |- + API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Ping.Request' + responses: + '200': + description: |- + Responses for Ping + content: + application/json: + schema: + $ref: '#/components/schemas/Ping.Response' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/protocols: + post: + tags: + - Control + operationId: set_protocol_state + description: |- + Sets all configured protocols to `start` or `stop` state. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Protocol.State' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /control/devices: + post: + tags: + - Control + operationId: set_device_state + description: |- + Set specific state/actions on device configuration resources on the traffic generator. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Device.State' + responses: + '200': + $ref: '#/components/responses/Success' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /results/metrics: + description: |- + Metrics API + post: + tags: + - Metrics + operationId: get_metrics + requestBody: + description: |- + Request to traffic generator for metrics of choice + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Metrics.Request' + responses: + '200': + description: |- + Response from traffic generator for chosen metrics + content: + application/json: + schema: + $ref: '#/components/schemas/Metrics.Response' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /results/states: + description: |- + States API + post: + tags: + - States + operationId: get_states + requestBody: + description: |- + Request to traffic generator for states of choice + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/States.Request' + responses: + '200': + description: |- + Response from traffic generator for chosen states + content: + application/json: + schema: + $ref: '#/components/schemas/States.Response' + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 + /results/capture: + description: |- + Capture results API + post: + tags: + - Capture + operationId: get_capture + requestBody: + description: |- + Capture results request to the traffic generator. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Capture.Request' + responses: + '200': + description: |- + Capture results response from the traffic generator. + content: + application/octet-stream: + schema: + type: string + format: binary + x-field-uid: 1 + '400': + $ref: '#/components/responses/BadRequest' + x-field-uid: 2 + '500': + $ref: '#/components/responses/InternalServerError' + x-field-uid: 3 +components: + responses: + Success: + description: "The request has succeeded with no application content but the\ + \ server \nmay return a list of detailed warnings." + content: + application/json: + schema: + $ref: '#/components/schemas/Response.Warning' + BadRequest: + description: "This indicates that the server cannot or will not process the\ + \ request \ndue to something that is perceived to be a client error.\nAdditional\ + \ details are in the errors." + content: + application/json: + schema: + $ref: '#/components/schemas/Response.Error' + InternalServerError: + description: "This indicates that the server encountered an unexpected condition\ + \ that \nprevented it from fulfilling the request.\nAdditional details are\ + \ in the errors." + content: + application/json: + schema: + $ref: '#/components/schemas/Response.Error' + schemas: + Config: + description: |- + A container for all models that are part of the configuration. + type: object + properties: + ports: + description: |- + The ports that will be configured on the traffic generator. + type: array + items: + $ref: '#/components/schemas/Port' + x-field-uid: 1 + lags: + description: |- + The LAGs that will be configured on the traffic generator. + type: array + items: + $ref: '#/components/schemas/Lag' + x-field-uid: 2 + layer1: + description: |- + The layer1 settings that will be configured on the traffic generator. + type: array + items: + $ref: '#/components/schemas/Layer1' + x-field-uid: 3 + captures: + description: |- + The capture settings that will be configured on the traffic generator. + type: array + items: + $ref: '#/components/schemas/Capture' + x-field-uid: 4 + devices: + description: "The emulated devices that will be configured on the traffic\ + \ generator.\nEach device contains configurations for network interfaces\ + \ and \nprotocols running on top of those interfaces." + type: array + items: + $ref: '#/components/schemas/Device' + x-field-uid: 5 + flows: + description: |- + The flows that will be configured on the traffic generator. + type: array + items: + $ref: '#/components/schemas/Flow' + x-field-uid: 6 + events: + $ref: '#/components/schemas/Event' + x-field-uid: 7 + options: + $ref: '#/components/schemas/Config.Options' + x-field-uid: 8 + Config.Options: + description: |- + Global configuration options. + type: object + properties: + port_options: + $ref: '#/components/schemas/Port.Options' + x-field-uid: 1 + Port: + description: |- + An abstract test port. + type: object + properties: + location: + description: |- + The location of a test port. It is the endpoint where packets will emit from. + Test port locations can be the following: + - physical appliance with multiple ports + - physical chassis with multiple cards and ports + - local interface + - virtual machine, docker container, kubernetes cluster + + The test port location format is implementation specific. Use the /results/capabilities API to determine what formats an implementation supports for the location property. + Get the configured location state by using the /results/port API. + type: string + x-field-uid: 1 + name: + x-field-uid: 2 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Port.Options: + description: "Common port options that apply to all configured Port objects. " + type: object + properties: + location_preemption: + description: |- + Preempt all the test port locations as defined by the Port.Port.properties.location. If the test ports defined by their location values are in use and this value is true, the test ports will be preempted. + type: boolean + default: false + x-field-uid: 1 + Lag: + description: |- + The container for LAG (ports group) - aggregation of multiple LAG members (ports) + type: object + properties: + ports: + type: array + items: + $ref: '#/components/schemas/Lag.Port' + minItems: 1 + maxItems: 32 + x-field-uid: 1 + protocol: + $ref: '#/components/schemas/Lag.Protocol' + x-field-uid: 2 + min_links: + description: |- + Specifies the mininum number of member interfaces that must be active for the aggregate interface to be available + type: integer + format: int32 + minimum: 0 + maximum: 32 + default: 1 + x-field-uid: 3 + name: + x-field-uid: 4 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Lag.Port: + description: |- + The container for a port's ethernet interface and LAG protocol settings + type: object + required: + - port_name + - ethernet + properties: + port_name: + description: "The name of a port object that will be part of the LAG. \n\ + \nx-constraint:\n- /components/schemas/Port/properties/name\n" + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + lacp: + $ref: '#/components/schemas/Lag.Port.Lacp' + x-field-uid: 2 + ethernet: + $ref: '#/components/schemas/Device.EthernetBase' + x-field-uid: 3 + Lag.Protocol: + type: object + properties: + choice: + description: |- + The type of controlling protocol for the LAG (ports group). + type: string + default: lacp + x-field-uid: 1 + x-enum: + lacp: + x-field-uid: 1 + static: + x-field-uid: 2 + enum: + - lacp + - static + lacp: + $ref: '#/components/schemas/Lag.Protocol.Lacp' + x-field-uid: 2 + static: + $ref: '#/components/schemas/Lag.Protocol.Static' + x-field-uid: 3 + Lag.Protocol.Static: + description: |- + The container for static link aggregation protocol settings. + type: object + properties: + lag_id: + description: |- + The static lag id + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 1 + Lag.Protocol.Lacp: + description: |- + The container for link aggregation control protocol settings of a LAG (ports group). + type: object + properties: + actor_system_id: + description: |- + The actor system id + type: string + format: mac + default: 00:00:00:00:00:00 + x-field-uid: 1 + actor_system_priority: + description: |- + The actor system priority + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 2 + actor_key: + description: |- + The actor key + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 3 + Lag.Port.Lacp: + description: |- + The container for link aggregation control protocol settings of a LAG member (port). + type: object + properties: + actor_port_number: + description: |- + The actor port number + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 1 + actor_port_priority: + description: |- + The actor port priority + type: integer + minimum: 0 + maximum: 65535 + default: 1 + x-field-uid: 2 + actor_activity: + description: |- + Sets the value of LACP actor activity as either passive or active. + Passive indicates the port's preference for not transmitting LACPDUs unless its partner's control is Active. + Active indicates the port's preference to participate in the protocol regardless of the partner's control value. + type: string + default: active + x-field-uid: 3 + x-enum: + passive: + x-field-uid: 1 + active: + x-field-uid: 2 + enum: + - passive + - active + lacpdu_periodic_time_interval: + x-constants: + fast: 1 + slow: 30 + auto: 0 + description: |- + This field defines how frequently LACPDUs are sent to the link partner + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 4 + lacpdu_timeout: + x-constants: + short: 3 + long: 90 + auto: 0 + description: |- + This timer is used to detect whether received protocol information has expired + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 5 + Device.EthernetBase: + description: |- + Base Ethernet interface. + type: object + required: + - mac + - name + properties: + mac: + description: |- + Media Access Control address. + type: string + format: mac + x-field-uid: 1 + mtu: + description: |- + Maximum Transmission Unit. + type: integer + minimum: 0 + maximum: 65535 + default: 1500 + x-field-uid: 2 + vlans: + description: |- + List of VLANs + type: array + items: + $ref: '#/components/schemas/Device.Vlan' + x-field-uid: 3 + name: + x-field-uid: 4 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.Ethernet: + description: |- + An Ethernet interface with IPv4 and IPv6 addresses. + type: object + properties: + port_name: + description: | + Status: deprecated + The unique name of a Port or a LAG that will emulate this interface. + port_name is deprecated and will be removed in future release.port_name and connection can't be used together, use either port_name or connection. + + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Lag/properties/name + x-status: deprecated + type: string + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Lag/properties/name + x-field-uid: 1 + connection: + description: |- + Device connection to physical, LAG or another device. + $ref: '#/components/schemas/Ethernet.Connection' + x-field-uid: 2 + ipv4_addresses: + description: "List of IPv4 addresses and their gateways. " + type: array + items: + $ref: '#/components/schemas/Device.Ipv4' + x-field-uid: 3 + ipv6_addresses: + description: |- + List of global IPv6 addresses and their gateways. + The Link Local IPv6 address will be automatically generated. + type: array + items: + $ref: '#/components/schemas/Device.Ipv6' + x-field-uid: 4 + mac: + x-field-uid: 5 + description: |- + Media Access Control address. + type: string + format: mac + mtu: + x-field-uid: 6 + description: |- + Maximum Transmission Unit. + type: integer + minimum: 0 + maximum: 65535 + default: 1500 + vlans: + x-field-uid: 7 + description: |- + List of VLANs + type: array + items: + $ref: '#/components/schemas/Device.Vlan' + name: + x-field-uid: 8 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - mac + - name + Ethernet.Connection: + description: |- + Ethernet interface connection to a port, LAG or VXLAN tunnel. + type: object + properties: + choice: + description: |- + port_name, lag_name or vxlan_name + type: string + x-field-uid: 1 + x-enum: + port_name: + x-field-uid: 1 + lag_name: + x-field-uid: 2 + vxlan_name: + x-field-uid: 3 + enum: + - port_name + - lag_name + - vxlan_name + port_name: + description: | + Name of the port that the Ethernet interface is configured on. + + x-constraint: + - /components/schemas/Port/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 2 + lag_name: + description: | + Name of the LAG that the Ethernet interface is configured on. + + x-constraint: + - /components/schemas/Lag/properties/name + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 3 + vxlan_name: + description: | + Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to. + + x-constraint: + - #/components/schemas/VXlan.V4Tunnel/properties/name + - #/components/schemas/VXlan.V6Tunnel/properties/name + type: string + x-constraint: + - '#/components/schemas/VXlan.V4Tunnel/properties/name' + - '#/components/schemas/VXlan.V6Tunnel/properties/name' + x-field-uid: 4 + Device.Vlan: + description: |- + Emulated VLAN protocol. + type: object + properties: + tpid: + description: |- + Tag protocol identifier + type: string + default: x8100 + x-field-uid: 1 + x-enum: + x8100: + x-field-uid: 1 + x88A8: + x-field-uid: 2 + x9100: + x-field-uid: 3 + x9200: + x-field-uid: 4 + x9300: + x-field-uid: 5 + enum: + - x8100 + - x88A8 + - x9100 + - x9200 + - x9300 + priority: + description: |- + Priority code point + type: integer + minimum: 0 + maximum: 3 + default: 0 + x-field-uid: 2 + id: + description: |- + VLAN identifier + type: integer + minimum: 0 + maximum: 4095 + default: 1 + x-field-uid: 3 + name: + x-field-uid: 4 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Device.Ipv4: + description: |- + An IPv4 interface with gateway + type: object + required: + - gateway + - address + - name + properties: + gateway: + description: |- + The IPv4 address of the gateway + type: string + format: ipv4 + x-field-uid: 1 + gateway_mac: + $ref: '#/components/schemas/Device.Ipv4GatewayMAC' + x-field-uid: 2 + address: + x-field-uid: 3 + description: |- + The IPv4 address + type: string + format: ipv4 + prefix: + x-field-uid: 4 + description: |- + The prefix of the IPv4 address. + type: integer + minimum: 1 + maximum: 32 + default: 24 + name: + x-field-uid: 5 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.Ipv4Loopback: + description: |- + An IPv4 Loopback interface. + type: object + required: + - eth_name + - name + properties: + eth_name: + description: | + The unique name of the Ethernet interface behind which this Loopback interface will be created. + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + address: + description: |- + The IPv4 Loopback address with prefix length of 32. + type: string + format: ipv4 + default: 0.0.0.0 + x-field-uid: 2 + name: + x-field-uid: 3 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.Ipv4GatewayMAC: + description: |- + By default auto(resolved gateway mac) is set. Setting a value would mean that ARP will not be used for learning MAC of connected device. The user-configured MAC address will be used for auto-filling the destination + MAC address in the control and data packets sent from this IPv4 endpoint + whenever applicable. + type: object + properties: + choice: + description: |- + auto or configured value. + type: string + default: auto + x-field-uid: 1 + x-enum: + auto: + x-field-uid: 1 + value: + x-field-uid: 2 + enum: + - auto + - value + auto: + description: |- + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. + type: string + format: mac + default: 00:00:00:00:00:00 + x-field-uid: 2 + value: + type: string + format: mac + default: 00:00:00:00:00:00 + x-field-uid: 3 + Device.Ipv6: + description: |- + Status: under-review + An IPv6 interface with gateway. + type: object + required: + - gateway + - address + - name + properties: + gateway: + description: |- + The IPv6 gateway address. + type: string + format: ipv6 + x-field-uid: 1 + gateway_mac: + $ref: '#/components/schemas/Device.Ipv6GatewayMAC' + x-field-uid: 2 + address: + x-field-uid: 3 + description: |- + The IPv6 address. + type: string + format: ipv6 + prefix: + x-field-uid: 4 + description: |- + The network prefix. + type: integer + minimum: 1 + maximum: 128 + default: 64 + name: + x-field-uid: 5 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-status: under-review + Device.Ipv6Loopback: + description: |- + An IPv6 Loopback interface + type: object + required: + - eth_name + - name + properties: + eth_name: + description: "The unique name of the Ethernet interface behind which this\ + \ Loopback \n interface will be created.\n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + address: + description: |- + The IPv6 Loopback address with prefix length of 128. + type: string + format: ipv6 + default: ::0 + x-field-uid: 2 + name: + x-field-uid: 3 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.Ipv6GatewayMAC: + description: |- + By default auto(resolved gateway mac) is set. Setting a value would mean that ND will not be used for learning MAC of connected device. The user-configured MAC address will be used for auto-filling the destination + MAC address in the control and data packets sent from this IPv6 endpoint + whenever applicable. + type: object + properties: + choice: + description: |- + auto or configured value. + type: string + default: auto + x-field-uid: 1 + x-enum: + auto: + x-field-uid: 1 + value: + x-field-uid: 2 + enum: + - auto + - value + auto: + description: |- + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. + type: string + format: mac + default: 00:00:00:00:00:00 + x-field-uid: 2 + value: + type: string + format: mac + default: 00:00:00:00:00:00 + x-field-uid: 3 + Layer1: + description: |- + A container for layer1 settings. + type: object + required: + - port_names + - name + properties: + port_names: + description: "A list of unique names of port objects that will share the\n\ + choice settings. \n\nx-constraint:\n- /components/schemas/Port/properties/name\n" + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + speed: + description: |- + Set the speed if supported. + type: string + default: speed_10_gbps + x-field-uid: 2 + x-enum: + speed_10_fd_mbps: + x-field-uid: 1 + speed_10_hd_mbps: + x-field-uid: 2 + speed_100_fd_mbps: + x-field-uid: 3 + speed_100_hd_mbps: + x-field-uid: 4 + speed_1_gbps: + x-field-uid: 5 + speed_10_gbps: + x-field-uid: 6 + speed_25_gbps: + x-field-uid: 7 + speed_40_gbps: + x-field-uid: 8 + speed_50_gbps: + x-field-uid: 9 + speed_100_gbps: + x-field-uid: 10 + speed_200_gbps: + x-field-uid: 11 + speed_400_gbps: + x-field-uid: 12 + enum: + - speed_10_fd_mbps + - speed_10_hd_mbps + - speed_100_fd_mbps + - speed_100_hd_mbps + - speed_1_gbps + - speed_10_gbps + - speed_25_gbps + - speed_40_gbps + - speed_50_gbps + - speed_100_gbps + - speed_200_gbps + - speed_400_gbps + media: + description: |- + Set the type of media interface if supported. + type: string + x-field-uid: 3 + x-enum: + copper: + x-field-uid: 1 + fiber: + x-field-uid: 2 + sgmii: + x-field-uid: 3 + enum: + - copper + - fiber + - sgmii + promiscuous: + description: |- + Enable promiscuous mode if supported. + type: boolean + default: true + x-field-uid: 4 + mtu: + description: |- + Set the maximum transmission unit size if supported. + type: integer + minimum: 64 + maximum: 9000 + default: 1500 + x-field-uid: 5 + ieee_media_defaults: + description: |- + Set to true to override the auto_negotiate, link_training + and rs_fec settings for gigabit ethernet interfaces. + type: boolean + x-field-uid: 6 + auto_negotiate: + description: |- + Enable/disable auto negotiation. + type: boolean + x-field-uid: 7 + auto_negotiation: + $ref: '#/components/schemas/Layer1.AutoNegotiation' + x-field-uid: 8 + flow_control: + $ref: '#/components/schemas/Layer1.FlowControl' + x-field-uid: 9 + name: + x-field-uid: 10 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Layer1.AutoNegotiation: + description: |- + Configuration for auto negotiation settings + type: object + properties: + advertise_1000_mbps: + description: |- + If auto_negotiate is true and the interface supports this option + then this speed will be advertised. + type: boolean + default: true + x-field-uid: 1 + advertise_100_fd_mbps: + description: |- + If auto_negotiate is true and the interface supports this option + then this speed will be advertised. + type: boolean + default: true + x-field-uid: 2 + advertise_100_hd_mbps: + description: |- + If auto_negotiate is true and the interface supports this option + then this speed will be advertised. + type: boolean + default: true + x-field-uid: 3 + advertise_10_fd_mbps: + description: |- + If auto_negotiate is true and the interface supports this option + then this speed will be advertised. + type: boolean + default: true + x-field-uid: 4 + advertise_10_hd_mbps: + description: |- + If auto_negotiate is true and the interface supports this option + then this speed will be advertised. + type: boolean + default: true + x-field-uid: 5 + link_training: + description: |- + Enable/disable gigabit ethernet link training. + type: boolean + default: false + x-field-uid: 6 + rs_fec: + description: |- + Enable/disable gigabit ethernet reed solomon forward error correction (RS FEC). + type: boolean + default: false + x-field-uid: 7 + Layer1.FlowControl: + description: |- + A container for layer1 receive flow control settings. + To enable flow control settings on ports this object must be a valid + object not a null value. + type: object + properties: + directed_address: + description: |- + The 48bit mac address that the layer1 port names will listen on + for a directed pause. + type: string + format: mac + default: 01:80:C2:00:00:01 + x-field-uid: 1 + choice: + description: |- + The type of priority flow control. + type: string + default: ieee_802_1qbb + x-field-uid: 2 + x-enum: + ieee_802_1qbb: + x-field-uid: 1 + ieee_802_3x: + x-field-uid: 2 + enum: + - ieee_802_1qbb + - ieee_802_3x + ieee_802_1qbb: + $ref: '#/components/schemas/Layer1.Ieee8021qbb' + x-field-uid: 3 + ieee_802_3x: + $ref: '#/components/schemas/Layer1.Ieee8023x' + x-field-uid: 4 + Layer1.Ieee8023x: + description: |- + A container for ieee 802.3x rx pause settings + type: object + Layer1.Ieee8021qbb: + description: "These settings enhance the existing 802.3x pause priority capabilities\ + \ \nto enable flow control based on 802.1p priorities (classes of service). " + type: object + properties: + pfc_delay: + description: "The upper limit on the transmit time of a queue after receiving\ + \ a \nmessage to pause a specified priority.\nA value of 0 or null indicates\ + \ that pfc delay will not be enabled. " + type: integer + default: 0 + x-field-uid: 1 + pfc_class_0: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 0 + x-field-uid: 2 + pfc_class_1: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 1 + x-field-uid: 3 + pfc_class_2: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 2 + x-field-uid: 4 + pfc_class_3: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 3 + x-field-uid: 5 + pfc_class_4: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 4 + x-field-uid: 6 + pfc_class_5: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 5 + x-field-uid: 7 + pfc_class_6: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 6 + x-field-uid: 8 + pfc_class_7: + description: |- + The valid values are null, 0 - 7. + A null value indicates there is no setting for this pfc class. + type: integer + default: 7 + x-field-uid: 9 + Capture: + x-status: under-review + description: |- + Status: under-review + Configuration for capture settings. + type: object + required: + - port_names + - name + properties: + port_names: + description: | + The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + filters: + description: |- + A list of filters to apply to the capturing ports. If no filters are specified then all packets will be captured. A capture can have multiple filters. The number of filters supported is determined by the implementation which can be retrieved using the capabilities API. + When multiple filters are specified the capture implementation must && (and) all the filters. + type: array + items: + $ref: '#/components/schemas/Capture.Filter' + x-field-uid: 2 + overwrite: + description: |- + Overwrite the capture buffer. + type: boolean + default: true + x-field-uid: 3 + packet_size: + description: |- + The maximum size of each captured packet. If no value is specified or it is null then the entire packet will be captured. + type: integer + x-field-uid: 4 + format: + description: |- + The format of the capture file. + type: string + default: pcap + x-field-uid: 5 + x-enum: + pcap: + x-field-uid: 1 + pcapng: + x-field-uid: 2 + enum: + - pcap + - pcapng + name: + x-field-uid: 6 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Capture.Filter: + description: |- + Configuration for capture filters + type: object + properties: + choice: + description: |- + The type of capture filter. + type: string + default: custom + x-field-uid: 1 + x-enum: + custom: + x-field-uid: 1 + ethernet: + x-field-uid: 2 + vlan: + x-field-uid: 3 + ipv4: + x-field-uid: 4 + ipv6: + x-field-uid: 5 + enum: + - custom + - ethernet + - vlan + - ipv4 + - ipv6 + custom: + description: |- + Offset from last filter in the list. If no filters are present it is offset from position 0. Multiple custom filters can be present, the length of each custom filter is the length of the value being filtered. + $ref: '#/components/schemas/Capture.Custom' + x-field-uid: 2 + ethernet: + $ref: '#/components/schemas/Capture.Ethernet' + x-field-uid: 3 + vlan: + $ref: '#/components/schemas/Capture.Vlan' + x-field-uid: 4 + ipv4: + $ref: '#/components/schemas/Capture.Ipv4' + x-field-uid: 5 + ipv6: + $ref: '#/components/schemas/Capture.Ipv6' + x-field-uid: 6 + Capture.Custom: + properties: + offset: + description: |- + The bit offset of field to filter on + type: integer + default: 0 + x-field-uid: 1 + bit_length: + description: |- + The bit length of field to filter on + type: integer + default: 8 + x-field-uid: 2 + value: + x-field-uid: 3 + type: string + format: hex + default: '00' + mask: + x-field-uid: 4 + type: string + format: hex + default: '00' + negate: + x-field-uid: 5 + type: boolean + default: false + type: object + Capture.Field: + type: object + properties: + value: + type: string + format: hex + default: '00' + x-field-uid: 1 + mask: + type: string + format: hex + default: '00' + x-field-uid: 2 + negate: + type: boolean + default: false + x-field-uid: 3 + Capture.Ethernet: + type: object + properties: + src: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 1 + dst: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 2 + ether_type: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 3 + pfc_queue: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 4 + Capture.Vlan: + type: object + properties: + priority: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 1 + cfi: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 2 + id: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 3 + protocol: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 4 + Capture.Ipv4: + type: object + properties: + version: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 1 + header_length: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 2 + priority: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 3 + total_length: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 4 + identification: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 5 + reserved: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 6 + dont_fragment: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 7 + more_fragments: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 8 + fragment_offset: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 9 + time_to_live: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 10 + protocol: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 11 + header_checksum: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 12 + src: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 13 + dst: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 14 + Capture.Ipv6: + type: object + properties: + version: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 1 + traffic_class: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 2 + flow_label: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 3 + payload_length: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 4 + next_header: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 5 + hop_limit: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 6 + src: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 7 + dst: + $ref: '#/components/schemas/Capture.Field' + x-field-uid: 8 + Device: + description: |- + A container for emulated interfaces, loopback interfaces and protocol configurations. + type: object + properties: + ethernets: + description: |- + Ethernet configuration for one or more emulated network interfaces. + type: array + items: + $ref: '#/components/schemas/Device.Ethernet' + x-field-uid: 1 + ipv4_loopbacks: + description: |- + IPv4 Loopback interface that can be attached to an Ethernet in the same device or to an Ethernet in another device. + type: array + items: + $ref: '#/components/schemas/Device.Ipv4Loopback' + x-field-uid: 2 + ipv6_loopbacks: + description: |- + IPv6 Loopback interface that can be attached to an Ethernet in the same device or to an Ethernet in another device. + type: array + items: + $ref: '#/components/schemas/Device.Ipv6Loopback' + x-field-uid: 3 + isis: + description: |- + The properties of an IS-IS router and its children, such as IS-IS interfaces and route ranges. + $ref: '#/components/schemas/Device.IsisRouter' + x-field-uid: 4 + bgp: + description: |- + The properties of BGP router and its children, such as BGPv4, BGPv6 peers and their route ranges. + $ref: '#/components/schemas/Device.BgpRouter' + x-field-uid: 5 + vxlan: + description: |- + Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 + $ref: '#/components/schemas/Device.Vxlan' + x-field-uid: 6 + tcp: + description: "The properties of TCP and its children, " + type: array + items: + $ref: '#/components/schemas/Device.Tcp' + x-field-uid: 7 + http: + description: "The properties of HTTP and its children, " + type: array + items: + $ref: '#/components/schemas/Device.Http' + x-field-uid: 8 + name: + x-field-uid: 9 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Device.IsisRouter: + x-status: under-review + description: |- + Status: under-review + A container of properties for an ISIS router and its interfaces. + type: object + required: + - system_id + - interfaces + - name + properties: + instance: + description: |- + This contains the properties of a Multi-Instance-capable routers or MI-RTR. Each router can emulate one ISIS instance at a time. + $ref: '#/components/schemas/Device.IsisMultiInstance' + x-field-uid: 1 + system_id: + description: |- + The System ID for this emulated ISIS router, e.g. "640100010000". + type: string + format: hex + x-field-uid: 2 + interfaces: + description: |- + List of ISIS interfaces for this router. + type: array + items: + $ref: '#/components/schemas/Isis.Interface' + x-field-uid: 3 + basic: + description: "Contains basic properties of an ISIS Router. " + $ref: '#/components/schemas/Isis.Basic' + x-field-uid: 4 + advanced: + description: |- + Contains advance properties of an ISIS Router.. + $ref: '#/components/schemas/Isis.Advanced' + x-field-uid: 5 + router_auth: + description: |- + ISIS Router authentication properties. + $ref: '#/components/schemas/Isis.Authentication' + x-field-uid: 6 + v4_routes: + description: |- + Emulated ISIS IPv4 routes. + type: array + items: + $ref: '#/components/schemas/Isis.V4RouteRange' + x-field-uid: 7 + v6_routes: + description: |- + Emulated ISIS IPv6 routes. + type: array + items: + $ref: '#/components/schemas/Isis.V6RouteRange' + x-field-uid: 8 + name: + x-field-uid: 9 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.IsisMultiInstance: + x-status: under-review + description: "Status: under-review\nThis container properties of an Multi-Instance-capable\ + \ router (MI-RTR). " + type: object + properties: + iid: + description: |- + Instance Identifier (IID) TLV will associate a PDU with an ISIS instance by using a unique 16-bit number and including one or more Instance-Specific Topology Identifiers (ITIDs). + type: integer + default: 1 + minimum: 0 + maximum: 65535 + x-field-uid: 1 + itids: + description: |- + This contains one or more ITIDs that will be advertised in IID TLV. + type: array + items: + type: integer + default: 0 + minimum: 0 + maximum: 65535 + x-field-uid: 2 + Isis.Interface: + x-status: under-review + description: |- + Status: under-review + Configuration for single ISIS interface. + type: object + required: + - eth_name + - name + properties: + eth_name: + description: "The unique name of the Ethernet interface on which ISIS is\ + \ running. Two ISIS interfaces cannot share the same Ethernet. \ + \ \n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + metric: + description: |- + The default metric cost for the interface. + type: integer + default: 10 + x-field-uid: 2 + network_type: + description: "The type of network link. " + type: string + default: broadcast + x-field-uid: 3 + x-enum: + broadcast: + x-field-uid: 1 + point_to_point: + x-field-uid: 2 + enum: + - broadcast + - point_to_point + level_type: + description: "This indicates whether this router is participating in Level-1\ + \ (L1), \nLevel-2 (L2) or both L1 and L2 domains on this interface." + type: string + default: level_2 + x-field-uid: 4 + x-enum: + level_1: + x-field-uid: 1 + level_2: + x-field-uid: 2 + level_1_2: + x-field-uid: 3 + enum: + - level_1 + - level_2 + - level_1_2 + l1_settings: + description: |- + Settings of Level 1 Hello. + $ref: '#/components/schemas/IsisInterface.Level' + x-field-uid: 5 + l2_settings: + description: |- + Settings of Level 2 Hello. + $ref: '#/components/schemas/IsisInterface.Level' + x-field-uid: 6 + multi_topology_ids: + description: |- + Contains the properties of multiple topologies. + type: array + items: + $ref: '#/components/schemas/Isis.MT' + x-field-uid: 7 + traffic_engineering: + description: |- + Contains a list of Traffic Engineering attributes. + type: array + items: + $ref: '#/components/schemas/LinkState.TE' + x-field-uid: 8 + authentication: + description: |- + The Circuit authentication method used for the interfaces on this emulated ISIS v4/v6 router. + $ref: '#/components/schemas/IsisInterface.Authentication' + x-field-uid: 9 + advanced: + description: |- + Optional container for advanced interface properties. + $ref: '#/components/schemas/IsisInterface.Advanced' + x-field-uid: 10 + link_protection: + description: |- + Link protection on the ISIS link between two interfaces. + $ref: '#/components/schemas/IsisInterface.LinkProtection' + x-field-uid: 11 + srlg_values: + description: |- + This contains list of SRLG values for the link between two interfaces. + type: array + items: + type: integer + default: 0 + x-field-uid: 12 + name: + x-field-uid: 13 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + IsisInterface.Level: + description: |- + Configuration for the properties of Level 1 Hello. + type: object + properties: + priority: + description: |- + The Priority setting in Level 1 LAN Hellos for Designated Router election. + type: integer + default: 0 + x-field-uid: 1 + hello_interval: + description: |- + The Hello interval for Level 1 Hello messages, in seconds. + type: integer + default: 10 + x-field-uid: 2 + dead_interval: + description: |- + The Dead (Holding Time) interval for Level 1 Hello messages, in seconds. + type: integer + default: 30 + x-field-uid: 3 + Isis.MT: + x-status: under-review + description: |- + Status: under-review + Configuration of properties per interface per topology when multiple topologies are configured in an ISIS router. + in a ISIS router. + type: object + properties: + mt_id: + description: |- + The Multi Topology ID for one of the topologies supported on the ISIS interface. + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 1 + link_metric: + description: |- + Specifies the link metric for this topology on the ISIS interface. + type: integer + default: 10 + minimum: 0 + maximum: 16777215 + x-field-uid: 2 + LinkState.TE: + x-status: under-review + description: |- + Status: under-review + A container for Traffic Engineering properties on a interface. + type: object + properties: + administrative_group: + description: "The Administrative group sub-TLV (sub-TLV 3). It is a 4-octet\ + \ \nuser-defined bit mask used to assign administrative group numbers\ + \ \nto the interface, for use in assigning colors and resource classes.\ + \ \nEach set bit corresponds to a single administrative group for this\ + \ \ninterface. The settings translate into Group numbers, which range\ + \ \nfrom 0 to 31 (integers)." + type: string + format: hex + default: '00000000' + x-field-uid: 1 + metric_level: + description: |- + The user-assigned link metric for Traffic Engineering. + type: integer + format: int64 + minimum: 0 + maximum: 4261412864 + default: 0 + x-field-uid: 2 + max_bandwith: + description: "The maximum link bandwidth (sub-TLV 9) in bytes/sec allowed\ + \ for this \nlink for a direction." + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 3 + max_reservable_bandwidth: + description: "The maximum link bandwidth (sub-TLV 10) in bytes/sec allowed\ + \ for this \nlink in a direction." + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 4 + priority_bandwidths: + description: |- + Configuration of bandwidths of priority 0 through priority 7. + $ref: '#/components/schemas/LinkState.priorityBandwidths' + x-field-uid: 5 + LinkState.priorityBandwidths: + description: "Specifies the amount of bandwidth that can be reserved with a\ + \ setup priority of 0 \nthrough 7, arranged in increasing order with priority\ + \ 0 having highest priority. \nIn ISIS, this is sent in sub-TLV (11) of Extended\ + \ IS Reachability TLV. " + type: object + properties: + pb0: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 0. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 1 + pb1: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 1. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 2 + pb2: + description: |- + Specify the amount of bandwidth that can be reserved for the Priority 2. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 3 + pb3: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 3. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 4 + pb4: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 4. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 5 + pb5: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 5. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 6 + pb6: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 6. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 7 + pb7: + description: |- + Specifies the amount of bandwidth that can be reserved for the Priority 7. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 125000000 + x-field-uid: 8 + IsisInterface.Authentication: + description: |- + Optional container for circuit authentication properties. + type: object + required: + - auth_type + properties: + auth_type: + description: |- + The circuit authentication method. + type: string + x-field-uid: 1 + x-enum: + md5: + x-field-uid: 1 + password: + x-field-uid: 2 + enum: + - md5 + - password + md5: + description: |- + MD5 key to be used for authentication. + type: string + minLength: 0 + maxLength: 255 + x-field-uid: 2 + password: + description: |- + The password, in clear text, to be used for Authentication. + type: string + minLength: 0 + maxLength: 255 + x-field-uid: 3 + IsisInterface.Advanced: + description: |- + Optional container for advanced interface properties. + type: object + properties: + auto_adjust_mtu: + description: "If a padded Hello message is received on the interface, the\ + \ length of \nthe Hello packets sent out on that interface is adjusted\ + \ to match." + type: boolean + default: true + x-field-uid: 1 + auto_adjust_area: + description: "If a Level 1 Hello is received on this emulated router for\ + \ an area \nnot currently in its area list, an area from the received\ + \ Hello is \nadded to that list. This ensures an area match for all future\ + \ \nLevel 1 Hellos from the source L1 router." + type: boolean + default: true + x-field-uid: 2 + auto_adjust_supported_protocols: + description: "If a Hello message listing supported protocols is received\ + \ on this \nemulated router, the supported protocols advertised by this\ + \ router \nare changed to match exactly." + type: boolean + default: false + x-field-uid: 3 + enable_3way_handshake: + description: |- + If it is true, the Point-to-Point circuit will include 3-way TLV in its Point-to-Point IIH and attempt to establish the adjacency as specified in RFC 5303. This field is not applicable if network_type is set to 'broadcast' type in ISIS interface. + type: boolean + default: true + x-field-uid: 4 + p2p_hellos_to_unicast_mac: + description: "If it is true, the Point-to-Point Hello messages will be sent\ + \ to the unicast MAC address. " + type: boolean + default: false + x-field-uid: 5 + IsisInterface.LinkProtection: + description: |- + Optional container for the link protection sub TLV (type 20). + type: object + properties: + extra_traffic: + description: |- + Enable this to protect other link or links. LSPs on a link of this type are lost + if any of the links fail. + type: boolean + default: false + x-field-uid: 1 + unprotected: + description: "Enabling this signifies that there is no other link protecting\ + \ this \nlink. LSPs on a link of this type are lost if the link fails." + type: boolean + default: false + x-field-uid: 2 + shared: + description: "Enable this to share the Extra Traffic links between one or\ + \ more \nlinks of type Shared.There are one or more disjoint links of\ + \ type \nExtra Traffic that are protecting this link." + type: boolean + default: false + x-field-uid: 3 + dedicated_1_to_1: + description: "Enabling this signifies that there is one dedicated disjoint\ + \ link \nof type Extra Traffic that is protecting this link." + type: boolean + default: false + x-field-uid: 4 + dedicated_1_plus_1: + description: "Enabling this signifies that a dedicated disjoint link is\ + \ protecting \nthis link. However, the protecting link is not advertised\ + \ in the \nlink state database and is therefore not available for the\ + \ routing \nof LSPs." + type: boolean + default: false + x-field-uid: 5 + enhanced: + description: "Enabling this signifies that a protection scheme that is more\ + \ \nreliable than Dedicated 1+1." + type: boolean + default: false + x-field-uid: 6 + reserved_40: + description: "This is a Protection Scheme with value 0x40. " + type: boolean + default: false + x-field-uid: 7 + reserved_80: + description: "This is a Protection Scheme with value 0x80. " + type: boolean + default: false + x-field-uid: 8 + Isis.Basic: + description: |- + This contains ISIS router basic properties. + type: object + properties: + ipv4_te_router_id: + description: "IPv4 Traffic Engineering(TE) router id. This address should\ + \ be configured as an IPv4 Loopback address in 'ipv4_loopbacks' in the\ + \ Device. " + type: string + format: ipv4 + x-field-uid: 1 + hostname: + description: |- + Host name for the router. The host name is transmitted in all the packets sent from the router. + type: string + x-field-uid: 2 + enable_wide_metric: + description: |- + When set to true, it allows sending of more detailed metric information for the routes using 32-bit wide values using TLV 135 IP reachability and more detailed reachability information for IS reachability by using TLV 22. The detailed usage is described in RFC3784. + type: boolean + default: true + x-field-uid: 3 + learned_lsp_filter: + description: |- + Configuration for controlling storage of ISIS learned LSPs are received from the neighbors. + type: boolean + default: false + x-field-uid: 4 + Isis.Advanced: + description: |- + Contains ISIS router advanced properties. + type: object + properties: + enable_hello_padding: + description: |- + It enables padding of Hello message to MTU size. + type: boolean + default: true + x-field-uid: 1 + max_area_addresses: + description: "The Number of Area Addresses permitted, with a valid range\ + \ from 0 to 254. A zero indicates a maximum of 3 addresses. " + type: integer + minimum: 0 + maximum: 254 + default: 3 + x-field-uid: 2 + area_addresses: + description: |- + Its combination of the ISP and HO-DSP.Usually all nodes within an area have the same area address. If no area addresses are configured, a default area of "490001" will be advertised. + type: array + items: + type: string + format: hex + x-field-uid: 3 + lsp_refresh_rate: + description: |- + The rate at which LSPs are re-sent in seconds. + type: integer + minimum: 1 + maximum: 65535 + default: 600 + x-field-uid: 4 + lsp_lifetime: + description: |- + The MaxAge for retaining a learned LSP on this router in seconds. + type: integer + minimum: 1 + maximum: 65535 + default: 1200 + x-field-uid: 5 + psnp_interval: + description: |- + The number of milliseconds between transmissions of Partial Sequence Number PDU. + type: integer + minimum: 1 + maximum: 60000 + default: 2000 + x-field-uid: 6 + csnp_interval: + description: |- + The number of milliseconds between transmissions of Partial Sequence Number PDU. + type: integer + minimum: 1 + maximum: 65535000 + default: 10000 + x-field-uid: 7 + max_lsp_size: + description: |- + The maximum size in bytes of any LSP that can be transmitted over a link of equal or less than maximum MTU size. + type: integer + minimum: 64 + maximum: 9216 + default: 1492 + x-field-uid: 8 + lsp_mgroup_min_trans_interval: + description: |- + The number of seconds between transmissions of LSPs/MGROUP-PDUs. + type: integer + minimum: 1 + maximum: 60000 + default: 5000 + x-field-uid: 9 + enable_attached_bit: + description: |- + If the Attached bit is enabled, it indicates that the ISIS router is attached to another area or the Level 2 backbone. The purpose of an Attached-Bit is to accomplish Inter-Area Routing. When an L1/L2 router is connected to more than one area, it sets the Attached-bit on its L1 LSP. This can cause a default route ( 0.0.0.0/0 ) to be installed by the receiving router. + type: boolean + default: true + x-field-uid: 10 + Isis.Authentication: + description: |- + This contains ISIS Area/Domain authentication properties. + type: object + properties: + ignore_receive_md5: + description: |- + Do not verify MD5 checksum in received LSPs. + type: boolean + default: true + x-field-uid: 1 + area_auth: + description: |- + The Area authentication method used for the emulated ISIS router. + This is used for L1 LSPs. + $ref: '#/components/schemas/Isis.AuthenticationBase' + x-field-uid: 2 + domain_auth: + description: |- + The Domain authentication method used for the emulated ISIS router. + This is used for L2 LSPs. + $ref: '#/components/schemas/Isis.AuthenticationBase' + x-field-uid: 3 + Isis.AuthenticationBase: + description: |- + Optional container for ISIS authentication properties. + type: object + required: + - auth_type + properties: + auth_type: + description: |- + The authentication method. + type: string + x-field-uid: 1 + x-enum: + md5: + x-field-uid: 1 + password: + x-field-uid: 2 + enum: + - md5 + - password + md5: + description: |- + Authentication as an MD5 key. + type: string + minLength: 0 + maxLength: 255 + x-field-uid: 2 + password: + description: |- + Authentication as a clear text password. + type: string + minLength: 0 + maxLength: 255 + x-field-uid: 3 + Isis.V4RouteRange: + description: |- + Emulated ISIS IPv4 routes. + type: object + properties: + addresses: + description: |- + A list of group of IPv4 route addresses. + type: array + items: + $ref: '#/components/schemas/V4RouteAddress' + x-field-uid: 1 + link_metric: + x-field-uid: 2 + description: |- + The user-defined metric associated with this route range. + type: integer + default: 0 + minimum: 0 + maximum: 16777215 + origin_type: + x-field-uid: 3 + description: "The origin of the advertised route-internal or external to\ + \ the ISIS area. Options include the following: \n Internal-for intra-area\ + \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ + \ within L1, through Level\n1 LSPs." + type: string + default: internal + x-enum: + internal: + x-field-uid: 1 + external: + x-field-uid: 2 + enum: + - internal + - external + redistribution_type: + x-field-uid: 4 + description: "Defines the Up/Down (Redistribution) bit defined for TLVs\ + \ 128 and 130 by RFC 2966. It is used for domain-wide advertisement of\ + \ prefix information.\n\n Up (0)-used when a prefix is initially advertised\ + \ within the ISIS L3\nhierarchy, \n and for all other prefixes\ + \ in L1 and L2 LSPs. (default) \n Down (1)-used when an L1/L2 router\ + \ advertises L2 prefixes in L1 LSPs.\n\nThe prefixes are being advertised\ + \ from a higher level (L2) down to a lower level (L1). " + type: string + default: up + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + name: + x-field-uid: 5 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + prefix_attr_enabled: + x-field-uid: 6 + description: "Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability\ + \ Attribute Flags\nwill be advertised or not. " + type: boolean + default: false + x_flag: + x-field-uid: 7 + description: |- + External Prefix Flag (Bit 0) + type: boolean + default: false + r_flag: + x-field-uid: 8 + description: |- + Re-advertisement Flag (Bit 1) + type: boolean + default: false + n_flag: + x-field-uid: 9 + description: |- + Node Flag (Bit 2) + type: boolean + default: false + required: + - name + V4RouteAddress: + description: |- + A container for IPv4 route addresses. + type: object + required: + - address + properties: + address: + description: |- + The starting address of the network. + type: string + format: ipv4 + x-field-uid: 1 + prefix: + description: "The IPv4 network prefix length to be applied to the address. " + type: integer + default: 24 + minimum: 0 + maximum: 32 + x-field-uid: 2 + count: + description: |- + The total number of addresses in the range. + type: integer + default: 1 + minimum: 1 + x-field-uid: 3 + step: + description: |- + Increments the network address prefixes within a route range where multiple routes are present. The value is incremented according to the Prefix Length and Step. + type: integer + default: 1 + minimum: 1 + x-field-uid: 4 + V6RouteAddress: + description: |- + A container for IPv6 route addresses. + type: object + required: + - address + properties: + address: + description: |- + The starting address of the network. + type: string + format: ipv6 + x-field-uid: 1 + prefix: + description: |- + The IPv6 network prefix length to be applied to the address. + type: integer + default: 64 + minimum: 0 + maximum: 128 + x-field-uid: 2 + count: + description: |- + The total number of addresses in the range. + type: integer + default: 1 + minimum: 1 + x-field-uid: 3 + step: + description: |- + Increments the network address prefixes within a route range where multiple routes are present. The value is incremented according to the Prefix Length and Step. + type: integer + default: 1 + minimum: 1 + x-field-uid: 4 + MACRouteAddress: + description: |- + A container for MAC route addresses. + type: object + required: + - address + properties: + address: + description: |- + The starting address of the MAC Range. + type: string + format: mac + x-field-uid: 1 + prefix: + description: "The MAC prefix length to be applied to the address. " + type: integer + default: 48 + minimum: 0 + maximum: 48 + x-field-uid: 2 + count: + description: |- + The total number of mac addresses in the range. + type: integer + default: 1 + minimum: 1 + x-field-uid: 3 + step: + description: |- + Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. + type: integer + default: 1 + minimum: 1 + x-field-uid: 4 + Isis.V6RouteRange: + description: |- + Emulated ISIS IPv6 routes. + type: object + properties: + addresses: + description: |- + A list of group of IPv6 route addresses. + type: array + items: + $ref: '#/components/schemas/V6RouteAddress' + x-field-uid: 1 + link_metric: + x-field-uid: 2 + description: |- + The user-defined metric associated with this route range. + type: integer + default: 0 + minimum: 0 + maximum: 16777215 + origin_type: + x-field-uid: 3 + description: "The origin of the advertised route-internal or external to\ + \ the ISIS area. Options include the following: \n Internal-for intra-area\ + \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ + \ within L1, through Level\n1 LSPs." + type: string + default: internal + x-enum: + internal: + x-field-uid: 1 + external: + x-field-uid: 2 + enum: + - internal + - external + redistribution_type: + x-field-uid: 4 + description: "Defines the Up/Down (Redistribution) bit defined for TLVs\ + \ 128 and 130 by RFC 2966. It is used for domain-wide advertisement of\ + \ prefix information.\n\n Up (0)-used when a prefix is initially advertised\ + \ within the ISIS L3\nhierarchy, \n and for all other prefixes\ + \ in L1 and L2 LSPs. (default) \n Down (1)-used when an L1/L2 router\ + \ advertises L2 prefixes in L1 LSPs.\n\nThe prefixes are being advertised\ + \ from a higher level (L2) down to a lower level (L1). " + type: string + default: up + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + name: + x-field-uid: 5 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + prefix_attr_enabled: + x-field-uid: 6 + description: "Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability\ + \ Attribute Flags\nwill be advertised or not. " + type: boolean + default: false + x_flag: + x-field-uid: 7 + description: |- + External Prefix Flag (Bit 0) + type: boolean + default: false + r_flag: + x-field-uid: 8 + description: |- + Re-advertisement Flag (Bit 1) + type: boolean + default: false + n_flag: + x-field-uid: 9 + description: |- + Node Flag (Bit 2) + type: boolean + default: false + required: + - name + Device.BgpRouter: + description: |- + Configuration for one or more IPv4 or IPv6 BGP peers. + type: object + required: + - router_id + properties: + router_id: + description: |- + The BGP router ID is a unique identifier used by BGP. It is a 32-bit value that is often represented by an IPv4 address. + type: string + format: ipv4 + x-field-uid: 1 + ipv4_interfaces: + description: "This contains an array of references to IPv4 interfaces, \ + \ each of which will have list of peers to different destinations. " + type: array + items: + $ref: '#/components/schemas/Bgp.V4Interface' + x-field-uid: 2 + ipv6_interfaces: + description: |- + This contains an array of references to IPv6 interfaces, each of which will have list of peers to different destinations. + type: array + items: + $ref: '#/components/schemas/Bgp.V6Interface' + x-field-uid: 3 + Bgp.V4Peer: + x-status: under-review + description: |- + Status: under-review + Configuration for emulated BGPv4 peers and routes. + type: object + required: + - peer_address + - as_type + - as_number + - name + properties: + peer_address: + description: |- + IPv4 address of the BGP peer for the session. + type: string + format: ipv4 + x-field-uid: 1 + evpn_ethernet_segments: + description: "This contains the list of Ethernet Virtual Private Network\ + \ (EVPN) Ethernet Segments (ES) Per BGP Peer for IPv4 Address Family Identifier\ + \ (AFI).\n\nEach Ethernet Segment contains a list of EVPN Instances (EVIs)\ + \ . \nEach EVI contains a list of Broadcast Domains. \nEach Broadcast\ + \ Domain contains a list of MAC/IP Ranges. \n\n is responsible for advertising Ethernet Auto-discovery\ + \ Route Per EVI (Type 1).\n\n is responsible for\ + \ advertising Ethernet Auto-discovery Route Per Ethernet Segment (Type\ + \ 1).\n\n is responsible\ + \ for advertising MAC/IP Advertisement Route (Type 2).\n\n is responsible for advertising Inclusive Multicast\ + \ Ethernet Tag Route (Type 3).\n\nEthernet Segment is responsible for\ + \ advertising Ethernet Segment Route (Type 4)." + type: array + items: + $ref: '#/components/schemas/BgpV4.EthernetSegment' + x-field-uid: 2 + as_type: + x-field-uid: 3 + description: |- + The type of BGP autonomous system. External BGP is used for BGP links between two or more autonomous systems (ebgp). Internal BGP is used within a single autonomous system (ibgp). BGP property defaults are aligned with this object defined as an internal BGP peer. If the as_type is specified as 'ebgp' then other properties will need to be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' attribute in 'as_path' field in any Route Range should be changed from default value 'do_not_include_local_as' to any other value. + type: string + x-enum: + ibgp: + x-field-uid: 1 + ebgp: + x-field-uid: 2 + enum: + - ibgp + - ebgp + as_number: + x-field-uid: 4 + description: |- + Autonomous System Number (AS number or ASN) + type: integer + as_number_width: + x-field-uid: 5 + description: |- + The width in bytes of the as_number values. Any as_number values that exceeds the width MUST result in an error. + type: string + default: four + x-enum: + two: + x-field-uid: 1 + four: + x-field-uid: 2 + enum: + - two + - four + advanced: + x-field-uid: 6 + $ref: '#/components/schemas/Bgp.Advanced' + capability: + x-field-uid: 7 + $ref: '#/components/schemas/Bgp.Capability' + learned_information_filter: + x-field-uid: 8 + $ref: '#/components/schemas/Bgp.LearnedInformationFilter' + v4_routes: + x-field-uid: 9 + description: |- + Emulated BGPv4 route ranges. + type: array + items: + $ref: '#/components/schemas/Bgp.V4RouteRange' + v6_routes: + x-field-uid: 10 + description: |- + Emulated BGPv6 route ranges. + type: array + items: + $ref: '#/components/schemas/Bgp.V6RouteRange' + v4_srte_policies: + x-field-uid: 11 + description: |- + Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier (AFI). + type: array + items: + $ref: '#/components/schemas/BgpSrte.V4Policy' + v6_srte_policies: + x-field-uid: 12 + description: |- + Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier (AFI). + type: array + items: + $ref: '#/components/schemas/BgpSrte.V6Policy' + name: + x-field-uid: 13 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Bgp.V4Interface: + description: |- + Configuration for emulated BGPv4 peers and routes on a single IPv4 interface. + type: object + required: + - ipv4_name + properties: + ipv4_name: + description: | + The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers. + + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv4Loopback/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv4Loopback/properties/name + x-field-uid: 1 + peers: + description: |- + This contains the list of BGPv4 peers configured on this interface. + type: array + items: + $ref: '#/components/schemas/Bgp.V4Peer' + x-field-uid: 2 + BgpV4.EthernetSegment: + description: "Configuration for BGP Ethernet Segment ranges. Advertises following\ + \ routes - \n\nType 4 - Ethernet Segment Route" + type: object + properties: + df_election: + description: |- + Designated Forwarder (DF) election configuration. + $ref: '#/components/schemas/Bgp.EthernetSegment.DfElection' + x-field-uid: 1 + evis: + description: |- + This contains the list of EVIs. + type: array + items: + $ref: '#/components/schemas/BgpV4.EvpnEvis' + x-field-uid: 2 + esi: + x-field-uid: 3 + description: |- + 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . + type: string + format: hex + default: '00000000000000000000' + active_mode: + x-field-uid: 4 + description: |- + Single Active or All Active mode Redundancy mode selection for Multi-home. + type: string + default: all_active + x-enum: + single_active: + x-field-uid: 1 + all_active: + x-field-uid: 2 + enum: + - single_active + - all_active + esi_label: + x-field-uid: 5 + description: "The label value to be advertised as ESI Label in ESI Label\ + \ Extended Community. This is included in Ethernet Auto-discovery per\ + \ ES Routes advertised by a router. " + type: integer + minimum: 0 + maximum: 16777215 + default: 0 + advanced: + x-field-uid: 6 + $ref: '#/components/schemas/Bgp.RouteAdvanced' + communities: + x-field-uid: 7 + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + ext_communities: + x-field-uid: 8 + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + as_path: + x-field-uid: 9 + description: |- + Optional AS PATH settings. + $ref: '#/components/schemas/Bgp.AsPath' + Bgp.EthernetSegment.DfElection: + description: |- + Configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. + type: object + properties: + election_timer: + description: |- + The DF election timer in seconds. + type: integer + minimum: 1 + maximum: 300 + default: 3 + x-field-uid: 1 + Bgp.RouteAdvanced: + description: |- + Configuration for advanced BGP route range settings. + type: object + properties: + multi_exit_discriminator: + description: |- + The multi exit discriminator (MED) value. A null value means the MED feature is not enabled. + type: integer + x-field-uid: 1 + origin: + description: |- + The origin value. A null value means the origin feature is not enabled. + type: string + default: igp + x-field-uid: 2 + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + enum: + - igp + - egp + Bgp.Community: + description: |- + BGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. + type: object + properties: + type: + description: |- + The type of community AS number. + type: string + x-field-uid: 1 + x-enum: + manual_as_number: + x-field-uid: 1 + no_export: + x-field-uid: 2 + no_advertised: + x-field-uid: 3 + no_export_subconfed: + x-field-uid: 4 + llgr_stale: + x-field-uid: 5 + no_llgr: + x-field-uid: 6 + enum: + - manual_as_number + - no_export + - no_advertised + - no_export_subconfed + - llgr_stale + - no_llgr + as_number: + description: |- + First two octets of 32 bit community AS number. + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 2 + as_custom: + description: "Last two octets of the community value. " + type: integer + minimum: 0 + maximum: 65535 + default: 0 + x-field-uid: 3 + Bgp.ExtCommunity: + description: |- + The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is also divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. + type: object + properties: + type: + description: "Extended Community Type field of 1 Byte.\n - administrator_as_2octet:\ + \ Two-Octet AS Specific Extended Community (RFC 4360).\n - administrator_ipv4_address:\ + \ IPv4 Address Specific Extended Community (RFC 4360).\n - administrator_as_4octet:\ + \ 4-Octet AS Specific Extended Community (RFC 5668).\n - opaque: Opaque\ + \ Extended Community (RFC 7432).\n - evpn: EVPN Extended Community (RFC\ + \ 7153). \n - administrator_as_2octet_link_bandwidth : Link Bandwidth\ + \ Extended Community (RFC 7153)." + type: string + x-field-uid: 1 + x-enum: + administrator_as_2octet: + x-field-uid: 1 + administrator_ipv4_address: + x-field-uid: 2 + administrator_as_4octet: + x-field-uid: 3 + opaque: + x-field-uid: 4 + evpn: + x-field-uid: 5 + administrator_as_2octet_link_bandwidth: + x-field-uid: 6 + enum: + - administrator_as_2octet + - administrator_ipv4_address + - administrator_as_4octet + - opaque + - evpn + - administrator_as_2octet_link_bandwidth + subtype: + description: |- + Extended Community Sub Type field of 1 Byte. + - route_target: Route Target. + - origin: Origin. + - extended_bandwidth: Specifies the link bandwidth. + - color: Specifies the color value. + - encapsulation: Specifies the Encapsulation Extended Community. + - mac_address: Specifies the Extended community MAC address. + type: string + x-field-uid: 2 + x-enum: + route_target: + x-field-uid: 1 + origin: + x-field-uid: 2 + extended_bandwidth: + x-field-uid: 3 + color: + x-field-uid: 4 + encapsulation: + x-field-uid: 5 + mac_address: + x-field-uid: 6 + enum: + - route_target + - origin + - extended_bandwidth + - color + - encapsulation + - mac_address + value: + description: |- + Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. + type: string + format: hex + x-field-uid: 3 + Bgp.AsPath: + description: |- + This attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + type: object + properties: + as_set_mode: + description: |- + Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, "Do Not Include Local AS" must be chosen. For eBGP sessions, any choice other than "Do Not Include Local AS" can be chosen. + type: string + default: do_not_include_local_as + x-field-uid: 1 + x-enum: + do_not_include_local_as: + x-field-uid: 1 + include_as_seq: + x-field-uid: 2 + include_as_set: + x-field-uid: 3 + include_as_confed_seq: + x-field-uid: 4 + include_as_confed_set: + x-field-uid: 5 + prepend_to_first_segment: + x-field-uid: 6 + enum: + - do_not_include_local_as + - include_as_seq + - include_as_set + - include_as_confed_seq + - include_as_confed_set + - prepend_to_first_segment + segments: + description: "The additional AS path segments to be added in the NLRI. \ + \ By default, an empty AS path is always included and the local AS is\ + \ added to it as per the value of 'as_set_mode' attribute. " + type: array + items: + $ref: '#/components/schemas/Bgp.AsPathSegment' + x-field-uid: 2 + Bgp.AsPathSegment: + description: |- + Configuration for a single BGP AS path segment + type: object + properties: + type: + description: |- + AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. + The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. + type: string + default: as_seq + x-field-uid: 1 + x-enum: + as_seq: + x-field-uid: 1 + as_set: + x-field-uid: 2 + as_confed_seq: + x-field-uid: 3 + as_confed_set: + x-field-uid: 4 + enum: + - as_seq + - as_set + - as_confed_seq + - as_confed_set + as_numbers: + description: |- + The AS numbers in this AS path segment. + type: array + items: + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 1 + x-field-uid: 2 + BgpV4.EvpnEvis: + description: "This contains a list of different flavors of EVPN. \nFor example\ + \ EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment.\ + \ \nNeed to instantiate correct type of EVPN instance as per requirement." + type: object + properties: + choice: + type: string + default: evi_vxlan + x-field-uid: 1 + x-enum: + evi_vxlan: + x-field-uid: 1 + enum: + - evi_vxlan + evi_vxlan: + description: "EVPN VXLAN instance to be configured per Ethernet Segment.\ + \ " + $ref: '#/components/schemas/BgpV4.EviVxlan' + x-field-uid: 2 + BgpV4.EviVxlan: + description: "Configuration for BGP EVPN EVI. Advertises following routes -\ + \ \n\nType 3 - Inclusive Multicast Ethernet Tag Route\n\nType 1 - Ethernet\ + \ Auto-discovery Route (Per EVI)\n\nType 1 - Ethernet Auto-discovery Route\ + \ (Per ES)" + type: object + properties: + broadcast_domains: + description: |- + This contains the list of Broadcast Domains to be configured per EVI. + type: array + items: + $ref: '#/components/schemas/BgpV4.EviVxlan.BroadcastDomain' + x-field-uid: 1 + replication_type: + x-field-uid: 2 + description: |- + This model only supports Ingress Replication + type: string + default: ingress_replication + x-enum: + ingress_replication: + x-field-uid: 1 + enum: + - ingress_replication + pmsi_label: + x-field-uid: 3 + description: |- + Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. + type: integer + minimum: 0 + maximum: 16777215 + default: 16 + ad_label: + x-field-uid: 4 + description: |- + The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per + type: integer + minimum: 0 + maximum: 16777215 + default: 0 + route_distinguisher: + x-field-uid: 5 + description: |- + Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". + $ref: '#/components/schemas/Bgp.RouteDistinguisher' + route_target_export: + x-field-uid: 6 + description: "List of Layer 2 Virtual Network Identifier (L2VNI) export\ + \ targets associated with this EVI. " + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + route_target_import: + x-field-uid: 7 + description: "List of L2VNI import targets associated with this EVI. " + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + l3_route_target_export: + x-field-uid: 8 + description: |- + List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + l3_route_target_import: + x-field-uid: 9 + description: |- + List of L3VNI Import Route Targets. + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + advanced: + x-field-uid: 10 + $ref: '#/components/schemas/Bgp.RouteAdvanced' + communities: + x-field-uid: 11 + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + ext_communities: + x-field-uid: 12 + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + as_path: + x-field-uid: 13 + description: |- + Optional AS PATH settings. + $ref: '#/components/schemas/Bgp.AsPath' + BgpV4.EviVxlan.BroadcastDomain: + description: |- + Configuration for Broadcast Domains per EVI. + type: object + properties: + cmac_ip_range: + description: "This contains the list of Customer MAC/IP Ranges to be configured\ + \ per Broadcast Domain. \n\nAdvertises following route - \nType 2 - MAC/IP\ + \ Advertisement Route." + type: array + items: + $ref: '#/components/schemas/Bgp.CMacIpRange' + x-field-uid: 1 + ethernet_tag_id: + x-field-uid: 2 + description: |- + The Ethernet Tag ID of the Broadcast Domain. + type: integer + minimum: 0 + maximum: 4294967295 + default: 0 + vlan_aware_service: + x-field-uid: 3 + description: |- + VLAN-Aware service to be enabled or disabled. + type: boolean + default: false + Bgp.CMacIpRange: + description: "Configuration for MAC/IP Ranges per Broadcast Domain. \n\nAdvertises\ + \ following route -\n\nType 2 - MAC/IP Advertisement Route." + type: object + properties: + mac_addresses: + description: "Host MAC address range per Broadcast Domain. " + $ref: '#/components/schemas/MACRouteAddress' + x-field-uid: 1 + l2vni: + description: |- + Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) + type: integer + minimum: 0 + maximum: 16777215 + default: 0 + x-field-uid: 2 + ipv4_addresses: + description: "Host IPv4 address range per Broadcast Domain. " + $ref: '#/components/schemas/V4RouteAddress' + x-field-uid: 3 + ipv6_addresses: + description: "Host IPv6 address range per Broadcast Domain. \ + \ " + $ref: '#/components/schemas/V6RouteAddress' + x-field-uid: 4 + l3vni: + description: |- + Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). + type: integer + minimum: 0 + maximum: 16777215 + default: 0 + x-field-uid: 5 + include_default_gateway: + description: |- + Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). + type: boolean + default: false + x-field-uid: 6 + advanced: + $ref: '#/components/schemas/Bgp.RouteAdvanced' + x-field-uid: 7 + communities: + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + x-field-uid: 8 + ext_communities: + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + x-field-uid: 9 + as_path: + description: |- + Optional AS PATH settings. + $ref: '#/components/schemas/Bgp.AsPath' + x-field-uid: 10 + name: + x-field-uid: 11 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Bgp.RouteDistinguisher: + description: |- + BGP Route Distinguisher. + type: object + properties: + rd_type: + description: "Route Distinguisher Type field of 2 Byte.\n - as_2octet: Two-Octet\ + \ AS Specific Extended Community (RFC 4360).\n - ipv4_address: IPv4 Address\ + \ Specific Extended Community (RFC 4360).\n - as_4octet: 4-Octet AS Specific\ + \ Extended Community (RFC 5668). " + type: string + default: as_2octet + x-field-uid: 1 + x-enum: + as_2octet: + x-field-uid: 1 + ipv4_address: + x-field-uid: 2 + as_4octet: + x-field-uid: 3 + enum: + - as_2octet + - ipv4_address + - as_4octet + auto_config_rd_ip_addr: + description: |- + Allow to automatically configure RD IP address from local ip. + type: boolean + default: false + x-field-uid: 2 + rd_value: + description: |- + Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" + type: string + x-field-uid: 3 + Bgp.RouteTarget: + description: |- + BGP Route Target. + type: object + properties: + rt_type: + description: "Extended Community Type field of 2 Byte.\n - as_2octet: Two-Octet\ + \ AS Specific Extended Community (RFC 4360).\n - ipv4_address: IPv4 Address\ + \ Specific Extended Community (RFC 4360).\n - as_4octet: 4-Octet AS Specific\ + \ Extended Community (RFC 5668). " + type: string + x-field-uid: 1 + x-enum: + as_2octet: + x-field-uid: 1 + ipv4_address: + x-field-uid: 2 + as_4octet: + x-field-uid: 3 + enum: + - as_2octet + - ipv4_address + - as_4octet + rt_value: + description: |- + Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" + type: string + x-field-uid: 2 + Bgp.Advanced: + x-status: under-review + description: |- + Status: under-review + Configuration for BGP advanced settings. + type: object + properties: + hold_time_interval: + description: |- + Number of seconds the sender proposes for the value of the Hold Timer. + type: integer + default: 90 + x-field-uid: 1 + keep_alive_interval: + description: |- + Number of seconds between transmissions of Keepalive messages by this peer. + type: integer + default: 30 + x-field-uid: 2 + update_interval: + description: |- + The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. + type: integer + default: 0 + x-field-uid: 3 + time_to_live: + description: |- + The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. + type: integer + default: 64 + x-field-uid: 4 + md5_key: + description: |- + The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. + type: string + x-field-uid: 5 + Bgp.Capability: + x-status: under-review + description: |- + Status: under-review + Configuration for BGP capability settings. + type: object + properties: + ipv4_unicast: + description: |- + Support for the IPv4 Unicast address family. + type: boolean + default: true + x-field-uid: 1 + ipv4_multicast: + description: "Support for the IPv4 Multicast address family. " + type: boolean + default: false + x-field-uid: 2 + ipv6_unicast: + description: |- + Support for the IPv4 Unicast address family. + type: boolean + default: true + x-field-uid: 3 + ipv6_multicast: + description: |- + Support for the IPv6 Multicast address family. + type: boolean + default: false + x-field-uid: 4 + vpls: + description: "Support for VPLS as below. \nRFC4761 - Virtual Private LAN\ + \ Service (VPLS) using BGP for Auto-Discovery\nand Signaling. \nRFC6624\ + \ - Layer 2 Virtual Private Networks using BGP for Auto-Discovery \nand\ + \ Signaling." + type: boolean + default: false + x-field-uid: 5 + route_refresh: + description: |- + Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. + type: boolean + default: true + x-field-uid: 6 + route_constraint: + description: |- + Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. + type: boolean + default: false + x-field-uid: 7 + link_state_non_vpn: + description: |- + Support for BGP Link State for ISIS and OSPF. + type: boolean + default: false + x-field-uid: 8 + link_state_vpn: + description: |- + Capability advertisement of BGP Link State for VPNs. + type: boolean + default: false + x-field-uid: 9 + evpn: + description: |- + Support for the EVPN address family. + type: boolean + default: false + x-field-uid: 10 + extended_next_hop_encoding: + description: |- + Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. + type: boolean + default: false + x-field-uid: 11 + ipv4_multicast_vpn: + description: |- + Support for the IPv4 Multicast VPN address family. + type: boolean + default: false + x-field-uid: 12 + ipv4_mpls_vpn: + description: |- + Support for the IPv4 MPLS L3VPN address family. + type: boolean + default: false + x-field-uid: 13 + ipv4_mdt: + description: |- + Supports for IPv4 MDT address family messages. + type: boolean + default: false + x-field-uid: 14 + ipv4_multicast_mpls_vpn: + description: |- + Support for the IPv4 Multicast VPN address family. + type: boolean + default: false + x-field-uid: 15 + ipv4_unicast_flow_spec: + description: |- + Support for propagation of IPv4 unicast flow specification rules. + type: boolean + default: false + x-field-uid: 16 + ipv4_sr_te_policy: + description: |- + Support for IPv4 SRTE policy. + type: boolean + default: false + x-field-uid: 17 + ipv4_unicast_add_path: + description: |- + Support for IPv4 Unicast Add Path Capability. + type: boolean + default: false + x-field-uid: 18 + ipv6_multicast_vpn: + description: |- + Support for the IPv6 Multicast VPN address family. + type: boolean + default: false + x-field-uid: 19 + ipv6_mpls_vpn: + description: |- + Support for the IPv6 MPLS L3VPN address family. + type: boolean + default: false + x-field-uid: 20 + ipv6_mdt: + description: |- + Support for IPv6 MDT address family messages. + type: boolean + default: false + x-field-uid: 21 + ipv6_multicast_mpls_vpn: + description: |- + Support for the IPv6 Multicast VPN address family. + type: boolean + default: false + x-field-uid: 22 + ipv6_unicast_flow_spec: + description: |- + Support for propagation of IPv6 unicast flow specification rules. + type: boolean + default: false + x-field-uid: 23 + ipv6_sr_te_policy: + description: |- + Support for IPv6 SRTE policy. + type: boolean + default: false + x-field-uid: 24 + ipv6_unicast_add_path: + description: |- + Support for IPv6 Unicast Add Path Capability. + type: boolean + default: false + x-field-uid: 25 + Bgp.LearnedInformationFilter: + x-status: under-review + description: |- + Status: under-review + Configuration for controlling storage of BGP learned information recieved from the peer. + type: object + properties: + unicast_ipv4_prefix: + description: |- + If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. + type: boolean + default: false + x-field-uid: 1 + unicast_ipv6_prefix: + description: |- + If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. + type: boolean + default: false + x-field-uid: 2 + Bgp.V4RouteRange: + description: |- + Emulated BGPv4 route range. + type: object + properties: + addresses: + description: |- + A list of group of IPv4 route addresses. + type: array + items: + $ref: '#/components/schemas/V4RouteAddress' + x-field-uid: 1 + next_hop_mode: + description: "Specify the NextHop in MP REACH NLRI. The mode for setting\ + \ the IP address of the NextHop in the MP REACH NLRI can be one of the\ + \ following:\n Local IP: Automatically fills the Nexthop with the Local\ + \ IP of the BGP\npeer.\n If BGP peer is of type IPv6, Nexthop Encoding\ + \ capability should be enabled.\n Manual: Override the Nexthop with any\ + \ arbitrary IPv4/IPv6 address. " + type: string + default: local_ip + x-field-uid: 2 + x-enum: + local_ip: + x-field-uid: 1 + manual: + x-field-uid: 2 + enum: + - local_ip + - manual + next_hop_address_type: + description: |- + If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. + type: string + default: ipv4 + x-field-uid: 3 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + enum: + - ipv4 + - ipv6 + next_hop_ipv4_address: + description: |- + The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + type: string + format: ipv4 + default: 0.0.0.0 + x-field-uid: 4 + next_hop_ipv6_address: + description: "The IPv6 address of the next hop if the Nexthop Mode is manual\ + \ and the Nexthop type is IPv6. " + type: string + format: ipv6 + default: ::0 + x-field-uid: 5 + advanced: + x-field-uid: 6 + $ref: '#/components/schemas/Bgp.RouteAdvanced' + communities: + x-field-uid: 7 + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + as_path: + x-field-uid: 8 + $ref: '#/components/schemas/Bgp.AsPath' + add_path: + x-field-uid: 9 + $ref: '#/components/schemas/Bgp.AddPath' + name: + x-field-uid: 10 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + Bgp.AddPath: + description: |- + The BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + type: object + properties: + path_id: + description: |- + The id of the additional path. + type: integer + default: 1 + x-field-uid: 1 + Bgp.V6RouteRange: + description: |- + Emulated BGPv6 route range. + type: object + properties: + addresses: + description: |- + A list of group of IPv6 route addresses. + type: array + items: + $ref: '#/components/schemas/V6RouteAddress' + x-field-uid: 1 + next_hop_mode: + description: "Specify the NextHop in MP REACH NLRI. The mode for setting\ + \ the IP address of the NextHop in the MP REACH NLRI can be one of the\ + \ following:\n Local IP: Automatically fills the Nexthop with the Local\ + \ IP of the BGP\npeer.\n If BGP peer is of type IPv6, Nexthop Encoding\ + \ capability should be enabled.\n Manual: Override the Nexthop with any\ + \ arbitrary IPv4/IPv6 address. " + type: string + default: local_ip + x-field-uid: 2 + x-enum: + local_ip: + x-field-uid: 1 + manual: + x-field-uid: 2 + enum: + - local_ip + - manual + next_hop_address_type: + description: |- + If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. + type: string + default: ipv6 + x-field-uid: 3 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + enum: + - ipv4 + - ipv6 + next_hop_ipv4_address: + description: |- + The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + type: string + format: ipv4 + default: 0.0.0.0 + x-field-uid: 4 + next_hop_ipv6_address: + description: "The IPv6 address of the next hop if the Nexthop Mode is manual\ + \ and the Nexthop type is IPv6. " + type: string + format: ipv6 + default: ::0 + x-field-uid: 5 + advanced: + x-field-uid: 6 + $ref: '#/components/schemas/Bgp.RouteAdvanced' + communities: + x-field-uid: 7 + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + as_path: + x-field-uid: 8 + $ref: '#/components/schemas/Bgp.AsPath' + add_path: + x-field-uid: 9 + $ref: '#/components/schemas/Bgp.AddPath' + name: + x-field-uid: 10 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + BgpSrte.V4Policy: + description: "Configuration for BGP Segment Routing Traffic Engineering(SRTE)\ + \ \npolicy.\n" + type: object + required: + - ipv4_endpoint + - name + properties: + distinguisher: + description: |- + 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 1 + x-field-uid: 1 + color: + description: |- + Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 100 + x-field-uid: 2 + ipv4_endpoint: + description: |- + Specifies a single node or a set of nodes (e.g. an anycast address). It is selected on the basis of the SR Policy type (AFI). + type: string + format: ipv4 + x-field-uid: 3 + next_hop_mode: + description: |- + Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. + type: string + default: local_ip + x-field-uid: 4 + x-enum: + local_ip: + x-field-uid: 1 + manual: + x-field-uid: 2 + enum: + - local_ip + - manual + next_hop_address_type: + description: "Type of next hop IP address to be used when 'next_hop_mode'\ + \ is set to 'manual'. " + type: string + default: ipv4 + x-field-uid: 5 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + enum: + - ipv4 + - ipv6 + next_hop_ipv4_address: + description: |- + The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. + type: string + format: ipv4 + x-field-uid: 6 + next_hop_ipv6_address: + description: "The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type'\ + \ is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. " + type: string + format: ipv6 + x-field-uid: 7 + advanced: + $ref: '#/components/schemas/Bgp.RouteAdvanced' + x-field-uid: 8 + add_path: + $ref: '#/components/schemas/Bgp.AddPath' + x-field-uid: 9 + as_path: + $ref: '#/components/schemas/Bgp.AsPath' + x-field-uid: 10 + communities: + description: |- + Optional Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + x-field-uid: 11 + ext_communities: + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + x-field-uid: 12 + tunnel_tlvs: + description: |- + List Tunnel Encapsulation Attributes. + type: array + items: + $ref: '#/components/schemas/BgpSrte.V4TunnelTlv' + x-field-uid: 13 + name: + x-field-uid: 14 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + active: + x-field-uid: 15 + description: |- + If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. + type: boolean + default: true + BgpSrte.V4TunnelTlv: + description: |- + Configuration for BGP SRTE Tunnel TLV. + type: object + properties: + remote_endpoint_sub_tlv: + $ref: '#/components/schemas/BgpSrte.RemoteEndpointSubTlv' + x-field-uid: 1 + color_sub_tlv: + $ref: '#/components/schemas/BgpSrte.ColorSubTlv' + x-field-uid: 2 + binding_sub_tlv: + $ref: '#/components/schemas/BgpSrte.BindingSubTlv' + x-field-uid: 3 + preference_sub_tlv: + $ref: '#/components/schemas/BgpSrte.PreferenceSubTlv' + x-field-uid: 4 + policy_priority_sub_tlv: + $ref: '#/components/schemas/BgpSrte.PolicyPrioritySubTlv' + x-field-uid: 5 + policy_name_sub_tlv: + $ref: '#/components/schemas/BgpSrte.PolicyNameSubTlv' + x-field-uid: 6 + explicit_null_label_policy_sub_tlv: + $ref: '#/components/schemas/BgpSrte.ExplicitNullLabelPolicySubTlv' + x-field-uid: 7 + segment_lists: + type: array + items: + $ref: '#/components/schemas/BgpSrte.SegmentList' + x-field-uid: 8 + name: + x-field-uid: 9 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + active: + x-field-uid: 10 + description: |- + If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. + type: boolean + default: true + required: + - name + BgpSrte.RemoteEndpointSubTlv: + description: |- + Configuration for the BGP remote endpoint sub TLV. + type: object + properties: + as_number: + description: |- + Autonomous system (AS) number + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 0 + x-field-uid: 1 + address_family: + description: |- + Determines the address type + type: string + default: ipv4 + x-field-uid: 2 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + enum: + - ipv4 + - ipv6 + ipv4_address: + description: |- + The IPv4 address of the Remote Endpoint. + type: string + format: ipv4 + default: 0.0.0.0 + x-field-uid: 3 + ipv6_address: + description: |- + The IPv6 address of the Remote Endpoint. + type: string + format: ipv6 + default: ::0 + x-field-uid: 4 + BgpSrte.ColorSubTlv: + description: "Configuration for the Policy Color attribute sub-TLV. The Color\ + \ sub-TLV MAY be used as a way to \"color\" the corresponding Tunnel TLV.\ + \ The Value field of the sub-TLV is eight octets long and consists of a Color\ + \ Extended Community. First two octets of its Value field are 0x030b as type\ + \ and subtype of extended community. Remaining six octets are are exposed\ + \ to configure. " + type: object + properties: + color: + description: |- + Six octet values. Example: 000000000064 for color value 100. + type: string + format: hex + x-field-uid: 1 + BgpSrte.BindingSubTlv: + description: |- + Configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. + type: object + properties: + binding_sid_type: + description: |- + Type of the binding SID. Supported types are "No Binding SID" or "Four Octets Sid" or "IPv6 SID". + type: string + default: no_binding + x-field-uid: 1 + x-enum: + no_binding: + x-field-uid: 1 + four_octet_sid: + x-field-uid: 2 + ipv6_sid: + x-field-uid: 3 + enum: + - no_binding + - four_octet_sid + - ipv6_sid + four_octet_sid: + description: "Binding SID is encoded in 4 octets. " + type: integer + x-field-uid: 2 + ipv6_sid: + description: |- + IPv6 SID value. + type: string + format: ipv6 + x-field-uid: 3 + s_flag: + description: |- + S-Flag encodes the "Specified-BSID-only" behavior. + type: boolean + default: false + x-field-uid: 4 + i_flag: + description: |- + I-Flag encodes the "Drop Upon Invalid" behavior. + type: boolean + default: false + x-field-uid: 5 + BgpSrte.PreferenceSubTlv: + description: |- + Configuration for BGP preference sub TLV of the SR Policy candidate path. + type: object + properties: + preference: + description: |- + The preference value of the SR Policy candidate path. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 0 + x-field-uid: 1 + BgpSrte.PolicyPrioritySubTlv: + description: |- + Configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. + type: object + properties: + policy_priority: + description: |- + One-octet Priority value. + type: integer + minimum: 0 + maximum: 255 + x-field-uid: 1 + BgpSrte.PolicyNameSubTlv: + description: |- + Configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. + type: object + properties: + policy_name: + description: |- + Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. + type: string + minLength: 1 + maxLength: 32 + x-field-uid: 1 + BgpSrte.ExplicitNullLabelPolicySubTlv: + description: |- + Configuration for BGP explicit null label policy sub TLV settings. + type: object + properties: + explicit_null_label_policy: + description: "The value of the explicit null label policy " + type: string + default: do_not_push_enlp + x-field-uid: 1 + x-enum: + reserved_enlp: + x-field-uid: 1 + push_ipv4_enlp: + x-field-uid: 2 + push_ipv6_enlp: + x-field-uid: 3 + push_ipv4_ipv6_enlp: + x-field-uid: 4 + do_not_push_enlp: + x-field-uid: 5 + enum: + - reserved_enlp + - push_ipv4_enlp + - push_ipv6_enlp + - push_ipv4_ipv6_enlp + - do_not_push_enlp + BgpSrte.SegmentList: + x-status: under-review + description: |- + Status: under-review + Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. + type: object + properties: + weight: + description: |- + The Weight associated with a given path and the sub-TLV is optional. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 0 + x-field-uid: 1 + segments: + type: array + items: + $ref: '#/components/schemas/BgpSrte.Segment' + x-field-uid: 2 + name: + x-field-uid: 3 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + active: + x-field-uid: 4 + description: |- + If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. + type: boolean + default: true + required: + - name + BgpSrte.Segment: + x-status: under-review + description: |- + Status: under-review + A Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. + type: object + required: + - segment_type + - name + properties: + segment_type: + description: |- + Specify one of the segment type. + https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13 + Type A: SID only, in the form of MPLS Label. + Type B: SID only, in the form of IPv6 Address. + Type C: IPv4 Node Address with optional SID. + Type D: IPv6 Node Address with optional SID for SR MPLS. + Type E: IPv4 Address and index with optional SID. + Type F: IPv4 Local and Remote addresses with optional SID. + Type G: IPv6 Address and index for local and remote pair with optional + SID for SR MPLS. + Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. + Type I: IPv6 Node Address with optional SID for SRv6. + Type J: IPv6 Address and index for local and remote pair with optional + SID for SRv6. + Type K: IPv6 Local and Remote addresses for SRv6. + type: string + x-field-uid: 1 + x-enum: + type_a: + x-field-uid: 1 + type_b: + x-field-uid: 2 + type_c: + x-field-uid: 3 + type_d: + x-field-uid: 4 + type_e: + x-field-uid: 5 + type_f: + x-field-uid: 6 + type_g: + x-field-uid: 7 + type_h: + x-field-uid: 8 + type_i: + x-field-uid: 9 + type_j: + x-field-uid: 10 + type_k: + x-field-uid: 11 + enum: + - type_a + - type_b + - type_c + - type_d + - type_e + - type_f + - type_g + - type_h + - type_i + - type_j + - type_k + type_a: + $ref: '#/components/schemas/BgpSrte.SegmentATypeSubTlv' + x-field-uid: 2 + type_b: + $ref: '#/components/schemas/BgpSrte.SegmentBTypeSubTlv' + x-field-uid: 3 + type_c: + $ref: '#/components/schemas/BgpSrte.SegmentCTypeSubTlv' + x-field-uid: 4 + type_d: + $ref: '#/components/schemas/BgpSrte.SegmentDTypeSubTlv' + x-field-uid: 5 + type_e: + $ref: '#/components/schemas/BgpSrte.SegmentETypeSubTlv' + x-field-uid: 6 + type_f: + $ref: '#/components/schemas/BgpSrte.SegmentFTypeSubTlv' + x-field-uid: 7 + type_g: + $ref: '#/components/schemas/BgpSrte.SegmentGTypeSubTlv' + x-field-uid: 8 + type_h: + $ref: '#/components/schemas/BgpSrte.SegmentHTypeSubTlv' + x-field-uid: 9 + type_i: + $ref: '#/components/schemas/BgpSrte.SegmentITypeSubTlv' + x-field-uid: 10 + type_j: + $ref: '#/components/schemas/BgpSrte.SegmentJTypeSubTlv' + x-field-uid: 11 + type_k: + $ref: '#/components/schemas/BgpSrte.SegmentKTypeSubTlv' + x-field-uid: 12 + name: + x-field-uid: 13 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + active: + x-field-uid: 14 + description: |- + If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. + type: boolean + default: true + BgpSrte.SrMplsSid: + description: |- + Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + type: object + properties: + label: + description: |- + Label value in [0, 2^20 -1]. + type: integer + minimum: 0 + maximum: 1048575 + x-field-uid: 1 + tc: + description: |- + Traffic class in bits. + type: integer + minimum: 0 + maximum: 7 + x-field-uid: 2 + s_bit: + description: |- + Bottom-of-Stack bit. + type: boolean + x-field-uid: 3 + ttl: + description: "Time To Live. " + type: integer + minimum: 0 + maximum: 255 + x-field-uid: 4 + BgpSrte.SRv6SIDEndpointBehaviorAndStructure: + description: |- + Configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + type: object + properties: + lb_length: + description: |- + SRv6 SID Locator Block length in bits. + type: integer + minimum: 0 + maximum: 128 + default: 0 + x-field-uid: 1 + ln_length: + description: |- + SRv6 SID Locator Node length in bits. + type: integer + minimum: 0 + maximum: 128 + default: 0 + x-field-uid: 2 + func_length: + description: |- + SRv6 SID Function length in bits. + type: integer + minimum: 0 + maximum: 128 + default: 0 + x-field-uid: 3 + arg_length: + description: |- + SRv6 SID Arguments length in bits. + type: integer + minimum: 0 + maximum: 128 + default: 0 + x-field-uid: 4 + BgpSrte.SegmentATypeSubTlv: + description: |- + Type A: SID only, in the form of MPLS Label. + type: object + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + label: + x-field-uid: 2 + description: |- + Label value in [0, 2^20 -1]. + type: integer + minimum: 0 + maximum: 1048575 + tc: + x-field-uid: 3 + description: |- + Traffic class in bits. + type: integer + minimum: 0 + maximum: 7 + s_bit: + x-field-uid: 4 + description: |- + Bottom-of-Stack bit. + type: boolean + ttl: + x-field-uid: 5 + description: "Time To Live. " + type: integer + minimum: 0 + maximum: 255 + BgpSrte.SegmentBTypeSubTlv: + description: |- + Type B: SID only, in the form of IPv6 address. + type: object + required: + - srv6_sid + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + srv6_sid: + description: |- + SRv6 SID. + type: string + format: ipv6 + x-field-uid: 2 + srv6_sid_endpoint_behavior: + description: |- + Optional SRv6 Endpoint Behavior and SID Structure. + $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' + x-field-uid: 3 + BgpSrte.SegmentCTypeSubTlv: + x-status: under-review + description: |- + Status: under-review + Type C: IPv4 Node Address with optional SID. + type: object + required: + - ipv4_node_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + sr_algorithm: + description: |- + SR Algorithm identifier when A-Flag in on. + type: integer + minimum: 0 + maximum: 255 + default: 0 + x-field-uid: 2 + ipv4_node_address: + description: |- + IPv4 address representing a node. + type: string + format: ipv4 + x-field-uid: 3 + sr_mpls_sid: + description: |- + Optional SR-MPLS SID. + $ref: '#/components/schemas/BgpSrte.SrMplsSid' + x-field-uid: 4 + BgpSrte.SegmentDTypeSubTlv: + description: |- + Type D: IPv6 Node Address with optional SID for SR MPLS. + type: object + required: + - ipv6_node_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + sr_algorithm: + description: |- + specifying SR Algorithm when when A-Flag as defined in above flags. + type: integer + minimum: 0 + maximum: 255 + default: 0 + x-field-uid: 2 + ipv6_node_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 3 + sr_mpls_sid: + description: |- + Optional SR-MPLS SID. + $ref: '#/components/schemas/BgpSrte.SrMplsSid' + x-field-uid: 4 + BgpSrte.SegmentETypeSubTlv: + description: |- + Type E: IPv4 Address and Local Interface ID with optional SID + type: object + required: + - ipv4_node_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + local_interface_id: + description: |- + Local Interface ID: The Interface Index as defined in [RFC8664]. + type: integer + minimum: 0 + maximum: 2147483647 + default: 0 + x-field-uid: 2 + ipv4_node_address: + description: |- + IPv4 address representing a node. + type: string + format: ipv4 + x-field-uid: 3 + sr_mpls_sid: + description: |- + Optional SR-MPLS SID. + $ref: '#/components/schemas/BgpSrte.SrMplsSid' + x-field-uid: 4 + BgpSrte.SegmentFTypeSubTlv: + description: |- + Type F: IPv4 Local and Remote addresses with optional SID. + type: object + required: + - local_ipv4_address + - remote_ipv4_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + local_ipv4_address: + description: |- + Local IPv4 Address. + type: string + format: ipv4 + x-field-uid: 2 + remote_ipv4_address: + description: |- + Remote IPv4 Address. + type: string + format: ipv4 + x-field-uid: 3 + sr_mpls_sid: + description: |- + Optional SR-MPLS SID. + $ref: '#/components/schemas/BgpSrte.SrMplsSid' + x-field-uid: 4 + BgpSrte.SegmentGTypeSubTlv: + description: |- + Type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. + type: object + required: + - local_ipv6_node_address + - remote_ipv6_node_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + local_interface_id: + description: |- + Local Interface ID: The Interface Index as defined in [RFC8664]. + type: integer + minimum: 0 + maximum: 2147483647 + default: 0 + x-field-uid: 2 + local_ipv6_node_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 3 + remote_interface_id: + description: |- + Local Interface ID: The Interface Index as defined in [RFC8664]. + type: integer + minimum: 0 + maximum: 2147483647 + default: 0 + x-field-uid: 4 + remote_ipv6_node_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 5 + sr_mpls_sid: + description: |- + Optional SR-MPLS SID. + $ref: '#/components/schemas/BgpSrte.SrMplsSid' + x-field-uid: 6 + BgpSrte.SegmentHTypeSubTlv: + description: |- + Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. + type: object + required: + - local_ipv6_address + - remote_ipv6_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + local_ipv6_address: + description: |- + Local IPv6 Address. + type: string + format: ipv6 + x-field-uid: 2 + remote_ipv6_address: + description: |- + Remote IPv6 Address. + type: string + format: ipv6 + x-field-uid: 3 + sr_mpls_sid: + description: |- + Optional SR-MPLS SID. + $ref: '#/components/schemas/BgpSrte.SrMplsSid' + x-field-uid: 4 + BgpSrte.SegmentITypeSubTlv: + description: |- + Type I: IPv6 Node Address with optional SRv6 SID. + type: object + required: + - ipv6_node_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + ipv6_node_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 2 + srv6_sid: + description: |- + Optional SRv6 SID. + type: string + format: ipv6 + x-field-uid: 3 + srv6_sid_endpoint_behavior: + description: |- + Optional SRv6 Endpoint Behavior and SID Structure. + $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' + x-field-uid: 4 + BgpSrte.SegmentJTypeSubTlv: + description: |- + Type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. + type: object + required: + - local_ipv6_node_address + - remote_ipv6_node_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + sr_algorithm: + description: |- + SR Algorithm identifier when A-Flag in on. + type: integer + minimum: 0 + maximum: 255 + default: 0 + x-field-uid: 2 + local_interface_id: + description: |- + Local Interface ID: The Interface Index as defined in [RFC8664]. + type: integer + minimum: 0 + maximum: 2147483647 + default: 0 + x-field-uid: 3 + local_ipv6_node_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 4 + remote_interface_id: + description: |- + Local Interface ID: The Interface Index as defined in [RFC8664]. + type: integer + minimum: 0 + maximum: 2147483647 + default: 0 + x-field-uid: 5 + remote_ipv6_node_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 6 + srv6_sid: + description: |- + Optional SRv6 SID. + type: string + format: ipv6 + x-field-uid: 7 + srv6_sid_endpoint_behavior: + description: |- + Optional SRv6 Endpoint Behavior and SID Structure. + $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' + x-field-uid: 8 + BgpSrte.SegmentKTypeSubTlv: + description: |- + Type K: IPv6 Local and Remote addresses for SRv6 with optional SID. + type: object + required: + - local_ipv6_address + - remote_ipv6_address + properties: + flags: + description: |- + One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + type: string + format: hex + x-field-uid: 1 + sr_algorithm: + description: |- + SR Algorithm identifier when A-Flag in on. + type: integer + minimum: 0 + maximum: 255 + default: 0 + x-field-uid: 2 + local_ipv6_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 3 + remote_ipv6_address: + description: |- + IPv6 address representing a node. + type: string + format: ipv6 + x-field-uid: 4 + srv6_sid: + description: |- + Optional SRv6 SID. + type: string + format: ipv6 + x-field-uid: 5 + srv6_sid_endpoint_behavior: + description: |- + Optional SRv6 Endpoint Behavior and SID Structure. + $ref: '#/components/schemas/BgpSrte.SRv6SIDEndpointBehaviorAndStructure' + x-field-uid: 6 + BgpSrte.V6Policy: + description: | + Configuration for BGP Segment Routing Traffic Engineering policy. + type: object + required: + - ipv6_endpoint + - name + properties: + distinguisher: + description: |- + Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 1 + x-field-uid: 1 + color: + description: "Identifies the policy. It is used to match the color of the\ + \ destination prefixes to steer traffic into the SR Policy. " + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + default: 100 + x-field-uid: 2 + ipv6_endpoint: + description: |- + Specifies a single node or a set of nodes (e.g., an anycast address). It is selected on the basis of the SR Policy type (AFI). + type: string + format: ipv6 + x-field-uid: 3 + next_hop_mode: + description: |- + Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. + type: string + default: local_ip + x-field-uid: 4 + x-enum: + local_ip: + x-field-uid: 1 + manual: + x-field-uid: 2 + enum: + - local_ip + - manual + next_hop_address_type: + description: "Type of next hop IP address to be used when 'next_hop_mode'\ + \ is set to 'manual'. " + type: string + default: ipv6 + x-field-uid: 5 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + enum: + - ipv4 + - ipv6 + next_hop_ipv4_address: + description: |- + The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. + type: string + format: ipv4 + default: 0.0.0.0 + x-field-uid: 6 + next_hop_ipv6_address: + description: "The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type'\ + \ is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. " + type: string + format: ipv6 + default: ::0 + x-field-uid: 7 + advanced: + $ref: '#/components/schemas/Bgp.RouteAdvanced' + x-field-uid: 8 + add_path: + $ref: '#/components/schemas/Bgp.AddPath' + x-field-uid: 9 + as_path: + $ref: '#/components/schemas/Bgp.AsPath' + x-field-uid: 10 + communities: + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + x-field-uid: 11 + extcommunities: + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + x-field-uid: 12 + tunnel_tlvs: + description: |- + List of optional tunnel TLV settings. + type: array + items: + $ref: '#/components/schemas/BgpSrte.V6TunnelTlv' + x-field-uid: 13 + name: + x-field-uid: 14 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + active: + x-field-uid: 15 + description: |- + If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. + type: boolean + default: true + BgpSrte.V6TunnelTlv: + description: |- + Configuration for BGP SRTE Tunnel TLV. + type: object + properties: + remote_endpoint_sub_tlv: + $ref: '#/components/schemas/BgpSrte.RemoteEndpointSubTlv' + x-field-uid: 1 + color_sub_tlv: + $ref: '#/components/schemas/BgpSrte.ColorSubTlv' + x-field-uid: 2 + binding_sub_tlv: + $ref: '#/components/schemas/BgpSrte.BindingSubTlv' + x-field-uid: 3 + preference_sub_tlv: + $ref: '#/components/schemas/BgpSrte.PreferenceSubTlv' + x-field-uid: 4 + policy_priority_sub_tlv: + $ref: '#/components/schemas/BgpSrte.PolicyPrioritySubTlv' + x-field-uid: 5 + policy_name_sub_tlv: + $ref: '#/components/schemas/BgpSrte.PolicyNameSubTlv' + x-field-uid: 6 + explicit_null_label_policy_sub_tlv: + $ref: '#/components/schemas/BgpSrte.ExplicitNullLabelPolicySubTlv' + x-field-uid: 7 + segment_lists: + type: array + items: + $ref: '#/components/schemas/BgpSrte.SegmentList' + x-field-uid: 8 + name: + x-field-uid: 9 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + active: + x-field-uid: 10 + description: |- + If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. + type: boolean + default: true + required: + - name + Bgp.V6Peer: + x-status: under-review + description: |- + Status: under-review + Configuration for BGPv6 peer settings and routes. + type: object + required: + - peer_address + - as_type + - as_number + - name + properties: + peer_address: + description: |- + IPv6 address of the BGP peer for the session + type: string + format: ipv6 + x-field-uid: 1 + segment_routing: + $ref: '#/components/schemas/Bgp.V6SegmentRouting' + x-field-uid: 2 + evpn_ethernet_segments: + description: "This contains the list of Ethernet Virtual Private Network\ + \ (EVPN) Ethernet Segments (ES) Per BGP Peer for IPv6 Address Family Identifier\ + \ (AFI).\n\nEach Ethernet Segment contains a list of EVPN Instances (EVIs)\ + \ . \nEach EVI contains a list of Broadcast Domains. \nEach Broadcast\ + \ Domain contains a list of MAC/IP Ranges. \n\n is responsible for advertising Ethernet Auto-discovery\ + \ Route Per EVI (Type 1).\n\n is responsible for\ + \ advertising Ethernet Auto-discovery Route Per Ethernet Segment (Type\ + \ 1).\n\n is responsible\ + \ for advertising MAC/IP Advertisement Route (Type 2).\n\n is responsible for advertising Inclusive Multicast\ + \ Ethernet Tag Route (Type 3).\n\nEthernet Segment is responsible for\ + \ advertising Ethernet Segment Route (Type 4)." + type: array + items: + $ref: '#/components/schemas/BgpV6.EthernetSegment' + x-field-uid: 3 + as_type: + x-field-uid: 4 + description: |- + The type of BGP autonomous system. External BGP is used for BGP links between two or more autonomous systems (ebgp). Internal BGP is used within a single autonomous system (ibgp). BGP property defaults are aligned with this object defined as an internal BGP peer. If the as_type is specified as 'ebgp' then other properties will need to be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' attribute in 'as_path' field in any Route Range should be changed from default value 'do_not_include_local_as' to any other value. + type: string + x-enum: + ibgp: + x-field-uid: 1 + ebgp: + x-field-uid: 2 + enum: + - ibgp + - ebgp + as_number: + x-field-uid: 5 + description: |- + Autonomous System Number (AS number or ASN) + type: integer + as_number_width: + x-field-uid: 6 + description: |- + The width in bytes of the as_number values. Any as_number values that exceeds the width MUST result in an error. + type: string + default: four + x-enum: + two: + x-field-uid: 1 + four: + x-field-uid: 2 + enum: + - two + - four + advanced: + x-field-uid: 7 + $ref: '#/components/schemas/Bgp.Advanced' + capability: + x-field-uid: 8 + $ref: '#/components/schemas/Bgp.Capability' + learned_information_filter: + x-field-uid: 9 + $ref: '#/components/schemas/Bgp.LearnedInformationFilter' + v4_routes: + x-field-uid: 10 + description: |- + Emulated BGPv4 route ranges. + type: array + items: + $ref: '#/components/schemas/Bgp.V4RouteRange' + v6_routes: + x-field-uid: 11 + description: |- + Emulated BGPv6 route ranges. + type: array + items: + $ref: '#/components/schemas/Bgp.V6RouteRange' + v4_srte_policies: + x-field-uid: 12 + description: |- + Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier (AFI). + type: array + items: + $ref: '#/components/schemas/BgpSrte.V4Policy' + v6_srte_policies: + x-field-uid: 13 + description: |- + Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier (AFI). + type: array + items: + $ref: '#/components/schemas/BgpSrte.V6Policy' + name: + x-field-uid: 14 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Bgp.V6Interface: + description: |- + Configuration for emulated BGPv6 peers and routes on a single IPv6 interface. + type: object + required: + - ipv6_name + properties: + ipv6_name: + description: | + The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers. + + x-constraint: + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Device.Ipv6Loopback/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Device.Ipv6Loopback/properties/name + x-field-uid: 1 + peers: + description: |- + This contains the list of BGPv6 peers configured on this interface. + type: array + items: + $ref: '#/components/schemas/Bgp.V6Peer' + x-field-uid: 2 + Bgp.V6SegmentRouting: + x-status: under-review + description: |- + Status: under-review + Configuration for BGPv6 segment routing settings. + type: object + properties: + ingress_supports_vpn: + description: |- + TBD + type: boolean + default: false + x-field-uid: 1 + reduced_encapsulation: + description: |- + TBD + type: boolean + default: false + x-field-uid: 2 + copy_time_to_live: + description: |- + TBD + type: boolean + default: false + x-field-uid: 3 + time_to_live: + description: |- + TBD + type: integer + default: 0 + x-field-uid: 4 + max_sids_per_srh: + description: |- + TBD + type: integer + default: 0 + x-field-uid: 5 + auto_generate_segment_left_value: + description: |- + TBD + type: boolean + default: false + x-field-uid: 6 + segment_left_value: + description: |- + TBD + type: integer + default: 0 + x-field-uid: 7 + advertise_sr_te_policy: + description: |- + TBD + type: boolean + default: false + x-field-uid: 8 + BgpV6.EthernetSegment: + description: |- + Configuration for BGP Ethernet Segment ranges. Advertises following routes - + + Type 4 - Ethernet Segment Route + type: object + properties: + df_election: + description: |- + Designated Forwarder (DF) election configuration. + $ref: '#/components/schemas/Bgp.EthernetSegment.DfElection' + x-field-uid: 1 + evis: + description: |- + This contains the list of EVIs. + type: array + items: + $ref: '#/components/schemas/BgpV6.EvpnEvis' + x-field-uid: 2 + esi: + x-field-uid: 3 + description: |- + 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . + type: string + format: hex + default: '00000000000000000000' + active_mode: + x-field-uid: 4 + description: |- + Single Active or All Active mode Redundancy mode selection for Multi-home. + type: string + default: all_active + x-enum: + single_active: + x-field-uid: 1 + all_active: + x-field-uid: 2 + enum: + - single_active + - all_active + esi_label: + x-field-uid: 5 + description: "The label value to be advertised as ESI Label in ESI Label\ + \ Extended Community. This is included in Ethernet Auto-discovery per\ + \ ES Routes advertised by a router. " + type: integer + minimum: 0 + maximum: 16777215 + default: 0 + advanced: + x-field-uid: 6 + $ref: '#/components/schemas/Bgp.RouteAdvanced' + communities: + x-field-uid: 7 + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + ext_communities: + x-field-uid: 8 + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + as_path: + x-field-uid: 9 + description: |- + Optional AS PATH settings. + $ref: '#/components/schemas/Bgp.AsPath' + BgpV6.EvpnEvis: + description: "This contains a list of different flavors of EVPN. \nFor example\ + \ EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment.\ + \ \nNeed to instantiate correct type of EVPN instance as per requirement." + type: object + properties: + choice: + type: string + default: evi_vxlan + x-field-uid: 1 + x-enum: + evi_vxlan: + x-field-uid: 1 + enum: + - evi_vxlan + evi_vxlan: + description: "EVPN VXLAN instance to be configured per Ethernet Segment.\ + \ " + $ref: '#/components/schemas/BgpV6.EviVxlan' + x-field-uid: 2 + BgpV6.EviVxlan: + description: |- + Configuration for BGP EVPN EVI. Advertises following routes - + + Type 3 - Inclusive Multicast Ethernet Tag Route + + Type 1 - Ethernet Auto-discovery Route (Per EVI) + + Type 1 - Ethernet Auto-discovery Route (Per ES) + type: object + properties: + broadcast_domains: + description: |- + This contains the list of Broadcast Domains to be configured per EVI. + type: array + items: + $ref: '#/components/schemas/BgpV6.EviVxlan.BroadcastDomain' + x-field-uid: 1 + replication_type: + x-field-uid: 2 + description: |- + This model only supports Ingress Replication + type: string + default: ingress_replication + x-enum: + ingress_replication: + x-field-uid: 1 + enum: + - ingress_replication + pmsi_label: + x-field-uid: 3 + description: |- + Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. + type: integer + minimum: 0 + maximum: 16777215 + default: 16 + ad_label: + x-field-uid: 4 + description: |- + The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per + type: integer + minimum: 0 + maximum: 16777215 + default: 0 + route_distinguisher: + x-field-uid: 5 + description: |- + Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". + $ref: '#/components/schemas/Bgp.RouteDistinguisher' + route_target_export: + x-field-uid: 6 + description: "List of Layer 2 Virtual Network Identifier (L2VNI) export\ + \ targets associated with this EVI. " + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + route_target_import: + x-field-uid: 7 + description: "List of L2VNI import targets associated with this EVI. " + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + l3_route_target_export: + x-field-uid: 8 + description: |- + List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + l3_route_target_import: + x-field-uid: 9 + description: |- + List of L3VNI Import Route Targets. + type: array + items: + $ref: '#/components/schemas/Bgp.RouteTarget' + advanced: + x-field-uid: 10 + $ref: '#/components/schemas/Bgp.RouteAdvanced' + communities: + x-field-uid: 11 + description: |- + Optional community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.Community' + ext_communities: + x-field-uid: 12 + description: |- + Optional Extended Community settings. + type: array + items: + $ref: '#/components/schemas/Bgp.ExtCommunity' + as_path: + x-field-uid: 13 + description: |- + Optional AS PATH settings. + $ref: '#/components/schemas/Bgp.AsPath' + BgpV6.EviVxlan.BroadcastDomain: + description: |- + Configuration for Broadcast Domains per EVI. + type: object + properties: + cmac_ip_range: + description: "This contains the list of Customer MAC/IP Ranges to be configured\ + \ per Broadcast Domain. \n\nAdvertises following route - \nType 2 - MAC/IP\ + \ Advertisement Route." + type: array + items: + $ref: '#/components/schemas/Bgp.CMacIpRange' + x-field-uid: 1 + ethernet_tag_id: + x-field-uid: 2 + description: |- + The Ethernet Tag ID of the Broadcast Domain. + type: integer + minimum: 0 + maximum: 4294967295 + default: 0 + vlan_aware_service: + x-field-uid: 3 + description: |- + VLAN-Aware service to be enabled or disabled. + type: boolean + default: false + Device.Vxlan: + properties: + v4_tunnels: + description: |- + IPv4 VXLAN Tunnels + type: array + items: + $ref: '#/components/schemas/Vxlan.V4Tunnel' + x-field-uid: 1 + v6_tunnels: + description: |- + IPv6 VXLAN Tunnels + type: array + items: + $ref: '#/components/schemas/Vxlan.V6Tunnel' + x-field-uid: 2 + Vxlan.V4Tunnel: + description: |- + Configuration and operational state parameters relating to IPv4 VXLAN tunnel end-point interface. + type: object + required: + - source_interface + - vni + - name + properties: + source_interface: + description: | + Determines the source interface. + + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv4Loopback/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv4Loopback/properties/name + x-field-uid: 1 + destination_ip_mode: + $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode' + x-field-uid: 2 + vni: + x-field-uid: 3 + description: |- + VXLAN Network Identifier (VNI) to distinguish network instances on the wire + type: integer + minimum: 1 + maximum: 16777215 + name: + x-field-uid: 4 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Vxlan.V6Tunnel: + description: |- + Configuration and operational state parameters relating to IPv6 VXLAN tunnel end-point interface. + type: object + required: + - source_interface + - vni + - name + properties: + source_interface: + description: | + Determines the source interface. + + x-constraint: + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Device.Ipv6Loopback/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Device.Ipv6Loopback/properties/name + x-field-uid: 1 + destination_ip_mode: + $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode' + x-field-uid: 2 + vni: + x-field-uid: 3 + description: |- + VXLAN Network Identifier (VNI) to distinguish network instances on the wire + type: integer + minimum: 1 + maximum: 16777215 + name: + x-field-uid: 4 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Vxlan.V4Tunnel.DestinationIPMode: + description: |- + Communication mode between the VTEPs, either unicast or multicast. + type: object + properties: + choice: + description: |- + unicast or multicast + type: string + default: multicast + x-field-uid: 1 + x-enum: + unicast: + x-field-uid: 1 + multicast: + x-field-uid: 2 + enum: + - unicast + - multicast + unicast: + $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode.Unicast' + x-field-uid: 2 + multicast: + $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode.Multicast' + x-field-uid: 3 + Vxlan.V6Tunnel.DestinationIPMode: + description: |- + Communication mode between the VTEPs, either unicast or multicast. + type: object + properties: + choice: + description: |- + unicast or multicast + type: string + default: multicast + x-field-uid: 1 + x-enum: + unicast: + x-field-uid: 1 + multicast: + x-field-uid: 2 + enum: + - unicast + - multicast + unicast: + $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode.Unicast' + x-field-uid: 2 + multicast: + $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode.Multicast' + x-field-uid: 3 + Vxlan.V4Tunnel.DestinationIPMode.Unicast: + properties: + vteps: + description: |- + List of VTEPs for member VNI(VXLAN Network Identifier) + type: array + items: + $ref: '#/components/schemas/Vxlan.V4Tunnel.DestinationIPMode.Unicast.Vtep' + x-field-uid: 1 + Vxlan.V6Tunnel.DestinationIPMode.Unicast: + properties: + vteps: + description: |- + List of VTEPs for member VNI(VXLAN Network Identifier) + type: array + items: + $ref: '#/components/schemas/Vxlan.V6Tunnel.DestinationIPMode.Unicast.Vtep' + x-field-uid: 1 + Vxlan.Tunnel.DestinationIPMode.Unicast.ArpSuppressionCache: + description: |- + Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. + type: object + properties: + remote_vm_mac: + description: |- + Remote VM MAC address bound to Remote VM IPv4 address + type: string + format: mac + x-field-uid: 1 + remote_vm_ipv4: + description: |- + Remote VM IPv4 address + type: string + format: ipv4 + x-field-uid: 2 + Vxlan.V4Tunnel.DestinationIPMode.Unicast.Vtep: + description: |- + VTEP (VXLAN Tunnel End Point (VTEP)) parameters + type: object + properties: + remote_vtep_address: + description: |- + Remote VXLAN Tunnel End Point address + type: string + format: ipv4 + x-field-uid: 1 + arp_suppression_cache: + x-field-uid: 2 + description: |- + Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. + type: array + items: + $ref: '#/components/schemas/Vxlan.Tunnel.DestinationIPMode.Unicast.ArpSuppressionCache' + Vxlan.V6Tunnel.DestinationIPMode.Unicast.Vtep: + description: |- + VTEP (VXLAN Tunnel End Point (VTEP)) parameters + type: object + properties: + remote_vtep_address: + description: |- + Remote VXLAN Tunnel End Point address + type: string + format: ipv6 + x-field-uid: 1 + arp_suppression_cache: + x-field-uid: 2 + description: |- + Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. + type: array + items: + $ref: '#/components/schemas/Vxlan.Tunnel.DestinationIPMode.Unicast.ArpSuppressionCache' + Vxlan.V4Tunnel.DestinationIPMode.Multicast: + description: |- + Multicast Group address for member VNI(VXLAN Network Identifier) + type: object + properties: + address: + description: |- + IPv4 Multicast address + type: string + format: ipv4 + x-field-uid: 1 + Vxlan.V6Tunnel.DestinationIPMode.Multicast: + description: |- + Multicast Group address for member VNI(VXLAN Network Identifier) + type: object + properties: + address: + description: |- + IPv6 Multicast address + type: string + format: ipv6 + x-field-uid: 1 + Device.Tcp: + description: |- + TCP configs. + type: object + required: + - ip_interface_name + properties: + ip_interface_name: + description: | + IPv4/v6 interface name + + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + x-field-uid: 1 + keep_alive_time: + description: |- + The TCP keep alive timer + type: integer + default: 7200 + x-field-uid: 2 + receive_buffer_size: + description: |- + The TCP receive buffer size + type: integer + default: 4096 + x-field-uid: 3 + transmit_buffer_size: + description: |- + The TCP transmit buffer size + type: integer + default: 4096 + x-field-uid: 4 + source_port: + description: "TCP source port no " + type: integer + default: 1024 + x-field-uid: 5 + destination_port: + description: "TCP destination port no " + type: integer + default: 1024 + x-field-uid: 6 + name: + x-field-uid: 7 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Device.Http: + description: |- + HTTP configs. + type: object + properties: + tcp_name: + description: | + TCP interface name + + x-constraint: + - /components/schemas/Device.Tcp/properties/name + type: string + x-constraint: + - /components/schemas/Device.Tcp/properties/name + x-field-uid: 1 + enable_ssl: + description: |- + Enable SSL for HTTP + type: boolean + default: false + x-field-uid: 2 + http_version: + description: |- + HTTP Version + type: integer + default: 1 + x-field-uid: 3 + enable_cookie_support: + description: |- + Enable cookie support for HTTP + type: boolean + default: false + x-field-uid: 4 + max_sessions: + description: |- + Max HTTP sessions + type: integer + default: 1 + x-field-uid: 5 + max_streams: + description: |- + Max HTTP streams + type: integer + default: 1 + x-field-uid: 6 + command_timeout: + description: |- + Command timeout timer in seconds + type: integer + default: 600 + x-field-uid: 7 + url_stats_count: + description: "URL stats count " + type: integer + default: 10 + x-field-uid: 8 + enable_per_conn_cookie_support: + description: |- + Enable cookie support for per connection + type: boolean + default: false + x-field-uid: 9 + method: + $ref: '#/components/schemas/Http.Method' + x-field-uid: 10 + name: + x-field-uid: 11 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Http.Method: + type: object + properties: + choice: + type: string + default: get + x-field-uid: 1 + x-enum: + get: + x-field-uid: 1 + post: + x-field-uid: 2 + enum: + - get + - post + get: + x-field-uid: 2 + $ref: '#/components/schemas/Method.Get' + post: + x-field-uid: 3 + $ref: '#/components/schemas/Method.Post' + Method.Get: + description: |- + A GET operation of HTTP + type: object + required: + - destination + - page + properties: + destination: + description: |- + Server name/IP address + type: string + x-field-uid: 1 + page: + description: |- + The page name to perform get opertaion. + type: string + x-field-uid: 2 + Method.Post: + description: |- + A POST operation of HTTP + type: object + required: + - destination + - page + properties: + destination: + description: |- + The Server name/IP address + type: string + x-field-uid: 1 + page: + description: |- + The page name to perform post opertaion. + type: string + x-field-uid: 2 + Flow: + description: |- + A high level data plane traffic flow. + type: object + required: + - tx_rx + - name + properties: + tx_rx: + description: |- + The transmit and receive endpoints. + $ref: '#/components/schemas/Flow.TxRx' + x-field-uid: 1 + packet: + description: "The header is a list of traffic protocol headers.\n\nThe order\ + \ of traffic protocol headers assigned to the list is the\norder they\ + \ will appear on the wire.\n\nIn the case of an empty list the keyword/value\ + \ of minItems: 1 \nindicates that an implementation MUST provide at least\ + \ one \nFlow.Header object.\n\nThe default value for the Flow.Header choice\ + \ property is ethernet \nwhich will result in an implementation by default\ + \ providing at least \none ethernet packet header." + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Flow.Header' + x-field-uid: 2 + size: + description: |- + The size of the packets. + $ref: '#/components/schemas/Flow.Size' + x-field-uid: 3 + rate: + description: |- + The transmit rate of the packets. + $ref: '#/components/schemas/Flow.Rate' + x-field-uid: 4 + duration: + description: |- + The transmit duration of the packets. + $ref: '#/components/schemas/Flow.Duration' + x-field-uid: 5 + metrics: + description: "Flow metrics. " + $ref: '#/components/schemas/Flow.Metrics' + x-field-uid: 6 + name: + x-field-uid: 7 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Flow.TxRx: + description: "A container for different types of transmit and receive \nendpoint\ + \ containers." + type: object + properties: + choice: + description: |- + The type of transmit and receive container used by the flow. + type: string + default: port + x-field-uid: 1 + x-enum: + port: + x-field-uid: 1 + device: + x-field-uid: 2 + enum: + - port + - device + port: + $ref: '#/components/schemas/Flow.Port' + x-field-uid: 2 + device: + $ref: '#/components/schemas/Flow.Router' + x-field-uid: 3 + Flow.Port: + description: "A container for a transmit port and 0..n intended receive ports.\n\ + When assigning this container to a flow the flows's \npacket headers will\ + \ not be populated with any address resolution \ninformation such as source\ + \ and/or destination addresses. \nFor example Flow.Ethernet dst mac address\ + \ values will be defaulted to 0. \nFor full control over the Flow.properties.packet\ + \ header contents use this \ncontainer. " + type: object + required: + - tx_name + properties: + tx_name: + description: | + The unique name of a port that is the transmit port. + + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Lag/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Lag/properties/name + x-field-uid: 1 + rx_name: + description: | + The unique name of a port that is the intended receive port. + + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Lag/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Lag/properties/name + x-field-uid: 2 + Flow.Router: + description: |- + A container for declaring a map of 1..n transmit devices to 1..n receive devices. This allows for a single flow to have different tx to rx device flows such as a single one to one map or a many to many map. + type: object + required: + - tx_names + - rx_names + properties: + mode: + description: "Determines the mapping of tx_names to rx_names.\n\nThe mesh\ + \ mode creates traffic between each value in tx_names to\nevery value\ + \ in rx_names except in the case where the individual \ntx_names value\ + \ is equal to rx_names value which will be ignored.\nIdentical values\ + \ in tx_names or rx_names MUST raise an error.\n\nThe one_to_one mode\ + \ creates traffic between each value pair in \nof tx_names and rx_names\ + \ by index.\nThe length of tx_names and rx_name MUST be the same.\nIdentical\ + \ values in tx_names or rx_names MUST raise an error." + type: string + default: mesh + x-field-uid: 1 + x-enum: + mesh: + x-field-uid: 1 + one_to_one: + x-field-uid: 2 + enum: + - mesh + - one_to_one + tx_names: + type: array + items: + description: |- + The unique name of an emulated device that will be transmitting. + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Bgp.CMacIpRange/properties/name + example: + - Eth 1 + - Eth 2 + - Eth 3 + - IPv4 1 + - IPv6 1 + - Bgp V4RouteRange 1 + - Bgp V6RouteRange 1 + x-field-uid: 2 + description: | + TBD + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Bgp.CMacIpRange/properties/name + rx_names: + type: array + items: + description: |- + The unique name of an emulated device that will be receiving. + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Bgp.CMacIpRange/properties/name + example: + - Eth 1 + - Eth 2 + - Eth 3 + - IPv4 1 + - IPv6 1 + - Bgp V4RouteRange 1 + - Bgp V6RouteRange 1 + x-field-uid: 3 + description: | + TBD + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + - /components/schemas/Device.Ipv4/properties/name + - /components/schemas/Device.Ipv6/properties/name + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Bgp.CMacIpRange/properties/name + Flow.Header: + description: |- + Configuration for all traffic packet headers + type: object + properties: + choice: + description: "The available types of flow headers. If one is not provided\ + \ the \ndefault ethernet packet header MUST be provided." + type: string + default: ethernet + x-field-uid: 1 + x-enum: + custom: + x-field-uid: 1 + ethernet: + x-field-uid: 2 + vlan: + x-field-uid: 3 + vxlan: + x-field-uid: 4 + ipv4: + x-field-uid: 5 + ipv6: + x-field-uid: 6 + pfcpause: + x-field-uid: 7 + ethernetpause: + x-field-uid: 8 + tcp: + x-field-uid: 9 + udp: + x-field-uid: 10 + gre: + x-field-uid: 11 + gtpv1: + x-field-uid: 12 + gtpv2: + x-field-uid: 13 + arp: + x-field-uid: 14 + icmp: + x-field-uid: 15 + icmpv6: + x-field-uid: 16 + ppp: + x-field-uid: 17 + igmpv1: + x-field-uid: 18 + mpls: + x-field-uid: 19 + enum: + - custom + - ethernet + - vlan + - vxlan + - ipv4 + - ipv6 + - pfcpause + - ethernetpause + - tcp + - udp + - gre + - gtpv1 + - gtpv2 + - arp + - icmp + - icmpv6 + - ppp + - igmpv1 + - mpls + custom: + $ref: '#/components/schemas/Flow.Custom' + x-field-uid: 2 + ethernet: + $ref: '#/components/schemas/Flow.Ethernet' + x-field-uid: 3 + vlan: + $ref: '#/components/schemas/Flow.Vlan' + x-field-uid: 4 + vxlan: + $ref: '#/components/schemas/Flow.Vxlan' + x-field-uid: 5 + ipv4: + $ref: '#/components/schemas/Flow.Ipv4' + x-field-uid: 6 + ipv6: + $ref: '#/components/schemas/Flow.Ipv6' + x-field-uid: 7 + pfcpause: + $ref: '#/components/schemas/Flow.PfcPause' + x-field-uid: 8 + ethernetpause: + $ref: '#/components/schemas/Flow.EthernetPause' + x-field-uid: 9 + tcp: + $ref: '#/components/schemas/Flow.Tcp' + x-field-uid: 10 + udp: + $ref: '#/components/schemas/Flow.Udp' + x-field-uid: 11 + gre: + $ref: '#/components/schemas/Flow.Gre' + x-field-uid: 12 + gtpv1: + $ref: '#/components/schemas/Flow.Gtpv1' + x-field-uid: 13 + gtpv2: + $ref: '#/components/schemas/Flow.Gtpv2' + x-field-uid: 14 + arp: + $ref: '#/components/schemas/Flow.Arp' + x-field-uid: 15 + icmp: + $ref: '#/components/schemas/Flow.Icmp' + x-field-uid: 16 + icmpv6: + $ref: '#/components/schemas/Flow.Icmpv6' + x-field-uid: 17 + ppp: + $ref: '#/components/schemas/Flow.Ppp' + x-field-uid: 18 + igmpv1: + $ref: '#/components/schemas/Flow.Igmpv1' + x-field-uid: 19 + mpls: + $ref: '#/components/schemas/Flow.Mpls' + x-field-uid: 20 + Flow.Custom: + type: object + description: |- + Custom packet header + required: + - bytes + properties: + bytes: + description: |- + A custom packet header defined as a string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. + type: string + pattern: '^[A-Fa-f0-9: ]+$' + x-field-uid: 1 + Flow.Ethernet: + description: |- + Ethernet packet header + type: object + properties: + dst: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst' + src: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src' + ether_type: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType' + pfc_queue: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue' + Flow.Vlan: + description: |- + VLAN packet header + type: object + properties: + priority: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority' + cfi: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi' + id: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Vlan.Id' + tpid: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid' + Flow.Vxlan: + description: |- + VXLAN packet header + type: object + properties: + flags: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags' + reserved0: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0' + vni: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni' + reserved1: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1' + Flow.Ipv4: + description: |- + IPv4 packet header + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version' + header_length: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength' + priority: + $ref: '#/components/schemas/Flow.Ipv4.Priority' + x-field-uid: 3 + total_length: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength' + identification: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification' + reserved: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved' + dont_fragment: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment' + more_fragments: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments' + fragment_offset: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset' + time_to_live: + x-field-uid: 10 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive' + protocol: + x-field-uid: 11 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol' + header_checksum: + x-field-uid: 12 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderChecksum' + src: + x-field-uid: 13 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src' + dst: + x-field-uid: 14 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst' + Flow.Ipv4.Priority: + description: |- + A container for ipv4 raw, tos, dscp ip priorities. + type: object + properties: + choice: + type: string + default: dscp + x-field-uid: 1 + x-enum: + raw: + x-field-uid: 1 + tos: + x-field-uid: 2 + dscp: + x-field-uid: 3 + enum: + - raw + - tos + - dscp + raw: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw' + tos: + $ref: '#/components/schemas/Flow.Ipv4.Tos' + x-field-uid: 3 + dscp: + $ref: '#/components/schemas/Flow.Ipv4.Dscp' + x-field-uid: 4 + Flow.Ipv4.Dscp: + description: |- + Differentiated services code point (DSCP) packet field. + type: object + properties: + phb: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb' + ecn: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn' + Flow.Ipv4.Tos: + description: |- + Type of service (TOS) packet field. + type: object + properties: + precedence: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence' + delay: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay' + throughput: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput' + reliability: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability' + monetary: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary' + unused: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused' + Flow.Ipv6: + description: |- + IPv6 packet header + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version' + traffic_class: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass' + flow_label: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel' + payload_length: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength' + next_header: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader' + hop_limit: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit' + src: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src' + dst: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst' + Flow.PfcPause: + description: |- + IEEE 802.1Qbb PFC Pause packet header. + type: object + properties: + dst: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst' + src: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src' + ether_type: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType' + control_op_code: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode' + class_enable_vector: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector' + pause_class_0: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0' + pause_class_1: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1' + pause_class_2: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2' + pause_class_3: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3' + pause_class_4: + x-field-uid: 10 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4' + pause_class_5: + x-field-uid: 11 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5' + pause_class_6: + x-field-uid: 12 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6' + pause_class_7: + x-field-uid: 13 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7' + Flow.EthernetPause: + description: |- + IEEE 802.3x global ethernet pause packet header + type: object + properties: + dst: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst' + src: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src' + ether_type: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType' + control_op_code: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode' + time: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time' + Flow.Tcp: + description: |- + TCP packet header + type: object + properties: + src_port: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort' + dst_port: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort' + seq_num: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum' + ack_num: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum' + data_offset: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset' + ecn_ns: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs' + ecn_cwr: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr' + ecn_echo: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho' + ctl_urg: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg' + ctl_ack: + x-field-uid: 10 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck' + ctl_psh: + x-field-uid: 11 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh' + ctl_rst: + x-field-uid: 12 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst' + ctl_syn: + x-field-uid: 13 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn' + ctl_fin: + x-field-uid: 14 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin' + window: + x-field-uid: 15 + $ref: '#/components/schemas/Pattern.Flow.Tcp.Window' + Flow.Udp: + description: |- + UDP packet header + type: object + properties: + src_port: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort' + dst_port: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort' + length: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Udp.Length' + checksum: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Udp.Checksum' + Flow.Gre: + description: |- + Standard GRE packet header (RFC2784) + type: object + properties: + checksum_present: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent' + reserved0: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0' + version: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Gre.Version' + protocol: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol' + checksum: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Gre.Checksum' + reserved1: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1' + Flow.Gtpv1: + description: |- + GTPv1 packet header + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version' + protocol_type: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType' + reserved: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved' + e_flag: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag' + s_flag: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag' + pn_flag: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag' + message_type: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType' + message_length: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength' + teid: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid' + squence_number: + x-field-uid: 10 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber' + n_pdu_number: + x-field-uid: 11 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber' + next_extension_header_type: + x-field-uid: 12 + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType' + extension_headers: + description: |- + A list of optional extension headers. + type: array + items: + $ref: '#/components/schemas/Flow.GtpExtension' + x-field-uid: 13 + Flow.GtpExtension: + type: object + properties: + extension_length: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength' + contents: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents' + next_extension_header: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader' + Flow.Gtpv2: + description: |- + GTPv2 packet header + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version' + piggybacking_flag: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag' + teid_flag: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag' + spare1: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1' + message_type: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType' + message_length: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength' + teid: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid' + sequence_number: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber' + spare2: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2' + Flow.Arp: + description: |- + ARP packet header + type: object + properties: + hardware_type: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType' + protocol_type: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType' + hardware_length: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength' + protocol_length: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength' + operation: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Arp.Operation' + sender_hardware_addr: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr' + sender_protocol_addr: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr' + target_hardware_addr: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr' + target_protocol_addr: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr' + Flow.Icmp: + description: |- + ICMP packet header + type: object + properties: + choice: + type: string + default: echo + x-field-uid: 1 + x-enum: + echo: + x-field-uid: 1 + enum: + - echo + echo: + $ref: '#/components/schemas/Flow.Icmp.Echo' + x-field-uid: 2 + Flow.Icmp.Echo: + description: |- + Packet Header for ICMP echo request + type: object + properties: + type: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type' + code: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code' + checksum: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Checksum' + identifier: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier' + sequence_number: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber' + Flow.Icmpv6: + description: |- + ICMPv6 packet header + type: object + properties: + choice: + type: string + default: echo + x-field-uid: 1 + x-enum: + echo: + x-field-uid: 1 + enum: + - echo + echo: + $ref: '#/components/schemas/Flow.Icmpv6.Echo' + x-field-uid: 2 + Flow.Icmpv6.Echo: + description: |- + Packet Header for ICMPv6 Echo + type: object + properties: + type: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type' + code: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code' + identifier: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier' + sequence_number: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber' + checksum: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Checksum' + Flow.Ppp: + description: |- + PPP packet header + type: object + properties: + address: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Ppp.Address' + control: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Ppp.Control' + protocol_type: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType' + Flow.Igmpv1: + description: |- + IGMPv1 packet header + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version' + type: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type' + unused: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused' + checksum: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Checksum' + group_address: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress' + Flow.Mpls: + description: |- + MPLS packet header; When configuring multiple such headers, the count shall not exceed 20. + type: object + properties: + label: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Mpls.Label' + traffic_class: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass' + bottom_of_stack: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack' + time_to_live: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive' + Flow.Size: + description: |- + The frame size which overrides the total length of the packet + type: object + properties: + choice: + type: string + default: fixed + x-field-uid: 1 + x-enum: + fixed: + x-field-uid: 1 + increment: + x-field-uid: 2 + random: + x-field-uid: 3 + enum: + - fixed + - increment + - random + fixed: + type: integer + default: 64 + x-field-uid: 2 + increment: + $ref: '#/components/schemas/Flow.SizeIncrement' + x-field-uid: 3 + random: + $ref: '#/components/schemas/Flow.SizeRandom' + x-field-uid: 4 + Flow.SizeIncrement: + type: object + description: "Frame size that increments from a starting size to \nan ending\ + \ size incrementing by a step size." + properties: + start: + description: |- + Starting frame size in bytes + type: integer + minimum: 1 + default: 64 + x-field-uid: 1 + end: + description: |- + Ending frame size in bytes + type: integer + minimum: 64 + default: 1518 + x-field-uid: 2 + step: + description: |- + Step frame size in bytes + type: integer + default: 1 + x-field-uid: 3 + Flow.SizeRandom: + type: object + description: |- + Random frame size from a min value to a max value. + properties: + min: + type: integer + default: 64 + x-field-uid: 1 + max: + type: integer + default: 1518 + x-field-uid: 2 + Flow.Rate: + type: object + description: |- + The rate of packet transmission + properties: + choice: + description: |- + The available types of flow rate. + type: string + default: pps + x-field-uid: 1 + x-enum: + pps: + x-field-uid: 1 + bps: + x-field-uid: 2 + kbps: + x-field-uid: 3 + mbps: + x-field-uid: 4 + gbps: + x-field-uid: 5 + percentage: + x-field-uid: 6 + enum: + - pps + - bps + - kbps + - mbps + - gbps + - percentage + pps: + description: |- + Packets per second. + type: integer + format: int64 + minimum: 1 + default: 1000 + x-field-uid: 2 + bps: + description: |- + Bits per second. + type: integer + format: int64 + minimum: 672 + default: 1000000000 + x-field-uid: 3 + kbps: + description: |- + Kilobits per second. + type: integer + format: int64 + minimum: 1 + default: 1000000 + x-field-uid: 4 + mbps: + description: "Megabits per second. " + type: integer + format: int64 + minimum: 1 + default: 1000 + x-field-uid: 5 + gbps: + description: |- + Gigabits per second. + type: integer + format: int32 + minimum: 1 + default: 1 + x-field-uid: 6 + percentage: + description: |- + The percentage of a port location's available bandwidth. + type: number + format: float + minimum: 0 + maximum: 100 + default: 100 + x-field-uid: 7 + Flow.Duration: + description: "A container for different transmit durations. " + type: object + properties: + choice: + description: |- + A choice used to determine the type of duration. + type: string + default: continuous + x-field-uid: 1 + x-enum: + fixed_packets: + x-field-uid: 1 + fixed_seconds: + x-field-uid: 2 + burst: + x-field-uid: 3 + continuous: + x-field-uid: 4 + enum: + - fixed_packets + - fixed_seconds + - burst + - continuous + fixed_packets: + $ref: '#/components/schemas/Flow.FixedPackets' + x-field-uid: 2 + fixed_seconds: + $ref: '#/components/schemas/Flow.FixedSeconds' + x-field-uid: 3 + burst: + $ref: '#/components/schemas/Flow.Burst' + x-field-uid: 4 + continuous: + $ref: '#/components/schemas/Flow.Continuous' + x-field-uid: 5 + Flow.Continuous: + description: "Transmit will be continuous and will not stop automatically. " + type: object + properties: + gap: + description: |- + The minimum gap between packets expressed as bytes. + type: integer + minimum: 0 + default: 12 + x-field-uid: 1 + delay: + $ref: '#/components/schemas/Flow.Delay' + x-field-uid: 2 + Flow.Delay: + description: "The optional container to specify the delay before starting \n\ + transmission of packets." + type: object + properties: + choice: + type: string + default: bytes + x-field-uid: 1 + x-enum: + bytes: + x-field-uid: 1 + nanoseconds: + x-field-uid: 2 + microseconds: + x-field-uid: 3 + enum: + - bytes + - nanoseconds + - microseconds + bytes: + description: |- + The delay before starting transmission of packets. + A value of 0 indicates no delay. + type: number + format: float + minimum: 0 + default: 0 + x-field-uid: 2 + nanoseconds: + description: |- + The delay before starting transmission of packets. + A value of 0 indicates no delay. + type: number + format: float + minimum: 0 + default: 0 + x-field-uid: 3 + microseconds: + description: |- + The delay before starting transmission of packets. + A value of 0 indicates no delay. + type: number + format: float + minimum: 0 + default: 0 + x-field-uid: 4 + Flow.FixedPackets: + description: |- + Transmit a fixed number of packets after which the flow will stop. + type: object + properties: + packets: + description: |- + Stop transmit of the flow after this number of packets. + type: integer + minimum: 1 + default: 1 + x-field-uid: 1 + gap: + description: |- + The minimum gap between packets expressed as bytes. + type: integer + minimum: 0 + default: 12 + x-field-uid: 2 + delay: + $ref: '#/components/schemas/Flow.Delay' + x-field-uid: 3 + Flow.FixedSeconds: + description: |- + Transmit for a fixed number of seconds after which the flow will stop. + type: object + properties: + seconds: + description: |- + Stop transmit of the flow after this number of seconds. + type: number + minimum: 0 + default: 1 + x-field-uid: 1 + gap: + description: |- + The minimum gap between packets expressed as bytes. + type: integer + minimum: 0 + default: 12 + x-field-uid: 2 + delay: + $ref: '#/components/schemas/Flow.Delay' + x-field-uid: 3 + Flow.Burst: + description: "Transmits continuous or fixed burst of packets. \nFor continuous\ + \ burst of packets, it will not automatically stop.\nFor fixed burst of packets,\ + \ it will stop after transmitting fixed number of bursts. " + type: object + properties: + bursts: + description: |- + The number of packet bursts transmitted per flow. + A value of 0 implies continuous burst of packets. + type: integer + minimum: 0 + default: 0 + x-field-uid: 1 + packets: + description: |- + The number of packets transmitted per burst. + type: integer + minimum: 1 + default: 1 + x-field-uid: 2 + gap: + description: |- + The minimum gap between packets expressed as bytes. + type: integer + minimum: 0 + default: 12 + x-field-uid: 3 + inter_burst_gap: + $ref: '#/components/schemas/Flow.Duration.InterBurstGap' + x-field-uid: 4 + Flow.Duration.InterBurstGap: + type: object + description: |- + The optional container for specifying a gap between bursts. + properties: + choice: + description: |- + The type of inter burst gap units. + type: string + default: bytes + x-field-uid: 1 + x-enum: + bytes: + x-field-uid: 1 + nanoseconds: + x-field-uid: 2 + microseconds: + x-field-uid: 3 + enum: + - bytes + - nanoseconds + - microseconds + bytes: + description: |- + The amount of time between bursts expressed in bytes. + A value of 0 indicates no gap between bursts. + type: number + format: double + minimum: 0 + default: 12 + x-field-uid: 2 + nanoseconds: + description: |- + The amount of time between bursts expressed in nanoseconds. + A value of 0 indicates no gap between bursts. + type: number + format: double + minimum: 0 + default: 96 + x-field-uid: 3 + microseconds: + description: |- + The amount of time between bursts expressed in microseconds. + A value of 0 indicates no gap between bursts. + type: number + format: double + minimum: 0 + default: 0.096 + x-field-uid: 4 + Flow.Metrics: + description: |- + The optional container for configuring flow metrics. + type: object + properties: + enable: + description: "Enables flow metrics.\nEnabling this option may affect the\ + \ resultant packet payload due to \nadditional instrumentation data." + type: boolean + default: false + x-field-uid: 1 + loss: + description: |- + Enables additional flow metric loss calculation. + type: boolean + default: false + x-field-uid: 2 + timestamps: + description: |- + Enables additional flow metric first and last timestamps. + type: boolean + default: false + x-field-uid: 3 + latency: + description: |- + Latency metrics. + $ref: '#/components/schemas/Flow.Latency.Metrics' + x-field-uid: 4 + Flow.Latency.Metrics: + description: |- + The optional container for per flow latency metric configuration. + type: object + properties: + enable: + description: "True to enable latency metrics using timestamps.\n\nEnabling\ + \ this option may affect the resultant packet payload due to \nadditional\ + \ instrumentation data." + type: boolean + default: false + x-field-uid: 1 + mode: + description: "Select the type of latency measurement. The different types\ + \ of \nlatency measurements are:\n\n\nstore_forward:\nThe time interval\ + \ starting when the last bit of the frame leaves the\nsending port and\ + \ ending when the first bit of the frame is seen on\nthe receiving port\ + \ (LIFO). This is based on the RFC 1242 standard.\n\n\ncut_through:\n\ + The time interval starting when the first bit of the frame leaves\nthe\ + \ sending port and ending when the first bit of the frame is seen\non\ + \ the receiving port (FIFO). This is based on the RFC 1242 \nstandard." + type: string + default: store_forward + x-field-uid: 2 + x-enum: + store_forward: + x-field-uid: 1 + cut_through: + x-field-uid: 2 + enum: + - store_forward + - cut_through + Event: + description: |- + The optional container for event configuration. + type: object + properties: + enable: + description: "True to enable all events. \nEnabling this option may affect\ + \ the resultant packet payload due to \nadditional instrumentation data." + type: boolean + default: false + x-field-uid: 1 + link: + $ref: '#/components/schemas/Event.Link' + x-field-uid: 2 + rx_rate_threshold: + $ref: '#/components/schemas/Event.RxRateThreshold' + x-field-uid: 3 + route_advertise_withdraw: + $ref: '#/components/schemas/Event.RouteAdvertiseWithdraw' + x-field-uid: 4 + Event.RxRateThreshold: + description: |- + The optional container for rx rate threshold event configuration. + type: object + properties: + enable: + description: "True to enable the rx_rate_threshold event. \nEnabling this\ + \ option may affect the resultant packet payload due to \nadditional instrumentation\ + \ data." + type: boolean + default: false + x-field-uid: 1 + threshold: + description: "True to enable notifications when the rx rate of a flow passes\ + \ above \nor below the threshold value. " + type: number + format: float + maximum: 100 + minimum: 0 + default: 95 + x-field-uid: 2 + Event.Link: + description: |- + The optional container for link up/down event configuration. + type: object + properties: + enable: + description: "True to enable notifications when a link up/down event occurs. " + type: boolean + default: false + x-field-uid: 1 + Event.RouteAdvertiseWithdraw: + description: |- + The optional container for route advertise/withdraw event configuration. + type: object + properties: + enable: + description: "True to enable notifications when a route advertise/withdraw\ + \ \nevent occurs. " + type: boolean + default: false + x-field-uid: 1 + Event.Request: + type: object + properties: + type: + description: "Constrain the events being returned by specifying event types.\n\ + If the list is empty then all event types will be returned. " + type: array + items: + type: string + example: route_withdraw + x-enum: + link_down: + x-field-uid: 1 + link_up: + x-field-uid: 2 + route_withdraw: + x-field-uid: 3 + route_advertise: + x-field-uid: 4 + flow_rx_rate_above_threshold: + x-field-uid: 5 + flow_rx_rate_below_threshold: + x-field-uid: 6 + enum: + - link_down + - link_up + - route_withdraw + - route_advertise + - flow_rx_rate_above_threshold + - flow_rx_rate_below_threshold + x-field-uid: 1 + source: + description: "Constrain the events being returned by specifying event sources.\ + \ \nIf the list is empty then all event sources will be returned. \n\n\ + x-constraint:\n- /components/schemas/Port/properties/name\n- /components/schemas/Bgp.V4RouteRange/name\n\ + - /components/schemas/Bgp.V6RouteRange/name\n" + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Bgp.V4RouteRange/name + - /components/schemas/Bgp.V6RouteRange/name + x-field-uid: 2 + Event.Subscription: + description: "A container that describes what events a system should provide\ + \ and \noptionally where to publish them. " + type: object + properties: + events: + $ref: '#/components/schemas/Event.Request' + x-field-uid: 1 + callbackUrl: + description: |- + Indicates where a client wants to be notified of the events set in + the events property. + If this property is empty or null then no event notifications will + be forwarded. + type: string + format: uri + example: https://127.0.0.1/event/notification + x-field-uid: 2 + Response.Error: + description: |- + A list of errors that may have occurred while executing the request. + type: object + properties: + errors: + description: "A list of any system specific errors that have occurred while\ + \ \nexecuting the request." + type: array + items: + type: string + x-field-uid: 1 + Response.Warning: + description: |- + A list of warnings that have occurred while executing the request. + type: object + properties: + warnings: + description: "A list of any system specific warnings that have occurred\ + \ while \nexecuting the request." + type: array + items: + type: string + x-field-uid: 1 + Link.State: + description: |- + Port link state. + type: object + required: + - state + properties: + port_names: + description: | + The names of port objects to. An empty or null list will control all port objects. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + state: + description: |- + The link state. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + Transmit.State: + description: |- + Flow transmit state. + type: object + required: + - state + properties: + flow_names: + description: | + The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. + If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change. + + x-constraint: + - /components/schemas/Flow/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Flow/properties/name + x-field-uid: 1 + state: + description: |- + The transmit state. + If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). + If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. + If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. + If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared. + type: string + x-field-uid: 2 + x-enum: + start: + x-field-uid: 1 + stop: + x-field-uid: 2 + pause: + x-field-uid: 3 + resume: + x-field-uid: 4 + enum: + - start + - stop + - pause + - resume + Capture.State: + description: |- + Control port capture state + type: object + required: + - state + properties: + port_names: + description: | + The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. + If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + state: + description: |- + The capture state. + type: string + x-field-uid: 2 + x-enum: + start: + x-field-uid: 1 + stop: + x-field-uid: 2 + enum: + - start + - stop + Flows.Update: + description: |- + A container of flows with associated properties to be updated without affecting the flows current transmit state. + type: object + required: + - property_names + - flows + properties: + property_names: + description: |- + Flow properties to be updated without affecting the transmit state. + type: array + items: + type: string + x-enum: + rate: + x-field-uid: 1 + size: + x-field-uid: 2 + enum: + - rate + - size + x-field-uid: 1 + flows: + description: |- + The list of configured flows for which given property will be updated. + type: array + items: + $ref: '#/components/schemas/Flow' + x-field-uid: 2 + Route.State: + description: |- + Sets the device route state + type: object + required: + - state + properties: + names: + description: | + The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected. + + x-constraint: + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Isis.V4RouteRange/properties/name + - /components/schemas/Isis.V6RouteRange/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Isis.V4RouteRange/properties/name + - /components/schemas/Isis.V6RouteRange/properties/name + x-field-uid: 1 + state: + description: |- + Route specific states + type: string + x-field-uid: 2 + x-enum: + withdraw: + x-field-uid: 1 + advertise: + x-field-uid: 2 + enum: + - withdraw + - advertise + Ping.Request: + description: |- + Ping request details + type: object + properties: + endpoints: + description: |- + Array of ping requests + type: array + items: + $ref: '#/components/schemas/Ping' + x-field-uid: 1 + Protocol.State: + description: |- + Sets all configured protocols to `start` or `stop` state. + type: object + required: + - state + properties: + state: + description: |- + Protocol specific states + type: string + x-field-uid: 1 + x-enum: + start: + x-field-uid: 1 + stop: + x-field-uid: 2 + enum: + - start + - stop + Device.State: + description: |- + Sets attributes for the requested state/actions to be performed on device(s) + type: object + properties: + choice: + type: string + x-field-uid: 1 + x-enum: + lacp_member_state: + x-field-uid: 1 + enum: + - lacp_member_state + lacp_member_state: + $ref: '#/components/schemas/LacpMember.State' + x-field-uid: 2 + Ping: + type: object + properties: + choice: + description: |- + IPv4 or IPv6 ping. + type: string + default: ipv4 + x-field-uid: 1 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + enum: + - ipv4 + - ipv6 + ipv4: + $ref: '#/components/schemas/Ping.Ipv4' + x-field-uid: 2 + ipv6: + $ref: '#/components/schemas/Ping.Ipv6' + x-field-uid: 3 + Ping.Ipv4: + type: object + properties: + src_name: + description: | + A base IPv4 interface + + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + x-field-uid: 1 + dst_ip: + description: |- + IPv4 address to ping + type: string + format: ipv4 + x-field-uid: 2 + Ping.Ipv6: + type: object + properties: + src_name: + description: | + A base IPv6 interface + + x-constraint: + - /components/schemas/Device.Ipv6Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv6Base/properties/name + x-field-uid: 1 + dst_ip: + description: |- + IPv6 addresses to ping. + type: string + format: ipv6 + x-field-uid: 2 + Ping.Response: + description: |- + A container for ping responses. + type: object + properties: + responses: + type: array + items: + $ref: '#/components/schemas/Response' + x-field-uid: 1 + Response: + type: object + properties: + src_name: + description: | + The name of the source IPv4 or IPv6 interface from which ping was sent. + + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + x-field-uid: 1 + dst_ip: + description: |- + Destination address. + type: string + x-field-uid: 2 + result: + description: |- + Result of the ping request. + type: string + default: failure + x-field-uid: 3 + x-enum: + success: + x-field-uid: 1 + failure: + x-field-uid: 2 + enum: + - success + - failure + LacpMember.State: + description: |- + Set LACP state for specified LAG Member Port(s). + type: object + required: + - state + properties: + lag_member_port_names: + description: | + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + state: + description: |- + The LACP Member admin state. 'up' will start transmission of LACPDUs on selected member ports. 'down' will send a LACPDU with 'sync' flag unset and then stop transmission of LACPDUs on selected member ports. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + Metrics.Request: + description: |- + Request to traffic generator for metrics of choice + type: object + properties: + choice: + type: string + default: port + x-field-uid: 1 + x-enum: + port: + x-field-uid: 1 + flow: + x-field-uid: 2 + bgpv4: + x-field-uid: 3 + bgpv6: + x-field-uid: 4 + isis: + x-field-uid: 5 + lag: + x-field-uid: 6 + lacp_lag_member: + x-field-uid: 7 + enum: + - port + - flow + - bgpv4 + - bgpv6 + - isis + - lag + - lacp_lag_member + port: + $ref: '#/components/schemas/Port.Metrics.Request' + x-field-uid: 2 + flow: + $ref: '#/components/schemas/Flow.Metrics.Request' + x-field-uid: 3 + bgpv4: + $ref: '#/components/schemas/Bgpv4.Metrics.Request' + x-field-uid: 4 + bgpv6: + $ref: '#/components/schemas/Bgpv6.Metrics.Request' + x-field-uid: 5 + isis: + $ref: '#/components/schemas/Isis.Metrics.Request' + x-field-uid: 6 + lag: + $ref: '#/components/schemas/Lag.Metrics.Request' + x-field-uid: 7 + lacp_lag_member: + $ref: '#/components/schemas/LacpLagMember.Metrics.Request' + x-field-uid: 8 + Metrics.Response: + description: |- + Response containing chosen traffic generator metrics + type: object + properties: + choice: + type: string + default: port_metrics + x-field-uid: 1 + x-enum: + flow_metrics: + x-field-uid: 1 + port_metrics: + x-field-uid: 2 + bgpv4_metrics: + x-field-uid: 3 + bgpv6_metrics: + x-field-uid: 4 + isis_metrics: + x-field-uid: 5 + lag_metrics: + x-field-uid: 6 + lacp_lag_member_metrics: + x-field-uid: 7 + enum: + - flow_metrics + - port_metrics + - bgpv4_metrics + - bgpv6_metrics + - isis_metrics + - lag_metrics + - lacp_lag_member_metrics + port_metrics: + type: array + items: + $ref: '#/components/schemas/Port.Metric' + x-field-uid: 2 + flow_metrics: + type: array + items: + $ref: '#/components/schemas/Flow.Metric' + x-field-uid: 3 + bgpv4_metrics: + type: array + items: + $ref: '#/components/schemas/Bgpv4.Metric' + x-field-uid: 4 + bgpv6_metrics: + type: array + items: + $ref: '#/components/schemas/Bgpv6.Metric' + x-field-uid: 5 + isis_metrics: + type: array + items: + $ref: '#/components/schemas/Isis.Metric' + x-field-uid: 6 + lag_metrics: + type: array + items: + $ref: '#/components/schemas/Lag.Metric' + x-field-uid: 7 + lacp_lag_member_metrics: + type: array + items: + $ref: '#/components/schemas/LacpLagMember.Metric' + x-field-uid: 8 + Port.Metrics.Request: + description: |- + The port result request to the traffic generator + type: object + properties: + port_names: + description: | + The names of objects to return results for. An empty list will return all port row results. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the port cannot be excluded. + type: array + items: + type: string + x-enum: + transmit: + x-field-uid: 1 + location: + x-field-uid: 2 + link: + x-field-uid: 3 + capture: + x-field-uid: 4 + frames_tx: + x-field-uid: 5 + frames_rx: + x-field-uid: 6 + bytes_tx: + x-field-uid: 7 + bytes_rx: + x-field-uid: 8 + frames_tx_rate: + x-field-uid: 9 + frames_rx_rate: + x-field-uid: 10 + bytes_tx_rate: + x-field-uid: 11 + bytes_rx_rate: + x-field-uid: 12 + enum: + - transmit + - location + - link + - capture + - frames_tx + - frames_rx + - bytes_tx + - bytes_rx + - frames_tx_rate + - frames_rx_rate + - bytes_tx_rate + - bytes_rx_rate + x-field-uid: 2 + Port.Metric: + type: object + properties: + name: + description: | + The name of a configured port + + x-constraint: + - /components/schemas/Port/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + location: + description: |- + The state of the connection to the test port location. The format should be the configured port location along with any custom connection state message. + type: string + x-field-uid: 2 + link: + description: |- + The state of the test port link The string can be up, down or a custom error message. + type: string + x-field-uid: 3 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + capture: + description: |- + The state of the test port capture infrastructure. The string can be started, stopped or a custom error message. + type: string + x-field-uid: 4 + x-enum: + started: + x-field-uid: 1 + stopped: + x-field-uid: 2 + enum: + - started + - stopped + frames_tx: + description: |- + The current total number of frames transmitted + type: integer + format: int64 + minimum: 0 + x-field-uid: 5 + frames_rx: + description: |- + The current total number of valid frames received + type: integer + format: int64 + minimum: 0 + x-field-uid: 6 + bytes_tx: + description: |- + The current total number of bytes transmitted + type: integer + format: int64 + minimum: 0 + x-field-uid: 7 + bytes_rx: + description: |- + The current total number of valid bytes received + type: integer + format: int64 + minimum: 0 + x-field-uid: 8 + frames_tx_rate: + description: |- + The current rate of frames transmitted + type: number + x-field-uid: 9 + frames_rx_rate: + description: |- + The current rate of valid frames received + type: number + x-field-uid: 10 + bytes_tx_rate: + description: |- + The current rate of bytes transmitted + type: number + x-field-uid: 11 + bytes_rx_rate: + description: |- + The current rate of bytes received + type: number + x-field-uid: 12 + Flow.Metrics.Request: + description: |- + The container for a flow metric request. + type: object + properties: + flow_names: + description: | + Flow metrics will be retrieved for these flow names. + If no flow names are specified then all flows will be returned. + + x-constraint: + - /components/schemas/Flow/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Flow/properties/name + x-field-uid: 1 + metric_groups: + description: |- + A list of metric groups used to disaggregate flows. A metric group that does not exist for a flow group MUST return an error. + $ref: '#/components/schemas/Flow.MetricGroup.Request' + x-field-uid: 2 + metric_names: + description: |- + The list of metric names that the returned result set will contain. If the list is empty then all metrics will be returned. + type: array + items: + type: string + x-enum: + transmit: + x-field-uid: 1 + frames_tx: + x-field-uid: 2 + frames_rx: + x-field-uid: 3 + bytes_tx: + x-field-uid: 4 + bytes_rx: + x-field-uid: 5 + frames_tx_rate: + x-field-uid: 6 + frames_rx_rate: + x-field-uid: 7 + enum: + - transmit + - frames_tx + - frames_rx + - bytes_tx + - bytes_rx + - frames_tx_rate + - frames_rx_rate + x-field-uid: 3 + Flow.MetricGroup.Request: + type: object + properties: + choice: + description: |- + The type of disaggregation to be applied to the flow metrics. + type: string + default: ingress + x-field-uid: 1 + x-enum: + ingress: + x-field-uid: 1 + egress: + x-field-uid: 2 + enum: + - ingress + - egress + ingress: + description: "Disaggregate the flow metrics by ingress packet header field\ + \ names.\nIf the items is empty then no disaggregation will be done. \n\ + \nx-constraint:\n- /components/schemas/Flow/properties/packet/../metric_group\n" + type: array + default: [] + items: + type: string + x-constraint: + - /components/schemas/Flow/properties/packet/../metric_group + x-field-uid: 2 + egress: + description: "Disaggregate the flow metrics by egress packet header field\ + \ names \nIf the items is empty then no disaggregation will be done. \n\ + \nx-constraint:\n- /components/schemas/Flow/properties/egress/../metric_group\n" + type: array + default: [] + items: + type: string + x-constraint: + - /components/schemas/Flow/properties/egress/../metric_group + x-field-uid: 3 + Flow.Metric: + description: |- + A container for flow metrics. + The container is keyed by the name, port_tx, port_rx and metric_groups + values. + type: object + properties: + name: + description: |- + The name of the flow + type: string + example: Tx -> Rx + x-field-uid: 1 + port_tx: + description: |- + The name of the transmit port + type: string + x-field-uid: 2 + port_rx: + description: |- + The name of the receive port + type: string + x-field-uid: 3 + metric_groups: + description: |- + Flow disaggregation groups. + type: array + items: + $ref: '#/components/schemas/Flow.MetricGroup' + x-field-uid: 4 + transmit: + description: |- + The transmit state of the flow. + type: string + x-field-uid: 5 + x-enum: + started: + x-field-uid: 1 + stopped: + x-field-uid: 2 + paused: + x-field-uid: 3 + enum: + - started + - stopped + - paused + frames_tx: + description: |- + The current total number of frames transmitted + type: integer + format: int64 + minimum: 0 + x-field-uid: 6 + frames_rx: + description: |- + The current total number of valid frames received + type: integer + format: int64 + minimum: 0 + x-field-uid: 7 + bytes_tx: + description: |- + The current total number of bytes transmitted + type: integer + format: int64 + minimum: 0 + x-field-uid: 8 + bytes_rx: + description: |- + The current total number of bytes received + type: integer + format: int64 + minimum: 0 + x-field-uid: 9 + frames_tx_rate: + description: |- + The current rate of frames transmitted + type: number + x-field-uid: 10 + frames_rx_rate: + description: |- + The current rate of valid frames received + type: number + x-field-uid: 11 + loss: + description: |- + The percentage of lost frames + type: number + x-field-uid: 12 + timestamps: + $ref: '#/components/schemas/Metric.Timestamp' + x-field-uid: 13 + latency: + $ref: '#/components/schemas/Metric.Latency' + x-field-uid: 14 + Flow.MetricGroup: + type: object + properties: + name: + description: |- + Name of packet field metric group + type: string + x-field-uid: 1 + value: + description: |- + Value of named packet field metric group + type: string + x-field-uid: 2 + Metric.Timestamp: + description: |- + The container for timestamp metrics. + The container will be empty if the timestamp has not been configured for + the flow. + type: object + properties: + first_timestamp_ns: + description: |- + First timestamp in nanoseconds + type: number + format: double + x-field-uid: 1 + last_timestamp_ns: + description: |- + Last timestamp in nanoseconds + type: number + format: double + x-field-uid: 2 + Metric.Latency: + description: "The container for latency metrics. \nThe min/max/avg values are\ + \ dependent on the type of latency measurement \nmode that is configured.\n\ + The container will be empty if the latency has not been configured for\nthe\ + \ flow." + type: object + properties: + minimum_ns: + description: |- + Minimum latency in nanoseconds + type: number + format: double + x-field-uid: 1 + maximum_ns: + description: |- + Maximum latency in nanoseconds + type: number + format: double + x-field-uid: 2 + average_ns: + description: |- + Average latency in nanoseconds + type: number + format: double + x-field-uid: 3 + Bgpv4.Metrics.Request: + description: |- + The request to retrieve BGPv4 per peer metrics/statistics. + type: object + properties: + peer_names: + description: | + The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers. + + x-constraint: + - /components/schemas/Bgp.V4peer/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Bgp.V4peer/properties/name + x-field-uid: 1 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv4 peer cannot be excluded. + type: array + items: + type: string + x-enum: + session_state: + x-field-uid: 1 + session_flap_count: + x-field-uid: 2 + routes_advertised: + x-field-uid: 3 + routes_received: + x-field-uid: 4 + route_withdraws_sent: + x-field-uid: 5 + route_withdraws_received: + x-field-uid: 6 + updates_sent: + x-field-uid: 7 + updates_received: + x-field-uid: 8 + opens_sent: + x-field-uid: 9 + opens_received: + x-field-uid: 10 + keepalives_sent: + x-field-uid: 11 + keepalives_received: + x-field-uid: 12 + notifications_sent: + x-field-uid: 13 + notifications_received: + x-field-uid: 14 + enum: + - session_state + - session_flap_count + - routes_advertised + - routes_received + - route_withdraws_sent + - route_withdraws_received + - updates_sent + - updates_received + - opens_sent + - opens_received + - keepalives_sent + - keepalives_received + - notifications_sent + - notifications_received + x-field-uid: 2 + Bgpv4.Metric: + description: |- + BGPv4 per peer statistics information. + type: object + properties: + name: + description: |- + The name of a configured BGPv4 peer. + type: string + x-field-uid: 1 + session_state: + description: |- + Session state as up or down. Up refers to an Established state and Down refers to any other state. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + session_flap_count: + description: |- + Number of times the session went from Up to Down state. + type: integer + x-field-uid: 3 + routes_advertised: + description: |- + Number of routes advertised. + type: integer + x-field-uid: 4 + routes_received: + description: |- + Number of routes received. + type: integer + x-field-uid: 5 + route_withdraws_sent: + description: |- + Number of route withdraws sent. + type: integer + x-field-uid: 6 + route_withdraws_received: + description: |- + Number of route withdraws received. + type: integer + x-field-uid: 7 + updates_sent: + description: |- + Number of Update messages sent. + type: integer + x-field-uid: 8 + updates_received: + description: |- + Number of Update messages received. + type: integer + x-field-uid: 9 + opens_sent: + description: |- + Number of Open messages sent. + type: integer + x-field-uid: 10 + opens_received: + description: |- + Number of Open messages received. + type: integer + x-field-uid: 11 + keepalives_sent: + description: |- + Number of Keepalive messages sent. + type: integer + x-field-uid: 12 + keepalives_received: + description: |- + Number of Keepalive messages received. + type: integer + x-field-uid: 13 + notifications_sent: + description: |- + Number of Notification messages sent. + type: integer + x-field-uid: 14 + notifications_received: + description: |- + Number of Notification messages received. + type: integer + x-field-uid: 15 + Bgpv6.Metrics.Request: + description: |- + The request to retrieve BGPv6 per peer metrics/statistics. + type: object + properties: + peer_names: + description: | + The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers. + + x-constraint: + - /components/schemas/Bgp.V6peer/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Bgp.V6peer/properties/name + x-field-uid: 1 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv6 peer cannot be excluded. + type: array + items: + type: string + x-enum: + session_state: + x-field-uid: 1 + session_flap_count: + x-field-uid: 2 + routes_advertised: + x-field-uid: 3 + routes_received: + x-field-uid: 4 + route_withdraws_sent: + x-field-uid: 5 + route_withdraws_received: + x-field-uid: 6 + updates_sent: + x-field-uid: 7 + updates_received: + x-field-uid: 8 + opens_sent: + x-field-uid: 9 + opens_received: + x-field-uid: 10 + keepalives_sent: + x-field-uid: 11 + keepalives_received: + x-field-uid: 12 + notifications_sent: + x-field-uid: 13 + notifications_received: + x-field-uid: 14 + enum: + - session_state + - session_flap_count + - routes_advertised + - routes_received + - route_withdraws_sent + - route_withdraws_received + - updates_sent + - updates_received + - opens_sent + - opens_received + - keepalives_sent + - keepalives_received + - notifications_sent + - notifications_received + x-field-uid: 2 + Bgpv6.Metric: + description: |- + BGPv6 per peer statistics information. + type: object + properties: + name: + description: |- + The name of a configured BGPv6 peer. + type: string + x-field-uid: 1 + session_state: + description: |- + Session state as up or down. Up refers to an Established state and Down refers to any other state. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + session_flap_count: + description: |- + Number of times the session went from Up to Down state. + type: integer + x-field-uid: 3 + routes_advertised: + description: |- + Number of routes advertised. + type: integer + x-field-uid: 4 + routes_received: + description: |- + Number of routes received. + type: integer + x-field-uid: 5 + route_withdraws_sent: + description: |- + Number of route withdraws sent. + type: integer + x-field-uid: 6 + route_withdraws_received: + description: |- + Number of route withdraws received. + type: integer + x-field-uid: 7 + updates_sent: + description: |- + Number of Update messages sent. + type: integer + x-field-uid: 8 + updates_received: + description: |- + Number of Update messages received. + type: integer + x-field-uid: 9 + opens_sent: + description: |- + Number of Open messages sent. + type: integer + x-field-uid: 10 + opens_received: + description: |- + Number of Open messages received. + type: integer + x-field-uid: 11 + keepalives_sent: + description: |- + Number of Keepalive messages sent. + type: integer + x-field-uid: 12 + keepalives_received: + description: |- + Number of Keepalive messages received. + type: integer + x-field-uid: 13 + notifications_sent: + description: |- + Number of Notification messages sent. + type: integer + x-field-uid: 14 + notifications_received: + description: |- + Number of Notification messages received. + type: integer + x-field-uid: 15 + Isis.Metrics.Request: + description: |- + The request to retrieve ISIS per Router metrics/statistics. + type: object + properties: + router_names: + description: | + The names of ISIS Routers to return results for. An empty list will return results for all ISIS router. + + x-constraint: + - /components/schemas/Device.IsisRouter/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.IsisRouter/properties/name + x-field-uid: 1 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the ISIS Router cannot be excluded. + type: array + items: + type: string + x-enum: + l1_sessions_up: + x-field-uid: 1 + l1_session_flap: + x-field-uid: 2 + l1_database_size: + x-field-uid: 3 + l1_broadcast_hellos_sent: + x-field-uid: 4 + l1_broadcast_hellos_received: + x-field-uid: 5 + l1_point_to_point_hellos_sent: + x-field-uid: 6 + l1_point_to_point_hellos_received: + x-field-uid: 7 + l1_psnp_sent: + x-field-uid: 8 + l1_psnp_received: + x-field-uid: 9 + l1_csnp_sent: + x-field-uid: 10 + l1_csnp_received: + x-field-uid: 11 + l1_lsp_sent: + x-field-uid: 12 + l1_lsp_received: + x-field-uid: 13 + l2_sessions_up: + x-field-uid: 14 + l2_session_flap: + x-field-uid: 15 + l2_database_size: + x-field-uid: 16 + l2_broadcast_hellos_sent: + x-field-uid: 17 + l2_broadcast_hellos_received: + x-field-uid: 18 + l2_point_to_point_hellos_sent: + x-field-uid: 19 + l2_point_to_point_hellos_received: + x-field-uid: 20 + l2_psnp_sent: + x-field-uid: 21 + l2_psnp_received: + x-field-uid: 22 + l2_csnp_sent: + x-field-uid: 23 + l2_csnp_received: + x-field-uid: 24 + l2_lsp_sent: + x-field-uid: 25 + l2_lsp_received: + x-field-uid: 26 + enum: + - l1_sessions_up + - l1_session_flap + - l1_database_size + - l1_broadcast_hellos_sent + - l1_broadcast_hellos_received + - l1_point_to_point_hellos_sent + - l1_point_to_point_hellos_received + - l1_psnp_sent + - l1_psnp_received + - l1_csnp_sent + - l1_csnp_received + - l1_lsp_sent + - l1_lsp_received + - l2_sessions_up + - l2_session_flap + - l2_database_size + - l2_broadcast_hellos_sent + - l2_broadcast_hellos_received + - l2_point_to_point_hellos_sent + - l2_point_to_point_hellos_received + - l2_psnp_sent + - l2_psnp_received + - l2_csnp_sent + - l2_csnp_received + - l2_lsp_sent + - l2_lsp_received + x-field-uid: 2 + Isis.Metric: + description: |- + ISIS per router statistics information. + type: object + properties: + name: + description: |- + The name of a configured ISIS router. + type: string + x-field-uid: 1 + l1_sessions_up: + description: |- + The number of Level 1 (L1) sessions that are fully up. + type: integer + x-field-uid: 2 + l1_session_flap: + description: |- + The number of Level 1 Sessions Flap. + type: integer + x-field-uid: 3 + l1_broadcast_hellos_sent: + description: |- + Number of Level 1 Hello messages sent. + type: integer + x-field-uid: 4 + l1_broadcast_hellos_received: + description: |- + Number of Level 1 Hello messages received. + type: integer + x-field-uid: 5 + l1_point_to_point_hellos_sent: + description: |- + Number of Level 1 Point-to-Point(P2P) Hello messages sent. + type: integer + x-field-uid: 6 + l1_point_to_point_hellos_received: + description: |- + Number of Level 1 Point-to-Point(P2P) Hello messages received. + type: integer + x-field-uid: 7 + l1_database_size: + description: |- + Number of Link State Updates (LSPs) in the Level 1 LSP Databases. + type: integer + x-field-uid: 8 + l1_psnp_sent: + description: |- + Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. + type: integer + x-field-uid: 9 + l1_psnp_received: + description: |- + Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. + type: integer + x-field-uid: 10 + l1_csnp_sent: + description: |- + Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. + type: integer + x-field-uid: 11 + l1_csnp_received: + description: |- + Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. + type: integer + x-field-uid: 12 + l1_lsp_sent: + description: |- + Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. + type: integer + x-field-uid: 13 + l1_lsp_received: + description: |- + Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. + type: integer + x-field-uid: 14 + l2_sessions_up: + description: |- + The number of Level 2 (L2) sessions that are fully up. + type: integer + x-field-uid: 15 + l2_session_flap: + description: |- + The number of Level 2 Sessions Flap. + type: integer + x-field-uid: 16 + l2_broadcast_hellos_sent: + description: |- + Number of Level 2 Hello messages sent. + type: integer + x-field-uid: 17 + l2_broadcast_hellos_received: + description: |- + Number of Level 2 Hello messages received. + type: integer + x-field-uid: 18 + l2_point_to_point_hellos_sent: + description: |- + Number of Level 2 Point-to-Point(P2P) Hello messages sent. + type: integer + x-field-uid: 19 + l2_point_to_point_hellos_received: + description: |- + Number of Level 2 Point-to-Point(P2P) Hello messages received. + type: integer + x-field-uid: 20 + l2_database_size: + description: |- + Number of Link State Updates (LSPs) in the Level 2 LSP Databases. + type: integer + x-field-uid: 21 + l2_psnp_sent: + description: |- + Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. + type: integer + x-field-uid: 22 + l2_psnp_received: + description: |- + Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. + type: integer + x-field-uid: 23 + l2_csnp_sent: + description: |- + Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. + type: integer + x-field-uid: 24 + l2_csnp_received: + description: |- + Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. + type: integer + x-field-uid: 25 + l2_lsp_sent: + description: |- + Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. + type: integer + x-field-uid: 26 + l2_lsp_received: + description: |- + Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. + type: integer + x-field-uid: 27 + Lag.Metrics.Request: + description: |- + The request to retrieve per LAG metrics/statistics. + type: object + properties: + lag_names: + description: | + The names of LAGs to return results for. An empty list will return results for all LAGs. + + x-constraint: + - /components/schemas/Lag/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 1 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the LAG cannot be excluded. + type: array + items: + type: string + x-enum: + oper_states: + x-field-uid: 1 + member_ports_up: + x-field-uid: 2 + frames_tx: + x-field-uid: 3 + frames_rx: + x-field-uid: 4 + bytes_tx: + x-field-uid: 5 + bytes_rx: + x-field-uid: 6 + frames_tx_rate: + x-field-uid: 7 + frames_rx_rate: + x-field-uid: 8 + bytes_tx_rate: + x-field-uid: 9 + bytes_rx_rate: + x-field-uid: 10 + enum: + - oper_states + - member_ports_up + - frames_tx + - frames_rx + - bytes_tx + - bytes_rx + - frames_tx_rate + - frames_rx_rate + - bytes_tx_rate + - bytes_rx_rate + x-field-uid: 2 + Lag.Metric: + type: object + properties: + name: + description: | + The name of a configured LAG + + x-constraint: + - /components/schemas/Lag/properties/name + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 1 + oper_status: + description: |- + The current operational state of the LAG. The state can be up or down. State 'up' indicates member_ports_up >= min_links. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + member_ports_up: + description: |- + The number of LAG member ports up. + type: integer + x-field-uid: 3 + frames_tx: + description: |- + The current total number of frames transmitted. + type: integer + format: int64 + minimum: 0 + x-field-uid: 4 + frames_rx: + description: |- + The current total number of valid frames received. + type: integer + format: int64 + minimum: 0 + x-field-uid: 5 + bytes_tx: + description: |- + The current total number of bytes transmitted. + type: integer + format: int64 + minimum: 0 + x-field-uid: 6 + bytes_rx: + description: |- + The current total number of valid bytes received. + type: integer + format: int64 + minimum: 0 + x-field-uid: 7 + frames_tx_rate: + description: |- + The current rate of frames transmitted. + type: number + x-field-uid: 8 + frames_rx_rate: + description: |- + The current rate of valid frames received. + type: number + x-field-uid: 9 + bytes_tx_rate: + description: |- + The current rate of bytes transmitted. + type: number + x-field-uid: 10 + bytes_rx_rate: + description: |- + The current rate of bytes received. + type: number + x-field-uid: 11 + LacpLagMember.Metrics.Request: + description: |- + The request to retrieve LACP per LAG member metrics/statistics. + type: object + properties: + lag_names: + description: | + The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs. + + x-constraint: + - /components/schemas/Lag/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 1 + lag_member_port_names: + description: | + The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 2 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of LAG and LAG member can not be excluded. + type: array + items: + type: string + x-enum: + lacp_in_pkts: + x-field-uid: 1 + lacp_out_pkts: + x-field-uid: 2 + lacp_rx_errors: + x-field-uid: 3 + activity: + x-field-uid: 4 + timeout: + x-field-uid: 5 + synchronization: + x-field-uid: 6 + aggregatable: + x-field-uid: 7 + collecting: + x-field-uid: 8 + distributing: + x-field-uid: 9 + system_id: + x-field-uid: 10 + oper_key: + x-field-uid: 11 + partner_id: + x-field-uid: 12 + partner_key: + x-field-uid: 13 + port_num: + x-field-uid: 14 + partner_port_num: + x-field-uid: 15 + enum: + - lacp_in_pkts + - lacp_out_pkts + - lacp_rx_errors + - activity + - timeout + - synchronization + - aggregatable + - collecting + - distributing + - system_id + - oper_key + - partner_id + - partner_key + - port_num + - partner_port_num + x-field-uid: 3 + LacpLagMember.Metric: + description: |- + LACP metrics (statistics) per LAG member. + type: object + properties: + lag_name: + description: |- + The name of a LAG (ports group) configured with LACP. + type: string + x-field-uid: 1 + lag_member_port_name: + description: |- + The name of a LAG member (port) configured with LACP. + type: string + x-field-uid: 2 + lacp_in_pkts: + description: |- + Number of LACPDUs received. + type: integer + format: int64 + minimum: 0 + x-field-uid: 3 + lacp_out_pkts: + description: |- + Number of LACPDUs transmitted. + type: integer + format: int64 + minimum: 0 + x-field-uid: 4 + lacp_rx_errors: + description: |- + Number of LACPDUs receive packet errors. + type: integer + format: int64 + minimum: 0 + x-field-uid: 5 + activity: + description: |- + Indicates participant is active or passive. + type: string + x-field-uid: 6 + x-enum: + active: + x-field-uid: 1 + passive: + x-field-uid: 2 + enum: + - active + - passive + timeout: + description: |- + The timeout type (short or long) used by the participant. + type: string + x-field-uid: 7 + x-enum: + short: + x-field-uid: 1 + long: + x-field-uid: 2 + enum: + - short + - long + synchronization: + description: |- + Indicates whether the participant is in-sync or out-of-sync. + type: string + x-field-uid: 8 + x-enum: + in_sync: + x-field-uid: 1 + out_sync: + x-field-uid: 2 + enum: + - in_sync + - out_sync + aggregatable: + description: |- + A true value indicates that the participant will allow the link to be used as part of the aggregate. A false value indicates the link should be used as an individual link. + type: boolean + x-field-uid: 9 + collecting: + description: |- + If true, the participant is collecting incoming frames on the link, otherwise false. + type: boolean + x-field-uid: 10 + distributing: + description: |- + When true, the participant is distributing outgoing frames; when false, distribution is disabled. + type: boolean + x-field-uid: 11 + system_id: + description: |- + MAC address that defines the local system ID for the aggregate interface. + type: string + format: mac + x-field-uid: 12 + oper_key: + description: |- + Current operational value of the key for the aggregate interface. + type: integer + format: int32 + x-field-uid: 13 + partner_id: + description: |- + MAC address representing the protocol partner's interface system ID. + type: string + format: mac + x-field-uid: 14 + partner_key: + description: |- + Operational value of the protocol partner's key. + type: integer + format: int32 + x-field-uid: 15 + port_num: + description: |- + Port number of the local (actor) aggregation member. + type: integer + format: int32 + x-field-uid: 16 + partner_port_num: + description: |- + Port number of the partner (remote) port for this member port. + type: integer + format: int32 + x-field-uid: 17 + States.Request: + description: |- + Request to traffic generator for states of choice + type: object + properties: + choice: + type: string + default: ipv4_neighbors + x-field-uid: 1 + x-enum: + ipv4_neighbors: + x-field-uid: 1 + ipv6_neighbors: + x-field-uid: 2 + bgp_prefixes: + x-field-uid: 3 + isis_lsps: + x-field-uid: 4 + enum: + - ipv4_neighbors + - ipv6_neighbors + - bgp_prefixes + - isis_lsps + ipv4_neighbors: + $ref: '#/components/schemas/Neighborsv4.States.Request' + x-field-uid: 2 + ipv6_neighbors: + $ref: '#/components/schemas/Neighborsv6.States.Request' + x-field-uid: 3 + bgp_prefixes: + $ref: '#/components/schemas/BgpPrefix.State.Request' + x-field-uid: 4 + isis_lsps: + $ref: '#/components/schemas/IsisLsps.State.Request' + x-field-uid: 5 + States.Response: + description: |- + Response containing chosen traffic generator states + type: object + properties: + choice: + type: string + default: ipv4_neighbors + x-field-uid: 1 + x-enum: + ipv4_neighbors: + x-field-uid: 1 + ipv6_neighbors: + x-field-uid: 2 + bgp_prefixes: + x-field-uid: 3 + isis_lsps: + x-field-uid: 4 + enum: + - ipv4_neighbors + - ipv6_neighbors + - bgp_prefixes + - isis_lsps + ipv4_neighbors: + type: array + items: + $ref: '#/components/schemas/Neighborsv4.State' + x-field-uid: 2 + ipv6_neighbors: + type: array + items: + $ref: '#/components/schemas/Neighborsv6.State' + x-field-uid: 3 + bgp_prefixes: + type: array + items: + $ref: '#/components/schemas/BgpPrefixes.State' + x-field-uid: 4 + isis_lsps: + type: array + items: + $ref: '#/components/schemas/IsisLsps.State' + x-field-uid: 5 + Neighborsv4.States.Request: + description: |- + The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). + type: object + properties: + ethernet_names: + description: | + The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces. + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + Neighborsv4.State: + description: |- + IPv4 Neighbor state (ARP cache entry). + type: object + required: + - ethernet_name + - ipv4_address + properties: + ethernet_name: + description: |- + The name of the Ethernet interface associated with the Neighbor state (ARP cache entry). + type: string + x-field-uid: 1 + ipv4_address: + description: |- + The IPv4 address of the neighbor. + type: string + format: ipv4 + x-field-uid: 2 + link_layer_address: + description: |- + The link-layer address (MAC) of the neighbor. + type: string + format: mac + x-field-uid: 3 + Neighborsv6.States.Request: + description: |- + The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). + type: object + properties: + ethernet_names: + description: | + The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces. + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + Neighborsv6.State: + description: |- + IPv6 Neighbor state (NDISC cache entry). + type: object + required: + - ethernet_name + - ipv6_address + properties: + ethernet_name: + description: |- + The name of the Ethernet interface associated with the Neighbor state (NDISC cache entry). + type: string + x-field-uid: 1 + ipv6_address: + description: |- + The IPv6 address of the neighbor. + type: string + format: ipv6 + x-field-uid: 2 + link_layer_address: + description: |- + The link-layer address (MAC) of the neighbor. + type: string + format: mac + x-field-uid: 3 + BgpPrefix.State.Request: + description: |- + The request to retrieve BGP peer prefix information. + type: object + properties: + bgp_peer_names: + description: | + The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers. + + x-constraint: + - /components/schemas/Bgp.v4Peer/properties/name + - /components/schemas/Bgp.v6Peer/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Bgp.v4Peer/properties/name + - /components/schemas/Bgp.v6Peer/properties/name + x-field-uid: 1 + prefix_filters: + description: |- + Specify which prefixes to return. If the list is empty or missing then all prefixes will be returned. + type: array + items: + type: string + x-enum: + ipv4_unicast: + x-field-uid: 1 + ipv6_unicast: + x-field-uid: 2 + enum: + - ipv4_unicast + - ipv6_unicast + x-field-uid: 2 + ipv4_unicast_filters: + description: |- + The IPv4 unicast results can be filtered by specifying additional prefix search criteria. If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will be returned. + type: array + items: + $ref: '#/components/schemas/BgpPrefix.Ipv4Unicast.Filter' + x-field-uid: 3 + ipv6_unicast_filters: + description: |- + The IPv6 unicast results can be filtered by specifying additional prefix search criteria. If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will be returned. + type: array + items: + $ref: '#/components/schemas/BgpPrefix.Ipv6Unicast.Filter' + x-field-uid: 4 + BgpPrefix.Ipv4Unicast.Filter: + type: object + properties: + addresses: + description: |- + The addresses to match. If the addresses property is missing or empty then all addresses will match. + type: array + items: + type: string + format: ipv4 + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The prefix length to match. If the prefix length is missing then all prefix lengths will match. + type: integer + origin: + x-field-uid: 3 + description: |- + The origin to match. If the origin is missing then all origins will match. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + enum: + - igp + - egp + path_id: + x-field-uid: 4 + description: |- + The path id to match. If the path id is missing then all path ids will match. + type: integer + BgpPrefix.Ipv6Unicast.Filter: + type: object + properties: + addresses: + description: |- + The addresses to match. If the addresses property is missing or empty then all addresses will match. + type: array + items: + type: string + format: ipv6 + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The prefix length to match. If the prefix length is missing then all prefix lengths will match. + type: integer + origin: + x-field-uid: 3 + description: |- + The origin to match. If the origin is missing then all origins will match. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + enum: + - igp + - egp + path_id: + x-field-uid: 4 + description: |- + The path id to match. If the path id is missing then all path ids will match. + type: integer + BgpPrefixes.State: + description: |- + BGP peer prefixes. + type: object + properties: + bgp_peer_name: + description: |- + The name of a BGP peer. + type: string + x-field-uid: 1 + ipv4_unicast_prefixes: + type: array + items: + $ref: '#/components/schemas/BgpPrefixIpv4Unicast.State' + x-field-uid: 2 + ipv6_unicast_prefixes: + type: array + items: + $ref: '#/components/schemas/BgpPrefixIpv6Unicast.State' + x-field-uid: 3 + BgpPrefixIpv4Unicast.State: + description: |- + IPv4 unicast prefix. + type: object + properties: + ipv4_address: + description: |- + An IPv4 unicast address + type: string + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The length of the prefix. + type: integer + origin: + x-field-uid: 3 + description: |- + The origin of the prefix. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + enum: + - igp + - egp + path_id: + x-field-uid: 4 + description: |- + The path id. + type: integer + ipv4_next_hop: + x-field-uid: 5 + description: |- + The IPv4 address of the egress interface. + type: string + format: ipv4 + ipv6_next_hop: + x-field-uid: 6 + description: |- + The IPv6 address of the egress interface. + type: string + format: ipv6 + communities: + x-field-uid: 7 + description: |- + Optional community attributes. + type: array + items: + $ref: '#/components/schemas/Result.BgpCommunity' + as_path: + x-field-uid: 8 + $ref: '#/components/schemas/Result.BgpAsPath' + BgpPrefixIpv6Unicast.State: + description: |- + IPv6 unicast prefix. + type: object + properties: + ipv6_address: + description: |- + An IPv6 unicast address + type: string + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The length of the prefix. + type: integer + origin: + x-field-uid: 3 + description: |- + The origin of the prefix. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + enum: + - igp + - egp + path_id: + x-field-uid: 4 + description: |- + The path id. + type: integer + ipv4_next_hop: + x-field-uid: 5 + description: |- + The IPv4 address of the egress interface. + type: string + format: ipv4 + ipv6_next_hop: + x-field-uid: 6 + description: |- + The IPv6 address of the egress interface. + type: string + format: ipv6 + communities: + x-field-uid: 7 + description: |- + Optional community attributes. + type: array + items: + $ref: '#/components/schemas/Result.BgpCommunity' + as_path: + x-field-uid: 8 + $ref: '#/components/schemas/Result.BgpAsPath' + Result.BgpCommunity: + description: |- + BGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. + type: object + properties: + type: + description: |- + The type of community AS number. If community type is manual_as_number then as_number and as_custom will be available. + type: string + x-field-uid: 1 + x-enum: + manual_as_number: + x-field-uid: 1 + no_export: + x-field-uid: 2 + no_advertised: + x-field-uid: 3 + no_export_subconfed: + x-field-uid: 4 + llgr_stale: + x-field-uid: 5 + no_llgr: + x-field-uid: 6 + enum: + - manual_as_number + - no_export + - no_advertised + - no_export_subconfed + - llgr_stale + - no_llgr + as_number: + description: |- + First two octets of 32 bit community AS number. + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 2 + as_custom: + description: "Last two octets of the community value. " + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Result.BgpAsPath: + description: |- + This attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. + type: object + properties: + segments: + description: "AS Path segments present in the received AS Path attribute. " + type: array + items: + $ref: '#/components/schemas/Result.BgpAsPathSegment' + x-field-uid: 1 + Result.BgpAsPathSegment: + description: |- + Configuration for a single BGP AS path segment + type: object + properties: + type: + description: |- + AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. + The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. + type: string + x-field-uid: 1 + x-enum: + as_seq: + x-field-uid: 1 + as_set: + x-field-uid: 2 + as_confed_seq: + x-field-uid: 3 + as_confed_set: + x-field-uid: 4 + enum: + - as_seq + - as_set + - as_confed_seq + - as_confed_set + as_numbers: + description: |- + The AS numbers in this AS path segment. + type: array + items: + type: integer + format: int64 + minimum: 0 + maximum: 4294967295 + x-field-uid: 2 + IsisLsps.State.Request: + description: |- + The request to retrieve ISIS Link State PDU (LSP) information learned by the router. + type: object + properties: + isis_router_names: + description: | + The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers. + + x-constraint: + - /components/schemas/Device.IsisRouter/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.IsisRouter/properties/name + x-field-uid: 1 + IsisLsps.State: + description: |- + The result of ISIS LSP information that are retrieved. + type: object + properties: + isis_router_name: + description: |- + The name of the ISIS Router. + type: string + x-field-uid: 1 + lsps: + description: |- + One or more LSPs that are learned by this ISIS router. + type: array + items: + $ref: '#/components/schemas/IsisLsp.State' + x-field-uid: 2 + IsisLsp.State: + description: |- + ISIS LSP. + type: object + required: + - lsp_id + properties: + lsp_id: + description: |- + LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent Pseudonode ID and LSP number respectively. A pseudonode is a logical representation of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. Then the sequence number is incremented by 1. + type: string + x-field-uid: 1 + pdu_type: + description: |- + Link State PDU type. + type: string + x-field-uid: 2 + x-enum: + level_1: + x-field-uid: 1 + level_2: + x-field-uid: 2 + enum: + - level_1 + - level_2 + remaining_lifetime: + description: |- + Remaining lifetime in seconds before LSP expires. + type: integer + format: int64 + x-field-uid: 3 + sequence_number: + description: |- + Sequence number of the LSP. + type: integer + format: int64 + x-field-uid: 4 + pdu_length: + description: |- + Total length of the LSP. + type: integer + x-field-uid: 5 + flags: + description: |- + LSP Type-Block flags. + $ref: '#/components/schemas/IsisLsp.Flags' + x-field-uid: 6 + is_type: + description: "IS Type - bits 1 and 2 indicate the type of Intermediate System.\n\ + 1 - ( i.e. bit 1 set) Level 1 Intermediate system.\n2 - Unused value.\n\ + 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. " + type: integer + x-field-uid: 7 + tlvs: + description: |- + It refers to Link State PDU State TLVs container. + $ref: '#/components/schemas/IsisLsp.Tlvs' + x-field-uid: 8 + IsisLsp.Tlvs: + description: |- + This contains the list of TLVs present in one LSP. + type: object + properties: + hostname_tlvs: + description: |- + Array of Hostname TLVs ( type 137) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Hostname' + x-field-uid: 1 + is_reachability_tlvs: + description: |- + Array of IS-Reachability TLVs (type 2) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.IsReachabilityTlv' + x-field-uid: 2 + extended_is_reachability_tlvs: + description: |- + Array of Extended IS-Reachability TLVs (type 22) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.ExtendedIsReachabilityTlv' + x-field-uid: 3 + ipv4_internal_reachability_tlvs: + description: |- + Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Ipv4InternalReachabilityTlv' + x-field-uid: 4 + ipv4_external_reachability_tlvs: + description: |- + Array of IPv4 External Reachability TLVs (type 130) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Ipv4ExternalReachabilityTlv' + x-field-uid: 5 + extended_ipv4_reachability_tlvs: + description: |- + Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.ExtendedIpv4ReachabilityTlv' + x-field-uid: 6 + ipv6_reachability_tlvs: + description: |- + Array of IPv6 Reachability TLVs (type 236) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Ipv6ReachabilityTlv' + x-field-uid: 7 + IsisLsp.Hostname: + description: |- + It contains Hostname for the TLV 137. + type: object + properties: + hostname: + description: |- + Hostname for an ISIS router. + type: string + x-field-uid: 1 + IsisLsp.Flags: + description: |- + LSP Type flags. + type: object + properties: + partition_repair: + description: |- + When set, the originator supports partition repair. + type: boolean + x-field-uid: 1 + attached_error: + description: |- + When set, the originator is attached to another area using the referred metric. + type: boolean + x-field-uid: 2 + attached_expense: + description: |- + When set, the originator is attached to another + area using the referred metric. + type: boolean + x-field-uid: 3 + attached_delay: + description: |- + Delay Metric - when set, the originator is attached to another + area using the referred metric. + type: boolean + x-field-uid: 4 + attached_default: + description: |- + Default Metric - when set, the originator is attached to another + area using the referred metric. + type: boolean + x-field-uid: 5 + overload: + description: |- + Overload bit - when set, the originator is overloaded, and must + be avoided in path calculation. + type: boolean + x-field-uid: 6 + IsisLsp.IsReachabilityTlv: + description: |- + This container describes list of ISIS neighbors and attributes in IS-Reachability TLV (type 2). + type: object + properties: + neighbors: + description: |- + This container describes Intermediate System (IS) neighbors. + type: array + items: + $ref: '#/components/schemas/IsisLsp.neighbor' + x-field-uid: 1 + IsisLsp.ExtendedIsReachabilityTlv: + description: |- + This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type 22). + type: object + properties: + neighbors: + description: |- + This container describes IS neighbors. + type: array + items: + $ref: '#/components/schemas/IsisLsp.neighbor' + x-field-uid: 1 + IsisLsp.neighbor: + description: |- + This contains IS neighbors. + type: object + properties: + system_id: + description: |- + The System ID for this emulated ISIS router, e.g. "640100010000". + type: string + format: hex + x-field-uid: 1 + IsisLsp.Ipv4InternalReachabilityTlv: + description: |- + This container defines list of IPv4 internal reachability information in one IPv4 internal reachability TLV. + This is advertised when the origin-type is set 'internal' in route range configurations. + type: object + properties: + prefixes: + description: |- + Describes list of IPv4 prefixes in this TLV. + type: array + items: + $ref: '#/components/schemas/IsisLsp.V4Prefix' + x-field-uid: 1 + IsisLsp.Ipv4ExternalReachabilityTlv: + description: |- + This container defines list of IPv4 external reachability information in one IPv4 external reachability TLV. + This is advertised when the origin-type is set 'external' in route range configurations. + type: object + properties: + prefixes: + description: |- + Describes list of IPv4 prefixes in this TLV.. + type: array + items: + $ref: '#/components/schemas/IsisLsp.V4Prefix' + x-field-uid: 1 + IsisLsp.V4Prefix: + description: |- + This group defines attributes of an IPv4 standard prefix. + type: object + properties: + ipv4_address: + description: |- + An IPv4 unicast prefix reachable via the originator of this LSP. + type: string + x-field-uid: 1 + prefix_length: + description: |- + The length of the IPv4 prefix. + type: integer + x-field-uid: 2 + redistribution_type: + description: "Up (0)-used when a prefix is initially advertised within the\ + \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ + \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ + \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ + \ (L2) down to a lower level (L1). " + type: string + x-field-uid: 3 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + default_metric: + description: |- + ISIS default metric value. + type: integer + x-field-uid: 4 + origin_type: + description: "The origin of the advertised route-internal or external to\ + \ the ISIS area. Options include the following: \n Internal-for intra-area\ + \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ + \ within L1, through Level\n1 LSPs." + type: string + x-field-uid: 5 + x-enum: + internal: + x-field-uid: 1 + external: + x-field-uid: 2 + enum: + - internal + - external + IsisLsp.ExtendedIpv4ReachabilityTlv: + description: |- + This container defines list of IPv4 extended reachability information in one Extended IPv4 External Reachability TLV. + It is advertised when the 'wide metric' is enabled. + type: object + properties: + prefixes: + description: |- + IPv4 prefix contained within extended reachability TLVs. + type: array + items: + $ref: '#/components/schemas/IsisLsp.ExtendedV4Prefix' + x-field-uid: 1 + IsisLsp.ExtendedV4Prefix: + description: |- + This group defines attributes of an IPv4 standard prefix. + type: object + properties: + ipv4_address: + description: |- + An IPv4 unicast prefix reachable via the originator of this LSP. + type: string + format: ipv4 + x-field-uid: 1 + prefix_length: + description: |- + The length of the IPv4 prefix. + type: integer + x-field-uid: 2 + metric: + description: |- + ISIS wide metric. + type: integer + x-field-uid: 3 + redistribution_type: + description: "Up (0)-used when a prefix is initially advertised within the\ + \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ + \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ + \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ + \ (L2) down to a lower level (L1). " + type: string + x-field-uid: 4 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + prefix_attributes: + $ref: '#/components/schemas/IsisLsp.PrefixAttributes' + x-field-uid: 5 + IsisLsp.Ipv6ReachabilityTlv: + description: |- + It defines list of IPv6 extended reachability information in one IPv6 Reachability TLV. + type: object + properties: + prefixes: + description: |- + IPv6 prefix contained within reachability TLVs. + type: array + items: + $ref: '#/components/schemas/IsisLsp.V6Prefix' + x-field-uid: 1 + IsisLsp.V6Prefix: + description: |- + It defines attributes of an IPv6 standard prefix. + type: object + properties: + ipv6_address: + description: |- + An IPv6 unicast prefix reachable via the originator of this LSP. + type: string + format: ipv6 + x-field-uid: 1 + prefix_length: + description: |- + The length of the IPv6 prefix. + type: integer + x-field-uid: 2 + metric: + description: |- + ISIS wide metric. + type: integer + x-field-uid: 3 + redistribution_type: + description: "Up (0)-used when a prefix is initially advertised within the\ + \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ + \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ + \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ + \ (L2) down to a lower level (L1). " + type: string + x-field-uid: 4 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + origin_type: + description: "The origin of the advertised route-internal or external to\ + \ the ISIS area. Options include the following: \n Internal-for intra-area\ + \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ + \ within L1, through Level\n1 LSPs." + type: string + x-field-uid: 5 + x-enum: + internal: + x-field-uid: 1 + external: + x-field-uid: 2 + enum: + - internal + - external + prefix_attributes: + $ref: '#/components/schemas/IsisLsp.PrefixAttributes' + x-field-uid: 6 + IsisLsp.PrefixAttributes: + description: |- + This contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + type: object + properties: + x_flag: + description: |- + External Prefix Flag (Bit 0) + type: boolean + x-field-uid: 1 + r_flag: + description: |- + Re-advertisement Flag (Bit 1) + type: boolean + x-field-uid: 2 + n_flag: + description: |- + Node Flag (Bit 2) + type: boolean + x-field-uid: 3 + Capture.Request: + description: |- + The capture result request to the traffic generator. Stops the port capture on the port_name and returns the capture. + type: object + required: + - port_name + properties: + port_name: + description: | + The name of a port a capture is started on. + + x-constraint: + - /components/schemas/Port/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + Pattern.Flow.Ethernet.Dst.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ethernet.Dst: + description: |- + Destination MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + format: mac + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: string + x-field-uid: 4 + default: 00:00:00:00:00:00 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' + x-field-uid: 7 + Pattern.Flow.Ethernet.Src.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ethernet.Src: + description: |- + Source MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' + x-field-uid: 6 + Pattern.Flow.Ethernet.EtherType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 65535 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + ipv4: 2048 + ipv6: 34525 + arp: 2054 + vlan_802_1_q: 33024 + reserved: 65535 + Pattern.Flow.Ethernet.EtherType: + description: |- + Ethernet type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 65535 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 65535 + minimum: 0 + maximum: 65535 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 65535 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' + x-field-uid: 7 + x-constants: + ipv4: 2048 + ipv6: 34525 + arp: 2054 + vlan_802_1_q: 33024 + reserved: 65535 + Pattern.Flow.Ethernet.PfcQueue.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ethernet.PfcQueue: + description: |- + Priority flow control queue + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' + x-field-uid: 6 + Pattern.Flow.Vlan.Priority.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vlan.Priority: + description: |- + Priority code point + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' + x-field-uid: 6 + Pattern.Flow.Vlan.Cfi.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vlan.Cfi: + description: |- + Canonical format indicator or drop elegible indicator + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' + x-field-uid: 6 + Pattern.Flow.Vlan.Id.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 4095 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 4095 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vlan.Id: + description: |- + Vlan identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 4095 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 4095 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' + x-field-uid: 6 + Pattern.Flow.Vlan.Tpid.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 33024 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + x8100: 33024 + x88A8: 34984 + x9100: 37120 + x9200: 37376 + x9300: 37632 + Pattern.Flow.Vlan.Tpid: + description: |- + Protocol identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 33024 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 33024 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' + x-field-uid: 6 + x-constants: + x8100: 33024 + x88A8: 34984 + x9100: 37120 + x9200: 37376 + x9300: 37632 + Pattern.Flow.Vxlan.Flags.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 8 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vxlan.Flags: + description: |- + Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid vxlan network id (VNI). The other 7 bits (designated "R") are reserved fields and MUST be set to zero on transmission and ignored on receipt. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 8 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 8 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' + x-field-uid: 6 + Pattern.Flow.Vxlan.Reserved0.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 16777215 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 16777215 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vxlan.Reserved0: + description: |- + Reserved field + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 16777215 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 16777215 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' + x-field-uid: 6 + Pattern.Flow.Vxlan.Vni.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 16777215 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 16777215 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vxlan.Vni: + description: |- + VXLAN network id + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 16777215 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 16777215 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 0 + minimum: 0 + maximum: 16777215 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' + x-field-uid: 7 + Pattern.Flow.Vxlan.Reserved1.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Vxlan.Reserved1: + description: |- + Reserved field + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 4 + minimum: 0 + maximum: 15 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Version: + description: |- + Version + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 4 + minimum: 0 + maximum: 15 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 4 + minimum: 0 + maximum: 15 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.HeaderLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 5 + minimum: 0 + maximum: 15 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.HeaderLength: + description: |- + Header length + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 5 + minimum: 0 + maximum: 15 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 5 + minimum: 0 + maximum: 15 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 5 + minimum: 0 + maximum: 15 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' + x-field-uid: 7 + Pattern.Flow.Ipv4.TotalLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 46 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.TotalLength: + description: |- + Total length + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 46 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 46 + minimum: 0 + maximum: 65535 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 46 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' + x-field-uid: 7 + Pattern.Flow.Ipv4.Identification.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Identification: + description: |- + Identification + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.Reserved.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Reserved: + description: |- + Reserved flag. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.DontFragment.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.DontFragment: + description: |- + Dont fragment flag If the dont_fragment flag is set and fragmentation is required to route the packet then the packet is dropped. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.MoreFragments.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.MoreFragments: + description: |- + More fragments flag + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.FragmentOffset.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 31 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 31 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.FragmentOffset: + description: |- + Fragment offset + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 31 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 31 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.TimeToLive.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 64 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.TimeToLive: + description: |- + Time to live + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 64 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 64 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.Protocol.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 61 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Protocol: + description: |- + Protocol, default is 61 any host internal protocol + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 61 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 61 + minimum: 0 + maximum: 255 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 61 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' + x-field-uid: 7 + Pattern.Flow.Ipv4.HeaderChecksum: + description: |- + Header checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Ipv4.Src.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Src: + description: |- + Source address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 0.0.0.0 + format: ipv4 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.Dst.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Dst: + description: |- + Destination address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 0.0.0.0 + format: ipv4 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.Priority.Raw.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Priority.Raw: + description: |- + Raw priority + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv4.Dscp.Phb.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 63 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 63 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + default: 0 + cs1: 8 + cs2: 16 + cs3: 24 + cs4: 32 + cs5: 40 + cs6: 48 + cs7: 56 + af11: 10 + af12: 12 + af13: 14 + af21: 18 + af22: 20 + af23: 22 + af31: 26 + af32: 28 + af33: 30 + af41: 34 + af42: 36 + af43: 38 + ef46: 46 + Pattern.Flow.Ipv4.Dscp.Phb: + description: |- + Per hop behavior + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 63 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 63 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' + x-field-uid: 6 + x-constants: + default: 0 + cs1: 8 + cs2: 16 + cs3: 24 + cs4: 32 + cs5: 40 + cs6: 48 + cs7: 56 + af11: 10 + af12: 12 + af13: 14 + af21: 18 + af22: 20 + af23: 22 + af31: 26 + af32: 28 + af33: 30 + af41: 34 + af42: 36 + af43: 38 + ef46: 46 + Pattern.Flow.Ipv4.Dscp.Ecn.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 3 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 3 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + non_capable: 0 + capable_transport_0: 1 + capable_transport_1: 2 + congestion_encountered: 3 + Pattern.Flow.Ipv4.Dscp.Ecn: + description: |- + Explicit congestion notification + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 3 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 3 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' + x-field-uid: 6 + x-constants: + non_capable: 0 + capable_transport_0: 1 + capable_transport_1: 2 + congestion_encountered: 3 + Pattern.Flow.Ipv4.Tos.Precedence.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + routine: 0 + priority: 1 + immediate: 2 + flash: 3 + flash_override: 4 + critic_ecp: 5 + internetwork_control: 6 + network_control: 7 + Pattern.Flow.Ipv4.Tos.Precedence: + description: |- + Precedence + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' + x-field-uid: 6 + x-constants: + routine: 0 + priority: 1 + immediate: 2 + flash: 3 + flash_override: 4 + critic_ecp: 5 + internetwork_control: 6 + network_control: 7 + Pattern.Flow.Ipv4.Tos.Delay.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Delay: + description: |- + Delay + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' + x-field-uid: 6 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Throughput.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Throughput: + description: |- + Throughput + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' + x-field-uid: 6 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Reliability.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Reliability: + description: |- + Reliability + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' + x-field-uid: 6 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Monetary.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Monetary: + description: |- + Monetary + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' + x-field-uid: 6 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Unused.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Tos.Unused: + description: |- + Unused + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv6.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 6 + minimum: 0 + maximum: 15 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.Version: + description: |- + Version number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 6 + minimum: 0 + maximum: 15 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 6 + minimum: 0 + maximum: 15 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv6.TrafficClass.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.TrafficClass: + description: |- + Traffic class + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv6.FlowLabel.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1048575 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1048575 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.FlowLabel: + description: |- + Flow label + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1048575 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1048575 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv6.PayloadLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.PayloadLength: + description: |- + Payload length + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' + x-field-uid: 7 + Pattern.Flow.Ipv6.NextHeader.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 59 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + hopopt: 0 + icmp: 1 + igmp: 2 + ggp: 3 + ip_in_ip: 4 + st: 5 + tcp: 6 + cpt: 7 + egp: 8 + igp: 9 + no_next_header: 59 + Pattern.Flow.Ipv6.NextHeader: + description: |- + Next header + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 59 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 59 + minimum: 0 + maximum: 255 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 59 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' + x-field-uid: 7 + x-constants: + hopopt: 0 + icmp: 1 + igmp: 2 + ggp: 3 + ip_in_ip: 4 + st: 5 + tcp: 6 + cpt: 7 + egp: 8 + igp: 9 + no_next_header: 59 + Pattern.Flow.Ipv6.HopLimit.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 64 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.HopLimit: + description: |- + Hop limit + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 64 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 64 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv6.Src.Counter: + description: |- + ipv6 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: ::0 + format: ipv6 + step: + type: string + x-field-uid: 2 + default: ::1 + format: ipv6 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.Src: + description: |- + Source address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: ::0 + format: ipv6 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - ::0 + format: ipv6 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' + x-field-uid: 6 + Pattern.Flow.Ipv6.Dst.Counter: + description: |- + ipv6 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: ::0 + format: ipv6 + step: + type: string + x-field-uid: 2 + default: ::1 + format: ipv6 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ipv6.Dst: + description: |- + Destination address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: ::0 + format: ipv6 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - ::0 + format: ipv6 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.Dst.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 01:80:c2:00:00:01 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.Dst: + description: |- + Destination MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 01:80:c2:00:00:01 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 01:80:c2:00:00:01 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.Src.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.Src: + description: |- + Source MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.EtherType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 34824 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + x8808: 34824 + Pattern.Flow.PfcPause.EtherType: + description: |- + Ethernet type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 34824 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 34824 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' + x-field-uid: 6 + x-constants: + x8808: 34824 + Pattern.Flow.PfcPause.ControlOpCode.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 257 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.ControlOpCode: + description: |- + Control operation code + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 257 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 257 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.ClassEnableVector.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.ClassEnableVector: + description: |- + Destination + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass0.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass0: + description: |- + Pause class 0 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass1.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass1: + description: |- + Pause class 1 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass2.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass2: + description: |- + Pause class 2 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass3.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass3: + description: |- + Pause class 3 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass4.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass4: + description: |- + Pause class 4 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass5.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass5: + description: |- + Pause class 5 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass6.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass6: + description: |- + Pause class 6 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' + x-field-uid: 6 + Pattern.Flow.PfcPause.PauseClass7.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.PfcPause.PauseClass7: + description: |- + Pause class 7 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' + x-field-uid: 6 + Pattern.Flow.EthernetPause.Dst.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 01:80:c2:00:00:01 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.EthernetPause.Dst: + description: |- + Destination MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 01:80:c2:00:00:01 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 01:80:c2:00:00:01 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' + x-field-uid: 6 + Pattern.Flow.EthernetPause.Src.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.EthernetPause.Src: + description: |- + Source MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' + x-field-uid: 6 + Pattern.Flow.EthernetPause.EtherType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 34824 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + flow_control: 34824 + Pattern.Flow.EthernetPause.EtherType: + description: |- + Ethernet type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 34824 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 34824 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' + x-field-uid: 6 + x-constants: + flow_control: 34824 + Pattern.Flow.EthernetPause.ControlOpCode.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.EthernetPause.ControlOpCode: + description: |- + Control operation code + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' + x-field-uid: 6 + Pattern.Flow.EthernetPause.Time.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.EthernetPause.Time: + description: |- + Time + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.SrcPort.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.SrcPort: + description: |- + Source port + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.DstPort.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.DstPort: + description: |- + Destination port + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.SeqNum.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 4294967295 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 4294967295 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.SeqNum: + description: |- + Sequence number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 4294967295 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 4294967295 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.AckNum.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 4294967295 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 4294967295 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.AckNum: + description: |- + Acknowledgement number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 4294967295 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 4294967295 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.DataOffset.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 15 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.DataOffset: + description: |- + The number of 32 bit words in the TCP header. This indicates where the data begins. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 15 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 15 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.EcnNs.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.EcnNs: + description: |- + Explicit congestion notification, concealment protection. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.EcnCwr.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.EcnCwr: + description: |- + Explicit congestion notification, congestion window reduced. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.EcnEcho.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.EcnEcho: + description: |- + Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.CtlUrg.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.CtlUrg: + description: |- + A value of 1 indicates that the urgent pointer field is significant. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.CtlAck.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.CtlAck: + description: |- + A value of 1 indicates that the ackknowledgment field is significant. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.CtlPsh.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.CtlPsh: + description: "Asks to push the buffered data to the receiving application. " + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.CtlRst.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.CtlRst: + description: "Reset the connection. " + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.CtlSyn.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.CtlSyn: + description: "Synchronize sequenece numbers. " + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.CtlFin.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.CtlFin: + description: "Last packet from the sender. " + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' + x-field-uid: 6 + Pattern.Flow.Tcp.Window.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Tcp.Window: + description: |- + Tcp connection window. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' + x-field-uid: 6 + Pattern.Flow.Udp.SrcPort.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Udp.SrcPort: + description: |- + Source port + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' + x-field-uid: 6 + Pattern.Flow.Udp.DstPort.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Udp.DstPort: + description: |- + Destination port + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' + x-field-uid: 6 + Pattern.Flow.Udp.Length.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Udp.Length: + description: |- + Length + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' + x-field-uid: 6 + Pattern.Flow.Udp.Checksum: + description: |- + UDP checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Gre.ChecksumPresent.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gre.ChecksumPresent: + description: |- + Checksum present bit + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' + x-field-uid: 6 + Pattern.Flow.Gre.Reserved0.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 4095 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 4095 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gre.Reserved0: + description: |- + Reserved bits + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 4095 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 4095 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' + x-field-uid: 6 + Pattern.Flow.Gre.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gre.Version: + description: |- + GRE version number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' + x-field-uid: 6 + Pattern.Flow.Gre.Protocol.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 2048 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Gre.Protocol: + description: |- + Protocol type of encapsulated payload + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 2048 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 2048 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' + x-field-uid: 6 + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Gre.Checksum: + description: |- + Optional checksum of GRE header and payload. Only present if the checksum_present bit is set. + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Gre.Reserved1.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gre.Reserved1: + description: |- + Optional reserved field. Only present if the checksum_present bit is set. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.Version: + description: |- + GTPv1 version + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.ProtocolType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.ProtocolType: + description: |- + Protocol type, GTP is 1, GTP' is 0 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.Reserved.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.Reserved: + description: |- + Reserved field + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.EFlag.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.EFlag: + description: |- + Extension header field present + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.SFlag.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.SFlag: + description: |- + Sequence number field present + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.PnFlag.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.PnFlag: + description: |- + N-PDU field present + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.MessageType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.MessageType: + description: |- + The type of GTP message Different types of messages are defined in 3GPP TS 29.060 section 7.1 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.MessageLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.MessageLength: + description: |- + The length of the payload (the bytes following the mandatory 8-byte GTP header) in bytes that includes any optional fields + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.Teid.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 4294967295 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 4294967295 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.Teid: + description: |- + Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 4294967295 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 4294967295 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.SquenceNumber.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.SquenceNumber: + description: |- + Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the s_flag bit is on. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.NPduNumber.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.NPduNumber: + description: |- + N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the pn_flag bit is on. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv1.NextExtensionHeaderType: + description: |- + Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the e_flag bit is on. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' + x-field-uid: 6 + Pattern.Flow.GtpExtension.ExtensionLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.GtpExtension.ExtensionLength: + description: |- + This field states the length of this extension header, including the length, the contents, and the next extension header field, in 4-octet units, so the length of the extension must always be a multiple of 4. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' + x-field-uid: 6 + Pattern.Flow.GtpExtension.Contents.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 281474976710655 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 281474976710655 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.GtpExtension.Contents: + description: |- + The extension header contents + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 281474976710655 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 281474976710655 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' + x-field-uid: 6 + Pattern.Flow.GtpExtension.NextExtensionHeader.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.GtpExtension.NextExtensionHeader: + description: |- + It states the type of the next extension, or 0 if no next extension exists. This permits chaining several next extension headers. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 2 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.Version: + description: |- + Version number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 2 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 2 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.PiggybackingFlag.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.PiggybackingFlag: + description: |- + If piggybacking_flag is set to 1 then another GTP-C message with its own header shall be present at the end of the current message + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.TeidFlag.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.TeidFlag: + description: |- + If teid_flag is set to 1 then the TEID field will be present between the message length and the sequence number. All messages except Echo and Echo reply require TEID to be present + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.Spare1.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.Spare1: + description: |- + A 3-bit reserved field (must be 0). + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.MessageType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.MessageType: + description: |- + An 8-bit field that indicates the type of GTP message. Different types of messages are defined in 3GPP TS 29.060 section 7.1 + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.MessageLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.MessageLength: + description: |- + A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.Teid.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 4294967295 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 4294967295 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.Teid: + description: |- + Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different connections in the same GTP tunnel. Is present only if the teid_flag is set. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 4294967295 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 4294967295 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.SequenceNumber.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 16777215 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 16777215 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.SequenceNumber: + description: |- + The sequence number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 16777215 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 16777215 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' + x-field-uid: 6 + Pattern.Flow.Gtpv2.Spare2.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Gtpv2.Spare2: + description: |- + Reserved field + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' + x-field-uid: 6 + Pattern.Flow.Arp.HardwareType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + ethernet: 1 + Pattern.Flow.Arp.HardwareType: + description: |- + Network link protocol type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' + x-field-uid: 6 + x-constants: + ethernet: 1 + Pattern.Flow.Arp.ProtocolType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 2048 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Arp.ProtocolType: + description: |- + The internetwork protocol for which the ARP request is intended + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 2048 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 2048 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' + x-field-uid: 6 + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Arp.HardwareLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 6 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Arp.HardwareLength: + description: |- + Length (in octets) of a hardware address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 6 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 6 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' + x-field-uid: 6 + Pattern.Flow.Arp.ProtocolLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 4 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Arp.ProtocolLength: + description: |- + Length (in octets) of internetwork addresses + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 4 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 4 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' + x-field-uid: 6 + Pattern.Flow.Arp.Operation.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + request: 1 + reply: 2 + Pattern.Flow.Arp.Operation: + description: |- + The operation that the sender is performing + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' + x-field-uid: 6 + x-constants: + request: 1 + reply: 2 + Pattern.Flow.Arp.SenderHardwareAddr.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Arp.SenderHardwareAddr: + description: |- + Media address of the sender + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' + x-field-uid: 6 + Pattern.Flow.Arp.SenderProtocolAddr.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Arp.SenderProtocolAddr: + description: |- + Internetwork address of the sender + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 0.0.0.0 + format: ipv4 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' + x-field-uid: 6 + Pattern.Flow.Arp.TargetHardwareAddr.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Arp.TargetHardwareAddr: + description: |- + Media address of the target + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + format: mac + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' + x-field-uid: 6 + Pattern.Flow.Arp.TargetProtocolAddr.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Arp.TargetProtocolAddr: + description: |- + Internetwork address of the target + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 0.0.0.0 + format: ipv4 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' + x-field-uid: 6 + Pattern.Flow.Icmp.Echo.Type.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 8 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + reply: 0 + request: 8 + Pattern.Flow.Icmp.Echo.Type: + description: |- + The type of ICMP echo packet + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 8 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 8 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' + x-field-uid: 6 + x-constants: + reply: 0 + request: 8 + Pattern.Flow.Icmp.Echo.Code.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmp.Echo.Code: + description: |- + The ICMP subtype. The default code for ICMP echo request and reply is 0. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' + x-field-uid: 6 + Pattern.Flow.Icmp.Echo.Checksum: + description: |- + ICMP checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Icmp.Echo.Identifier.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmp.Echo.Identifier: + description: |- + ICMP identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' + x-field-uid: 6 + Pattern.Flow.Icmp.Echo.SequenceNumber.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmp.Echo.SequenceNumber: + description: |- + ICMP sequence number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' + x-field-uid: 6 + Pattern.Flow.Icmp.Common.Checksum: + description: |- + ICMP checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Icmp.NextFields.Identifier.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmp.NextFields.Identifier: + description: |- + ICMP identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' + x-field-uid: 6 + Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmp.NextFields.SequenceNumber: + description: |- + ICMP sequence number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' + x-field-uid: 6 + Pattern.Flow.Icmpv6.Echo.Type.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 128 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + request: 128 + reply: 129 + Pattern.Flow.Icmpv6.Echo.Type: + description: |- + ICMPv6 echo type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 128 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 128 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' + x-field-uid: 6 + x-constants: + request: 128 + reply: 129 + Pattern.Flow.Icmpv6.Echo.Code.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmpv6.Echo.Code: + description: |- + ICMPv6 echo sub type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' + x-field-uid: 6 + Pattern.Flow.Icmpv6.Echo.Identifier.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmpv6.Echo.Identifier: + description: |- + ICMPv6 echo identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' + x-field-uid: 6 + Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Icmpv6.Echo.SequenceNumber: + description: |- + ICMPv6 echo sequence number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' + x-field-uid: 6 + Pattern.Flow.Icmpv6.Echo.Checksum: + description: |- + ICMPv6 checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Icmpv6.Common.Checksum: + description: |- + ICMPv6 checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Ppp.Address.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 255 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + standard_address: 255 + Pattern.Flow.Ppp.Address: + description: |- + PPP address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 255 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 255 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' + x-field-uid: 6 + x-constants: + standard_address: 255 + Pattern.Flow.Ppp.Control.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 3 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + unnumbered_data: 3 + Pattern.Flow.Ppp.Control: + description: |- + PPP control + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 3 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 3 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' + x-field-uid: 6 + x-constants: + unnumbered_data: 3 + Pattern.Flow.Ppp.ProtocolType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 33 + minimum: 0 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 65535 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Ppp.ProtocolType: + description: |- + PPP protocol type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 33 + minimum: 0 + maximum: 65535 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 33 + minimum: 0 + maximum: 65535 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 33 + minimum: 0 + maximum: 65535 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' + x-field-uid: 7 + Pattern.Flow.Igmpv1.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 15 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Igmpv1.Version: + description: |- + Version number + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 15 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' + x-field-uid: 6 + Pattern.Flow.Igmpv1.Type.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 15 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + count: + type: integer + default: 1 + x-field-uid: 3 + x-constants: + query: 1 + report: 2 + Pattern.Flow.Igmpv1.Type: + description: |- + Type of message + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 15 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 15 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' + x-field-uid: 6 + x-constants: + query: 1 + report: 2 + Pattern.Flow.Igmpv1.Unused.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Igmpv1.Unused: + description: |- + Unused + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' + x-field-uid: 6 + Pattern.Flow.Igmpv1.Checksum: + description: |- + Checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + minimum: 0 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Igmpv1.GroupAddress.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Igmpv1.GroupAddress: + description: |- + Group address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + x-field-uid: 3 + default: + - 0.0.0.0 + format: ipv4 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' + x-field-uid: 6 + Pattern.Flow.Mpls.Label.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 16 + minimum: 0 + maximum: 1048575 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1048575 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Mpls.Label: + description: |- + Label of routers + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 16 + minimum: 0 + maximum: 1048575 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 16 + minimum: 0 + maximum: 1048575 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 16 + minimum: 0 + maximum: 1048575 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' + x-field-uid: 7 + Pattern.Flow.Mpls.TrafficClass.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Mpls.TrafficClass: + description: |- + Traffic class + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 0 + minimum: 0 + maximum: 7 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' + x-field-uid: 6 + Pattern.Flow.Mpls.BottomOfStack.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 1 + minimum: 0 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Mpls.BottomOfStack: + description: |- + Bottom of stack + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 1 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 1 + minimum: 0 + maximum: 1 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 1 + minimum: 0 + maximum: 1 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 5 + increment: + $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' + x-field-uid: 7 + Pattern.Flow.Mpls.TimeToLive.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 64 + minimum: 0 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 255 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Flow.Mpls.TimeToLive: + description: |- + Time to live + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 64 + minimum: 0 + maximum: 255 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 64 + minimum: 0 + maximum: 255 + metric_group: + description: |- + A unique name is used to indicate to the system that the field may extend the metric row key and create an aggregate metric row for every unique value. To have metric group columns appear in the flow metric rows the flow metric request allows for the metric_group value to be specified as part of the request. + type: string + x-field-uid: 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' + x-field-uid: 6 diff --git a/artifacts/otg.proto b/artifacts/otg.proto new file mode 100644 index 00000000..52561fa3 --- /dev/null +++ b/artifacts/otg.proto @@ -0,0 +1,14511 @@ +/* Open Traffic Generator API 0.9.2 + * Open Traffic Generator API defines a model-driven, vendor-neutral and standard + * interface for emulating layer 2-7 network devices and generating test traffic. + * + * Contributions can be made in the following ways: + * - [open an issue](https://github.com/open-traffic-generator/models/issues) in the + * models repository + * - [fork the models repository](https://github.com/open-traffic-generator/models) + * and submit a PR + * License: MIT */ + +syntax = "proto3"; + +package otg; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/empty.proto"; + +// A container for all models that are part of the configuration. +message Config { + + // The ports that will be configured on the traffic generator. + repeated Port ports = 1; + + // The LAGs that will be configured on the traffic generator. + repeated Lag lags = 2; + + // The layer1 settings that will be configured on the traffic generator. + repeated Layer1 layer1 = 3; + + // The capture settings that will be configured on the traffic generator. + repeated Capture captures = 4; + + // The emulated devices that will be configured on the traffic generator. + // Each device contains configurations for network interfaces and + // protocols running on top of those interfaces. + repeated Device devices = 5; + + // The flows that will be configured on the traffic generator. + repeated Flow flows = 6; + + // Description missing in models + optional Event events = 7; + + // Description missing in models + optional ConfigOptions options = 8; +} + +// Global configuration options. +message ConfigOptions { + + // Description missing in models + optional PortOptions port_options = 1; +} + +// An abstract test port. +message Port { + + // The location of a test port. It is the endpoint where packets will emit from. + // Test port locations can be the following: + // - physical appliance with multiple ports + // - physical chassis with multiple cards and ports + // - local interface + // - virtual machine, docker container, kubernetes cluster + // + // The test port location format is implementation specific. Use the /results/capabilities + // API to determine what formats an implementation supports for the location property. + // Get the configured location state by using the /results/port API. + optional string location = 1; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 2; +} + +// Common port options that apply to all configured Port objects. +message PortOptions { + + // Preempt all the test port locations as defined by the Port.Port.properties.location. + // If the test ports defined by their location values are in use and this value is + // true, the test ports will be preempted. + // default = False + optional bool location_preemption = 1; +} + +// The container for LAG (ports group) - aggregation of multiple LAG members (ports) +message Lag { + + // Description missing in models + repeated LagPort ports = 1; + + // Description missing in models + optional LagProtocol protocol = 2; + + // Specifies the mininum number of member interfaces that must be active for the aggregate + // interface to be available + // default = 1 + optional int32 min_links = 3; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 4; +} + +// The container for a port's ethernet interface and LAG protocol settings +message LagPort { + + // The name of a port object that will be part of the LAG. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + // required = true + string port_name = 1; + + // Description missing in models + optional LagPortLacp lacp = 2; + + // Description missing in models + // required = true + DeviceEthernetBase ethernet = 3; +} + +// Description missing in models +message LagProtocol { + + message Choice { + enum Enum { + unspecified = 0; + lacp = 1; + static = 2; + } + } + // The type of controlling protocol for the LAG (ports group). + // default = Choice.Enum.lacp + optional Choice.Enum choice = 1; + + // Description missing in models + optional LagProtocolLacp lacp = 2; + + // Description missing in models + optional LagProtocolStatic static = 3; +} + +// The container for static link aggregation protocol settings. +message LagProtocolStatic { + + // The static lag id + // default = 0 + optional int32 lag_id = 1; +} + +// The container for link aggregation control protocol settings of a LAG (ports group). +message LagProtocolLacp { + + // The actor system id + // default = 00:00:00:00:00:00 + optional string actor_system_id = 1; + + // The actor system priority + // default = 0 + optional int32 actor_system_priority = 2; + + // The actor key + // default = 0 + optional int32 actor_key = 3; +} + +// The container for link aggregation control protocol settings of a LAG member (port). +message LagPortLacp { + + // The actor port number + // default = 0 + optional int32 actor_port_number = 1; + + // The actor port priority + // default = 1 + optional int32 actor_port_priority = 2; + + message ActorActivity { + enum Enum { + unspecified = 0; + passive = 1; + active = 2; + } + } + // Sets the value of LACP actor activity as either passive or active. + // Passive indicates the port's preference for not transmitting LACPDUs unless its + // partner's control is Active. + // Active indicates the port's preference to participate in the protocol regardless + // of the partner's control value. + // default = ActorActivity.Enum.active + optional ActorActivity.Enum actor_activity = 3; + + // This field defines how frequently LACPDUs are sent to the link partner + // default = 0 + optional int32 lacpdu_periodic_time_interval = 4; + + // This timer is used to detect whether received protocol information has expired + // default = 0 + optional int32 lacpdu_timeout = 5; +} + +// Base Ethernet interface. +message DeviceEthernetBase { + + // Media Access Control address. + // required = true + string mac = 1; + + // Maximum Transmission Unit. + // default = 1500 + optional int32 mtu = 2; + + // List of VLANs + repeated DeviceVlan vlans = 3; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 4; +} + +// An Ethernet interface with IPv4 and IPv6 addresses. +message DeviceEthernet { + + // Status: deprecated + // The unique name of a Port or a LAG that will emulate this interface. + // port_name is deprecated and will be removed in future release.port_name and connection + // can't be used together, use either port_name or connection. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Lag/properties/name + // + optional string port_name = 1; + + // Device connection to physical, LAG or another device. + optional EthernetConnection connection = 2; + + // List of IPv4 addresses and their gateways. + repeated DeviceIpv4 ipv4_addresses = 3; + + // List of global IPv6 addresses and their gateways. + // The Link Local IPv6 address will be automatically generated. + repeated DeviceIpv6 ipv6_addresses = 4; + + // Media Access Control address. + // required = true + string mac = 5; + + // Maximum Transmission Unit. + // default = 1500 + optional int32 mtu = 6; + + // List of VLANs + repeated DeviceVlan vlans = 7; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 8; +} + +// Ethernet interface connection to a port, LAG or VXLAN tunnel. +message EthernetConnection { + + message Choice { + enum Enum { + unspecified = 0; + port_name = 1; + lag_name = 2; + vxlan_name = 3; + } + } + // port_name, lag_name or vxlan_name + optional Choice.Enum choice = 1; + + // Name of the port that the Ethernet interface is configured on. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + optional string port_name = 2; + + // Name of the LAG that the Ethernet interface is configured on. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + optional string lag_name = 3; + + // Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected + // to. + // + // x-constraint: + // - #/components/schemas/VXlan.V4Tunnel/properties/name + // - #/components/schemas/VXlan.V6Tunnel/properties/name + // + optional string vxlan_name = 4; +} + +// Emulated VLAN protocol. +message DeviceVlan { + + message Tpid { + enum Enum { + unspecified = 0; + x8100 = 1; + x88a8 = 2; + x9100 = 3; + x9200 = 4; + x9300 = 5; + } + } + // Tag protocol identifier + // default = Tpid.Enum.x8100 + optional Tpid.Enum tpid = 1; + + // Priority code point + // default = 0 + optional int32 priority = 2; + + // VLAN identifier + // default = 1 + optional int32 id = 3; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 4; +} + +// An IPv4 interface with gateway +message DeviceIpv4 { + + // The IPv4 address of the gateway + // required = true + string gateway = 1; + + // Description missing in models + optional DeviceIpv4GatewayMAC gateway_mac = 2; + + // The IPv4 address + // required = true + string address = 3; + + // The prefix of the IPv4 address. + // default = 24 + optional int32 prefix = 4; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 5; +} + +// An IPv4 Loopback interface. +message DeviceIpv4Loopback { + + // The unique name of the Ethernet interface behind which this Loopback interface will + // be created. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + // required = true + string eth_name = 1; + + // The IPv4 Loopback address with prefix length of 32. + // default = 0.0.0.0 + optional string address = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + +// By default auto(resolved gateway mac) is set. Setting a value would mean that ARP +// will not be used for learning MAC of connected device. The user-configured MAC address +// will be used for auto-filling the destination +// MAC address in the control and data packets sent from this IPv4 endpoint +// whenever applicable. +message DeviceIpv4GatewayMAC { + + message Choice { + enum Enum { + unspecified = 0; + auto = 1; + value = 2; + } + } + // auto or configured value. + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 00:00:00:00:00:00 + optional string auto = 2; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 3; +} + +// Status: under-review +// An IPv6 interface with gateway. +message DeviceIpv6 { + + // The IPv6 gateway address. + // required = true + string gateway = 1; + + // Description missing in models + optional DeviceIpv6GatewayMAC gateway_mac = 2; + + // The IPv6 address. + // required = true + string address = 3; + + // The network prefix. + // default = 64 + optional int32 prefix = 4; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 5; +} + +// An IPv6 Loopback interface +message DeviceIpv6Loopback { + + // The unique name of the Ethernet interface behind which this Loopback + // interface will be created. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + // required = true + string eth_name = 1; + + // The IPv6 Loopback address with prefix length of 128. + // default = ::0 + optional string address = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; +} + +// By default auto(resolved gateway mac) is set. Setting a value would mean that ND +// will not be used for learning MAC of connected device. The user-configured MAC address +// will be used for auto-filling the destination +// MAC address in the control and data packets sent from this IPv6 endpoint +// whenever applicable. +message DeviceIpv6GatewayMAC { + + message Choice { + enum Enum { + unspecified = 0; + auto = 1; + value = 2; + } + } + // auto or configured value. + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 00:00:00:00:00:00 + optional string auto = 2; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 3; +} + +// A container for layer1 settings. +message Layer1 { + + // A list of unique names of port objects that will share the + // choice settings. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; + + message Speed { + enum Enum { + unspecified = 0; + speed_10_fd_mbps = 1; + speed_10_hd_mbps = 2; + speed_100_fd_mbps = 3; + speed_100_hd_mbps = 4; + speed_1_gbps = 5; + speed_10_gbps = 6; + speed_25_gbps = 7; + speed_40_gbps = 8; + speed_50_gbps = 9; + speed_100_gbps = 10; + speed_200_gbps = 11; + speed_400_gbps = 12; + } + } + // Set the speed if supported. + // default = Speed.Enum.speed_10_gbps + optional Speed.Enum speed = 2; + + message Media { + enum Enum { + unspecified = 0; + copper = 1; + fiber = 2; + sgmii = 3; + } + } + // Set the type of media interface if supported. + optional Media.Enum media = 3; + + // Enable promiscuous mode if supported. + // default = True + optional bool promiscuous = 4; + + // Set the maximum transmission unit size if supported. + // default = 1500 + optional int32 mtu = 5; + + // Set to true to override the auto_negotiate, link_training + // and rs_fec settings for gigabit ethernet interfaces. + optional bool ieee_media_defaults = 6; + + // Enable/disable auto negotiation. + optional bool auto_negotiate = 7; + + // Description missing in models + optional Layer1AutoNegotiation auto_negotiation = 8; + + // Description missing in models + optional Layer1FlowControl flow_control = 9; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 10; +} + +// Configuration for auto negotiation settings +message Layer1AutoNegotiation { + + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + optional bool advertise_1000_mbps = 1; + + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + optional bool advertise_100_fd_mbps = 2; + + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + optional bool advertise_100_hd_mbps = 3; + + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + optional bool advertise_10_fd_mbps = 4; + + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + optional bool advertise_10_hd_mbps = 5; + + // Enable/disable gigabit ethernet link training. + // default = False + optional bool link_training = 6; + + // Enable/disable gigabit ethernet reed solomon forward error correction (RS FEC). + // default = False + optional bool rs_fec = 7; +} + +// A container for layer1 receive flow control settings. +// To enable flow control settings on ports this object must be a valid +// object not a null value. +message Layer1FlowControl { + + // The 48bit mac address that the layer1 port names will listen on + // for a directed pause. + // default = 01:80:C2:00:00:01 + optional string directed_address = 1; + + message Choice { + enum Enum { + unspecified = 0; + ieee_802_1qbb = 1; + ieee_802_3x = 2; + } + } + // The type of priority flow control. + // default = Choice.Enum.ieee_802_1qbb + optional Choice.Enum choice = 2; + + // Description missing in models + optional Layer1Ieee8021qbb ieee_802_1qbb = 3; + + // Description missing in models + optional Layer1Ieee8023x ieee_802_3x = 4; +} + +// A container for ieee 802.3x rx pause settings +message Layer1Ieee8023x { +} + +// These settings enhance the existing 802.3x pause priority capabilities +// to enable flow control based on 802.1p priorities (classes of service). +message Layer1Ieee8021qbb { + + // The upper limit on the transmit time of a queue after receiving a + // message to pause a specified priority. + // A value of 0 or null indicates that pfc delay will not be enabled. + // default = 0 + optional int32 pfc_delay = 1; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 0 + optional int32 pfc_class_0 = 2; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 1 + optional int32 pfc_class_1 = 3; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 2 + optional int32 pfc_class_2 = 4; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 3 + optional int32 pfc_class_3 = 5; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 4 + optional int32 pfc_class_4 = 6; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 5 + optional int32 pfc_class_5 = 7; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 6 + optional int32 pfc_class_6 = 8; + + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 7 + optional int32 pfc_class_7 = 9; +} + +// Status: under-review +// Configuration for capture settings. +message Capture { + + // The unique names of ports that the capture settings will apply to. Port_names cannot + // be duplicated between capture objects. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; + + // A list of filters to apply to the capturing ports. If no filters are specified then + // all packets will be captured. A capture can have multiple filters. The number of + // filters supported is determined by the implementation which can be retrieved using + // the capabilities API. + // When multiple filters are specified the capture implementation must && (and) all + // the filters. + repeated CaptureFilter filters = 2; + + // Overwrite the capture buffer. + // default = True + optional bool overwrite = 3; + + // The maximum size of each captured packet. If no value is specified or it is null + // then the entire packet will be captured. + optional int32 packet_size = 4; + + message Format { + enum Enum { + unspecified = 0; + pcap = 1; + pcapng = 2; + } + } + // The format of the capture file. + // default = Format.Enum.pcap + optional Format.Enum format = 5; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 6; +} + +// Configuration for capture filters +message CaptureFilter { + + message Choice { + enum Enum { + unspecified = 0; + custom = 1; + ethernet = 2; + vlan = 3; + ipv4 = 4; + ipv6 = 5; + } + } + // The type of capture filter. + // default = Choice.Enum.custom + optional Choice.Enum choice = 1; + + // Offset from last filter in the list. If no filters are present it is offset from + // position 0. Multiple custom filters can be present, the length of each custom filter + // is the length of the value being filtered. + optional CaptureCustom custom = 2; + + // Description missing in models + optional CaptureEthernet ethernet = 3; + + // Description missing in models + optional CaptureVlan vlan = 4; + + // Description missing in models + optional CaptureIpv4 ipv4 = 5; + + // Description missing in models + optional CaptureIpv6 ipv6 = 6; +} + +// Description missing in models +message CaptureCustom { + + // The bit offset of field to filter on + // default = 0 + optional int32 offset = 1; + + // The bit length of field to filter on + // default = 8 + optional int32 bit_length = 2; + + // Description missing in models + // default = 00 + optional string value = 3; + + // Description missing in models + // default = 00 + optional string mask = 4; + + // Description missing in models + // default = False + optional bool negate = 5; +} + +// Description missing in models +message CaptureField { + + // Description missing in models + // default = 00 + optional string value = 1; + + // Description missing in models + // default = 00 + optional string mask = 2; + + // Description missing in models + // default = False + optional bool negate = 3; +} + +// Description missing in models +message CaptureEthernet { + + // Description missing in models + optional CaptureField src = 1; + + // Description missing in models + optional CaptureField dst = 2; + + // Description missing in models + optional CaptureField ether_type = 3; + + // Description missing in models + optional CaptureField pfc_queue = 4; +} + +// Description missing in models +message CaptureVlan { + + // Description missing in models + optional CaptureField priority = 1; + + // Description missing in models + optional CaptureField cfi = 2; + + // Description missing in models + optional CaptureField id = 3; + + // Description missing in models + optional CaptureField protocol = 4; +} + +// Description missing in models +message CaptureIpv4 { + + // Description missing in models + optional CaptureField version = 1; + + // Description missing in models + optional CaptureField header_length = 2; + + // Description missing in models + optional CaptureField priority = 3; + + // Description missing in models + optional CaptureField total_length = 4; + + // Description missing in models + optional CaptureField identification = 5; + + // Description missing in models + optional CaptureField reserved = 6; + + // Description missing in models + optional CaptureField dont_fragment = 7; + + // Description missing in models + optional CaptureField more_fragments = 8; + + // Description missing in models + optional CaptureField fragment_offset = 9; + + // Description missing in models + optional CaptureField time_to_live = 10; + + // Description missing in models + optional CaptureField protocol = 11; + + // Description missing in models + optional CaptureField header_checksum = 12; + + // Description missing in models + optional CaptureField src = 13; + + // Description missing in models + optional CaptureField dst = 14; +} + +// Description missing in models +message CaptureIpv6 { + + // Description missing in models + optional CaptureField version = 1; + + // Description missing in models + optional CaptureField traffic_class = 2; + + // Description missing in models + optional CaptureField flow_label = 3; + + // Description missing in models + optional CaptureField payload_length = 4; + + // Description missing in models + optional CaptureField next_header = 5; + + // Description missing in models + optional CaptureField hop_limit = 6; + + // Description missing in models + optional CaptureField src = 7; + + // Description missing in models + optional CaptureField dst = 8; +} + +// A container for emulated interfaces, loopback interfaces and protocol configurations. +message Device { + + // Ethernet configuration for one or more emulated network interfaces. + repeated DeviceEthernet ethernets = 1; + + // IPv4 Loopback interface that can be attached to an Ethernet in the same device or + // to an Ethernet in another device. + repeated DeviceIpv4Loopback ipv4_loopbacks = 2; + + // IPv6 Loopback interface that can be attached to an Ethernet in the same device or + // to an Ethernet in another device. + repeated DeviceIpv6Loopback ipv6_loopbacks = 3; + + // The properties of an IS-IS router and its children, such as IS-IS interfaces and + // route ranges. + optional DeviceIsisRouter isis = 4; + + // The properties of BGP router and its children, such as BGPv4, BGPv6 peers and their + // route ranges. + optional DeviceBgpRouter bgp = 5; + + // Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 + optional DeviceVxlan vxlan = 6; + + // The properties of TCP and its children, + repeated DeviceTcp tcp = 7; + + // The properties of HTTP and its children, + repeated DeviceHttp http = 8; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 9; +} + +// Status: under-review +// A container of properties for an ISIS router and its interfaces. +message DeviceIsisRouter { + + // This contains the properties of a Multi-Instance-capable routers or MI-RTR. Each + // router can emulate one ISIS instance at a time. + optional DeviceIsisMultiInstance instance = 1; + + // The System ID for this emulated ISIS router, e.g. 640100010000. + // required = true + string system_id = 2; + + // List of ISIS interfaces for this router. + repeated IsisInterface interfaces = 3; + + // Contains basic properties of an ISIS Router. + optional IsisBasic basic = 4; + + // Contains advance properties of an ISIS Router.. + optional IsisAdvanced advanced = 5; + + // ISIS Router authentication properties. + optional IsisAuthentication router_auth = 6; + + // Emulated ISIS IPv4 routes. + repeated IsisV4RouteRange v4_routes = 7; + + // Emulated ISIS IPv6 routes. + repeated IsisV6RouteRange v6_routes = 8; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 9; +} + +// Status: under-review +// This container properties of an Multi-Instance-capable router (MI-RTR). +message DeviceIsisMultiInstance { + + // Instance Identifier (IID) TLV will associate a PDU with an ISIS instance by using + // a unique 16-bit number and including one or more Instance-Specific Topology Identifiers + // (ITIDs). + // default = 1 + optional int32 iid = 1; + + // This contains one or more ITIDs that will be advertised in IID TLV. + repeated int32 itids = 2; +} + +// Status: under-review +// Configuration for single ISIS interface. +message IsisInterface { + + // The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces + // cannot share the same Ethernet. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + // required = true + string eth_name = 1; + + // The default metric cost for the interface. + // default = 10 + optional int32 metric = 2; + + message NetworkType { + enum Enum { + unspecified = 0; + broadcast = 1; + point_to_point = 2; + } + } + // The type of network link. + // default = NetworkType.Enum.broadcast + optional NetworkType.Enum network_type = 3; + + message LevelType { + enum Enum { + unspecified = 0; + level_1 = 1; + level_2 = 2; + level_1_2 = 3; + } + } + // This indicates whether this router is participating in Level-1 (L1), + // Level-2 (L2) or both L1 and L2 domains on this interface. + // default = LevelType.Enum.level_2 + optional LevelType.Enum level_type = 4; + + // Settings of Level 1 Hello. + optional IsisInterfaceLevel l1_settings = 5; + + // Settings of Level 2 Hello. + optional IsisInterfaceLevel l2_settings = 6; + + // Contains the properties of multiple topologies. + repeated IsisMT multi_topology_ids = 7; + + // Contains a list of Traffic Engineering attributes. + repeated LinkStateTE traffic_engineering = 8; + + // The Circuit authentication method used for the interfaces on this emulated ISIS v4/v6 + // router. + optional IsisInterfaceAuthentication authentication = 9; + + // Optional container for advanced interface properties. + optional IsisInterfaceAdvanced advanced = 10; + + // Link protection on the ISIS link between two interfaces. + optional IsisInterfaceLinkProtection link_protection = 11; + + // This contains list of SRLG values for the link between two interfaces. + repeated int32 srlg_values = 12; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 13; +} + +// Configuration for the properties of Level 1 Hello. +message IsisInterfaceLevel { + + // The Priority setting in Level 1 LAN Hellos for Designated Router election. + // default = 0 + optional int32 priority = 1; + + // The Hello interval for Level 1 Hello messages, in seconds. + // default = 10 + optional int32 hello_interval = 2; + + // The Dead (Holding Time) interval for Level 1 Hello messages, in seconds. + // default = 30 + optional int32 dead_interval = 3; +} + +// Status: under-review +// Configuration of properties per interface per topology when multiple topologies are +// configured in an ISIS router. +// in a ISIS router. +message IsisMT { + + // The Multi Topology ID for one of the topologies supported on the ISIS interface. + // default = 0 + optional int32 mt_id = 1; + + // Specifies the link metric for this topology on the ISIS interface. + // default = 10 + optional int32 link_metric = 2; +} + +// Status: under-review +// A container for Traffic Engineering properties on a interface. +message LinkStateTE { + + // The Administrative group sub-TLV (sub-TLV 3). It is a 4-octet + // user-defined bit mask used to assign administrative group numbers + // to the interface, for use in assigning colors and resource classes. + // Each set bit corresponds to a single administrative group for this + // interface. The settings translate into Group numbers, which range + // from 0 to 31 (integers). + // default = 00000000 + optional string administrative_group = 1; + + // The user-assigned link metric for Traffic Engineering. + // default = 0 + optional int64 metric_level = 2; + + // The maximum link bandwidth (sub-TLV 9) in bytes/sec allowed for this + // link for a direction. + // default = 125000000 + optional int64 max_bandwith = 3; + + // The maximum link bandwidth (sub-TLV 10) in bytes/sec allowed for this + // link in a direction. + // default = 125000000 + optional int64 max_reservable_bandwidth = 4; + + // Configuration of bandwidths of priority 0 through priority 7. + optional LinkStatepriorityBandwidths priority_bandwidths = 5; +} + +// Specifies the amount of bandwidth that can be reserved with a setup priority of 0 +// +// through 7, arranged in increasing order with priority 0 having highest priority. +// +// In ISIS, this is sent in sub-TLV (11) of Extended IS Reachability TLV. +message LinkStatepriorityBandwidths { + + // Specifies the amount of bandwidth that can be reserved for the Priority 0. + // default = 125000000 + optional int64 pb0 = 1; + + // Specifies the amount of bandwidth that can be reserved for the Priority 1. + // default = 125000000 + optional int64 pb1 = 2; + + // Specify the amount of bandwidth that can be reserved for the Priority 2. + // default = 125000000 + optional int64 pb2 = 3; + + // Specifies the amount of bandwidth that can be reserved for the Priority 3. + // default = 125000000 + optional int64 pb3 = 4; + + // Specifies the amount of bandwidth that can be reserved for the Priority 4. + // default = 125000000 + optional int64 pb4 = 5; + + // Specifies the amount of bandwidth that can be reserved for the Priority 5. + // default = 125000000 + optional int64 pb5 = 6; + + // Specifies the amount of bandwidth that can be reserved for the Priority 6. + // default = 125000000 + optional int64 pb6 = 7; + + // Specifies the amount of bandwidth that can be reserved for the Priority 7. + // default = 125000000 + optional int64 pb7 = 8; +} + +// Optional container for circuit authentication properties. +message IsisInterfaceAuthentication { + + message AuthType { + enum Enum { + unspecified = 0; + md5 = 1; + password = 2; + } + } + // The circuit authentication method. + // required = true + AuthType.Enum auth_type = 1; + + // MD5 key to be used for authentication. + optional string md5 = 2; + + // The password, in clear text, to be used for Authentication. + optional string password = 3; +} + +// Optional container for advanced interface properties. +message IsisInterfaceAdvanced { + + // If a padded Hello message is received on the interface, the length of + // the Hello packets sent out on that interface is adjusted to match. + // default = True + optional bool auto_adjust_mtu = 1; + + // If a Level 1 Hello is received on this emulated router for an area + // not currently in its area list, an area from the received Hello is + // added to that list. This ensures an area match for all future + // Level 1 Hellos from the source L1 router. + // default = True + optional bool auto_adjust_area = 2; + + // If a Hello message listing supported protocols is received on this + // emulated router, the supported protocols advertised by this router + // are changed to match exactly. + // default = False + optional bool auto_adjust_supported_protocols = 3; + + // If it is true, the Point-to-Point circuit will include 3-way TLV in its Point-to-Point + // IIH and attempt to establish the adjacency as specified in RFC 5303. This field + // is not applicable if network_type is set to 'broadcast' type in ISIS interface. + // default = True + optional bool enable_3way_handshake = 4; + + // If it is true, the Point-to-Point Hello messages will be sent to the unicast MAC + // address. + // default = False + optional bool p2p_hellos_to_unicast_mac = 5; +} + +// Optional container for the link protection sub TLV (type 20). +message IsisInterfaceLinkProtection { + + // Enable this to protect other link or links. LSPs on a link of this type are lost + // if any of the links fail. + // default = False + optional bool extra_traffic = 1; + + // Enabling this signifies that there is no other link protecting this + // link. LSPs on a link of this type are lost if the link fails. + // default = False + optional bool unprotected = 2; + + // Enable this to share the Extra Traffic links between one or more + // links of type Shared.There are one or more disjoint links of type + // Extra Traffic that are protecting this link. + // default = False + optional bool shared = 3; + + // Enabling this signifies that there is one dedicated disjoint link + // of type Extra Traffic that is protecting this link. + // default = False + optional bool dedicated_1_to_1 = 4; + + // Enabling this signifies that a dedicated disjoint link is protecting + // this link. However, the protecting link is not advertised in the + // link state database and is therefore not available for the routing + // of LSPs. + // default = False + optional bool dedicated_1_plus_1 = 5; + + // Enabling this signifies that a protection scheme that is more + // reliable than Dedicated 1+1. + // default = False + optional bool enhanced = 6; + + // This is a Protection Scheme with value 0x40. + // default = False + optional bool reserved_40 = 7; + + // This is a Protection Scheme with value 0x80. + // default = False + optional bool reserved_80 = 8; +} + +// This contains ISIS router basic properties. +message IsisBasic { + + // IPv4 Traffic Engineering(TE) router id. This address should be configured as an IPv4 + // Loopback address in 'ipv4_loopbacks' in the Device. + optional string ipv4_te_router_id = 1; + + // Host name for the router. The host name is transmitted in all the packets sent from + // the router. + optional string hostname = 2; + + // When set to true, it allows sending of more detailed metric information for the + // routes using 32-bit wide values using TLV 135 IP reachability and more detailed + // reachability information for IS reachability by using TLV 22. The detailed usage + // is described in RFC3784. + // default = True + optional bool enable_wide_metric = 3; + + // Configuration for controlling storage of ISIS learned LSPs are received from the + // neighbors. + // default = False + optional bool learned_lsp_filter = 4; +} + +// Contains ISIS router advanced properties. +message IsisAdvanced { + + // It enables padding of Hello message to MTU size. + // default = True + optional bool enable_hello_padding = 1; + + // The Number of Area Addresses permitted, with a valid range from 0 to 254. A zero + // indicates a maximum of 3 addresses. + // default = 3 + optional int32 max_area_addresses = 2; + + // Its combination of the ISP and HO-DSP.Usually all nodes within an area have the + // same area address. If no area addresses are configured, a default area of 490001 + // will be advertised. + repeated string area_addresses = 3; + + // The rate at which LSPs are re-sent in seconds. + // default = 600 + optional int32 lsp_refresh_rate = 4; + + // The MaxAge for retaining a learned LSP on this router in seconds. + // default = 1200 + optional int32 lsp_lifetime = 5; + + // The number of milliseconds between transmissions of Partial Sequence Number PDU. + // default = 2000 + optional int32 psnp_interval = 6; + + // The number of milliseconds between transmissions of Partial Sequence Number PDU. + // default = 10000 + optional int32 csnp_interval = 7; + + // The maximum size in bytes of any LSP that can be transmitted over a link of equal + // or less than maximum MTU size. + // default = 1492 + optional int32 max_lsp_size = 8; + + // The number of seconds between transmissions of LSPs/MGROUP-PDUs. + // default = 5000 + optional int32 lsp_mgroup_min_trans_interval = 9; + + // If the Attached bit is enabled, it indicates that the ISIS router is attached to + // another area or the Level 2 backbone. The purpose of an Attached-Bit is to accomplish + // Inter-Area Routing. When an L1/L2 router is connected to more than one area, it + // sets the Attached-bit on its L1 LSP. This can cause a default route ( 0.0.0.0/0 ) + // to be installed by the receiving router. + // default = True + optional bool enable_attached_bit = 10; +} + +// This contains ISIS Area/Domain authentication properties. +message IsisAuthentication { + + // Do not verify MD5 checksum in received LSPs. + // default = True + optional bool ignore_receive_md5 = 1; + + // The Area authentication method used for the emulated ISIS router. + // This is used for L1 LSPs. + optional IsisAuthenticationBase area_auth = 2; + + // The Domain authentication method used for the emulated ISIS router. + // This is used for L2 LSPs. + optional IsisAuthenticationBase domain_auth = 3; +} + +// Optional container for ISIS authentication properties. +message IsisAuthenticationBase { + + message AuthType { + enum Enum { + unspecified = 0; + md5 = 1; + password = 2; + } + } + // The authentication method. + // required = true + AuthType.Enum auth_type = 1; + + // Authentication as an MD5 key. + optional string md5 = 2; + + // Authentication as a clear text password. + optional string password = 3; +} + +// Emulated ISIS IPv4 routes. +message IsisV4RouteRange { + + // A list of group of IPv4 route addresses. + repeated V4RouteAddress addresses = 1; + + // The user-defined metric associated with this route range. + // default = 0 + optional int32 link_metric = 2; + + message OriginType { + enum Enum { + unspecified = 0; + internal = 1; + external = 2; + } + } + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + // default = OriginType.Enum.internal + optional OriginType.Enum origin_type = 3; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. + // It is used for domain-wide advertisement of prefix information. + // + // Up (0)-used when a prefix is initially advertised within the ISIS L3 + // hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + // default = RedistributionType.Enum.up + optional RedistributionType.Enum redistribution_type = 4; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 5; + + // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags + // will be advertised or not. + // default = False + optional bool prefix_attr_enabled = 6; + + // External Prefix Flag (Bit 0) + // default = False + optional bool x_flag = 7; + + // Re-advertisement Flag (Bit 1) + // default = False + optional bool r_flag = 8; + + // Node Flag (Bit 2) + // default = False + optional bool n_flag = 9; +} + +// A container for IPv4 route addresses. +message V4RouteAddress { + + // The starting address of the network. + // required = true + string address = 1; + + // The IPv4 network prefix length to be applied to the address. + // default = 24 + optional int32 prefix = 2; + + // The total number of addresses in the range. + // default = 1 + optional int32 count = 3; + + // Increments the network address prefixes within a route range where multiple routes + // are present. The value is incremented according to the Prefix Length and Step. + // default = 1 + optional int32 step = 4; +} + +// A container for IPv6 route addresses. +message V6RouteAddress { + + // The starting address of the network. + // required = true + string address = 1; + + // The IPv6 network prefix length to be applied to the address. + // default = 64 + optional int32 prefix = 2; + + // The total number of addresses in the range. + // default = 1 + optional int32 count = 3; + + // Increments the network address prefixes within a route range where multiple routes + // are present. The value is incremented according to the Prefix Length and Step. + // default = 1 + optional int32 step = 4; +} + +// A container for MAC route addresses. +message MACRouteAddress { + + // The starting address of the MAC Range. + // required = true + string address = 1; + + // The MAC prefix length to be applied to the address. + // default = 48 + optional int32 prefix = 2; + + // The total number of mac addresses in the range. + // default = 1 + optional int32 count = 3; + + // Increments the mac address prefixes within a mac range where multiple routes are + // present. The value is incremented according to the mac prefix Length and Step. + // default = 1 + optional int32 step = 4; +} + +// Emulated ISIS IPv6 routes. +message IsisV6RouteRange { + + // A list of group of IPv6 route addresses. + repeated V6RouteAddress addresses = 1; + + // The user-defined metric associated with this route range. + // default = 0 + optional int32 link_metric = 2; + + message OriginType { + enum Enum { + unspecified = 0; + internal = 1; + external = 2; + } + } + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + // default = OriginType.Enum.internal + optional OriginType.Enum origin_type = 3; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. + // It is used for domain-wide advertisement of prefix information. + // + // Up (0)-used when a prefix is initially advertised within the ISIS L3 + // hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + // default = RedistributionType.Enum.up + optional RedistributionType.Enum redistribution_type = 4; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 5; + + // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags + // will be advertised or not. + // default = False + optional bool prefix_attr_enabled = 6; + + // External Prefix Flag (Bit 0) + // default = False + optional bool x_flag = 7; + + // Re-advertisement Flag (Bit 1) + // default = False + optional bool r_flag = 8; + + // Node Flag (Bit 2) + // default = False + optional bool n_flag = 9; +} + +// Configuration for one or more IPv4 or IPv6 BGP peers. +message DeviceBgpRouter { + + // The BGP router ID is a unique identifier used by BGP. It is a 32-bit value that is + // often represented by an IPv4 address. + // required = true + string router_id = 1; + + // This contains an array of references to IPv4 interfaces, each of which will have + // list of peers to different destinations. + repeated BgpV4Interface ipv4_interfaces = 2; + + // This contains an array of references to IPv6 interfaces, each of which will have + // list of peers to different destinations. + repeated BgpV6Interface ipv6_interfaces = 3; +} + +// Status: under-review +// Configuration for emulated BGPv4 peers and routes. +message BgpV4Peer { + + // IPv4 address of the BGP peer for the session. + // required = true + string peer_address = 1; + + // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments + // (ES) Per BGP Peer for IPv4 Address Family Identifier (AFI). + // + // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . + // Each EVI contains a list of Broadcast Domains. + // Each Broadcast Domain contains a list of MAC/IP Ranges. + // + // is responsible for advertising Ethernet + // Auto-discovery Route Per EVI (Type 1). + // + // is responsible for advertising Ethernet Auto-discovery Route + // Per Ethernet Segment (Type 1). + // + // is responsible for advertising + // MAC/IP Advertisement Route (Type 2). + // + // is responsible for advertising Inclusive + // Multicast Ethernet Tag Route (Type 3). + // + // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). + repeated BgpV4EthernetSegment evpn_ethernet_segments = 2; + + message AsType { + enum Enum { + unspecified = 0; + ibgp = 1; + ebgp = 2; + } + } + // The type of BGP autonomous system. External BGP is used for BGP links between two + // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous + // system (ibgp). BGP property defaults are aligned with this object defined as an internal + // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to + // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' + // attribute in 'as_path' field in any Route Range should be changed from default value + // 'do_not_include_local_as' to any other value. + // required = true + AsType.Enum as_type = 3; + + // Autonomous System Number (AS number or ASN) + // required = true + int32 as_number = 4; + + message AsNumberWidth { + enum Enum { + unspecified = 0; + two = 1; + four = 2; + } + } + // The width in bytes of the as_number values. Any as_number values that exceeds the + // width MUST result in an error. + // default = AsNumberWidth.Enum.four + optional AsNumberWidth.Enum as_number_width = 5; + + // Description missing in models + optional BgpAdvanced advanced = 6; + + // Description missing in models + optional BgpCapability capability = 7; + + // Description missing in models + optional BgpLearnedInformationFilter learned_information_filter = 8; + + // Emulated BGPv4 route ranges. + repeated BgpV4RouteRange v4_routes = 9; + + // Emulated BGPv6 route ranges. + repeated BgpV6RouteRange v6_routes = 10; + + // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier + // (AFI). + repeated BgpSrteV4Policy v4_srte_policies = 11; + + // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier + // (AFI). + repeated BgpSrteV6Policy v6_srte_policies = 12; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 13; +} + +// Configuration for emulated BGPv4 peers and routes on a single IPv4 interface. +message BgpV4Interface { + + // The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for + // this list of BGP peers. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv4Loopback/properties/name + // + // required = true + string ipv4_name = 1; + + // This contains the list of BGPv4 peers configured on this interface. + repeated BgpV4Peer peers = 2; +} + +// Configuration for BGP Ethernet Segment ranges. Advertises following routes - +// +// Type 4 - Ethernet Segment Route +message BgpV4EthernetSegment { + + // Designated Forwarder (DF) election configuration. + optional BgpEthernetSegmentDfElection df_election = 1; + + // This contains the list of EVIs. + repeated BgpV4EvpnEvis evis = 2; + + // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero + // ESI is '10000000000000000000' . + // default = 00000000000000000000 + optional string esi = 3; + + message ActiveMode { + enum Enum { + unspecified = 0; + single_active = 1; + all_active = 2; + } + } + // Single Active or All Active mode Redundancy mode selection for Multi-home. + // default = ActiveMode.Enum.all_active + optional ActiveMode.Enum active_mode = 4; + + // The label value to be advertised as ESI Label in ESI Label Extended Community. This + // is included in Ethernet Auto-discovery per ES Routes advertised by a router. + // default = 0 + optional int32 esi_label = 5; + + // Description missing in models + optional BgpRouteAdvanced advanced = 6; + + // Optional community settings. + repeated BgpCommunity communities = 7; + + // Optional Extended Community settings. + repeated BgpExtCommunity ext_communities = 8; + + // Optional AS PATH settings. + optional BgpAsPath as_path = 9; +} + +// Configuration for Designated Forwarder (DF) election among the Provider Edge (PE) +// routers on the same Ethernet Segment. +message BgpEthernetSegmentDfElection { + + // The DF election timer in seconds. + // default = 3 + optional int32 election_timer = 1; +} + +// Configuration for advanced BGP route range settings. +message BgpRouteAdvanced { + + // The multi exit discriminator (MED) value. A null value means the MED feature is + // not enabled. + optional int32 multi_exit_discriminator = 1; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + } + } + // The origin value. A null value means the origin feature is not enabled. + // default = Origin.Enum.igp + optional Origin.Enum origin = 2; +} + +// BGP communities provide additional capability for tagging routes and for modifying +// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit +// number which is broken into 16-bit AS number and a 16-bit custom value. +message BgpCommunity { + + message Type { + enum Enum { + unspecified = 0; + manual_as_number = 1; + no_export = 2; + no_advertised = 3; + no_export_subconfed = 4; + llgr_stale = 5; + no_llgr = 6; + } + } + // The type of community AS number. + optional Type.Enum type = 1; + + // First two octets of 32 bit community AS number. + // default = 0 + optional int32 as_number = 2; + + // Last two octets of the community value. + // default = 0 + optional int32 as_custom = 3; +} + +// The Extended Communities Attribute is a transitive optional BGP attribute, with the +// Type Code 16. Community and Extended Communities attributes to trigger routing decisions, +// such as acceptance, rejection, preference, or redistribution. An extended community +// is an 8-Bytes value. It is also divided into two main parts. The first 2 Bytes of +// the community encode a type and sub-type fields and the last 6 Bytes carry a unique +// set of data in a format defined by the type and sub-type field. Extended communities +// provide a larger range for grouping or categorizing communities. +message BgpExtCommunity { + + message Type { + enum Enum { + unspecified = 0; + administrator_as_2octet = 1; + administrator_ipv4_address = 2; + administrator_as_4octet = 3; + opaque = 4; + evpn = 5; + administrator_as_2octet_link_bandwidth = 6; + } + } + // Extended Community Type field of 1 Byte. + // - administrator_as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). + // - administrator_ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). + // - administrator_as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). + // - opaque: Opaque Extended Community (RFC 7432). + // - evpn: EVPN Extended Community (RFC 7153). + // - administrator_as_2octet_link_bandwidth : Link Bandwidth Extended Community (RFC + // 7153). + optional Type.Enum type = 1; + + message Subtype { + enum Enum { + unspecified = 0; + route_target = 1; + origin = 2; + extended_bandwidth = 3; + color = 4; + encapsulation = 5; + mac_address = 6; + } + } + // Extended Community Sub Type field of 1 Byte. + // - route_target: Route Target. + // - origin: Origin. + // - extended_bandwidth: Specifies the link bandwidth. + // - color: Specifies the color value. + // - encapsulation: Specifies the Encapsulation Extended Community. + // - mac_address: Specifies the Extended community MAC address. + optional Subtype.Enum subtype = 2; + + // Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype + // value can be '0000000000c8' for the color value 200. + optional string value = 3; +} + +// This attribute identifies the autonomous systems through which routing information +// carried in this UPDATE message has passed. This contains the configuration of how +// to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains +// optional configuration of additional AS Path Segments that can be included in the +// AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems +// (AS) numbers that a routing information passes through to reach the destination. +message BgpAsPath { + + message AsSetMode { + enum Enum { + unspecified = 0; + do_not_include_local_as = 1; + include_as_seq = 2; + include_as_set = 3; + include_as_confed_seq = 4; + include_as_confed_set = 5; + prepend_to_first_segment = 6; + } + } + // Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, + // Do Not Include Local AS must be chosen. For eBGP sessions, any choice other than + // Do Not Include Local AS can be chosen. + // default = AsSetMode.Enum.do_not_include_local_as + optional AsSetMode.Enum as_set_mode = 1; + + // The additional AS path segments to be added in the NLRI. By default, an empty AS + // path is always included and the local AS is added to it as per the value of 'as_set_mode' + // attribute. + repeated BgpAsPathSegment segments = 2; +} + +// Configuration for a single BGP AS path segment +message BgpAsPathSegment { + + message Type { + enum Enum { + unspecified = 0; + as_seq = 1; + as_set = 2; + as_confed_seq = 3; + as_confed_set = 4; + } + } + // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting + // with the most recent ASN being added read from left to right. + // The other three AS_PATH types are used for Confederations - AS_SET is the type of + // AS_PATH attribute that summarizes routes using using the aggregate-address command, + // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives + // the list of ASNs in the path starting with the most recent ASN to be added reading + // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be + // sent in BGP Updates. + // default = Type.Enum.as_seq + optional Type.Enum type = 1; + + // The AS numbers in this AS path segment. + repeated int64 as_numbers = 2; +} + +// This contains a list of different flavors of EVPN. +// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. +// +// Need to instantiate correct type of EVPN instance as per requirement. +message BgpV4EvpnEvis { + + message Choice { + enum Enum { + unspecified = 0; + evi_vxlan = 1; + } + } + // Description missing in models + // default = Choice.Enum.evi_vxlan + optional Choice.Enum choice = 1; + + // EVPN VXLAN instance to be configured per Ethernet Segment. + optional BgpV4EviVxlan evi_vxlan = 2; +} + +// Configuration for BGP EVPN EVI. Advertises following routes - +// +// Type 3 - Inclusive Multicast Ethernet Tag Route +// +// Type 1 - Ethernet Auto-discovery Route (Per EVI) +// +// Type 1 - Ethernet Auto-discovery Route (Per ES) +message BgpV4EviVxlan { + + // This contains the list of Broadcast Domains to be configured per EVI. + repeated BgpV4EviVxlanBroadcastDomain broadcast_domains = 1; + + message ReplicationType { + enum Enum { + unspecified = 0; + ingress_replication = 1; + } + } + // This model only supports Ingress Replication + // default = ReplicationType.Enum.ingress_replication + optional ReplicationType.Enum replication_type = 2; + + // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel + // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. + // default = 16 + optional int32 pmsi_label = 3; + + // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet + // Auto-discovery Route per + // default = 0 + optional int32 ad_label = 4; + + // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying + // an EVI. Example - for the as_2octet 60005:100. + optional BgpRouteDistinguisher route_distinguisher = 5; + + // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with + // this EVI. + repeated BgpRouteTarget route_target_export = 6; + + // List of L2VNI import targets associated with this EVI. + repeated BgpRouteTarget route_target_import = 7; + + // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. + repeated BgpRouteTarget l3_route_target_export = 8; + + // List of L3VNI Import Route Targets. + repeated BgpRouteTarget l3_route_target_import = 9; + + // Description missing in models + optional BgpRouteAdvanced advanced = 10; + + // Optional community settings. + repeated BgpCommunity communities = 11; + + // Optional Extended Community settings. + repeated BgpExtCommunity ext_communities = 12; + + // Optional AS PATH settings. + optional BgpAsPath as_path = 13; +} + +// Configuration for Broadcast Domains per EVI. +message BgpV4EviVxlanBroadcastDomain { + + // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. + // + // + // Advertises following route - + // Type 2 - MAC/IP Advertisement Route. + repeated BgpCMacIpRange cmac_ip_range = 1; + + // The Ethernet Tag ID of the Broadcast Domain. + // default = 0 + optional int64 ethernet_tag_id = 2; + + // VLAN-Aware service to be enabled or disabled. + // default = False + optional bool vlan_aware_service = 3; +} + +// Configuration for MAC/IP Ranges per Broadcast Domain. +// +// Advertises following route - +// +// Type 2 - MAC/IP Advertisement Route. +message BgpCMacIpRange { + + // Host MAC address range per Broadcast Domain. + optional MACRouteAddress mac_addresses = 1; + + // Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement + // Route (Type 2) + // default = 0 + optional int32 l2vni = 2; + + // Host IPv4 address range per Broadcast Domain. + optional V4RouteAddress ipv4_addresses = 3; + + // Host IPv6 address range per Broadcast Domain. + optional V6RouteAddress ipv6_addresses = 4; + + // Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement + // Route (Type 2). + // default = 0 + optional int32 l3vni = 5; + + // Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). + // default = False + optional bool include_default_gateway = 6; + + // Description missing in models + optional BgpRouteAdvanced advanced = 7; + + // Optional community settings. + repeated BgpCommunity communities = 8; + + // Optional Extended Community settings. + repeated BgpExtCommunity ext_communities = 9; + + // Optional AS PATH settings. + optional BgpAsPath as_path = 10; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 11; +} + +// BGP Route Distinguisher. +message BgpRouteDistinguisher { + + message RdType { + enum Enum { + unspecified = 0; + as_2octet = 1; + ipv4_address = 2; + as_4octet = 3; + } + } + // Route Distinguisher Type field of 2 Byte. + // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). + // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). + // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). + // default = RdType.Enum.as_2octet + optional RdType.Enum rd_type = 1; + + // Allow to automatically configure RD IP address from local ip. + // default = False + optional bool auto_config_rd_ip_addr = 2; + + // Colon separated Extended Community value of 6 Bytes - AS number: Value. Example + // - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 + optional string rd_value = 3; +} + +// BGP Route Target. +message BgpRouteTarget { + + message RtType { + enum Enum { + unspecified = 0; + as_2octet = 1; + ipv4_address = 2; + as_4octet = 3; + } + } + // Extended Community Type field of 2 Byte. + // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). + // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). + // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). + optional RtType.Enum rt_type = 1; + + // Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. + // Example - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 + optional string rt_value = 2; +} + +// Status: under-review +// Configuration for BGP advanced settings. +message BgpAdvanced { + + // Number of seconds the sender proposes for the value of the Hold Timer. + // default = 90 + optional int32 hold_time_interval = 1; + + // Number of seconds between transmissions of Keepalive messages by this peer. + // default = 30 + optional int32 keep_alive_interval = 2; + + // The time interval at which Update messages are sent to the DUT, expressed as the + // number of milliseconds between Update messages. The update interval 0 implies to + // send all the updates as fast as possible. + // default = 0 + optional int32 update_interval = 3; + + // The limited number of iterations that a unit of data can experience before the data + // is discarded. This is placed in the TTL field in the IP header of the transmitted + // packets. + // default = 64 + optional int32 time_to_live = 4; + + // The value to be used as a secret MD5 key for authentication. If not configured, MD5 + // authentication will not be enabled. + optional string md5_key = 5; +} + +// Status: under-review +// Configuration for BGP capability settings. +message BgpCapability { + + // Support for the IPv4 Unicast address family. + // default = True + optional bool ipv4_unicast = 1; + + // Support for the IPv4 Multicast address family. + // default = False + optional bool ipv4_multicast = 2; + + // Support for the IPv4 Unicast address family. + // default = True + optional bool ipv6_unicast = 3; + + // Support for the IPv6 Multicast address family. + // default = False + optional bool ipv6_multicast = 4; + + // Support for VPLS as below. + // RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery + // and Signaling. + // RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery + // and Signaling. + // default = False + optional bool vpls = 5; + + // Support for the route refresh capabilities. Route Refresh allows the dynamic exchange + // of route refresh requests and routing information between BGP peers and the subsequent + // re-advertisement of the outbound or inbound routing table. + // default = True + optional bool route_refresh = 6; + + // Supports for the route constraint capabilities. Route Constraint allows the advertisement + // of Route Target Membership information. The BGP peers exchange Route Target Reachability + // Information, which is used to build a route distribution graph. This limits the + // propagation of VPN Network Layer Reachability Information (NLRI) between different + // autonomous systems or distinct clusters of the same autonomous system. This is supported + // for Layer 3 Virtual Private Network scenario. + // default = False + optional bool route_constraint = 7; + + // Support for BGP Link State for ISIS and OSPF. + // default = False + optional bool link_state_non_vpn = 8; + + // Capability advertisement of BGP Link State for VPNs. + // default = False + optional bool link_state_vpn = 9; + + // Support for the EVPN address family. + // default = False + optional bool evpn = 10; + + // Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. + // This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. + // default = False + optional bool extended_next_hop_encoding = 11; + + // Support for the IPv4 Multicast VPN address family. + // default = False + optional bool ipv4_multicast_vpn = 12; + + // Support for the IPv4 MPLS L3VPN address family. + // default = False + optional bool ipv4_mpls_vpn = 13; + + // Supports for IPv4 MDT address family messages. + // default = False + optional bool ipv4_mdt = 14; + + // Support for the IPv4 Multicast VPN address family. + // default = False + optional bool ipv4_multicast_mpls_vpn = 15; + + // Support for propagation of IPv4 unicast flow specification rules. + // default = False + optional bool ipv4_unicast_flow_spec = 16; + + // Support for IPv4 SRTE policy. + // default = False + optional bool ipv4_sr_te_policy = 17; + + // Support for IPv4 Unicast Add Path Capability. + // default = False + optional bool ipv4_unicast_add_path = 18; + + // Support for the IPv6 Multicast VPN address family. + // default = False + optional bool ipv6_multicast_vpn = 19; + + // Support for the IPv6 MPLS L3VPN address family. + // default = False + optional bool ipv6_mpls_vpn = 20; + + // Support for IPv6 MDT address family messages. + // default = False + optional bool ipv6_mdt = 21; + + // Support for the IPv6 Multicast VPN address family. + // default = False + optional bool ipv6_multicast_mpls_vpn = 22; + + // Support for propagation of IPv6 unicast flow specification rules. + // default = False + optional bool ipv6_unicast_flow_spec = 23; + + // Support for IPv6 SRTE policy. + // default = False + optional bool ipv6_sr_te_policy = 24; + + // Support for IPv6 Unicast Add Path Capability. + // default = False + optional bool ipv6_unicast_add_path = 25; +} + +// Status: under-review +// Configuration for controlling storage of BGP learned information recieved from the +// peer. +message BgpLearnedInformationFilter { + + // If enabled, will store the information related to Unicast IPv4 Prefixes recieved + // from the peer. + // default = False + optional bool unicast_ipv4_prefix = 1; + + // If enabled, will store the information related to Unicast IPv6 Prefixes recieved + // from the peer. + // default = False + optional bool unicast_ipv6_prefix = 2; +} + +// Emulated BGPv4 route range. +message BgpV4RouteRange { + + // A list of group of IPv4 route addresses. + repeated V4RouteAddress addresses = 1; + + message NextHopMode { + enum Enum { + unspecified = 0; + local_ip = 1; + manual = 2; + } + } + // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the + // NextHop in the MP REACH NLRI can be one of the following: + // Local IP: Automatically fills the Nexthop with the Local IP of the BGP + // peer. + // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + optional NextHopMode.Enum next_hop_mode = 2; + + message NextHopAddressType { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + } + } + // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. + // default = NextHopAddressType.Enum.ipv4 + optional NextHopAddressType.Enum next_hop_address_type = 3; + + // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // default = 0.0.0.0 + optional string next_hop_ipv4_address = 4; + + // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv6. + // default = ::0 + optional string next_hop_ipv6_address = 5; + + // Description missing in models + optional BgpRouteAdvanced advanced = 6; + + // Optional community settings. + repeated BgpCommunity communities = 7; + + // Description missing in models + optional BgpAsPath as_path = 8; + + // Description missing in models + optional BgpAddPath add_path = 9; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 10; +} + +// The BGP Additional Paths feature is a BGP extension that allows the advertisement +// of multiple paths for the same prefix without the new paths implicitly replacing +// any previous paths. +message BgpAddPath { + + // The id of the additional path. + // default = 1 + optional int32 path_id = 1; +} + +// Emulated BGPv6 route range. +message BgpV6RouteRange { + + // A list of group of IPv6 route addresses. + repeated V6RouteAddress addresses = 1; + + message NextHopMode { + enum Enum { + unspecified = 0; + local_ip = 1; + manual = 2; + } + } + // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the + // NextHop in the MP REACH NLRI can be one of the following: + // Local IP: Automatically fills the Nexthop with the Local IP of the BGP + // peer. + // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + optional NextHopMode.Enum next_hop_mode = 2; + + message NextHopAddressType { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + } + } + // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. + // default = NextHopAddressType.Enum.ipv6 + optional NextHopAddressType.Enum next_hop_address_type = 3; + + // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // default = 0.0.0.0 + optional string next_hop_ipv4_address = 4; + + // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv6. + // default = ::0 + optional string next_hop_ipv6_address = 5; + + // Description missing in models + optional BgpRouteAdvanced advanced = 6; + + // Optional community settings. + repeated BgpCommunity communities = 7; + + // Description missing in models + optional BgpAsPath as_path = 8; + + // Description missing in models + optional BgpAddPath add_path = 9; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 10; +} + +// Configuration for BGP Segment Routing Traffic Engineering(SRTE) +// policy. +// +message BgpSrteV4Policy { + + // 4-octet value uniquely identifying the policy in the context of (color, endpoint) + // tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) + // both for multiple candidate paths of the same SR Policy as well as candidate paths + // of different SR Policies (i.e. with different segment list) with the same Color + // and Endpoint but meant for different head-ends. + // default = 1 + optional int64 distinguisher = 1; + + // Policy color is used to match the color of the destination prefixes to steer traffic + // into the SR Policy. + // default = 100 + optional int64 color = 2; + + // Specifies a single node or a set of nodes (e.g. an anycast address). It is selected + // on the basis of the SR Policy type (AFI). + // required = true + string ipv4_endpoint = 3; + + message NextHopMode { + enum Enum { + unspecified = 0; + local_ip = 1; + manual = 2; + } + } + // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically + // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop + // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary + // IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + optional NextHopMode.Enum next_hop_mode = 4; + + message NextHopAddressType { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + } + } + // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. + // default = NextHopAddressType.Enum.ipv4 + optional NextHopAddressType.Enum next_hop_address_type = 5; + + // The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' + // and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, + // Nexthop Encoding capability extended_next_hop_encoding should be enabled. + optional string next_hop_ipv4_address = 6; + + // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' + // and the Nexthop type 'next_hop_address_type' is IPv6. + optional string next_hop_ipv6_address = 7; + + // Description missing in models + optional BgpRouteAdvanced advanced = 8; + + // Description missing in models + optional BgpAddPath add_path = 9; + + // Description missing in models + optional BgpAsPath as_path = 10; + + // Optional Community settings. + repeated BgpCommunity communities = 11; + + // Optional Extended Community settings. + repeated BgpExtCommunity ext_communities = 12; + + // List Tunnel Encapsulation Attributes. + repeated BgpSrteV4TunnelTlv tunnel_tlvs = 13; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 14; + + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + optional bool active = 15; +} + +// Configuration for BGP SRTE Tunnel TLV. +message BgpSrteV4TunnelTlv { + + // Description missing in models + optional BgpSrteRemoteEndpointSubTlv remote_endpoint_sub_tlv = 1; + + // Description missing in models + optional BgpSrteColorSubTlv color_sub_tlv = 2; + + // Description missing in models + optional BgpSrteBindingSubTlv binding_sub_tlv = 3; + + // Description missing in models + optional BgpSrtePreferenceSubTlv preference_sub_tlv = 4; + + // Description missing in models + optional BgpSrtePolicyPrioritySubTlv policy_priority_sub_tlv = 5; + + // Description missing in models + optional BgpSrtePolicyNameSubTlv policy_name_sub_tlv = 6; + + // Description missing in models + optional BgpSrteExplicitNullLabelPolicySubTlv explicit_null_label_policy_sub_tlv = 7; + + // Description missing in models + repeated BgpSrteSegmentList segment_lists = 8; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 9; + + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + optional bool active = 10; +} + +// Configuration for the BGP remote endpoint sub TLV. +message BgpSrteRemoteEndpointSubTlv { + + // Autonomous system (AS) number + // default = 0 + optional int64 as_number = 1; + + message AddressFamily { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + } + } + // Determines the address type + // default = AddressFamily.Enum.ipv4 + optional AddressFamily.Enum address_family = 2; + + // The IPv4 address of the Remote Endpoint. + // default = 0.0.0.0 + optional string ipv4_address = 3; + + // The IPv6 address of the Remote Endpoint. + // default = ::0 + optional string ipv6_address = 4; +} + +// Configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used +// as a way to color the corresponding Tunnel TLV. The Value field of the sub-TLV is +// eight octets long and consists of a Color Extended Community. First two octets of +// its Value field are 0x030b as type and subtype of extended community. Remaining +// six octets are are exposed to configure. +message BgpSrteColorSubTlv { + + // Six octet values. Example: 000000000064 for color value 100. + optional string color = 1; +} + +// Configuration for the binding SID sub-TLV. This is used to signal the binding SID +// related information of the SR Policy candidate path. +message BgpSrteBindingSubTlv { + + message BindingSidType { + enum Enum { + unspecified = 0; + no_binding = 1; + four_octet_sid = 2; + ipv6_sid = 3; + } + } + // Type of the binding SID. Supported types are No Binding SID or Four Octets Sid or + // IPv6 SID. + // default = BindingSidType.Enum.no_binding + optional BindingSidType.Enum binding_sid_type = 1; + + // Binding SID is encoded in 4 octets. + optional int32 four_octet_sid = 2; + + // IPv6 SID value. + optional string ipv6_sid = 3; + + // S-Flag encodes the Specified-BSID-only behavior. + // default = False + optional bool s_flag = 4; + + // I-Flag encodes the Drop Upon Invalid behavior. + // default = False + optional bool i_flag = 5; +} + +// Configuration for BGP preference sub TLV of the SR Policy candidate path. +message BgpSrtePreferenceSubTlv { + + // The preference value of the SR Policy candidate path. + // default = 0 + optional int64 preference = 1; +} + +// Configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the +// order in which the SR policies are re-computed upon topological change. +message BgpSrtePolicyPrioritySubTlv { + + // One-octet Priority value. + optional int32 policy_priority = 1; +} + +// Configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach +// a symbolic name to the SR Policy candidate path. +message BgpSrtePolicyNameSubTlv { + + // Symbolic name for the policy that should be a string of printable ASCII characters, + // without a NULL terminator. + optional string policy_name = 1; +} + +// Configuration for BGP explicit null label policy sub TLV settings. +message BgpSrteExplicitNullLabelPolicySubTlv { + + message ExplicitNullLabelPolicy { + enum Enum { + unspecified = 0; + reserved_enlp = 1; + push_ipv4_enlp = 2; + push_ipv6_enlp = 3; + push_ipv4_ipv6_enlp = 4; + do_not_push_enlp = 5; + } + } + // The value of the explicit null label policy + // default = ExplicitNullLabelPolicy.Enum.do_not_push_enlp + optional ExplicitNullLabelPolicy.Enum explicit_null_label_policy = 1; +} + +// Status: under-review +// Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV +// encodes a single explicit path towards the Endpoint. +message BgpSrteSegmentList { + + // The Weight associated with a given path and the sub-TLV is optional. + // default = 0 + optional int64 weight = 1; + + // Description missing in models + repeated BgpSrteSegment segments = 2; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 3; + + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + optional bool active = 4; +} + +// Status: under-review +// A Segment sub-TLV describes a single segment in a segment list i.e., a single element +// of the explicit path. The Segment sub-TLVs are optional. +message BgpSrteSegment { + + message SegmentType { + enum Enum { + unspecified = 0; + type_a = 1; + type_b = 2; + type_c = 3; + type_d = 4; + type_e = 5; + type_f = 6; + type_g = 7; + type_h = 8; + type_i = 9; + type_j = 10; + type_k = 11; + } + } + // Specify one of the segment type. + // https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13 + // Type A: SID only, in the form of MPLS Label. + // Type B: SID only, in the form of IPv6 Address. + // Type C: IPv4 Node Address with optional SID. + // Type D: IPv6 Node Address with optional SID for SR MPLS. + // Type E: IPv4 Address and index with optional SID. + // Type F: IPv4 Local and Remote addresses with optional SID. + // Type G: IPv6 Address and index for local and remote pair with optional + // SID for SR MPLS. + // Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. + // Type I: IPv6 Node Address with optional SID for SRv6. + // Type J: IPv6 Address and index for local and remote pair with optional + // SID for SRv6. + // Type K: IPv6 Local and Remote addresses for SRv6. + // required = true + SegmentType.Enum segment_type = 1; + + // Description missing in models + optional BgpSrteSegmentATypeSubTlv type_a = 2; + + // Description missing in models + optional BgpSrteSegmentBTypeSubTlv type_b = 3; + + // Description missing in models + optional BgpSrteSegmentCTypeSubTlv type_c = 4; + + // Description missing in models + optional BgpSrteSegmentDTypeSubTlv type_d = 5; + + // Description missing in models + optional BgpSrteSegmentETypeSubTlv type_e = 6; + + // Description missing in models + optional BgpSrteSegmentFTypeSubTlv type_f = 7; + + // Description missing in models + optional BgpSrteSegmentGTypeSubTlv type_g = 8; + + // Description missing in models + optional BgpSrteSegmentHTypeSubTlv type_h = 9; + + // Description missing in models + optional BgpSrteSegmentITypeSubTlv type_i = 10; + + // Description missing in models + optional BgpSrteSegmentJTypeSubTlv type_j = 11; + + // Description missing in models + optional BgpSrteSegmentKTypeSubTlv type_k = 12; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 13; + + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + optional bool active = 14; +} + +// Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. +message BgpSrteSrMplsSid { + + // Label value in [0, 2^20 -1]. + optional int32 label = 1; + + // Traffic class in bits. + optional int32 tc = 2; + + // Bottom-of-Stack bit. + optional bool s_bit = 3; + + // Time To Live. + optional int32 ttl = 4; +} + +// Configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation +// of lengths for Locator Block, Locator Node, Function, and Argument MUST be less +// than or equal to 128. +message BgpSrteSRv6SIDEndpointBehaviorAndStructure { + + // SRv6 SID Locator Block length in bits. + // default = 0 + optional int32 lb_length = 1; + + // SRv6 SID Locator Node length in bits. + // default = 0 + optional int32 ln_length = 2; + + // SRv6 SID Function length in bits. + // default = 0 + optional int32 func_length = 3; + + // SRv6 SID Arguments length in bits. + // default = 0 + optional int32 arg_length = 4; +} + +// Type A: SID only, in the form of MPLS Label. +message BgpSrteSegmentATypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // Label value in [0, 2^20 -1]. + optional int32 label = 2; + + // Traffic class in bits. + optional int32 tc = 3; + + // Bottom-of-Stack bit. + optional bool s_bit = 4; + + // Time To Live. + optional int32 ttl = 5; +} + +// Type B: SID only, in the form of IPv6 address. +message BgpSrteSegmentBTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // SRv6 SID. + // required = true + string srv6_sid = 2; + + // Optional SRv6 Endpoint Behavior and SID Structure. + optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 3; +} + +// Status: under-review +// Type C: IPv4 Node Address with optional SID. +message BgpSrteSegmentCTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // SR Algorithm identifier when A-Flag in on. + // default = 0 + optional int32 sr_algorithm = 2; + + // IPv4 address representing a node. + // required = true + string ipv4_node_address = 3; + + // Optional SR-MPLS SID. + optional BgpSrteSrMplsSid sr_mpls_sid = 4; +} + +// Type D: IPv6 Node Address with optional SID for SR MPLS. +message BgpSrteSegmentDTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // specifying SR Algorithm when when A-Flag as defined in above flags. + // default = 0 + optional int32 sr_algorithm = 2; + + // IPv6 address representing a node. + // required = true + string ipv6_node_address = 3; + + // Optional SR-MPLS SID. + optional BgpSrteSrMplsSid sr_mpls_sid = 4; +} + +// Type E: IPv4 Address and Local Interface ID with optional SID +message BgpSrteSegmentETypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + optional int32 local_interface_id = 2; + + // IPv4 address representing a node. + // required = true + string ipv4_node_address = 3; + + // Optional SR-MPLS SID. + optional BgpSrteSrMplsSid sr_mpls_sid = 4; +} + +// Type F: IPv4 Local and Remote addresses with optional SID. +message BgpSrteSegmentFTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // Local IPv4 Address. + // required = true + string local_ipv4_address = 2; + + // Remote IPv4 Address. + // required = true + string remote_ipv4_address = 3; + + // Optional SR-MPLS SID. + optional BgpSrteSrMplsSid sr_mpls_sid = 4; +} + +// Type G: IPv6 Address, Interface ID for local and remote pair with optional SID for +// SR MPLS. +message BgpSrteSegmentGTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + optional int32 local_interface_id = 2; + + // IPv6 address representing a node. + // required = true + string local_ipv6_node_address = 3; + + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + optional int32 remote_interface_id = 4; + + // IPv6 address representing a node. + // required = true + string remote_ipv6_node_address = 5; + + // Optional SR-MPLS SID. + optional BgpSrteSrMplsSid sr_mpls_sid = 6; +} + +// Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. +message BgpSrteSegmentHTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // Local IPv6 Address. + // required = true + string local_ipv6_address = 2; + + // Remote IPv6 Address. + // required = true + string remote_ipv6_address = 3; + + // Optional SR-MPLS SID. + optional BgpSrteSrMplsSid sr_mpls_sid = 4; +} + +// Type I: IPv6 Node Address with optional SRv6 SID. +message BgpSrteSegmentITypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // IPv6 address representing a node. + // required = true + string ipv6_node_address = 2; + + // Optional SRv6 SID. + optional string srv6_sid = 3; + + // Optional SRv6 Endpoint Behavior and SID Structure. + optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 4; +} + +// Type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional +// SID. +message BgpSrteSegmentJTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // SR Algorithm identifier when A-Flag in on. + // default = 0 + optional int32 sr_algorithm = 2; + + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + optional int32 local_interface_id = 3; + + // IPv6 address representing a node. + // required = true + string local_ipv6_node_address = 4; + + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + optional int32 remote_interface_id = 5; + + // IPv6 address representing a node. + // required = true + string remote_ipv6_node_address = 6; + + // Optional SRv6 SID. + optional string srv6_sid = 7; + + // Optional SRv6 Endpoint Behavior and SID Structure. + optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 8; +} + +// Type K: IPv6 Local and Remote addresses for SRv6 with optional SID. +message BgpSrteSegmentKTypeSubTlv { + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + optional string flags = 1; + + // SR Algorithm identifier when A-Flag in on. + // default = 0 + optional int32 sr_algorithm = 2; + + // IPv6 address representing a node. + // required = true + string local_ipv6_address = 3; + + // IPv6 address representing a node. + // required = true + string remote_ipv6_address = 4; + + // Optional SRv6 SID. + optional string srv6_sid = 5; + + // Optional SRv6 Endpoint Behavior and SID Structure. + optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 6; +} + +// Configuration for BGP Segment Routing Traffic Engineering policy. +// +message BgpSrteV6Policy { + + // Identifies the policy in the context of (color and endpoint) tuple. It is used by + // the SR Policy originator to make unique multiple occurrences of the same SR Policy. + // default = 1 + optional int64 distinguisher = 1; + + // Identifies the policy. It is used to match the color of the destination prefixes + // to steer traffic into the SR Policy. + // default = 100 + optional int64 color = 2; + + // Specifies a single node or a set of nodes (e.g., an anycast address). It is selected + // on the basis of the SR Policy type (AFI). + // required = true + string ipv6_endpoint = 3; + + message NextHopMode { + enum Enum { + unspecified = 0; + local_ip = 1; + manual = 2; + } + } + // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically + // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop + // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary + // IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + optional NextHopMode.Enum next_hop_mode = 4; + + message NextHopAddressType { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + } + } + // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. + // default = NextHopAddressType.Enum.ipv6 + optional NextHopAddressType.Enum next_hop_address_type = 5; + + // The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop + // type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding + // capability extended_next_hop_encoding should be enabled. + // default = 0.0.0.0 + optional string next_hop_ipv4_address = 6; + + // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' + // and the Nexthop type 'next_hop_address_type' is IPv6. + // default = ::0 + optional string next_hop_ipv6_address = 7; + + // Description missing in models + optional BgpRouteAdvanced advanced = 8; + + // Description missing in models + optional BgpAddPath add_path = 9; + + // Description missing in models + optional BgpAsPath as_path = 10; + + // Optional community settings. + repeated BgpCommunity communities = 11; + + // Optional Extended Community settings. + repeated BgpExtCommunity extcommunities = 12; + + // List of optional tunnel TLV settings. + repeated BgpSrteV6TunnelTlv tunnel_tlvs = 13; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 14; + + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + optional bool active = 15; +} + +// Configuration for BGP SRTE Tunnel TLV. +message BgpSrteV6TunnelTlv { + + // Description missing in models + optional BgpSrteRemoteEndpointSubTlv remote_endpoint_sub_tlv = 1; + + // Description missing in models + optional BgpSrteColorSubTlv color_sub_tlv = 2; + + // Description missing in models + optional BgpSrteBindingSubTlv binding_sub_tlv = 3; + + // Description missing in models + optional BgpSrtePreferenceSubTlv preference_sub_tlv = 4; + + // Description missing in models + optional BgpSrtePolicyPrioritySubTlv policy_priority_sub_tlv = 5; + + // Description missing in models + optional BgpSrtePolicyNameSubTlv policy_name_sub_tlv = 6; + + // Description missing in models + optional BgpSrteExplicitNullLabelPolicySubTlv explicit_null_label_policy_sub_tlv = 7; + + // Description missing in models + repeated BgpSrteSegmentList segment_lists = 8; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 9; + + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + optional bool active = 10; +} + +// Status: under-review +// Configuration for BGPv6 peer settings and routes. +message BgpV6Peer { + + // IPv6 address of the BGP peer for the session + // required = true + string peer_address = 1; + + // Description missing in models + optional BgpV6SegmentRouting segment_routing = 2; + + // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments + // (ES) Per BGP Peer for IPv6 Address Family Identifier (AFI). + // + // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . + // Each EVI contains a list of Broadcast Domains. + // Each Broadcast Domain contains a list of MAC/IP Ranges. + // + // is responsible for advertising Ethernet + // Auto-discovery Route Per EVI (Type 1). + // + // is responsible for advertising Ethernet Auto-discovery Route + // Per Ethernet Segment (Type 1). + // + // is responsible for advertising + // MAC/IP Advertisement Route (Type 2). + // + // is responsible for advertising Inclusive + // Multicast Ethernet Tag Route (Type 3). + // + // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). + repeated BgpV6EthernetSegment evpn_ethernet_segments = 3; + + message AsType { + enum Enum { + unspecified = 0; + ibgp = 1; + ebgp = 2; + } + } + // The type of BGP autonomous system. External BGP is used for BGP links between two + // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous + // system (ibgp). BGP property defaults are aligned with this object defined as an internal + // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to + // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' + // attribute in 'as_path' field in any Route Range should be changed from default value + // 'do_not_include_local_as' to any other value. + // required = true + AsType.Enum as_type = 4; + + // Autonomous System Number (AS number or ASN) + // required = true + int32 as_number = 5; + + message AsNumberWidth { + enum Enum { + unspecified = 0; + two = 1; + four = 2; + } + } + // The width in bytes of the as_number values. Any as_number values that exceeds the + // width MUST result in an error. + // default = AsNumberWidth.Enum.four + optional AsNumberWidth.Enum as_number_width = 6; + + // Description missing in models + optional BgpAdvanced advanced = 7; + + // Description missing in models + optional BgpCapability capability = 8; + + // Description missing in models + optional BgpLearnedInformationFilter learned_information_filter = 9; + + // Emulated BGPv4 route ranges. + repeated BgpV4RouteRange v4_routes = 10; + + // Emulated BGPv6 route ranges. + repeated BgpV6RouteRange v6_routes = 11; + + // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier + // (AFI). + repeated BgpSrteV4Policy v4_srte_policies = 12; + + // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier + // (AFI). + repeated BgpSrteV6Policy v6_srte_policies = 13; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 14; +} + +// Configuration for emulated BGPv6 peers and routes on a single IPv6 interface. +message BgpV6Interface { + + // The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this + // list of BGP peers. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Device.Ipv6Loopback/properties/name + // + // required = true + string ipv6_name = 1; + + // This contains the list of BGPv6 peers configured on this interface. + repeated BgpV6Peer peers = 2; +} + +// Status: under-review +// Configuration for BGPv6 segment routing settings. +message BgpV6SegmentRouting { + + // TBD + // default = False + optional bool ingress_supports_vpn = 1; + + // TBD + // default = False + optional bool reduced_encapsulation = 2; + + // TBD + // default = False + optional bool copy_time_to_live = 3; + + // TBD + // default = 0 + optional int32 time_to_live = 4; + + // TBD + // default = 0 + optional int32 max_sids_per_srh = 5; + + // TBD + // default = False + optional bool auto_generate_segment_left_value = 6; + + // TBD + // default = 0 + optional int32 segment_left_value = 7; + + // TBD + // default = False + optional bool advertise_sr_te_policy = 8; +} + +// Configuration for BGP Ethernet Segment ranges. Advertises following routes - +// +// Type 4 - Ethernet Segment Route +message BgpV6EthernetSegment { + + // Designated Forwarder (DF) election configuration. + optional BgpEthernetSegmentDfElection df_election = 1; + + // This contains the list of EVIs. + repeated BgpV6EvpnEvis evis = 2; + + // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero + // ESI is '10000000000000000000' . + // default = 00000000000000000000 + optional string esi = 3; + + message ActiveMode { + enum Enum { + unspecified = 0; + single_active = 1; + all_active = 2; + } + } + // Single Active or All Active mode Redundancy mode selection for Multi-home. + // default = ActiveMode.Enum.all_active + optional ActiveMode.Enum active_mode = 4; + + // The label value to be advertised as ESI Label in ESI Label Extended Community. This + // is included in Ethernet Auto-discovery per ES Routes advertised by a router. + // default = 0 + optional int32 esi_label = 5; + + // Description missing in models + optional BgpRouteAdvanced advanced = 6; + + // Optional community settings. + repeated BgpCommunity communities = 7; + + // Optional Extended Community settings. + repeated BgpExtCommunity ext_communities = 8; + + // Optional AS PATH settings. + optional BgpAsPath as_path = 9; +} + +// This contains a list of different flavors of EVPN. +// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. +// +// Need to instantiate correct type of EVPN instance as per requirement. +message BgpV6EvpnEvis { + + message Choice { + enum Enum { + unspecified = 0; + evi_vxlan = 1; + } + } + // Description missing in models + // default = Choice.Enum.evi_vxlan + optional Choice.Enum choice = 1; + + // EVPN VXLAN instance to be configured per Ethernet Segment. + optional BgpV6EviVxlan evi_vxlan = 2; +} + +// Configuration for BGP EVPN EVI. Advertises following routes - +// +// Type 3 - Inclusive Multicast Ethernet Tag Route +// +// Type 1 - Ethernet Auto-discovery Route (Per EVI) +// +// Type 1 - Ethernet Auto-discovery Route (Per ES) +message BgpV6EviVxlan { + + // This contains the list of Broadcast Domains to be configured per EVI. + repeated BgpV6EviVxlanBroadcastDomain broadcast_domains = 1; + + message ReplicationType { + enum Enum { + unspecified = 0; + ingress_replication = 1; + } + } + // This model only supports Ingress Replication + // default = ReplicationType.Enum.ingress_replication + optional ReplicationType.Enum replication_type = 2; + + // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel + // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. + // default = 16 + optional int32 pmsi_label = 3; + + // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet + // Auto-discovery Route per + // default = 0 + optional int32 ad_label = 4; + + // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying + // an EVI. Example - for the as_2octet 60005:100. + optional BgpRouteDistinguisher route_distinguisher = 5; + + // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with + // this EVI. + repeated BgpRouteTarget route_target_export = 6; + + // List of L2VNI import targets associated with this EVI. + repeated BgpRouteTarget route_target_import = 7; + + // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. + repeated BgpRouteTarget l3_route_target_export = 8; + + // List of L3VNI Import Route Targets. + repeated BgpRouteTarget l3_route_target_import = 9; + + // Description missing in models + optional BgpRouteAdvanced advanced = 10; + + // Optional community settings. + repeated BgpCommunity communities = 11; + + // Optional Extended Community settings. + repeated BgpExtCommunity ext_communities = 12; + + // Optional AS PATH settings. + optional BgpAsPath as_path = 13; +} + +// Configuration for Broadcast Domains per EVI. +message BgpV6EviVxlanBroadcastDomain { + + // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. + // + // + // Advertises following route - + // Type 2 - MAC/IP Advertisement Route. + repeated BgpCMacIpRange cmac_ip_range = 1; + + // The Ethernet Tag ID of the Broadcast Domain. + // default = 0 + optional int64 ethernet_tag_id = 2; + + // VLAN-Aware service to be enabled or disabled. + // default = False + optional bool vlan_aware_service = 3; +} + +// Description missing in models +message DeviceVxlan { + + // IPv4 VXLAN Tunnels + repeated VxlanV4Tunnel v4_tunnels = 1; + + // IPv6 VXLAN Tunnels + repeated VxlanV6Tunnel v6_tunnels = 2; +} + +// Configuration and operational state parameters relating to IPv4 VXLAN tunnel end-point +// interface. +message VxlanV4Tunnel { + + // Determines the source interface. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv4Loopback/properties/name + // + // required = true + string source_interface = 1; + + // Description missing in models + optional VxlanV4TunnelDestinationIPMode destination_ip_mode = 2; + + // VXLAN Network Identifier (VNI) to distinguish network instances on the wire + // required = true + int32 vni = 3; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 4; +} + +// Configuration and operational state parameters relating to IPv6 VXLAN tunnel end-point +// interface. +message VxlanV6Tunnel { + + // Determines the source interface. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Device.Ipv6Loopback/properties/name + // + // required = true + string source_interface = 1; + + // Description missing in models + optional VxlanV6TunnelDestinationIPMode destination_ip_mode = 2; + + // VXLAN Network Identifier (VNI) to distinguish network instances on the wire + // required = true + int32 vni = 3; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 4; +} + +// Communication mode between the VTEPs, either unicast or multicast. +message VxlanV4TunnelDestinationIPMode { + + message Choice { + enum Enum { + unspecified = 0; + unicast = 1; + multicast = 2; + } + } + // unicast or multicast + // default = Choice.Enum.multicast + optional Choice.Enum choice = 1; + + // Description missing in models + optional VxlanV4TunnelDestinationIPModeUnicast unicast = 2; + + // Description missing in models + optional VxlanV4TunnelDestinationIPModeMulticast multicast = 3; +} + +// Communication mode between the VTEPs, either unicast or multicast. +message VxlanV6TunnelDestinationIPMode { + + message Choice { + enum Enum { + unspecified = 0; + unicast = 1; + multicast = 2; + } + } + // unicast or multicast + // default = Choice.Enum.multicast + optional Choice.Enum choice = 1; + + // Description missing in models + optional VxlanV6TunnelDestinationIPModeUnicast unicast = 2; + + // Description missing in models + optional VxlanV6TunnelDestinationIPModeMulticast multicast = 3; +} + +// Description missing in models +message VxlanV4TunnelDestinationIPModeUnicast { + + // List of VTEPs for member VNI(VXLAN Network Identifier) + repeated VxlanV4TunnelDestinationIPModeUnicastVtep vteps = 1; +} + +// Description missing in models +message VxlanV6TunnelDestinationIPModeUnicast { + + // List of VTEPs for member VNI(VXLAN Network Identifier) + repeated VxlanV6TunnelDestinationIPModeUnicastVtep vteps = 1; +} + +// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated +// MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request +// for another end-host IP address, its local VTEP intercepts the ARP request and checks +// for the ARP-resolved IP address in its ARP suppression cache table. If it finds +// a match, the local VTEP sends an ARP response on behalf of the remote end host. +message VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + + // Remote VM MAC address bound to Remote VM IPv4 address + optional string remote_vm_mac = 1; + + // Remote VM IPv4 address + optional string remote_vm_ipv4 = 2; +} + +// VTEP (VXLAN Tunnel End Point (VTEP)) parameters +message VxlanV4TunnelDestinationIPModeUnicastVtep { + + // Remote VXLAN Tunnel End Point address + optional string remote_vtep_address = 1; + + // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated + // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request + // for another end-host IP address, its local VTEP intercepts the ARP request and checks + // for the ARP-resolved IP address in its ARP suppression cache table. If it finds + // a match, the local VTEP sends an ARP response on behalf of the remote end host. + repeated VxlanTunnelDestinationIPModeUnicastArpSuppressionCache arp_suppression_cache = 2; +} + +// VTEP (VXLAN Tunnel End Point (VTEP)) parameters +message VxlanV6TunnelDestinationIPModeUnicastVtep { + + // Remote VXLAN Tunnel End Point address + optional string remote_vtep_address = 1; + + // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated + // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request + // for another end-host IP address, its local VTEP intercepts the ARP request and checks + // for the ARP-resolved IP address in its ARP suppression cache table. If it finds + // a match, the local VTEP sends an ARP response on behalf of the remote end host. + repeated VxlanTunnelDestinationIPModeUnicastArpSuppressionCache arp_suppression_cache = 2; +} + +// Multicast Group address for member VNI(VXLAN Network Identifier) +message VxlanV4TunnelDestinationIPModeMulticast { + + // IPv4 Multicast address + optional string address = 1; +} + +// Multicast Group address for member VNI(VXLAN Network Identifier) +message VxlanV6TunnelDestinationIPModeMulticast { + + // IPv6 Multicast address + optional string address = 1; +} + +// TCP configs. +message DeviceTcp { + + // IPv4/v6 interface name + // + // x-constraint: + // - /components/schemas/Device.Ipv4Base/properties/name + // - /components/schemas/Device.Ipv6Base/properties/name + // + // required = true + string ip_interface_name = 1; + + // The TCP keep alive timer + // default = 7200 + optional int32 keep_alive_time = 2; + + // The TCP receive buffer size + // default = 4096 + optional int32 receive_buffer_size = 3; + + // The TCP transmit buffer size + // default = 4096 + optional int32 transmit_buffer_size = 4; + + // TCP source port no + // default = 1024 + optional int32 source_port = 5; + + // TCP destination port no + // default = 1024 + optional int32 destination_port = 6; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + optional string name = 7; +} + +// HTTP configs. +message DeviceHttp { + + // TCP interface name + // + // x-constraint: + // - /components/schemas/Device.Tcp/properties/name + // + optional string tcp_name = 1; + + // Enable SSL for HTTP + // default = False + optional bool enable_ssl = 2; + + // HTTP Version + // default = 1 + optional int32 http_version = 3; + + // Enable cookie support for HTTP + // default = False + optional bool enable_cookie_support = 4; + + // Max HTTP sessions + // default = 1 + optional int32 max_sessions = 5; + + // Max HTTP streams + // default = 1 + optional int32 max_streams = 6; + + // Command timeout timer in seconds + // default = 600 + optional int32 command_timeout = 7; + + // URL stats count + // default = 10 + optional int32 url_stats_count = 8; + + // Enable cookie support for per connection + // default = False + optional bool enable_per_conn_cookie_support = 9; + + // Description missing in models + optional HttpMethod method = 10; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + optional string name = 11; +} + +// Description missing in models +message HttpMethod { + + message Choice { + enum Enum { + unspecified = 0; + get = 1; + post = 2; + } + } + // Description missing in models + // default = Choice.Enum.get + optional Choice.Enum choice = 1; + + // Description missing in models + optional MethodGet get = 2; + + // Description missing in models + optional MethodPost post = 3; +} + +// A GET operation of HTTP +message MethodGet { + + // Server name/IP address + // required = true + string destination = 1; + + // The page name to perform get opertaion. + // required = true + string page = 2; +} + +// A POST operation of HTTP +message MethodPost { + + // The Server name/IP address + // required = true + string destination = 1; + + // The page name to perform post opertaion. + // required = true + string page = 2; +} + +// A high level data plane traffic flow. +message Flow { + + // The transmit and receive endpoints. + // required = true + FlowTxRx tx_rx = 1; + + // The header is a list of traffic protocol headers. + // + // The order of traffic protocol headers assigned to the list is the + // order they will appear on the wire. + // + // In the case of an empty list the keyword/value of minItems: 1 + // indicates that an implementation MUST provide at least one + // Flow.Header object. + // + // The default value for the Flow.Header choice property is ethernet + // which will result in an implementation by default providing at least + // one ethernet packet header. + repeated FlowHeader packet = 2; + + // The size of the packets. + optional FlowSize size = 3; + + // The transmit rate of the packets. + optional FlowRate rate = 4; + + // The transmit duration of the packets. + optional FlowDuration duration = 5; + + // Flow metrics. + optional FlowMetrics metrics = 6; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 7; +} + +// A container for different types of transmit and receive +// endpoint containers. +message FlowTxRx { + + message Choice { + enum Enum { + unspecified = 0; + port = 1; + device = 2; + } + } + // The type of transmit and receive container used by the flow. + // default = Choice.Enum.port + optional Choice.Enum choice = 1; + + // Description missing in models + optional FlowPort port = 2; + + // Description missing in models + optional FlowRouter device = 3; +} + +// A container for a transmit port and 0..n intended receive ports. +// When assigning this container to a flow the flows's +// packet headers will not be populated with any address resolution +// information such as source and/or destination addresses. +// For example Flow.Ethernet dst mac address values will be defaulted to 0. +// For full control over the Flow.properties.packet header contents use this +// container. +message FlowPort { + + // The unique name of a port that is the transmit port. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Lag/properties/name + // + // required = true + string tx_name = 1; + + // The unique name of a port that is the intended receive port. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Lag/properties/name + // + optional string rx_name = 2; +} + +// A container for declaring a map of 1..n transmit devices to 1..n receive devices. +// This allows for a single flow to have different tx to rx device flows such as a +// single one to one map or a many to many map. +message FlowRouter { + + message Mode { + enum Enum { + unspecified = 0; + mesh = 1; + one_to_one = 2; + } + } + // Determines the mapping of tx_names to rx_names. + // + // The mesh mode creates traffic between each value in tx_names to + // every value in rx_names except in the case where the individual + // tx_names value is equal to rx_names value which will be ignored. + // Identical values in tx_names or rx_names MUST raise an error. + // + // The one_to_one mode creates traffic between each value pair in + // of tx_names and rx_names by index. + // The length of tx_names and rx_name MUST be the same. + // Identical values in tx_names or rx_names MUST raise an error. + // default = Mode.Enum.mesh + optional Mode.Enum mode = 1; + + // TBD + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Bgp.CMacIpRange/properties/name + // + repeated string tx_names = 2; + + // TBD + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Bgp.CMacIpRange/properties/name + // + repeated string rx_names = 3; +} + +// Configuration for all traffic packet headers +message FlowHeader { + + message Choice { + enum Enum { + unspecified = 0; + custom = 1; + ethernet = 2; + vlan = 3; + vxlan = 4; + ipv4 = 5; + ipv6 = 6; + pfcpause = 7; + ethernetpause = 8; + tcp = 9; + udp = 10; + gre = 11; + gtpv1 = 12; + gtpv2 = 13; + arp = 14; + icmp = 15; + icmpv6 = 16; + ppp = 17; + igmpv1 = 18; + mpls = 19; + } + } + // The available types of flow headers. If one is not provided the + // default ethernet packet header MUST be provided. + // default = Choice.Enum.ethernet + optional Choice.Enum choice = 1; + + // Description missing in models + optional FlowCustom custom = 2; + + // Description missing in models + optional FlowEthernet ethernet = 3; + + // Description missing in models + optional FlowVlan vlan = 4; + + // Description missing in models + optional FlowVxlan vxlan = 5; + + // Description missing in models + optional FlowIpv4 ipv4 = 6; + + // Description missing in models + optional FlowIpv6 ipv6 = 7; + + // Description missing in models + optional FlowPfcPause pfcpause = 8; + + // Description missing in models + optional FlowEthernetPause ethernetpause = 9; + + // Description missing in models + optional FlowTcp tcp = 10; + + // Description missing in models + optional FlowUdp udp = 11; + + // Description missing in models + optional FlowGre gre = 12; + + // Description missing in models + optional FlowGtpv1 gtpv1 = 13; + + // Description missing in models + optional FlowGtpv2 gtpv2 = 14; + + // Description missing in models + optional FlowArp arp = 15; + + // Description missing in models + optional FlowIcmp icmp = 16; + + // Description missing in models + optional FlowIcmpv6 icmpv6 = 17; + + // Description missing in models + optional FlowPpp ppp = 18; + + // Description missing in models + optional FlowIgmpv1 igmpv1 = 19; + + // Description missing in models + optional FlowMpls mpls = 20; +} + +// Custom packet header +message FlowCustom { + + // A custom packet header defined as a string of hex bytes. The string MUST contain + // sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be + // discarded. This packet header can be used in multiple places in the packet. + // required = true + string bytes = 1; +} + +// Ethernet packet header +message FlowEthernet { + + // Description missing in models + optional PatternFlowEthernetDst dst = 1; + + // Description missing in models + optional PatternFlowEthernetSrc src = 2; + + // Description missing in models + optional PatternFlowEthernetEtherType ether_type = 3; + + // Description missing in models + optional PatternFlowEthernetPfcQueue pfc_queue = 4; +} + +// VLAN packet header +message FlowVlan { + + // Description missing in models + optional PatternFlowVlanPriority priority = 1; + + // Description missing in models + optional PatternFlowVlanCfi cfi = 2; + + // Description missing in models + optional PatternFlowVlanId id = 3; + + // Description missing in models + optional PatternFlowVlanTpid tpid = 4; +} + +// VXLAN packet header +message FlowVxlan { + + // Description missing in models + optional PatternFlowVxlanFlags flags = 1; + + // Description missing in models + optional PatternFlowVxlanReserved0 reserved0 = 2; + + // Description missing in models + optional PatternFlowVxlanVni vni = 3; + + // Description missing in models + optional PatternFlowVxlanReserved1 reserved1 = 4; +} + +// IPv4 packet header +message FlowIpv4 { + + // Description missing in models + optional PatternFlowIpv4Version version = 1; + + // Description missing in models + optional PatternFlowIpv4HeaderLength header_length = 2; + + // Description missing in models + optional FlowIpv4Priority priority = 3; + + // Description missing in models + optional PatternFlowIpv4TotalLength total_length = 4; + + // Description missing in models + optional PatternFlowIpv4Identification identification = 5; + + // Description missing in models + optional PatternFlowIpv4Reserved reserved = 6; + + // Description missing in models + optional PatternFlowIpv4DontFragment dont_fragment = 7; + + // Description missing in models + optional PatternFlowIpv4MoreFragments more_fragments = 8; + + // Description missing in models + optional PatternFlowIpv4FragmentOffset fragment_offset = 9; + + // Description missing in models + optional PatternFlowIpv4TimeToLive time_to_live = 10; + + // Description missing in models + optional PatternFlowIpv4Protocol protocol = 11; + + // Description missing in models + optional PatternFlowIpv4HeaderChecksum header_checksum = 12; + + // Description missing in models + optional PatternFlowIpv4Src src = 13; + + // Description missing in models + optional PatternFlowIpv4Dst dst = 14; +} + +// A container for ipv4 raw, tos, dscp ip priorities. +message FlowIpv4Priority { + + message Choice { + enum Enum { + unspecified = 0; + raw = 1; + tos = 2; + dscp = 3; + } + } + // Description missing in models + // default = Choice.Enum.dscp + optional Choice.Enum choice = 1; + + // Description missing in models + optional PatternFlowIpv4PriorityRaw raw = 2; + + // Description missing in models + optional FlowIpv4Tos tos = 3; + + // Description missing in models + optional FlowIpv4Dscp dscp = 4; +} + +// Differentiated services code point (DSCP) packet field. +message FlowIpv4Dscp { + + // Description missing in models + optional PatternFlowIpv4DscpPhb phb = 1; + + // Description missing in models + optional PatternFlowIpv4DscpEcn ecn = 2; +} + +// Type of service (TOS) packet field. +message FlowIpv4Tos { + + // Description missing in models + optional PatternFlowIpv4TosPrecedence precedence = 1; + + // Description missing in models + optional PatternFlowIpv4TosDelay delay = 2; + + // Description missing in models + optional PatternFlowIpv4TosThroughput throughput = 3; + + // Description missing in models + optional PatternFlowIpv4TosReliability reliability = 4; + + // Description missing in models + optional PatternFlowIpv4TosMonetary monetary = 5; + + // Description missing in models + optional PatternFlowIpv4TosUnused unused = 6; +} + +// IPv6 packet header +message FlowIpv6 { + + // Description missing in models + optional PatternFlowIpv6Version version = 1; + + // Description missing in models + optional PatternFlowIpv6TrafficClass traffic_class = 2; + + // Description missing in models + optional PatternFlowIpv6FlowLabel flow_label = 3; + + // Description missing in models + optional PatternFlowIpv6PayloadLength payload_length = 4; + + // Description missing in models + optional PatternFlowIpv6NextHeader next_header = 5; + + // Description missing in models + optional PatternFlowIpv6HopLimit hop_limit = 6; + + // Description missing in models + optional PatternFlowIpv6Src src = 7; + + // Description missing in models + optional PatternFlowIpv6Dst dst = 8; +} + +// IEEE 802.1Qbb PFC Pause packet header. +message FlowPfcPause { + + // Description missing in models + optional PatternFlowPfcPauseDst dst = 1; + + // Description missing in models + optional PatternFlowPfcPauseSrc src = 2; + + // Description missing in models + optional PatternFlowPfcPauseEtherType ether_type = 3; + + // Description missing in models + optional PatternFlowPfcPauseControlOpCode control_op_code = 4; + + // Description missing in models + optional PatternFlowPfcPauseClassEnableVector class_enable_vector = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass0 pause_class_0 = 6; + + // Description missing in models + optional PatternFlowPfcPausePauseClass1 pause_class_1 = 7; + + // Description missing in models + optional PatternFlowPfcPausePauseClass2 pause_class_2 = 8; + + // Description missing in models + optional PatternFlowPfcPausePauseClass3 pause_class_3 = 9; + + // Description missing in models + optional PatternFlowPfcPausePauseClass4 pause_class_4 = 10; + + // Description missing in models + optional PatternFlowPfcPausePauseClass5 pause_class_5 = 11; + + // Description missing in models + optional PatternFlowPfcPausePauseClass6 pause_class_6 = 12; + + // Description missing in models + optional PatternFlowPfcPausePauseClass7 pause_class_7 = 13; +} + +// IEEE 802.3x global ethernet pause packet header +message FlowEthernetPause { + + // Description missing in models + optional PatternFlowEthernetPauseDst dst = 1; + + // Description missing in models + optional PatternFlowEthernetPauseSrc src = 2; + + // Description missing in models + optional PatternFlowEthernetPauseEtherType ether_type = 3; + + // Description missing in models + optional PatternFlowEthernetPauseControlOpCode control_op_code = 4; + + // Description missing in models + optional PatternFlowEthernetPauseTime time = 5; +} + +// TCP packet header +message FlowTcp { + + // Description missing in models + optional PatternFlowTcpSrcPort src_port = 1; + + // Description missing in models + optional PatternFlowTcpDstPort dst_port = 2; + + // Description missing in models + optional PatternFlowTcpSeqNum seq_num = 3; + + // Description missing in models + optional PatternFlowTcpAckNum ack_num = 4; + + // Description missing in models + optional PatternFlowTcpDataOffset data_offset = 5; + + // Description missing in models + optional PatternFlowTcpEcnNs ecn_ns = 6; + + // Description missing in models + optional PatternFlowTcpEcnCwr ecn_cwr = 7; + + // Description missing in models + optional PatternFlowTcpEcnEcho ecn_echo = 8; + + // Description missing in models + optional PatternFlowTcpCtlUrg ctl_urg = 9; + + // Description missing in models + optional PatternFlowTcpCtlAck ctl_ack = 10; + + // Description missing in models + optional PatternFlowTcpCtlPsh ctl_psh = 11; + + // Description missing in models + optional PatternFlowTcpCtlRst ctl_rst = 12; + + // Description missing in models + optional PatternFlowTcpCtlSyn ctl_syn = 13; + + // Description missing in models + optional PatternFlowTcpCtlFin ctl_fin = 14; + + // Description missing in models + optional PatternFlowTcpWindow window = 15; +} + +// UDP packet header +message FlowUdp { + + // Description missing in models + optional PatternFlowUdpSrcPort src_port = 1; + + // Description missing in models + optional PatternFlowUdpDstPort dst_port = 2; + + // Description missing in models + optional PatternFlowUdpLength length = 3; + + // Description missing in models + optional PatternFlowUdpChecksum checksum = 4; +} + +// Standard GRE packet header (RFC2784) +message FlowGre { + + // Description missing in models + optional PatternFlowGreChecksumPresent checksum_present = 1; + + // Description missing in models + optional PatternFlowGreReserved0 reserved0 = 2; + + // Description missing in models + optional PatternFlowGreVersion version = 3; + + // Description missing in models + optional PatternFlowGreProtocol protocol = 4; + + // Description missing in models + optional PatternFlowGreChecksum checksum = 5; + + // Description missing in models + optional PatternFlowGreReserved1 reserved1 = 6; +} + +// GTPv1 packet header +message FlowGtpv1 { + + // Description missing in models + optional PatternFlowGtpv1Version version = 1; + + // Description missing in models + optional PatternFlowGtpv1ProtocolType protocol_type = 2; + + // Description missing in models + optional PatternFlowGtpv1Reserved reserved = 3; + + // Description missing in models + optional PatternFlowGtpv1EFlag e_flag = 4; + + // Description missing in models + optional PatternFlowGtpv1SFlag s_flag = 5; + + // Description missing in models + optional PatternFlowGtpv1PnFlag pn_flag = 6; + + // Description missing in models + optional PatternFlowGtpv1MessageType message_type = 7; + + // Description missing in models + optional PatternFlowGtpv1MessageLength message_length = 8; + + // Description missing in models + optional PatternFlowGtpv1Teid teid = 9; + + // Description missing in models + optional PatternFlowGtpv1SquenceNumber squence_number = 10; + + // Description missing in models + optional PatternFlowGtpv1NPduNumber n_pdu_number = 11; + + // Description missing in models + optional PatternFlowGtpv1NextExtensionHeaderType next_extension_header_type = 12; + + // A list of optional extension headers. + repeated FlowGtpExtension extension_headers = 13; +} + +// Description missing in models +message FlowGtpExtension { + + // Description missing in models + optional PatternFlowGtpExtensionExtensionLength extension_length = 1; + + // Description missing in models + optional PatternFlowGtpExtensionContents contents = 2; + + // Description missing in models + optional PatternFlowGtpExtensionNextExtensionHeader next_extension_header = 3; +} + +// GTPv2 packet header +message FlowGtpv2 { + + // Description missing in models + optional PatternFlowGtpv2Version version = 1; + + // Description missing in models + optional PatternFlowGtpv2PiggybackingFlag piggybacking_flag = 2; + + // Description missing in models + optional PatternFlowGtpv2TeidFlag teid_flag = 3; + + // Description missing in models + optional PatternFlowGtpv2Spare1 spare1 = 4; + + // Description missing in models + optional PatternFlowGtpv2MessageType message_type = 5; + + // Description missing in models + optional PatternFlowGtpv2MessageLength message_length = 6; + + // Description missing in models + optional PatternFlowGtpv2Teid teid = 7; + + // Description missing in models + optional PatternFlowGtpv2SequenceNumber sequence_number = 8; + + // Description missing in models + optional PatternFlowGtpv2Spare2 spare2 = 9; +} + +// ARP packet header +message FlowArp { + + // Description missing in models + optional PatternFlowArpHardwareType hardware_type = 1; + + // Description missing in models + optional PatternFlowArpProtocolType protocol_type = 2; + + // Description missing in models + optional PatternFlowArpHardwareLength hardware_length = 3; + + // Description missing in models + optional PatternFlowArpProtocolLength protocol_length = 4; + + // Description missing in models + optional PatternFlowArpOperation operation = 5; + + // Description missing in models + optional PatternFlowArpSenderHardwareAddr sender_hardware_addr = 6; + + // Description missing in models + optional PatternFlowArpSenderProtocolAddr sender_protocol_addr = 7; + + // Description missing in models + optional PatternFlowArpTargetHardwareAddr target_hardware_addr = 8; + + // Description missing in models + optional PatternFlowArpTargetProtocolAddr target_protocol_addr = 9; +} + +// ICMP packet header +message FlowIcmp { + + message Choice { + enum Enum { + unspecified = 0; + echo = 1; + } + } + // Description missing in models + // default = Choice.Enum.echo + optional Choice.Enum choice = 1; + + // Description missing in models + optional FlowIcmpEcho echo = 2; +} + +// Packet Header for ICMP echo request +message FlowIcmpEcho { + + // Description missing in models + optional PatternFlowIcmpEchoType type = 1; + + // Description missing in models + optional PatternFlowIcmpEchoCode code = 2; + + // Description missing in models + optional PatternFlowIcmpEchoChecksum checksum = 3; + + // Description missing in models + optional PatternFlowIcmpEchoIdentifier identifier = 4; + + // Description missing in models + optional PatternFlowIcmpEchoSequenceNumber sequence_number = 5; +} + +// ICMPv6 packet header +message FlowIcmpv6 { + + message Choice { + enum Enum { + unspecified = 0; + echo = 1; + } + } + // Description missing in models + // default = Choice.Enum.echo + optional Choice.Enum choice = 1; + + // Description missing in models + optional FlowIcmpv6Echo echo = 2; +} + +// Packet Header for ICMPv6 Echo +message FlowIcmpv6Echo { + + // Description missing in models + optional PatternFlowIcmpv6EchoType type = 1; + + // Description missing in models + optional PatternFlowIcmpv6EchoCode code = 2; + + // Description missing in models + optional PatternFlowIcmpv6EchoIdentifier identifier = 3; + + // Description missing in models + optional PatternFlowIcmpv6EchoSequenceNumber sequence_number = 4; + + // Description missing in models + optional PatternFlowIcmpv6EchoChecksum checksum = 5; +} + +// PPP packet header +message FlowPpp { + + // Description missing in models + optional PatternFlowPppAddress address = 1; + + // Description missing in models + optional PatternFlowPppControl control = 2; + + // Description missing in models + optional PatternFlowPppProtocolType protocol_type = 3; +} + +// IGMPv1 packet header +message FlowIgmpv1 { + + // Description missing in models + optional PatternFlowIgmpv1Version version = 1; + + // Description missing in models + optional PatternFlowIgmpv1Type type = 2; + + // Description missing in models + optional PatternFlowIgmpv1Unused unused = 3; + + // Description missing in models + optional PatternFlowIgmpv1Checksum checksum = 4; + + // Description missing in models + optional PatternFlowIgmpv1GroupAddress group_address = 5; +} + +// MPLS packet header; When configuring multiple such headers, the count shall not exceed +// 20. +message FlowMpls { + + // Description missing in models + optional PatternFlowMplsLabel label = 1; + + // Description missing in models + optional PatternFlowMplsTrafficClass traffic_class = 2; + + // Description missing in models + optional PatternFlowMplsBottomOfStack bottom_of_stack = 3; + + // Description missing in models + optional PatternFlowMplsTimeToLive time_to_live = 4; +} + +// The frame size which overrides the total length of the packet +message FlowSize { + + message Choice { + enum Enum { + unspecified = 0; + fixed = 1; + increment = 2; + random = 3; + } + } + // Description missing in models + // default = Choice.Enum.fixed + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 64 + optional int32 fixed = 2; + + // Description missing in models + optional FlowSizeIncrement increment = 3; + + // Description missing in models + optional FlowSizeRandom random = 4; +} + +// Frame size that increments from a starting size to +// an ending size incrementing by a step size. +message FlowSizeIncrement { + + // Starting frame size in bytes + // default = 64 + optional int32 start = 1; + + // Ending frame size in bytes + // default = 1518 + optional int32 end = 2; + + // Step frame size in bytes + // default = 1 + optional int32 step = 3; +} + +// Random frame size from a min value to a max value. +message FlowSizeRandom { + + // Description missing in models + // default = 64 + optional int32 min = 1; + + // Description missing in models + // default = 1518 + optional int32 max = 2; +} + +// The rate of packet transmission +message FlowRate { + + message Choice { + enum Enum { + unspecified = 0; + pps = 1; + bps = 2; + kbps = 3; + mbps = 4; + gbps = 5; + percentage = 6; + } + } + // The available types of flow rate. + // default = Choice.Enum.pps + optional Choice.Enum choice = 1; + + // Packets per second. + // default = 1000 + optional int64 pps = 2; + + // Bits per second. + // default = 1000000000 + optional int64 bps = 3; + + // Kilobits per second. + // default = 1000000 + optional int64 kbps = 4; + + // Megabits per second. + // default = 1000 + optional int64 mbps = 5; + + // Gigabits per second. + // default = 1 + optional int32 gbps = 6; + + // The percentage of a port location's available bandwidth. + // default = 100 + optional float percentage = 7; +} + +// A container for different transmit durations. +message FlowDuration { + + message Choice { + enum Enum { + unspecified = 0; + fixed_packets = 1; + fixed_seconds = 2; + burst = 3; + continuous = 4; + } + } + // A choice used to determine the type of duration. + // default = Choice.Enum.continuous + optional Choice.Enum choice = 1; + + // Description missing in models + optional FlowFixedPackets fixed_packets = 2; + + // Description missing in models + optional FlowFixedSeconds fixed_seconds = 3; + + // Description missing in models + optional FlowBurst burst = 4; + + // Description missing in models + optional FlowContinuous continuous = 5; +} + +// Transmit will be continuous and will not stop automatically. +message FlowContinuous { + + // The minimum gap between packets expressed as bytes. + // default = 12 + optional int32 gap = 1; + + // Description missing in models + optional FlowDelay delay = 2; +} + +// The optional container to specify the delay before starting +// transmission of packets. +message FlowDelay { + + message Choice { + enum Enum { + unspecified = 0; + bytes = 1; + nanoseconds = 2; + microseconds = 3; + } + } + // Description missing in models + // default = Choice.Enum.bytes + optional Choice.Enum choice = 1; + + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + optional float bytes = 2; + + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + optional float nanoseconds = 3; + + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + optional float microseconds = 4; +} + +// Transmit a fixed number of packets after which the flow will stop. +message FlowFixedPackets { + + // Stop transmit of the flow after this number of packets. + // default = 1 + optional int32 packets = 1; + + // The minimum gap between packets expressed as bytes. + // default = 12 + optional int32 gap = 2; + + // Description missing in models + optional FlowDelay delay = 3; +} + +// Transmit for a fixed number of seconds after which the flow will stop. +message FlowFixedSeconds { + + // Stop transmit of the flow after this number of seconds. + // default = 1 + optional float seconds = 1; + + // The minimum gap between packets expressed as bytes. + // default = 12 + optional int32 gap = 2; + + // Description missing in models + optional FlowDelay delay = 3; +} + +// Transmits continuous or fixed burst of packets. +// For continuous burst of packets, it will not automatically stop. +// For fixed burst of packets, it will stop after transmitting fixed number of bursts. +// +message FlowBurst { + + // The number of packet bursts transmitted per flow. + // A value of 0 implies continuous burst of packets. + // default = 0 + optional int32 bursts = 1; + + // The number of packets transmitted per burst. + // default = 1 + optional int32 packets = 2; + + // The minimum gap between packets expressed as bytes. + // default = 12 + optional int32 gap = 3; + + // Description missing in models + optional FlowDurationInterBurstGap inter_burst_gap = 4; +} + +// The optional container for specifying a gap between bursts. +message FlowDurationInterBurstGap { + + message Choice { + enum Enum { + unspecified = 0; + bytes = 1; + nanoseconds = 2; + microseconds = 3; + } + } + // The type of inter burst gap units. + // default = Choice.Enum.bytes + optional Choice.Enum choice = 1; + + // The amount of time between bursts expressed in bytes. + // A value of 0 indicates no gap between bursts. + // default = 12 + optional double bytes = 2; + + // The amount of time between bursts expressed in nanoseconds. + // A value of 0 indicates no gap between bursts. + // default = 96 + optional double nanoseconds = 3; + + // The amount of time between bursts expressed in microseconds. + // A value of 0 indicates no gap between bursts. + // default = 0.096 + optional double microseconds = 4; +} + +// The optional container for configuring flow metrics. +message FlowMetrics { + + // Enables flow metrics. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; + + // Enables additional flow metric loss calculation. + // default = False + optional bool loss = 2; + + // Enables additional flow metric first and last timestamps. + // default = False + optional bool timestamps = 3; + + // Latency metrics. + optional FlowLatencyMetrics latency = 4; +} + +// The optional container for per flow latency metric configuration. +message FlowLatencyMetrics { + + // True to enable latency metrics using timestamps. + // + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; + + message Mode { + enum Enum { + unspecified = 0; + store_forward = 1; + cut_through = 2; + } + } + // Select the type of latency measurement. The different types of + // latency measurements are: + // + // + // store_forward: + // The time interval starting when the last bit of the frame leaves the + // sending port and ending when the first bit of the frame is seen on + // the receiving port (LIFO). This is based on the RFC 1242 standard. + // + // + // cut_through: + // The time interval starting when the first bit of the frame leaves + // the sending port and ending when the first bit of the frame is seen + // on the receiving port (FIFO). This is based on the RFC 1242 + // standard. + // default = Mode.Enum.store_forward + optional Mode.Enum mode = 2; +} + +// The optional container for event configuration. +message Event { + + // True to enable all events. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; + + // Description missing in models + optional EventLink link = 2; + + // Description missing in models + optional EventRxRateThreshold rx_rate_threshold = 3; + + // Description missing in models + optional EventRouteAdvertiseWithdraw route_advertise_withdraw = 4; +} + +// The optional container for rx rate threshold event configuration. +message EventRxRateThreshold { + + // True to enable the rx_rate_threshold event. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; + + // True to enable notifications when the rx rate of a flow passes above + // or below the threshold value. + // default = 95 + optional float threshold = 2; +} + +// The optional container for link up/down event configuration. +message EventLink { + + // True to enable notifications when a link up/down event occurs. + // default = False + optional bool enable = 1; +} + +// The optional container for route advertise/withdraw event configuration. +message EventRouteAdvertiseWithdraw { + + // True to enable notifications when a route advertise/withdraw + // event occurs. + // default = False + optional bool enable = 1; +} + +// Description missing in models +message EventRequest { + + message Type { + enum Enum { + unspecified = 0; + link_down = 1; + link_up = 2; + route_withdraw = 3; + route_advertise = 4; + flow_rx_rate_above_threshold = 5; + flow_rx_rate_below_threshold = 6; + } + } + // Constrain the events being returned by specifying event types. + // If the list is empty then all event types will be returned. + repeated Type.Enum type = 1; + + // Constrain the events being returned by specifying event sources. + // If the list is empty then all event sources will be returned. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Bgp.V4RouteRange/name + // - /components/schemas/Bgp.V6RouteRange/name + // + repeated string source = 2; +} + +// A container that describes what events a system should provide and +// optionally where to publish them. +message EventSubscription { + + // Description missing in models + optional EventRequest events = 1; + + // Indicates where a client wants to be notified of the events set in + // the events property. + // If this property is empty or null then no event notifications will + // be forwarded. + optional string callbackurl = 2; +} + +// A list of errors that may have occurred while executing the request. +message ResponseError { + + // A list of any system specific errors that have occurred while + // executing the request. + repeated string errors = 1; +} + +// A list of warnings that have occurred while executing the request. +message ResponseWarning { + + // A list of any system specific warnings that have occurred while + // executing the request. + repeated string warnings = 1; +} + +// Port link state. +message LinkState { + + // The names of port objects to. An empty or null list will control all port objects. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; + + message State { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The link state. + // required = true + State.Enum state = 2; +} + +// Flow transmit state. +message TransmitState { + + // The names of flows to which the transmit state will be applied to. If the list of + // flow_names is empty or null the state will be applied to all configured flows. + // If the list is not empty any flow that is not included in the list of flow_names + // MUST be ignored and not included in the state change. + // + // x-constraint: + // - /components/schemas/Flow/properties/name + // + repeated string flow_names = 1; + + message State { + enum Enum { + unspecified = 0; + start = 1; + stop = 2; + pause = 3; + resume = 4; + } + } + // The transmit state. + // If the value of the state property is 'start' then all flows defined by the 'flow_names' + // property will be started and the metric counters MUST be cleared prior to starting + // the flow(s). + // If the value of the state property is 'stop' then all flows defined by the 'flow_names' + // property will be stopped and the metric counters MUST NOT be cleared. + // If the value of the state property is 'pause' then all flows defined by the 'flow_names' + // property will be paused and the metric counters MUST NOT be cleared. + // If the value of the state property is 'resume' then any paused flows defined by the + // 'flow_names' property will start transmit at the point at which they were paused. + // Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) + // MUST NOT have their metric counters cleared. + // required = true + State.Enum state = 2; +} + +// Control port capture state +message CaptureState { + + // The names of ports to which the capture state will be applied to. If the list of + // port_names is empty or null the state will be applied to all configured ports. + // If the list is not empty any port that is not included in the list of port_names + // MUST be ignored and not included in the state change. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; + + message State { + enum Enum { + unspecified = 0; + start = 1; + stop = 2; + } + } + // The capture state. + // required = true + State.Enum state = 2; +} + +// A container of flows with associated properties to be updated without affecting the +// flows current transmit state. +message FlowsUpdate { + + message PropertyNames { + enum Enum { + unspecified = 0; + rate = 1; + size = 2; + } + } + // Flow properties to be updated without affecting the transmit state. + repeated PropertyNames.Enum property_names = 1; + + // The list of configured flows for which given property will be updated. + repeated Flow flows = 2; +} + +// Sets the device route state +message RouteState { + + // The names of device route objects to control. If no names are specified then all + // route objects that match the x-constraint will be affected. + // + // x-constraint: + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Isis.V4RouteRange/properties/name + // - /components/schemas/Isis.V6RouteRange/properties/name + // + repeated string names = 1; + + message State { + enum Enum { + unspecified = 0; + withdraw = 1; + advertise = 2; + } + } + // Route specific states + // required = true + State.Enum state = 2; +} + +// Ping request details +message PingRequest { + + // Array of ping requests + repeated Ping endpoints = 1; +} + +// Sets all configured protocols to `start` or `stop` state. +message ProtocolState { + + message State { + enum Enum { + unspecified = 0; + start = 1; + stop = 2; + } + } + // Protocol specific states + // required = true + State.Enum state = 1; +} + +// Sets attributes for the requested state/actions to be performed on device(s) +message DeviceState { + + message Choice { + enum Enum { + unspecified = 0; + lacp_member_state = 1; + } + } + // Description missing in models + optional Choice.Enum choice = 1; + + // Description missing in models + optional LacpMemberState lacp_member_state = 2; +} + +// Description missing in models +message Ping { + + message Choice { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + } + } + // IPv4 or IPv6 ping. + // default = Choice.Enum.ipv4 + optional Choice.Enum choice = 1; + + // Description missing in models + optional PingIpv4 ipv4 = 2; + + // Description missing in models + optional PingIpv6 ipv6 = 3; +} + +// Description missing in models +message PingIpv4 { + + // A base IPv4 interface + // + // x-constraint: + // - /components/schemas/Device.Ipv4Base/properties/name + // + optional string src_name = 1; + + // IPv4 address to ping + optional string dst_ip = 2; +} + +// Description missing in models +message PingIpv6 { + + // A base IPv6 interface + // + // x-constraint: + // - /components/schemas/Device.Ipv6Base/properties/name + // + optional string src_name = 1; + + // IPv6 addresses to ping. + optional string dst_ip = 2; +} + +// A container for ping responses. +message PingResponse { + + // Description missing in models + repeated Response responses = 1; +} + +// Description missing in models +message Response { + + // The name of the source IPv4 or IPv6 interface from which ping was sent. + // + // x-constraint: + // - /components/schemas/Device.Ipv4Base/properties/name + // - /components/schemas/Device.Ipv6Base/properties/name + // + optional string src_name = 1; + + // Destination address. + optional string dst_ip = 2; + + message Result { + enum Enum { + unspecified = 0; + success = 1; + failure = 2; + } + } + // Result of the ping request. + // default = Result.Enum.failure + optional Result.Enum result = 3; +} + +// Set LACP state for specified LAG Member Port(s). +message LacpMemberState { + + // The names of LAG members (ports) for which the state has to be applied. An empty + // or null list will control all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string lag_member_port_names = 1; + + message State { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The LACP Member admin state. 'up' will start transmission of LACPDUs on selected + // member ports. 'down' will send a LACPDU with 'sync' flag unset and then stop transmission + // of LACPDUs on selected member ports. + // required = true + State.Enum state = 2; +} + +// Request to traffic generator for metrics of choice +message MetricsRequest { + + message Choice { + enum Enum { + unspecified = 0; + port = 1; + flow = 2; + bgpv4 = 3; + bgpv6 = 4; + isis = 5; + lag = 6; + lacp_lag_member = 7; + } + } + // Description missing in models + // default = Choice.Enum.port + optional Choice.Enum choice = 1; + + // Description missing in models + optional PortMetricsRequest port = 2; + + // Description missing in models + optional FlowMetricsRequest flow = 3; + + // Description missing in models + optional Bgpv4MetricsRequest bgpv4 = 4; + + // Description missing in models + optional Bgpv6MetricsRequest bgpv6 = 5; + + // Description missing in models + optional IsisMetricsRequest isis = 6; + + // Description missing in models + optional LagMetricsRequest lag = 7; + + // Description missing in models + optional LacpLagMemberMetricsRequest lacp_lag_member = 8; +} + +// Response containing chosen traffic generator metrics +message MetricsResponse { + + message Choice { + enum Enum { + unspecified = 0; + flow_metrics = 1; + port_metrics = 2; + bgpv4_metrics = 3; + bgpv6_metrics = 4; + isis_metrics = 5; + lag_metrics = 6; + lacp_lag_member_metrics = 7; + } + } + // Description missing in models + // default = Choice.Enum.port_metrics + optional Choice.Enum choice = 1; + + // Description missing in models + repeated PortMetric port_metrics = 2; + + // Description missing in models + repeated FlowMetric flow_metrics = 3; + + // Description missing in models + repeated Bgpv4Metric bgpv4_metrics = 4; + + // Description missing in models + repeated Bgpv6Metric bgpv6_metrics = 5; + + // Description missing in models + repeated IsisMetric isis_metrics = 6; + + // Description missing in models + repeated LagMetric lag_metrics = 7; + + // Description missing in models + repeated LacpLagMemberMetric lacp_lag_member_metrics = 8; +} + +// The port result request to the traffic generator +message PortMetricsRequest { + + // The names of objects to return results for. An empty list will return all port row + // results. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + transmit = 1; + location = 2; + link = 3; + capture = 4; + frames_tx = 5; + frames_rx = 6; + bytes_tx = 7; + bytes_rx = 8; + frames_tx_rate = 9; + frames_rx_rate = 10; + bytes_tx_rate = 11; + bytes_rx_rate = 12; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of the port cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// Description missing in models +message PortMetric { + + // The name of a configured port + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + optional string name = 1; + + // The state of the connection to the test port location. The format should be the configured + // port location along with any custom connection state message. + optional string location = 2; + + message Link { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The state of the test port link The string can be up, down or a custom error message. + optional Link.Enum link = 3; + + message Capture { + enum Enum { + unspecified = 0; + started = 1; + stopped = 2; + } + } + // The state of the test port capture infrastructure. The string can be started, stopped + // or a custom error message. + optional Capture.Enum capture = 4; + + // The current total number of frames transmitted + optional int64 frames_tx = 5; + + // The current total number of valid frames received + optional int64 frames_rx = 6; + + // The current total number of bytes transmitted + optional int64 bytes_tx = 7; + + // The current total number of valid bytes received + optional int64 bytes_rx = 8; + + // The current rate of frames transmitted + optional float frames_tx_rate = 9; + + // The current rate of valid frames received + optional float frames_rx_rate = 10; + + // The current rate of bytes transmitted + optional float bytes_tx_rate = 11; + + // The current rate of bytes received + optional float bytes_rx_rate = 12; +} + +// The container for a flow metric request. +message FlowMetricsRequest { + + // Flow metrics will be retrieved for these flow names. + // If no flow names are specified then all flows will be returned. + // + // x-constraint: + // - /components/schemas/Flow/properties/name + // + repeated string flow_names = 1; + + // A list of metric groups used to disaggregate flows. A metric group that does not + // exist for a flow group MUST return an error. + optional FlowMetricGroupRequest metric_groups = 2; + + message MetricNames { + enum Enum { + unspecified = 0; + transmit = 1; + frames_tx = 2; + frames_rx = 3; + bytes_tx = 4; + bytes_rx = 5; + frames_tx_rate = 6; + frames_rx_rate = 7; + } + } + // The list of metric names that the returned result set will contain. If the list is + // empty then all metrics will be returned. + repeated MetricNames.Enum metric_names = 3; +} + +// Description missing in models +message FlowMetricGroupRequest { + + message Choice { + enum Enum { + unspecified = 0; + ingress = 1; + egress = 2; + } + } + // The type of disaggregation to be applied to the flow metrics. + // default = Choice.Enum.ingress + optional Choice.Enum choice = 1; + + // Disaggregate the flow metrics by ingress packet header field names. + // If the items is empty then no disaggregation will be done. + // + // x-constraint: + // - /components/schemas/Flow/properties/packet/../metric_group + // + // default = [] + repeated string ingress = 2; + + // Disaggregate the flow metrics by egress packet header field names + // If the items is empty then no disaggregation will be done. + // + // x-constraint: + // - /components/schemas/Flow/properties/egress/../metric_group + // + // default = [] + repeated string egress = 3; +} + +// A container for flow metrics. +// The container is keyed by the name, port_tx, port_rx and metric_groups +// values. +message FlowMetric { + + // The name of the flow + optional string name = 1; + + // The name of the transmit port + optional string port_tx = 2; + + // The name of the receive port + optional string port_rx = 3; + + // Flow disaggregation groups. + repeated FlowMetricGroup metric_groups = 4; + + message Transmit { + enum Enum { + unspecified = 0; + started = 1; + stopped = 2; + paused = 3; + } + } + // The transmit state of the flow. + optional Transmit.Enum transmit = 5; + + // The current total number of frames transmitted + optional int64 frames_tx = 6; + + // The current total number of valid frames received + optional int64 frames_rx = 7; + + // The current total number of bytes transmitted + optional int64 bytes_tx = 8; + + // The current total number of bytes received + optional int64 bytes_rx = 9; + + // The current rate of frames transmitted + optional float frames_tx_rate = 10; + + // The current rate of valid frames received + optional float frames_rx_rate = 11; + + // The percentage of lost frames + optional float loss = 12; + + // Description missing in models + optional MetricTimestamp timestamps = 13; + + // Description missing in models + optional MetricLatency latency = 14; +} + +// Description missing in models +message FlowMetricGroup { + + // Name of packet field metric group + optional string name = 1; + + // Value of named packet field metric group + optional string value = 2; +} + +// The container for timestamp metrics. +// The container will be empty if the timestamp has not been configured for +// the flow. +message MetricTimestamp { + + // First timestamp in nanoseconds + optional double first_timestamp_ns = 1; + + // Last timestamp in nanoseconds + optional double last_timestamp_ns = 2; +} + +// The container for latency metrics. +// The min/max/avg values are dependent on the type of latency measurement +// mode that is configured. +// The container will be empty if the latency has not been configured for +// the flow. +message MetricLatency { + + // Minimum latency in nanoseconds + optional double minimum_ns = 1; + + // Maximum latency in nanoseconds + optional double maximum_ns = 2; + + // Average latency in nanoseconds + optional double average_ns = 3; +} + +// The request to retrieve BGPv4 per peer metrics/statistics. +message Bgpv4MetricsRequest { + + // The names of BGPv4 peers to return results for. An empty list will return results + // for all BGPv4 peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4peer/properties/name + // + repeated string peer_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + session_state = 1; + session_flap_count = 2; + routes_advertised = 3; + routes_received = 4; + route_withdraws_sent = 5; + route_withdraws_received = 6; + updates_sent = 7; + updates_received = 8; + opens_sent = 9; + opens_received = 10; + keepalives_sent = 11; + keepalives_received = 12; + notifications_sent = 13; + notifications_received = 14; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the BGPv4 peer cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// BGPv4 per peer statistics information. +message Bgpv4Metric { + + // The name of a configured BGPv4 peer. + optional string name = 1; + + message SessionState { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Session state as up or down. Up refers to an Established state and Down refers to + // any other state. + optional SessionState.Enum session_state = 2; + + // Number of times the session went from Up to Down state. + optional int32 session_flap_count = 3; + + // Number of routes advertised. + optional int32 routes_advertised = 4; + + // Number of routes received. + optional int32 routes_received = 5; + + // Number of route withdraws sent. + optional int32 route_withdraws_sent = 6; + + // Number of route withdraws received. + optional int32 route_withdraws_received = 7; + + // Number of Update messages sent. + optional int32 updates_sent = 8; + + // Number of Update messages received. + optional int32 updates_received = 9; + + // Number of Open messages sent. + optional int32 opens_sent = 10; + + // Number of Open messages received. + optional int32 opens_received = 11; + + // Number of Keepalive messages sent. + optional int32 keepalives_sent = 12; + + // Number of Keepalive messages received. + optional int32 keepalives_received = 13; + + // Number of Notification messages sent. + optional int32 notifications_sent = 14; + + // Number of Notification messages received. + optional int32 notifications_received = 15; +} + +// The request to retrieve BGPv6 per peer metrics/statistics. +message Bgpv6MetricsRequest { + + // The names of BGPv6 peers to return results for. An empty list will return results + // for all BGPv6 peers. + // + // x-constraint: + // - /components/schemas/Bgp.V6peer/properties/name + // + repeated string peer_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + session_state = 1; + session_flap_count = 2; + routes_advertised = 3; + routes_received = 4; + route_withdraws_sent = 5; + route_withdraws_received = 6; + updates_sent = 7; + updates_received = 8; + opens_sent = 9; + opens_received = 10; + keepalives_sent = 11; + keepalives_received = 12; + notifications_sent = 13; + notifications_received = 14; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the BGPv6 peer cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// BGPv6 per peer statistics information. +message Bgpv6Metric { + + // The name of a configured BGPv6 peer. + optional string name = 1; + + message SessionState { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Session state as up or down. Up refers to an Established state and Down refers to + // any other state. + optional SessionState.Enum session_state = 2; + + // Number of times the session went from Up to Down state. + optional int32 session_flap_count = 3; + + // Number of routes advertised. + optional int32 routes_advertised = 4; + + // Number of routes received. + optional int32 routes_received = 5; + + // Number of route withdraws sent. + optional int32 route_withdraws_sent = 6; + + // Number of route withdraws received. + optional int32 route_withdraws_received = 7; + + // Number of Update messages sent. + optional int32 updates_sent = 8; + + // Number of Update messages received. + optional int32 updates_received = 9; + + // Number of Open messages sent. + optional int32 opens_sent = 10; + + // Number of Open messages received. + optional int32 opens_received = 11; + + // Number of Keepalive messages sent. + optional int32 keepalives_sent = 12; + + // Number of Keepalive messages received. + optional int32 keepalives_received = 13; + + // Number of Notification messages sent. + optional int32 notifications_sent = 14; + + // Number of Notification messages received. + optional int32 notifications_received = 15; +} + +// The request to retrieve ISIS per Router metrics/statistics. +message IsisMetricsRequest { + + // The names of ISIS Routers to return results for. An empty list will return results + // for all ISIS router. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + // + repeated string router_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + l1_sessions_up = 1; + l1_session_flap = 2; + l1_database_size = 3; + l1_broadcast_hellos_sent = 4; + l1_broadcast_hellos_received = 5; + l1_point_to_point_hellos_sent = 6; + l1_point_to_point_hellos_received = 7; + l1_psnp_sent = 8; + l1_psnp_received = 9; + l1_csnp_sent = 10; + l1_csnp_received = 11; + l1_lsp_sent = 12; + l1_lsp_received = 13; + l2_sessions_up = 14; + l2_session_flap = 15; + l2_database_size = 16; + l2_broadcast_hellos_sent = 17; + l2_broadcast_hellos_received = 18; + l2_point_to_point_hellos_sent = 19; + l2_point_to_point_hellos_received = 20; + l2_psnp_sent = 21; + l2_psnp_received = 22; + l2_csnp_sent = 23; + l2_csnp_received = 24; + l2_lsp_sent = 25; + l2_lsp_received = 26; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the ISIS Router cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// ISIS per router statistics information. +message IsisMetric { + + // The name of a configured ISIS router. + optional string name = 1; + + // The number of Level 1 (L1) sessions that are fully up. + optional int32 l1_sessions_up = 2; + + // The number of Level 1 Sessions Flap. + optional int32 l1_session_flap = 3; + + // Number of Level 1 Hello messages sent. + optional int32 l1_broadcast_hellos_sent = 4; + + // Number of Level 1 Hello messages received. + optional int32 l1_broadcast_hellos_received = 5; + + // Number of Level 1 Point-to-Point(P2P) Hello messages sent. + optional int32 l1_point_to_point_hellos_sent = 6; + + // Number of Level 1 Point-to-Point(P2P) Hello messages received. + optional int32 l1_point_to_point_hellos_received = 7; + + // Number of Link State Updates (LSPs) in the Level 1 LSP Databases. + optional int32 l1_database_size = 8; + + // Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. + optional int32 l1_psnp_sent = 9; + + // Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. + optional int32 l1_psnp_received = 10; + + // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. + optional int32 l1_csnp_sent = 11; + + // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. + optional int32 l1_csnp_received = 12; + + // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. + optional int32 l1_lsp_sent = 13; + + // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. + optional int32 l1_lsp_received = 14; + + // The number of Level 2 (L2) sessions that are fully up. + optional int32 l2_sessions_up = 15; + + // The number of Level 2 Sessions Flap. + optional int32 l2_session_flap = 16; + + // Number of Level 2 Hello messages sent. + optional int32 l2_broadcast_hellos_sent = 17; + + // Number of Level 2 Hello messages received. + optional int32 l2_broadcast_hellos_received = 18; + + // Number of Level 2 Point-to-Point(P2P) Hello messages sent. + optional int32 l2_point_to_point_hellos_sent = 19; + + // Number of Level 2 Point-to-Point(P2P) Hello messages received. + optional int32 l2_point_to_point_hellos_received = 20; + + // Number of Link State Updates (LSPs) in the Level 2 LSP Databases. + optional int32 l2_database_size = 21; + + // Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. + optional int32 l2_psnp_sent = 22; + + // Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. + optional int32 l2_psnp_received = 23; + + // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. + optional int32 l2_csnp_sent = 24; + + // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. + optional int32 l2_csnp_received = 25; + + // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. + optional int32 l2_lsp_sent = 26; + + // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. + optional int32 l2_lsp_received = 27; +} + +// The request to retrieve per LAG metrics/statistics. +message LagMetricsRequest { + + // The names of LAGs to return results for. An empty list will return results for all + // LAGs. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + repeated string lag_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + oper_states = 1; + member_ports_up = 2; + frames_tx = 3; + frames_rx = 4; + bytes_tx = 5; + bytes_rx = 6; + frames_tx_rate = 7; + frames_rx_rate = 8; + bytes_tx_rate = 9; + bytes_rx_rate = 10; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of the LAG cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// Description missing in models +message LagMetric { + + // The name of a configured LAG + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + optional string name = 1; + + message OperStatus { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The current operational state of the LAG. The state can be up or down. State 'up' + // indicates member_ports_up >= min_links. + optional OperStatus.Enum oper_status = 2; + + // The number of LAG member ports up. + optional int32 member_ports_up = 3; + + // The current total number of frames transmitted. + optional int64 frames_tx = 4; + + // The current total number of valid frames received. + optional int64 frames_rx = 5; + + // The current total number of bytes transmitted. + optional int64 bytes_tx = 6; + + // The current total number of valid bytes received. + optional int64 bytes_rx = 7; + + // The current rate of frames transmitted. + optional float frames_tx_rate = 8; + + // The current rate of valid frames received. + optional float frames_rx_rate = 9; + + // The current rate of bytes transmitted. + optional float bytes_tx_rate = 10; + + // The current rate of bytes received. + optional float bytes_rx_rate = 11; +} + +// The request to retrieve LACP per LAG member metrics/statistics. +message LacpLagMemberMetricsRequest { + + // The names of LAG (ports group) for which LACP metrics to be returned. An empty list + // will return metrics for all LAGs. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + repeated string lag_names = 1; + + // The names of LAG members (ports) for which LACP metrics to be returned. An empty + // list will return metrics for all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string lag_member_port_names = 2; + + message ColumnNames { + enum Enum { + unspecified = 0; + lacp_in_pkts = 1; + lacp_out_pkts = 2; + lacp_rx_errors = 3; + activity = 4; + timeout = 5; + synchronization = 6; + aggregatable = 7; + collecting = 8; + distributing = 9; + system_id = 10; + oper_key = 11; + partner_id = 12; + partner_key = 13; + port_num = 14; + partner_port_num = 15; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of LAG and LAG member can not be + // excluded. + repeated ColumnNames.Enum column_names = 3; +} + +// LACP metrics (statistics) per LAG member. +message LacpLagMemberMetric { + + // The name of a LAG (ports group) configured with LACP. + optional string lag_name = 1; + + // The name of a LAG member (port) configured with LACP. + optional string lag_member_port_name = 2; + + // Number of LACPDUs received. + optional int64 lacp_in_pkts = 3; + + // Number of LACPDUs transmitted. + optional int64 lacp_out_pkts = 4; + + // Number of LACPDUs receive packet errors. + optional int64 lacp_rx_errors = 5; + + message Activity { + enum Enum { + unspecified = 0; + active = 1; + passive = 2; + } + } + // Indicates participant is active or passive. + optional Activity.Enum activity = 6; + + message Timeout { + enum Enum { + unspecified = 0; + short = 1; + long = 2; + } + } + // The timeout type (short or long) used by the participant. + optional Timeout.Enum timeout = 7; + + message Synchronization { + enum Enum { + unspecified = 0; + in_sync = 1; + out_sync = 2; + } + } + // Indicates whether the participant is in-sync or out-of-sync. + optional Synchronization.Enum synchronization = 8; + + // A true value indicates that the participant will allow the link to be used as part + // of the aggregate. A false value indicates the link should be used as an individual + // link. + optional bool aggregatable = 9; + + // If true, the participant is collecting incoming frames on the link, otherwise false. + optional bool collecting = 10; + + // When true, the participant is distributing outgoing frames; when false, distribution + // is disabled. + optional bool distributing = 11; + + // MAC address that defines the local system ID for the aggregate interface. + optional string system_id = 12; + + // Current operational value of the key for the aggregate interface. + optional int32 oper_key = 13; + + // MAC address representing the protocol partner's interface system ID. + optional string partner_id = 14; + + // Operational value of the protocol partner's key. + optional int32 partner_key = 15; + + // Port number of the local (actor) aggregation member. + optional int32 port_num = 16; + + // Port number of the partner (remote) port for this member port. + optional int32 partner_port_num = 17; +} + +// Request to traffic generator for states of choice +message StatesRequest { + + message Choice { + enum Enum { + unspecified = 0; + ipv4_neighbors = 1; + ipv6_neighbors = 2; + bgp_prefixes = 3; + isis_lsps = 4; + } + } + // Description missing in models + // default = Choice.Enum.ipv4_neighbors + optional Choice.Enum choice = 1; + + // Description missing in models + optional Neighborsv4StatesRequest ipv4_neighbors = 2; + + // Description missing in models + optional Neighborsv6StatesRequest ipv6_neighbors = 3; + + // Description missing in models + optional BgpPrefixStateRequest bgp_prefixes = 4; + + // Description missing in models + optional IsisLspsStateRequest isis_lsps = 5; +} + +// Response containing chosen traffic generator states +message StatesResponse { + + message Choice { + enum Enum { + unspecified = 0; + ipv4_neighbors = 1; + ipv6_neighbors = 2; + bgp_prefixes = 3; + isis_lsps = 4; + } + } + // Description missing in models + // default = Choice.Enum.ipv4_neighbors + optional Choice.Enum choice = 1; + + // Description missing in models + repeated Neighborsv4State ipv4_neighbors = 2; + + // Description missing in models + repeated Neighborsv6State ipv6_neighbors = 3; + + // Description missing in models + repeated BgpPrefixesState bgp_prefixes = 4; + + // Description missing in models + repeated IsisLspsState isis_lsps = 5; +} + +// The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). +message Neighborsv4StatesRequest { + + // The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will + // be retrieved. If no names are specified then the results will contain Neighbor state + // (ARP cache entries) for all available Ethernet interfaces. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + repeated string ethernet_names = 1; +} + +// IPv4 Neighbor state (ARP cache entry). +message Neighborsv4State { + + // The name of the Ethernet interface associated with the Neighbor state (ARP cache + // entry). + // required = true + string ethernet_name = 1; + + // The IPv4 address of the neighbor. + // required = true + string ipv4_address = 2; + + // The link-layer address (MAC) of the neighbor. + optional string link_layer_address = 3; +} + +// The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). +message Neighborsv6StatesRequest { + + // The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will + // be retrieved. If no names are specified then the results will contain Neighbor state + // (NDISC cache entries) for all available Ethernet interfaces. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + repeated string ethernet_names = 1; +} + +// IPv6 Neighbor state (NDISC cache entry). +message Neighborsv6State { + + // The name of the Ethernet interface associated with the Neighbor state (NDISC cache + // entry). + // required = true + string ethernet_name = 1; + + // The IPv6 address of the neighbor. + // required = true + string ipv6_address = 2; + + // The link-layer address (MAC) of the neighbor. + optional string link_layer_address = 3; +} + +// The request to retrieve BGP peer prefix information. +message BgpPrefixStateRequest { + + // The names of BGP peers for which prefix information will be retrieved. If no names + // are specified then the results will contain prefix information for all configured + // BGP peers. + // + // x-constraint: + // - /components/schemas/Bgp.v4Peer/properties/name + // - /components/schemas/Bgp.v6Peer/properties/name + // + repeated string bgp_peer_names = 1; + + message PrefixFilters { + enum Enum { + unspecified = 0; + ipv4_unicast = 1; + ipv6_unicast = 2; + } + } + // Specify which prefixes to return. If the list is empty or missing then all prefixes + // will be returned. + repeated PrefixFilters.Enum prefix_filters = 2; + + // The IPv4 unicast results can be filtered by specifying additional prefix search criteria. + // If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will + // be returned. + repeated BgpPrefixIpv4UnicastFilter ipv4_unicast_filters = 3; + + // The IPv6 unicast results can be filtered by specifying additional prefix search criteria. + // If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will + // be returned. + repeated BgpPrefixIpv6UnicastFilter ipv6_unicast_filters = 4; +} + +// Description missing in models +message BgpPrefixIpv4UnicastFilter { + + // The addresses to match. If the addresses property is missing or empty then all addresses + // will match. + repeated string addresses = 1; + + // The prefix length to match. If the prefix length is missing then all prefix lengths + // will match. + optional int32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + } + } + // The origin to match. If the origin is missing then all origins will match. + optional Origin.Enum origin = 3; + + // The path id to match. If the path id is missing then all path ids will match. + optional int32 path_id = 4; +} + +// Description missing in models +message BgpPrefixIpv6UnicastFilter { + + // The addresses to match. If the addresses property is missing or empty then all addresses + // will match. + repeated string addresses = 1; + + // The prefix length to match. If the prefix length is missing then all prefix lengths + // will match. + optional int32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + } + } + // The origin to match. If the origin is missing then all origins will match. + optional Origin.Enum origin = 3; + + // The path id to match. If the path id is missing then all path ids will match. + optional int32 path_id = 4; +} + +// BGP peer prefixes. +message BgpPrefixesState { + + // The name of a BGP peer. + optional string bgp_peer_name = 1; + + // Description missing in models + repeated BgpPrefixIpv4UnicastState ipv4_unicast_prefixes = 2; + + // Description missing in models + repeated BgpPrefixIpv6UnicastState ipv6_unicast_prefixes = 3; +} + +// IPv4 unicast prefix. +message BgpPrefixIpv4UnicastState { + + // An IPv4 unicast address + optional string ipv4_address = 1; + + // The length of the prefix. + optional int32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + } + } + // The origin of the prefix. + optional Origin.Enum origin = 3; + + // The path id. + optional int32 path_id = 4; + + // The IPv4 address of the egress interface. + optional string ipv4_next_hop = 5; + + // The IPv6 address of the egress interface. + optional string ipv6_next_hop = 6; + + // Optional community attributes. + repeated ResultBgpCommunity communities = 7; + + // Description missing in models + optional ResultBgpAsPath as_path = 8; +} + +// IPv6 unicast prefix. +message BgpPrefixIpv6UnicastState { + + // An IPv6 unicast address + optional string ipv6_address = 1; + + // The length of the prefix. + optional int32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + } + } + // The origin of the prefix. + optional Origin.Enum origin = 3; + + // The path id. + optional int32 path_id = 4; + + // The IPv4 address of the egress interface. + optional string ipv4_next_hop = 5; + + // The IPv6 address of the egress interface. + optional string ipv6_next_hop = 6; + + // Optional community attributes. + repeated ResultBgpCommunity communities = 7; + + // Description missing in models + optional ResultBgpAsPath as_path = 8; +} + +// BGP communities provide additional capability for tagging routes and for modifying +// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit +// number which is broken into 16-bit AS number and a 16-bit custom value. +message ResultBgpCommunity { + + message Type { + enum Enum { + unspecified = 0; + manual_as_number = 1; + no_export = 2; + no_advertised = 3; + no_export_subconfed = 4; + llgr_stale = 5; + no_llgr = 6; + } + } + // The type of community AS number. If community type is manual_as_number then as_number + // and as_custom will be available. + optional Type.Enum type = 1; + + // First two octets of 32 bit community AS number. + optional int32 as_number = 2; + + // Last two octets of the community value. + optional int32 as_custom = 3; +} + +// This attribute identifies the autonomous systems through which routing information +// carried in this UPDATE message has passed. +message ResultBgpAsPath { + + // AS Path segments present in the received AS Path attribute. + repeated ResultBgpAsPathSegment segments = 1; +} + +// Configuration for a single BGP AS path segment +message ResultBgpAsPathSegment { + + message Type { + enum Enum { + unspecified = 0; + as_seq = 1; + as_set = 2; + as_confed_seq = 3; + as_confed_set = 4; + } + } + // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting + // with the most recent ASN being added read from left to right. + // The other three AS_PATH types are used for Confederations - AS_SET is the type of + // AS_PATH attribute that summarizes routes using using the aggregate-address command, + // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives + // the list of ASNs in the path starting with the most recent ASN to be added reading + // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be + // sent in BGP Updates. + optional Type.Enum type = 1; + + // The AS numbers in this AS path segment. + repeated int64 as_numbers = 2; +} + +// The request to retrieve ISIS Link State PDU (LSP) information learned by the router. +message IsisLspsStateRequest { + + // The names of ISIS routers for which learned information is requested. An empty list + // will return results for all ISIS routers. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + // + repeated string isis_router_names = 1; +} + +// The result of ISIS LSP information that are retrieved. +message IsisLspsState { + + // The name of the ISIS Router. + optional string isis_router_name = 1; + + // One or more LSPs that are learned by this ISIS router. + repeated IsisLspState lsps = 2; +} + +// ISIS LSP. +message IsisLspState { + + // LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID + // of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent + // Pseudonode ID and LSP number respectively. A pseudonode is a logical representation + // of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN + // segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with + // the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. + // Then the sequence number is incremented by 1. + // required = true + string lsp_id = 1; + + message PduType { + enum Enum { + unspecified = 0; + level_1 = 1; + level_2 = 2; + } + } + // Link State PDU type. + optional PduType.Enum pdu_type = 2; + + // Remaining lifetime in seconds before LSP expires. + optional int64 remaining_lifetime = 3; + + // Sequence number of the LSP. + optional int64 sequence_number = 4; + + // Total length of the LSP. + optional int32 pdu_length = 5; + + // LSP Type-Block flags. + optional IsisLspFlags flags = 6; + + // IS Type - bits 1 and 2 indicate the type of Intermediate System. + // 1 - ( i.e. bit 1 set) Level 1 Intermediate system. + // 2 - Unused value. + // 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. + optional int32 is_type = 7; + + // It refers to Link State PDU State TLVs container. + optional IsisLspTlvs tlvs = 8; +} + +// This contains the list of TLVs present in one LSP. +message IsisLspTlvs { + + // Array of Hostname TLVs ( type 137) present in this LSP. + repeated IsisLspHostname hostname_tlvs = 1; + + // Array of IS-Reachability TLVs (type 2) present in this LSP. + repeated IsisLspIsReachabilityTlv is_reachability_tlvs = 2; + + // Array of Extended IS-Reachability TLVs (type 22) present in this LSP. + repeated IsisLspExtendedIsReachabilityTlv extended_is_reachability_tlvs = 3; + + // Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. + repeated IsisLspIpv4InternalReachabilityTlv ipv4_internal_reachability_tlvs = 4; + + // Array of IPv4 External Reachability TLVs (type 130) present in this LSP. + repeated IsisLspIpv4ExternalReachabilityTlv ipv4_external_reachability_tlvs = 5; + + // Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. + repeated IsisLspExtendedIpv4ReachabilityTlv extended_ipv4_reachability_tlvs = 6; + + // Array of IPv6 Reachability TLVs (type 236) present in this LSP. + repeated IsisLspIpv6ReachabilityTlv ipv6_reachability_tlvs = 7; +} + +// It contains Hostname for the TLV 137. +message IsisLspHostname { + + // Hostname for an ISIS router. + optional string hostname = 1; +} + +// LSP Type flags. +message IsisLspFlags { + + // When set, the originator supports partition repair. + optional bool partition_repair = 1; + + // When set, the originator is attached to another area using the referred metric. + optional bool attached_error = 2; + + // When set, the originator is attached to another + // area using the referred metric. + optional bool attached_expense = 3; + + // Delay Metric - when set, the originator is attached to another + // area using the referred metric. + optional bool attached_delay = 4; + + // Default Metric - when set, the originator is attached to another + // area using the referred metric. + optional bool attached_default = 5; + + // Overload bit - when set, the originator is overloaded, and must + // be avoided in path calculation. + optional bool overload = 6; +} + +// This container describes list of ISIS neighbors and attributes in IS-Reachability +// TLV (type 2). +message IsisLspIsReachabilityTlv { + + // This container describes Intermediate System (IS) neighbors. + repeated IsisLspneighbor neighbors = 1; +} + +// This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type +// 22). +message IsisLspExtendedIsReachabilityTlv { + + // This container describes IS neighbors. + repeated IsisLspneighbor neighbors = 1; +} + +// This contains IS neighbors. +message IsisLspneighbor { + + // The System ID for this emulated ISIS router, e.g. 640100010000. + optional string system_id = 1; +} + +// This container defines list of IPv4 internal reachability information in one IPv4 +// internal reachability TLV. +// This is advertised when the origin-type is set 'internal' in route range configurations. +message IsisLspIpv4InternalReachabilityTlv { + + // Describes list of IPv4 prefixes in this TLV. + repeated IsisLspV4Prefix prefixes = 1; +} + +// This container defines list of IPv4 external reachability information in one IPv4 +// external reachability TLV. +// This is advertised when the origin-type is set 'external' in route range configurations. +message IsisLspIpv4ExternalReachabilityTlv { + + // Describes list of IPv4 prefixes in this TLV.. + repeated IsisLspV4Prefix prefixes = 1; +} + +// This group defines attributes of an IPv4 standard prefix. +message IsisLspV4Prefix { + + // An IPv4 unicast prefix reachable via the originator of this LSP. + optional string ipv4_address = 1; + + // The length of the IPv4 prefix. + optional int32 prefix_length = 2; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + optional RedistributionType.Enum redistribution_type = 3; + + // ISIS default metric value. + optional int32 default_metric = 4; + + message OriginType { + enum Enum { + unspecified = 0; + internal = 1; + external = 2; + } + } + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + optional OriginType.Enum origin_type = 5; +} + +// This container defines list of IPv4 extended reachability information in one Extended +// IPv4 External Reachability TLV. +// It is advertised when the 'wide metric' is enabled. +message IsisLspExtendedIpv4ReachabilityTlv { + + // IPv4 prefix contained within extended reachability TLVs. + repeated IsisLspExtendedV4Prefix prefixes = 1; +} + +// This group defines attributes of an IPv4 standard prefix. +message IsisLspExtendedV4Prefix { + + // An IPv4 unicast prefix reachable via the originator of this LSP. + optional string ipv4_address = 1; + + // The length of the IPv4 prefix. + optional int32 prefix_length = 2; + + // ISIS wide metric. + optional int32 metric = 3; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + optional RedistributionType.Enum redistribution_type = 4; + + // Description missing in models + optional IsisLspPrefixAttributes prefix_attributes = 5; +} + +// It defines list of IPv6 extended reachability information in one IPv6 Reachability +// TLV. +message IsisLspIpv6ReachabilityTlv { + + // IPv6 prefix contained within reachability TLVs. + repeated IsisLspV6Prefix prefixes = 1; +} + +// It defines attributes of an IPv6 standard prefix. +message IsisLspV6Prefix { + + // An IPv6 unicast prefix reachable via the originator of this LSP. + optional string ipv6_address = 1; + + // The length of the IPv6 prefix. + optional int32 prefix_length = 2; + + // ISIS wide metric. + optional int32 metric = 3; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + optional RedistributionType.Enum redistribution_type = 4; + + message OriginType { + enum Enum { + unspecified = 0; + internal = 1; + external = 2; + } + } + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + optional OriginType.Enum origin_type = 5; + + // Description missing in models + optional IsisLspPrefixAttributes prefix_attributes = 6; +} + +// This contains the properties of ISIS Prefix attributes for the extended IPv4 and +// IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html +message IsisLspPrefixAttributes { + + // External Prefix Flag (Bit 0) + optional bool x_flag = 1; + + // Re-advertisement Flag (Bit 1) + optional bool r_flag = 2; + + // Node Flag (Bit 2) + optional bool n_flag = 3; +} + +// The capture result request to the traffic generator. Stops the port capture on the +// port_name and returns the capture. +message CaptureRequest { + + // The name of a port a capture is started on. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + // required = true + string port_name = 1; +} + +// mac counter pattern +message PatternFlowEthernetDstCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination MAC address +message PatternFlowEthernetDst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 00:00:00:00:00:00 + optional string auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowEthernetDstCounter increment = 6; + + // Description missing in models + optional PatternFlowEthernetDstCounter decrement = 7; +} + +// mac counter pattern +message PatternFlowEthernetSrcCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source MAC address +message PatternFlowEthernetSrc { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetSrcCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetSrcCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowEthernetEtherTypeCounter { + + // Description missing in models + // default = 65535 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Ethernet type +message PatternFlowEthernetEtherType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 65535 + optional int32 value = 2; + + // Description missing in models + // default = [65535] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 65535 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowEthernetEtherTypeCounter increment = 6; + + // Description missing in models + optional PatternFlowEthernetEtherTypeCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowEthernetPfcQueueCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Priority flow control queue +message PatternFlowEthernetPfcQueue { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetPfcQueueCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetPfcQueueCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowVlanPriorityCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Priority code point +message PatternFlowVlanPriority { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVlanPriorityCounter increment = 5; + + // Description missing in models + optional PatternFlowVlanPriorityCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowVlanCfiCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Canonical format indicator or drop elegible indicator +message PatternFlowVlanCfi { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVlanCfiCounter increment = 5; + + // Description missing in models + optional PatternFlowVlanCfiCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowVlanIdCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Vlan identifier +message PatternFlowVlanId { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVlanIdCounter increment = 5; + + // Description missing in models + optional PatternFlowVlanIdCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowVlanTpidCounter { + + // Description missing in models + // default = 33024 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Protocol identifier +message PatternFlowVlanTpid { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 33024 + optional int32 value = 2; + + // Description missing in models + // default = [33024] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVlanTpidCounter increment = 5; + + // Description missing in models + optional PatternFlowVlanTpidCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowVxlanFlagsCounter { + + // Description missing in models + // default = 8 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid +// vxlan network id (VNI). The other 7 bits (designated R) are reserved fields and +// MUST be set to zero on transmission and ignored on receipt. +message PatternFlowVxlanFlags { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 8 + optional int32 value = 2; + + // Description missing in models + // default = [8] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVxlanFlagsCounter increment = 5; + + // Description missing in models + optional PatternFlowVxlanFlagsCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowVxlanReserved0Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reserved field +message PatternFlowVxlanReserved0 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVxlanReserved0Counter increment = 5; + + // Description missing in models + optional PatternFlowVxlanReserved0Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowVxlanVniCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// VXLAN network id +message PatternFlowVxlanVni { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 0 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowVxlanVniCounter increment = 6; + + // Description missing in models + optional PatternFlowVxlanVniCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowVxlanReserved1Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reserved field +message PatternFlowVxlanReserved1 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowVxlanReserved1Counter increment = 5; + + // Description missing in models + optional PatternFlowVxlanReserved1Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4VersionCounter { + + // Description missing in models + // default = 4 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Version +message PatternFlowIpv4Version { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 4 + optional int32 value = 2; + + // Description missing in models + // default = [4] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4VersionCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4VersionCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4HeaderLengthCounter { + + // Description missing in models + // default = 5 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Header length +message PatternFlowIpv4HeaderLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 5 + optional int32 value = 2; + + // Description missing in models + // default = [5] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 5 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowIpv4HeaderLengthCounter increment = 6; + + // Description missing in models + optional PatternFlowIpv4HeaderLengthCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowIpv4TotalLengthCounter { + + // Description missing in models + // default = 46 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Total length +message PatternFlowIpv4TotalLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 46 + optional int32 value = 2; + + // Description missing in models + // default = [46] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 46 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowIpv4TotalLengthCounter increment = 6; + + // Description missing in models + optional PatternFlowIpv4TotalLengthCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowIpv4IdentificationCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Identification +message PatternFlowIpv4Identification { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4IdentificationCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4IdentificationCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4ReservedCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reserved flag. +message PatternFlowIpv4Reserved { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4ReservedCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4ReservedCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4DontFragmentCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Dont fragment flag If the dont_fragment flag is set and fragmentation is required +// to route the packet then the packet is dropped. +message PatternFlowIpv4DontFragment { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4DontFragmentCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4DontFragmentCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4MoreFragmentsCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// More fragments flag +message PatternFlowIpv4MoreFragments { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4MoreFragmentsCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4MoreFragmentsCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4FragmentOffsetCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Fragment offset +message PatternFlowIpv4FragmentOffset { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4FragmentOffsetCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4FragmentOffsetCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TimeToLiveCounter { + + // Description missing in models + // default = 64 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Time to live +message PatternFlowIpv4TimeToLive { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 64 + optional int32 value = 2; + + // Description missing in models + // default = [64] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TimeToLiveCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TimeToLiveCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4ProtocolCounter { + + // Description missing in models + // default = 61 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Protocol, default is 61 any host internal protocol +message PatternFlowIpv4Protocol { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 61 + optional int32 value = 2; + + // Description missing in models + // default = [61] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 61 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowIpv4ProtocolCounter increment = 6; + + // Description missing in models + optional PatternFlowIpv4ProtocolCounter decrement = 7; +} + +// Header checksum +message PatternFlowIpv4HeaderChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// ipv4 counter pattern +message PatternFlowIpv4SrcCounter { + + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; + + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source address +message PatternFlowIpv4Src { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; + + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4SrcCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4SrcCounter decrement = 6; +} + +// ipv4 counter pattern +message PatternFlowIpv4DstCounter { + + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; + + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination address +message PatternFlowIpv4Dst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; + + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4DstCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4DstCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4PriorityRawCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Raw priority +message PatternFlowIpv4PriorityRaw { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4PriorityRawCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4PriorityRawCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4DscpPhbCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Per hop behavior +message PatternFlowIpv4DscpPhb { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4DscpPhbCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4DscpPhbCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4DscpEcnCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Explicit congestion notification +message PatternFlowIpv4DscpEcn { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4DscpEcnCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4DscpEcnCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TosPrecedenceCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Precedence +message PatternFlowIpv4TosPrecedence { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TosPrecedenceCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TosPrecedenceCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TosDelayCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Delay +message PatternFlowIpv4TosDelay { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TosDelayCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TosDelayCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TosThroughputCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Throughput +message PatternFlowIpv4TosThroughput { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TosThroughputCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TosThroughputCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TosReliabilityCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reliability +message PatternFlowIpv4TosReliability { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TosReliabilityCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TosReliabilityCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TosMonetaryCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Monetary +message PatternFlowIpv4TosMonetary { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TosMonetaryCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TosMonetaryCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv4TosUnusedCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Unused +message PatternFlowIpv4TosUnused { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv4TosUnusedCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv4TosUnusedCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv6VersionCounter { + + // Description missing in models + // default = 6 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Version number +message PatternFlowIpv6Version { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 6 + optional int32 value = 2; + + // Description missing in models + // default = [6] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv6VersionCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv6VersionCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv6TrafficClassCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Traffic class +message PatternFlowIpv6TrafficClass { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv6TrafficClassCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv6TrafficClassCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv6FlowLabelCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Flow label +message PatternFlowIpv6FlowLabel { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv6FlowLabelCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv6FlowLabelCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIpv6PayloadLengthCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Payload length +message PatternFlowIpv6PayloadLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 0 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowIpv6PayloadLengthCounter increment = 6; + + // Description missing in models + optional PatternFlowIpv6PayloadLengthCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowIpv6NextHeaderCounter { + + // Description missing in models + // default = 59 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Next header +message PatternFlowIpv6NextHeader { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 59 + optional int32 value = 2; + + // Description missing in models + // default = [59] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 59 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowIpv6NextHeaderCounter increment = 6; + + // Description missing in models + optional PatternFlowIpv6NextHeaderCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowIpv6HopLimitCounter { + + // Description missing in models + // default = 64 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Hop limit +message PatternFlowIpv6HopLimit { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 64 + optional int32 value = 2; + + // Description missing in models + // default = [64] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv6HopLimitCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv6HopLimitCounter decrement = 6; +} + +// ipv6 counter pattern +message PatternFlowIpv6SrcCounter { + + // Description missing in models + // default = ::0 + optional string start = 1; + + // Description missing in models + // default = ::1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source address +message PatternFlowIpv6Src { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = ::0 + optional string value = 2; + + // Description missing in models + // default = ['::0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv6SrcCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv6SrcCounter decrement = 6; +} + +// ipv6 counter pattern +message PatternFlowIpv6DstCounter { + + // Description missing in models + // default = ::0 + optional string start = 1; + + // Description missing in models + // default = ::1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination address +message PatternFlowIpv6Dst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = ::0 + optional string value = 2; + + // Description missing in models + // default = ['::0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIpv6DstCounter increment = 5; + + // Description missing in models + optional PatternFlowIpv6DstCounter decrement = 6; +} + +// mac counter pattern +message PatternFlowPfcPauseDstCounter { + + // Description missing in models + // default = 01:80:c2:00:00:01 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination MAC address +message PatternFlowPfcPauseDst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 01:80:c2:00:00:01 + optional string value = 2; + + // Description missing in models + // default = ['01:80:c2:00:00:01'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPauseDstCounter increment = 5; + + // Description missing in models + optional PatternFlowPfcPauseDstCounter decrement = 6; +} + +// mac counter pattern +message PatternFlowPfcPauseSrcCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source MAC address +message PatternFlowPfcPauseSrc { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPauseSrcCounter increment = 5; + + // Description missing in models + optional PatternFlowPfcPauseSrcCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPauseEtherTypeCounter { + + // Description missing in models + // default = 34824 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Ethernet type +message PatternFlowPfcPauseEtherType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 34824 + optional int32 value = 2; + + // Description missing in models + // default = [34824] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPauseEtherTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowPfcPauseEtherTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPauseControlOpCodeCounter { + + // Description missing in models + // default = 257 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Control operation code +message PatternFlowPfcPauseControlOpCode { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 257 + optional int32 value = 2; + + // Description missing in models + // default = [257] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPauseControlOpCodeCounter increment = 5; + + // Description missing in models + optional PatternFlowPfcPauseControlOpCodeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPauseClassEnableVectorCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination +message PatternFlowPfcPauseClassEnableVector { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPauseClassEnableVectorCounter increment = 5; + + // Description missing in models + optional PatternFlowPfcPauseClassEnableVectorCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass0Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 0 +message PatternFlowPfcPausePauseClass0 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass0Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass0Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass1Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 1 +message PatternFlowPfcPausePauseClass1 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass1Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass1Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass2Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 2 +message PatternFlowPfcPausePauseClass2 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass2Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass2Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass3Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 3 +message PatternFlowPfcPausePauseClass3 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass3Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass3Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass4Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 4 +message PatternFlowPfcPausePauseClass4 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass4Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass4Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass5Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 5 +message PatternFlowPfcPausePauseClass5 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass5Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass5Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass6Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 6 +message PatternFlowPfcPausePauseClass6 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass6Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass6Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowPfcPausePauseClass7Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Pause class 7 +message PatternFlowPfcPausePauseClass7 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPfcPausePauseClass7Counter increment = 5; + + // Description missing in models + optional PatternFlowPfcPausePauseClass7Counter decrement = 6; +} + +// mac counter pattern +message PatternFlowEthernetPauseDstCounter { + + // Description missing in models + // default = 01:80:c2:00:00:01 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination MAC address +message PatternFlowEthernetPauseDst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 01:80:c2:00:00:01 + optional string value = 2; + + // Description missing in models + // default = ['01:80:c2:00:00:01'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetPauseDstCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetPauseDstCounter decrement = 6; +} + +// mac counter pattern +message PatternFlowEthernetPauseSrcCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source MAC address +message PatternFlowEthernetPauseSrc { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetPauseSrcCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetPauseSrcCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowEthernetPauseEtherTypeCounter { + + // Description missing in models + // default = 34824 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Ethernet type +message PatternFlowEthernetPauseEtherType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 34824 + optional int32 value = 2; + + // Description missing in models + // default = [34824] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetPauseEtherTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetPauseEtherTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowEthernetPauseControlOpCodeCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Control operation code +message PatternFlowEthernetPauseControlOpCode { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetPauseControlOpCodeCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetPauseControlOpCodeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowEthernetPauseTimeCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Time +message PatternFlowEthernetPauseTime { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowEthernetPauseTimeCounter increment = 5; + + // Description missing in models + optional PatternFlowEthernetPauseTimeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpSrcPortCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source port +message PatternFlowTcpSrcPort { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpSrcPortCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpSrcPortCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpDstPortCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination port +message PatternFlowTcpDstPort { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpDstPortCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpDstPortCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpSeqNumCounter { + + // Description missing in models + // default = 0 + optional int64 start = 1; + + // Description missing in models + // default = 1 + optional int64 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Sequence number +message PatternFlowTcpSeqNum { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int64 value = 2; + + // Description missing in models + // default = [0] + repeated int64 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpSeqNumCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpSeqNumCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpAckNumCounter { + + // Description missing in models + // default = 0 + optional int64 start = 1; + + // Description missing in models + // default = 1 + optional int64 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Acknowledgement number +message PatternFlowTcpAckNum { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int64 value = 2; + + // Description missing in models + // default = [0] + repeated int64 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpAckNumCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpAckNumCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpDataOffsetCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The number of 32 bit words in the TCP header. This indicates where the data begins. +message PatternFlowTcpDataOffset { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpDataOffsetCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpDataOffsetCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpEcnNsCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Explicit congestion notification, concealment protection. +message PatternFlowTcpEcnNs { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpEcnNsCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpEcnNsCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpEcnCwrCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Explicit congestion notification, congestion window reduced. +message PatternFlowTcpEcnCwr { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpEcnCwrCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpEcnCwrCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpEcnEchoCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates +// that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. +message PatternFlowTcpEcnEcho { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpEcnEchoCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpEcnEchoCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpCtlUrgCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// A value of 1 indicates that the urgent pointer field is significant. +message PatternFlowTcpCtlUrg { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpCtlUrgCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpCtlUrgCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpCtlAckCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// A value of 1 indicates that the ackknowledgment field is significant. +message PatternFlowTcpCtlAck { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpCtlAckCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpCtlAckCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpCtlPshCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Asks to push the buffered data to the receiving application. +message PatternFlowTcpCtlPsh { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpCtlPshCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpCtlPshCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpCtlRstCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reset the connection. +message PatternFlowTcpCtlRst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpCtlRstCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpCtlRstCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpCtlSynCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Synchronize sequenece numbers. +message PatternFlowTcpCtlSyn { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpCtlSynCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpCtlSynCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpCtlFinCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Last packet from the sender. +message PatternFlowTcpCtlFin { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpCtlFinCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpCtlFinCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowTcpWindowCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Tcp connection window. +message PatternFlowTcpWindow { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowTcpWindowCounter increment = 5; + + // Description missing in models + optional PatternFlowTcpWindowCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowUdpSrcPortCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Source port +message PatternFlowUdpSrcPort { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowUdpSrcPortCounter increment = 5; + + // Description missing in models + optional PatternFlowUdpSrcPortCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowUdpDstPortCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Destination port +message PatternFlowUdpDstPort { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowUdpDstPortCounter increment = 5; + + // Description missing in models + optional PatternFlowUdpDstPortCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowUdpLengthCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Length +message PatternFlowUdpLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowUdpLengthCounter increment = 5; + + // Description missing in models + optional PatternFlowUdpLengthCounter decrement = 6; +} + +// UDP checksum +message PatternFlowUdpChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// integer counter pattern +message PatternFlowGreChecksumPresentCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Checksum present bit +message PatternFlowGreChecksumPresent { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGreChecksumPresentCounter increment = 5; + + // Description missing in models + optional PatternFlowGreChecksumPresentCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGreReserved0Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reserved bits +message PatternFlowGreReserved0 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGreReserved0Counter increment = 5; + + // Description missing in models + optional PatternFlowGreReserved0Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowGreVersionCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// GRE version number +message PatternFlowGreVersion { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGreVersionCounter increment = 5; + + // Description missing in models + optional PatternFlowGreVersionCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGreProtocolCounter { + + // Description missing in models + // default = 2048 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Protocol type of encapsulated payload +message PatternFlowGreProtocol { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 2048 + optional int32 value = 2; + + // Description missing in models + // default = [2048] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGreProtocolCounter increment = 5; + + // Description missing in models + optional PatternFlowGreProtocolCounter decrement = 6; +} + +// Optional checksum of GRE header and payload. Only present if the checksum_present +// bit is set. +message PatternFlowGreChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// integer counter pattern +message PatternFlowGreReserved1Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Optional reserved field. Only present if the checksum_present bit is set. +message PatternFlowGreReserved1 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGreReserved1Counter increment = 5; + + // Description missing in models + optional PatternFlowGreReserved1Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1VersionCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// GTPv1 version +message PatternFlowGtpv1Version { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1VersionCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1VersionCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1ProtocolTypeCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Protocol type, GTP is 1, GTP' is 0 +message PatternFlowGtpv1ProtocolType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1ProtocolTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1ProtocolTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1ReservedCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reserved field +message PatternFlowGtpv1Reserved { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1ReservedCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1ReservedCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1EFlagCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Extension header field present +message PatternFlowGtpv1EFlag { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1EFlagCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1EFlagCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1SFlagCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Sequence number field present +message PatternFlowGtpv1SFlag { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1SFlagCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1SFlagCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1PnFlagCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// N-PDU field present +message PatternFlowGtpv1PnFlag { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1PnFlagCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1PnFlagCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1MessageTypeCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The type of GTP message Different types of messages are defined in 3GPP TS 29.060 +// section 7.1 +message PatternFlowGtpv1MessageType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1MessageTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1MessageTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1MessageLengthCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The length of the payload (the bytes following the mandatory 8-byte GTP header) in +// bytes that includes any optional fields +message PatternFlowGtpv1MessageLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1MessageLengthCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1MessageLengthCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1TeidCounter { + + // Description missing in models + // default = 0 + optional int64 start = 1; + + // Description missing in models + // default = 1 + optional int64 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel +message PatternFlowGtpv1Teid { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int64 value = 2; + + // Description missing in models + // default = [0] + repeated int64 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1TeidCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1TeidCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1SquenceNumberCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must +// be interpreted only if the s_flag bit is on. +message PatternFlowGtpv1SquenceNumber { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1SquenceNumberCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1SquenceNumberCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1NPduNumberCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must +// be interpreted only if the pn_flag bit is on. +message PatternFlowGtpv1NPduNumber { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1NPduNumberCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1NPduNumberCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv1NextExtensionHeaderTypeCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. +// Must be interpreted only if the e_flag bit is on. +message PatternFlowGtpv1NextExtensionHeaderType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv1NextExtensionHeaderTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv1NextExtensionHeaderTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpExtensionExtensionLengthCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// This field states the length of this extension header, including the length, the +// contents, and the next extension header field, in 4-octet units, so the length of +// the extension must always be a multiple of 4. +message PatternFlowGtpExtensionExtensionLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpExtensionExtensionLengthCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpExtensionExtensionLengthCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpExtensionContentsCounter { + + // Description missing in models + // default = 0 + optional int64 start = 1; + + // Description missing in models + // default = 1 + optional int64 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The extension header contents +message PatternFlowGtpExtensionContents { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int64 value = 2; + + // Description missing in models + // default = [0] + repeated int64 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpExtensionContentsCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpExtensionContentsCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpExtensionNextExtensionHeaderCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// It states the type of the next extension, or 0 if no next extension exists. This +// permits chaining several next extension headers. +message PatternFlowGtpExtensionNextExtensionHeader { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpExtensionNextExtensionHeaderCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpExtensionNextExtensionHeaderCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2VersionCounter { + + // Description missing in models + // default = 2 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Version number +message PatternFlowGtpv2Version { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 2 + optional int32 value = 2; + + // Description missing in models + // default = [2] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2VersionCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2VersionCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2PiggybackingFlagCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// If piggybacking_flag is set to 1 then another GTP-C message with its own header shall +// be present at the end of the current message +message PatternFlowGtpv2PiggybackingFlag { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2PiggybackingFlagCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2PiggybackingFlagCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2TeidFlagCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// If teid_flag is set to 1 then the TEID field will be present between the message +// length and the sequence number. All messages except Echo and Echo reply require TEID +// to be present +message PatternFlowGtpv2TeidFlag { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2TeidFlagCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2TeidFlagCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2Spare1Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// A 3-bit reserved field (must be 0). +message PatternFlowGtpv2Spare1 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2Spare1Counter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2Spare1Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2MessageTypeCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// An 8-bit field that indicates the type of GTP message. Different types of messages +// are defined in 3GPP TS 29.060 section 7.1 +message PatternFlowGtpv2MessageType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2MessageTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2MessageTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2MessageLengthCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory +// GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. +message PatternFlowGtpv2MessageLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2MessageLengthCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2MessageLengthCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2TeidCounter { + + // Description missing in models + // default = 0 + optional int64 start = 1; + + // Description missing in models + // default = 1 + optional int64 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different +// connections in the same GTP tunnel. Is present only if the teid_flag is set. +message PatternFlowGtpv2Teid { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int64 value = 2; + + // Description missing in models + // default = [0] + repeated int64 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2TeidCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2TeidCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2SequenceNumberCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The sequence number +message PatternFlowGtpv2SequenceNumber { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2SequenceNumberCounter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2SequenceNumberCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowGtpv2Spare2Counter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Reserved field +message PatternFlowGtpv2Spare2 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowGtpv2Spare2Counter increment = 5; + + // Description missing in models + optional PatternFlowGtpv2Spare2Counter decrement = 6; +} + +// integer counter pattern +message PatternFlowArpHardwareTypeCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Network link protocol type +message PatternFlowArpHardwareType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpHardwareTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowArpHardwareTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowArpProtocolTypeCounter { + + // Description missing in models + // default = 2048 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The internetwork protocol for which the ARP request is intended +message PatternFlowArpProtocolType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 2048 + optional int32 value = 2; + + // Description missing in models + // default = [2048] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpProtocolTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowArpProtocolTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowArpHardwareLengthCounter { + + // Description missing in models + // default = 6 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Length (in octets) of a hardware address +message PatternFlowArpHardwareLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 6 + optional int32 value = 2; + + // Description missing in models + // default = [6] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpHardwareLengthCounter increment = 5; + + // Description missing in models + optional PatternFlowArpHardwareLengthCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowArpProtocolLengthCounter { + + // Description missing in models + // default = 4 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Length (in octets) of internetwork addresses +message PatternFlowArpProtocolLength { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 4 + optional int32 value = 2; + + // Description missing in models + // default = [4] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpProtocolLengthCounter increment = 5; + + // Description missing in models + optional PatternFlowArpProtocolLengthCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowArpOperationCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The operation that the sender is performing +message PatternFlowArpOperation { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpOperationCounter increment = 5; + + // Description missing in models + optional PatternFlowArpOperationCounter decrement = 6; +} + +// mac counter pattern +message PatternFlowArpSenderHardwareAddrCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Media address of the sender +message PatternFlowArpSenderHardwareAddr { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpSenderHardwareAddrCounter increment = 5; + + // Description missing in models + optional PatternFlowArpSenderHardwareAddrCounter decrement = 6; +} + +// ipv4 counter pattern +message PatternFlowArpSenderProtocolAddrCounter { + + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; + + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Internetwork address of the sender +message PatternFlowArpSenderProtocolAddr { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; + + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpSenderProtocolAddrCounter increment = 5; + + // Description missing in models + optional PatternFlowArpSenderProtocolAddrCounter decrement = 6; +} + +// mac counter pattern +message PatternFlowArpTargetHardwareAddrCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Media address of the target +message PatternFlowArpTargetHardwareAddr { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpTargetHardwareAddrCounter increment = 5; + + // Description missing in models + optional PatternFlowArpTargetHardwareAddrCounter decrement = 6; +} + +// ipv4 counter pattern +message PatternFlowArpTargetProtocolAddrCounter { + + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; + + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Internetwork address of the target +message PatternFlowArpTargetProtocolAddr { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; + + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowArpTargetProtocolAddrCounter increment = 5; + + // Description missing in models + optional PatternFlowArpTargetProtocolAddrCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpEchoTypeCounter { + + // Description missing in models + // default = 8 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The type of ICMP echo packet +message PatternFlowIcmpEchoType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 8 + optional int32 value = 2; + + // Description missing in models + // default = [8] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpEchoTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpEchoTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpEchoCodeCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// The ICMP subtype. The default code for ICMP echo request and reply is 0. +message PatternFlowIcmpEchoCode { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpEchoCodeCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpEchoCodeCounter decrement = 6; +} + +// ICMP checksum +message PatternFlowIcmpEchoChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// integer counter pattern +message PatternFlowIcmpEchoIdentifierCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMP identifier +message PatternFlowIcmpEchoIdentifier { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpEchoIdentifierCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpEchoIdentifierCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpEchoSequenceNumberCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMP sequence number +message PatternFlowIcmpEchoSequenceNumber { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpEchoSequenceNumberCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpEchoSequenceNumberCounter decrement = 6; +} + +// ICMP checksum +message PatternFlowIcmpCommonChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// integer counter pattern +message PatternFlowIcmpNextFieldsIdentifierCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMP identifier +message PatternFlowIcmpNextFieldsIdentifier { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpNextFieldsIdentifierCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpNextFieldsIdentifierCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpNextFieldsSequenceNumberCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMP sequence number +message PatternFlowIcmpNextFieldsSequenceNumber { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpNextFieldsSequenceNumberCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpNextFieldsSequenceNumberCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpv6EchoTypeCounter { + + // Description missing in models + // default = 128 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMPv6 echo type +message PatternFlowIcmpv6EchoType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 128 + optional int32 value = 2; + + // Description missing in models + // default = [128] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpv6EchoTypeCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpv6EchoTypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpv6EchoCodeCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMPv6 echo sub type +message PatternFlowIcmpv6EchoCode { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpv6EchoCodeCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpv6EchoCodeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpv6EchoIdentifierCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMPv6 echo identifier +message PatternFlowIcmpv6EchoIdentifier { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpv6EchoIdentifierCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpv6EchoIdentifierCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIcmpv6EchoSequenceNumberCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// ICMPv6 echo sequence number +message PatternFlowIcmpv6EchoSequenceNumber { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIcmpv6EchoSequenceNumberCounter increment = 5; + + // Description missing in models + optional PatternFlowIcmpv6EchoSequenceNumberCounter decrement = 6; +} + +// ICMPv6 checksum +message PatternFlowIcmpv6EchoChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// ICMPv6 checksum +message PatternFlowIcmpv6CommonChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// integer counter pattern +message PatternFlowPppAddressCounter { + + // Description missing in models + // default = 255 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// PPP address +message PatternFlowPppAddress { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 255 + optional int32 value = 2; + + // Description missing in models + // default = [255] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPppAddressCounter increment = 5; + + // Description missing in models + optional PatternFlowPppAddressCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowPppControlCounter { + + // Description missing in models + // default = 3 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// PPP control +message PatternFlowPppControl { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 3 + optional int32 value = 2; + + // Description missing in models + // default = [3] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowPppControlCounter increment = 5; + + // Description missing in models + optional PatternFlowPppControlCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowPppProtocolTypeCounter { + + // Description missing in models + // default = 33 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// PPP protocol type +message PatternFlowPppProtocolType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 33 + optional int32 value = 2; + + // Description missing in models + // default = [33] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 33 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowPppProtocolTypeCounter increment = 6; + + // Description missing in models + optional PatternFlowPppProtocolTypeCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowIgmpv1VersionCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Version number +message PatternFlowIgmpv1Version { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIgmpv1VersionCounter increment = 5; + + // Description missing in models + optional PatternFlowIgmpv1VersionCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIgmpv1TypeCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Type of message +message PatternFlowIgmpv1Type { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIgmpv1TypeCounter increment = 5; + + // Description missing in models + optional PatternFlowIgmpv1TypeCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowIgmpv1UnusedCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Unused +message PatternFlowIgmpv1Unused { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIgmpv1UnusedCounter increment = 5; + + // Description missing in models + optional PatternFlowIgmpv1UnusedCounter decrement = 6; +} + +// Checksum +message PatternFlowIgmpv1Checksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional int32 custom = 3; +} + +// ipv4 counter pattern +message PatternFlowIgmpv1GroupAddressCounter { + + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; + + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Group address +message PatternFlowIgmpv1GroupAddress { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; + + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowIgmpv1GroupAddressCounter increment = 5; + + // Description missing in models + optional PatternFlowIgmpv1GroupAddressCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowMplsLabelCounter { + + // Description missing in models + // default = 16 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Label of routers +message PatternFlowMplsLabel { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 16 + optional int32 value = 2; + + // Description missing in models + // default = [16] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 16 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowMplsLabelCounter increment = 6; + + // Description missing in models + optional PatternFlowMplsLabelCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowMplsTrafficClassCounter { + + // Description missing in models + // default = 0 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Traffic class +message PatternFlowMplsTrafficClass { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional int32 value = 2; + + // Description missing in models + // default = [0] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowMplsTrafficClassCounter increment = 5; + + // Description missing in models + optional PatternFlowMplsTrafficClassCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowMplsBottomOfStackCounter { + + // Description missing in models + // default = 1 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Bottom of stack +message PatternFlowMplsBottomOfStack { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 1 + optional int32 value = 2; + + // Description missing in models + // default = [1] + repeated int32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 1 + optional int32 auto = 4; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 5; + + // Description missing in models + optional PatternFlowMplsBottomOfStackCounter increment = 6; + + // Description missing in models + optional PatternFlowMplsBottomOfStackCounter decrement = 7; +} + +// integer counter pattern +message PatternFlowMplsTimeToLiveCounter { + + // Description missing in models + // default = 64 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// Time to live +message PatternFlowMplsTimeToLive { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 64 + optional int32 value = 2; + + // Description missing in models + // default = [64] + repeated int32 values = 3; + + // A unique name is used to indicate to the system that the field may extend the metric + // row key and create an aggregate metric row for every unique value. To have metric + // group columns appear in the flow metric rows the flow metric request allows for the + // metric_group value to be specified as part of the request. + optional string metric_group = 4; + + // Description missing in models + optional PatternFlowMplsTimeToLiveCounter increment = 5; + + // Description missing in models + optional PatternFlowMplsTimeToLiveCounter decrement = 6; +} + +// The request has succeeded with no application content but the server +// may return a list of detailed warnings. +message Success { + ResponseWarning response_warning = 1; +} + +// This indicates that the server cannot or will not process the request +// due to something that is perceived to be a client error. +// Additional details are in the errors. +message BadRequest { + ResponseError response_error = 1; +} + +// This indicates that the server encountered an unexpected condition that +// prevented it from fulfilling the request. +// Additional details are in the errors. +message InternalServerError { + ResponseError response_error = 1; +} + +message SetConfigRequest { + Config config = 1; +} +message SetConfigResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + +message GetConfigResponse { + optional Config status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SetTransmitStateRequest { + TransmitState transmit_state = 1; +} +message SetTransmitStateResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SetLinkStateRequest { + LinkState link_state = 1; +} +message SetLinkStateResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SetCaptureStateRequest { + CaptureState capture_state = 1; +} +message SetCaptureStateResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message UpdateFlowsRequest { + FlowsUpdate flows_update = 1; +} +message UpdateFlowsResponse { + optional Config status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SetRouteStateRequest { + RouteState route_state = 1; +} +message SetRouteStateResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SendPingRequest { + PingRequest ping_request = 1; +} +message SendPingResponse { + optional PingResponse status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SetProtocolStateRequest { + ProtocolState protocol_state = 1; +} +message SetProtocolStateResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message SetDeviceStateRequest { + DeviceState device_state = 1; +} +message SetDeviceStateResponse { + optional ResponseWarning status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message GetMetricsRequest { + MetricsRequest metrics_request = 1; +} +message GetMetricsResponse { + optional MetricsResponse status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message GetStatesRequest { + StatesRequest states_request = 1; +} +message GetStatesResponse { + optional StatesResponse status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + +message GetCaptureRequest { + CaptureRequest capture_request = 1; +} +message GetCaptureResponse { + optional bytes status_code_200 = 1; + optional ResponseError status_code_400 = 2; + optional ResponseError status_code_500 = 3; +} + + + // Description missing in models +service Openapi { + + // Sets configuration resources on the traffic generator. + rpc SetConfig(SetConfigRequest) returns (SetConfigResponse); + // Description missing in models + rpc GetConfig(google.protobuf.Empty) returns (GetConfigResponse); + // Updates the state of configuration resources on the traffic generator. + // The Response.Warnings in the Success response is available for implementers to disclose + // additional information about a state change including any implicit changes that are + // outside the scope of the state change. + rpc SetTransmitState(SetTransmitStateRequest) returns (SetTransmitStateResponse); + // Updates the state of configuration resources on the traffic generator. + rpc SetLinkState(SetLinkStateRequest) returns (SetLinkStateResponse); + // Updates the state of configuration resources on the traffic generator. + rpc SetCaptureState(SetCaptureStateRequest) returns (SetCaptureStateResponse); + // Updates flow properties without disruption of transmit state. + rpc UpdateFlows(UpdateFlowsRequest) returns (UpdateFlowsResponse); + // Updates the state of configuration resources on the traffic generator. + rpc SetRouteState(SetRouteStateRequest) returns (SetRouteStateResponse); + // API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each + // endpoint 1 ping packet will be sent and API shall wait for ping response to either + // be successful or timeout. The API wait timeout for each request is 300ms. + rpc SendPing(SendPingRequest) returns (SendPingResponse); + // Sets all configured protocols to `start` or `stop` state. + rpc SetProtocolState(SetProtocolStateRequest) returns (SetProtocolStateResponse); + // Set specific state/actions on device configuration resources on the traffic generator. + rpc SetDeviceState(SetDeviceStateRequest) returns (SetDeviceStateResponse); + // Description missing in models + rpc GetMetrics(GetMetricsRequest) returns (GetMetricsResponse); + // Description missing in models + rpc GetStates(GetStatesRequest) returns (GetStatesResponse); + // Description missing in models + rpc GetCapture(GetCaptureRequest) returns (GetCaptureResponse); +} From edd99ca39e19a53949cc02e295f56592125e3d1c Mon Sep 17 00:00:00 2001 From: waseembaig Date: Mon, 19 Sep 2022 18:44:50 +0530 Subject: [PATCH 07/27] L4-L7 approach 2 L4-L7 model approach 2 --- app/app.yaml | 0 {device => app}/http/http.yaml | 12 +- {device => app}/http/method.yaml | 0 app/ssl/ssl.yaml | 13 + {device => app}/tcp/tcp.yaml | 16 +- app/traffic/client.yaml | 0 app/traffic/endpoint.yaml | 0 app/traffic/objectives.yaml | 83 ++++ app/traffic/server.yaml | 0 app/traffic/traffic.yaml | 0 artifacts/openapi.html | 724 ------------------------------- artifacts/openapi.yaml | 195 +-------- artifacts/otg.proto | 140 +----- device/device.yaml | 16 +- 14 files changed, 104 insertions(+), 1095 deletions(-) create mode 100644 app/app.yaml rename {device => app}/http/http.yaml (86%) rename {device => app}/http/method.yaml (100%) create mode 100644 app/ssl/ssl.yaml rename {device => app}/tcp/tcp.yaml (74%) create mode 100644 app/traffic/client.yaml create mode 100644 app/traffic/endpoint.yaml create mode 100644 app/traffic/objectives.yaml create mode 100644 app/traffic/server.yaml create mode 100644 app/traffic/traffic.yaml delete mode 100644 artifacts/openapi.html diff --git a/app/app.yaml b/app/app.yaml new file mode 100644 index 00000000..e69de29b diff --git a/device/http/http.yaml b/app/http/http.yaml similarity index 86% rename from device/http/http.yaml rename to app/http/http.yaml index e5a4bb65..b12fa848 100644 --- a/device/http/http.yaml +++ b/app/http/http.yaml @@ -1,23 +1,17 @@ components: schemas: - Device.Http: + App.Http: description: >- HTTP configs. type: object properties: - tcp_name: + transport_name: description: >- TCP interface name type: string x-constraint: - - '/components/schemas/Device.Tcp/properties/name' + - '/components/schemas/App.Tcp/properties/name' x-field-uid: 1 - enable_ssl: - description: >- - Enable SSL for HTTP - type: boolean - default: false - x-field-uid: 2 http_version: description: >- HTTP Version diff --git a/device/http/method.yaml b/app/http/method.yaml similarity index 100% rename from device/http/method.yaml rename to app/http/method.yaml diff --git a/app/ssl/ssl.yaml b/app/ssl/ssl.yaml new file mode 100644 index 00000000..bb983759 --- /dev/null +++ b/app/ssl/ssl.yaml @@ -0,0 +1,13 @@ +components: + schemas: + App.Ssl: + description: >- + Traffic . + type: object + properties: + enable: + description: >- + Enable SSL for HTTP + type: boolean + default: false + x-field-uid: 1 \ No newline at end of file diff --git a/device/tcp/tcp.yaml b/app/tcp/tcp.yaml similarity index 74% rename from device/tcp/tcp.yaml rename to app/tcp/tcp.yaml index 423775be..9a2276ef 100644 --- a/device/tcp/tcp.yaml +++ b/app/tcp/tcp.yaml @@ -1,6 +1,6 @@ components: schemas: - Device.Tcp: + App.Tcp: description: >- TCP configs. type: object @@ -32,18 +32,6 @@ components: type: integer default: 4096 x-field-uid: 4 - source_port: - description: >- - TCP source port no - type: integer - default: 1024 - x-field-uid: 5 - destination_port: - description: >- - TCP destination port no - type: integer - default: 1024 - x-field-uid: 6 name: x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 7 \ No newline at end of file + x-field-uid: 5 \ No newline at end of file diff --git a/app/traffic/client.yaml b/app/traffic/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/app/traffic/endpoint.yaml b/app/traffic/endpoint.yaml new file mode 100644 index 00000000..e69de29b diff --git a/app/traffic/objectives.yaml b/app/traffic/objectives.yaml new file mode 100644 index 00000000..5688c170 --- /dev/null +++ b/app/traffic/objectives.yaml @@ -0,0 +1,83 @@ +components: + schemas: + Objective: + type: object + properties: + choice: + type: string + default: getsimulated_user + x-field-uid: 1 + x-enum: + get: + x-field-uid: 1 + post: + x-field-uid: 2 + simulated_user: + x-field-uid: 2 + $ref: '#/components/schemas/Objective.simulated_user' + throughput: + x-field-uid: 3 + $ref: '#/components/schemas/Objective.throughput' + + Objective.simulated_user: + description: >- + A GET operation of HTTP + type: object + required: [value] + properties: + value: + description: >- + Number of simulated user. + type: integer + x-field-uid: 1 + ramp_up_type: + description: >- + ramp_up_type. + type: string + x-field-uid: 2 + ramp_up_value: + description: >- + ramp_up_value. + type: integer + x-field-uid: 3 + sutain_time: + description: >- + sutain time of the test. + type: integer + x-field-uid: 4 + rampu_down_time: + description: >- + rampu_down_time. + type: integer + x-field-uid: 5 + Objective.throughput: + description: >- + A POST operation of HTTP + type: object + required: [value] + properties: + value: + description: >- + Throughput value. + type: integer + x-field-uid: 1 + ramp_up_type: + description: >- + ramp_up_type. + type: string + x-field-uid: 2 + ramp_up_value: + description: >- + ramp_up_value. + type: integer + x-field-uid: 3 + sutain_time: + description: >- + sutain time of the test. + type: integer + x-field-uid: 4 + rampu_down_time: + description: >- + rampu_down_time. + type: integer + x-field-uid: 5 \ No newline at end of file diff --git a/app/traffic/server.yaml b/app/traffic/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/app/traffic/traffic.yaml b/app/traffic/traffic.yaml new file mode 100644 index 00000000..e69de29b diff --git a/artifacts/openapi.html b/artifacts/openapi.html deleted file mode 100644 index 9b37cc16..00000000 --- a/artifacts/openapi.html +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - Open Traffic Generator API - - - - - - - - - -

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard -interface for emulating layer 2-7 network devices and generating test traffic.

-

Contributions can be made in the following ways:

- -

Configuration

set_config

Sets configuration resources on the traffic generator.

-
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

-
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

-
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

-
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

-
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. -Each device contains configurations for network interfaces and -protocols running on top of those interfaces.

-
Array of objects (Flow)

The flows that will be configured on the traffic generator.

-
object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

-

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. -The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

-
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. -If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Flow/properties/name
  • -
-
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. -If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). -If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. -If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. -If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

-

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. -If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-
state
required
string
Enum: "start" "stop"

The capture state.

-

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

-
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

-
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

-

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

-

x-constraint:

-
    -
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • -
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • -
  • /components/schemas/Isis.V4RouteRange/properties/name
  • -
  • /components/schemas/Isis.V6RouteRange/properties/name
  • -
-
state
required
string
Enum: "withdraw" "advertise"

Route specific states

-

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

-
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

-

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

-
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

-

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

-
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

-

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

-
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

-
object (Flow.Metrics.Request)

The container for a flow metric request.

-
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

-
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

-
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

-
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

-
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

-
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

-
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

-
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

-
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

-
port_name
required
string

The name of a port a capture is started on.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
- - - - \ No newline at end of file diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index e77323e9..152aad19 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -1627,20 +1627,8 @@ components: Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 $ref: '#/components/schemas/Device.Vxlan' x-field-uid: 6 - tcp: - description: "The properties of TCP and its children, " - type: array - items: - $ref: '#/components/schemas/Device.Tcp' - x-field-uid: 7 - http: - description: "The properties of HTTP and its children, " - type: array - items: - $ref: '#/components/schemas/Device.Http' - x-field-uid: 8 name: - x-field-uid: 9 + x-field-uid: 7 description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string @@ -5464,187 +5452,6 @@ components: type: string format: ipv6 x-field-uid: 1 - Device.Tcp: - description: |- - TCP configs. - type: object - required: - - ip_interface_name - properties: - ip_interface_name: - description: | - IPv4/v6 interface name - - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - - /components/schemas/Device.Ipv6Base/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - - /components/schemas/Device.Ipv6Base/properties/name - x-field-uid: 1 - keep_alive_time: - description: |- - The TCP keep alive timer - type: integer - default: 7200 - x-field-uid: 2 - receive_buffer_size: - description: |- - The TCP receive buffer size - type: integer - default: 4096 - x-field-uid: 3 - transmit_buffer_size: - description: |- - The TCP transmit buffer size - type: integer - default: 4096 - x-field-uid: 4 - source_port: - description: "TCP source port no " - type: integer - default: 1024 - x-field-uid: 5 - destination_port: - description: "TCP destination port no " - type: integer - default: 1024 - x-field-uid: 6 - name: - x-field-uid: 7 - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Device.Http: - description: |- - HTTP configs. - type: object - properties: - tcp_name: - description: | - TCP interface name - - x-constraint: - - /components/schemas/Device.Tcp/properties/name - type: string - x-constraint: - - /components/schemas/Device.Tcp/properties/name - x-field-uid: 1 - enable_ssl: - description: |- - Enable SSL for HTTP - type: boolean - default: false - x-field-uid: 2 - http_version: - description: |- - HTTP Version - type: integer - default: 1 - x-field-uid: 3 - enable_cookie_support: - description: |- - Enable cookie support for HTTP - type: boolean - default: false - x-field-uid: 4 - max_sessions: - description: |- - Max HTTP sessions - type: integer - default: 1 - x-field-uid: 5 - max_streams: - description: |- - Max HTTP streams - type: integer - default: 1 - x-field-uid: 6 - command_timeout: - description: |- - Command timeout timer in seconds - type: integer - default: 600 - x-field-uid: 7 - url_stats_count: - description: "URL stats count " - type: integer - default: 10 - x-field-uid: 8 - enable_per_conn_cookie_support: - description: |- - Enable cookie support for per connection - type: boolean - default: false - x-field-uid: 9 - method: - $ref: '#/components/schemas/Http.Method' - x-field-uid: 10 - name: - x-field-uid: 11 - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - Http.Method: - type: object - properties: - choice: - type: string - default: get - x-field-uid: 1 - x-enum: - get: - x-field-uid: 1 - post: - x-field-uid: 2 - enum: - - get - - post - get: - x-field-uid: 2 - $ref: '#/components/schemas/Method.Get' - post: - x-field-uid: 3 - $ref: '#/components/schemas/Method.Post' - Method.Get: - description: |- - A GET operation of HTTP - type: object - required: - - destination - - page - properties: - destination: - description: |- - Server name/IP address - type: string - x-field-uid: 1 - page: - description: |- - The page name to perform get opertaion. - type: string - x-field-uid: 2 - Method.Post: - description: |- - A POST operation of HTTP - type: object - required: - - destination - - page - properties: - destination: - description: |- - The Server name/IP address - type: string - x-field-uid: 1 - page: - description: |- - The page name to perform post opertaion. - type: string - x-field-uid: 2 Flow: description: |- A high level data plane traffic flow. diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 52561fa3..d0bfef09 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -923,16 +923,10 @@ message Device { // Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 optional DeviceVxlan vxlan = 6; - // The properties of TCP and its children, - repeated DeviceTcp tcp = 7; - - // The properties of HTTP and its children, - repeated DeviceHttp http = 8; - // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 9; + string name = 7; } // Status: under-review @@ -3631,138 +3625,6 @@ message VxlanV6TunnelDestinationIPModeMulticast { optional string address = 1; } -// TCP configs. -message DeviceTcp { - - // IPv4/v6 interface name - // - // x-constraint: - // - /components/schemas/Device.Ipv4Base/properties/name - // - /components/schemas/Device.Ipv6Base/properties/name - // - // required = true - string ip_interface_name = 1; - - // The TCP keep alive timer - // default = 7200 - optional int32 keep_alive_time = 2; - - // The TCP receive buffer size - // default = 4096 - optional int32 receive_buffer_size = 3; - - // The TCP transmit buffer size - // default = 4096 - optional int32 transmit_buffer_size = 4; - - // TCP source port no - // default = 1024 - optional int32 source_port = 5; - - // TCP destination port no - // default = 1024 - optional int32 destination_port = 6; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - optional string name = 7; -} - -// HTTP configs. -message DeviceHttp { - - // TCP interface name - // - // x-constraint: - // - /components/schemas/Device.Tcp/properties/name - // - optional string tcp_name = 1; - - // Enable SSL for HTTP - // default = False - optional bool enable_ssl = 2; - - // HTTP Version - // default = 1 - optional int32 http_version = 3; - - // Enable cookie support for HTTP - // default = False - optional bool enable_cookie_support = 4; - - // Max HTTP sessions - // default = 1 - optional int32 max_sessions = 5; - - // Max HTTP streams - // default = 1 - optional int32 max_streams = 6; - - // Command timeout timer in seconds - // default = 600 - optional int32 command_timeout = 7; - - // URL stats count - // default = 10 - optional int32 url_stats_count = 8; - - // Enable cookie support for per connection - // default = False - optional bool enable_per_conn_cookie_support = 9; - - // Description missing in models - optional HttpMethod method = 10; - - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - optional string name = 11; -} - -// Description missing in models -message HttpMethod { - - message Choice { - enum Enum { - unspecified = 0; - get = 1; - post = 2; - } - } - // Description missing in models - // default = Choice.Enum.get - optional Choice.Enum choice = 1; - - // Description missing in models - optional MethodGet get = 2; - - // Description missing in models - optional MethodPost post = 3; -} - -// A GET operation of HTTP -message MethodGet { - - // Server name/IP address - // required = true - string destination = 1; - - // The page name to perform get opertaion. - // required = true - string page = 2; -} - -// A POST operation of HTTP -message MethodPost { - - // The Server name/IP address - // required = true - string destination = 1; - - // The page name to perform post opertaion. - // required = true - string page = 2; -} - // A high level data plane traffic flow. message Flow { diff --git a/device/device.yaml b/device/device.yaml index 69e82b2e..c6db6ff5 100644 --- a/device/device.yaml +++ b/device/device.yaml @@ -59,22 +59,8 @@ components: RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 $ref: './vxlan/vxlan.yaml#/components/schemas/Device.Vxlan' x-field-uid: 6 - tcp: - description: >- - The properties of TCP and its children, - type: array - items: - $ref: './tcp/tcp.yaml#/components/schemas/Device.Tcp' - x-field-uid: 7 - http: - description: >- - The properties of HTTP and its children, - type: array - items: - $ref: './http/http.yaml#/components/schemas/Device.Http' - x-field-uid: 8 name: x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 9 + x-field-uid: 7 required: [name] \ No newline at end of file From 4da8e6bbbea6ba8535e425596ad081b92b990e9a Mon Sep 17 00:00:00 2001 From: Github Actions Bot Date: Mon, 19 Sep 2022 13:16:35 +0000 Subject: [PATCH 08/27] Update auto generated content --- artifacts/openapi.html | 724 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 724 insertions(+) create mode 100644 artifacts/openapi.html diff --git a/artifacts/openapi.html b/artifacts/openapi.html new file mode 100644 index 00000000..9be88bc7 --- /dev/null +++ b/artifacts/openapi.html @@ -0,0 +1,724 @@ + + + + + + Open Traffic Generator API + + + + + + + + + +

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard +interface for emulating layer 2-7 network devices and generating test traffic.

+

Contributions can be made in the following ways:

+ +

Configuration

set_config

Sets configuration resources on the traffic generator.

+
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

+
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

+
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

+
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

+
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. +Each device contains configurations for network interfaces and +protocols running on top of those interfaces.

+
Array of objects (Flow)

The flows that will be configured on the traffic generator.

+
object (Event)

The optional container for event configuration.

+
object (Config.Options)

Global configuration options.

+

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. +The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

+
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. +If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Flow/properties/name
  • +
+
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. +If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). +If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. +If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. +If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

+

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. +If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+
state
required
string
Enum: "start" "stop"

The capture state.

+

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

+
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

+
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

+

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

+

x-constraint:

+
    +
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • +
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • +
  • /components/schemas/Isis.V4RouteRange/properties/name
  • +
  • /components/schemas/Isis.V6RouteRange/properties/name
  • +
+
state
required
string
Enum: "withdraw" "advertise"

Route specific states

+

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

+
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

+

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

+
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

+

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

+
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

+

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

+
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

+
object (Flow.Metrics.Request)

The container for a flow metric request.

+
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

+
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

+
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

+
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

+
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

+
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

+
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

+
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

+
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

+
port_name
required
string

The name of a port a capture is started on.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
+ + + + \ No newline at end of file From d25e0c97a6f3d0e2d673b5f8fdad374df447fb1a Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 12:35:39 +0530 Subject: [PATCH 09/27] L4-L7 model updated with 1 arm test model --- app/app.yaml | 40 ++ app/traffic/client.yaml | 22 + app/traffic/endpoint.yaml | 0 app/traffic/endpoints.yaml | 22 + .../{objectives.yaml => objective.yaml} | 8 +- app/traffic/server.yaml | 21 + app/traffic/traffic.yaml | 17 + artifacts/openapi.yaml | 388 ++++++++++++++++++ artifacts/otg.proto | 272 ++++++++++++ config/config.yaml | 7 + 10 files changed, 793 insertions(+), 4 deletions(-) delete mode 100644 app/traffic/endpoint.yaml create mode 100644 app/traffic/endpoints.yaml rename app/traffic/{objectives.yaml => objective.yaml} (94%) diff --git a/app/app.yaml b/app/app.yaml index e69de29b..11a246b9 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -0,0 +1,40 @@ +components: + schemas: + App: + description: >- + A container for emulated protocol and traffic configuration. + type: object + properties: + tcp: + description: >- + The properties of TCP and its children, + type: array + items: + $ref: './tcp/tcp.yaml#/components/schemas/App.Tcp' + x-field-uid: 1 + http: + description: >- + The properties of HTTP and its children, + type: array + items: + $ref: './http/http.yaml#/components/schemas/App.Http' + x-field-uid: 2 + ssl: + description: >- + IPv4 Loopback interface that can be attached to an Ethernet in the same + device or to an Ethernet in another device. + type: array + items: + $ref: './ssl/ssl.yaml#/components/schemas/App.Ssl' + x-field-uid: 3 + traffic: + description: >- + Ethernet configuration for one or more emulated network interfaces. + type: array + items: + $ref: './traffic/traffic.yaml#/components/schemas/App.Traffic' + x-field-uid: 4 + name: + x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name + x-field-uid: 5 + required: [name] \ No newline at end of file diff --git a/app/traffic/client.yaml b/app/traffic/client.yaml index e69de29b..f28e7b40 100644 --- a/app/traffic/client.yaml +++ b/app/traffic/client.yaml @@ -0,0 +1,22 @@ +components: + schemas: + Traffic.Client: + description: >- + Traffic . + type: object + properties: + endpoints: + description: >- + EndPoint configuration for one or more emulated network interfaces. + type: array + items: + $ref: './endpoints.yaml#/components/schemas/Traffic.Endpoints' + x-field-uid: 1 + protocol: + description: >- + Protocol to use for test, such as HTTP, TCP + type: string + x-constraint: + - '/components/schemas/App.Tcp/properties/name' + - '/components/schemas/App.Http/properties/name' + x-field-uid: 2 \ No newline at end of file diff --git a/app/traffic/endpoint.yaml b/app/traffic/endpoint.yaml deleted file mode 100644 index e69de29b..00000000 diff --git a/app/traffic/endpoints.yaml b/app/traffic/endpoints.yaml new file mode 100644 index 00000000..9182ccea --- /dev/null +++ b/app/traffic/endpoints.yaml @@ -0,0 +1,22 @@ +components: + schemas: + Traffic.Endpoints: + description: >- + Endpoint configs. + type: object + properties: + ip_interface_name: + description: >- + IPv4/v6 interface name + type: string + x-constraint: + - '/components/schemas/Device.Ipv4Base/properties/name' + - '/components/schemas/Device.Ipv6Base/properties/name' + x-field-uid: 1 + ports: + description: >- + The TCP port range + type: integer + default: 7200 + x-field-uid: 2 + \ No newline at end of file diff --git a/app/traffic/objectives.yaml b/app/traffic/objective.yaml similarity index 94% rename from app/traffic/objectives.yaml rename to app/traffic/objective.yaml index 5688c170..8c8b5b68 100644 --- a/app/traffic/objectives.yaml +++ b/app/traffic/objective.yaml @@ -1,16 +1,16 @@ components: schemas: - Objective: + Traffic.Objective: type: object properties: choice: type: string - default: getsimulated_user + default: simulated_user x-field-uid: 1 x-enum: - get: + simulated_user: x-field-uid: 1 - post: + throughput: x-field-uid: 2 simulated_user: x-field-uid: 2 diff --git a/app/traffic/server.yaml b/app/traffic/server.yaml index e69de29b..dce72bc2 100644 --- a/app/traffic/server.yaml +++ b/app/traffic/server.yaml @@ -0,0 +1,21 @@ +components: + schemas: + Traffic.Server: + description: >- + Traffic . + type: object + properties: + endpoints: + description: >- + EndPoint configuration for one or more emulated network interfaces. + type: array + items: + $ref: './endpoints.yaml#/components/schemas/Traffic.Endpoints' + x-field-uid: 1 + protocol: + description: >- + TCP interface name + type: string + x-constraint: + - '/components/schemas/App.Tcp/properties/name' + x-field-uid: 2 \ No newline at end of file diff --git a/app/traffic/traffic.yaml b/app/traffic/traffic.yaml index e69de29b..cc0706d6 100644 --- a/app/traffic/traffic.yaml +++ b/app/traffic/traffic.yaml @@ -0,0 +1,17 @@ +components: + schemas: + App.Traffic: + description: >- + Traffic . + type: object + properties: + client: + $ref: './client.yaml#/components/schemas/Traffic.Client' + x-field-uid: 1 + server: + $ref: './server.yaml#/components/schemas/Traffic.Server' + x-field-uid: 2 + objective: + $ref: './objective.yaml#/components/schemas/Traffic.Objective' + x-field-uid: 3 + diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 152aad19..f5adc3b1 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -425,6 +425,13 @@ components: options: $ref: '#/components/schemas/Config.Options' x-field-uid: 8 + app: + description: |- + The emulated Application configured on devices interface. + type: array + items: + $ref: '#/components/schemas/App' + x-field-uid: 9 Config.Options: description: |- Global configuration options. @@ -6940,6 +6947,387 @@ components: format: uri example: https://127.0.0.1/event/notification x-field-uid: 2 + App: + description: |- + A container for emulated protocol and traffic configuration. + type: object + properties: + tcp: + description: "The properties of TCP and its children, " + type: array + items: + $ref: '#/components/schemas/App.Tcp' + x-field-uid: 1 + http: + description: "The properties of HTTP and its children, " + type: array + items: + $ref: '#/components/schemas/App.Http' + x-field-uid: 2 + ssl: + description: |- + IPv4 Loopback interface that can be attached to an Ethernet in the same device or to an Ethernet in another device. + type: array + items: + $ref: '#/components/schemas/App.Ssl' + x-field-uid: 3 + traffic: + description: |- + Ethernet configuration for one or more emulated network interfaces. + type: array + items: + $ref: '#/components/schemas/App.Traffic' + x-field-uid: 4 + name: + x-field-uid: 5 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + required: + - name + App.Tcp: + description: |- + TCP configs. + type: object + required: + - ip_interface_name + properties: + ip_interface_name: + description: | + IPv4/v6 interface name + + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + x-field-uid: 1 + keep_alive_time: + description: |- + The TCP keep alive timer + type: integer + default: 7200 + x-field-uid: 2 + receive_buffer_size: + description: |- + The TCP receive buffer size + type: integer + default: 4096 + x-field-uid: 3 + transmit_buffer_size: + description: |- + The TCP transmit buffer size + type: integer + default: 4096 + x-field-uid: 4 + name: + x-field-uid: 5 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + App.Http: + description: |- + HTTP configs. + type: object + properties: + transport_name: + description: | + TCP interface name + + x-constraint: + - /components/schemas/App.Tcp/properties/name + type: string + x-constraint: + - /components/schemas/App.Tcp/properties/name + x-field-uid: 1 + http_version: + description: |- + HTTP Version + type: integer + default: 1 + x-field-uid: 3 + enable_cookie_support: + description: |- + Enable cookie support for HTTP + type: boolean + default: false + x-field-uid: 4 + max_sessions: + description: |- + Max HTTP sessions + type: integer + default: 1 + x-field-uid: 5 + max_streams: + description: |- + Max HTTP streams + type: integer + default: 1 + x-field-uid: 6 + command_timeout: + description: |- + Command timeout timer in seconds + type: integer + default: 600 + x-field-uid: 7 + url_stats_count: + description: "URL stats count " + type: integer + default: 10 + x-field-uid: 8 + enable_per_conn_cookie_support: + description: |- + Enable cookie support for per connection + type: boolean + default: false + x-field-uid: 9 + method: + $ref: '#/components/schemas/Http.Method' + x-field-uid: 10 + name: + x-field-uid: 11 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + Http.Method: + type: object + properties: + choice: + type: string + default: get + x-field-uid: 1 + x-enum: + get: + x-field-uid: 1 + post: + x-field-uid: 2 + enum: + - get + - post + get: + x-field-uid: 2 + $ref: '#/components/schemas/Method.Get' + post: + x-field-uid: 3 + $ref: '#/components/schemas/Method.Post' + Method.Get: + description: |- + A GET operation of HTTP + type: object + required: + - destination + - page + properties: + destination: + description: |- + Server name/IP address + type: string + x-field-uid: 1 + page: + description: |- + The page name to perform get opertaion. + type: string + x-field-uid: 2 + Method.Post: + description: |- + A POST operation of HTTP + type: object + required: + - destination + - page + properties: + destination: + description: |- + The Server name/IP address + type: string + x-field-uid: 1 + page: + description: |- + The page name to perform post opertaion. + type: string + x-field-uid: 2 + App.Ssl: + description: |- + Traffic . + type: object + properties: + enable: + description: |- + Enable SSL for HTTP + type: boolean + default: false + x-field-uid: 1 + App.Traffic: + description: |- + Traffic . + type: object + properties: + client: + $ref: '#/components/schemas/Traffic.Client' + x-field-uid: 1 + server: + $ref: '#/components/schemas/Traffic.Server' + x-field-uid: 2 + objective: + $ref: '#/components/schemas/Traffic.Objective' + x-field-uid: 3 + Traffic.Client: + description: |- + Traffic . + type: object + properties: + endpoints: + description: |- + EndPoint configuration for one or more emulated network interfaces. + type: array + items: + $ref: '#/components/schemas/Traffic.Endpoints' + x-field-uid: 1 + protocol: + description: | + Protocol to use for test, such as HTTP, TCP + + x-constraint: + - /components/schemas/App.Tcp/properties/name + - /components/schemas/App.Http/properties/name + type: string + x-constraint: + - /components/schemas/App.Tcp/properties/name + - /components/schemas/App.Http/properties/name + x-field-uid: 2 + Traffic.Endpoints: + description: |- + Endpoint configs. + type: object + properties: + ip_interface_name: + description: | + IPv4/v6 interface name + + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4Base/properties/name + - /components/schemas/Device.Ipv6Base/properties/name + x-field-uid: 1 + ports: + description: |- + The TCP port range + type: integer + default: 7200 + x-field-uid: 2 + Traffic.Server: + description: |- + Traffic . + type: object + properties: + endpoints: + description: |- + EndPoint configuration for one or more emulated network interfaces. + type: array + items: + $ref: '#/components/schemas/Traffic.Endpoints' + x-field-uid: 1 + protocol: + description: | + TCP interface name + + x-constraint: + - /components/schemas/App.Tcp/properties/name + type: string + x-constraint: + - /components/schemas/App.Tcp/properties/name + x-field-uid: 2 + Traffic.Objective: + type: object + properties: + choice: + type: string + default: simulated_user + x-field-uid: 1 + x-enum: + simulated_user: + x-field-uid: 1 + throughput: + x-field-uid: 2 + enum: + - simulated_user + - throughput + simulated_user: + x-field-uid: 2 + $ref: '#/components/schemas/Objective.simulated_user' + throughput: + x-field-uid: 3 + $ref: '#/components/schemas/Objective.throughput' + Objective.simulated_user: + description: |- + A GET operation of HTTP + type: object + required: + - value + properties: + value: + description: |- + Number of simulated user. + type: integer + x-field-uid: 1 + ramp_up_type: + description: |- + ramp_up_type. + type: string + x-field-uid: 2 + ramp_up_value: + description: |- + ramp_up_value. + type: integer + x-field-uid: 3 + sutain_time: + description: "sutain time of the test. " + type: integer + x-field-uid: 4 + rampu_down_time: + description: |- + rampu_down_time. + type: integer + x-field-uid: 5 + Objective.throughput: + description: |- + A POST operation of HTTP + type: object + required: + - value + properties: + value: + description: |- + Throughput value. + type: integer + x-field-uid: 1 + ramp_up_type: + description: |- + ramp_up_type. + type: string + x-field-uid: 2 + ramp_up_value: + description: |- + ramp_up_value. + type: integer + x-field-uid: 3 + sutain_time: + description: "sutain time of the test. " + type: integer + x-field-uid: 4 + rampu_down_time: + description: |- + rampu_down_time. + type: integer + x-field-uid: 5 Response.Error: description: |- A list of errors that may have occurred while executing the request. diff --git a/artifacts/otg.proto b/artifacts/otg.proto index d0bfef09..b0c96fc4 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -44,6 +44,9 @@ message Config { // Description missing in models optional ConfigOptions options = 8; + + // The emulated Application configured on devices interface. + repeated App app = 9; } // Global configuration options. @@ -4836,6 +4839,275 @@ message EventSubscription { optional string callbackurl = 2; } +// A container for emulated protocol and traffic configuration. +message App { + + // The properties of TCP and its children, + repeated AppTcp tcp = 1; + + // The properties of HTTP and its children, + repeated AppHttp http = 2; + + // IPv4 Loopback interface that can be attached to an Ethernet in the same device or + // to an Ethernet in another device. + repeated AppSsl ssl = 3; + + // Ethernet configuration for one or more emulated network interfaces. + repeated AppTraffic traffic = 4; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + string name = 5; +} + +// TCP configs. +message AppTcp { + + // IPv4/v6 interface name + // + // x-constraint: + // - /components/schemas/Device.Ipv4Base/properties/name + // - /components/schemas/Device.Ipv6Base/properties/name + // + // required = true + string ip_interface_name = 1; + + // The TCP keep alive timer + // default = 7200 + optional int32 keep_alive_time = 2; + + // The TCP receive buffer size + // default = 4096 + optional int32 receive_buffer_size = 3; + + // The TCP transmit buffer size + // default = 4096 + optional int32 transmit_buffer_size = 4; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + optional string name = 5; +} + +// HTTP configs. +message AppHttp { + + // TCP interface name + // + // x-constraint: + // - /components/schemas/App.Tcp/properties/name + // + optional string transport_name = 1; + + // HTTP Version + // default = 1 + optional int32 http_version = 3; + + // Enable cookie support for HTTP + // default = False + optional bool enable_cookie_support = 4; + + // Max HTTP sessions + // default = 1 + optional int32 max_sessions = 5; + + // Max HTTP streams + // default = 1 + optional int32 max_streams = 6; + + // Command timeout timer in seconds + // default = 600 + optional int32 command_timeout = 7; + + // URL stats count + // default = 10 + optional int32 url_stats_count = 8; + + // Enable cookie support for per connection + // default = False + optional bool enable_per_conn_cookie_support = 9; + + // Description missing in models + optional HttpMethod method = 10; + + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + optional string name = 11; +} + +// Description missing in models +message HttpMethod { + + message Choice { + enum Enum { + unspecified = 0; + get = 1; + post = 2; + } + } + // Description missing in models + // default = Choice.Enum.get + optional Choice.Enum choice = 1; + + // Description missing in models + optional MethodGet get = 2; + + // Description missing in models + optional MethodPost post = 3; +} + +// A GET operation of HTTP +message MethodGet { + + // Server name/IP address + // required = true + string destination = 1; + + // The page name to perform get opertaion. + // required = true + string page = 2; +} + +// A POST operation of HTTP +message MethodPost { + + // The Server name/IP address + // required = true + string destination = 1; + + // The page name to perform post opertaion. + // required = true + string page = 2; +} + +// Traffic . +message AppSsl { + + // Enable SSL for HTTP + // default = False + optional bool enable = 1; +} + +// Traffic . +message AppTraffic { + + // Description missing in models + optional TrafficClient client = 1; + + // Description missing in models + optional TrafficServer server = 2; + + // Description missing in models + optional TrafficObjective objective = 3; +} + +// Traffic . +message TrafficClient { + + // EndPoint configuration for one or more emulated network interfaces. + repeated TrafficEndpoints endpoints = 1; + + // Protocol to use for test, such as HTTP, TCP + // + // x-constraint: + // - /components/schemas/App.Tcp/properties/name + // - /components/schemas/App.Http/properties/name + // + optional string protocol = 2; +} + +// Endpoint configs. +message TrafficEndpoints { + + // IPv4/v6 interface name + // + // x-constraint: + // - /components/schemas/Device.Ipv4Base/properties/name + // - /components/schemas/Device.Ipv6Base/properties/name + // + optional string ip_interface_name = 1; + + // The TCP port range + // default = 7200 + optional int32 ports = 2; +} + +// Traffic . +message TrafficServer { + + // EndPoint configuration for one or more emulated network interfaces. + repeated TrafficEndpoints endpoints = 1; + + // TCP interface name + // + // x-constraint: + // - /components/schemas/App.Tcp/properties/name + // + optional string protocol = 2; +} + +// Description missing in models +message TrafficObjective { + + message Choice { + enum Enum { + unspecified = 0; + simulated_user = 1; + throughput = 2; + } + } + // Description missing in models + // default = Choice.Enum.simulated_user + optional Choice.Enum choice = 1; + + // Description missing in models + optional Objectivesimulated_user simulated_user = 2; + + // Description missing in models + optional Objectivethroughput throughput = 3; +} + +// A GET operation of HTTP +message Objectivesimulated_user { + + // Number of simulated user. + // required = true + int32 value = 1; + + // ramp_up_type. + optional string ramp_up_type = 2; + + // ramp_up_value. + optional int32 ramp_up_value = 3; + + // sutain time of the test. + optional int32 sutain_time = 4; + + // rampu_down_time. + optional int32 rampu_down_time = 5; +} + +// A POST operation of HTTP +message Objectivethroughput { + + // Throughput value. + // required = true + int32 value = 1; + + // ramp_up_type. + optional string ramp_up_type = 2; + + // ramp_up_value. + optional int32 ramp_up_value = 3; + + // sutain time of the test. + optional int32 sutain_time = 4; + + // rampu_down_time. + optional int32 rampu_down_time = 5; +} + // A list of errors that may have occurred while executing the request. message ResponseError { diff --git a/config/config.yaml b/config/config.yaml index 67edf63f..25c50880 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -55,6 +55,13 @@ components: options: $ref: '#/components/schemas/Config.Options' x-field-uid: 8 + app: + description: |- + The emulated Application configured on devices interface. + type: array + items: + $ref: '../app/app.yaml#/components/schemas/App' + x-field-uid: 9 Config.Options: description: |- Global configuration options. From f4ad745c83a6e0afa739bdd1b125008db45b1900 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 12:37:26 +0530 Subject: [PATCH 10/27] Revert "Merge branch 'Ixload-models' of https://github.com/open-traffic-generator/models into Ixload-models" This reverts commit 76732430c6723cf1734f6bea05eca6ee83ebd7d2, reversing changes made to d25e0c97a6f3d0e2d673b5f8fdad374df447fb1a. --- artifacts/openapi.html | 724 ----------------------------------------- 1 file changed, 724 deletions(-) delete mode 100644 artifacts/openapi.html diff --git a/artifacts/openapi.html b/artifacts/openapi.html deleted file mode 100644 index 9be88bc7..00000000 --- a/artifacts/openapi.html +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - Open Traffic Generator API - - - - - - - - - -

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard -interface for emulating layer 2-7 network devices and generating test traffic.

-

Contributions can be made in the following ways:

- -

Configuration

set_config

Sets configuration resources on the traffic generator.

-
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

-
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

-
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

-
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

-
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. -Each device contains configurations for network interfaces and -protocols running on top of those interfaces.

-
Array of objects (Flow)

The flows that will be configured on the traffic generator.

-
object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

-

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. -The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

-
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. -If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Flow/properties/name
  • -
-
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. -If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). -If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. -If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. -If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

-

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. -If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-
state
required
string
Enum: "start" "stop"

The capture state.

-

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

-
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

-
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

-

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

-

x-constraint:

-
    -
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • -
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • -
  • /components/schemas/Isis.V4RouteRange/properties/name
  • -
  • /components/schemas/Isis.V6RouteRange/properties/name
  • -
-
state
required
string
Enum: "withdraw" "advertise"

Route specific states

-

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

-
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

-

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

-
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

-

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

-
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

-

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

-
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

-
object (Flow.Metrics.Request)

The container for a flow metric request.

-
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

-
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

-
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

-
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

-
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

-
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

-
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

-
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

-
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

-
port_name
required
string

The name of a port a capture is started on.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
- - - - \ No newline at end of file From 21d176d4a25ba7a6de9686e6d90f66f5a515dd57 Mon Sep 17 00:00:00 2001 From: Github Actions Bot Date: Tue, 20 Sep 2022 07:07:40 +0000 Subject: [PATCH 11/27] Update auto generated content --- artifacts/openapi.html | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/artifacts/openapi.html b/artifacts/openapi.html index 9be88bc7..20d40ef3 100644 --- a/artifacts/openapi.html +++ b/artifacts/openapi.html @@ -546,7 +546,8 @@ protocols running on top of those interfaces.

Array of objects (Flow)

The flows that will be configured on the traffic generator.

object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

+
object (Config.Options)

Global configuration options.

+
Array of objects (App)

The emulated Application configured on devices interface.

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. +

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

@@ -624,7 +625,7 @@

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    }
}

set_route_state

Updates the state of configuration resources on the traffic generator.

+

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

set_route_state

Updates the state of configuration resources on the traffic generator.

Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

x-constraint:

    @@ -713,7 +714,7 @@ Additional details are in the errors.

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
+ + + + + +

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard +interface for emulating layer 2-7 network devices and generating test traffic.

+

Contributions can be made in the following ways:

+ +

Configuration

set_config

Sets configuration resources on the traffic generator.

+
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

+
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

+
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

+
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

+
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. +Each device contains configurations for network interfaces and +protocols running on top of those interfaces.

+
Array of objects (Flow)

The flows that will be configured on the traffic generator.

+
object (Event)

The optional container for event configuration.

+
object (Config.Options)

Global configuration options.

+
Array of objects (App)

The emulated Application configured on devices interface.

+

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. +The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

+
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. +If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Flow/properties/name
  • +
+
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. +If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). +If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. +If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. +If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

+

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. +If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+
state
required
string
Enum: "start" "stop"

The capture state.

+

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

+
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

+
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

+

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

set_route_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

+

x-constraint:

+
    +
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • +
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • +
  • /components/schemas/Isis.V4RouteRange/properties/name
  • +
  • /components/schemas/Isis.V6RouteRange/properties/name
  • +
+
state
required
string
Enum: "withdraw" "advertise"

Route specific states

+

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

+
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

+

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

+
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

+

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

+
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

+

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

+
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

+
object (Flow.Metrics.Request)

The container for a flow metric request.

+
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

+
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

+
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

+
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

+
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

+
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

+
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

+
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

+
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

+
port_name
required
string

The name of a port a capture is started on.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
+ + + + \ No newline at end of file From 8cb799063e6e7eaa500eeb2b0c8ba0ef01ccb25c Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 18:24:56 +0530 Subject: [PATCH 13/27] L4-7 models TCP port range support --- app/traffic/endpoints.yaml | 22 +++--- artifacts/openapi.yaml | 140 ++++++++++++++++++++++++++++++++++--- artifacts/otg.proto | 104 +++++++++++++++++++++++++-- 3 files changed, 244 insertions(+), 22 deletions(-) diff --git a/app/traffic/endpoints.yaml b/app/traffic/endpoints.yaml index 403c194a..3aa6f939 100644 --- a/app/traffic/endpoints.yaml +++ b/app/traffic/endpoints.yaml @@ -14,10 +14,13 @@ components: - '/components/schemas/Device.Ipv6Base/properties/name' x-field-uid: 1 ports: - description: >- - The TCP port range - type: integer - default: 80 + x-field-pattern: + description: >- + TCP port range + format: integer + length: 3 + default: 80 + features: [count] x-field-uid: 2 Endpoints.Server: @@ -29,10 +32,13 @@ components: $ref: '#/components/schemas/Endpoints.Dest' x-field-uid: 1 ports: - description: >- - The TCP port range - type: integer - default: 80 + x-field-pattern: + description: >- + TCP port range + format: integer + length: 3 + default: 80 + features: [count] x-field-uid: 2 Endpoints.Dest: diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index d8efc511..e2d585ab 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -7218,11 +7218,8 @@ components: - /components/schemas/Device.Ipv6Base/properties/name x-field-uid: 1 ports: - description: |- - The TCP port range - type: integer - default: 80 x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Endpoints.Client.Ports' Endpoints.Server: description: |- Endpoint configs for Server. @@ -7232,11 +7229,8 @@ components: $ref: '#/components/schemas/Endpoints.Dest' x-field-uid: 1 ports: - description: |- - The TCP port range - type: integer - default: 80 x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Endpoints.Server.Ports' Endpoints.Dest: description: |- Endpoint destination config for server. @@ -20261,3 +20255,133 @@ components: decrement: $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' x-field-uid: 6 + Pattern.Endpoints.Client.Ports.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 80 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Endpoints.Client.Ports: + description: |- + TCP port range + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 80 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 80 + minimum: 0 + maximum: 7 + increment: + $ref: '#/components/schemas/Pattern.Endpoints.Client.Ports.Counter' + x-field-uid: 4 + decrement: + $ref: '#/components/schemas/Pattern.Endpoints.Client.Ports.Counter' + x-field-uid: 5 + Pattern.Endpoints.Server.Ports.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 80 + minimum: 0 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + minimum: 0 + maximum: 7 + count: + type: integer + default: 1 + x-field-uid: 3 + Pattern.Endpoints.Server.Ports: + description: |- + TCP port range + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 80 + minimum: 0 + maximum: 7 + values: + type: array + items: + type: integer + x-field-uid: 3 + default: + - 80 + minimum: 0 + maximum: 7 + increment: + $ref: '#/components/schemas/Pattern.Endpoints.Server.Ports.Counter' + x-field-uid: 4 + decrement: + $ref: '#/components/schemas/Pattern.Endpoints.Server.Ports.Counter' + x-field-uid: 5 diff --git a/artifacts/otg.proto b/artifacts/otg.proto index cd3dd7e3..bd77bd85 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -5028,9 +5028,8 @@ message EndpointsClient { // optional string ip_interface_name = 1; - // The TCP port range - // default = 80 - optional int32 ports = 2; + // Description missing in models + optional PatternEndpointsClientPorts ports = 2; } // Endpoint configs for Server. @@ -5039,9 +5038,8 @@ message EndpointsServer { // Description missing in models optional EndpointsDest dest = 1; - // The TCP port range - // default = 80 - optional int32 ports = 2; + // Description missing in models + optional PatternEndpointsServerPorts ports = 2; } // Endpoint destination config for server. @@ -14500,6 +14498,100 @@ message PatternFlowMplsTimeToLive { optional PatternFlowMplsTimeToLiveCounter decrement = 6; } +// integer counter pattern +message PatternEndpointsClientPortsCounter { + + // Description missing in models + // default = 80 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// TCP port range +message PatternEndpointsClientPorts { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 80 + optional int32 value = 2; + + // Description missing in models + // default = [80] + repeated int32 values = 3; + + // Description missing in models + optional PatternEndpointsClientPortsCounter increment = 4; + + // Description missing in models + optional PatternEndpointsClientPortsCounter decrement = 5; +} + +// integer counter pattern +message PatternEndpointsServerPortsCounter { + + // Description missing in models + // default = 80 + optional int32 start = 1; + + // Description missing in models + // default = 1 + optional int32 step = 2; + + // Description missing in models + // default = 1 + optional int32 count = 3; +} + +// TCP port range +message PatternEndpointsServerPorts { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 80 + optional int32 value = 2; + + // Description missing in models + // default = [80] + repeated int32 values = 3; + + // Description missing in models + optional PatternEndpointsServerPortsCounter increment = 4; + + // Description missing in models + optional PatternEndpointsServerPortsCounter decrement = 5; +} + // The request has succeeded with no application content but the server // may return a list of detailed warnings. message Success { From 18c5e637e41ca9c5580307a5fed8f920c78d0dce Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 18:29:32 +0530 Subject: [PATCH 14/27] Revert "Merge branch 'Ixload-models' of https://github.com/open-traffic-generator/models into Ixload-models" This reverts commit 51fab7a5b0363cbd5c702b01c345aa64fd3e821c, reversing changes made to 8cb799063e6e7eaa500eeb2b0c8ba0ef01ccb25c. --- artifacts/openapi.html | 725 ----------------------------------------- 1 file changed, 725 deletions(-) delete mode 100644 artifacts/openapi.html diff --git a/artifacts/openapi.html b/artifacts/openapi.html deleted file mode 100644 index 8af230f6..00000000 --- a/artifacts/openapi.html +++ /dev/null @@ -1,725 +0,0 @@ - - - - - - Open Traffic Generator API - - - - - - - - - -

Open Traffic Generator API (0.9.2)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard -interface for emulating layer 2-7 network devices and generating test traffic.

-

Contributions can be made in the following ways:

- -

Configuration

set_config

Sets configuration resources on the traffic generator.

-
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

-
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

-
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

-
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

-
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. -Each device contains configurations for network interfaces and -protocols running on top of those interfaces.

-
Array of objects (Flow)

The flows that will be configured on the traffic generator.

-
object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

-
Array of objects (App)

The emulated Application configured on devices interface.

-

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. -The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

-
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. -If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Flow/properties/name
  • -
-
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. -If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). -If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. -If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. -If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

-

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. -If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-
state
required
string
Enum: "start" "stop"

The capture state.

-

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

-
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

-
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

-

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "app": [
    ]
}

set_route_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

-

x-constraint:

-
    -
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • -
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • -
  • /components/schemas/Isis.V4RouteRange/properties/name
  • -
  • /components/schemas/Isis.V6RouteRange/properties/name
  • -
-
state
required
string
Enum: "withdraw" "advertise"

Route specific states

-

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

-
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

-

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

-
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

-

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

-
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

-

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

-
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

-
object (Flow.Metrics.Request)

The container for a flow metric request.

-
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

-
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

-
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

-
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

-
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

-
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

-
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

-
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

-
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

-
port_name
required
string

The name of a port a capture is started on.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
- - - - \ No newline at end of file From d9e832af16eaf5ae5e7d0b8cc13e6cbfad1b86ca Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 20:59:42 +0530 Subject: [PATCH 15/27] updated methods --- app/http/method.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/http/method.yaml b/app/http/method.yaml index cabff026..d1f20a2b 100644 --- a/app/http/method.yaml +++ b/app/http/method.yaml @@ -23,9 +23,9 @@ components: description: >- A GET operation of HTTP type: object - required: [destination, page] + required: [url, page] properties: - destination: + url: description: >- Server name/IP address type: string @@ -39,9 +39,9 @@ components: description: >- A POST operation of HTTP type: object - required: [destination, page] + required: [url, page] properties: - destination: + url: description: >- The Server name/IP address type: string From 375dbc28bed35380a4e53f27c479fdcb2c16d200 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 21:06:30 +0530 Subject: [PATCH 16/27] updated methods --- artifacts/openapi.yaml | 8 ++++---- artifacts/otg.proto | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index e2d585ab..9be728ae 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -7120,10 +7120,10 @@ components: A GET operation of HTTP type: object required: - - destination + - url - page properties: - destination: + url: description: |- Server name/IP address type: string @@ -7138,10 +7138,10 @@ components: A POST operation of HTTP type: object required: - - destination + - url - page properties: - destination: + url: description: |- The Server name/IP address type: string diff --git a/artifacts/otg.proto b/artifacts/otg.proto index bd77bd85..5f81d8ef 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -4962,7 +4962,7 @@ message MethodGet { // Server name/IP address // required = true - string destination = 1; + string url = 1; // The page name to perform get opertaion. // required = true @@ -4974,7 +4974,7 @@ message MethodPost { // The Server name/IP address // required = true - string destination = 1; + string url = 1; // The page name to perform post opertaion. // required = true From e8994a81a80bf40ff2f37a7659c437e8b68a9d4f Mon Sep 17 00:00:00 2001 From: waseembaig Date: Tue, 20 Sep 2022 22:26:50 +0530 Subject: [PATCH 17/27] concurrent_conn --- app/app.yaml | 5 ++-- app/ssl/ssl.yaml | 2 +- app/traffic/objective.yaml | 45 ++++++++++++++++++++++++++++++--- artifacts/openapi.yaml | 52 ++++++++++++++++++++++++++++++++------ artifacts/otg.proto | 39 ++++++++++++++++++++++------ 5 files changed, 119 insertions(+), 24 deletions(-) diff --git a/app/app.yaml b/app/app.yaml index 11a246b9..bc65691c 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -21,15 +21,14 @@ components: x-field-uid: 2 ssl: description: >- - IPv4 Loopback interface that can be attached to an Ethernet in the same - device or to an Ethernet in another device. + SSL configuration type: array items: $ref: './ssl/ssl.yaml#/components/schemas/App.Ssl' x-field-uid: 3 traffic: description: >- - Ethernet configuration for one or more emulated network interfaces. + Traffic configuration of endpoints type: array items: $ref: './traffic/traffic.yaml#/components/schemas/App.Traffic' diff --git a/app/ssl/ssl.yaml b/app/ssl/ssl.yaml index bb983759..118b80d9 100644 --- a/app/ssl/ssl.yaml +++ b/app/ssl/ssl.yaml @@ -2,7 +2,7 @@ components: schemas: App.Ssl: description: >- - Traffic . + SSL configuration . type: object properties: enable: diff --git a/app/traffic/objective.yaml b/app/traffic/objective.yaml index 1bd325c6..4662054c 100644 --- a/app/traffic/objective.yaml +++ b/app/traffic/objective.yaml @@ -14,14 +14,19 @@ components: x-field-uid: 1 throughput: x-field-uid: 2 + conn_connections: + x-field-uid: 3 simulated_user: x-field-uid: 2 - $ref: '#/components/schemas/Objective.simulated_user' + $ref: '#/components/schemas/Objective.Simulated_user' throughput: x-field-uid: 3 - $ref: '#/components/schemas/Objective.throughput' + $ref: '#/components/schemas/Objective.Throughput' + conn_connections: + x-field-uid: 4 + $ref: '#/components/schemas/Objective.Conn_curr' - Objective.simulated_user: + Objective.Simulated_user: description: >- simulated user traffic type: object @@ -52,11 +57,43 @@ components: Rampu down time in seconds. type: integer x-field-uid: 5 - Objective.throughput: + Objective.Throughput: description: >- Throughput traffic type: object required: [value] + properties: + value: + description: >- + Throughput value. + type: integer + x-field-uid: 1 + ramp_up_type: + description: >- + ramp_up_type. + type: string + x-field-uid: 2 + ramp_up_value: + description: >- + ramp_up_value. + type: integer + x-field-uid: 3 + sutain_time: + description: >- + sutain time of the test. + type: integer + x-field-uid: 4 + rampu_down_time: + description: >- + rampu_down_time. + type: integer + x-field-uid: 5 + + Objective.Conn_curr: + description: >- + Conncurrent connections objectives + type: object + required: [value] properties: value: description: >- diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 9be728ae..45640583 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -6966,14 +6966,13 @@ components: x-field-uid: 2 ssl: description: |- - IPv4 Loopback interface that can be attached to an Ethernet in the same device or to an Ethernet in another device. + SSL configuration type: array items: $ref: '#/components/schemas/App.Ssl' x-field-uid: 3 traffic: - description: |- - Ethernet configuration for one or more emulated network interfaces. + description: "Traffic configuration of endpoints " type: array items: $ref: '#/components/schemas/App.Traffic' @@ -7153,7 +7152,7 @@ components: x-field-uid: 2 App.Ssl: description: |- - Traffic . + SSL configuration . type: object properties: enable: @@ -7303,16 +7302,22 @@ components: x-field-uid: 1 throughput: x-field-uid: 2 + conn_connections: + x-field-uid: 3 enum: - simulated_user - throughput + - conn_connections simulated_user: x-field-uid: 2 - $ref: '#/components/schemas/Objective.simulated_user' + $ref: '#/components/schemas/Objective.Simulated_user' throughput: x-field-uid: 3 - $ref: '#/components/schemas/Objective.throughput' - Objective.simulated_user: + $ref: '#/components/schemas/Objective.Throughput' + conn_connections: + x-field-uid: 4 + $ref: '#/components/schemas/Objective.Conn_curr' + Objective.Simulated_user: description: |- simulated user traffic type: object @@ -7343,7 +7348,7 @@ components: Rampu down time in seconds. type: integer x-field-uid: 5 - Objective.throughput: + Objective.Throughput: description: "Throughput traffic " type: object required: @@ -7373,6 +7378,37 @@ components: rampu_down_time. type: integer x-field-uid: 5 + Objective.Conn_curr: + description: |- + Conncurrent connections objectives + type: object + required: + - value + properties: + value: + description: |- + Throughput value. + type: integer + x-field-uid: 1 + ramp_up_type: + description: |- + ramp_up_type. + type: string + x-field-uid: 2 + ramp_up_value: + description: |- + ramp_up_value. + type: integer + x-field-uid: 3 + sutain_time: + description: "sutain time of the test. " + type: integer + x-field-uid: 4 + rampu_down_time: + description: |- + rampu_down_time. + type: integer + x-field-uid: 5 Response.Error: description: |- A list of errors that may have occurred while executing the request. diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 5f81d8ef..06503c23 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -4848,11 +4848,10 @@ message App { // The properties of HTTP and its children, repeated AppHttp http = 2; - // IPv4 Loopback interface that can be attached to an Ethernet in the same device or - // to an Ethernet in another device. + // SSL configuration repeated AppSsl ssl = 3; - // Ethernet configuration for one or more emulated network interfaces. + // Traffic configuration of endpoints repeated AppTraffic traffic = 4; // Globally unique name of an object. It also serves as the primary key for arrays of @@ -4981,7 +4980,7 @@ message MethodPost { string page = 2; } -// Traffic . +// SSL configuration . message AppSsl { // Enable SSL for HTTP @@ -5091,6 +5090,7 @@ message TrafficObjective { unspecified = 0; simulated_user = 1; throughput = 2; + conn_connections = 3; } } // Description missing in models @@ -5098,14 +5098,17 @@ message TrafficObjective { optional Choice.Enum choice = 1; // Description missing in models - optional Objectivesimulated_user simulated_user = 2; + optional ObjectiveSimulated_user simulated_user = 2; // Description missing in models - optional Objectivethroughput throughput = 3; + optional ObjectiveThroughput throughput = 3; + + // Description missing in models + optional ObjectiveConn_curr conn_connections = 4; } // simulated user traffic -message Objectivesimulated_user { +message ObjectiveSimulated_user { // Number of simulated user. // required = true @@ -5125,7 +5128,27 @@ message Objectivesimulated_user { } // Throughput traffic -message Objectivethroughput { +message ObjectiveThroughput { + + // Throughput value. + // required = true + int32 value = 1; + + // ramp_up_type. + optional string ramp_up_type = 2; + + // ramp_up_value. + optional int32 ramp_up_value = 3; + + // sutain time of the test. + optional int32 sutain_time = 4; + + // rampu_down_time. + optional int32 rampu_down_time = 5; +} + +// Conncurrent connections objectives +message ObjectiveConn_curr { // Throughput value. // required = true From daf8f63a4babce1b8261d885f7dc4d1096841ea4 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 20 Oct 2022 00:39:41 +0530 Subject: [PATCH 18/27] Updated with review comments --- app/app.yaml | 6 +- app/http/http.yaml | 64 +--- app/http/httpclient.yaml | 61 ++++ app/http/httpserver.yaml | 40 +++ app/http/method.yaml | 18 +- app/{traffic => statefull_flow}/client.yaml | 4 +- .../endpoints.yaml | 2 +- .../objective.yaml | 63 ++-- app/{traffic => statefull_flow}/server.yaml | 6 +- app/statefull_flow/statefull_flow.yaml | 17 ++ app/tcp/tcp.yaml | 38 +-- app/traffic/traffic.yaml | 17 -- artifacts/openapi.yaml | 282 +++++++++++------- artifacts/otg.proto | 233 +++++++++------ common/common.yaml | 13 - config/config.yaml | 4 +- 16 files changed, 509 insertions(+), 359 deletions(-) create mode 100644 app/http/httpclient.yaml create mode 100644 app/http/httpserver.yaml rename app/{traffic => statefull_flow}/client.yaml (85%) rename app/{traffic => statefull_flow}/endpoints.yaml (96%) rename app/{traffic => statefull_flow}/objective.yaml (63%) rename app/{traffic => statefull_flow}/server.yaml (80%) create mode 100644 app/statefull_flow/statefull_flow.yaml delete mode 100644 app/traffic/traffic.yaml diff --git a/app/app.yaml b/app/app.yaml index bc65691c..9d451b77 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -2,7 +2,7 @@ components: schemas: App: description: >- - A container for emulated protocol and traffic configuration. + A container for emulated TCP/UDP , application protocols, attacks and it's traffic configurations. type: object properties: tcp: @@ -26,12 +26,12 @@ components: items: $ref: './ssl/ssl.yaml#/components/schemas/App.Ssl' x-field-uid: 3 - traffic: + statefull_flows: description: >- Traffic configuration of endpoints type: array items: - $ref: './traffic/traffic.yaml#/components/schemas/App.Traffic' + $ref: './statefull_flow/statefull_flow.yaml#/components/schemas/Statefull_flow' x-field-uid: 4 name: x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name diff --git a/app/http/http.yaml b/app/http/http.yaml index b12fa848..380373f9 100644 --- a/app/http/http.yaml +++ b/app/http/http.yaml @@ -2,61 +2,15 @@ components: schemas: App.Http: description: >- - HTTP configs. + Configurations of one or more HTTP client and server. type: object properties: - transport_name: - description: >- - TCP interface name - type: string - x-constraint: - - '/components/schemas/App.Tcp/properties/name' + client: + $ref: './httpclient.yaml#/components/schemas/Http.Client' x-field-uid: 1 - http_version: - description: >- - HTTP Version - type: integer - default: 1 - x-field-uid: 3 - enable_cookie_support: - description: >- - Enable cookie support for HTTP - type: boolean - default: false - x-field-uid: 4 - max_sessions: - description: >- - Max HTTP sessions - type: integer - default: 1 - x-field-uid: 5 - max_streams: - description: >- - Max HTTP streams - type: integer - default: 1 - x-field-uid: 6 - command_timeout: - description: >- - Command timeout timer in seconds - type: integer - default: 600 - x-field-uid: 7 - url_stats_count: - description: >- - URL stats count - type: integer - default: 10 - x-field-uid: 8 - enable_per_conn_cookie_support: - description: >- - Enable cookie support for per connection - type: boolean - default: false - x-field-uid: 9 - method: - $ref: './method.yaml#/components/schemas/Http.Method' - x-field-uid: 10 - name: - x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 11 + server: + $ref: './httpserver.yaml#/components/schemas/Http.Server' + x-field-uid: 2 + + + diff --git a/app/http/httpclient.yaml b/app/http/httpclient.yaml new file mode 100644 index 00000000..89cb11c9 --- /dev/null +++ b/app/http/httpclient.yaml @@ -0,0 +1,61 @@ +components: + schemas: + Http.Client: + description: >- + One or more HTTP Client configurations and its HTTP methods configs. + type: object + properties: + transport_name: + description: >- + Transport interface that can be attached to TCP. In the same apps or different apps container. + type: string + x-constraint: + - '/components/schemas/App.Tcp/properties/name' + x-field-uid: 1 + http_version: + description: >- + HTTP Version + type: string + x-field-uid: 2 + x-enum: + "1.0": + x-field-uid: 1 + "1.1": + x-field-uid: 2 + "2.0": + x-field-uid: 3 + default: "1.0" + cookie_jar_size: + description: >- + cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled) + type: integer + default: 10 + x-field-uid: 3 + cookie_reject_probability: + description: >- + cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie’s contents from the server. (only if enable_cookie_support is enabled) + type: integer + default: 0 + x-field-uid: 4 + enable_cookie_support: + description: >- + The client will support cookie retention, as indicated in the cookie_jar_size and cookie_reject_probability + type: boolean + default: false + x-field-uid: 5 + command_timeout: + description: >- + HTTP command timeout timer in seconds + type: number + default: 600 + x-field-uid: 6 + methods: + description: >- + The HTTP methods such as GET, POST and its properties. + type: array + items: + $ref: './method.yaml#/components/schemas/Http.Method' + x-field-uid: 10 + name: + x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name + x-field-uid: 11 \ No newline at end of file diff --git a/app/http/httpserver.yaml b/app/http/httpserver.yaml new file mode 100644 index 00000000..3692c3f6 --- /dev/null +++ b/app/http/httpserver.yaml @@ -0,0 +1,40 @@ +components: + schemas: + Http.Server: + description: >- + One or more HTTP Server configurations. + type: object + properties: + transport_name: + description: >- + Transport interface that can be attached to TCP. In the same apps or different apps container. + type: string + x-constraint: + - '/components/schemas/App.Tcp/properties/name' + x-field-uid: 1 + http_version: + description: >- + HTTP Version + type: string + x-field-uid: 2 + x-enum: + "1.0": + x-field-uid: 1 + "1.1": + x-field-uid: 2 + "2.0": + x-field-uid: 3 + default: "1.0" + http_port: + description: >- + The port number to which the HTTP server will respond to non-SSL requests. + type: integer + default: 80 + x-field-uid: 3 + request_timeout: + description: >- + The amount of seconds that the server will wait for input on an open connection before closing the session with a ‘408’ error. + type: integer + default: 300 + x-field-uid: 4 + \ No newline at end of file diff --git a/app/http/method.yaml b/app/http/method.yaml index d1f20a2b..36a94c2c 100644 --- a/app/http/method.yaml +++ b/app/http/method.yaml @@ -21,33 +21,33 @@ components: Method.Get: description: >- - A GET operation of HTTP + A GET operation of HTTP client. Retrieves the page from the HTTP Server. type: object - required: [url, page] + required: [server, page] properties: - url: + server: description: >- Server name/IP address type: string x-field-uid: 1 page: description: >- - The page name to perform get opertaion. + The page url/name to perform HTTP GET operation. type: string x-field-uid: 2 Method.Post: description: >- - A POST operation of HTTP + A POST operation of HTTP client. To post the data on HTTP Server. type: object - required: [url, page] + required: [server, page] properties: - url: + server: description: >- - The Server name/IP address + Server name/IP address type: string x-field-uid: 1 page: description: >- - The page name to perform post opertaion. + The page url/name to perform HTTP POST operation. type: string x-field-uid: 2 \ No newline at end of file diff --git a/app/traffic/client.yaml b/app/statefull_flow/client.yaml similarity index 85% rename from app/traffic/client.yaml rename to app/statefull_flow/client.yaml index cfa1cbb1..3844f356 100644 --- a/app/traffic/client.yaml +++ b/app/statefull_flow/client.yaml @@ -1,13 +1,13 @@ components: schemas: - Traffic.Client: + Statefull_flow.Client: description: >- Client traffic configs. type: object properties: endpoints: description: >- - EndPoint configuration for one or more emulated network interfaces. + EndPoint configuration for one or more emulated apps. type: array items: $ref: './endpoints.yaml#/components/schemas/Endpoints.Client' diff --git a/app/traffic/endpoints.yaml b/app/statefull_flow/endpoints.yaml similarity index 96% rename from app/traffic/endpoints.yaml rename to app/statefull_flow/endpoints.yaml index 3aa6f939..59498de3 100644 --- a/app/traffic/endpoints.yaml +++ b/app/statefull_flow/endpoints.yaml @@ -7,7 +7,7 @@ components: properties: ip_interface_name: description: >- - IPv4/v6 interface name + IPv4/v6 interface name, which is configured in devices. type: string x-constraint: - '/components/schemas/Device.Ipv4Base/properties/name' diff --git a/app/traffic/objective.yaml b/app/statefull_flow/objective.yaml similarity index 63% rename from app/traffic/objective.yaml rename to app/statefull_flow/objective.yaml index 4662054c..8386bfd9 100644 --- a/app/traffic/objective.yaml +++ b/app/statefull_flow/objective.yaml @@ -1,6 +1,6 @@ components: schemas: - Traffic.Objective: + Statefull_flow.Objective: description: >- objective config such simulated user, thoughput, conncurrent connections. type: object @@ -42,17 +42,25 @@ components: Ramp up type for test. type: string x-field-uid: 2 + x-enum: + "users_intervals": + x-field-uid: 1 + "max_pending_user": + x-field-uid: 2 + "immediate": + x-field-uid: 3 + default: "1.0" ramp_up_value: description: >- - Ramp up value in seconds. + Value applied to ramp_up_type to either bring up users at a certain rate. type: integer x-field-uid: 3 sutain_time: description: >- - sutain time of the test in seconds. + Amount of time when all users are up and performing the central test objectives, such as retrieving or serving pages. type: integer x-field-uid: 4 - rampu_down_time: + ramp_down_time: description: >- Rampu down time in seconds. type: integer @@ -68,26 +76,16 @@ components: Throughput value. type: integer x-field-uid: 1 - ramp_up_type: + sutain_time: description: >- - ramp_up_type. - type: string + Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. + type: number x-field-uid: 2 - ramp_up_value: + ramp_down_time: description: >- - ramp_up_value. - type: integer + Amount of seconds used for closing any connections that are still open after all transactions are complete. + type: number x-field-uid: 3 - sutain_time: - description: >- - sutain time of the test. - type: integer - x-field-uid: 4 - rampu_down_time: - description: >- - rampu_down_time. - type: integer - x-field-uid: 5 Objective.Conn_curr: description: >- @@ -100,23 +98,18 @@ components: Throughput value. type: integer x-field-uid: 1 - ramp_up_type: + sutain_time: description: >- - ramp_up_type. - type: string + Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. + type: number x-field-uid: 2 - ramp_up_value: + ramp_down_time: description: >- - ramp_up_value. - type: integer + Amount of seconds used for closing any connections that are still open after all transactions are complete. + type: number x-field-uid: 3 - sutain_time: - description: >- - sutain time of the test. - type: integer - x-field-uid: 4 - rampu_down_time: + ramp_down_value: description: >- - rampu_down_time. - type: integer - x-field-uid: 5 \ No newline at end of file + Amount of seconds used for closing any connections that are still open after all transactions are complete. + type: number + x-field-uid: 4 \ No newline at end of file diff --git a/app/traffic/server.yaml b/app/statefull_flow/server.yaml similarity index 80% rename from app/traffic/server.yaml rename to app/statefull_flow/server.yaml index f29fac5a..11d96355 100644 --- a/app/traffic/server.yaml +++ b/app/statefull_flow/server.yaml @@ -1,13 +1,13 @@ components: schemas: - Traffic.Server: + Statefull_flow.Server: description: >- - Server traffic configs . + Traffic configuration for server(s). type: object properties: endpoints: description: >- - EndPoint configuration for one or more emulated network interfaces. + EndPoint configuration for one or more emulated apps. type: array items: $ref: './endpoints.yaml#/components/schemas/Endpoints.Server' diff --git a/app/statefull_flow/statefull_flow.yaml b/app/statefull_flow/statefull_flow.yaml new file mode 100644 index 00000000..6a832c5a --- /dev/null +++ b/app/statefull_flow/statefull_flow.yaml @@ -0,0 +1,17 @@ +components: + schemas: + Statefull_flow: + description: >- + Statefull_flows configure traffic for emulated protocols which is configured in apps. + type: object + properties: + client: + $ref: './client.yaml#/components/schemas/Statefull_flow.Client' + x-field-uid: 1 + server: + $ref: './server.yaml#/components/schemas/Statefull_flow.Server' + x-field-uid: 2 + objectives: + $ref: './objective.yaml#/components/schemas/Statefull_flow.Objective' + x-field-uid: 3 + diff --git a/app/tcp/tcp.yaml b/app/tcp/tcp.yaml index 9a2276ef..a293afe6 100644 --- a/app/tcp/tcp.yaml +++ b/app/tcp/tcp.yaml @@ -2,36 +2,40 @@ components: schemas: App.Tcp: description: >- - TCP configs. + The properties of TCP Configurations. type: object - required: [ip_interface_name] properties: - ip_interface_name: - description: >- - IPv4/v6 interface name - type: string - x-constraint: - - '/components/schemas/Device.Ipv4Base/properties/name' - - '/components/schemas/Device.Ipv6Base/properties/name' - x-field-uid: 1 keep_alive_time: description: >- - The TCP keep alive timer - type: integer + If a link has no activity on it for the time specified, + keep-alive probes are sent to determine if the link is still up. The Keep-alive Time value is expressed in seconds. + type: number default: 7200 + x-field-uid: 1 + keep_alive_probes: + description: >- + Number of keep-alive probes sent out before determining that a link is down. + type: number + default: 9 x-field-uid: 2 + keep_alive_interval: + description: >- + The number of seconds between repeated keep-alive probes. + type: number + default: 75 + x-field-uid: 3 receive_buffer_size: description: >- - The TCP receive buffer size + The TCP read buffer size. type: integer default: 4096 - x-field-uid: 3 + x-field-uid: 4 transmit_buffer_size: description: >- - The TCP transmit buffer size + The TCP write buffer size. type: integer default: 4096 - x-field-uid: 4 + x-field-uid: 5 name: x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 5 \ No newline at end of file + x-field-uid: 6 \ No newline at end of file diff --git a/app/traffic/traffic.yaml b/app/traffic/traffic.yaml deleted file mode 100644 index bfe6f943..00000000 --- a/app/traffic/traffic.yaml +++ /dev/null @@ -1,17 +0,0 @@ -components: - schemas: - App.Traffic: - description: >- - Traffic config. - type: object - properties: - client: - $ref: './client.yaml#/components/schemas/Traffic.Client' - x-field-uid: 1 - server: - $ref: './server.yaml#/components/schemas/Traffic.Server' - x-field-uid: 2 - objective: - $ref: './objective.yaml#/components/schemas/Traffic.Objective' - x-field-uid: 3 - diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 45640583..42fab966 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -425,9 +425,9 @@ components: options: $ref: '#/components/schemas/Config.Options' x-field-uid: 8 - app: + apps: description: |- - The emulated Application configured on devices interface. + The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device interface. type: array items: $ref: '#/components/schemas/App' @@ -6949,7 +6949,7 @@ components: x-field-uid: 2 App: description: |- - A container for emulated protocol and traffic configuration. + A container for emulated TCP/UDP , application protocols, attacks and it's traffic configurations. type: object properties: tcp: @@ -6971,11 +6971,11 @@ components: items: $ref: '#/components/schemas/App.Ssl' x-field-uid: 3 - traffic: + statefull_flows: description: "Traffic configuration of endpoints " type: array items: - $ref: '#/components/schemas/App.Traffic' + $ref: '#/components/schemas/Statefull_flow' x-field-uid: 4 name: x-field-uid: 5 @@ -6987,55 +6987,63 @@ components: - name App.Tcp: description: |- - TCP configs. + The properties of TCP Configurations. type: object - required: - - ip_interface_name properties: - ip_interface_name: - description: | - IPv4/v6 interface name - - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - - /components/schemas/Device.Ipv6Base/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv4Base/properties/name - - /components/schemas/Device.Ipv6Base/properties/name - x-field-uid: 1 keep_alive_time: description: |- - The TCP keep alive timer - type: integer + If a link has no activity on it for the time specified, keep-alive probes are sent to determine if the link is still up. The Keep-alive Time value is expressed in seconds. + type: number default: 7200 + x-field-uid: 1 + keep_alive_probes: + description: |- + Number of keep-alive probes sent out before determining that a link is down. + type: number + default: 9 x-field-uid: 2 + keep_alive_interval: + description: |- + The number of seconds between repeated keep-alive probes. + type: number + default: 75 + x-field-uid: 3 receive_buffer_size: description: |- - The TCP receive buffer size + The TCP read buffer size. type: integer default: 4096 - x-field-uid: 3 + x-field-uid: 4 transmit_buffer_size: description: |- - The TCP transmit buffer size + The TCP write buffer size. type: integer default: 4096 - x-field-uid: 4 - name: x-field-uid: 5 + name: + x-field-uid: 6 description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ App.Http: description: |- - HTTP configs. + Configurations of one or more HTTP client and server. + type: object + properties: + client: + $ref: '#/components/schemas/Http.Client' + x-field-uid: 1 + server: + $ref: '#/components/schemas/Http.Server' + x-field-uid: 2 + Http.Client: + description: "One or more HTTP Client configurations and its HTTP methods configs. " type: object properties: transport_name: description: | - TCP interface name + Transport interface that can be attached to TCP. In the same apps or different apps container. x-constraint: - /components/schemas/App.Tcp/properties/name @@ -7046,46 +7054,49 @@ components: http_version: description: |- HTTP Version + type: string + x-field-uid: 2 + x-enum: + '1.0': + x-field-uid: 1 + '1.1': + x-field-uid: 2 + '2.0': + x-field-uid: 3 + default: '1.0' + enum: + - '1.0' + - '1.1' + - '2.0' + cookie_jar_size: + description: |- + cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled) type: integer - default: 1 + default: 10 x-field-uid: 3 + cookie_reject_probability: + description: |- + cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie’s contents from the server. (only if enable_cookie_support is enabled) + type: integer + default: 0 + x-field-uid: 4 enable_cookie_support: description: |- - Enable cookie support for HTTP + The client will support cookie retention, as indicated in the cookie_jar_size and cookie_reject_probability type: boolean default: false - x-field-uid: 4 - max_sessions: - description: |- - Max HTTP sessions - type: integer - default: 1 x-field-uid: 5 - max_streams: - description: |- - Max HTTP streams - type: integer - default: 1 - x-field-uid: 6 command_timeout: description: |- - Command timeout timer in seconds - type: integer + HTTP command timeout timer in seconds + type: number default: 600 - x-field-uid: 7 - url_stats_count: - description: "URL stats count " - type: integer - default: 10 - x-field-uid: 8 - enable_per_conn_cookie_support: - description: |- - Enable cookie support for per connection - type: boolean - default: false - x-field-uid: 9 - method: - $ref: '#/components/schemas/Http.Method' + x-field-uid: 6 + methods: + description: "The HTTP methods such as GET, POST and its properties. " + type: array + items: + $ref: '#/components/schemas/Http.Method' x-field-uid: 10 name: x-field-uid: 11 @@ -7116,40 +7127,83 @@ components: $ref: '#/components/schemas/Method.Post' Method.Get: description: |- - A GET operation of HTTP + A GET operation of HTTP client. Retrieves the page from the HTTP Server. type: object required: - - url + - server - page properties: - url: + server: description: |- Server name/IP address type: string x-field-uid: 1 page: description: |- - The page name to perform get opertaion. + The page url/name to perform HTTP GET operation. type: string x-field-uid: 2 Method.Post: description: |- - A POST operation of HTTP + A POST operation of HTTP client. To post the data on HTTP Server. type: object required: - - url + - server - page properties: - url: + server: description: |- - The Server name/IP address + Server name/IP address type: string x-field-uid: 1 page: description: |- - The page name to perform post opertaion. + The page url/name to perform HTTP POST operation. + type: string + x-field-uid: 2 + Http.Server: + description: "One or more HTTP Server configurations. " + type: object + properties: + transport_name: + description: | + Transport interface that can be attached to TCP. In the same apps or different apps container. + + x-constraint: + - /components/schemas/App.Tcp/properties/name + type: string + x-constraint: + - /components/schemas/App.Tcp/properties/name + x-field-uid: 1 + http_version: + description: |- + HTTP Version type: string x-field-uid: 2 + x-enum: + '1.0': + x-field-uid: 1 + '1.1': + x-field-uid: 2 + '2.0': + x-field-uid: 3 + default: '1.0' + enum: + - '1.0' + - '1.1' + - '2.0' + http_port: + description: |- + The port number to which the HTTP server will respond to non-SSL requests. + type: integer + default: 80 + x-field-uid: 3 + request_timeout: + description: |- + The amount of seconds that the server will wait for input on an open connection before closing the session with a ‘408’ error. + type: integer + default: 300 + x-field-uid: 4 App.Ssl: description: |- SSL configuration . @@ -7161,28 +7215,28 @@ components: type: boolean default: false x-field-uid: 1 - App.Traffic: - description: |- - Traffic config. + Statefull_flow: + description: "Statefull_flows configure traffic for emulated protocols which\ + \ is configured in apps. " type: object properties: client: - $ref: '#/components/schemas/Traffic.Client' + $ref: '#/components/schemas/Statefull_flow.Client' x-field-uid: 1 server: - $ref: '#/components/schemas/Traffic.Server' + $ref: '#/components/schemas/Statefull_flow.Server' x-field-uid: 2 - objective: - $ref: '#/components/schemas/Traffic.Objective' + objectives: + $ref: '#/components/schemas/Statefull_flow.Objective' x-field-uid: 3 - Traffic.Client: + Statefull_flow.Client: description: |- Client traffic configs. type: object properties: endpoints: description: |- - EndPoint configuration for one or more emulated network interfaces. + EndPoint configuration for one or more emulated apps. type: array items: $ref: '#/components/schemas/Endpoints.Client' @@ -7206,7 +7260,7 @@ components: properties: ip_interface_name: description: | - IPv4/v6 interface name + IPv4/v6 interface name, which is configured in devices. x-constraint: - /components/schemas/Device.Ipv4Base/properties/name @@ -7264,14 +7318,14 @@ components: IPv4/v6 address type: string x-field-uid: 3 - Traffic.Server: + Statefull_flow.Server: description: |- - Server traffic configs . + Traffic configuration for server(s). type: object properties: endpoints: description: |- - EndPoint configuration for one or more emulated network interfaces. + EndPoint configuration for one or more emulated apps. type: array items: $ref: '#/components/schemas/Endpoints.Server' @@ -7288,7 +7342,7 @@ components: - /components/schemas/App.Tcp/properties/name - /components/schemas/App.Http/properties/name x-field-uid: 2 - Traffic.Objective: + Statefull_flow.Objective: description: |- objective config such simulated user, thoughput, conncurrent connections. type: object @@ -7334,16 +7388,29 @@ components: Ramp up type for test. type: string x-field-uid: 2 + x-enum: + users_intervals: + x-field-uid: 1 + max_pending_user: + x-field-uid: 2 + immediate: + x-field-uid: 3 + default: '1.0' + enum: + - users_intervals + - max_pending_user + - immediate ramp_up_value: description: |- - Ramp up value in seconds. + Value applied to ramp_up_type to either bring up users at a certain rate. type: integer x-field-uid: 3 sutain_time: - description: "sutain time of the test in seconds. " + description: |- + Amount of time when all users are up and performing the central test objectives, such as retrieving or serving pages. type: integer x-field-uid: 4 - rampu_down_time: + ramp_down_time: description: |- Rampu down time in seconds. type: integer @@ -7359,25 +7426,16 @@ components: Throughput value. type: integer x-field-uid: 1 - ramp_up_type: + sutain_time: description: |- - ramp_up_type. - type: string + Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. + type: number x-field-uid: 2 - ramp_up_value: + ramp_down_time: description: |- - ramp_up_value. - type: integer + Amount of seconds used for closing any connections that are still open after all transactions are complete. + type: number x-field-uid: 3 - sutain_time: - description: "sutain time of the test. " - type: integer - x-field-uid: 4 - rampu_down_time: - description: |- - rampu_down_time. - type: integer - x-field-uid: 5 Objective.Conn_curr: description: |- Conncurrent connections objectives @@ -7390,25 +7448,21 @@ components: Throughput value. type: integer x-field-uid: 1 - ramp_up_type: + sutain_time: description: |- - ramp_up_type. - type: string + Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. + type: number x-field-uid: 2 - ramp_up_value: + ramp_down_time: description: |- - ramp_up_value. - type: integer + Amount of seconds used for closing any connections that are still open after all transactions are complete. + type: number x-field-uid: 3 - sutain_time: - description: "sutain time of the test. " - type: integer - x-field-uid: 4 - rampu_down_time: + ramp_down_value: description: |- - rampu_down_time. - type: integer - x-field-uid: 5 + Amount of seconds used for closing any connections that are still open after all transactions are complete. + type: number + x-field-uid: 4 Response.Error: description: |- A list of errors that may have occurred while executing the request. diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 06503c23..60e2d9fe 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -45,8 +45,9 @@ message Config { // Description missing in models optional ConfigOptions options = 8; - // The emulated Application configured on devices interface. - repeated App app = 9; + // The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached + // to device interface. + repeated App apps = 9; } // Global configuration options. @@ -4839,7 +4840,8 @@ message EventSubscription { optional string callbackurl = 2; } -// A container for emulated protocol and traffic configuration. +// A container for emulated TCP/UDP , application protocols, attacks and it's traffic +// configurations. message App { // The properties of TCP and its children, @@ -4852,7 +4854,7 @@ message App { repeated AppSsl ssl = 3; // Traffic configuration of endpoints - repeated AppTraffic traffic = 4; + repeated Statefull_flow statefull_flows = 4; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. @@ -4860,75 +4862,90 @@ message App { string name = 5; } -// TCP configs. +// The properties of TCP Configurations. message AppTcp { - // IPv4/v6 interface name - // - // x-constraint: - // - /components/schemas/Device.Ipv4Base/properties/name - // - /components/schemas/Device.Ipv6Base/properties/name - // - // required = true - string ip_interface_name = 1; - - // The TCP keep alive timer + // If a link has no activity on it for the time specified, keep-alive probes are sent + // to determine if the link is still up. The Keep-alive Time value is expressed in seconds. // default = 7200 - optional int32 keep_alive_time = 2; + optional float keep_alive_time = 1; - // The TCP receive buffer size + // Number of keep-alive probes sent out before determining that a link is down. + // default = 9 + optional float keep_alive_probes = 2; + + // The number of seconds between repeated keep-alive probes. + // default = 75 + optional float keep_alive_interval = 3; + + // The TCP read buffer size. // default = 4096 - optional int32 receive_buffer_size = 3; + optional int32 receive_buffer_size = 4; - // The TCP transmit buffer size + // The TCP write buffer size. // default = 4096 - optional int32 transmit_buffer_size = 4; + optional int32 transmit_buffer_size = 5; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. - optional string name = 5; + optional string name = 6; } -// HTTP configs. +// Configurations of one or more HTTP client and server. message AppHttp { - // TCP interface name + // Description missing in models + optional HttpClient client = 1; + + // Description missing in models + optional HttpServer server = 2; +} + +// One or more HTTP Client configurations and its HTTP methods configs. +message HttpClient { + + // Transport interface that can be attached to TCP. In the same apps or different apps + // container. // // x-constraint: // - /components/schemas/App.Tcp/properties/name // optional string transport_name = 1; + message HttpVersion { + enum Enum { + unspecified = 0; + 1.0 = 1; + 1.1 = 2; + 2.0 = 3; + } + } // HTTP Version - // default = 1 - optional int32 http_version = 3; + // default = HttpVersion.Enum.1.0 + optional HttpVersion.Enum http_version = 2; - // Enable cookie support for HTTP - // default = False - optional bool enable_cookie_support = 4; + // cookie_jar_size the number of cookies that will be saved for each client. The maximum + // value of this is 300. (only if enable_cookie_support is enabled) + // default = 10 + optional int32 cookie_jar_size = 3; - // Max HTTP sessions - // default = 1 - optional int32 max_sessions = 5; + // cookie_reject_probability indicates the probability, from 0 to 1, that a client will + // reject a request for a cookie’s contents from the server. (only if enable_cookie_support + // is enabled) + // default = 0 + optional int32 cookie_reject_probability = 4; - // Max HTTP streams - // default = 1 - optional int32 max_streams = 6; + // The client will support cookie retention, as indicated in the cookie_jar_size and + // cookie_reject_probability + // default = False + optional bool enable_cookie_support = 5; - // Command timeout timer in seconds + // HTTP command timeout timer in seconds // default = 600 - optional int32 command_timeout = 7; - - // URL stats count - // default = 10 - optional int32 url_stats_count = 8; - - // Enable cookie support for per connection - // default = False - optional bool enable_per_conn_cookie_support = 9; + optional float command_timeout = 6; - // Description missing in models - optional HttpMethod method = 10; + // The HTTP methods such as GET, POST and its properties. + repeated HttpMethod methods = 10; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. @@ -4956,30 +4973,63 @@ message HttpMethod { optional MethodPost post = 3; } -// A GET operation of HTTP +// A GET operation of HTTP client. Retrieves the page from the HTTP Server. message MethodGet { // Server name/IP address // required = true - string url = 1; + string server = 1; - // The page name to perform get opertaion. + // The page url/name to perform HTTP GET operation. // required = true string page = 2; } -// A POST operation of HTTP +// A POST operation of HTTP client. To post the data on HTTP Server. message MethodPost { - // The Server name/IP address + // Server name/IP address // required = true - string url = 1; + string server = 1; - // The page name to perform post opertaion. + // The page url/name to perform HTTP POST operation. // required = true string page = 2; } +// One or more HTTP Server configurations. +message HttpServer { + + // Transport interface that can be attached to TCP. In the same apps or different apps + // container. + // + // x-constraint: + // - /components/schemas/App.Tcp/properties/name + // + optional string transport_name = 1; + + message HttpVersion { + enum Enum { + unspecified = 0; + 1.0 = 1; + 1.1 = 2; + 2.0 = 3; + } + } + // HTTP Version + // default = HttpVersion.Enum.1.0 + optional HttpVersion.Enum http_version = 2; + + // The port number to which the HTTP server will respond to non-SSL requests. + // default = 80 + optional int32 http_port = 3; + + // The amount of seconds that the server will wait for input on an open connection before + // closing the session with a ‘408’ error. + // default = 300 + optional int32 request_timeout = 4; +} + // SSL configuration . message AppSsl { @@ -4988,23 +5038,24 @@ message AppSsl { optional bool enable = 1; } -// Traffic config. -message AppTraffic { +// Statefull_flows configure traffic for emulated protocols which is configured in apps. +// +message Statefull_flow { // Description missing in models - optional TrafficClient client = 1; + optional Statefull_flowClient client = 1; // Description missing in models - optional TrafficServer server = 2; + optional Statefull_flowServer server = 2; // Description missing in models - optional TrafficObjective objective = 3; + optional Statefull_flowObjective objectives = 3; } // Client traffic configs. -message TrafficClient { +message Statefull_flowClient { - // EndPoint configuration for one or more emulated network interfaces. + // EndPoint configuration for one or more emulated apps. repeated EndpointsClient endpoints = 1; // Protocol to use for test, such as HTTP, TCP @@ -5019,7 +5070,7 @@ message TrafficClient { // Endpoint configs for Client. message EndpointsClient { - // IPv4/v6 interface name + // IPv4/v6 interface name, which is configured in devices. // // x-constraint: // - /components/schemas/Device.Ipv4Base/properties/name @@ -5067,10 +5118,10 @@ message EndpointsDest { optional string ip_address = 3; } -// Server traffic configs . -message TrafficServer { +// Traffic configuration for server(s). +message Statefull_flowServer { - // EndPoint configuration for one or more emulated network interfaces. + // EndPoint configuration for one or more emulated apps. repeated EndpointsServer endpoints = 1; // Protocol to use for test, such as HTTP, TCP @@ -5083,7 +5134,7 @@ message TrafficServer { } // objective config such simulated user, thoughput, conncurrent connections. -message TrafficObjective { +message Statefull_flowObjective { message Choice { enum Enum { @@ -5114,17 +5165,27 @@ message ObjectiveSimulated_user { // required = true int32 value = 1; + message RampUpType { + enum Enum { + unspecified = 0; + users_intervals = 1; + max_pending_user = 2; + immediate = 3; + } + } // Ramp up type for test. - optional string ramp_up_type = 2; + // default = RampUpType.Enum.1.0 + optional RampUpType.Enum ramp_up_type = 2; - // Ramp up value in seconds. + // Value applied to ramp_up_type to either bring up users at a certain rate. optional int32 ramp_up_value = 3; - // sutain time of the test in seconds. + // Amount of time when all users are up and performing the central test objectives, + // such as retrieving or serving pages. optional int32 sutain_time = 4; // Rampu down time in seconds. - optional int32 rampu_down_time = 5; + optional int32 ramp_down_time = 5; } // Throughput traffic @@ -5134,17 +5195,13 @@ message ObjectiveThroughput { // required = true int32 value = 1; - // ramp_up_type. - optional string ramp_up_type = 2; + // Amount of seconds when all users are up and performing the central test objectives, + // such as retrieving or serving pages. + optional float sutain_time = 2; - // ramp_up_value. - optional int32 ramp_up_value = 3; - - // sutain time of the test. - optional int32 sutain_time = 4; - - // rampu_down_time. - optional int32 rampu_down_time = 5; + // Amount of seconds used for closing any connections that are still open after all + // transactions are complete. + optional float ramp_down_time = 3; } // Conncurrent connections objectives @@ -5154,17 +5211,17 @@ message ObjectiveConn_curr { // required = true int32 value = 1; - // ramp_up_type. - optional string ramp_up_type = 2; + // Amount of seconds when all users are up and performing the central test objectives, + // such as retrieving or serving pages. + optional float sutain_time = 2; - // ramp_up_value. - optional int32 ramp_up_value = 3; - - // sutain time of the test. - optional int32 sutain_time = 4; + // Amount of seconds used for closing any connections that are still open after all + // transactions are complete. + optional float ramp_down_time = 3; - // rampu_down_time. - optional int32 rampu_down_time = 5; + // Amount of seconds used for closing any connections that are still open after all + // transactions are complete. + optional float ramp_down_value = 4; } // A list of errors that may have occurred while executing the request. diff --git a/common/common.yaml b/common/common.yaml index 9e114d8f..ea0ed37c 100644 --- a/common/common.yaml +++ b/common/common.yaml @@ -22,17 +22,4 @@ components: description: >- A empty container that is used to indicate a null choice. type: object - - Value.Object: - type: object - properties: - max: - description: >- - Maximum value of object - type: integer - min: - description: >- - Minimum value of object - type: integer - diff --git a/config/config.yaml b/config/config.yaml index 25c50880..497ce3d3 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -55,9 +55,9 @@ components: options: $ref: '#/components/schemas/Config.Options' x-field-uid: 8 - app: + apps: description: |- - The emulated Application configured on devices interface. + The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device interface. type: array items: $ref: '../app/app.yaml#/components/schemas/App' From 9b43e80c3b6c215c5f6e3cfaa9dc61dbc0c04327 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 20 Oct 2022 00:44:41 +0530 Subject: [PATCH 19/27] updated --- app/app.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/app.yaml b/app/app.yaml index 9d451b77..80611fdd 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -28,7 +28,7 @@ components: x-field-uid: 3 statefull_flows: description: >- - Traffic configuration of endpoints + Traffic configuration of endpoints. type: array items: $ref: './statefull_flow/statefull_flow.yaml#/components/schemas/Statefull_flow' From 78ed28f56264983d630113496989784276c2ad30 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 20 Oct 2022 11:48:51 +0530 Subject: [PATCH 20/27] update --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 497ce3d3..1ea94989 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -57,7 +57,7 @@ components: x-field-uid: 8 apps: description: |- - The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device interface. + The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device IPv4/v6 interface. type: array items: $ref: '../app/app.yaml#/components/schemas/App' From a00158bb318c5df750567ba1e5ba899e8eb6bd25 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 20 Oct 2022 13:30:12 +0530 Subject: [PATCH 21/27] updated with review comments --- app/http/httpclient.yaml | 10 ++--- app/http/httpserver.yaml | 10 ++--- artifacts/openapi.yaml | 85 ++++++++++++++++++---------------------- artifacts/otg.proto | 81 +++++++++++++++++++------------------- 4 files changed, 88 insertions(+), 98 deletions(-) diff --git a/app/http/httpclient.yaml b/app/http/httpclient.yaml index 89cb11c9..ce1f4a21 100644 --- a/app/http/httpclient.yaml +++ b/app/http/httpclient.yaml @@ -18,13 +18,13 @@ components: type: string x-field-uid: 2 x-enum: - "1.0": + "v10": x-field-uid: 1 - "1.1": + "v11": x-field-uid: 2 - "2.0": + "v20": x-field-uid: 3 - default: "1.0" + default: "v10" cookie_jar_size: description: >- cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled) @@ -33,7 +33,7 @@ components: x-field-uid: 3 cookie_reject_probability: description: >- - cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie’s contents from the server. (only if enable_cookie_support is enabled) + cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled) type: integer default: 0 x-field-uid: 4 diff --git a/app/http/httpserver.yaml b/app/http/httpserver.yaml index 3692c3f6..646732bb 100644 --- a/app/http/httpserver.yaml +++ b/app/http/httpserver.yaml @@ -18,13 +18,13 @@ components: type: string x-field-uid: 2 x-enum: - "1.0": + "v10": x-field-uid: 1 - "1.1": + "v11": x-field-uid: 2 - "2.0": + "v20": x-field-uid: 3 - default: "1.0" + default: "v10" http_port: description: >- The port number to which the HTTP server will respond to non-SSL requests. @@ -33,7 +33,7 @@ components: x-field-uid: 3 request_timeout: description: >- - The amount of seconds that the server will wait for input on an open connection before closing the session with a ‘408’ error. + The amount of seconds that the server will wait for input on an open connection before closing the session with a 408 error. type: integer default: 300 x-field-uid: 4 diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 89f2c6ca..fa087a36 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -427,7 +427,7 @@ components: x-field-uid: 8 apps: description: |- - The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device interface. + The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device IPv4/v6 interface. type: array items: $ref: '#/components/schemas/App' @@ -699,9 +699,7 @@ components: properties: port_name: description: | - Status: deprecated - property port_name is deprecated from the snappi version x.x.x. - please use connection.port_name instead of port_name + Status: {'status': 'deprecated', 'additional_information': 'property port_name is deprecated from the snappi version x.x.x.\nplease use connection.port_name instead of port_name'} The unique name of a Port or a LAG that will emulate this interface. port_name is deprecated and will be removed in future release.port_name and connection can't be used together, use either port_name or connection. @@ -1359,8 +1357,7 @@ components: status: under-review additional_information: Capture schema is under review description: |- - Status: under-review - Capture schema is under review + Status: {'status': 'under-review', 'additional_information': 'Capture schema is under review'} Configuration for capture settings. type: object required: @@ -1667,8 +1664,7 @@ components: status: under-review additional_information: Device.IsisRouter is under review description: |- - Status: under-review - Device.IsisRouter is under review + Status: {'status': 'under-review', 'additional_information': 'Device.IsisRouter is under review'} A container of properties for an ISIS router and its interfaces. type: object required: @@ -1733,8 +1729,9 @@ components: x-status: status: under-review additional_information: Device.IsisMultiInstance is under review - description: "Status: under-review\nDevice.IsisMultiInstance is under review\n\ - This container properties of an Multi-Instance-capable router (MI-RTR). " + description: "Status: {'status': 'under-review', 'additional_information': 'Device.IsisMultiInstance\ + \ is under review'}\nThis container properties of an Multi-Instance-capable\ + \ router (MI-RTR). " type: object properties: iid: @@ -1760,8 +1757,7 @@ components: status: under-review additional_information: Isis.Interface is under review description: |- - Status: under-review - Isis.Interface is under review + Status: {'status': 'under-review', 'additional_information': 'Isis.Interface is under review'} Configuration for single ISIS interface. type: object required: @@ -1894,8 +1890,7 @@ components: status: under-review additional_information: Isis.MT is under review description: |- - Status: under-review - Isis.MT is under review + Status: {'status': 'under-review', 'additional_information': 'Isis.MT is under review'} Configuration of properties per interface per topology when multiple topologies are configured in an ISIS router. in a ISIS router. type: object @@ -1921,8 +1916,7 @@ components: status: under-review additional_information: LinkState.TE is under review description: |- - Status: under-review - LinkState.TE is under review + Status: {'status': 'under-review', 'additional_information': 'LinkState.TE is under review'} A container for Traffic Engineering properties on a interface. type: object properties: @@ -3366,8 +3360,7 @@ components: status: under-review additional_information: Bgp.Advanced is under review description: |- - Status: under-review - Bgp.Advanced is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.Advanced is under review'} Configuration for BGP advanced settings. type: object properties: @@ -3405,8 +3398,7 @@ components: status: under-review additional_information: Bgp.Capability is under review description: |- - Status: under-review - Bgp.Capability is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.Capability is under review'} Configuration for BGP capability settings. type: object properties: @@ -3566,8 +3558,7 @@ components: status: under-review additional_information: Bgp.LearnedInformationFilter is under review description: |- - Status: under-review - Bgp.LearnedInformationFilter is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.LearnedInformationFilter is under review'} Configuration for controlling storage of BGP learned information recieved from the peer. type: object properties: @@ -4092,8 +4083,7 @@ components: status: under-review additional_information: BgpSrte.SegmentList is under review description: |- - Status: under-review - BgpSrte.SegmentList is under review + Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentList is under review'} Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. type: object properties: @@ -4131,8 +4121,7 @@ components: status: under-review additional_information: BgpSrte.Segment is under review description: |- - Status: under-review - BgpSrte.Segment is under review + Status: {'status': 'under-review', 'additional_information': 'BgpSrte.Segment is under review'} A Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. type: object required: @@ -4371,8 +4360,7 @@ components: status: under-review additional_information: BgpSrte.SegmentCTypeSubTlv is under review description: |- - Status: under-review - BgpSrte.SegmentCTypeSubTlv is under review + Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentCTypeSubTlv is under review'} Type C: IPv4 Node Address with optional SID. type: object required: @@ -5020,8 +5008,7 @@ components: status: under-review additional_information: Bgp.V6SegmentRouting is under review description: |- - Status: under-review - Bgp.V6SegmentRouting is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.V6SegmentRouting is under review'} Configuration for BGPv6 segment routing settings. type: object properties: @@ -7041,7 +7028,8 @@ components: $ref: '#/components/schemas/App.Ssl' x-field-uid: 3 statefull_flows: - description: "Traffic configuration of endpoints " + description: |- + Traffic configuration of endpoints. type: array items: $ref: '#/components/schemas/Statefull_flow' @@ -7052,6 +7040,7 @@ components: Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-unique: global required: - name App.Tcp: @@ -7095,6 +7084,7 @@ components: Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-unique: global App.Http: description: |- Configurations of one or more HTTP client and server. @@ -7126,17 +7116,17 @@ components: type: string x-field-uid: 2 x-enum: - '1.0': + v10: x-field-uid: 1 - '1.1': + v11: x-field-uid: 2 - '2.0': + v20: x-field-uid: 3 - default: '1.0' + default: v10 enum: - - '1.0' - - '1.1' - - '2.0' + - v10 + - v11 + - v20 cookie_jar_size: description: |- cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled) @@ -7145,7 +7135,7 @@ components: x-field-uid: 3 cookie_reject_probability: description: |- - cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie’s contents from the server. (only if enable_cookie_support is enabled) + cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled) type: integer default: 0 x-field-uid: 4 @@ -7173,6 +7163,7 @@ components: Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-unique: global Http.Method: type: object properties: @@ -7250,17 +7241,17 @@ components: type: string x-field-uid: 2 x-enum: - '1.0': + v10: x-field-uid: 1 - '1.1': + v11: x-field-uid: 2 - '2.0': + v20: x-field-uid: 3 - default: '1.0' + default: v10 enum: - - '1.0' - - '1.1' - - '2.0' + - v10 + - v11 + - v20 http_port: description: |- The port number to which the HTTP server will respond to non-SSL requests. @@ -7269,7 +7260,7 @@ components: x-field-uid: 3 request_timeout: description: |- - The amount of seconds that the server will wait for input on an open connection before closing the session with a ‘408’ error. + The amount of seconds that the server will wait for input on an open connection before closing the session with a 408 error. type: integer default: 300 x-field-uid: 4 diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 0bb5f81f..a4bc7a83 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -46,7 +46,7 @@ message Config { optional ConfigOptions options = 8; // The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached - // to device interface. + // to device IPv4/v6 interface. repeated App apps = 9; } @@ -230,9 +230,9 @@ message DeviceEthernetBase { // An Ethernet interface with IPv4 and IPv6 addresses. message DeviceEthernet { - // Status: deprecated - // property port_name is deprecated from the snappi version x.x.x. - // please use connection.port_name instead of port_name + // Status: {'status': 'deprecated', 'additional_information': 'property port_name is + // deprecated from the snappi version x.x.x.\nplease use connection.port_name instead + // of port_name'} // The unique name of a Port or a LAG that will emulate this interface. // port_name is deprecated and will be removed in future release.port_name and connection // can't be used together, use either port_name or connection. @@ -677,8 +677,8 @@ message Layer1Ieee8021qbb { optional int32 pfc_class_7 = 9; } -// Status: under-review -// Capture schema is under review +// Status: {'status': 'under-review', 'additional_information': 'Capture schema is under +// review'} // Configuration for capture settings. message Capture { @@ -935,8 +935,8 @@ message Device { string name = 7; } -// Status: under-review -// Device.IsisRouter is under review +// Status: {'status': 'under-review', 'additional_information': 'Device.IsisRouter is +// under review'} // A container of properties for an ISIS router and its interfaces. message DeviceIsisRouter { @@ -972,8 +972,8 @@ message DeviceIsisRouter { string name = 9; } -// Status: under-review -// Device.IsisMultiInstance is under review +// Status: {'status': 'under-review', 'additional_information': 'Device.IsisMultiInstance +// is under review'} // This container properties of an Multi-Instance-capable router (MI-RTR). message DeviceIsisMultiInstance { @@ -987,8 +987,8 @@ message DeviceIsisMultiInstance { repeated int32 itids = 2; } -// Status: under-review -// Isis.Interface is under review +// Status: {'status': 'under-review', 'additional_information': 'Isis.Interface is under +// review'} // Configuration for single ISIS interface. message IsisInterface { @@ -1076,8 +1076,7 @@ message IsisInterfaceLevel { optional int32 dead_interval = 3; } -// Status: under-review -// Isis.MT is under review +// Status: {'status': 'under-review', 'additional_information': 'Isis.MT is under review'} // Configuration of properties per interface per topology when multiple topologies are // configured in an ISIS router. // in a ISIS router. @@ -1092,8 +1091,8 @@ message IsisMT { optional int32 link_metric = 2; } -// Status: under-review -// LinkState.TE is under review +// Status: {'status': 'under-review', 'additional_information': 'LinkState.TE is under +// review'} // A container for Traffic Engineering properties on a interface. message LinkStateTE { @@ -2113,8 +2112,8 @@ message BgpRouteTarget { optional string rt_value = 2; } -// Status: under-review -// Bgp.Advanced is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.Advanced is under +// review'} // Configuration for BGP advanced settings. message BgpAdvanced { @@ -2143,8 +2142,8 @@ message BgpAdvanced { optional string md5_key = 5; } -// Status: under-review -// Bgp.Capability is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.Capability is under +// review'} // Configuration for BGP capability settings. message BgpCapability { @@ -2261,8 +2260,8 @@ message BgpCapability { optional bool ipv6_unicast_add_path = 25; } -// Status: under-review -// Bgp.LearnedInformationFilter is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.LearnedInformationFilter +// is under review'} // Configuration for controlling storage of BGP learned information recieved from the // peer. message BgpLearnedInformationFilter { @@ -2651,8 +2650,8 @@ message BgpSrteExplicitNullLabelPolicySubTlv { optional ExplicitNullLabelPolicy.Enum explicit_null_label_policy = 1; } -// Status: under-review -// BgpSrte.SegmentList is under review +// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentList +// is under review'} // Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV // encodes a single explicit path towards the Endpoint. message BgpSrteSegmentList { @@ -2677,8 +2676,8 @@ message BgpSrteSegmentList { optional bool active = 4; } -// Status: under-review -// BgpSrte.Segment is under review +// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.Segment is +// under review'} // A Segment sub-TLV describes a single segment in a segment list i.e., a single element // of the explicit path. The Segment sub-TLVs are optional. message BgpSrteSegment { @@ -2836,8 +2835,8 @@ message BgpSrteSegmentBTypeSubTlv { optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 3; } -// Status: under-review -// BgpSrte.SegmentCTypeSubTlv is under review +// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentCTypeSubTlv +// is under review'} // Type C: IPv4 Node Address with optional SID. message BgpSrteSegmentCTypeSubTlv { @@ -3279,8 +3278,8 @@ message BgpV6Interface { repeated BgpV6Peer peers = 2; } -// Status: under-review -// Bgp.V6SegmentRouting is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.V6SegmentRouting +// is under review'} // Configuration for BGPv6 segment routing settings. message BgpV6SegmentRouting { @@ -4865,7 +4864,7 @@ message App { // SSL configuration repeated AppSsl ssl = 3; - // Traffic configuration of endpoints + // Traffic configuration of endpoints. repeated Statefull_flow statefull_flows = 4; // Globally unique name of an object. It also serves as the primary key for arrays of @@ -4927,13 +4926,13 @@ message HttpClient { message HttpVersion { enum Enum { unspecified = 0; - 1.0 = 1; - 1.1 = 2; - 2.0 = 3; + v10 = 1; + v11 = 2; + v20 = 3; } } // HTTP Version - // default = HttpVersion.Enum.1.0 + // default = HttpVersion.Enum.v10 optional HttpVersion.Enum http_version = 2; // cookie_jar_size the number of cookies that will be saved for each client. The maximum @@ -4942,7 +4941,7 @@ message HttpClient { optional int32 cookie_jar_size = 3; // cookie_reject_probability indicates the probability, from 0 to 1, that a client will - // reject a request for a cookie’s contents from the server. (only if enable_cookie_support + // reject a request for a cookie(s) contents from the server. (only if enable_cookie_support // is enabled) // default = 0 optional int32 cookie_reject_probability = 4; @@ -5023,13 +5022,13 @@ message HttpServer { message HttpVersion { enum Enum { unspecified = 0; - 1.0 = 1; - 1.1 = 2; - 2.0 = 3; + v10 = 1; + v11 = 2; + v20 = 3; } } // HTTP Version - // default = HttpVersion.Enum.1.0 + // default = HttpVersion.Enum.v10 optional HttpVersion.Enum http_version = 2; // The port number to which the HTTP server will respond to non-SSL requests. @@ -5037,7 +5036,7 @@ message HttpServer { optional int32 http_port = 3; // The amount of seconds that the server will wait for input on an open connection before - // closing the session with a ‘408’ error. + // closing the session with a 408 error. // default = 300 optional int32 request_timeout = 4; } From 635c8674287b93a103b5548f8fda83960f6a483e Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 20 Oct 2022 17:34:56 +0530 Subject: [PATCH 22/27] update_objectives --- app/statefull_flow/objective.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/statefull_flow/objective.yaml b/app/statefull_flow/objective.yaml index 8386bfd9..a932bb91 100644 --- a/app/statefull_flow/objective.yaml +++ b/app/statefull_flow/objective.yaml @@ -22,7 +22,7 @@ components: throughput: x-field-uid: 3 $ref: '#/components/schemas/Objective.Throughput' - conn_connections: + concurrent_connections: x-field-uid: 4 $ref: '#/components/schemas/Objective.Conn_curr' @@ -39,7 +39,7 @@ components: x-field-uid: 1 ramp_up_type: description: >- - Ramp up type for test. + Ramp up type to either bring up users at a certain rate. type: string x-field-uid: 2 x-enum: @@ -49,7 +49,7 @@ components: x-field-uid: 2 "immediate": x-field-uid: 3 - default: "1.0" + default: "users_intervals" ramp_up_value: description: >- Value applied to ramp_up_type to either bring up users at a certain rate. From b897b7f15e3a586dabc9ffc193c4c92cddecac17 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Thu, 20 Oct 2022 17:38:49 +0530 Subject: [PATCH 23/27] update --- app/statefull_flow/objective.yaml | 2 +- artifacts/openapi.yaml | 10 +++++----- artifacts/otg.proto | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/statefull_flow/objective.yaml b/app/statefull_flow/objective.yaml index a932bb91..ee6c8c98 100644 --- a/app/statefull_flow/objective.yaml +++ b/app/statefull_flow/objective.yaml @@ -14,7 +14,7 @@ components: x-field-uid: 1 throughput: x-field-uid: 2 - conn_connections: + concurrent_connections: x-field-uid: 3 simulated_user: x-field-uid: 2 diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index fa087a36..9ac29465 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -7416,19 +7416,19 @@ components: x-field-uid: 1 throughput: x-field-uid: 2 - conn_connections: + concurrent_connections: x-field-uid: 3 enum: - simulated_user - throughput - - conn_connections + - concurrent_connections simulated_user: x-field-uid: 2 $ref: '#/components/schemas/Objective.Simulated_user' throughput: x-field-uid: 3 $ref: '#/components/schemas/Objective.Throughput' - conn_connections: + concurrent_connections: x-field-uid: 4 $ref: '#/components/schemas/Objective.Conn_curr' Objective.Simulated_user: @@ -7445,7 +7445,7 @@ components: x-field-uid: 1 ramp_up_type: description: |- - Ramp up type for test. + Ramp up type to either bring up users at a certain rate. type: string x-field-uid: 2 x-enum: @@ -7455,7 +7455,7 @@ components: x-field-uid: 2 immediate: x-field-uid: 3 - default: '1.0' + default: users_intervals enum: - users_intervals - max_pending_user diff --git a/artifacts/otg.proto b/artifacts/otg.proto index a4bc7a83..87cee362 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -5152,7 +5152,7 @@ message Statefull_flowObjective { unspecified = 0; simulated_user = 1; throughput = 2; - conn_connections = 3; + concurrent_connections = 3; } } // Description missing in models @@ -5166,7 +5166,7 @@ message Statefull_flowObjective { optional ObjectiveThroughput throughput = 3; // Description missing in models - optional ObjectiveConn_curr conn_connections = 4; + optional ObjectiveConn_curr concurrent_connections = 4; } // simulated user traffic @@ -5184,8 +5184,8 @@ message ObjectiveSimulated_user { immediate = 3; } } - // Ramp up type for test. - // default = RampUpType.Enum.1.0 + // Ramp up type to either bring up users at a certain rate. + // default = RampUpType.Enum.users_intervals optional RampUpType.Enum ramp_up_type = 2; // Value applied to ramp_up_type to either bring up users at a certain rate. From f5c76af92c9cafcd6a663500af00407b94e2d9ab Mon Sep 17 00:00:00 2001 From: Github Actions Bot Date: Thu, 20 Oct 2022 12:10:45 +0000 Subject: [PATCH 24/27] Update auto generated content --- artifacts/openapi.html | 725 +++++++++++++++++++++++++++++++++++++++++ artifacts/openapi.yaml | 45 ++- artifacts/otg.proto | 57 ++-- 3 files changed, 783 insertions(+), 44 deletions(-) create mode 100644 artifacts/openapi.html diff --git a/artifacts/openapi.html b/artifacts/openapi.html new file mode 100644 index 00000000..beeee847 --- /dev/null +++ b/artifacts/openapi.html @@ -0,0 +1,725 @@ + + + + + + Open Traffic Generator API + + + + + + + + + +

Open Traffic Generator API (0.9.6)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard +interface for emulating layer 2-7 network devices and generating test traffic.

+

Contributions can be made in the following ways:

+ +

Configuration

set_config

Sets configuration resources on the traffic generator.

+
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

+
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

+
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

+
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

+
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. +Each device contains configurations for network interfaces and +protocols running on top of those interfaces.

+
Array of objects (Flow)

The flows that will be configured on the traffic generator.

+
object (Event)

The optional container for event configuration.

+
object (Config.Options)

Global configuration options.

+
Array of objects (App)

The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device IPv4/v6 interface.

+

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "apps": [
    ]
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "apps": [
    ]
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. +The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

+
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. +If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Flow/properties/name
  • +
+
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. +If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). +If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. +If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. +If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

+

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. +If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+
state
required
string
Enum: "start" "stop"

The capture state.

+

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

+
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

+
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

+

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "apps": [
    ]
}

set_route_state

Updates the state of configuration resources on the traffic generator.

+
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

+

x-constraint:

+
    +
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • +
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • +
  • /components/schemas/Isis.V4RouteRange/properties/name
  • +
  • /components/schemas/Isis.V6RouteRange/properties/name
  • +
+
state
required
string
Enum: "withdraw" "advertise"

Route specific states

+

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

+
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

+

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

+
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

+

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

+
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

+

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

+
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

+
object (Flow.Metrics.Request)

The container for a flow metric request.

+
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

+
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

+
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

+
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

+
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

+
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

+
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

+
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

+
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

+

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

+
port_name
required
string

The name of a port a capture is started on.

+

x-constraint:

+
    +
  • /components/schemas/Port/properties/name
  • +
+

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
+ + + + \ No newline at end of file diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 9ac29465..2b860869 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -699,7 +699,9 @@ components: properties: port_name: description: | - Status: {'status': 'deprecated', 'additional_information': 'property port_name is deprecated from the snappi version x.x.x.\nplease use connection.port_name instead of port_name'} + Status: deprecated + property port_name is deprecated from the snappi version x.x.x. + please use connection.port_name instead of port_name The unique name of a Port or a LAG that will emulate this interface. port_name is deprecated and will be removed in future release.port_name and connection can't be used together, use either port_name or connection. @@ -1357,7 +1359,8 @@ components: status: under-review additional_information: Capture schema is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Capture schema is under review'} + Status: under-review + Capture schema is under review Configuration for capture settings. type: object required: @@ -1664,7 +1667,8 @@ components: status: under-review additional_information: Device.IsisRouter is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Device.IsisRouter is under review'} + Status: under-review + Device.IsisRouter is under review A container of properties for an ISIS router and its interfaces. type: object required: @@ -1729,9 +1733,8 @@ components: x-status: status: under-review additional_information: Device.IsisMultiInstance is under review - description: "Status: {'status': 'under-review', 'additional_information': 'Device.IsisMultiInstance\ - \ is under review'}\nThis container properties of an Multi-Instance-capable\ - \ router (MI-RTR). " + description: "Status: under-review\nDevice.IsisMultiInstance is under review\n\ + This container properties of an Multi-Instance-capable router (MI-RTR). " type: object properties: iid: @@ -1757,7 +1760,8 @@ components: status: under-review additional_information: Isis.Interface is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Isis.Interface is under review'} + Status: under-review + Isis.Interface is under review Configuration for single ISIS interface. type: object required: @@ -1890,7 +1894,8 @@ components: status: under-review additional_information: Isis.MT is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Isis.MT is under review'} + Status: under-review + Isis.MT is under review Configuration of properties per interface per topology when multiple topologies are configured in an ISIS router. in a ISIS router. type: object @@ -1916,7 +1921,8 @@ components: status: under-review additional_information: LinkState.TE is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'LinkState.TE is under review'} + Status: under-review + LinkState.TE is under review A container for Traffic Engineering properties on a interface. type: object properties: @@ -3360,7 +3366,8 @@ components: status: under-review additional_information: Bgp.Advanced is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Bgp.Advanced is under review'} + Status: under-review + Bgp.Advanced is under review Configuration for BGP advanced settings. type: object properties: @@ -3398,7 +3405,8 @@ components: status: under-review additional_information: Bgp.Capability is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Bgp.Capability is under review'} + Status: under-review + Bgp.Capability is under review Configuration for BGP capability settings. type: object properties: @@ -3558,7 +3566,8 @@ components: status: under-review additional_information: Bgp.LearnedInformationFilter is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Bgp.LearnedInformationFilter is under review'} + Status: under-review + Bgp.LearnedInformationFilter is under review Configuration for controlling storage of BGP learned information recieved from the peer. type: object properties: @@ -4083,7 +4092,8 @@ components: status: under-review additional_information: BgpSrte.SegmentList is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentList is under review'} + Status: under-review + BgpSrte.SegmentList is under review Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. type: object properties: @@ -4121,7 +4131,8 @@ components: status: under-review additional_information: BgpSrte.Segment is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'BgpSrte.Segment is under review'} + Status: under-review + BgpSrte.Segment is under review A Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. type: object required: @@ -4360,7 +4371,8 @@ components: status: under-review additional_information: BgpSrte.SegmentCTypeSubTlv is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentCTypeSubTlv is under review'} + Status: under-review + BgpSrte.SegmentCTypeSubTlv is under review Type C: IPv4 Node Address with optional SID. type: object required: @@ -5008,7 +5020,8 @@ components: status: under-review additional_information: Bgp.V6SegmentRouting is under review description: |- - Status: {'status': 'under-review', 'additional_information': 'Bgp.V6SegmentRouting is under review'} + Status: under-review + Bgp.V6SegmentRouting is under review Configuration for BGPv6 segment routing settings. type: object properties: diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 87cee362..ba97fa04 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -230,9 +230,9 @@ message DeviceEthernetBase { // An Ethernet interface with IPv4 and IPv6 addresses. message DeviceEthernet { - // Status: {'status': 'deprecated', 'additional_information': 'property port_name is - // deprecated from the snappi version x.x.x.\nplease use connection.port_name instead - // of port_name'} + // Status: deprecated + // property port_name is deprecated from the snappi version x.x.x. + // please use connection.port_name instead of port_name // The unique name of a Port or a LAG that will emulate this interface. // port_name is deprecated and will be removed in future release.port_name and connection // can't be used together, use either port_name or connection. @@ -677,8 +677,8 @@ message Layer1Ieee8021qbb { optional int32 pfc_class_7 = 9; } -// Status: {'status': 'under-review', 'additional_information': 'Capture schema is under -// review'} +// Status: under-review +// Capture schema is under review // Configuration for capture settings. message Capture { @@ -935,8 +935,8 @@ message Device { string name = 7; } -// Status: {'status': 'under-review', 'additional_information': 'Device.IsisRouter is -// under review'} +// Status: under-review +// Device.IsisRouter is under review // A container of properties for an ISIS router and its interfaces. message DeviceIsisRouter { @@ -972,8 +972,8 @@ message DeviceIsisRouter { string name = 9; } -// Status: {'status': 'under-review', 'additional_information': 'Device.IsisMultiInstance -// is under review'} +// Status: under-review +// Device.IsisMultiInstance is under review // This container properties of an Multi-Instance-capable router (MI-RTR). message DeviceIsisMultiInstance { @@ -987,8 +987,8 @@ message DeviceIsisMultiInstance { repeated int32 itids = 2; } -// Status: {'status': 'under-review', 'additional_information': 'Isis.Interface is under -// review'} +// Status: under-review +// Isis.Interface is under review // Configuration for single ISIS interface. message IsisInterface { @@ -1076,7 +1076,8 @@ message IsisInterfaceLevel { optional int32 dead_interval = 3; } -// Status: {'status': 'under-review', 'additional_information': 'Isis.MT is under review'} +// Status: under-review +// Isis.MT is under review // Configuration of properties per interface per topology when multiple topologies are // configured in an ISIS router. // in a ISIS router. @@ -1091,8 +1092,8 @@ message IsisMT { optional int32 link_metric = 2; } -// Status: {'status': 'under-review', 'additional_information': 'LinkState.TE is under -// review'} +// Status: under-review +// LinkState.TE is under review // A container for Traffic Engineering properties on a interface. message LinkStateTE { @@ -2112,8 +2113,8 @@ message BgpRouteTarget { optional string rt_value = 2; } -// Status: {'status': 'under-review', 'additional_information': 'Bgp.Advanced is under -// review'} +// Status: under-review +// Bgp.Advanced is under review // Configuration for BGP advanced settings. message BgpAdvanced { @@ -2142,8 +2143,8 @@ message BgpAdvanced { optional string md5_key = 5; } -// Status: {'status': 'under-review', 'additional_information': 'Bgp.Capability is under -// review'} +// Status: under-review +// Bgp.Capability is under review // Configuration for BGP capability settings. message BgpCapability { @@ -2260,8 +2261,8 @@ message BgpCapability { optional bool ipv6_unicast_add_path = 25; } -// Status: {'status': 'under-review', 'additional_information': 'Bgp.LearnedInformationFilter -// is under review'} +// Status: under-review +// Bgp.LearnedInformationFilter is under review // Configuration for controlling storage of BGP learned information recieved from the // peer. message BgpLearnedInformationFilter { @@ -2650,8 +2651,8 @@ message BgpSrteExplicitNullLabelPolicySubTlv { optional ExplicitNullLabelPolicy.Enum explicit_null_label_policy = 1; } -// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentList -// is under review'} +// Status: under-review +// BgpSrte.SegmentList is under review // Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV // encodes a single explicit path towards the Endpoint. message BgpSrteSegmentList { @@ -2676,8 +2677,8 @@ message BgpSrteSegmentList { optional bool active = 4; } -// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.Segment is -// under review'} +// Status: under-review +// BgpSrte.Segment is under review // A Segment sub-TLV describes a single segment in a segment list i.e., a single element // of the explicit path. The Segment sub-TLVs are optional. message BgpSrteSegment { @@ -2835,8 +2836,8 @@ message BgpSrteSegmentBTypeSubTlv { optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 3; } -// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentCTypeSubTlv -// is under review'} +// Status: under-review +// BgpSrte.SegmentCTypeSubTlv is under review // Type C: IPv4 Node Address with optional SID. message BgpSrteSegmentCTypeSubTlv { @@ -3278,8 +3279,8 @@ message BgpV6Interface { repeated BgpV6Peer peers = 2; } -// Status: {'status': 'under-review', 'additional_information': 'Bgp.V6SegmentRouting -// is under review'} +// Status: under-review +// Bgp.V6SegmentRouting is under review // Configuration for BGPv6 segment routing settings. message BgpV6SegmentRouting { From 3ab6257d957e0230c8d71328f01b84784f0d6077 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Mon, 14 Nov 2022 11:50:40 +0530 Subject: [PATCH 25/27] review comments updates Updates of Anky and Ankur's review comment --- app/app.yaml | 23 +++-- app/http/client.yaml | 61 ++++++++++++ app/http/http.yaml | 16 --- app/http/httpclient.yaml | 61 ++---------- app/http/httpserver.yaml | 40 +------- app/http/server.yaml | 40 ++++++++ app/statefull_flow/client.yaml | 2 +- app/statefull_flow/endpoints.yaml | 17 +++- app/statefull_flow/objective.yaml | 20 ++-- app/statefull_flow/server.yaml | 2 +- ...{statefull_flow.yaml => statefulflow.yaml} | 8 +- artifacts/openapi.yaml | 99 +++++++++++-------- artifacts/otg.proto | 83 +++++++++------- 13 files changed, 264 insertions(+), 208 deletions(-) create mode 100644 app/http/client.yaml delete mode 100644 app/http/http.yaml create mode 100644 app/http/server.yaml rename app/statefull_flow/{statefull_flow.yaml => statefulflow.yaml} (55%) diff --git a/app/app.yaml b/app/app.yaml index 80611fdd..94d4ba37 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -12,28 +12,35 @@ components: items: $ref: './tcp/tcp.yaml#/components/schemas/App.Tcp' x-field-uid: 1 - http: + http_client: description: >- - The properties of HTTP and its children, + The properties of HTTP client, type: array items: - $ref: './http/http.yaml#/components/schemas/App.Http' + $ref: './http/httpclient.yaml#/components/schemas/App.HttpClient' x-field-uid: 2 + http_server: + description: >- + The properties of HTTP server, + type: array + items: + $ref: './http/httpserver.yaml#/components/schemas/App.HttpServer' + x-field-uid: 3 ssl: description: >- SSL configuration type: array items: $ref: './ssl/ssl.yaml#/components/schemas/App.Ssl' - x-field-uid: 3 - statefull_flows: + x-field-uid: 4 + stateful_flows: description: >- Traffic configuration of endpoints. type: array items: - $ref: './statefull_flow/statefull_flow.yaml#/components/schemas/Statefull_flow' - x-field-uid: 4 + $ref: './statefull_flow/statefulflow.yaml#/components/schemas/StatefulFlow' + x-field-uid: 5 name: x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 5 + x-field-uid: 6 required: [name] \ No newline at end of file diff --git a/app/http/client.yaml b/app/http/client.yaml new file mode 100644 index 00000000..70dd16ec --- /dev/null +++ b/app/http/client.yaml @@ -0,0 +1,61 @@ +components: + schemas: + HttpClient.Client: + description: >- + One or more HTTP Client configurations and its HTTP methods configs. + type: object + properties: + transport_name: + description: >- + Transport interface that can be attached to TCP. In the same apps or different apps container. + type: string + x-constraint: + - '/components/schemas/App.Tcp/properties/name' + x-field-uid: 1 + http_version: + description: >- + HTTP Version + type: string + x-field-uid: 2 + x-enum: + "v10": + x-field-uid: 1 + "v11": + x-field-uid: 2 + "v20": + x-field-uid: 3 + default: "v10" + cookie_jar_size: + description: >- + cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled) + type: integer + default: 10 + x-field-uid: 3 + cookie_reject_probability: + description: >- + cookie_reject_probability indicates the probability, from 0 or 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled) + type: boolean + default: 0 + x-field-uid: 4 + enable_cookie_support: + description: >- + The client will support cookie retention, as indicated in the cookie_jar_size and cookie_reject_probability + type: boolean + default: false + x-field-uid: 5 + command_timeout: + description: >- + HTTP command timeout timer in seconds + type: number + default: 600 + x-field-uid: 6 + methods: + description: >- + The HTTP methods such as GET, POST and its properties. + type: array + items: + $ref: './method.yaml#/components/schemas/Http.Method' + x-field-uid: 10 + name: + x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name + x-field-uid: 11 \ No newline at end of file diff --git a/app/http/http.yaml b/app/http/http.yaml deleted file mode 100644 index 380373f9..00000000 --- a/app/http/http.yaml +++ /dev/null @@ -1,16 +0,0 @@ -components: - schemas: - App.Http: - description: >- - Configurations of one or more HTTP client and server. - type: object - properties: - client: - $ref: './httpclient.yaml#/components/schemas/Http.Client' - x-field-uid: 1 - server: - $ref: './httpserver.yaml#/components/schemas/Http.Server' - x-field-uid: 2 - - - diff --git a/app/http/httpclient.yaml b/app/http/httpclient.yaml index ce1f4a21..c47568f5 100644 --- a/app/http/httpclient.yaml +++ b/app/http/httpclient.yaml @@ -1,61 +1,12 @@ components: schemas: - Http.Client: + App.HttpClient: description: >- - One or more HTTP Client configurations and its HTTP methods configs. + Configurations of one or more HTTP client. type: object properties: - transport_name: - description: >- - Transport interface that can be attached to TCP. In the same apps or different apps container. - type: string - x-constraint: - - '/components/schemas/App.Tcp/properties/name' + client: + $ref: './client.yaml#/components/schemas/HttpClient.Client' x-field-uid: 1 - http_version: - description: >- - HTTP Version - type: string - x-field-uid: 2 - x-enum: - "v10": - x-field-uid: 1 - "v11": - x-field-uid: 2 - "v20": - x-field-uid: 3 - default: "v10" - cookie_jar_size: - description: >- - cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled) - type: integer - default: 10 - x-field-uid: 3 - cookie_reject_probability: - description: >- - cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled) - type: integer - default: 0 - x-field-uid: 4 - enable_cookie_support: - description: >- - The client will support cookie retention, as indicated in the cookie_jar_size and cookie_reject_probability - type: boolean - default: false - x-field-uid: 5 - command_timeout: - description: >- - HTTP command timeout timer in seconds - type: number - default: 600 - x-field-uid: 6 - methods: - description: >- - The HTTP methods such as GET, POST and its properties. - type: array - items: - $ref: './method.yaml#/components/schemas/Http.Method' - x-field-uid: 10 - name: - x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name - x-field-uid: 11 \ No newline at end of file + + diff --git a/app/http/httpserver.yaml b/app/http/httpserver.yaml index 646732bb..77d7012b 100644 --- a/app/http/httpserver.yaml +++ b/app/http/httpserver.yaml @@ -1,40 +1,10 @@ components: schemas: - Http.Server: + App.HttpServer: description: >- - One or more HTTP Server configurations. + Configurations of one or more HTTP server. type: object properties: - transport_name: - description: >- - Transport interface that can be attached to TCP. In the same apps or different apps container. - type: string - x-constraint: - - '/components/schemas/App.Tcp/properties/name' - x-field-uid: 1 - http_version: - description: >- - HTTP Version - type: string - x-field-uid: 2 - x-enum: - "v10": - x-field-uid: 1 - "v11": - x-field-uid: 2 - "v20": - x-field-uid: 3 - default: "v10" - http_port: - description: >- - The port number to which the HTTP server will respond to non-SSL requests. - type: integer - default: 80 - x-field-uid: 3 - request_timeout: - description: >- - The amount of seconds that the server will wait for input on an open connection before closing the session with a 408 error. - type: integer - default: 300 - x-field-uid: 4 - \ No newline at end of file + server: + $ref: './server.yaml#/components/schemas/HttpServer.Server' + x-field-uid: 1 \ No newline at end of file diff --git a/app/http/server.yaml b/app/http/server.yaml new file mode 100644 index 00000000..b885018c --- /dev/null +++ b/app/http/server.yaml @@ -0,0 +1,40 @@ +components: + schemas: + HttpServer.Server: + description: >- + One or more HTTP Server configurations. + type: object + properties: + transport_name: + description: >- + Transport interface that can be attached to TCP. In the same apps or different apps container. + type: string + x-constraint: + - '/components/schemas/App.Tcp/properties/name' + x-field-uid: 1 + http_version: + description: >- + HTTP Version + type: string + x-field-uid: 2 + x-enum: + "v10": + x-field-uid: 1 + "v11": + x-field-uid: 2 + "v20": + x-field-uid: 3 + default: "v10" + http_port: + description: >- + The port number to which the HTTP server will respond to non-SSL requests. + type: integer + default: 80 + x-field-uid: 3 + request_timeout: + description: >- + The number of seconds that the server will wait for input on an open connection before closing the session with a 408 error. + type: integer + default: 300 + x-field-uid: 4 + \ No newline at end of file diff --git a/app/statefull_flow/client.yaml b/app/statefull_flow/client.yaml index 3844f356..9931fd4c 100644 --- a/app/statefull_flow/client.yaml +++ b/app/statefull_flow/client.yaml @@ -1,6 +1,6 @@ components: schemas: - Statefull_flow.Client: + StatefulFlow.Client: description: >- Client traffic configs. type: object diff --git a/app/statefull_flow/endpoints.yaml b/app/statefull_flow/endpoints.yaml index 59498de3..ebeb27ed 100644 --- a/app/statefull_flow/endpoints.yaml +++ b/app/statefull_flow/endpoints.yaml @@ -53,8 +53,10 @@ components: x-enum: name: x-field-uid: 1 - ip_address: + ipv4_address: x-field-uid: 2 + ipv6_address: + x-field-uid: 3 name: description: >- IPv4/v6 interface name @@ -63,8 +65,15 @@ components: - '/components/schemas/Device.Ipv4Base/properties/name' - '/components/schemas/Device.Ipv6Base/properties/name' x-field-uid: 2 - ip_address: + ipv4_address: description: >- - IPv4/v6 address + IPv4 address of the server with prefix length of 32. type: string - x-field-uid: 3 \ No newline at end of file + x-field-uid: 3 + format: ipv4 + ipv6_address: + description: >- + IPv6 address of the server with prefix length of 128. + type: string + x-field-uid: 4 + format: ipv6 \ No newline at end of file diff --git a/app/statefull_flow/objective.yaml b/app/statefull_flow/objective.yaml index ee6c8c98..b12dd7db 100644 --- a/app/statefull_flow/objective.yaml +++ b/app/statefull_flow/objective.yaml @@ -1,6 +1,6 @@ components: schemas: - Statefull_flow.Objective: + StatefulFlow.Objective: description: >- objective config such simulated user, thoughput, conncurrent connections. type: object @@ -18,15 +18,15 @@ components: x-field-uid: 3 simulated_user: x-field-uid: 2 - $ref: '#/components/schemas/Objective.Simulated_user' + $ref: '#/components/schemas/Objective.Simulated.User' throughput: x-field-uid: 3 $ref: '#/components/schemas/Objective.Throughput' concurrent_connections: x-field-uid: 4 - $ref: '#/components/schemas/Objective.Conn_curr' + $ref: '#/components/schemas/Objective.Connection.Conncurrent' - Objective.Simulated_user: + Objective.Simulated.User: description: >- simulated user traffic type: object @@ -39,7 +39,7 @@ components: x-field-uid: 1 ramp_up_type: description: >- - Ramp up type to either bring up users at a certain rate. + Ramp up type to defines the type of user execution profiles during the ramp_up_time, . type: string x-field-uid: 2 x-enum: @@ -55,14 +55,14 @@ components: Value applied to ramp_up_type to either bring up users at a certain rate. type: integer x-field-uid: 3 - sutain_time: + sustain_time: description: >- Amount of time when all users are up and performing the central test objectives, such as retrieving or serving pages. type: integer x-field-uid: 4 ramp_down_time: description: >- - Rampu down time in seconds. + Amount of seconds used for closing any connections that are still open after all transactions are complete. type: integer x-field-uid: 5 Objective.Throughput: @@ -76,7 +76,7 @@ components: Throughput value. type: integer x-field-uid: 1 - sutain_time: + sustain_time: description: >- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. type: number @@ -87,7 +87,7 @@ components: type: number x-field-uid: 3 - Objective.Conn_curr: + Objective.Connection.Conncurrent: description: >- Conncurrent connections objectives type: object @@ -98,7 +98,7 @@ components: Throughput value. type: integer x-field-uid: 1 - sutain_time: + sustain_time: description: >- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. type: number diff --git a/app/statefull_flow/server.yaml b/app/statefull_flow/server.yaml index 11d96355..a2b471f5 100644 --- a/app/statefull_flow/server.yaml +++ b/app/statefull_flow/server.yaml @@ -1,6 +1,6 @@ components: schemas: - Statefull_flow.Server: + StatefulFlow.Server: description: >- Traffic configuration for server(s). type: object diff --git a/app/statefull_flow/statefull_flow.yaml b/app/statefull_flow/statefulflow.yaml similarity index 55% rename from app/statefull_flow/statefull_flow.yaml rename to app/statefull_flow/statefulflow.yaml index 6a832c5a..e330c548 100644 --- a/app/statefull_flow/statefull_flow.yaml +++ b/app/statefull_flow/statefulflow.yaml @@ -1,17 +1,17 @@ components: schemas: - Statefull_flow: + StatefulFlow: description: >- Statefull_flows configure traffic for emulated protocols which is configured in apps. type: object properties: client: - $ref: './client.yaml#/components/schemas/Statefull_flow.Client' + $ref: './client.yaml#/components/schemas/StatefulFlow.Client' x-field-uid: 1 server: - $ref: './server.yaml#/components/schemas/Statefull_flow.Server' + $ref: './server.yaml#/components/schemas/StatefulFlow.Server' x-field-uid: 2 objectives: - $ref: './objective.yaml#/components/schemas/Statefull_flow.Objective' + $ref: './objective.yaml#/components/schemas/StatefulFlow.Objective' x-field-uid: 3 diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 9ac29465..37c65549 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -7014,28 +7014,34 @@ components: items: $ref: '#/components/schemas/App.Tcp' x-field-uid: 1 - http: - description: "The properties of HTTP and its children, " + http_client: + description: "The properties of HTTP client, " type: array items: - $ref: '#/components/schemas/App.Http' + $ref: '#/components/schemas/App.HttpClient' x-field-uid: 2 + http_server: + description: "The properties of HTTP server, " + type: array + items: + $ref: '#/components/schemas/App.HttpServer' + x-field-uid: 3 ssl: description: |- SSL configuration type: array items: $ref: '#/components/schemas/App.Ssl' - x-field-uid: 3 - statefull_flows: + x-field-uid: 4 + stateful_flows: description: |- Traffic configuration of endpoints. type: array items: - $ref: '#/components/schemas/Statefull_flow' - x-field-uid: 4 - name: + $ref: '#/components/schemas/StatefulFlow' x-field-uid: 5 + name: + x-field-uid: 6 description: |- Globally unique name of an object. It also serves as the primary key for arrays of objects. type: string @@ -7085,18 +7091,15 @@ components: type: string pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-unique: global - App.Http: + App.HttpClient: description: |- - Configurations of one or more HTTP client and server. + Configurations of one or more HTTP client. type: object properties: client: - $ref: '#/components/schemas/Http.Client' + $ref: '#/components/schemas/HttpClient.Client' x-field-uid: 1 - server: - $ref: '#/components/schemas/Http.Server' - x-field-uid: 2 - Http.Client: + HttpClient.Client: description: "One or more HTTP Client configurations and its HTTP methods configs. " type: object properties: @@ -7135,8 +7138,8 @@ components: x-field-uid: 3 cookie_reject_probability: description: |- - cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled) - type: integer + cookie_reject_probability indicates the probability, from 0 or 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled) + type: boolean default: 0 x-field-uid: 4 enable_cookie_support: @@ -7221,7 +7224,15 @@ components: The page url/name to perform HTTP POST operation. type: string x-field-uid: 2 - Http.Server: + App.HttpServer: + description: |- + Configurations of one or more HTTP server. + type: object + properties: + server: + $ref: '#/components/schemas/HttpServer.Server' + x-field-uid: 1 + HttpServer.Server: description: "One or more HTTP Server configurations. " type: object properties: @@ -7260,7 +7271,7 @@ components: x-field-uid: 3 request_timeout: description: |- - The amount of seconds that the server will wait for input on an open connection before closing the session with a 408 error. + The number of seconds that the server will wait for input on an open connection before closing the session with a 408 error. type: integer default: 300 x-field-uid: 4 @@ -7275,21 +7286,21 @@ components: type: boolean default: false x-field-uid: 1 - Statefull_flow: + StatefulFlow: description: "Statefull_flows configure traffic for emulated protocols which\ \ is configured in apps. " type: object properties: client: - $ref: '#/components/schemas/Statefull_flow.Client' + $ref: '#/components/schemas/StatefulFlow.Client' x-field-uid: 1 server: - $ref: '#/components/schemas/Statefull_flow.Server' + $ref: '#/components/schemas/StatefulFlow.Server' x-field-uid: 2 objectives: - $ref: '#/components/schemas/Statefull_flow.Objective' + $ref: '#/components/schemas/StatefulFlow.Objective' x-field-uid: 3 - Statefull_flow.Client: + StatefulFlow.Client: description: |- Client traffic configs. type: object @@ -7356,11 +7367,14 @@ components: x-enum: name: x-field-uid: 1 - ip_address: + ipv4_address: x-field-uid: 2 + ipv6_address: + x-field-uid: 3 enum: - name - - ip_address + - ipv4_address + - ipv6_address name: description: | IPv4/v6 interface name @@ -7373,12 +7387,19 @@ components: - /components/schemas/Device.Ipv4Base/properties/name - /components/schemas/Device.Ipv6Base/properties/name x-field-uid: 2 - ip_address: + ipv4_address: description: |- - IPv4/v6 address + IPv4 address of the server with prefix length of 32. type: string x-field-uid: 3 - Statefull_flow.Server: + format: ipv4 + ipv6_address: + description: |- + IPv6 address of the server with prefix length of 128. + type: string + x-field-uid: 4 + format: ipv6 + StatefulFlow.Server: description: |- Traffic configuration for server(s). type: object @@ -7402,7 +7423,7 @@ components: - /components/schemas/App.Tcp/properties/name - /components/schemas/App.Http/properties/name x-field-uid: 2 - Statefull_flow.Objective: + StatefulFlow.Objective: description: |- objective config such simulated user, thoughput, conncurrent connections. type: object @@ -7424,14 +7445,14 @@ components: - concurrent_connections simulated_user: x-field-uid: 2 - $ref: '#/components/schemas/Objective.Simulated_user' + $ref: '#/components/schemas/Objective.Simulated.User' throughput: x-field-uid: 3 $ref: '#/components/schemas/Objective.Throughput' concurrent_connections: x-field-uid: 4 - $ref: '#/components/schemas/Objective.Conn_curr' - Objective.Simulated_user: + $ref: '#/components/schemas/Objective.Connection.Conncurrent' + Objective.Simulated.User: description: |- simulated user traffic type: object @@ -7445,7 +7466,7 @@ components: x-field-uid: 1 ramp_up_type: description: |- - Ramp up type to either bring up users at a certain rate. + Ramp up type to defines the type of user execution profiles during the ramp_up_time, . type: string x-field-uid: 2 x-enum: @@ -7465,14 +7486,14 @@ components: Value applied to ramp_up_type to either bring up users at a certain rate. type: integer x-field-uid: 3 - sutain_time: + sustain_time: description: |- Amount of time when all users are up and performing the central test objectives, such as retrieving or serving pages. type: integer x-field-uid: 4 ramp_down_time: description: |- - Rampu down time in seconds. + Amount of seconds used for closing any connections that are still open after all transactions are complete. type: integer x-field-uid: 5 Objective.Throughput: @@ -7486,7 +7507,7 @@ components: Throughput value. type: integer x-field-uid: 1 - sutain_time: + sustain_time: description: |- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. type: number @@ -7496,7 +7517,7 @@ components: Amount of seconds used for closing any connections that are still open after all transactions are complete. type: number x-field-uid: 3 - Objective.Conn_curr: + Objective.Connection.Conncurrent: description: |- Conncurrent connections objectives type: object @@ -7508,7 +7529,7 @@ components: Throughput value. type: integer x-field-uid: 1 - sutain_time: + sustain_time: description: |- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. type: number diff --git a/artifacts/otg.proto b/artifacts/otg.proto index 87cee362..2cfd9394 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -4858,19 +4858,22 @@ message App { // The properties of TCP and its children, repeated AppTcp tcp = 1; - // The properties of HTTP and its children, - repeated AppHttp http = 2; + // The properties of HTTP client, + repeated AppHttpClient http_client = 2; + + // The properties of HTTP server, + repeated AppHttpServer http_server = 3; // SSL configuration - repeated AppSsl ssl = 3; + repeated AppSsl ssl = 4; // Traffic configuration of endpoints. - repeated Statefull_flow statefull_flows = 4; + repeated StatefulFlow stateful_flows = 5; // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - string name = 5; + string name = 6; } // The properties of TCP Configurations. @@ -4902,18 +4905,15 @@ message AppTcp { optional string name = 6; } -// Configurations of one or more HTTP client and server. -message AppHttp { - - // Description missing in models - optional HttpClient client = 1; +// Configurations of one or more HTTP client. +message AppHttpClient { // Description missing in models - optional HttpServer server = 2; + optional HttpClientClient client = 1; } // One or more HTTP Client configurations and its HTTP methods configs. -message HttpClient { +message HttpClientClient { // Transport interface that can be attached to TCP. In the same apps or different apps // container. @@ -4940,11 +4940,11 @@ message HttpClient { // default = 10 optional int32 cookie_jar_size = 3; - // cookie_reject_probability indicates the probability, from 0 to 1, that a client will + // cookie_reject_probability indicates the probability, from 0 or 1, that a client will // reject a request for a cookie(s) contents from the server. (only if enable_cookie_support // is enabled) // default = 0 - optional int32 cookie_reject_probability = 4; + optional bool cookie_reject_probability = 4; // The client will support cookie retention, as indicated in the cookie_jar_size and // cookie_reject_probability @@ -5008,8 +5008,15 @@ message MethodPost { string page = 2; } +// Configurations of one or more HTTP server. +message AppHttpServer { + + // Description missing in models + optional HttpServerServer server = 1; +} + // One or more HTTP Server configurations. -message HttpServer { +message HttpServerServer { // Transport interface that can be attached to TCP. In the same apps or different apps // container. @@ -5035,7 +5042,7 @@ message HttpServer { // default = 80 optional int32 http_port = 3; - // The amount of seconds that the server will wait for input on an open connection before + // The number of seconds that the server will wait for input on an open connection before // closing the session with a 408 error. // default = 300 optional int32 request_timeout = 4; @@ -5051,20 +5058,20 @@ message AppSsl { // Statefull_flows configure traffic for emulated protocols which is configured in apps. // -message Statefull_flow { +message StatefulFlow { // Description missing in models - optional Statefull_flowClient client = 1; + optional StatefulFlowClient client = 1; // Description missing in models - optional Statefull_flowServer server = 2; + optional StatefulFlowServer server = 2; // Description missing in models - optional Statefull_flowObjective objectives = 3; + optional StatefulFlowObjective objectives = 3; } // Client traffic configs. -message Statefull_flowClient { +message StatefulFlowClient { // EndPoint configuration for one or more emulated apps. repeated EndpointsClient endpoints = 1; @@ -5110,7 +5117,8 @@ message EndpointsDest { enum Enum { unspecified = 0; name = 1; - ip_address = 2; + ipv4_address = 2; + ipv6_address = 3; } } // Description missing in models @@ -5125,12 +5133,15 @@ message EndpointsDest { // optional string name = 2; - // IPv4/v6 address - optional string ip_address = 3; + // IPv4 address of the server with prefix length of 32. + optional string ipv4_address = 3; + + // IPv6 address of the server with prefix length of 128. + optional string ipv6_address = 4; } // Traffic configuration for server(s). -message Statefull_flowServer { +message StatefulFlowServer { // EndPoint configuration for one or more emulated apps. repeated EndpointsServer endpoints = 1; @@ -5145,7 +5156,7 @@ message Statefull_flowServer { } // objective config such simulated user, thoughput, conncurrent connections. -message Statefull_flowObjective { +message StatefulFlowObjective { message Choice { enum Enum { @@ -5160,17 +5171,17 @@ message Statefull_flowObjective { optional Choice.Enum choice = 1; // Description missing in models - optional ObjectiveSimulated_user simulated_user = 2; + optional ObjectiveSimulatedUser simulated_user = 2; // Description missing in models optional ObjectiveThroughput throughput = 3; // Description missing in models - optional ObjectiveConn_curr concurrent_connections = 4; + optional ObjectiveConnectionConncurrent concurrent_connections = 4; } // simulated user traffic -message ObjectiveSimulated_user { +message ObjectiveSimulatedUser { // Number of simulated user. // required = true @@ -5184,7 +5195,8 @@ message ObjectiveSimulated_user { immediate = 3; } } - // Ramp up type to either bring up users at a certain rate. + // Ramp up type to defines the type of user execution profiles during the ramp_up_time, + // . // default = RampUpType.Enum.users_intervals optional RampUpType.Enum ramp_up_type = 2; @@ -5193,9 +5205,10 @@ message ObjectiveSimulated_user { // Amount of time when all users are up and performing the central test objectives, // such as retrieving or serving pages. - optional int32 sutain_time = 4; + optional int32 sustain_time = 4; - // Rampu down time in seconds. + // Amount of seconds used for closing any connections that are still open after all + // transactions are complete. optional int32 ramp_down_time = 5; } @@ -5208,7 +5221,7 @@ message ObjectiveThroughput { // Amount of seconds when all users are up and performing the central test objectives, // such as retrieving or serving pages. - optional float sutain_time = 2; + optional float sustain_time = 2; // Amount of seconds used for closing any connections that are still open after all // transactions are complete. @@ -5216,7 +5229,7 @@ message ObjectiveThroughput { } // Conncurrent connections objectives -message ObjectiveConn_curr { +message ObjectiveConnectionConncurrent { // Throughput value. // required = true @@ -5224,7 +5237,7 @@ message ObjectiveConn_curr { // Amount of seconds when all users are up and performing the central test objectives, // such as retrieving or serving pages. - optional float sutain_time = 2; + optional float sustain_time = 2; // Amount of seconds used for closing any connections that are still open after all // transactions are complete. From 98b7894612d32314c6b1eb4eb0719f31b5afd6e1 Mon Sep 17 00:00:00 2001 From: waseembaig Date: Mon, 20 Mar 2023 14:49:58 +0530 Subject: [PATCH 26/27] updated with defaults --- app/statefull_flow/objective.yaml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/app/statefull_flow/objective.yaml b/app/statefull_flow/objective.yaml index b12dd7db..45e8622b 100644 --- a/app/statefull_flow/objective.yaml +++ b/app/statefull_flow/objective.yaml @@ -7,7 +7,7 @@ components: properties: choice: type: string - default: simulated_user + default: throughput x-field-uid: 1 x-enum: simulated_user: @@ -69,13 +69,26 @@ components: description: >- Throughput traffic type: object - required: [value] + required: [choice] properties: + choice: + description: |- + The throughput test value or max throughput . + type: string + default: max_throughput + x-field-uid: 1 + x-enum: + value: + x-field-uid: 1 + max_throughput: + x-field-uid: 2 value: - description: >- - Throughput value. type: integer - x-field-uid: 1 + x-field-uid: 2 + max_throughput: + type: boolean + default: 0 + x-field-uid: 3 sustain_time: description: >- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. From e3b4a7f8d9f6c4df423f0370327a16191e7dec6e Mon Sep 17 00:00:00 2001 From: waseembaig Date: Mon, 20 Mar 2023 15:00:47 +0530 Subject: [PATCH 27/27] Updated with defaults --- app/statefull_flow/objective.yaml | 5 +- artifacts/openapi.html | 725 ------------------------------ artifacts/openapi.yaml | 75 ++-- artifacts/otg.proto | 83 ++-- 4 files changed, 88 insertions(+), 800 deletions(-) delete mode 100644 artifacts/openapi.html diff --git a/app/statefull_flow/objective.yaml b/app/statefull_flow/objective.yaml index 45e8622b..59e94abd 100644 --- a/app/statefull_flow/objective.yaml +++ b/app/statefull_flow/objective.yaml @@ -69,7 +69,6 @@ components: description: >- Throughput traffic type: object - required: [choice] properties: choice: description: |- @@ -93,12 +92,12 @@ components: description: >- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. type: number - x-field-uid: 2 + x-field-uid: 4 ramp_down_time: description: >- Amount of seconds used for closing any connections that are still open after all transactions are complete. type: number - x-field-uid: 3 + x-field-uid: 5 Objective.Connection.Conncurrent: description: >- diff --git a/artifacts/openapi.html b/artifacts/openapi.html deleted file mode 100644 index beeee847..00000000 --- a/artifacts/openapi.html +++ /dev/null @@ -1,725 +0,0 @@ - - - - - - Open Traffic Generator API - - - - - - - - - -

Open Traffic Generator API (0.9.6)

Download OpenAPI specification:Download

Open Traffic Generator API defines a model-driven, vendor-neutral and standard -interface for emulating layer 2-7 network devices and generating test traffic.

-

Contributions can be made in the following ways:

- -

Configuration

set_config

Sets configuration resources on the traffic generator.

-
Request Body schema: application/json
Array of objects (Port)

The ports that will be configured on the traffic generator.

-
Array of objects (Lag)

The LAGs that will be configured on the traffic generator.

-
Array of objects (Layer1)

The layer1 settings that will be configured on the traffic generator.

-
Array of objects (Capture)

The capture settings that will be configured on the traffic generator.

-
Array of objects (Device)

The emulated devices that will be configured on the traffic generator. -Each device contains configurations for network interfaces and -protocols running on top of those interfaces.

-
Array of objects (Flow)

The flows that will be configured on the traffic generator.

-
object (Event)

The optional container for event configuration.

-
object (Config.Options)

Global configuration options.

-
Array of objects (App)

The emulated protocols such as TCP/UDP, HTTP, etc and attacks, which can be attached to device IPv4/v6 interface.

-

Responses

Request samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "apps": [
    ]
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

get_config

Responses

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "apps": [
    ]
}

Control

set_transmit_state

Updates the state of configuration resources on the traffic generator. -The Response.Warnings in the Success response is available for implementers to disclose additional information about a state change including any implicit changes that are outside the scope of the state change.

-
Request Body schema: application/json
flow_names
Array of strings

The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. -If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Flow/properties/name
  • -
-
state
required
string
Enum: "start" "stop" "pause" "resume"

The transmit state. -If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). -If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. -If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. -If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared.

-

Responses

Request samples

Content type
application/json
{
  • "flow_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_capture_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
port_names
Array of strings

The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. -If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-
state
required
string
Enum: "start" "stop"

The capture state.

-

Responses

Request samples

Content type
application/json
{
  • "port_names": [
    ],
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

update_flows

Updates flow properties without disruption of transmit state.

-
Request Body schema: application/json
property_names
required
Array of strings
Items Enum: "rate" "size"

Flow properties to be updated without affecting the transmit state.

-
required
Array of objects (Flow)

The list of configured flows for which given property will be updated.

-

Responses

Request samples

Content type
application/json
{
  • "property_names": [
    ],
  • "flows": [
    ]
}

Response samples

Content type
application/json
{
  • "ports": [
    ],
  • "lags": [
    ],
  • "layer1": [
    ],
  • "captures": [
    ],
  • "devices": [
    ],
  • "flows": [
    ],
  • "events": {
    },
  • "options": {
    },
  • "apps": [
    ]
}

set_route_state

Updates the state of configuration resources on the traffic generator.

-
Request Body schema: application/json
names
Array of strings

The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.

-

x-constraint:

-
    -
  • /components/schemas/Bgp.V4RouteRange/properties/name
  • -
  • /components/schemas/Bgp.V6RouteRange/properties/name
  • -
  • /components/schemas/Isis.V4RouteRange/properties/name
  • -
  • /components/schemas/Isis.V6RouteRange/properties/name
  • -
-
state
required
string
Enum: "withdraw" "advertise"

Route specific states

-

Responses

Request samples

Content type
application/json
{
  • "names": [
    ],
  • "state": "withdraw"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

send_ping

API to send an IPv4 and/or IPv6 ICMP Echo Request(s) between endpoints. For each endpoint 1 ping packet will be sent and API shall wait for ping response to either be successful or timeout. The API wait timeout for each request is 300ms.

-
Request Body schema: application/json
Array of objects (Ping)

Array of ping requests

-

Responses

Request samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Response samples

Content type
application/json
{
  • "responses": [
    ]
}

set_protocol_state

Sets all configured protocols to start or stop state.

-
Request Body schema: application/json
state
required
string
Enum: "start" "stop"

Protocol specific states

-

Responses

Request samples

Content type
application/json
{
  • "state": "start"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

set_device_state

Set specific state/actions on device configuration resources on the traffic generator.

-
Request Body schema: application/json
choice
string
Value: "lacp_member_state"
object (LacpMember.State)

Set LACP state for specified LAG Member Port(s).

-

Responses

Request samples

Content type
application/json
{
  • "choice": "lacp_member_state",
  • "lacp_member_state": {
    }
}

Response samples

Content type
application/json
{
  • "warnings": [
    ]
}

Metrics

get_metrics

Request Body schema: application/json

Request to traffic generator for metrics of choice

-
choice
string
Default: "port"
Enum: "port" "flow" "bgpv4" "bgpv6" "isis" "lag" "lacp_lag_member"
object (Port.Metrics.Request)

The port result request to the traffic generator

-
object (Flow.Metrics.Request)

The container for a flow metric request.

-
object (Bgpv4.Metrics.Request)

The request to retrieve BGPv4 per peer metrics/statistics.

-
object (Bgpv6.Metrics.Request)

The request to retrieve BGPv6 per peer metrics/statistics.

-
object (Isis.Metrics.Request)

The request to retrieve ISIS per Router metrics/statistics.

-
object (Lag.Metrics.Request)

The request to retrieve per LAG metrics/statistics.

-
object (LacpLagMember.Metrics.Request)

The request to retrieve LACP per LAG member metrics/statistics.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "port",
  • "port": {
    },
  • "flow": {
    },
  • "bgpv4": {
    },
  • "bgpv6": {
    },
  • "isis": {
    },
  • "lag": {
    },
  • "lacp_lag_member": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "port_metrics",
  • "port_metrics": [
    ],
  • "flow_metrics": [
    ],
  • "bgpv4_metrics": [
    ],
  • "bgpv6_metrics": [
    ],
  • "isis_metrics": [
    ],
  • "lag_metrics": [
    ],
  • "lacp_lag_member_metrics": [
    ]
}

States

get_states

Request Body schema: application/json

Request to traffic generator for states of choice

-
choice
string
Default: "ipv4_neighbors"
Enum: "ipv4_neighbors" "ipv6_neighbors" "bgp_prefixes" "isis_lsps"
object (Neighborsv4.States.Request)

The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s).

-
object (Neighborsv6.States.Request)

The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s).

-
object (BgpPrefix.State.Request)

The request to retrieve BGP peer prefix information.

-
object (IsisLsps.State.Request)

The request to retrieve ISIS Link State PDU (LSP) information learned by the router.

-

Responses

Request samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": {
    },
  • "ipv6_neighbors": {
    },
  • "bgp_prefixes": {
    },
  • "isis_lsps": {
    }
}

Response samples

Content type
application/json
{
  • "choice": "ipv4_neighbors",
  • "ipv4_neighbors": [
    ],
  • "ipv6_neighbors": [
    ],
  • "bgp_prefixes": [
    ],
  • "isis_lsps": [
    ]
}

Capture

get_capture

Request Body schema: application/json

Capture results request to the traffic generator.

-
port_name
required
string

The name of a port a capture is started on.

-

x-constraint:

-
    -
  • /components/schemas/Port/properties/name
  • -
-

Responses

Request samples

Content type
application/json
{
  • "port_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}
- - - - \ No newline at end of file diff --git a/artifacts/openapi.yaml b/artifacts/openapi.yaml index 83d6b217..0d36eb64 100644 --- a/artifacts/openapi.yaml +++ b/artifacts/openapi.yaml @@ -699,9 +699,7 @@ components: properties: port_name: description: | - Status: deprecated - property port_name is deprecated from the snappi version x.x.x. - please use connection.port_name instead of port_name + Status: {'status': 'deprecated', 'additional_information': 'property port_name is deprecated from the snappi version x.x.x.\nplease use connection.port_name instead of port_name'} The unique name of a Port or a LAG that will emulate this interface. port_name is deprecated and will be removed in future release.port_name and connection can't be used together, use either port_name or connection. @@ -1359,8 +1357,7 @@ components: status: under-review additional_information: Capture schema is under review description: |- - Status: under-review - Capture schema is under review + Status: {'status': 'under-review', 'additional_information': 'Capture schema is under review'} Configuration for capture settings. type: object required: @@ -1667,8 +1664,7 @@ components: status: under-review additional_information: Device.IsisRouter is under review description: |- - Status: under-review - Device.IsisRouter is under review + Status: {'status': 'under-review', 'additional_information': 'Device.IsisRouter is under review'} A container of properties for an ISIS router and its interfaces. type: object required: @@ -1733,8 +1729,9 @@ components: x-status: status: under-review additional_information: Device.IsisMultiInstance is under review - description: "Status: under-review\nDevice.IsisMultiInstance is under review\n\ - This container properties of an Multi-Instance-capable router (MI-RTR). " + description: "Status: {'status': 'under-review', 'additional_information': 'Device.IsisMultiInstance\ + \ is under review'}\nThis container properties of an Multi-Instance-capable\ + \ router (MI-RTR). " type: object properties: iid: @@ -1760,8 +1757,7 @@ components: status: under-review additional_information: Isis.Interface is under review description: |- - Status: under-review - Isis.Interface is under review + Status: {'status': 'under-review', 'additional_information': 'Isis.Interface is under review'} Configuration for single ISIS interface. type: object required: @@ -1894,8 +1890,7 @@ components: status: under-review additional_information: Isis.MT is under review description: |- - Status: under-review - Isis.MT is under review + Status: {'status': 'under-review', 'additional_information': 'Isis.MT is under review'} Configuration of properties per interface per topology when multiple topologies are configured in an ISIS router. in a ISIS router. type: object @@ -1921,8 +1916,7 @@ components: status: under-review additional_information: LinkState.TE is under review description: |- - Status: under-review - LinkState.TE is under review + Status: {'status': 'under-review', 'additional_information': 'LinkState.TE is under review'} A container for Traffic Engineering properties on a interface. type: object properties: @@ -3366,8 +3360,7 @@ components: status: under-review additional_information: Bgp.Advanced is under review description: |- - Status: under-review - Bgp.Advanced is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.Advanced is under review'} Configuration for BGP advanced settings. type: object properties: @@ -3405,8 +3398,7 @@ components: status: under-review additional_information: Bgp.Capability is under review description: |- - Status: under-review - Bgp.Capability is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.Capability is under review'} Configuration for BGP capability settings. type: object properties: @@ -3566,8 +3558,7 @@ components: status: under-review additional_information: Bgp.LearnedInformationFilter is under review description: |- - Status: under-review - Bgp.LearnedInformationFilter is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.LearnedInformationFilter is under review'} Configuration for controlling storage of BGP learned information recieved from the peer. type: object properties: @@ -4092,8 +4083,7 @@ components: status: under-review additional_information: BgpSrte.SegmentList is under review description: |- - Status: under-review - BgpSrte.SegmentList is under review + Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentList is under review'} Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. type: object properties: @@ -4131,8 +4121,7 @@ components: status: under-review additional_information: BgpSrte.Segment is under review description: |- - Status: under-review - BgpSrte.Segment is under review + Status: {'status': 'under-review', 'additional_information': 'BgpSrte.Segment is under review'} A Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. type: object required: @@ -4371,8 +4360,7 @@ components: status: under-review additional_information: BgpSrte.SegmentCTypeSubTlv is under review description: |- - Status: under-review - BgpSrte.SegmentCTypeSubTlv is under review + Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentCTypeSubTlv is under review'} Type C: IPv4 Node Address with optional SID. type: object required: @@ -5020,8 +5008,7 @@ components: status: under-review additional_information: Bgp.V6SegmentRouting is under review description: |- - Status: under-review - Bgp.V6SegmentRouting is under review + Status: {'status': 'under-review', 'additional_information': 'Bgp.V6SegmentRouting is under review'} Configuration for BGPv6 segment routing settings. type: object properties: @@ -7443,7 +7430,7 @@ components: properties: choice: type: string - default: simulated_user + default: throughput x-field-uid: 1 x-enum: simulated_user: @@ -7512,24 +7499,38 @@ components: Objective.Throughput: description: "Throughput traffic " type: object - required: - - value properties: - value: + choice: description: |- - Throughput value. - type: integer + The throughput test value or max throughput . + type: string + default: max_throughput x-field-uid: 1 + x-enum: + value: + x-field-uid: 1 + max_throughput: + x-field-uid: 2 + enum: + - value + - max_throughput + value: + type: integer + x-field-uid: 2 + max_throughput: + type: boolean + default: 0 + x-field-uid: 3 sustain_time: description: |- Amount of seconds when all users are up and performing the central test objectives, such as retrieving or serving pages. type: number - x-field-uid: 2 + x-field-uid: 4 ramp_down_time: description: |- Amount of seconds used for closing any connections that are still open after all transactions are complete. type: number - x-field-uid: 3 + x-field-uid: 5 Objective.Connection.Conncurrent: description: |- Conncurrent connections objectives diff --git a/artifacts/otg.proto b/artifacts/otg.proto index a890106b..3eb5316c 100644 --- a/artifacts/otg.proto +++ b/artifacts/otg.proto @@ -230,9 +230,9 @@ message DeviceEthernetBase { // An Ethernet interface with IPv4 and IPv6 addresses. message DeviceEthernet { - // Status: deprecated - // property port_name is deprecated from the snappi version x.x.x. - // please use connection.port_name instead of port_name + // Status: {'status': 'deprecated', 'additional_information': 'property port_name is + // deprecated from the snappi version x.x.x.\nplease use connection.port_name instead + // of port_name'} // The unique name of a Port or a LAG that will emulate this interface. // port_name is deprecated and will be removed in future release.port_name and connection // can't be used together, use either port_name or connection. @@ -677,8 +677,8 @@ message Layer1Ieee8021qbb { optional int32 pfc_class_7 = 9; } -// Status: under-review -// Capture schema is under review +// Status: {'status': 'under-review', 'additional_information': 'Capture schema is under +// review'} // Configuration for capture settings. message Capture { @@ -935,8 +935,8 @@ message Device { string name = 7; } -// Status: under-review -// Device.IsisRouter is under review +// Status: {'status': 'under-review', 'additional_information': 'Device.IsisRouter is +// under review'} // A container of properties for an ISIS router and its interfaces. message DeviceIsisRouter { @@ -972,8 +972,8 @@ message DeviceIsisRouter { string name = 9; } -// Status: under-review -// Device.IsisMultiInstance is under review +// Status: {'status': 'under-review', 'additional_information': 'Device.IsisMultiInstance +// is under review'} // This container properties of an Multi-Instance-capable router (MI-RTR). message DeviceIsisMultiInstance { @@ -987,8 +987,8 @@ message DeviceIsisMultiInstance { repeated int32 itids = 2; } -// Status: under-review -// Isis.Interface is under review +// Status: {'status': 'under-review', 'additional_information': 'Isis.Interface is under +// review'} // Configuration for single ISIS interface. message IsisInterface { @@ -1076,8 +1076,7 @@ message IsisInterfaceLevel { optional int32 dead_interval = 3; } -// Status: under-review -// Isis.MT is under review +// Status: {'status': 'under-review', 'additional_information': 'Isis.MT is under review'} // Configuration of properties per interface per topology when multiple topologies are // configured in an ISIS router. // in a ISIS router. @@ -1092,8 +1091,8 @@ message IsisMT { optional int32 link_metric = 2; } -// Status: under-review -// LinkState.TE is under review +// Status: {'status': 'under-review', 'additional_information': 'LinkState.TE is under +// review'} // A container for Traffic Engineering properties on a interface. message LinkStateTE { @@ -2113,8 +2112,8 @@ message BgpRouteTarget { optional string rt_value = 2; } -// Status: under-review -// Bgp.Advanced is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.Advanced is under +// review'} // Configuration for BGP advanced settings. message BgpAdvanced { @@ -2143,8 +2142,8 @@ message BgpAdvanced { optional string md5_key = 5; } -// Status: under-review -// Bgp.Capability is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.Capability is under +// review'} // Configuration for BGP capability settings. message BgpCapability { @@ -2261,8 +2260,8 @@ message BgpCapability { optional bool ipv6_unicast_add_path = 25; } -// Status: under-review -// Bgp.LearnedInformationFilter is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.LearnedInformationFilter +// is under review'} // Configuration for controlling storage of BGP learned information recieved from the // peer. message BgpLearnedInformationFilter { @@ -2651,8 +2650,8 @@ message BgpSrteExplicitNullLabelPolicySubTlv { optional ExplicitNullLabelPolicy.Enum explicit_null_label_policy = 1; } -// Status: under-review -// BgpSrte.SegmentList is under review +// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentList +// is under review'} // Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV // encodes a single explicit path towards the Endpoint. message BgpSrteSegmentList { @@ -2677,8 +2676,8 @@ message BgpSrteSegmentList { optional bool active = 4; } -// Status: under-review -// BgpSrte.Segment is under review +// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.Segment is +// under review'} // A Segment sub-TLV describes a single segment in a segment list i.e., a single element // of the explicit path. The Segment sub-TLVs are optional. message BgpSrteSegment { @@ -2836,8 +2835,8 @@ message BgpSrteSegmentBTypeSubTlv { optional BgpSrteSRv6SIDEndpointBehaviorAndStructure srv6_sid_endpoint_behavior = 3; } -// Status: under-review -// BgpSrte.SegmentCTypeSubTlv is under review +// Status: {'status': 'under-review', 'additional_information': 'BgpSrte.SegmentCTypeSubTlv +// is under review'} // Type C: IPv4 Node Address with optional SID. message BgpSrteSegmentCTypeSubTlv { @@ -3279,8 +3278,8 @@ message BgpV6Interface { repeated BgpV6Peer peers = 2; } -// Status: under-review -// Bgp.V6SegmentRouting is under review +// Status: {'status': 'under-review', 'additional_information': 'Bgp.V6SegmentRouting +// is under review'} // Configuration for BGPv6 segment routing settings. message BgpV6SegmentRouting { @@ -5168,7 +5167,7 @@ message StatefulFlowObjective { } } // Description missing in models - // default = Choice.Enum.simulated_user + // default = Choice.Enum.throughput optional Choice.Enum choice = 1; // Description missing in models @@ -5216,17 +5215,31 @@ message ObjectiveSimulatedUser { // Throughput traffic message ObjectiveThroughput { - // Throughput value. - // required = true - int32 value = 1; + message Choice { + enum Enum { + unspecified = 0; + value = 1; + max_throughput = 2; + } + } + // The throughput test value or max throughput . + // default = Choice.Enum.max_throughput + optional Choice.Enum choice = 1; + + // Description missing in models + optional int32 value = 2; + + // Description missing in models + // default = 0 + optional bool max_throughput = 3; // Amount of seconds when all users are up and performing the central test objectives, // such as retrieving or serving pages. - optional float sustain_time = 2; + optional float sustain_time = 4; // Amount of seconds used for closing any connections that are still open after all // transactions are complete. - optional float ramp_down_time = 3; + optional float ramp_down_time = 5; } // Conncurrent connections objectives