1#!/usr/local/bin/python3.8
2from __future__ import (absolute_import, division, print_function)
3# Copyright 2019-2020 Fortinet, Inc.
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program.  If not, see <https://www.gnu.org/licenses/>.
17
18__metaclass__ = type
19
20ANSIBLE_METADATA = {'status': ['preview'],
21                    'supported_by': 'community',
22                    'metadata_version': '1.1'}
23
24DOCUMENTATION = '''
25---
26module: fortios_router_ospf
27short_description: Configure OSPF in Fortinet's FortiOS and FortiGate.
28description:
29    - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the
30      user to set and modify router feature and ospf category.
31      Examples include all parameters and values need to be adjusted to datasources before usage.
32      Tested with FOS v6.0.0
33version_added: "2.10"
34author:
35    - Link Zheng (@chillancezen)
36    - Jie Xue (@JieX19)
37    - Hongbin Lu (@fgtdev-hblu)
38    - Frank Shen (@frankshen01)
39    - Miguel Angel Munoz (@mamunozgonzalez)
40    - Nicolas Thomas (@thomnico)
41notes:
42    - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks
43
44requirements:
45    - ansible>=2.9.0
46options:
47    access_token:
48        description:
49            - Token-based authentication.
50              Generated from GUI of Fortigate.
51        type: str
52        required: false
53    enable_log:
54        description:
55            - Enable/Disable logging for task.
56        type: bool
57        required: false
58        default: false
59    vdom:
60        description:
61            - Virtual domain, among those defined previously. A vdom is a
62              virtual instance of the FortiGate that can be configured and
63              used as a different unit.
64        type: str
65        default: root
66
67    router_ospf:
68        description:
69            - Configure OSPF.
70        default: null
71        type: dict
72        suboptions:
73            abr_type:
74                description:
75                    - Area border router type.
76                type: str
77                choices:
78                    - cisco
79                    - ibm
80                    - shortcut
81                    - standard
82            area:
83                description:
84                    - OSPF area configuration.
85                type: list
86                suboptions:
87                    authentication:
88                        description:
89                            - Authentication type.
90                        type: str
91                        choices:
92                            - none
93                            - text
94                            - md5
95                    comments:
96                        description:
97                            - Comment.
98                        type: str
99                    default_cost:
100                        description:
101                            - Summary default cost of stub or NSSA area.
102                        type: int
103                    filter_list:
104                        description:
105                            - OSPF area filter-list configuration.
106                        type: list
107                        suboptions:
108                            direction:
109                                description:
110                                    - Direction.
111                                type: str
112                                choices:
113                                    - in
114                                    - out
115                            id:
116                                description:
117                                    - Filter list entry ID.
118                                required: true
119                                type: int
120                            list:
121                                description:
122                                    - Access-list or prefix-list name. Source router.access-list.name router.prefix-list.name.
123                                type: str
124                    id:
125                        description:
126                            - Area entry IP address.
127                        required: true
128                        type: str
129                    nssa_default_information_originate:
130                        description:
131                            - Redistribute, advertise, or do not originate Type-7 default route into NSSA area.
132                        type: str
133                        choices:
134                            - enable
135                            - always
136                            - disable
137                    nssa_default_information_originate_metric:
138                        description:
139                            - OSPF default metric.
140                        type: int
141                    nssa_default_information_originate_metric_type:
142                        description:
143                            - OSPF metric type for default routes.
144                        type: str
145                        choices:
146                            - 1
147                            - 2
148                    nssa_redistribution:
149                        description:
150                            - Enable/disable redistribute into NSSA area.
151                        type: str
152                        choices:
153                            - enable
154                            - disable
155                    nssa_translator_role:
156                        description:
157                            - NSSA translator role type.
158                        type: str
159                        choices:
160                            - candidate
161                            - never
162                            - always
163                    range:
164                        description:
165                            - OSPF area range configuration.
166                        type: list
167                        suboptions:
168                            advertise:
169                                description:
170                                    - Enable/disable advertise status.
171                                type: str
172                                choices:
173                                    - disable
174                                    - enable
175                            id:
176                                description:
177                                    - Range entry ID.
178                                required: true
179                                type: int
180                            prefix:
181                                description:
182                                    - Prefix.
183                                type: str
184                            substitute:
185                                description:
186                                    - Substitute prefix.
187                                type: str
188                            substitute_status:
189                                description:
190                                    - Enable/disable substitute status.
191                                type: str
192                                choices:
193                                    - enable
194                                    - disable
195                    shortcut:
196                        description:
197                            - Enable/disable shortcut option.
198                        type: str
199                        choices:
200                            - disable
201                            - enable
202                            - default
203                    stub_type:
204                        description:
205                            - Stub summary setting.
206                        type: str
207                        choices:
208                            - no-summary
209                            - summary
210                    type:
211                        description:
212                            - Area type setting.
213                        type: str
214                        choices:
215                            - regular
216                            - nssa
217                            - stub
218                    virtual_link:
219                        description:
220                            - OSPF virtual link configuration.
221                        type: list
222                        suboptions:
223                            authentication:
224                                description:
225                                    - Authentication type.
226                                type: str
227                                choices:
228                                    - none
229                                    - text
230                                    - md5
231                            authentication_key:
232                                description:
233                                    - Authentication key.
234                                type: str
235                            dead_interval:
236                                description:
237                                    - Dead interval.
238                                type: int
239                            hello_interval:
240                                description:
241                                    - Hello interval.
242                                type: int
243                            md5_key:
244                                description:
245                                    - MD5 key.
246                                type: str
247                            md5_keychain:
248                                description:
249                                    - Authentication MD5 key-chain name. Source router.key-chain.name.
250                                type: str
251                            md5_keys:
252                                description:
253                                    - MD5 key.
254                                type: list
255                                suboptions:
256                                    id:
257                                        description:
258                                            - Key ID (1 - 255).
259                                        required: true
260                                        type: int
261                                    key_string:
262                                        description:
263                                            - Password for the key.
264                                        type: str
265                            name:
266                                description:
267                                    - Virtual link entry name.
268                                required: true
269                                type: str
270                            peer:
271                                description:
272                                    - Peer IP.
273                                type: str
274                            retransmit_interval:
275                                description:
276                                    - Retransmit interval.
277                                type: int
278                            transmit_delay:
279                                description:
280                                    - Transmit delay.
281                                type: int
282            auto_cost_ref_bandwidth:
283                description:
284                    - Reference bandwidth in terms of megabits per second.
285                type: int
286            bfd:
287                description:
288                    - Bidirectional Forwarding Detection (BFD).
289                type: str
290                choices:
291                    - enable
292                    - disable
293            database_overflow:
294                description:
295                    - Enable/disable database overflow.
296                type: str
297                choices:
298                    - enable
299                    - disable
300            database_overflow_max_lsas:
301                description:
302                    - Database overflow maximum LSAs.
303                type: int
304            database_overflow_time_to_recover:
305                description:
306                    - Database overflow time to recover (sec).
307                type: int
308            default_information_metric:
309                description:
310                    - Default information metric.
311                type: int
312            default_information_metric_type:
313                description:
314                    - Default information metric type.
315                type: str
316                choices:
317                    - 1
318                    - 2
319            default_information_originate:
320                description:
321                    - Enable/disable generation of default route.
322                type: str
323                choices:
324                    - enable
325                    - always
326                    - disable
327            default_information_route_map:
328                description:
329                    - Default information route map. Source router.route-map.name.
330                type: str
331            default_metric:
332                description:
333                    - Default metric of redistribute routes.
334                type: int
335            distance:
336                description:
337                    - Distance of the route.
338                type: int
339            distance_external:
340                description:
341                    - Administrative external distance.
342                type: int
343            distance_inter_area:
344                description:
345                    - Administrative inter-area distance.
346                type: int
347            distance_intra_area:
348                description:
349                    - Administrative intra-area distance.
350                type: int
351            distribute_list:
352                description:
353                    - Distribute list configuration.
354                type: list
355                suboptions:
356                    access_list:
357                        description:
358                            - Access list name. Source router.access-list.name.
359                        type: str
360                    id:
361                        description:
362                            - Distribute list entry ID.
363                        required: true
364                        type: int
365                    protocol:
366                        description:
367                            - Protocol type.
368                        type: str
369                        choices:
370                            - connected
371                            - static
372                            - rip
373            distribute_list_in:
374                description:
375                    - Filter incoming routes. Source router.access-list.name router.prefix-list.name.
376                type: str
377            distribute_route_map_in:
378                description:
379                    - Filter incoming external routes by route-map. Source router.route-map.name.
380                type: str
381            log_neighbour_changes:
382                description:
383                    - Enable logging of OSPF neighbour"s changes
384                type: str
385                choices:
386                    - enable
387                    - disable
388            neighbor:
389                description:
390                    - OSPF neighbor configuration are used when OSPF runs on non-broadcast media
391                type: list
392                suboptions:
393                    cost:
394                        description:
395                            - Cost of the interface, value range from 0 to 65535, 0 means auto-cost.
396                        type: int
397                    id:
398                        description:
399                            - Neighbor entry ID.
400                        required: true
401                        type: int
402                    ip:
403                        description:
404                            - Interface IP address of the neighbor.
405                        type: str
406                    poll_interval:
407                        description:
408                            - Poll interval time in seconds.
409                        type: int
410                    priority:
411                        description:
412                            - Priority.
413                        type: int
414            network:
415                description:
416                    - OSPF network configuration.
417                type: list
418                suboptions:
419                    area:
420                        description:
421                            - Attach the network to area.
422                        type: str
423                    comments:
424                        description:
425                            - Comment.
426                        type: str
427                    id:
428                        description:
429                            - Network entry ID.
430                        required: true
431                        type: int
432                    prefix:
433                        description:
434                            - Prefix.
435                        type: str
436            ospf_interface:
437                description:
438                    - OSPF interface configuration.
439                type: list
440                suboptions:
441                    authentication:
442                        description:
443                            - Authentication type.
444                        type: str
445                        choices:
446                            - none
447                            - text
448                            - md5
449                    authentication_key:
450                        description:
451                            - Authentication key.
452                        type: str
453                    bfd:
454                        description:
455                            - Bidirectional Forwarding Detection (BFD).
456                        type: str
457                        choices:
458                            - global
459                            - enable
460                            - disable
461                    comments:
462                        description:
463                            - Comment.
464                        type: str
465                    cost:
466                        description:
467                            - Cost of the interface, value range from 0 to 65535, 0 means auto-cost.
468                        type: int
469                    database_filter_out:
470                        description:
471                            - Enable/disable control of flooding out LSAs.
472                        type: str
473                        choices:
474                            - enable
475                            - disable
476                    dead_interval:
477                        description:
478                            - Dead interval.
479                        type: int
480                    hello_interval:
481                        description:
482                            - Hello interval.
483                        type: int
484                    hello_multiplier:
485                        description:
486                            - Number of hello packets within dead interval.
487                        type: int
488                    interface:
489                        description:
490                            - Configuration interface name. Source system.interface.name.
491                        type: str
492                    ip:
493                        description:
494                            - IP address.
495                        type: str
496                    md5_key:
497                        description:
498                            - MD5 key.
499                        type: str
500                    md5_keychain:
501                        description:
502                            - Authentication MD5 key-chain name. Source router.key-chain.name.
503                        type: str
504                    md5_keys:
505                        description:
506                            - MD5 key.
507                        type: list
508                        suboptions:
509                            id:
510                                description:
511                                    - Key ID (1 - 255).
512                                required: true
513                                type: int
514                            key_string:
515                                description:
516                                    - Password for the key.
517                                type: str
518                    mtu:
519                        description:
520                            - MTU for database description packets.
521                        type: int
522                    mtu_ignore:
523                        description:
524                            - Enable/disable ignore MTU.
525                        type: str
526                        choices:
527                            - enable
528                            - disable
529                    name:
530                        description:
531                            - Interface entry name.
532                        required: true
533                        type: str
534                    network_type:
535                        description:
536                            - Network type.
537                        type: str
538                        choices:
539                            - broadcast
540                            - non-broadcast
541                            - point-to-point
542                            - point-to-multipoint
543                            - point-to-multipoint-non-broadcast
544                    prefix_length:
545                        description:
546                            - Prefix length.
547                        type: int
548                    priority:
549                        description:
550                            - Priority.
551                        type: int
552                    resync_timeout:
553                        description:
554                            - Graceful restart neighbor resynchronization timeout.
555                        type: int
556                    retransmit_interval:
557                        description:
558                            - Retransmit interval.
559                        type: int
560                    status:
561                        description:
562                            - Enable/disable status.
563                        type: str
564                        choices:
565                            - disable
566                            - enable
567                    transmit_delay:
568                        description:
569                            - Transmit delay.
570                        type: int
571            passive_interface:
572                description:
573                    - Passive interface configuration.
574                type: list
575                suboptions:
576                    name:
577                        description:
578                            - Passive interface name. Source system.interface.name.
579                        required: true
580                        type: str
581            redistribute:
582                description:
583                    - Redistribute configuration.
584                type: list
585                suboptions:
586                    metric:
587                        description:
588                            - Redistribute metric setting.
589                        type: int
590                    metric_type:
591                        description:
592                            - Metric type.
593                        type: str
594                        choices:
595                            - 1
596                            - 2
597                    name:
598                        description:
599                            - Redistribute name.
600                        required: true
601                        type: str
602                    routemap:
603                        description:
604                            - Route map name. Source router.route-map.name.
605                        type: str
606                    status:
607                        description:
608                            - status
609                        type: str
610                        choices:
611                            - enable
612                            - disable
613                    tag:
614                        description:
615                            - Tag value.
616                        type: int
617            restart_mode:
618                description:
619                    - OSPF restart mode (graceful or LLS).
620                type: str
621                choices:
622                    - none
623                    - lls
624                    - graceful-restart
625            restart_period:
626                description:
627                    - Graceful restart period.
628                type: int
629            rfc1583_compatible:
630                description:
631                    - Enable/disable RFC1583 compatibility.
632                type: str
633                choices:
634                    - enable
635                    - disable
636            router_id:
637                description:
638                    - Router ID.
639                type: str
640            spf_timers:
641                description:
642                    - SPF calculation frequency.
643                type: str
644            summary_address:
645                description:
646                    - IP address summary configuration.
647                type: list
648                suboptions:
649                    advertise:
650                        description:
651                            - Enable/disable advertise status.
652                        type: str
653                        choices:
654                            - disable
655                            - enable
656                    id:
657                        description:
658                            - Summary address entry ID.
659                        required: true
660                        type: int
661                    prefix:
662                        description:
663                            - Prefix.
664                        type: str
665                    tag:
666                        description:
667                            - Tag value.
668                        type: int
669'''
670
671EXAMPLES = '''
672- hosts: fortigates
673  collections:
674    - fortinet.fortios
675  connection: httpapi
676  vars:
677   vdom: "root"
678   ansible_httpapi_use_ssl: yes
679   ansible_httpapi_validate_certs: no
680   ansible_httpapi_port: 443
681  tasks:
682  - name: Configure OSPF.
683    fortios_router_ospf:
684      vdom:  "{{ vdom }}"
685      router_ospf:
686        abr_type: "cisco"
687        area:
688         -
689            authentication: "none"
690            comments: "<your_own_value>"
691            default_cost: "7"
692            filter_list:
693             -
694                direction: "in"
695                id:  "10"
696                list: "<your_own_value> (source router.access-list.name router.prefix-list.name)"
697            id:  "12"
698            nssa_default_information_originate: "enable"
699            nssa_default_information_originate_metric: "14"
700            nssa_default_information_originate_metric_type: "1"
701            nssa_redistribution: "enable"
702            nssa_translator_role: "candidate"
703            range:
704             -
705                advertise: "disable"
706                id:  "20"
707                prefix: "<your_own_value>"
708                substitute: "<your_own_value>"
709                substitute_status: "enable"
710            shortcut: "disable"
711            stub_type: "no-summary"
712            type: "regular"
713            virtual_link:
714             -
715                authentication: "none"
716                authentication_key: "<your_own_value>"
717                dead_interval: "30"
718                hello_interval: "31"
719                md5_key: "<your_own_value>"
720                md5_keychain: "<your_own_value> (source router.key-chain.name)"
721                md5_keys:
722                 -
723                    id:  "35"
724                    key_string: "<your_own_value>"
725                name: "default_name_37"
726                peer: "<your_own_value>"
727                retransmit_interval: "39"
728                transmit_delay: "40"
729        auto_cost_ref_bandwidth: "41"
730        bfd: "enable"
731        database_overflow: "enable"
732        database_overflow_max_lsas: "44"
733        database_overflow_time_to_recover: "45"
734        default_information_metric: "46"
735        default_information_metric_type: "1"
736        default_information_originate: "enable"
737        default_information_route_map: "<your_own_value> (source router.route-map.name)"
738        default_metric: "50"
739        distance: "51"
740        distance_external: "52"
741        distance_inter_area: "53"
742        distance_intra_area: "54"
743        distribute_list:
744         -
745            access_list: "<your_own_value> (source router.access-list.name)"
746            id:  "57"
747            protocol: "connected"
748        distribute_list_in: "<your_own_value> (source router.access-list.name router.prefix-list.name)"
749        distribute_route_map_in: "<your_own_value> (source router.route-map.name)"
750        log_neighbour_changes: "enable"
751        neighbor:
752         -
753            cost: "63"
754            id:  "64"
755            ip: "<your_own_value>"
756            poll_interval: "66"
757            priority: "67"
758        network:
759         -
760            area: "<your_own_value>"
761            comments: "<your_own_value>"
762            id:  "71"
763            prefix: "<your_own_value>"
764        ospf_interface:
765         -
766            authentication: "none"
767            authentication_key: "<your_own_value>"
768            bfd: "global"
769            comments: "<your_own_value>"
770            cost: "78"
771            database_filter_out: "enable"
772            dead_interval: "80"
773            hello_interval: "81"
774            hello_multiplier: "82"
775            interface: "<your_own_value> (source system.interface.name)"
776            ip: "<your_own_value>"
777            md5_key: "<your_own_value>"
778            md5_keychain: "<your_own_value> (source router.key-chain.name)"
779            md5_keys:
780             -
781                id:  "88"
782                key_string: "<your_own_value>"
783            mtu: "90"
784            mtu_ignore: "enable"
785            name: "default_name_92"
786            network_type: "broadcast"
787            prefix_length: "94"
788            priority: "95"
789            resync_timeout: "96"
790            retransmit_interval: "97"
791            status: "disable"
792            transmit_delay: "99"
793        passive_interface:
794         -
795            name: "default_name_101 (source system.interface.name)"
796        redistribute:
797         -
798            metric: "103"
799            metric_type: "1"
800            name: "default_name_105"
801            routemap: "<your_own_value> (source router.route-map.name)"
802            status: "enable"
803            tag: "108"
804        restart_mode: "none"
805        restart_period: "110"
806        rfc1583_compatible: "enable"
807        router_id: "<your_own_value>"
808        spf_timers: "<your_own_value>"
809        summary_address:
810         -
811            advertise: "disable"
812            id:  "116"
813            prefix: "<your_own_value>"
814            tag: "118"
815
816'''
817
818RETURN = '''
819build:
820  description: Build number of the fortigate image
821  returned: always
822  type: str
823  sample: '1547'
824http_method:
825  description: Last method used to provision the content into FortiGate
826  returned: always
827  type: str
828  sample: 'PUT'
829http_status:
830  description: Last result given by FortiGate on last operation applied
831  returned: always
832  type: str
833  sample: "200"
834mkey:
835  description: Master key (id) used in the last call to FortiGate
836  returned: success
837  type: str
838  sample: "id"
839name:
840  description: Name of the table used to fulfill the request
841  returned: always
842  type: str
843  sample: "urlfilter"
844path:
845  description: Path of the table used to fulfill the request
846  returned: always
847  type: str
848  sample: "webfilter"
849revision:
850  description: Internal revision number
851  returned: always
852  type: str
853  sample: "17.0.2.10658"
854serial:
855  description: Serial number of the unit
856  returned: always
857  type: str
858  sample: "FGVMEVYYQT3AB5352"
859status:
860  description: Indication of the operation's result
861  returned: always
862  type: str
863  sample: "success"
864vdom:
865  description: Virtual domain used
866  returned: always
867  type: str
868  sample: "root"
869version:
870  description: Version of the FortiGate
871  returned: always
872  type: str
873  sample: "v5.6.3"
874
875'''
876from ansible.module_utils.basic import AnsibleModule
877from ansible.module_utils.connection import Connection
878from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import FortiOSHandler
879from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_legacy_fortiosapi
880from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import schema_to_module_spec
881from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_schema_versioning
882from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import FAIL_SOCKET_MSG
883from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import is_same_comparison
884from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import serialize
885
886
887def filter_router_ospf_data(json):
888    option_list = ['abr_type', 'area', 'auto_cost_ref_bandwidth',
889                   'bfd', 'database_overflow', 'database_overflow_max_lsas',
890                   'database_overflow_time_to_recover', 'default_information_metric', 'default_information_metric_type',
891                   'default_information_originate', 'default_information_route_map', 'default_metric',
892                   'distance', 'distance_external', 'distance_inter_area',
893                   'distance_intra_area', 'distribute_list', 'distribute_list_in',
894                   'distribute_route_map_in', 'log_neighbour_changes', 'neighbor',
895                   'network', 'ospf_interface', 'passive_interface',
896                   'redistribute', 'restart_mode', 'restart_period',
897                   'rfc1583_compatible', 'router_id', 'spf_timers',
898                   'summary_address']
899    dictionary = {}
900
901    for attribute in option_list:
902        if attribute in json and json[attribute] is not None:
903            dictionary[attribute] = json[attribute]
904
905    return dictionary
906
907
908def underscore_to_hyphen(data):
909    if isinstance(data, list):
910        for i, elem in enumerate(data):
911            data[i] = underscore_to_hyphen(elem)
912    elif isinstance(data, dict):
913        new_data = {}
914        for k, v in data.items():
915            new_data[k.replace('_', '-')] = underscore_to_hyphen(v)
916        data = new_data
917
918    return data
919
920
921def router_ospf(data, fos):
922    vdom = data['vdom']
923    router_ospf_data = data['router_ospf']
924    filtered_data = underscore_to_hyphen(filter_router_ospf_data(router_ospf_data))
925
926    return fos.set('router',
927                   'ospf',
928                   data=filtered_data,
929                   vdom=vdom)
930
931
932def is_successful_status(status):
933    return status['status'] == "success" or \
934        status['http_method'] == "DELETE" and status['http_status'] == 404
935
936
937def fortios_router(data, fos):
938
939    if data['router_ospf']:
940        resp = router_ospf(data, fos)
941    else:
942        fos._module.fail_json(msg='missing task body: %s' % ('router_ospf'))
943
944    return not is_successful_status(resp), \
945        resp['status'] == "success" and \
946        (resp['revision_changed'] if 'revision_changed' in resp else True), \
947        resp
948
949
950versioned_schema = {
951    "type": "dict",
952    "children": {
953        "distribute_route_map_in": {
954            "type": "string",
955            "revisions": {
956                "v6.0.0": True,
957                "v7.0.0": True,
958                "v6.0.5": True,
959                "v6.4.4": True,
960                "v6.4.0": True,
961                "v6.4.1": True,
962                "v6.2.0": True,
963                "v6.2.3": True,
964                "v6.2.5": True,
965                "v6.2.7": True,
966                "v6.0.11": True
967            }
968        },
969        "default_information_metric": {
970            "type": "integer",
971            "revisions": {
972                "v6.0.0": True,
973                "v7.0.0": True,
974                "v6.0.5": True,
975                "v6.4.4": True,
976                "v6.4.0": True,
977                "v6.4.1": True,
978                "v6.2.0": True,
979                "v6.2.3": True,
980                "v6.2.5": True,
981                "v6.2.7": True,
982                "v6.0.11": True
983            }
984        },
985        "distance_intra_area": {
986            "type": "integer",
987            "revisions": {
988                "v6.0.0": True,
989                "v7.0.0": True,
990                "v6.0.5": True,
991                "v6.4.4": True,
992                "v6.4.0": True,
993                "v6.4.1": True,
994                "v6.2.0": True,
995                "v6.2.3": True,
996                "v6.2.5": True,
997                "v6.2.7": True,
998                "v6.0.11": True
999            }
1000        },
1001        "default_information_metric_type": {
1002            "type": "string",
1003            "options": [
1004                {
1005                    "value": "1",
1006                    "revisions": {
1007                        "v6.0.0": True,
1008                        "v7.0.0": True,
1009                        "v6.0.5": True,
1010                        "v6.4.4": True,
1011                        "v6.4.0": True,
1012                        "v6.4.1": True,
1013                        "v6.2.0": True,
1014                        "v6.2.3": True,
1015                        "v6.2.5": True,
1016                        "v6.2.7": True,
1017                        "v6.0.11": True
1018                    }
1019                },
1020                {
1021                    "value": "2",
1022                    "revisions": {
1023                        "v6.0.0": True,
1024                        "v7.0.0": True,
1025                        "v6.0.5": True,
1026                        "v6.4.4": True,
1027                        "v6.4.0": True,
1028                        "v6.4.1": True,
1029                        "v6.2.0": True,
1030                        "v6.2.3": True,
1031                        "v6.2.5": True,
1032                        "v6.2.7": True,
1033                        "v6.0.11": True
1034                    }
1035                }
1036            ],
1037            "revisions": {
1038                "v6.0.0": True,
1039                "v7.0.0": True,
1040                "v6.0.5": True,
1041                "v6.4.4": True,
1042                "v6.4.0": True,
1043                "v6.4.1": True,
1044                "v6.2.0": True,
1045                "v6.2.3": True,
1046                "v6.2.5": True,
1047                "v6.2.7": True,
1048                "v6.0.11": True
1049            }
1050        },
1051        "network": {
1052            "type": "list",
1053            "children": {
1054                "prefix": {
1055                    "type": "string",
1056                    "revisions": {
1057                        "v6.0.0": True,
1058                        "v7.0.0": True,
1059                        "v6.0.5": True,
1060                        "v6.4.4": True,
1061                        "v6.4.0": True,
1062                        "v6.4.1": True,
1063                        "v6.2.0": True,
1064                        "v6.2.3": True,
1065                        "v6.2.5": True,
1066                        "v6.2.7": True,
1067                        "v6.0.11": True
1068                    }
1069                },
1070                "id": {
1071                    "type": "integer",
1072                    "revisions": {
1073                        "v6.0.0": True,
1074                        "v7.0.0": True,
1075                        "v6.0.5": True,
1076                        "v6.4.4": True,
1077                        "v6.4.0": True,
1078                        "v6.4.1": True,
1079                        "v6.2.0": True,
1080                        "v6.2.3": True,
1081                        "v6.2.5": True,
1082                        "v6.2.7": True,
1083                        "v6.0.11": True
1084                    }
1085                },
1086                "comments": {
1087                    "type": "string",
1088                    "revisions": {
1089                        "v7.0.0": True
1090                    }
1091                },
1092                "area": {
1093                    "type": "string",
1094                    "revisions": {
1095                        "v6.0.0": True,
1096                        "v7.0.0": True,
1097                        "v6.0.5": True,
1098                        "v6.4.4": True,
1099                        "v6.4.0": True,
1100                        "v6.4.1": True,
1101                        "v6.2.0": True,
1102                        "v6.2.3": True,
1103                        "v6.2.5": True,
1104                        "v6.2.7": True,
1105                        "v6.0.11": True
1106                    }
1107                }
1108            },
1109            "revisions": {
1110                "v6.0.0": True,
1111                "v7.0.0": True,
1112                "v6.0.5": True,
1113                "v6.4.4": True,
1114                "v6.4.0": True,
1115                "v6.4.1": True,
1116                "v6.2.0": True,
1117                "v6.2.3": True,
1118                "v6.2.5": True,
1119                "v6.2.7": True,
1120                "v6.0.11": True
1121            }
1122        },
1123        "area": {
1124            "type": "list",
1125            "children": {
1126                "stub_type": {
1127                    "type": "string",
1128                    "options": [
1129                        {
1130                            "value": "no-summary",
1131                            "revisions": {
1132                                "v6.0.0": True,
1133                                "v7.0.0": True,
1134                                "v6.0.5": True,
1135                                "v6.4.4": True,
1136                                "v6.4.0": True,
1137                                "v6.4.1": True,
1138                                "v6.2.0": True,
1139                                "v6.2.3": True,
1140                                "v6.2.5": True,
1141                                "v6.2.7": True,
1142                                "v6.0.11": True
1143                            }
1144                        },
1145                        {
1146                            "value": "summary",
1147                            "revisions": {
1148                                "v6.0.0": True,
1149                                "v7.0.0": True,
1150                                "v6.0.5": True,
1151                                "v6.4.4": True,
1152                                "v6.4.0": True,
1153                                "v6.4.1": True,
1154                                "v6.2.0": True,
1155                                "v6.2.3": True,
1156                                "v6.2.5": True,
1157                                "v6.2.7": True,
1158                                "v6.0.11": True
1159                            }
1160                        }
1161                    ],
1162                    "revisions": {
1163                        "v6.0.0": True,
1164                        "v7.0.0": True,
1165                        "v6.0.5": True,
1166                        "v6.4.4": True,
1167                        "v6.4.0": True,
1168                        "v6.4.1": True,
1169                        "v6.2.0": True,
1170                        "v6.2.3": True,
1171                        "v6.2.5": True,
1172                        "v6.2.7": True,
1173                        "v6.0.11": True
1174                    }
1175                },
1176                "nssa_default_information_originate_metric": {
1177                    "type": "integer",
1178                    "revisions": {
1179                        "v6.0.0": True,
1180                        "v7.0.0": True,
1181                        "v6.0.5": True,
1182                        "v6.4.4": True,
1183                        "v6.4.0": True,
1184                        "v6.4.1": True,
1185                        "v6.2.0": True,
1186                        "v6.2.3": True,
1187                        "v6.2.5": True,
1188                        "v6.2.7": True,
1189                        "v6.0.11": True
1190                    }
1191                },
1192                "nssa_default_information_originate_metric_type": {
1193                    "type": "string",
1194                    "options": [
1195                        {
1196                            "value": "1",
1197                            "revisions": {
1198                                "v6.0.0": True,
1199                                "v7.0.0": True,
1200                                "v6.0.5": True,
1201                                "v6.4.4": True,
1202                                "v6.4.0": True,
1203                                "v6.4.1": True,
1204                                "v6.2.0": True,
1205                                "v6.2.3": True,
1206                                "v6.2.5": True,
1207                                "v6.2.7": True,
1208                                "v6.0.11": True
1209                            }
1210                        },
1211                        {
1212                            "value": "2",
1213                            "revisions": {
1214                                "v6.0.0": True,
1215                                "v7.0.0": True,
1216                                "v6.0.5": True,
1217                                "v6.4.4": True,
1218                                "v6.4.0": True,
1219                                "v6.4.1": True,
1220                                "v6.2.0": True,
1221                                "v6.2.3": True,
1222                                "v6.2.5": True,
1223                                "v6.2.7": True,
1224                                "v6.0.11": True
1225                            }
1226                        }
1227                    ],
1228                    "revisions": {
1229                        "v6.0.0": True,
1230                        "v7.0.0": True,
1231                        "v6.0.5": True,
1232                        "v6.4.4": True,
1233                        "v6.4.0": True,
1234                        "v6.4.1": True,
1235                        "v6.2.0": True,
1236                        "v6.2.3": True,
1237                        "v6.2.5": True,
1238                        "v6.2.7": True,
1239                        "v6.0.11": True
1240                    }
1241                },
1242                "nssa_default_information_originate": {
1243                    "type": "string",
1244                    "options": [
1245                        {
1246                            "value": "enable",
1247                            "revisions": {
1248                                "v6.0.0": True,
1249                                "v7.0.0": True,
1250                                "v6.0.5": True,
1251                                "v6.4.4": True,
1252                                "v6.4.0": True,
1253                                "v6.4.1": True,
1254                                "v6.2.0": True,
1255                                "v6.2.3": True,
1256                                "v6.2.5": True,
1257                                "v6.2.7": True,
1258                                "v6.0.11": True
1259                            }
1260                        },
1261                        {
1262                            "value": "always",
1263                            "revisions": {
1264                                "v6.0.0": True,
1265                                "v7.0.0": True,
1266                                "v6.0.5": True,
1267                                "v6.4.4": True,
1268                                "v6.4.0": True,
1269                                "v6.4.1": True,
1270                                "v6.2.0": True,
1271                                "v6.2.3": True,
1272                                "v6.2.5": True,
1273                                "v6.2.7": True,
1274                                "v6.0.11": True
1275                            }
1276                        },
1277                        {
1278                            "value": "disable",
1279                            "revisions": {
1280                                "v6.0.0": True,
1281                                "v7.0.0": True,
1282                                "v6.0.5": True,
1283                                "v6.4.4": True,
1284                                "v6.4.0": True,
1285                                "v6.4.1": True,
1286                                "v6.2.0": True,
1287                                "v6.2.3": True,
1288                                "v6.2.5": True,
1289                                "v6.2.7": True,
1290                                "v6.0.11": True
1291                            }
1292                        }
1293                    ],
1294                    "revisions": {
1295                        "v6.0.0": True,
1296                        "v7.0.0": True,
1297                        "v6.0.5": True,
1298                        "v6.4.4": True,
1299                        "v6.4.0": True,
1300                        "v6.4.1": True,
1301                        "v6.2.0": True,
1302                        "v6.2.3": True,
1303                        "v6.2.5": True,
1304                        "v6.2.7": True,
1305                        "v6.0.11": True
1306                    }
1307                },
1308                "nssa_redistribution": {
1309                    "type": "string",
1310                    "options": [
1311                        {
1312                            "value": "enable",
1313                            "revisions": {
1314                                "v6.0.0": True,
1315                                "v7.0.0": True,
1316                                "v6.0.5": True,
1317                                "v6.4.4": True,
1318                                "v6.4.0": True,
1319                                "v6.4.1": True,
1320                                "v6.2.0": True,
1321                                "v6.2.3": True,
1322                                "v6.2.5": True,
1323                                "v6.2.7": True,
1324                                "v6.0.11": True
1325                            }
1326                        },
1327                        {
1328                            "value": "disable",
1329                            "revisions": {
1330                                "v6.0.0": True,
1331                                "v7.0.0": True,
1332                                "v6.0.5": True,
1333                                "v6.4.4": True,
1334                                "v6.4.0": True,
1335                                "v6.4.1": True,
1336                                "v6.2.0": True,
1337                                "v6.2.3": True,
1338                                "v6.2.5": True,
1339                                "v6.2.7": True,
1340                                "v6.0.11": True
1341                            }
1342                        }
1343                    ],
1344                    "revisions": {
1345                        "v6.0.0": True,
1346                        "v7.0.0": True,
1347                        "v6.0.5": True,
1348                        "v6.4.4": True,
1349                        "v6.4.0": True,
1350                        "v6.4.1": True,
1351                        "v6.2.0": True,
1352                        "v6.2.3": True,
1353                        "v6.2.5": True,
1354                        "v6.2.7": True,
1355                        "v6.0.11": True
1356                    }
1357                },
1358                "shortcut": {
1359                    "type": "string",
1360                    "options": [
1361                        {
1362                            "value": "disable",
1363                            "revisions": {
1364                                "v6.0.0": True,
1365                                "v7.0.0": True,
1366                                "v6.0.5": True,
1367                                "v6.4.4": True,
1368                                "v6.4.0": True,
1369                                "v6.4.1": True,
1370                                "v6.2.0": True,
1371                                "v6.2.3": True,
1372                                "v6.2.5": True,
1373                                "v6.2.7": True,
1374                                "v6.0.11": True
1375                            }
1376                        },
1377                        {
1378                            "value": "enable",
1379                            "revisions": {
1380                                "v6.0.0": True,
1381                                "v7.0.0": True,
1382                                "v6.0.5": True,
1383                                "v6.4.4": True,
1384                                "v6.4.0": True,
1385                                "v6.4.1": True,
1386                                "v6.2.0": True,
1387                                "v6.2.3": True,
1388                                "v6.2.5": True,
1389                                "v6.2.7": True,
1390                                "v6.0.11": True
1391                            }
1392                        },
1393                        {
1394                            "value": "default",
1395                            "revisions": {
1396                                "v6.0.0": True,
1397                                "v7.0.0": True,
1398                                "v6.0.5": True,
1399                                "v6.4.4": True,
1400                                "v6.4.0": True,
1401                                "v6.4.1": True,
1402                                "v6.2.0": True,
1403                                "v6.2.3": True,
1404                                "v6.2.5": True,
1405                                "v6.2.7": True,
1406                                "v6.0.11": True
1407                            }
1408                        }
1409                    ],
1410                    "revisions": {
1411                        "v6.0.0": True,
1412                        "v7.0.0": True,
1413                        "v6.0.5": True,
1414                        "v6.4.4": True,
1415                        "v6.4.0": True,
1416                        "v6.4.1": True,
1417                        "v6.2.0": True,
1418                        "v6.2.3": True,
1419                        "v6.2.5": True,
1420                        "v6.2.7": True,
1421                        "v6.0.11": True
1422                    }
1423                },
1424                "default_cost": {
1425                    "type": "integer",
1426                    "revisions": {
1427                        "v6.0.0": True,
1428                        "v7.0.0": True,
1429                        "v6.0.5": True,
1430                        "v6.4.4": True,
1431                        "v6.4.0": True,
1432                        "v6.4.1": True,
1433                        "v6.2.0": True,
1434                        "v6.2.3": True,
1435                        "v6.2.5": True,
1436                        "v6.2.7": True,
1437                        "v6.0.11": True
1438                    }
1439                },
1440                "authentication": {
1441                    "type": "string",
1442                    "options": [
1443                        {
1444                            "value": "none",
1445                            "revisions": {
1446                                "v6.0.0": True,
1447                                "v7.0.0": True,
1448                                "v6.0.5": True,
1449                                "v6.4.4": True,
1450                                "v6.4.0": True,
1451                                "v6.4.1": True,
1452                                "v6.2.0": True,
1453                                "v6.2.3": True,
1454                                "v6.2.5": True,
1455                                "v6.2.7": True,
1456                                "v6.0.11": True
1457                            }
1458                        },
1459                        {
1460                            "value": "text",
1461                            "revisions": {
1462                                "v6.0.0": True,
1463                                "v7.0.0": True,
1464                                "v6.0.5": True,
1465                                "v6.4.4": True,
1466                                "v6.4.0": True,
1467                                "v6.4.1": True,
1468                                "v6.2.0": True,
1469                                "v6.2.3": True,
1470                                "v6.2.5": True,
1471                                "v6.2.7": True,
1472                                "v6.0.11": True
1473                            }
1474                        },
1475                        {
1476                            "value": "md5",
1477                            "revisions": {
1478                                "v6.0.0": True,
1479                                "v7.0.0": True,
1480                                "v6.0.5": True,
1481                                "v6.4.4": True,
1482                                "v6.4.0": True,
1483                                "v6.4.1": True,
1484                                "v6.2.0": True,
1485                                "v6.2.3": True,
1486                                "v6.2.5": True,
1487                                "v6.2.7": True,
1488                                "v6.0.11": True
1489                            }
1490                        }
1491                    ],
1492                    "revisions": {
1493                        "v6.0.0": True,
1494                        "v7.0.0": True,
1495                        "v6.0.5": True,
1496                        "v6.4.4": True,
1497                        "v6.4.0": True,
1498                        "v6.4.1": True,
1499                        "v6.2.0": True,
1500                        "v6.2.3": True,
1501                        "v6.2.5": True,
1502                        "v6.2.7": True,
1503                        "v6.0.11": True
1504                    }
1505                },
1506                "nssa_translator_role": {
1507                    "type": "string",
1508                    "options": [
1509                        {
1510                            "value": "candidate",
1511                            "revisions": {
1512                                "v6.0.0": True,
1513                                "v7.0.0": True,
1514                                "v6.0.5": True,
1515                                "v6.4.4": True,
1516                                "v6.4.0": True,
1517                                "v6.4.1": True,
1518                                "v6.2.0": True,
1519                                "v6.2.3": True,
1520                                "v6.2.5": True,
1521                                "v6.2.7": True,
1522                                "v6.0.11": True
1523                            }
1524                        },
1525                        {
1526                            "value": "never",
1527                            "revisions": {
1528                                "v6.0.0": True,
1529                                "v7.0.0": True,
1530                                "v6.0.5": True,
1531                                "v6.4.4": True,
1532                                "v6.4.0": True,
1533                                "v6.4.1": True,
1534                                "v6.2.0": True,
1535                                "v6.2.3": True,
1536                                "v6.2.5": True,
1537                                "v6.2.7": True,
1538                                "v6.0.11": True
1539                            }
1540                        },
1541                        {
1542                            "value": "always",
1543                            "revisions": {
1544                                "v6.0.0": True,
1545                                "v7.0.0": True,
1546                                "v6.0.5": True,
1547                                "v6.4.4": True,
1548                                "v6.4.0": True,
1549                                "v6.4.1": True,
1550                                "v6.2.0": True,
1551                                "v6.2.3": True,
1552                                "v6.2.5": True,
1553                                "v6.2.7": True,
1554                                "v6.0.11": True
1555                            }
1556                        }
1557                    ],
1558                    "revisions": {
1559                        "v6.0.0": True,
1560                        "v7.0.0": True,
1561                        "v6.0.5": True,
1562                        "v6.4.4": True,
1563                        "v6.4.0": True,
1564                        "v6.4.1": True,
1565                        "v6.2.0": True,
1566                        "v6.2.3": True,
1567                        "v6.2.5": True,
1568                        "v6.2.7": True,
1569                        "v6.0.11": True
1570                    }
1571                },
1572                "virtual_link": {
1573                    "type": "list",
1574                    "children": {
1575                        "retransmit_interval": {
1576                            "type": "integer",
1577                            "revisions": {
1578                                "v6.0.0": True,
1579                                "v7.0.0": True,
1580                                "v6.0.5": True,
1581                                "v6.4.4": True,
1582                                "v6.4.0": True,
1583                                "v6.4.1": True,
1584                                "v6.2.0": True,
1585                                "v6.2.3": True,
1586                                "v6.2.5": True,
1587                                "v6.2.7": True,
1588                                "v6.0.11": True
1589                            }
1590                        },
1591                        "md5_keys": {
1592                            "type": "list",
1593                            "children": {
1594                                "key_string": {
1595                                    "type": "string",
1596                                    "revisions": {
1597                                        "v7.0.0": True,
1598                                        "v6.4.4": True,
1599                                        "v6.4.0": True,
1600                                        "v6.4.1": True,
1601                                        "v6.2.0": True,
1602                                        "v6.2.3": True,
1603                                        "v6.2.5": True,
1604                                        "v6.2.7": True
1605                                    }
1606                                },
1607                                "id": {
1608                                    "type": "integer",
1609                                    "revisions": {
1610                                        "v7.0.0": True,
1611                                        "v6.4.4": True,
1612                                        "v6.4.0": True,
1613                                        "v6.4.1": True,
1614                                        "v6.2.0": True,
1615                                        "v6.2.3": True,
1616                                        "v6.2.5": True,
1617                                        "v6.2.7": True
1618                                    }
1619                                }
1620                            },
1621                            "revisions": {
1622                                "v7.0.0": True,
1623                                "v6.4.4": True,
1624                                "v6.4.0": True,
1625                                "v6.4.1": True,
1626                                "v6.2.0": True,
1627                                "v6.2.3": True,
1628                                "v6.2.5": True,
1629                                "v6.2.7": True
1630                            }
1631                        },
1632                        "name": {
1633                            "type": "string",
1634                            "revisions": {
1635                                "v6.0.0": True,
1636                                "v7.0.0": True,
1637                                "v6.0.5": True,
1638                                "v6.4.4": True,
1639                                "v6.4.0": True,
1640                                "v6.4.1": True,
1641                                "v6.2.0": True,
1642                                "v6.2.3": True,
1643                                "v6.2.5": True,
1644                                "v6.2.7": True,
1645                                "v6.0.11": True
1646                            }
1647                        },
1648                        "md5_keychain": {
1649                            "type": "string",
1650                            "revisions": {
1651                                "v7.0.0": True,
1652                                "v6.4.4": True,
1653                                "v6.4.0": True,
1654                                "v6.4.1": True,
1655                                "v6.2.0": True,
1656                                "v6.2.3": True,
1657                                "v6.2.5": True,
1658                                "v6.2.7": True
1659                            }
1660                        },
1661                        "md5_key": {
1662                            "type": "string",
1663                            "revisions": {
1664                                "v6.0.0": True,
1665                                "v7.0.0": False,
1666                                "v6.0.5": True,
1667                                "v6.4.4": False,
1668                                "v6.4.0": False,
1669                                "v6.4.1": False,
1670                                "v6.2.0": False,
1671                                "v6.2.3": False,
1672                                "v6.2.5": False,
1673                                "v6.2.7": False,
1674                                "v6.0.11": True
1675                            }
1676                        },
1677                        "authentication": {
1678                            "type": "string",
1679                            "options": [
1680                                {
1681                                    "value": "none",
1682                                    "revisions": {
1683                                        "v6.0.0": True,
1684                                        "v7.0.0": True,
1685                                        "v6.0.5": True,
1686                                        "v6.4.4": True,
1687                                        "v6.4.0": True,
1688                                        "v6.4.1": True,
1689                                        "v6.2.0": True,
1690                                        "v6.2.3": True,
1691                                        "v6.2.5": True,
1692                                        "v6.2.7": True,
1693                                        "v6.0.11": True
1694                                    }
1695                                },
1696                                {
1697                                    "value": "text",
1698                                    "revisions": {
1699                                        "v6.0.0": True,
1700                                        "v7.0.0": True,
1701                                        "v6.0.5": True,
1702                                        "v6.4.4": True,
1703                                        "v6.4.0": True,
1704                                        "v6.4.1": True,
1705                                        "v6.2.0": True,
1706                                        "v6.2.3": True,
1707                                        "v6.2.5": True,
1708                                        "v6.2.7": True,
1709                                        "v6.0.11": True
1710                                    }
1711                                },
1712                                {
1713                                    "value": "md5",
1714                                    "revisions": {
1715                                        "v6.0.0": True,
1716                                        "v7.0.0": True,
1717                                        "v6.0.5": True,
1718                                        "v6.4.4": True,
1719                                        "v6.4.0": True,
1720                                        "v6.4.1": True,
1721                                        "v6.2.0": True,
1722                                        "v6.2.3": True,
1723                                        "v6.2.5": True,
1724                                        "v6.2.7": True,
1725                                        "v6.0.11": True
1726                                    }
1727                                }
1728                            ],
1729                            "revisions": {
1730                                "v6.0.0": True,
1731                                "v7.0.0": True,
1732                                "v6.0.5": True,
1733                                "v6.4.4": True,
1734                                "v6.4.0": True,
1735                                "v6.4.1": True,
1736                                "v6.2.0": True,
1737                                "v6.2.3": True,
1738                                "v6.2.5": True,
1739                                "v6.2.7": True,
1740                                "v6.0.11": True
1741                            }
1742                        },
1743                        "dead_interval": {
1744                            "type": "integer",
1745                            "revisions": {
1746                                "v6.0.0": True,
1747                                "v7.0.0": True,
1748                                "v6.0.5": True,
1749                                "v6.4.4": True,
1750                                "v6.4.0": True,
1751                                "v6.4.1": True,
1752                                "v6.2.0": True,
1753                                "v6.2.3": True,
1754                                "v6.2.5": True,
1755                                "v6.2.7": True,
1756                                "v6.0.11": True
1757                            }
1758                        },
1759                        "hello_interval": {
1760                            "type": "integer",
1761                            "revisions": {
1762                                "v6.0.0": True,
1763                                "v7.0.0": True,
1764                                "v6.0.5": True,
1765                                "v6.4.4": True,
1766                                "v6.4.0": True,
1767                                "v6.4.1": True,
1768                                "v6.2.0": True,
1769                                "v6.2.3": True,
1770                                "v6.2.5": True,
1771                                "v6.2.7": True,
1772                                "v6.0.11": True
1773                            }
1774                        },
1775                        "peer": {
1776                            "type": "string",
1777                            "revisions": {
1778                                "v6.0.0": True,
1779                                "v7.0.0": True,
1780                                "v6.0.5": True,
1781                                "v6.4.4": True,
1782                                "v6.4.0": True,
1783                                "v6.4.1": True,
1784                                "v6.2.0": True,
1785                                "v6.2.3": True,
1786                                "v6.2.5": True,
1787                                "v6.2.7": True,
1788                                "v6.0.11": True
1789                            }
1790                        },
1791                        "authentication_key": {
1792                            "type": "string",
1793                            "revisions": {
1794                                "v6.0.0": True,
1795                                "v7.0.0": True,
1796                                "v6.0.5": True,
1797                                "v6.4.4": True,
1798                                "v6.4.0": True,
1799                                "v6.4.1": True,
1800                                "v6.2.0": True,
1801                                "v6.2.3": True,
1802                                "v6.2.5": True,
1803                                "v6.2.7": True,
1804                                "v6.0.11": True
1805                            }
1806                        },
1807                        "transmit_delay": {
1808                            "type": "integer",
1809                            "revisions": {
1810                                "v6.0.0": True,
1811                                "v7.0.0": True,
1812                                "v6.0.5": True,
1813                                "v6.4.4": True,
1814                                "v6.4.0": True,
1815                                "v6.4.1": True,
1816                                "v6.2.0": True,
1817                                "v6.2.3": True,
1818                                "v6.2.5": True,
1819                                "v6.2.7": True,
1820                                "v6.0.11": True
1821                            }
1822                        }
1823                    },
1824                    "revisions": {
1825                        "v6.0.0": True,
1826                        "v7.0.0": True,
1827                        "v6.0.5": True,
1828                        "v6.4.4": True,
1829                        "v6.4.0": True,
1830                        "v6.4.1": True,
1831                        "v6.2.0": True,
1832                        "v6.2.3": True,
1833                        "v6.2.5": True,
1834                        "v6.2.7": True,
1835                        "v6.0.11": True
1836                    }
1837                },
1838                "filter_list": {
1839                    "type": "list",
1840                    "children": {
1841                        "direction": {
1842                            "type": "string",
1843                            "options": [
1844                                {
1845                                    "value": "in",
1846                                    "revisions": {
1847                                        "v6.0.0": True,
1848                                        "v7.0.0": True,
1849                                        "v6.0.5": True,
1850                                        "v6.4.4": True,
1851                                        "v6.4.0": True,
1852                                        "v6.4.1": True,
1853                                        "v6.2.0": True,
1854                                        "v6.2.3": True,
1855                                        "v6.2.5": True,
1856                                        "v6.2.7": True,
1857                                        "v6.0.11": True
1858                                    }
1859                                },
1860                                {
1861                                    "value": "out",
1862                                    "revisions": {
1863                                        "v6.0.0": True,
1864                                        "v7.0.0": True,
1865                                        "v6.0.5": True,
1866                                        "v6.4.4": True,
1867                                        "v6.4.0": True,
1868                                        "v6.4.1": True,
1869                                        "v6.2.0": True,
1870                                        "v6.2.3": True,
1871                                        "v6.2.5": True,
1872                                        "v6.2.7": True,
1873                                        "v6.0.11": True
1874                                    }
1875                                }
1876                            ],
1877                            "revisions": {
1878                                "v6.0.0": True,
1879                                "v7.0.0": True,
1880                                "v6.0.5": True,
1881                                "v6.4.4": True,
1882                                "v6.4.0": True,
1883                                "v6.4.1": True,
1884                                "v6.2.0": True,
1885                                "v6.2.3": True,
1886                                "v6.2.5": True,
1887                                "v6.2.7": True,
1888                                "v6.0.11": True
1889                            }
1890                        },
1891                        "list": {
1892                            "type": "string",
1893                            "revisions": {
1894                                "v6.0.0": True,
1895                                "v7.0.0": True,
1896                                "v6.0.5": True,
1897                                "v6.4.4": True,
1898                                "v6.4.0": True,
1899                                "v6.4.1": True,
1900                                "v6.2.0": True,
1901                                "v6.2.3": True,
1902                                "v6.2.5": True,
1903                                "v6.2.7": True,
1904                                "v6.0.11": True
1905                            }
1906                        },
1907                        "id": {
1908                            "type": "integer",
1909                            "revisions": {
1910                                "v6.0.0": True,
1911                                "v7.0.0": True,
1912                                "v6.0.5": True,
1913                                "v6.4.4": True,
1914                                "v6.4.0": True,
1915                                "v6.4.1": True,
1916                                "v6.2.0": True,
1917                                "v6.2.3": True,
1918                                "v6.2.5": True,
1919                                "v6.2.7": True,
1920                                "v6.0.11": True
1921                            }
1922                        }
1923                    },
1924                    "revisions": {
1925                        "v6.0.0": True,
1926                        "v7.0.0": True,
1927                        "v6.0.5": True,
1928                        "v6.4.4": True,
1929                        "v6.4.0": True,
1930                        "v6.4.1": True,
1931                        "v6.2.0": True,
1932                        "v6.2.3": True,
1933                        "v6.2.5": True,
1934                        "v6.2.7": True,
1935                        "v6.0.11": True
1936                    }
1937                },
1938                "range": {
1939                    "type": "list",
1940                    "children": {
1941                        "substitute_status": {
1942                            "type": "string",
1943                            "options": [
1944                                {
1945                                    "value": "enable",
1946                                    "revisions": {
1947                                        "v6.0.0": True,
1948                                        "v7.0.0": True,
1949                                        "v6.0.5": True,
1950                                        "v6.4.4": True,
1951                                        "v6.4.0": True,
1952                                        "v6.4.1": True,
1953                                        "v6.2.0": True,
1954                                        "v6.2.3": True,
1955                                        "v6.2.5": True,
1956                                        "v6.2.7": True,
1957                                        "v6.0.11": True
1958                                    }
1959                                },
1960                                {
1961                                    "value": "disable",
1962                                    "revisions": {
1963                                        "v6.0.0": True,
1964                                        "v7.0.0": True,
1965                                        "v6.0.5": True,
1966                                        "v6.4.4": True,
1967                                        "v6.4.0": True,
1968                                        "v6.4.1": True,
1969                                        "v6.2.0": True,
1970                                        "v6.2.3": True,
1971                                        "v6.2.5": True,
1972                                        "v6.2.7": True,
1973                                        "v6.0.11": True
1974                                    }
1975                                }
1976                            ],
1977                            "revisions": {
1978                                "v6.0.0": True,
1979                                "v7.0.0": True,
1980                                "v6.0.5": True,
1981                                "v6.4.4": True,
1982                                "v6.4.0": True,
1983                                "v6.4.1": True,
1984                                "v6.2.0": True,
1985                                "v6.2.3": True,
1986                                "v6.2.5": True,
1987                                "v6.2.7": True,
1988                                "v6.0.11": True
1989                            }
1990                        },
1991                        "advertise": {
1992                            "type": "string",
1993                            "options": [
1994                                {
1995                                    "value": "disable",
1996                                    "revisions": {
1997                                        "v6.0.0": True,
1998                                        "v7.0.0": True,
1999                                        "v6.0.5": True,
2000                                        "v6.4.4": True,
2001                                        "v6.4.0": True,
2002                                        "v6.4.1": True,
2003                                        "v6.2.0": True,
2004                                        "v6.2.3": True,
2005                                        "v6.2.5": True,
2006                                        "v6.2.7": True,
2007                                        "v6.0.11": True
2008                                    }
2009                                },
2010                                {
2011                                    "value": "enable",
2012                                    "revisions": {
2013                                        "v6.0.0": True,
2014                                        "v7.0.0": True,
2015                                        "v6.0.5": True,
2016                                        "v6.4.4": True,
2017                                        "v6.4.0": True,
2018                                        "v6.4.1": True,
2019                                        "v6.2.0": True,
2020                                        "v6.2.3": True,
2021                                        "v6.2.5": True,
2022                                        "v6.2.7": True,
2023                                        "v6.0.11": True
2024                                    }
2025                                }
2026                            ],
2027                            "revisions": {
2028                                "v6.0.0": True,
2029                                "v7.0.0": True,
2030                                "v6.0.5": True,
2031                                "v6.4.4": True,
2032                                "v6.4.0": True,
2033                                "v6.4.1": True,
2034                                "v6.2.0": True,
2035                                "v6.2.3": True,
2036                                "v6.2.5": True,
2037                                "v6.2.7": True,
2038                                "v6.0.11": True
2039                            }
2040                        },
2041                        "prefix": {
2042                            "type": "string",
2043                            "revisions": {
2044                                "v6.0.0": True,
2045                                "v7.0.0": True,
2046                                "v6.0.5": True,
2047                                "v6.4.4": True,
2048                                "v6.4.0": True,
2049                                "v6.4.1": True,
2050                                "v6.2.0": True,
2051                                "v6.2.3": True,
2052                                "v6.2.5": True,
2053                                "v6.2.7": True,
2054                                "v6.0.11": True
2055                            }
2056                        },
2057                        "substitute": {
2058                            "type": "string",
2059                            "revisions": {
2060                                "v6.0.0": True,
2061                                "v7.0.0": True,
2062                                "v6.0.5": True,
2063                                "v6.4.4": True,
2064                                "v6.4.0": True,
2065                                "v6.4.1": True,
2066                                "v6.2.0": True,
2067                                "v6.2.3": True,
2068                                "v6.2.5": True,
2069                                "v6.2.7": True,
2070                                "v6.0.11": True
2071                            }
2072                        },
2073                        "id": {
2074                            "type": "integer",
2075                            "revisions": {
2076                                "v6.0.0": True,
2077                                "v7.0.0": True,
2078                                "v6.0.5": True,
2079                                "v6.4.4": True,
2080                                "v6.4.0": True,
2081                                "v6.4.1": True,
2082                                "v6.2.0": True,
2083                                "v6.2.3": True,
2084                                "v6.2.5": True,
2085                                "v6.2.7": True,
2086                                "v6.0.11": True
2087                            }
2088                        }
2089                    },
2090                    "revisions": {
2091                        "v6.0.0": True,
2092                        "v7.0.0": True,
2093                        "v6.0.5": True,
2094                        "v6.4.4": True,
2095                        "v6.4.0": True,
2096                        "v6.4.1": True,
2097                        "v6.2.0": True,
2098                        "v6.2.3": True,
2099                        "v6.2.5": True,
2100                        "v6.2.7": True,
2101                        "v6.0.11": True
2102                    }
2103                },
2104                "type": {
2105                    "type": "string",
2106                    "options": [
2107                        {
2108                            "value": "regular",
2109                            "revisions": {
2110                                "v6.0.0": True,
2111                                "v7.0.0": True,
2112                                "v6.0.5": True,
2113                                "v6.4.4": True,
2114                                "v6.4.0": True,
2115                                "v6.4.1": True,
2116                                "v6.2.0": True,
2117                                "v6.2.3": True,
2118                                "v6.2.5": True,
2119                                "v6.2.7": True,
2120                                "v6.0.11": True
2121                            }
2122                        },
2123                        {
2124                            "value": "nssa",
2125                            "revisions": {
2126                                "v6.0.0": True,
2127                                "v7.0.0": True,
2128                                "v6.0.5": True,
2129                                "v6.4.4": True,
2130                                "v6.4.0": True,
2131                                "v6.4.1": True,
2132                                "v6.2.0": True,
2133                                "v6.2.3": True,
2134                                "v6.2.5": True,
2135                                "v6.2.7": True,
2136                                "v6.0.11": True
2137                            }
2138                        },
2139                        {
2140                            "value": "stub",
2141                            "revisions": {
2142                                "v6.0.0": True,
2143                                "v7.0.0": True,
2144                                "v6.0.5": True,
2145                                "v6.4.4": True,
2146                                "v6.4.0": True,
2147                                "v6.4.1": True,
2148                                "v6.2.0": True,
2149                                "v6.2.3": True,
2150                                "v6.2.5": True,
2151                                "v6.2.7": True,
2152                                "v6.0.11": True
2153                            }
2154                        }
2155                    ],
2156                    "revisions": {
2157                        "v6.0.0": True,
2158                        "v7.0.0": True,
2159                        "v6.0.5": True,
2160                        "v6.4.4": True,
2161                        "v6.4.0": True,
2162                        "v6.4.1": True,
2163                        "v6.2.0": True,
2164                        "v6.2.3": True,
2165                        "v6.2.5": True,
2166                        "v6.2.7": True,
2167                        "v6.0.11": True
2168                    }
2169                },
2170                "id": {
2171                    "type": "string",
2172                    "revisions": {
2173                        "v6.0.0": True,
2174                        "v7.0.0": True,
2175                        "v6.0.5": True,
2176                        "v6.4.4": True,
2177                        "v6.4.0": True,
2178                        "v6.4.1": True,
2179                        "v6.2.0": True,
2180                        "v6.2.3": True,
2181                        "v6.2.5": True,
2182                        "v6.2.7": True,
2183                        "v6.0.11": True
2184                    }
2185                },
2186                "comments": {
2187                    "type": "string",
2188                    "revisions": {
2189                        "v7.0.0": True
2190                    }
2191                }
2192            },
2193            "revisions": {
2194                "v6.0.0": True,
2195                "v7.0.0": True,
2196                "v6.0.5": True,
2197                "v6.4.4": True,
2198                "v6.4.0": True,
2199                "v6.4.1": True,
2200                "v6.2.0": True,
2201                "v6.2.3": True,
2202                "v6.2.5": True,
2203                "v6.2.7": True,
2204                "v6.0.11": True
2205            }
2206        },
2207        "distribute_list": {
2208            "type": "list",
2209            "children": {
2210                "protocol": {
2211                    "type": "string",
2212                    "options": [
2213                        {
2214                            "value": "connected",
2215                            "revisions": {
2216                                "v6.0.0": True,
2217                                "v7.0.0": True,
2218                                "v6.0.5": True,
2219                                "v6.4.4": True,
2220                                "v6.4.0": True,
2221                                "v6.4.1": True,
2222                                "v6.2.0": True,
2223                                "v6.2.3": True,
2224                                "v6.2.5": True,
2225                                "v6.2.7": True,
2226                                "v6.0.11": True
2227                            }
2228                        },
2229                        {
2230                            "value": "static",
2231                            "revisions": {
2232                                "v6.0.0": True,
2233                                "v7.0.0": True,
2234                                "v6.0.5": True,
2235                                "v6.4.4": True,
2236                                "v6.4.0": True,
2237                                "v6.4.1": True,
2238                                "v6.2.0": True,
2239                                "v6.2.3": True,
2240                                "v6.2.5": True,
2241                                "v6.2.7": True,
2242                                "v6.0.11": True
2243                            }
2244                        },
2245                        {
2246                            "value": "rip",
2247                            "revisions": {
2248                                "v6.0.0": True,
2249                                "v7.0.0": True,
2250                                "v6.0.5": True,
2251                                "v6.4.4": True,
2252                                "v6.4.0": True,
2253                                "v6.4.1": True,
2254                                "v6.2.0": True,
2255                                "v6.2.3": True,
2256                                "v6.2.5": True,
2257                                "v6.2.7": True,
2258                                "v6.0.11": True
2259                            }
2260                        }
2261                    ],
2262                    "revisions": {
2263                        "v6.0.0": True,
2264                        "v7.0.0": True,
2265                        "v6.0.5": True,
2266                        "v6.4.4": True,
2267                        "v6.4.0": True,
2268                        "v6.4.1": True,
2269                        "v6.2.0": True,
2270                        "v6.2.3": True,
2271                        "v6.2.5": True,
2272                        "v6.2.7": True,
2273                        "v6.0.11": True
2274                    }
2275                },
2276                "id": {
2277                    "type": "integer",
2278                    "revisions": {
2279                        "v6.0.0": True,
2280                        "v7.0.0": True,
2281                        "v6.0.5": True,
2282                        "v6.4.4": True,
2283                        "v6.4.0": True,
2284                        "v6.4.1": True,
2285                        "v6.2.0": True,
2286                        "v6.2.3": True,
2287                        "v6.2.5": True,
2288                        "v6.2.7": True,
2289                        "v6.0.11": True
2290                    }
2291                },
2292                "access_list": {
2293                    "type": "string",
2294                    "revisions": {
2295                        "v6.0.0": True,
2296                        "v7.0.0": True,
2297                        "v6.0.5": True,
2298                        "v6.4.4": True,
2299                        "v6.4.0": True,
2300                        "v6.4.1": True,
2301                        "v6.2.0": True,
2302                        "v6.2.3": True,
2303                        "v6.2.5": True,
2304                        "v6.2.7": True,
2305                        "v6.0.11": True
2306                    }
2307                }
2308            },
2309            "revisions": {
2310                "v6.0.0": True,
2311                "v7.0.0": True,
2312                "v6.0.5": True,
2313                "v6.4.4": True,
2314                "v6.4.0": True,
2315                "v6.4.1": True,
2316                "v6.2.0": True,
2317                "v6.2.3": True,
2318                "v6.2.5": True,
2319                "v6.2.7": True,
2320                "v6.0.11": True
2321            }
2322        },
2323        "abr_type": {
2324            "type": "string",
2325            "options": [
2326                {
2327                    "value": "cisco",
2328                    "revisions": {
2329                        "v6.0.0": True,
2330                        "v7.0.0": True,
2331                        "v6.0.5": True,
2332                        "v6.4.4": True,
2333                        "v6.4.0": True,
2334                        "v6.4.1": True,
2335                        "v6.2.0": True,
2336                        "v6.2.3": True,
2337                        "v6.2.5": True,
2338                        "v6.2.7": True,
2339                        "v6.0.11": True
2340                    }
2341                },
2342                {
2343                    "value": "ibm",
2344                    "revisions": {
2345                        "v6.0.0": True,
2346                        "v7.0.0": True,
2347                        "v6.0.5": True,
2348                        "v6.4.4": True,
2349                        "v6.4.0": True,
2350                        "v6.4.1": True,
2351                        "v6.2.0": True,
2352                        "v6.2.3": True,
2353                        "v6.2.5": True,
2354                        "v6.2.7": True,
2355                        "v6.0.11": True
2356                    }
2357                },
2358                {
2359                    "value": "shortcut",
2360                    "revisions": {
2361                        "v6.0.0": True,
2362                        "v7.0.0": True,
2363                        "v6.0.5": True,
2364                        "v6.4.4": True,
2365                        "v6.4.0": True,
2366                        "v6.4.1": True,
2367                        "v6.2.0": True,
2368                        "v6.2.3": True,
2369                        "v6.2.5": True,
2370                        "v6.2.7": True,
2371                        "v6.0.11": True
2372                    }
2373                },
2374                {
2375                    "value": "standard",
2376                    "revisions": {
2377                        "v6.0.0": True,
2378                        "v7.0.0": True,
2379                        "v6.0.5": True,
2380                        "v6.4.4": True,
2381                        "v6.4.0": True,
2382                        "v6.4.1": True,
2383                        "v6.2.0": True,
2384                        "v6.2.3": True,
2385                        "v6.2.5": True,
2386                        "v6.2.7": True,
2387                        "v6.0.11": True
2388                    }
2389                }
2390            ],
2391            "revisions": {
2392                "v6.0.0": True,
2393                "v7.0.0": True,
2394                "v6.0.5": True,
2395                "v6.4.4": True,
2396                "v6.4.0": True,
2397                "v6.4.1": True,
2398                "v6.2.0": True,
2399                "v6.2.3": True,
2400                "v6.2.5": True,
2401                "v6.2.7": True,
2402                "v6.0.11": True
2403            }
2404        },
2405        "distance_external": {
2406            "type": "integer",
2407            "revisions": {
2408                "v6.0.0": True,
2409                "v7.0.0": True,
2410                "v6.0.5": True,
2411                "v6.4.4": True,
2412                "v6.4.0": True,
2413                "v6.4.1": True,
2414                "v6.2.0": True,
2415                "v6.2.3": True,
2416                "v6.2.5": True,
2417                "v6.2.7": True,
2418                "v6.0.11": True
2419            }
2420        },
2421        "default_information_originate": {
2422            "type": "string",
2423            "options": [
2424                {
2425                    "value": "enable",
2426                    "revisions": {
2427                        "v6.0.0": True,
2428                        "v7.0.0": True,
2429                        "v6.0.5": True,
2430                        "v6.4.4": True,
2431                        "v6.4.0": True,
2432                        "v6.4.1": True,
2433                        "v6.2.0": True,
2434                        "v6.2.3": True,
2435                        "v6.2.5": True,
2436                        "v6.2.7": True,
2437                        "v6.0.11": True
2438                    }
2439                },
2440                {
2441                    "value": "always",
2442                    "revisions": {
2443                        "v6.0.0": True,
2444                        "v7.0.0": True,
2445                        "v6.0.5": True,
2446                        "v6.4.4": True,
2447                        "v6.4.0": True,
2448                        "v6.4.1": True,
2449                        "v6.2.0": True,
2450                        "v6.2.3": True,
2451                        "v6.2.5": True,
2452                        "v6.2.7": True,
2453                        "v6.0.11": True
2454                    }
2455                },
2456                {
2457                    "value": "disable",
2458                    "revisions": {
2459                        "v6.0.0": True,
2460                        "v7.0.0": True,
2461                        "v6.0.5": True,
2462                        "v6.4.4": True,
2463                        "v6.4.0": True,
2464                        "v6.4.1": True,
2465                        "v6.2.0": True,
2466                        "v6.2.3": True,
2467                        "v6.2.5": True,
2468                        "v6.2.7": True,
2469                        "v6.0.11": True
2470                    }
2471                }
2472            ],
2473            "revisions": {
2474                "v6.0.0": True,
2475                "v7.0.0": True,
2476                "v6.0.5": True,
2477                "v6.4.4": True,
2478                "v6.4.0": True,
2479                "v6.4.1": True,
2480                "v6.2.0": True,
2481                "v6.2.3": True,
2482                "v6.2.5": True,
2483                "v6.2.7": True,
2484                "v6.0.11": True
2485            }
2486        },
2487        "passive_interface": {
2488            "type": "list",
2489            "children": {
2490                "name": {
2491                    "type": "string",
2492                    "revisions": {
2493                        "v6.0.0": True,
2494                        "v7.0.0": True,
2495                        "v6.0.5": True,
2496                        "v6.4.4": True,
2497                        "v6.4.0": True,
2498                        "v6.4.1": True,
2499                        "v6.2.0": True,
2500                        "v6.2.3": True,
2501                        "v6.2.5": True,
2502                        "v6.2.7": True,
2503                        "v6.0.11": True
2504                    }
2505                }
2506            },
2507            "revisions": {
2508                "v6.0.0": True,
2509                "v7.0.0": True,
2510                "v6.0.5": True,
2511                "v6.4.4": True,
2512                "v6.4.0": True,
2513                "v6.4.1": True,
2514                "v6.2.0": True,
2515                "v6.2.3": True,
2516                "v6.2.5": True,
2517                "v6.2.7": True,
2518                "v6.0.11": True
2519            }
2520        },
2521        "restart_mode": {
2522            "type": "string",
2523            "options": [
2524                {
2525                    "value": "none",
2526                    "revisions": {
2527                        "v6.0.0": True,
2528                        "v7.0.0": True,
2529                        "v6.0.5": True,
2530                        "v6.4.4": True,
2531                        "v6.4.0": True,
2532                        "v6.4.1": True,
2533                        "v6.2.0": True,
2534                        "v6.2.3": True,
2535                        "v6.2.5": True,
2536                        "v6.2.7": True,
2537                        "v6.0.11": True
2538                    }
2539                },
2540                {
2541                    "value": "lls",
2542                    "revisions": {
2543                        "v6.0.0": True,
2544                        "v7.0.0": True,
2545                        "v6.0.5": True,
2546                        "v6.4.4": True,
2547                        "v6.4.0": True,
2548                        "v6.4.1": True,
2549                        "v6.2.0": True,
2550                        "v6.2.3": True,
2551                        "v6.2.5": True,
2552                        "v6.2.7": True,
2553                        "v6.0.11": True
2554                    }
2555                },
2556                {
2557                    "value": "graceful-restart",
2558                    "revisions": {
2559                        "v6.0.0": True,
2560                        "v7.0.0": True,
2561                        "v6.0.5": True,
2562                        "v6.4.4": True,
2563                        "v6.4.0": True,
2564                        "v6.4.1": True,
2565                        "v6.2.0": True,
2566                        "v6.2.3": True,
2567                        "v6.2.5": True,
2568                        "v6.2.7": True,
2569                        "v6.0.11": True
2570                    }
2571                }
2572            ],
2573            "revisions": {
2574                "v6.0.0": True,
2575                "v7.0.0": True,
2576                "v6.0.5": True,
2577                "v6.4.4": True,
2578                "v6.4.0": True,
2579                "v6.4.1": True,
2580                "v6.2.0": True,
2581                "v6.2.3": True,
2582                "v6.2.5": True,
2583                "v6.2.7": True,
2584                "v6.0.11": True
2585            }
2586        },
2587        "default_information_route_map": {
2588            "type": "string",
2589            "revisions": {
2590                "v6.0.0": True,
2591                "v7.0.0": True,
2592                "v6.0.5": True,
2593                "v6.4.4": True,
2594                "v6.4.0": True,
2595                "v6.4.1": True,
2596                "v6.2.0": True,
2597                "v6.2.3": True,
2598                "v6.2.5": True,
2599                "v6.2.7": True,
2600                "v6.0.11": True
2601            }
2602        },
2603        "router_id": {
2604            "type": "string",
2605            "revisions": {
2606                "v6.0.0": True,
2607                "v7.0.0": True,
2608                "v6.0.5": True,
2609                "v6.4.4": True,
2610                "v6.4.0": True,
2611                "v6.4.1": True,
2612                "v6.2.0": True,
2613                "v6.2.3": True,
2614                "v6.2.5": True,
2615                "v6.2.7": True,
2616                "v6.0.11": True
2617            }
2618        },
2619        "distance_inter_area": {
2620            "type": "integer",
2621            "revisions": {
2622                "v6.0.0": True,
2623                "v7.0.0": True,
2624                "v6.0.5": True,
2625                "v6.4.4": True,
2626                "v6.4.0": True,
2627                "v6.4.1": True,
2628                "v6.2.0": True,
2629                "v6.2.3": True,
2630                "v6.2.5": True,
2631                "v6.2.7": True,
2632                "v6.0.11": True
2633            }
2634        },
2635        "auto_cost_ref_bandwidth": {
2636            "type": "integer",
2637            "revisions": {
2638                "v6.0.0": True,
2639                "v7.0.0": True,
2640                "v6.0.5": True,
2641                "v6.4.4": True,
2642                "v6.4.0": True,
2643                "v6.4.1": True,
2644                "v6.2.0": True,
2645                "v6.2.3": True,
2646                "v6.2.5": True,
2647                "v6.2.7": True,
2648                "v6.0.11": True
2649            }
2650        },
2651        "log_neighbour_changes": {
2652            "type": "string",
2653            "options": [
2654                {
2655                    "value": "enable",
2656                    "revisions": {
2657                        "v6.0.0": True,
2658                        "v7.0.0": True,
2659                        "v6.0.5": True,
2660                        "v6.4.4": True,
2661                        "v6.4.0": True,
2662                        "v6.4.1": True,
2663                        "v6.2.0": True,
2664                        "v6.2.3": True,
2665                        "v6.2.5": True,
2666                        "v6.2.7": True,
2667                        "v6.0.11": True
2668                    }
2669                },
2670                {
2671                    "value": "disable",
2672                    "revisions": {
2673                        "v6.0.0": True,
2674                        "v7.0.0": True,
2675                        "v6.0.5": True,
2676                        "v6.4.4": True,
2677                        "v6.4.0": True,
2678                        "v6.4.1": True,
2679                        "v6.2.0": True,
2680                        "v6.2.3": True,
2681                        "v6.2.5": True,
2682                        "v6.2.7": True,
2683                        "v6.0.11": True
2684                    }
2685                }
2686            ],
2687            "revisions": {
2688                "v6.0.0": True,
2689                "v7.0.0": True,
2690                "v6.0.5": True,
2691                "v6.4.4": True,
2692                "v6.4.0": True,
2693                "v6.4.1": True,
2694                "v6.2.0": True,
2695                "v6.2.3": True,
2696                "v6.2.5": True,
2697                "v6.2.7": True,
2698                "v6.0.11": True
2699            }
2700        },
2701        "default_metric": {
2702            "type": "integer",
2703            "revisions": {
2704                "v6.0.0": True,
2705                "v7.0.0": True,
2706                "v6.0.5": True,
2707                "v6.4.4": True,
2708                "v6.4.0": True,
2709                "v6.4.1": True,
2710                "v6.2.0": True,
2711                "v6.2.3": True,
2712                "v6.2.5": True,
2713                "v6.2.7": True,
2714                "v6.0.11": True
2715            }
2716        },
2717        "summary_address": {
2718            "type": "list",
2719            "children": {
2720                "prefix": {
2721                    "type": "string",
2722                    "revisions": {
2723                        "v6.0.0": True,
2724                        "v7.0.0": True,
2725                        "v6.0.5": True,
2726                        "v6.4.4": True,
2727                        "v6.4.0": True,
2728                        "v6.4.1": True,
2729                        "v6.2.0": True,
2730                        "v6.2.3": True,
2731                        "v6.2.5": True,
2732                        "v6.2.7": True,
2733                        "v6.0.11": True
2734                    }
2735                },
2736                "tag": {
2737                    "type": "integer",
2738                    "revisions": {
2739                        "v6.0.0": True,
2740                        "v7.0.0": True,
2741                        "v6.0.5": True,
2742                        "v6.4.4": True,
2743                        "v6.4.0": True,
2744                        "v6.4.1": True,
2745                        "v6.2.0": True,
2746                        "v6.2.3": True,
2747                        "v6.2.5": True,
2748                        "v6.2.7": True,
2749                        "v6.0.11": True
2750                    }
2751                },
2752                "id": {
2753                    "type": "integer",
2754                    "revisions": {
2755                        "v6.0.0": True,
2756                        "v7.0.0": True,
2757                        "v6.0.5": True,
2758                        "v6.4.4": True,
2759                        "v6.4.0": True,
2760                        "v6.4.1": True,
2761                        "v6.2.0": True,
2762                        "v6.2.3": True,
2763                        "v6.2.5": True,
2764                        "v6.2.7": True,
2765                        "v6.0.11": True
2766                    }
2767                },
2768                "advertise": {
2769                    "type": "string",
2770                    "options": [
2771                        {
2772                            "value": "disable",
2773                            "revisions": {
2774                                "v6.0.0": True,
2775                                "v7.0.0": True,
2776                                "v6.0.5": True,
2777                                "v6.4.4": True,
2778                                "v6.4.0": True,
2779                                "v6.4.1": True,
2780                                "v6.2.0": True,
2781                                "v6.2.3": True,
2782                                "v6.2.5": True,
2783                                "v6.2.7": True,
2784                                "v6.0.11": True
2785                            }
2786                        },
2787                        {
2788                            "value": "enable",
2789                            "revisions": {
2790                                "v6.0.0": True,
2791                                "v7.0.0": True,
2792                                "v6.0.5": True,
2793                                "v6.4.4": True,
2794                                "v6.4.0": True,
2795                                "v6.4.1": True,
2796                                "v6.2.0": True,
2797                                "v6.2.3": True,
2798                                "v6.2.5": True,
2799                                "v6.2.7": True,
2800                                "v6.0.11": True
2801                            }
2802                        }
2803                    ],
2804                    "revisions": {
2805                        "v6.0.0": True,
2806                        "v7.0.0": True,
2807                        "v6.0.5": True,
2808                        "v6.4.4": True,
2809                        "v6.4.0": True,
2810                        "v6.4.1": True,
2811                        "v6.2.0": True,
2812                        "v6.2.3": True,
2813                        "v6.2.5": True,
2814                        "v6.2.7": True,
2815                        "v6.0.11": True
2816                    }
2817                }
2818            },
2819            "revisions": {
2820                "v6.0.0": True,
2821                "v7.0.0": True,
2822                "v6.0.5": True,
2823                "v6.4.4": True,
2824                "v6.4.0": True,
2825                "v6.4.1": True,
2826                "v6.2.0": True,
2827                "v6.2.3": True,
2828                "v6.2.5": True,
2829                "v6.2.7": True,
2830                "v6.0.11": True
2831            }
2832        },
2833        "spf_timers": {
2834            "type": "string",
2835            "revisions": {
2836                "v6.0.0": True,
2837                "v7.0.0": True,
2838                "v6.0.5": True,
2839                "v6.4.4": True,
2840                "v6.4.0": True,
2841                "v6.4.1": True,
2842                "v6.2.0": True,
2843                "v6.2.3": True,
2844                "v6.2.5": True,
2845                "v6.2.7": True,
2846                "v6.0.11": True
2847            }
2848        },
2849        "distance": {
2850            "type": "integer",
2851            "revisions": {
2852                "v6.0.0": True,
2853                "v7.0.0": True,
2854                "v6.0.5": True,
2855                "v6.4.4": True,
2856                "v6.4.0": True,
2857                "v6.4.1": True,
2858                "v6.2.0": True,
2859                "v6.2.3": True,
2860                "v6.2.5": True,
2861                "v6.2.7": True,
2862                "v6.0.11": True
2863            }
2864        },
2865        "redistribute": {
2866            "type": "list",
2867            "children": {
2868                "status": {
2869                    "type": "string",
2870                    "options": [
2871                        {
2872                            "value": "enable",
2873                            "revisions": {
2874                                "v6.0.0": True,
2875                                "v7.0.0": True,
2876                                "v6.0.5": True,
2877                                "v6.4.4": True,
2878                                "v6.4.0": True,
2879                                "v6.4.1": True,
2880                                "v6.2.0": True,
2881                                "v6.2.3": True,
2882                                "v6.2.5": True,
2883                                "v6.2.7": True,
2884                                "v6.0.11": True
2885                            }
2886                        },
2887                        {
2888                            "value": "disable",
2889                            "revisions": {
2890                                "v6.0.0": True,
2891                                "v7.0.0": True,
2892                                "v6.0.5": True,
2893                                "v6.4.4": True,
2894                                "v6.4.0": True,
2895                                "v6.4.1": True,
2896                                "v6.2.0": True,
2897                                "v6.2.3": True,
2898                                "v6.2.5": True,
2899                                "v6.2.7": True,
2900                                "v6.0.11": True
2901                            }
2902                        }
2903                    ],
2904                    "revisions": {
2905                        "v6.0.0": True,
2906                        "v7.0.0": True,
2907                        "v6.0.5": True,
2908                        "v6.4.4": True,
2909                        "v6.4.0": True,
2910                        "v6.4.1": True,
2911                        "v6.2.0": True,
2912                        "v6.2.3": True,
2913                        "v6.2.5": True,
2914                        "v6.2.7": True,
2915                        "v6.0.11": True
2916                    }
2917                },
2918                "name": {
2919                    "type": "string",
2920                    "revisions": {
2921                        "v6.0.0": True,
2922                        "v7.0.0": True,
2923                        "v6.0.5": True,
2924                        "v6.4.4": True,
2925                        "v6.4.0": True,
2926                        "v6.4.1": True,
2927                        "v6.2.0": True,
2928                        "v6.2.3": True,
2929                        "v6.2.5": True,
2930                        "v6.2.7": True,
2931                        "v6.0.11": True
2932                    }
2933                },
2934                "metric": {
2935                    "type": "integer",
2936                    "revisions": {
2937                        "v6.0.0": True,
2938                        "v7.0.0": True,
2939                        "v6.0.5": True,
2940                        "v6.4.4": True,
2941                        "v6.4.0": True,
2942                        "v6.4.1": True,
2943                        "v6.2.0": True,
2944                        "v6.2.3": True,
2945                        "v6.2.5": True,
2946                        "v6.2.7": True,
2947                        "v6.0.11": True
2948                    }
2949                },
2950                "tag": {
2951                    "type": "integer",
2952                    "revisions": {
2953                        "v6.0.0": True,
2954                        "v7.0.0": True,
2955                        "v6.0.5": True,
2956                        "v6.4.4": True,
2957                        "v6.4.0": True,
2958                        "v6.4.1": True,
2959                        "v6.2.0": True,
2960                        "v6.2.3": True,
2961                        "v6.2.5": True,
2962                        "v6.2.7": True,
2963                        "v6.0.11": True
2964                    }
2965                },
2966                "metric_type": {
2967                    "type": "string",
2968                    "options": [
2969                        {
2970                            "value": "1",
2971                            "revisions": {
2972                                "v6.0.0": True,
2973                                "v7.0.0": True,
2974                                "v6.0.5": True,
2975                                "v6.4.4": True,
2976                                "v6.4.0": True,
2977                                "v6.4.1": True,
2978                                "v6.2.0": True,
2979                                "v6.2.3": True,
2980                                "v6.2.5": True,
2981                                "v6.2.7": True,
2982                                "v6.0.11": True
2983                            }
2984                        },
2985                        {
2986                            "value": "2",
2987                            "revisions": {
2988                                "v6.0.0": True,
2989                                "v7.0.0": True,
2990                                "v6.0.5": True,
2991                                "v6.4.4": True,
2992                                "v6.4.0": True,
2993                                "v6.4.1": True,
2994                                "v6.2.0": True,
2995                                "v6.2.3": True,
2996                                "v6.2.5": True,
2997                                "v6.2.7": True,
2998                                "v6.0.11": True
2999                            }
3000                        }
3001                    ],
3002                    "revisions": {
3003                        "v6.0.0": True,
3004                        "v7.0.0": True,
3005                        "v6.0.5": True,
3006                        "v6.4.4": True,
3007                        "v6.4.0": True,
3008                        "v6.4.1": True,
3009                        "v6.2.0": True,
3010                        "v6.2.3": True,
3011                        "v6.2.5": True,
3012                        "v6.2.7": True,
3013                        "v6.0.11": True
3014                    }
3015                },
3016                "routemap": {
3017                    "type": "string",
3018                    "revisions": {
3019                        "v6.0.0": True,
3020                        "v7.0.0": True,
3021                        "v6.0.5": True,
3022                        "v6.4.4": True,
3023                        "v6.4.0": True,
3024                        "v6.4.1": True,
3025                        "v6.2.0": True,
3026                        "v6.2.3": True,
3027                        "v6.2.5": True,
3028                        "v6.2.7": True,
3029                        "v6.0.11": True
3030                    }
3031                }
3032            },
3033            "revisions": {
3034                "v6.0.0": True,
3035                "v7.0.0": True,
3036                "v6.0.5": True,
3037                "v6.4.4": True,
3038                "v6.4.0": True,
3039                "v6.4.1": True,
3040                "v6.2.0": True,
3041                "v6.2.3": True,
3042                "v6.2.5": True,
3043                "v6.2.7": True,
3044                "v6.0.11": True
3045            }
3046        },
3047        "restart_period": {
3048            "type": "integer",
3049            "revisions": {
3050                "v6.0.0": True,
3051                "v7.0.0": True,
3052                "v6.0.5": True,
3053                "v6.4.4": True,
3054                "v6.4.0": True,
3055                "v6.4.1": True,
3056                "v6.2.0": True,
3057                "v6.2.3": True,
3058                "v6.2.5": True,
3059                "v6.2.7": True,
3060                "v6.0.11": True
3061            }
3062        },
3063        "bfd": {
3064            "type": "string",
3065            "options": [
3066                {
3067                    "value": "enable",
3068                    "revisions": {
3069                        "v6.0.0": True,
3070                        "v7.0.0": True,
3071                        "v6.0.5": True,
3072                        "v6.4.4": True,
3073                        "v6.4.0": True,
3074                        "v6.4.1": True,
3075                        "v6.2.0": True,
3076                        "v6.2.3": True,
3077                        "v6.2.5": True,
3078                        "v6.2.7": True,
3079                        "v6.0.11": True
3080                    }
3081                },
3082                {
3083                    "value": "disable",
3084                    "revisions": {
3085                        "v6.0.0": True,
3086                        "v7.0.0": True,
3087                        "v6.0.5": True,
3088                        "v6.4.4": True,
3089                        "v6.4.0": True,
3090                        "v6.4.1": True,
3091                        "v6.2.0": True,
3092                        "v6.2.3": True,
3093                        "v6.2.5": True,
3094                        "v6.2.7": True,
3095                        "v6.0.11": True
3096                    }
3097                }
3098            ],
3099            "revisions": {
3100                "v6.0.0": True,
3101                "v7.0.0": True,
3102                "v6.0.5": True,
3103                "v6.4.4": True,
3104                "v6.4.0": True,
3105                "v6.4.1": True,
3106                "v6.2.0": True,
3107                "v6.2.3": True,
3108                "v6.2.5": True,
3109                "v6.2.7": True,
3110                "v6.0.11": True
3111            }
3112        },
3113        "distribute_list_in": {
3114            "type": "string",
3115            "revisions": {
3116                "v6.0.0": True,
3117                "v7.0.0": True,
3118                "v6.0.5": True,
3119                "v6.4.4": True,
3120                "v6.4.0": True,
3121                "v6.4.1": True,
3122                "v6.2.0": True,
3123                "v6.2.3": True,
3124                "v6.2.5": True,
3125                "v6.2.7": True,
3126                "v6.0.11": True
3127            }
3128        },
3129        "database_overflow": {
3130            "type": "string",
3131            "options": [
3132                {
3133                    "value": "enable",
3134                    "revisions": {
3135                        "v6.0.0": True,
3136                        "v7.0.0": True,
3137                        "v6.0.5": True,
3138                        "v6.4.4": True,
3139                        "v6.4.0": True,
3140                        "v6.4.1": True,
3141                        "v6.2.0": True,
3142                        "v6.2.3": True,
3143                        "v6.2.5": True,
3144                        "v6.2.7": True,
3145                        "v6.0.11": True
3146                    }
3147                },
3148                {
3149                    "value": "disable",
3150                    "revisions": {
3151                        "v6.0.0": True,
3152                        "v7.0.0": True,
3153                        "v6.0.5": True,
3154                        "v6.4.4": True,
3155                        "v6.4.0": True,
3156                        "v6.4.1": True,
3157                        "v6.2.0": True,
3158                        "v6.2.3": True,
3159                        "v6.2.5": True,
3160                        "v6.2.7": True,
3161                        "v6.0.11": True
3162                    }
3163                }
3164            ],
3165            "revisions": {
3166                "v6.0.0": True,
3167                "v7.0.0": True,
3168                "v6.0.5": True,
3169                "v6.4.4": True,
3170                "v6.4.0": True,
3171                "v6.4.1": True,
3172                "v6.2.0": True,
3173                "v6.2.3": True,
3174                "v6.2.5": True,
3175                "v6.2.7": True,
3176                "v6.0.11": True
3177            }
3178        },
3179        "database_overflow_max_lsas": {
3180            "type": "integer",
3181            "revisions": {
3182                "v6.0.0": True,
3183                "v7.0.0": True,
3184                "v6.0.5": True,
3185                "v6.4.4": True,
3186                "v6.4.0": True,
3187                "v6.4.1": True,
3188                "v6.2.0": True,
3189                "v6.2.3": True,
3190                "v6.2.5": True,
3191                "v6.2.7": True,
3192                "v6.0.11": True
3193            }
3194        },
3195        "database_overflow_time_to_recover": {
3196            "type": "integer",
3197            "revisions": {
3198                "v6.0.0": True,
3199                "v7.0.0": True,
3200                "v6.0.5": True,
3201                "v6.4.4": True,
3202                "v6.4.0": True,
3203                "v6.4.1": True,
3204                "v6.2.0": True,
3205                "v6.2.3": True,
3206                "v6.2.5": True,
3207                "v6.2.7": True,
3208                "v6.0.11": True
3209            }
3210        },
3211        "neighbor": {
3212            "type": "list",
3213            "children": {
3214                "priority": {
3215                    "type": "integer",
3216                    "revisions": {
3217                        "v6.0.0": True,
3218                        "v7.0.0": True,
3219                        "v6.0.5": True,
3220                        "v6.4.4": True,
3221                        "v6.4.0": True,
3222                        "v6.4.1": True,
3223                        "v6.2.0": True,
3224                        "v6.2.3": True,
3225                        "v6.2.5": True,
3226                        "v6.2.7": True,
3227                        "v6.0.11": True
3228                    }
3229                },
3230                "ip": {
3231                    "type": "string",
3232                    "revisions": {
3233                        "v6.0.0": True,
3234                        "v7.0.0": True,
3235                        "v6.0.5": True,
3236                        "v6.4.4": True,
3237                        "v6.4.0": True,
3238                        "v6.4.1": True,
3239                        "v6.2.0": True,
3240                        "v6.2.3": True,
3241                        "v6.2.5": True,
3242                        "v6.2.7": True,
3243                        "v6.0.11": True
3244                    }
3245                },
3246                "cost": {
3247                    "type": "integer",
3248                    "revisions": {
3249                        "v6.0.0": True,
3250                        "v7.0.0": True,
3251                        "v6.0.5": True,
3252                        "v6.4.4": True,
3253                        "v6.4.0": True,
3254                        "v6.4.1": True,
3255                        "v6.2.0": True,
3256                        "v6.2.3": True,
3257                        "v6.2.5": True,
3258                        "v6.2.7": True,
3259                        "v6.0.11": True
3260                    }
3261                },
3262                "poll_interval": {
3263                    "type": "integer",
3264                    "revisions": {
3265                        "v6.0.0": True,
3266                        "v7.0.0": True,
3267                        "v6.0.5": True,
3268                        "v6.4.4": True,
3269                        "v6.4.0": True,
3270                        "v6.4.1": True,
3271                        "v6.2.0": True,
3272                        "v6.2.3": True,
3273                        "v6.2.5": True,
3274                        "v6.2.7": True,
3275                        "v6.0.11": True
3276                    }
3277                },
3278                "id": {
3279                    "type": "integer",
3280                    "revisions": {
3281                        "v6.0.0": True,
3282                        "v7.0.0": True,
3283                        "v6.0.5": True,
3284                        "v6.4.4": True,
3285                        "v6.4.0": True,
3286                        "v6.4.1": True,
3287                        "v6.2.0": True,
3288                        "v6.2.3": True,
3289                        "v6.2.5": True,
3290                        "v6.2.7": True,
3291                        "v6.0.11": True
3292                    }
3293                }
3294            },
3295            "revisions": {
3296                "v6.0.0": True,
3297                "v7.0.0": True,
3298                "v6.0.5": True,
3299                "v6.4.4": True,
3300                "v6.4.0": True,
3301                "v6.4.1": True,
3302                "v6.2.0": True,
3303                "v6.2.3": True,
3304                "v6.2.5": True,
3305                "v6.2.7": True,
3306                "v6.0.11": True
3307            }
3308        },
3309        "rfc1583_compatible": {
3310            "type": "string",
3311            "options": [
3312                {
3313                    "value": "enable",
3314                    "revisions": {
3315                        "v6.0.0": True,
3316                        "v7.0.0": True,
3317                        "v6.0.5": True,
3318                        "v6.4.4": True,
3319                        "v6.4.0": True,
3320                        "v6.4.1": True,
3321                        "v6.2.0": True,
3322                        "v6.2.3": True,
3323                        "v6.2.5": True,
3324                        "v6.2.7": True,
3325                        "v6.0.11": True
3326                    }
3327                },
3328                {
3329                    "value": "disable",
3330                    "revisions": {
3331                        "v6.0.0": True,
3332                        "v7.0.0": True,
3333                        "v6.0.5": True,
3334                        "v6.4.4": True,
3335                        "v6.4.0": True,
3336                        "v6.4.1": True,
3337                        "v6.2.0": True,
3338                        "v6.2.3": True,
3339                        "v6.2.5": True,
3340                        "v6.2.7": True,
3341                        "v6.0.11": True
3342                    }
3343                }
3344            ],
3345            "revisions": {
3346                "v6.0.0": True,
3347                "v7.0.0": True,
3348                "v6.0.5": True,
3349                "v6.4.4": True,
3350                "v6.4.0": True,
3351                "v6.4.1": True,
3352                "v6.2.0": True,
3353                "v6.2.3": True,
3354                "v6.2.5": True,
3355                "v6.2.7": True,
3356                "v6.0.11": True
3357            }
3358        },
3359        "ospf_interface": {
3360            "type": "list",
3361            "children": {
3362                "ip": {
3363                    "type": "string",
3364                    "revisions": {
3365                        "v6.0.0": True,
3366                        "v7.0.0": True,
3367                        "v6.0.5": True,
3368                        "v6.4.4": True,
3369                        "v6.4.0": True,
3370                        "v6.4.1": True,
3371                        "v6.2.0": True,
3372                        "v6.2.3": True,
3373                        "v6.2.5": True,
3374                        "v6.2.7": True,
3375                        "v6.0.11": True
3376                    }
3377                },
3378                "md5_key": {
3379                    "type": "string",
3380                    "revisions": {
3381                        "v6.0.0": True,
3382                        "v7.0.0": False,
3383                        "v6.0.5": True,
3384                        "v6.4.4": False,
3385                        "v6.4.0": False,
3386                        "v6.4.1": False,
3387                        "v6.2.0": False,
3388                        "v6.2.3": False,
3389                        "v6.2.5": False,
3390                        "v6.2.7": False,
3391                        "v6.0.11": True
3392                    }
3393                },
3394                "cost": {
3395                    "type": "integer",
3396                    "revisions": {
3397                        "v6.0.0": True,
3398                        "v7.0.0": True,
3399                        "v6.0.5": True,
3400                        "v6.4.4": True,
3401                        "v6.4.0": True,
3402                        "v6.4.1": True,
3403                        "v6.2.0": True,
3404                        "v6.2.3": True,
3405                        "v6.2.5": True,
3406                        "v6.2.7": True,
3407                        "v6.0.11": True
3408                    }
3409                },
3410                "hello_interval": {
3411                    "type": "integer",
3412                    "revisions": {
3413                        "v6.0.0": True,
3414                        "v7.0.0": True,
3415                        "v6.0.5": True,
3416                        "v6.4.4": True,
3417                        "v6.4.0": True,
3418                        "v6.4.1": True,
3419                        "v6.2.0": True,
3420                        "v6.2.3": True,
3421                        "v6.2.5": True,
3422                        "v6.2.7": True,
3423                        "v6.0.11": True
3424                    }
3425                },
3426                "mtu_ignore": {
3427                    "type": "string",
3428                    "options": [
3429                        {
3430                            "value": "enable",
3431                            "revisions": {
3432                                "v6.0.0": True,
3433                                "v7.0.0": True,
3434                                "v6.0.5": True,
3435                                "v6.4.4": True,
3436                                "v6.4.0": True,
3437                                "v6.4.1": True,
3438                                "v6.2.0": True,
3439                                "v6.2.3": True,
3440                                "v6.2.5": True,
3441                                "v6.2.7": True,
3442                                "v6.0.11": True
3443                            }
3444                        },
3445                        {
3446                            "value": "disable",
3447                            "revisions": {
3448                                "v6.0.0": True,
3449                                "v7.0.0": True,
3450                                "v6.0.5": True,
3451                                "v6.4.4": True,
3452                                "v6.4.0": True,
3453                                "v6.4.1": True,
3454                                "v6.2.0": True,
3455                                "v6.2.3": True,
3456                                "v6.2.5": True,
3457                                "v6.2.7": True,
3458                                "v6.0.11": True
3459                            }
3460                        }
3461                    ],
3462                    "revisions": {
3463                        "v6.0.0": True,
3464                        "v7.0.0": True,
3465                        "v6.0.5": True,
3466                        "v6.4.4": True,
3467                        "v6.4.0": True,
3468                        "v6.4.1": True,
3469                        "v6.2.0": True,
3470                        "v6.2.3": True,
3471                        "v6.2.5": True,
3472                        "v6.2.7": True,
3473                        "v6.0.11": True
3474                    }
3475                },
3476                "retransmit_interval": {
3477                    "type": "integer",
3478                    "revisions": {
3479                        "v6.0.0": True,
3480                        "v7.0.0": True,
3481                        "v6.0.5": True,
3482                        "v6.4.4": True,
3483                        "v6.4.0": True,
3484                        "v6.4.1": True,
3485                        "v6.2.0": True,
3486                        "v6.2.3": True,
3487                        "v6.2.5": True,
3488                        "v6.2.7": True,
3489                        "v6.0.11": True
3490                    }
3491                },
3492                "bfd": {
3493                    "type": "string",
3494                    "options": [
3495                        {
3496                            "value": "global",
3497                            "revisions": {
3498                                "v6.0.0": True,
3499                                "v7.0.0": True,
3500                                "v6.0.5": True,
3501                                "v6.4.4": True,
3502                                "v6.4.0": True,
3503                                "v6.4.1": True,
3504                                "v6.2.0": True,
3505                                "v6.2.3": True,
3506                                "v6.2.5": True,
3507                                "v6.2.7": True,
3508                                "v6.0.11": True
3509                            }
3510                        },
3511                        {
3512                            "value": "enable",
3513                            "revisions": {
3514                                "v6.0.0": True,
3515                                "v7.0.0": True,
3516                                "v6.0.5": True,
3517                                "v6.4.4": True,
3518                                "v6.4.0": True,
3519                                "v6.4.1": True,
3520                                "v6.2.0": True,
3521                                "v6.2.3": True,
3522                                "v6.2.5": True,
3523                                "v6.2.7": True,
3524                                "v6.0.11": True
3525                            }
3526                        },
3527                        {
3528                            "value": "disable",
3529                            "revisions": {
3530                                "v6.0.0": True,
3531                                "v7.0.0": True,
3532                                "v6.0.5": True,
3533                                "v6.4.4": True,
3534                                "v6.4.0": True,
3535                                "v6.4.1": True,
3536                                "v6.2.0": True,
3537                                "v6.2.3": True,
3538                                "v6.2.5": True,
3539                                "v6.2.7": True,
3540                                "v6.0.11": True
3541                            }
3542                        }
3543                    ],
3544                    "revisions": {
3545                        "v6.0.0": True,
3546                        "v7.0.0": True,
3547                        "v6.0.5": True,
3548                        "v6.4.4": True,
3549                        "v6.4.0": True,
3550                        "v6.4.1": True,
3551                        "v6.2.0": True,
3552                        "v6.2.3": True,
3553                        "v6.2.5": True,
3554                        "v6.2.7": True,
3555                        "v6.0.11": True
3556                    }
3557                },
3558                "comments": {
3559                    "type": "string",
3560                    "revisions": {
3561                        "v7.0.0": True
3562                    }
3563                },
3564                "priority": {
3565                    "type": "integer",
3566                    "revisions": {
3567                        "v6.0.0": True,
3568                        "v7.0.0": True,
3569                        "v6.0.5": True,
3570                        "v6.4.4": True,
3571                        "v6.4.0": True,
3572                        "v6.4.1": True,
3573                        "v6.2.0": True,
3574                        "v6.2.3": True,
3575                        "v6.2.5": True,
3576                        "v6.2.7": True,
3577                        "v6.0.11": True
3578                    }
3579                },
3580                "authentication": {
3581                    "type": "string",
3582                    "options": [
3583                        {
3584                            "value": "none",
3585                            "revisions": {
3586                                "v6.0.0": True,
3587                                "v7.0.0": True,
3588                                "v6.0.5": True,
3589                                "v6.4.4": True,
3590                                "v6.4.0": True,
3591                                "v6.4.1": True,
3592                                "v6.2.0": True,
3593                                "v6.2.3": True,
3594                                "v6.2.5": True,
3595                                "v6.2.7": True,
3596                                "v6.0.11": True
3597                            }
3598                        },
3599                        {
3600                            "value": "text",
3601                            "revisions": {
3602                                "v6.0.0": True,
3603                                "v7.0.0": True,
3604                                "v6.0.5": True,
3605                                "v6.4.4": True,
3606                                "v6.4.0": True,
3607                                "v6.4.1": True,
3608                                "v6.2.0": True,
3609                                "v6.2.3": True,
3610                                "v6.2.5": True,
3611                                "v6.2.7": True,
3612                                "v6.0.11": True
3613                            }
3614                        },
3615                        {
3616                            "value": "md5",
3617                            "revisions": {
3618                                "v6.0.0": True,
3619                                "v7.0.0": True,
3620                                "v6.0.5": True,
3621                                "v6.4.4": True,
3622                                "v6.4.0": True,
3623                                "v6.4.1": True,
3624                                "v6.2.0": True,
3625                                "v6.2.3": True,
3626                                "v6.2.5": True,
3627                                "v6.2.7": True,
3628                                "v6.0.11": True
3629                            }
3630                        }
3631                    ],
3632                    "revisions": {
3633                        "v6.0.0": True,
3634                        "v7.0.0": True,
3635                        "v6.0.5": True,
3636                        "v6.4.4": True,
3637                        "v6.4.0": True,
3638                        "v6.4.1": True,
3639                        "v6.2.0": True,
3640                        "v6.2.3": True,
3641                        "v6.2.5": True,
3642                        "v6.2.7": True,
3643                        "v6.0.11": True
3644                    }
3645                },
3646                "prefix_length": {
3647                    "type": "integer",
3648                    "revisions": {
3649                        "v6.0.0": True,
3650                        "v7.0.0": True,
3651                        "v6.0.5": True,
3652                        "v6.4.4": True,
3653                        "v6.4.0": True,
3654                        "v6.4.1": True,
3655                        "v6.2.0": True,
3656                        "v6.2.3": True,
3657                        "v6.2.5": True,
3658                        "v6.2.7": True,
3659                        "v6.0.11": True
3660                    }
3661                },
3662                "authentication_key": {
3663                    "type": "string",
3664                    "revisions": {
3665                        "v6.0.0": True,
3666                        "v7.0.0": True,
3667                        "v6.0.5": True,
3668                        "v6.4.4": True,
3669                        "v6.4.0": True,
3670                        "v6.4.1": True,
3671                        "v6.2.0": True,
3672                        "v6.2.3": True,
3673                        "v6.2.5": True,
3674                        "v6.2.7": True,
3675                        "v6.0.11": True
3676                    }
3677                },
3678                "resync_timeout": {
3679                    "type": "integer",
3680                    "revisions": {
3681                        "v6.0.0": True,
3682                        "v7.0.0": True,
3683                        "v6.0.5": True,
3684                        "v6.4.4": True,
3685                        "v6.4.0": True,
3686                        "v6.4.1": True,
3687                        "v6.2.0": True,
3688                        "v6.2.3": True,
3689                        "v6.2.5": True,
3690                        "v6.2.7": True,
3691                        "v6.0.11": True
3692                    }
3693                },
3694                "status": {
3695                    "type": "string",
3696                    "options": [
3697                        {
3698                            "value": "disable",
3699                            "revisions": {
3700                                "v6.0.0": True,
3701                                "v7.0.0": True,
3702                                "v6.0.5": True,
3703                                "v6.4.4": True,
3704                                "v6.4.0": True,
3705                                "v6.4.1": True,
3706                                "v6.2.0": True,
3707                                "v6.2.3": True,
3708                                "v6.2.5": True,
3709                                "v6.2.7": True,
3710                                "v6.0.11": True
3711                            }
3712                        },
3713                        {
3714                            "value": "enable",
3715                            "revisions": {
3716                                "v6.0.0": True,
3717                                "v7.0.0": True,
3718                                "v6.0.5": True,
3719                                "v6.4.4": True,
3720                                "v6.4.0": True,
3721                                "v6.4.1": True,
3722                                "v6.2.0": True,
3723                                "v6.2.3": True,
3724                                "v6.2.5": True,
3725                                "v6.2.7": True,
3726                                "v6.0.11": True
3727                            }
3728                        }
3729                    ],
3730                    "revisions": {
3731                        "v6.0.0": True,
3732                        "v7.0.0": True,
3733                        "v6.0.5": True,
3734                        "v6.4.4": True,
3735                        "v6.4.0": True,
3736                        "v6.4.1": True,
3737                        "v6.2.0": True,
3738                        "v6.2.3": True,
3739                        "v6.2.5": True,
3740                        "v6.2.7": True,
3741                        "v6.0.11": True
3742                    }
3743                },
3744                "database_filter_out": {
3745                    "type": "string",
3746                    "options": [
3747                        {
3748                            "value": "enable",
3749                            "revisions": {
3750                                "v6.0.0": True,
3751                                "v7.0.0": True,
3752                                "v6.0.5": True,
3753                                "v6.4.4": True,
3754                                "v6.4.0": True,
3755                                "v6.4.1": True,
3756                                "v6.2.0": True,
3757                                "v6.2.3": True,
3758                                "v6.2.5": True,
3759                                "v6.2.7": True,
3760                                "v6.0.11": True
3761                            }
3762                        },
3763                        {
3764                            "value": "disable",
3765                            "revisions": {
3766                                "v6.0.0": True,
3767                                "v7.0.0": True,
3768                                "v6.0.5": True,
3769                                "v6.4.4": True,
3770                                "v6.4.0": True,
3771                                "v6.4.1": True,
3772                                "v6.2.0": True,
3773                                "v6.2.3": True,
3774                                "v6.2.5": True,
3775                                "v6.2.7": True,
3776                                "v6.0.11": True
3777                            }
3778                        }
3779                    ],
3780                    "revisions": {
3781                        "v6.0.0": True,
3782                        "v7.0.0": True,
3783                        "v6.0.5": True,
3784                        "v6.4.4": True,
3785                        "v6.4.0": True,
3786                        "v6.4.1": True,
3787                        "v6.2.0": True,
3788                        "v6.2.3": True,
3789                        "v6.2.5": True,
3790                        "v6.2.7": True,
3791                        "v6.0.11": True
3792                    }
3793                },
3794                "hello_multiplier": {
3795                    "type": "integer",
3796                    "revisions": {
3797                        "v6.0.0": True,
3798                        "v7.0.0": True,
3799                        "v6.0.5": True,
3800                        "v6.4.4": True,
3801                        "v6.4.0": True,
3802                        "v6.4.1": True,
3803                        "v6.2.0": True,
3804                        "v6.2.3": True,
3805                        "v6.2.5": True,
3806                        "v6.2.7": True,
3807                        "v6.0.11": True
3808                    }
3809                },
3810                "interface": {
3811                    "type": "string",
3812                    "revisions": {
3813                        "v6.0.0": True,
3814                        "v7.0.0": True,
3815                        "v6.0.5": True,
3816                        "v6.4.4": True,
3817                        "v6.4.0": True,
3818                        "v6.4.1": True,
3819                        "v6.2.0": True,
3820                        "v6.2.3": True,
3821                        "v6.2.5": True,
3822                        "v6.2.7": True,
3823                        "v6.0.11": True
3824                    }
3825                },
3826                "transmit_delay": {
3827                    "type": "integer",
3828                    "revisions": {
3829                        "v6.0.0": True,
3830                        "v7.0.0": True,
3831                        "v6.0.5": True,
3832                        "v6.4.4": True,
3833                        "v6.4.0": True,
3834                        "v6.4.1": True,
3835                        "v6.2.0": True,
3836                        "v6.2.3": True,
3837                        "v6.2.5": True,
3838                        "v6.2.7": True,
3839                        "v6.0.11": True
3840                    }
3841                },
3842                "md5_keys": {
3843                    "type": "list",
3844                    "children": {
3845                        "key_string": {
3846                            "type": "string",
3847                            "revisions": {
3848                                "v7.0.0": True,
3849                                "v6.4.4": True,
3850                                "v6.4.0": True,
3851                                "v6.4.1": True,
3852                                "v6.2.0": True,
3853                                "v6.2.3": True,
3854                                "v6.2.5": True,
3855                                "v6.2.7": True
3856                            }
3857                        },
3858                        "id": {
3859                            "type": "integer",
3860                            "revisions": {
3861                                "v7.0.0": True,
3862                                "v6.4.4": True,
3863                                "v6.4.0": True,
3864                                "v6.4.1": True,
3865                                "v6.2.0": True,
3866                                "v6.2.3": True,
3867                                "v6.2.5": True,
3868                                "v6.2.7": True
3869                            }
3870                        }
3871                    },
3872                    "revisions": {
3873                        "v7.0.0": True,
3874                        "v6.4.4": True,
3875                        "v6.4.0": True,
3876                        "v6.4.1": True,
3877                        "v6.2.0": True,
3878                        "v6.2.3": True,
3879                        "v6.2.5": True,
3880                        "v6.2.7": True
3881                    }
3882                },
3883                "name": {
3884                    "type": "string",
3885                    "revisions": {
3886                        "v6.0.0": True,
3887                        "v7.0.0": True,
3888                        "v6.0.5": True,
3889                        "v6.4.4": True,
3890                        "v6.4.0": True,
3891                        "v6.4.1": True,
3892                        "v6.2.0": True,
3893                        "v6.2.3": True,
3894                        "v6.2.5": True,
3895                        "v6.2.7": True,
3896                        "v6.0.11": True
3897                    }
3898                },
3899                "md5_keychain": {
3900                    "type": "string",
3901                    "revisions": {
3902                        "v7.0.0": True,
3903                        "v6.4.4": True,
3904                        "v6.4.0": True,
3905                        "v6.4.1": True,
3906                        "v6.2.0": True,
3907                        "v6.2.3": True,
3908                        "v6.2.5": True,
3909                        "v6.2.7": True
3910                    }
3911                },
3912                "mtu": {
3913                    "type": "integer",
3914                    "revisions": {
3915                        "v6.0.0": True,
3916                        "v7.0.0": True,
3917                        "v6.0.5": True,
3918                        "v6.4.4": True,
3919                        "v6.4.0": True,
3920                        "v6.4.1": True,
3921                        "v6.2.0": True,
3922                        "v6.2.3": True,
3923                        "v6.2.5": True,
3924                        "v6.2.7": True,
3925                        "v6.0.11": True
3926                    }
3927                },
3928                "dead_interval": {
3929                    "type": "integer",
3930                    "revisions": {
3931                        "v6.0.0": True,
3932                        "v7.0.0": True,
3933                        "v6.0.5": True,
3934                        "v6.4.4": True,
3935                        "v6.4.0": True,
3936                        "v6.4.1": True,
3937                        "v6.2.0": True,
3938                        "v6.2.3": True,
3939                        "v6.2.5": True,
3940                        "v6.2.7": True,
3941                        "v6.0.11": True
3942                    }
3943                },
3944                "network_type": {
3945                    "type": "string",
3946                    "options": [
3947                        {
3948                            "value": "broadcast",
3949                            "revisions": {
3950                                "v6.0.0": True,
3951                                "v7.0.0": True,
3952                                "v6.0.5": True,
3953                                "v6.4.4": True,
3954                                "v6.4.0": True,
3955                                "v6.4.1": True,
3956                                "v6.2.0": True,
3957                                "v6.2.3": True,
3958                                "v6.2.5": True,
3959                                "v6.2.7": True,
3960                                "v6.0.11": True
3961                            }
3962                        },
3963                        {
3964                            "value": "non-broadcast",
3965                            "revisions": {
3966                                "v6.0.0": True,
3967                                "v7.0.0": True,
3968                                "v6.0.5": True,
3969                                "v6.4.4": True,
3970                                "v6.4.0": True,
3971                                "v6.4.1": True,
3972                                "v6.2.0": True,
3973                                "v6.2.3": True,
3974                                "v6.2.5": True,
3975                                "v6.2.7": True,
3976                                "v6.0.11": True
3977                            }
3978                        },
3979                        {
3980                            "value": "point-to-point",
3981                            "revisions": {
3982                                "v6.0.0": True,
3983                                "v7.0.0": True,
3984                                "v6.0.5": True,
3985                                "v6.4.4": True,
3986                                "v6.4.0": True,
3987                                "v6.4.1": True,
3988                                "v6.2.0": True,
3989                                "v6.2.3": True,
3990                                "v6.2.5": True,
3991                                "v6.2.7": True,
3992                                "v6.0.11": True
3993                            }
3994                        },
3995                        {
3996                            "value": "point-to-multipoint",
3997                            "revisions": {
3998                                "v6.0.0": True,
3999                                "v7.0.0": True,
4000                                "v6.0.5": True,
4001                                "v6.4.4": True,
4002                                "v6.4.0": True,
4003                                "v6.4.1": True,
4004                                "v6.2.0": True,
4005                                "v6.2.3": True,
4006                                "v6.2.5": True,
4007                                "v6.2.7": True,
4008                                "v6.0.11": True
4009                            }
4010                        },
4011                        {
4012                            "value": "point-to-multipoint-non-broadcast",
4013                            "revisions": {
4014                                "v6.0.0": True,
4015                                "v7.0.0": True,
4016                                "v6.0.5": True,
4017                                "v6.4.4": True,
4018                                "v6.4.0": True,
4019                                "v6.4.1": True,
4020                                "v6.2.0": True,
4021                                "v6.2.3": True,
4022                                "v6.2.5": True,
4023                                "v6.2.7": True,
4024                                "v6.0.11": True
4025                            }
4026                        }
4027                    ],
4028                    "revisions": {
4029                        "v6.0.0": True,
4030                        "v7.0.0": True,
4031                        "v6.0.5": True,
4032                        "v6.4.4": True,
4033                        "v6.4.0": True,
4034                        "v6.4.1": True,
4035                        "v6.2.0": True,
4036                        "v6.2.3": True,
4037                        "v6.2.5": True,
4038                        "v6.2.7": True,
4039                        "v6.0.11": True
4040                    }
4041                }
4042            },
4043            "revisions": {
4044                "v6.0.0": True,
4045                "v7.0.0": True,
4046                "v6.0.5": True,
4047                "v6.4.4": True,
4048                "v6.4.0": True,
4049                "v6.4.1": True,
4050                "v6.2.0": True,
4051                "v6.2.3": True,
4052                "v6.2.5": True,
4053                "v6.2.7": True,
4054                "v6.0.11": True
4055            }
4056        }
4057    },
4058    "revisions": {
4059        "v6.0.0": True,
4060        "v7.0.0": True,
4061        "v6.0.5": True,
4062        "v6.4.4": True,
4063        "v6.4.0": True,
4064        "v6.4.1": True,
4065        "v6.2.0": True,
4066        "v6.2.3": True,
4067        "v6.2.5": True,
4068        "v6.2.7": True,
4069        "v6.0.11": True
4070    }
4071}
4072
4073
4074def main():
4075    module_spec = schema_to_module_spec(versioned_schema)
4076    mkeyname = None
4077    fields = {
4078        "access_token": {"required": False, "type": "str", "no_log": True},
4079        "enable_log": {"required": False, "type": bool},
4080        "vdom": {"required": False, "type": "str", "default": "root"},
4081        "router_ospf": {
4082            "required": False, "type": "dict", "default": None,
4083            "options": {
4084            }
4085        }
4086    }
4087    for attribute_name in module_spec['options']:
4088        fields["router_ospf"]['options'][attribute_name] = module_spec['options'][attribute_name]
4089        if mkeyname and mkeyname == attribute_name:
4090            fields["router_ospf"]['options'][attribute_name]['required'] = True
4091
4092    check_legacy_fortiosapi()
4093    module = AnsibleModule(argument_spec=fields,
4094                           supports_check_mode=False)
4095
4096    versions_check_result = None
4097    if module._socket_path:
4098        connection = Connection(module._socket_path)
4099        if 'access_token' in module.params:
4100            connection.set_option('access_token', module.params['access_token'])
4101
4102        if 'enable_log' in module.params:
4103            connection.set_option('enable_log', module.params['enable_log'])
4104        else:
4105            connection.set_option('enable_log', False)
4106        fos = FortiOSHandler(connection, module, mkeyname)
4107        versions_check_result = check_schema_versioning(fos, versioned_schema, "router_ospf")
4108
4109        is_error, has_changed, result = fortios_router(module.params, fos)
4110
4111    else:
4112        module.fail_json(**FAIL_SOCKET_MSG)
4113
4114    if versions_check_result and versions_check_result['matched'] is False:
4115        module.warn("Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv")
4116
4117    if not is_error:
4118        if versions_check_result and versions_check_result['matched'] is False:
4119            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
4120        else:
4121            module.exit_json(changed=has_changed, meta=result)
4122    else:
4123        if versions_check_result and versions_check_result['matched'] is False:
4124            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
4125        else:
4126            module.fail_json(msg="Error in repo", meta=result)
4127
4128
4129if __name__ == '__main__':
4130    main()
4131