Description

The addEIGRP operation handles configuration related to EIGRP model. 
This API call is not allowed on the standby unit in an HA pair.

HTTP request

POST /api/fdm/v6/devices/default/routing/virtualrouters/{vrfId}/eigrp

Data Parameters

Parameter Required Type Description
name True string A string that represents the name of the object
description False string
Field level constraints: length must be between 0 and 200 (inclusive). (Note: Additional constraints might exist)
processConfiguration True object An object of type EIGRP process configuration that represents advanced configuration for this process.
Field level constraints: cannot be null. (Note: Additional constraints might exist)
defaultRouteDistributionIn False object An object of type standard access list that accepts input default routing information.
Allowed types are: [StandardAccessList]
defaultRouteDistributionOut False object An object of type standard access list that accepts output default routing information.
Allowed types are: [StandardAccessList]
distributionList True [object] An object of type EIGRP distribution list that represents the configuration of filtering incoming or outgoing routes using access control lists.
Field level constraints: cannot be null. (Note: Additional constraints might exist)
routingInterfaces False object An object of type EIGRP routing interfaces to suppress routing information on the listed interfaces.
neighbors True [object] A list of objects of type EIGRP neighbor to configure the neighbor interfaces and IPv4 address to be configured for the process.
Field level constraints: cannot be null. (Note: Additional constraints might exist)
networks True [object] A list of network objects that accepts IPv4 addresses to enable routing.
Field level constraints: cannot be null. (Note: Additional constraints might exist)
Allowed types are: [NetworkObject]
redistributeProtocols True [object] A list of objects or type EIGRP redistribute protocol that represents the redistributed routes.
Field level constraints: cannot be null. (Note: Additional constraints might exist)
autonomousSystemNumber True string Identifier for the EIGRP Process.
Field level constraints: cannot be null, must match pattern \d|[1-9]\d+, must be between 1 and 65535 (inclusive). (Note: Additional constraints might exist)
type True string A UTF8 string, all letters lower-case, that represents the class-type. This corresponds to the class name.

Path Parameters

Parameter Required Type Description
vrfId True string

Example

curl -X POST \
    --header "Accept: application/json" \
    --header "Authorization: Bearer ${ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    -d '{
        "autonomousSystemNumber": "string",
        "defaultRouteDistributionIn": {
            "id": "string",
            "name": "string",
            "type": "string",
            "version": "string"
        },
        "defaultRouteDistributionOut": {
            "id": "string",
            "name": "string",
            "type": "string",
            "version": "string"
        },
        "description": "string",
        "distributionList": [
            {
                "distributeAccessList": {
                    "id": "string",
                    "name": "string",
                    "type": "string",
                    "version": "string"
                },
                "type": "eigrpdistributelist"
            }
        ],
        "id": "string",
        "name": "string",
        "neighbors": [
            {
                "ipAddress": "string",
                "neighborInterface": {
                    "id": "string",
                    "name": "string",
                    "type": "string",
                    "version": "string"
                },
                "type": "eigrpneighbor"
            }
        ],
        "networks": [
            {
                "id": "string",
                "name": "string",
                "type": "string",
                "version": "string"
            }
        ],
        "processConfiguration": {
            "administrativeDistance": {
                "external": 0,
                "internal": 0,
                "type": "eigrpadministrativedistance"
            },
            "autoSummary": true,
            "logNeighborChanges": true,
            "logNeighborWarningInterval": 0,
            "routeMetric": {
                "bandwidth": 0,
                "delay": 0,
                "effectiveBandwidth": 0,
                "pathMTU": 0,
                "reliability": 0,
                "type": "eigrproutemetric"
            },
            "routerId": "string",
            "stub": {
                "type": "eigrpstuboptions"
            },
            "type": "eigrpprocessconfiguration"
        },
        "redistributeProtocols": [
            {
                "routeMap": {
                    "id": "string",
                    "name": "string",
                    "type": "string",
                    "version": "string"
                },
                "routeMetric": {
                    "bandwidth": 0,
                    "delay": 0,
                    "effectiveBandwidth": 0,
                    "pathMTU": 0,
                    "reliability": 0,
                    "type": "eigrproutemetric"
                },
                "type": "eigrpredistributeprotocol"
            }
        ],
        "routingInterfaces": {
            "members": [],
            "type": "eigrproutinginterfaces"
        },
        "type": "eigrp",
        "version": "string"
    }' \
    "https://${HOST}:${PORT}/api/fdm/v6/devices/default/routing/virtualrouters/{vrfId}/eigrp"
from bravado.requests_client import RequestsClient
from bravado.client import SwaggerClient


def get_client(host, token):
    http_client = RequestsClient()
    http_client.ssl_verify = False
    http_client.set_api_key(
        host,
        "Bearer {}".format(token),
        param_name="Authorization",
        param_in="header"
    )
    return SwaggerClient.from_url(
        "https://{}/apispec/ngfw.json".format(host),
        http_client=http_client,
        config={
            "validate_responses": False,
            "validate_swagger_spec": False
        }
    )


def add_eigrp(client, vrf_id, body):
    return client.EIGRP.addEIGRP(
        vrfId=vrf_id,
        body=body
    ).response().result


if __name__ == "__main__":
    host = "ftd.example.com"
    token = "access_token"
    client = get_client(host, token)

    vrf_id = "string"
    body = {'autonomousSystemNumber': 'string',
 'defaultRouteDistributionIn': {'id': 'string',
                                'name': 'string',
                                'type': 'string',
                                'version': 'string'},
 'defaultRouteDistributionOut': {'id': 'string',
                                 'name': 'string',
                                 'type': 'string',
                                 'version': 'string'},
 'description': 'string',
 'distributionList': [{'distributeAccessList': {'id': 'string',
                                                'name': 'string',
                                                'type': 'string',
                                                'version': 'string'},
                       'type': 'eigrpdistributelist'}],
 'name': 'string',
 'neighbors': [{'ipAddress': 'string',
                'neighborInterface': {'id': 'string',
                                      'name': 'string',
                                      'type': 'string',
                                      'version': 'string'},
                'type': 'eigrpneighbor'}],
 'networks': [{'id': 'string',
               'name': 'string',
               'type': 'string',
               'version': 'string'}],
 'processConfiguration': {'administrativeDistance': {'external': 0,
                                                     'internal': 0,
                                                     'type': 'eigrpadministrativedistance'},
                          'autoSummary': True,
                          'logNeighborChanges': True,
                          'logNeighborWarningInterval': 0,
                          'routeMetric': {'bandwidth': 0,
                                          'delay': 0,
                                          'effectiveBandwidth': 0,
                                          'pathMTU': 0,
                                          'reliability': 0,
                                          'type': 'eigrproutemetric'},
                          'routerId': 'string',
                          'stub': {'type': 'eigrpstuboptions'},
                          'type': 'eigrpprocessconfiguration'},
 'redistributeProtocols': [{'routeMap': {'id': 'string',
                                         'name': 'string',
                                         'type': 'string',
                                         'version': 'string'},
                            'routeMetric': {'bandwidth': 0,
                                            'delay': 0,
                                            'effectiveBandwidth': 0,
                                            'pathMTU': 0,
                                            'reliability': 0,
                                            'type': 'eigrproutemetric'},
                            'type': 'eigrpredistributeprotocol'}],
 'routingInterfaces': {'members': [],
                       'type': 'eigrproutinginterfaces'},
 'type': 'eigrp'}

    add_eigrp(client, vrf_id, body)