From a12ced2c0e5391a21bc29e7cf5c32af4415fc182 Mon Sep 17 00:00:00 2001 From: Steven Yuen Date: Wed, 21 May 2025 11:40:08 -0400 Subject: [PATCH 1/2] Update Algolia Key --- .docusaurus/DONT-EDIT-THIS-FOLDER | 5 + .docusaurus/client-manifest.json | 822 +++---- .docusaurus/client-modules.js | 10 +- .docusaurus/codeTranslations.json | 1 + .../default/blog-post-list-prop-default.json | 4 + .../plugin-route-context-module-100.json | 4 + .../plugin-route-context-module-100.json | 4 + ...contribute-contribute-to-gns-3-md-058.json | 28 + ...ontribute-development-of-gns-3-md-3db.json | 28 + ...bute-how-to-debug-web-ui-guide-md-0fa.json | 28 + ...ocs-docusaurus-reference-doc-1-md-cd1.json | 19 + ...ocs-docusaurus-reference-doc-2-md-b38.json | 18 + ...ocs-docusaurus-reference-doc-3-md-2f2.json | 18 + ...-docs-docusaurus-reference-mdx-md-fff.json | 18 + ...vmware-vms-to-gns-3-topologies-md-5d0.json | 28 + ...-cisco-ios-images-for-dynamips-md-c07.json | 28 + ...e-a-docker-container-for-gns-3-md-f1f.json | 28 + ...lators-docker-support-in-gns-3-md-a72.json | 28 + ...native-iou-for-windows-and-osx-md-f09.json | 28 + ...ocs-emulators-qemu-system-uuid-md-c36.json | 28 + .../site-docs-emulators-vpcs-md-c56.json | 28 + ...s-which-emulators-should-i-use-md-6dc.json | 28 + ...d-installation-download-32-bit-md-0d0.json | 28 + ...installation-download-gns-3-vm-md-d90.json | 28 + ...ting-started-installation-esxi-md-d5a.json | 28 + ...-installation-gns-3-on-equinix-md-6ff.json | 28 + ...ing-started-installation-linux-md-f37.json | 28 + ...tting-started-installation-mac-md-3d5.json | 28 + ...on-one-server-multiple-clients-md-f2f.json | 28 + ...ted-installation-remote-server-md-1be.json | 28 + ...ted-installation-upgrade-gns-3-md-d1a.json | 28 + ...g-started-installation-windows-md-657.json | 28 + ...-started-setup-wizard-gns-3-vm-md-cb0.json | 28 + ...rted-setup-wizard-local-server-md-a94.json | 28 + ...-getting-started-what-is-gns-3-md-322.json | 25 + ...rted-your-first-cisco-topology-md-ae4.json | 28 + ...rted-your-first-gns-3-topology-md-79b.json | 28 + ...e-docs-how-to-guides-cisco-asa-md-3cd.json | 28 + ...se-an-additional-remote-server-md-de1.json | 28 + ...e-applications-with-the-web-ui-md-f95.json | 28 + ...orting-vmx-and-vqfx-into-gns-3-md-830.json | 28 + ...roubleshooting-faq-general-faq-md-90d.json | 28 + ...hooting-faq-troubleshoot-gns-3-md-d8d.json | 28 + ...-faq-where-do-i-get-ios-images-md-258.json | 24 + ...n-client-server-ssl-encryption-md-6c7.json | 28 + ...-administration-gns-3-security-md-ecc.json | 28 + ...ns-3-server-configuration-file-md-9cd.json | 28 + ...running-gns-3-server-as-daemon-md-f24.json | 28 + ...s-3-administration-scale-gns-3-md-7df.json | 28 + ...onfiguration-transfer-qemu-vms-md-7bc.json | 28 + ...dvanced-connect-gns-3-internet-md-e20.json | 28 + ...a-new-version-for-an-appliance-md-1aa.json | 28 + ...s-3-advanced-hubs-and-switches-md-1e9.json | 28 + ...anced-move-from-iouvm-gns-3-vm-md-079.json | 28 + ...-advanced-port-name-formatting-md-89f.json | 28 + ...s-3-advanced-settings-profiles-md-0ba.json | 28 + ...-advanced-special-ip-addresses-md-76e.json | 28 + ...ng-gns-3-advanced-the-nat-node-md-c1b.json | 28 + ...3-beginners-change-node-symbol-md-a0f.json | 28 + ...g-gns-3-beginners-gns-3-styles-md-087.json | 28 + ...ginners-import-gns-3-appliance-md-aa1.json | 28 + ...nners-install-from-marketplace-md-7bf.json | 28 + ...g-gns-3-beginners-link-control-md-63f.json | 28 + ...-beginners-switching-and-gns-3-md-84f.json | 28 + ...beginners-the-console-terminal-md-fc5.json | 28 + ...-gns-3-beginners-the-gns-3-gui-md-5c6.json | 28 + ...sing-gns-3-design-architecture-md-9bd.json | 28 + ...s-3-design-why-gns-3-uses-uuid-md-48d.json | 28 + .../version-current-metadata-prop-751.json | 808 +++++++ .../plugin-route-context-module-100.json | 4 + .../docusaurus-debug-all-content-673.json | 2035 +++++++++++++++++ .../plugin-route-context-module-100.json | 4 + .../plugin-route-context-module-100.json | 4 + .../plugin-route-context-module-100.json | 4 + .docusaurus/docusaurus.config.mjs | 303 +++ .docusaurus/globalData.json | 338 +++ .docusaurus/i18n.json | 17 + .docusaurus/registry.js | 7 +- .docusaurus/routes.js | 12 +- .docusaurus/routesChunkNames.json | 16 +- .docusaurus/site-metadata.json | 41 + build/404.html | 15 +- build/assets/css/styles.337c8af9.css | 1 + build/assets/js/058140c7.e919982f.js | 1 + build/assets/js/079cfff5.1bc47f81.js | 1 + build/assets/js/0874f9a4.868af88e.js | 1 + build/assets/js/0ba241d4.f08cf61a.js | 1 + build/assets/js/0d02c885.c8f58003.js | 1 + build/assets/js/0fa70dcc.afee320e.js | 1 + build/assets/js/1774.a7152c63.js | 1 + build/assets/js/17896441.ed12cee7.js | 1 + build/assets/js/1a4e3797.16a0d4ea.js | 2 + .../js/1a4e3797.16a0d4ea.js.LICENSE.txt | 1 + build/assets/js/1aacdf1a.a31c259b.js | 1 + build/assets/js/1be23e60.328910d8.js | 1 + build/assets/js/1be78505.93a6e3c9.js | 1 + build/assets/js/1e94eb74.83badbf7.js | 1 + build/assets/js/25877efd.5043be26.js | 1 + build/assets/js/2f261fb5.3047170f.js | 1 + build/assets/js/322a49c4.60b7382f.js | 1 + build/assets/js/3cd311f2.7bba453b.js | 1 + build/assets/js/3d5a80f7.4e2f888c.js | 1 + build/assets/js/3dbbbf4c.5fd9cbe7.js | 1 + build/assets/js/416.a0d061ae.js | 1 + build/assets/js/48d9d6a9.712f70fc.js | 1 + build/assets/js/5c632b0c.627110ed.js | 1 + build/assets/js/5d09215c.caf33ebf.js | 1 + build/assets/js/63f216fb.56c1cbbd.js | 1 + build/assets/js/65700f29.b43f8eab.js | 1 + build/assets/js/6c7f686e.c8df5022.js | 1 + build/assets/js/6dc9a2ef.79694ab1.js | 1 + build/assets/js/6ff99807.8b4cd387.js | 1 + build/assets/js/76e08b6a.2276d46b.js | 1 + build/assets/js/79bc4fa4.68f8f164.js | 1 + build/assets/js/7bc39c0f.2d2d2bfb.js | 1 + build/assets/js/7bf20783.c874abce.js | 1 + build/assets/js/7df75973.89a1c821.js | 1 + build/assets/js/830399a1.d912c4ba.js | 1 + build/assets/js/84f53706.f9341085.js | 1 + build/assets/js/8913.3c8d8e29.js | 1 + build/assets/js/89f8e59d.bef31024.js | 1 + build/assets/js/90d7c7d0.45885324.js | 1 + build/assets/js/935f2afb.1f1eb7e0.js | 1 + build/assets/js/9462.89695fff.js | 1 + build/assets/js/99d2c9c4.fcd4d834.js | 1 + build/assets/js/9bd9ba21.8eb62c25.js | 1 + build/assets/js/9cda237f.409216c7.js | 1 + build/assets/js/a0fedaae.23fa30f2.js | 1 + build/assets/js/a72e2c34.473c94c2.js | 1 + build/assets/js/a94aed5d.02a9d294.js | 1 + build/assets/js/aa11fbf4.2872790a.js | 1 + build/assets/js/ae444171.ccff1340.js | 1 + build/assets/js/b38459e8.b7bb4631.js | 1 + build/assets/js/c0738d6f.fe3394ca.js | 1 + build/assets/js/c1bbe575.7e46117e.js | 1 + build/assets/js/c36fddde.5447ce7c.js | 1 + build/assets/js/c4f5d8e4.03b71918.js | 1 + build/assets/js/c561a9f7.4cc664fb.js | 1 + build/assets/js/c9496258.a97dbc04.js | 1 + build/assets/js/cb052573.03dbdb7d.js | 1 + build/assets/js/cd180604.785bd603.js | 1 + build/assets/js/d1a25e88.02c8e59a.js | 1 + build/assets/js/d5a0d1e6.8df28664.js | 1 + build/assets/js/d7f44f17.36955e2b.js | 1 + build/assets/js/d8d6327f.f4bc3823.js | 1 + build/assets/js/d907171e.482d8822.js | 1 + build/assets/js/de112a60.eab8c354.js | 1 + build/assets/js/e20c0e82.1125a30d.js | 1 + build/assets/js/ecc29b0a.95b99b3f.js | 1 + build/assets/js/f09f0737.52e14fdf.js | 1 + build/assets/js/f1f73209.5cfbe529.js | 1 + build/assets/js/f24bf796.ed66ca8d.js | 1 + build/assets/js/f2fb7d9a.7ec5bb64.js | 1 + build/assets/js/f37eaf51.0fe4e01a.js | 1 + build/assets/js/f95c72e9.bab3fd3a.js | 1 + build/assets/js/fc549e88.1b8335bb.js | 1 + build/assets/js/fff7c774.5d187db1.js | 1 + build/assets/js/main.66bc444b.js | 2 + build/assets/js/main.66bc444b.js.LICENSE.txt | 63 + build/assets/js/runtime~main.2242ba43.js | 1 + .../contribute/contribute-to-gns3/index.html | 15 +- .../contribute/development-of-gns3/index.html | 15 +- .../how-to-debug-web-ui-guide/index.html | 15 +- .../docs/docusaurus-reference/doc1/index.html | 15 +- .../docs/docusaurus-reference/doc2/index.html | 15 +- .../docs/docusaurus-reference/doc3/index.html | 15 +- .../docs/docusaurus-reference/mdx/index.html | 15 +- .../index.html | 15 +- .../cisco-ios-images-for-dynamips/index.html | 15 +- .../index.html | 15 +- .../docker-support-in-gns3/index.html | 15 +- .../index.html | 15 +- .../emulators/qemu-system-uuid/index.html | 15 +- build/docs/emulators/vpcs/index.html | 15 +- .../which-emulators-should-i-use/index.html | 15 +- .../installation/download-32-bit/index.html | 15 +- .../installation/download-gns3-vm/index.html | 15 +- .../installation/esxi/index.html | 15 +- .../installation/gns3-on-equinix/index.html | 23 + .../installation/linux/index.html | 19 +- .../installation/mac/index.html | 15 +- .../one-server-multiple-clients/index.html | 15 +- .../installation/remote-server/index.html | 17 +- .../installation/upgrade-gns3/index.html | 15 +- .../installation/windows/index.html | 15 +- .../setup-wizard-gns3-vm/index.html | 15 +- .../setup-wizard-local-server/index.html | 15 +- .../your-first-cisco-topology/index.html | 15 +- .../your-first-gns3-topology/index.html | 15 +- build/docs/how-to-guides/cisco-asa/index.html | 15 +- .../index.html | 15 +- .../index.html | 15 +- .../index.html | 15 +- build/docs/index.html | 17 +- .../general-faq/index.html | 15 +- .../troubleshoot-gns3/index.html | 15 +- .../where-do-i-get-ios-images/index.html | 15 +- .../client-server-ssl-encryption/index.html | 15 +- .../administration/gns3-security/index.html | 15 +- .../gns3-server-configuration-file/index.html | 15 +- .../running-gns3-server-as-daemon/index.html | 15 +- .../administration/scale-gns3/index.html | 15 +- .../index.html | 17 +- .../advanced/connect-gns3-internet/index.html | 17 +- .../index.html | 15 +- .../advanced/hubs-and-switches/index.html | 31 + .../move-from-iouvm-gns3-vm/index.html | 15 +- .../advanced/port-name-formatting/index.html | 17 +- .../advanced/settings-profiles/index.html | 15 +- .../advanced/special-ip-addresses/index.html | 17 +- .../advanced/the-nat-node/index.html | 15 +- .../beginners/change-node-symbol/index.html | 15 +- .../beginners/gns3-styles/index.html | 15 +- .../import-gns3-appliance/index.html | 15 +- .../install-from-marketplace/index.html | 15 +- .../beginners/link-control/index.html | 15 +- .../beginners/switching-and-gns3/index.html | 15 +- .../beginners/the-console-terminal/index.html | 15 +- .../beginners/the-gns3-gui/index.html | 15 +- .../using-gns3/design/architecture/index.html | 15 +- .../design/why-gns3-uses-uuid/index.html | 15 +- .../gns3-on-equinix/deploy-servers.png | Bin 0 -> 228919 bytes .../gns3-on-equinix/equinix-metal.png | Bin 0 -> 1778432 bytes .../gns3-on-equinix/equinix-mfa.png | Bin 0 -> 313060 bytes .../installation/gns3-on-equinix/order.png | Bin 0 -> 994521 bytes .../gns3-on-equinix/placeholder.md | 1 + .../gns3-on-equinix/setup-done.png | Bin 0 -> 220411 bytes .../installation/gns3-on-equinix/sign-up.png | Bin 0 -> 136801 bytes build/index.html | 15 +- build/search/index.html | 15 +- build/sitemap.xml | 2 +- docusaurus.config.js | 4 +- package.json | 3 +- 233 files changed, 6387 insertions(+), 870 deletions(-) create mode 100644 .docusaurus/DONT-EDIT-THIS-FOLDER create mode 100644 .docusaurus/codeTranslations.json create mode 100644 .docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json create mode 100644 .docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-contribute-to-gns-3-md-058.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-development-of-gns-3-md-3db.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-how-to-debug-web-ui-guide-md-0fa.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-1-md-cd1.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-2-md-b38.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-3-md-2f2.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-mdx-md-fff.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-adding-vmware-vms-to-gns-3-topologies-md-5d0.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-cisco-ios-images-for-dynamips-md-c07.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-create-a-docker-container-for-gns-3-md-f1f.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-docker-support-in-gns-3-md-a72.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-non-native-iou-for-windows-and-osx-md-f09.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-qemu-system-uuid-md-c36.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-vpcs-md-c56.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-which-emulators-should-i-use-md-6dc.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-32-bit-md-0d0.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-gns-3-vm-md-d90.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-esxi-md-d5a.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-gns-3-on-equinix-md-6ff.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-linux-md-f37.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-mac-md-3d5.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-one-server-multiple-clients-md-f2f.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-remote-server-md-1be.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-upgrade-gns-3-md-d1a.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-windows-md-657.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-gns-3-vm-md-cb0.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-local-server-md-a94.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-what-is-gns-3-md-322.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-cisco-topology-md-ae4.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-gns-3-topology-md-79b.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-cisco-asa-md-3cd.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-configure-gns-3-to-use-an-additional-remote-server-md-de1.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-how-to-use-console-applications-with-the-web-ui-md-f95.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-importing-vmx-and-vqfx-into-gns-3-md-830.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-general-faq-md-90d.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-troubleshoot-gns-3-md-d8d.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-where-do-i-get-ios-images-md-258.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-client-server-ssl-encryption-md-6c7.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-security-md-ecc.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-server-configuration-file-md-9cd.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-running-gns-3-server-as-daemon-md-f24.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-scale-gns-3-md-7df.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-configuration-transfer-qemu-vms-md-7bc.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-connect-gns-3-internet-md-e20.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-create-a-new-version-for-an-appliance-md-1aa.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-hubs-and-switches-md-1e9.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-move-from-iouvm-gns-3-vm-md-079.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-port-name-formatting-md-89f.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-settings-profiles-md-0ba.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-special-ip-addresses-md-76e.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-the-nat-node-md-c1b.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-change-node-symbol-md-a0f.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-gns-3-styles-md-087.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-import-gns-3-appliance-md-aa1.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-install-from-marketplace-md-7bf.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-link-control-md-63f.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-switching-and-gns-3-md-84f.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-console-terminal-md-fc5.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-gns-3-gui-md-5c6.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-architecture-md-9bd.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-why-gns-3-uses-uuid-md-48d.json create mode 100644 .docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json create mode 100644 .docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json create mode 100644 .docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json create mode 100644 .docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json create mode 100644 .docusaurus/docusaurus-plugin-google-gtag/default/plugin-route-context-module-100.json create mode 100644 .docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json create mode 100644 .docusaurus/docusaurus.config.mjs create mode 100644 .docusaurus/globalData.json create mode 100644 .docusaurus/i18n.json create mode 100644 .docusaurus/site-metadata.json create mode 100644 build/assets/css/styles.337c8af9.css create mode 100644 build/assets/js/058140c7.e919982f.js create mode 100644 build/assets/js/079cfff5.1bc47f81.js create mode 100644 build/assets/js/0874f9a4.868af88e.js create mode 100644 build/assets/js/0ba241d4.f08cf61a.js create mode 100644 build/assets/js/0d02c885.c8f58003.js create mode 100644 build/assets/js/0fa70dcc.afee320e.js create mode 100644 build/assets/js/1774.a7152c63.js create mode 100644 build/assets/js/17896441.ed12cee7.js create mode 100644 build/assets/js/1a4e3797.16a0d4ea.js create mode 100644 build/assets/js/1a4e3797.16a0d4ea.js.LICENSE.txt create mode 100644 build/assets/js/1aacdf1a.a31c259b.js create mode 100644 build/assets/js/1be23e60.328910d8.js create mode 100644 build/assets/js/1be78505.93a6e3c9.js create mode 100644 build/assets/js/1e94eb74.83badbf7.js create mode 100644 build/assets/js/25877efd.5043be26.js create mode 100644 build/assets/js/2f261fb5.3047170f.js create mode 100644 build/assets/js/322a49c4.60b7382f.js create mode 100644 build/assets/js/3cd311f2.7bba453b.js create mode 100644 build/assets/js/3d5a80f7.4e2f888c.js create mode 100644 build/assets/js/3dbbbf4c.5fd9cbe7.js create mode 100644 build/assets/js/416.a0d061ae.js create mode 100644 build/assets/js/48d9d6a9.712f70fc.js create mode 100644 build/assets/js/5c632b0c.627110ed.js create mode 100644 build/assets/js/5d09215c.caf33ebf.js create mode 100644 build/assets/js/63f216fb.56c1cbbd.js create mode 100644 build/assets/js/65700f29.b43f8eab.js create mode 100644 build/assets/js/6c7f686e.c8df5022.js create mode 100644 build/assets/js/6dc9a2ef.79694ab1.js create mode 100644 build/assets/js/6ff99807.8b4cd387.js create mode 100644 build/assets/js/76e08b6a.2276d46b.js create mode 100644 build/assets/js/79bc4fa4.68f8f164.js create mode 100644 build/assets/js/7bc39c0f.2d2d2bfb.js create mode 100644 build/assets/js/7bf20783.c874abce.js create mode 100644 build/assets/js/7df75973.89a1c821.js create mode 100644 build/assets/js/830399a1.d912c4ba.js create mode 100644 build/assets/js/84f53706.f9341085.js create mode 100644 build/assets/js/8913.3c8d8e29.js create mode 100644 build/assets/js/89f8e59d.bef31024.js create mode 100644 build/assets/js/90d7c7d0.45885324.js create mode 100644 build/assets/js/935f2afb.1f1eb7e0.js create mode 100644 build/assets/js/9462.89695fff.js create mode 100644 build/assets/js/99d2c9c4.fcd4d834.js create mode 100644 build/assets/js/9bd9ba21.8eb62c25.js create mode 100644 build/assets/js/9cda237f.409216c7.js create mode 100644 build/assets/js/a0fedaae.23fa30f2.js create mode 100644 build/assets/js/a72e2c34.473c94c2.js create mode 100644 build/assets/js/a94aed5d.02a9d294.js create mode 100644 build/assets/js/aa11fbf4.2872790a.js create mode 100644 build/assets/js/ae444171.ccff1340.js create mode 100644 build/assets/js/b38459e8.b7bb4631.js create mode 100644 build/assets/js/c0738d6f.fe3394ca.js create mode 100644 build/assets/js/c1bbe575.7e46117e.js create mode 100644 build/assets/js/c36fddde.5447ce7c.js create mode 100644 build/assets/js/c4f5d8e4.03b71918.js create mode 100644 build/assets/js/c561a9f7.4cc664fb.js create mode 100644 build/assets/js/c9496258.a97dbc04.js create mode 100644 build/assets/js/cb052573.03dbdb7d.js create mode 100644 build/assets/js/cd180604.785bd603.js create mode 100644 build/assets/js/d1a25e88.02c8e59a.js create mode 100644 build/assets/js/d5a0d1e6.8df28664.js create mode 100644 build/assets/js/d7f44f17.36955e2b.js create mode 100644 build/assets/js/d8d6327f.f4bc3823.js create mode 100644 build/assets/js/d907171e.482d8822.js create mode 100644 build/assets/js/de112a60.eab8c354.js create mode 100644 build/assets/js/e20c0e82.1125a30d.js create mode 100644 build/assets/js/ecc29b0a.95b99b3f.js create mode 100644 build/assets/js/f09f0737.52e14fdf.js create mode 100644 build/assets/js/f1f73209.5cfbe529.js create mode 100644 build/assets/js/f24bf796.ed66ca8d.js create mode 100644 build/assets/js/f2fb7d9a.7ec5bb64.js create mode 100644 build/assets/js/f37eaf51.0fe4e01a.js create mode 100644 build/assets/js/f95c72e9.bab3fd3a.js create mode 100644 build/assets/js/fc549e88.1b8335bb.js create mode 100644 build/assets/js/fff7c774.5d187db1.js create mode 100644 build/assets/js/main.66bc444b.js create mode 100644 build/assets/js/main.66bc444b.js.LICENSE.txt create mode 100644 build/assets/js/runtime~main.2242ba43.js create mode 100644 build/docs/getting-started/installation/gns3-on-equinix/index.html create mode 100644 build/docs/using-gns3/advanced/hubs-and-switches/index.html create mode 100644 build/img/getting-started/installation/gns3-on-equinix/deploy-servers.png create mode 100644 build/img/getting-started/installation/gns3-on-equinix/equinix-metal.png create mode 100644 build/img/getting-started/installation/gns3-on-equinix/equinix-mfa.png create mode 100644 build/img/getting-started/installation/gns3-on-equinix/order.png create mode 100644 build/img/getting-started/installation/gns3-on-equinix/placeholder.md create mode 100644 build/img/getting-started/installation/gns3-on-equinix/setup-done.png create mode 100644 build/img/getting-started/installation/gns3-on-equinix/sign-up.png diff --git a/.docusaurus/DONT-EDIT-THIS-FOLDER b/.docusaurus/DONT-EDIT-THIS-FOLDER new file mode 100644 index 00000000..6c06ae87 --- /dev/null +++ b/.docusaurus/DONT-EDIT-THIS-FOLDER @@ -0,0 +1,5 @@ +This folder stores temp files that Docusaurus' client bundler accesses. + +DO NOT hand-modify files in this folder because they will be overwritten in the +next build. You can clear all build artifacts (including this folder) with the +`docusaurus clear` command. diff --git a/.docusaurus/client-manifest.json b/.docusaurus/client-manifest.json index 7ede177b..e9e165f8 100644 --- a/.docusaurus/client-manifest.json +++ b/.docusaurus/client-manifest.json @@ -3,919 +3,931 @@ "main" ], "origins": { - "1426": [ - 1426 + "416": [ + 1869, + 416 ], - "4972": [ - 4972 + "1774": [ + 1774 ], - "6945": [ - 532, - 6945 + "8913": [ + 1869, + 8913 ], - "8894": [ - 532, - 8894 + "9462": [ + 9462 ], "17896441": [ - 532, - 7918 - ], - "49891499": [ - 6039 + 1869, + 8401 ], "main": [ - 532, - 1303, - 179 + 1869, + 5354, + 8792 ], "runtime~main": [ - 179, - 532, - 1303 + 1869, + 8792, + 5354 ], "058140c7": [ - 2296 + 1789 ], "079cfff5": [ - 4530 + 5315 ], "0874f9a4": [ - 3638 + 6522 ], "0ba241d4": [ - 1586 + 8389 ], "0d02c885": [ - 4549 + 4621 ], "0fa70dcc": [ - 7568 + 9423 ], "1a4e3797": [ - 532, - 7920 + 1869, + 2138 ], "1aacdf1a": [ - 1973 + 3057 ], "1be23e60": [ - 7095 + 537 ], "1be78505": [ - 532, - 4972 + 1869, + 1774 + ], + "1e94eb74": [ + 9414 ], "25877efd": [ - 2623 + 2569 ], "2f261fb5": [ - 9007 + 2425 ], "322a49c4": [ - 3743 + 7131 ], "3cd311f2": [ - 3644 + 2584 ], "3d5a80f7": [ - 8047 + 4665 ], "3dbbbf4c": [ - 5409 + 4389 ], "48d9d6a9": [ - 4554 + 4734 ], "5c632b0c": [ - 9181 + 7313 ], "5d09215c": [ - 7006 + 174 ], "63f216fb": [ - 2743 + 3855 ], "65700f29": [ - 2917 + 2892 ], "6c7f686e": [ - 252 + 5680 ], "6dc9a2ef": [ - 2417 + 9081 ], "6ff99807": [ - 8135 + 2404 ], "76e08b6a": [ - 9692 + 6274 ], "79bc4fa4": [ - 8131 + 1731 ], "7bc39c0f": [ - 5324 + 5740 ], "7bf20783": [ - 6293 + 9800 ], "7df75973": [ - 4769 + 271 ], "830399a1": [ - 7010 + 4123 ], "84f53706": [ - 9906 + 1488 ], "89f8e59d": [ - 5629 + 8797 ], "90d7c7d0": [ - 8455 + 9729 ], "935f2afb": [ - 53 + 8581 + ], + "99d2c9c4": [ + 8878 ], "9bd9ba21": [ - 1828 + 1927 ], "9cda237f": [ - 5219 + 2696 ], "a0fedaae": [ - 5610 + 8572 ], "a72e2c34": [ - 7606 + 4052 ], "a94aed5d": [ - 500 + 4296 ], "aa11fbf4": [ - 8351 + 2669 ], "ae444171": [ - 879 + 7128 ], "b38459e8": [ - 9700 + 23 ], "c0738d6f": [ - 7161 + 2672 ], "c1bbe575": [ - 1951 + 8545 ], "c36fddde": [ - 6330 + 6440 ], "c4f5d8e4": [ - 532, - 4195 + 1869, + 2634 ], "c561a9f7": [ - 1567 + 3183 + ], + "c9496258": [ + 1341 ], "cb052573": [ - 7332 + 5648 ], "cd180604": [ - 6604 - ], - "d0fe3361": [ - 4070 + 475 ], "d1a25e88": [ - 1612 + 8965 ], "d5a0d1e6": [ - 3377 + 9469 + ], + "d7f44f17": [ + 668 ], "d8d6327f": [ - 4013 + 9029 ], "d907171e": [ - 2117 + 2935 ], "de112a60": [ - 9112 + 3273 ], "e20c0e82": [ - 3392 + 6038 ], "ecc29b0a": [ - 8527 + 4860 ], "f09f0737": [ - 9501 + 7549 ], "f1f73209": [ - 4201 + 687 ], "f24bf796": [ - 8092 + 8241 ], "f2fb7d9a": [ - 9652 + 5884 ], "f37eaf51": [ - 1896 + 5177 ], "f95c72e9": [ - 5778 + 1850 ], "fc549e88": [ - 8406 - ], - "ff603e77": [ - 7929 + 3207 ], "fff7c774": [ - 7301 + 285 ], "styles": [ - 179, - 1303, - 4195, - 6945, - 7918, - 7920, - 8894, - 9514, - 532 + 416, + 2138, + 2634, + 5354, + 8401, + 8714, + 8792, + 8913, + 1869 ] }, "assets": { - "53": { + "23": { "js": [ { - "file": "assets/js/935f2afb.f0bc9e76.js", - "hash": "903290319fc24c44", - "publicPath": "/assets/js/935f2afb.f0bc9e76.js" + "file": "assets/js/b38459e8.b7bb4631.js", + "hash": "35108fe63725f98a", + "publicPath": "/assets/js/b38459e8.b7bb4631.js" } ] }, - "179": { + "174": { "js": [ { - "file": "assets/js/main.a058df41.js", - "hash": "e8766068d878c8a2", - "publicPath": "/assets/js/main.a058df41.js" + "file": "assets/js/5d09215c.caf33ebf.js", + "hash": "a5ea089b1dc4a0ff", + "publicPath": "/assets/js/5d09215c.caf33ebf.js" } ] }, - "252": { + "271": { "js": [ { - "file": "assets/js/6c7f686e.fd145e24.js", - "hash": "de67b534de75a0a3", - "publicPath": "/assets/js/6c7f686e.fd145e24.js" + "file": "assets/js/7df75973.89a1c821.js", + "hash": "c469418f300f56dd", + "publicPath": "/assets/js/7df75973.89a1c821.js" } ] }, - "500": { + "285": { "js": [ { - "file": "assets/js/a94aed5d.ac37a835.js", - "hash": "64c46a873a0fb9bb", - "publicPath": "/assets/js/a94aed5d.ac37a835.js" + "file": "assets/js/fff7c774.5d187db1.js", + "hash": "a8f003818c1c98f5", + "publicPath": "/assets/js/fff7c774.5d187db1.js" } ] }, - "532": { - "css": [ + "416": { + "js": [ { - "file": "assets/css/styles.a7751b5b.css", - "hash": "6d9e68648efd1f9e", - "publicPath": "/assets/css/styles.a7751b5b.css" + "file": "assets/js/416.a0d061ae.js", + "hash": "fe92c053af7998ef", + "publicPath": "/assets/js/416.a0d061ae.js" } ] }, - "879": { + "475": { "js": [ { - "file": "assets/js/ae444171.4de55440.js", - "hash": "438ad05e0d05b303", - "publicPath": "/assets/js/ae444171.4de55440.js" + "file": "assets/js/cd180604.785bd603.js", + "hash": "113f49fc5cb6000e", + "publicPath": "/assets/js/cd180604.785bd603.js" } ] }, - "1303": { + "537": { "js": [ { - "file": "assets/js/runtime~main.f83062be.js", - "hash": "d46184c27c6653a7", - "publicPath": "/assets/js/runtime~main.f83062be.js" + "file": "assets/js/1be23e60.328910d8.js", + "hash": "1e98869225976b9b", + "publicPath": "/assets/js/1be23e60.328910d8.js" } ] }, - "1426": { + "668": { "js": [ { - "file": "assets/js/1426.6d881bb1.js", - "hash": "90a2aa9c90a0a4d6", - "publicPath": "/assets/js/1426.6d881bb1.js" + "file": "assets/js/d7f44f17.36955e2b.js", + "hash": "0d766a56a9ec24c1", + "publicPath": "/assets/js/d7f44f17.36955e2b.js" } ] }, - "1567": { + "687": { "js": [ { - "file": "assets/js/c561a9f7.ecb36683.js", - "hash": "cf4e99205d6b708d", - "publicPath": "/assets/js/c561a9f7.ecb36683.js" + "file": "assets/js/f1f73209.5cfbe529.js", + "hash": "325cd15000714f12", + "publicPath": "/assets/js/f1f73209.5cfbe529.js" } ] }, - "1586": { + "1341": { "js": [ { - "file": "assets/js/0ba241d4.d9713512.js", - "hash": "55284557ca9dad8e", - "publicPath": "/assets/js/0ba241d4.d9713512.js" + "file": "assets/js/c9496258.a97dbc04.js", + "hash": "1a3521b12851e8d4", + "publicPath": "/assets/js/c9496258.a97dbc04.js" } ] }, - "1612": { + "1488": { "js": [ { - "file": "assets/js/d1a25e88.a5885698.js", - "hash": "4c2fa774d5fe30d3", - "publicPath": "/assets/js/d1a25e88.a5885698.js" + "file": "assets/js/84f53706.f9341085.js", + "hash": "3647458e1355f6b9", + "publicPath": "/assets/js/84f53706.f9341085.js" } ] }, - "1828": { + "1731": { "js": [ { - "file": "assets/js/9bd9ba21.164dd46f.js", - "hash": "5ff67c74d25b44e0", - "publicPath": "/assets/js/9bd9ba21.164dd46f.js" + "file": "assets/js/79bc4fa4.68f8f164.js", + "hash": "1bdb982eaa3b256f", + "publicPath": "/assets/js/79bc4fa4.68f8f164.js" } ] }, - "1896": { + "1774": { "js": [ { - "file": "assets/js/f37eaf51.0deb0d3a.js", - "hash": "32eabb11248b1962", - "publicPath": "/assets/js/f37eaf51.0deb0d3a.js" + "file": "assets/js/1774.a7152c63.js", + "hash": "06abdf0020c4a7e1", + "publicPath": "/assets/js/1774.a7152c63.js" + }, + { + "file": "assets/js/1be78505.93a6e3c9.js", + "hash": "12c4ce8ea02a6b7b", + "publicPath": "/assets/js/1be78505.93a6e3c9.js" } ] }, - "1951": { + "1789": { "js": [ { - "file": "assets/js/c1bbe575.5abfcf5b.js", - "hash": "63b2ee34cbb7c89b", - "publicPath": "/assets/js/c1bbe575.5abfcf5b.js" + "file": "assets/js/058140c7.e919982f.js", + "hash": "4aaca60d1d7fcae0", + "publicPath": "/assets/js/058140c7.e919982f.js" } ] }, - "1973": { + "1850": { "js": [ { - "file": "assets/js/1aacdf1a.4394e5e5.js", - "hash": "006cd7a99dc0466f", - "publicPath": "/assets/js/1aacdf1a.4394e5e5.js" + "file": "assets/js/f95c72e9.bab3fd3a.js", + "hash": "86fd53281f8aef42", + "publicPath": "/assets/js/f95c72e9.bab3fd3a.js" } ] }, - "2117": { - "js": [ + "1869": { + "css": [ { - "file": "assets/js/d907171e.cf0d404e.js", - "hash": "25d529872ffd45cb", - "publicPath": "/assets/js/d907171e.cf0d404e.js" + "file": "assets/css/styles.337c8af9.css", + "hash": "8ba324025bdd833a", + "publicPath": "/assets/css/styles.337c8af9.css" } ] }, - "2296": { + "1927": { "js": [ { - "file": "assets/js/058140c7.877ab1e0.js", - "hash": "416bb54e93a9bdaa", - "publicPath": "/assets/js/058140c7.877ab1e0.js" + "file": "assets/js/9bd9ba21.8eb62c25.js", + "hash": "4f012e4dd1a45bc3", + "publicPath": "/assets/js/9bd9ba21.8eb62c25.js" } ] }, - "2417": { + "2138": { "js": [ { - "file": "assets/js/6dc9a2ef.2b30a771.js", - "hash": "c27e67ff7792445d", - "publicPath": "/assets/js/6dc9a2ef.2b30a771.js" + "file": "assets/js/1a4e3797.16a0d4ea.js", + "hash": "d99a195fcfba0dd4", + "publicPath": "/assets/js/1a4e3797.16a0d4ea.js" } ] }, - "2623": { + "2404": { "js": [ { - "file": "assets/js/25877efd.452b68fa.js", - "hash": "288a8dc1c4bc940f", - "publicPath": "/assets/js/25877efd.452b68fa.js" + "file": "assets/js/6ff99807.8b4cd387.js", + "hash": "00b9ccc66406142c", + "publicPath": "/assets/js/6ff99807.8b4cd387.js" } ] }, - "2743": { + "2425": { "js": [ { - "file": "assets/js/63f216fb.cf994c01.js", - "hash": "a9b1b0f6255722d8", - "publicPath": "/assets/js/63f216fb.cf994c01.js" + "file": "assets/js/2f261fb5.3047170f.js", + "hash": "5d66f2fc66d3638c", + "publicPath": "/assets/js/2f261fb5.3047170f.js" } ] }, - "2917": { + "2569": { "js": [ { - "file": "assets/js/65700f29.71b69857.js", - "hash": "90a0ca24451e9a50", - "publicPath": "/assets/js/65700f29.71b69857.js" + "file": "assets/js/25877efd.5043be26.js", + "hash": "3d1381cf10d7a285", + "publicPath": "/assets/js/25877efd.5043be26.js" } ] }, - "3377": { + "2584": { "js": [ { - "file": "assets/js/d5a0d1e6.d94297f6.js", - "hash": "84209a36c80568c8", - "publicPath": "/assets/js/d5a0d1e6.d94297f6.js" + "file": "assets/js/3cd311f2.7bba453b.js", + "hash": "692bb8bc5ad37b49", + "publicPath": "/assets/js/3cd311f2.7bba453b.js" } ] }, - "3392": { + "2634": { "js": [ { - "file": "assets/js/e20c0e82.99109681.js", - "hash": "754b8127e92495c4", - "publicPath": "/assets/js/e20c0e82.99109681.js" + "file": "assets/js/c4f5d8e4.03b71918.js", + "hash": "02a6cef619359d6b", + "publicPath": "/assets/js/c4f5d8e4.03b71918.js" } ] }, - "3638": { + "2669": { "js": [ { - "file": "assets/js/0874f9a4.9d02c69f.js", - "hash": "8d5644ac2782fd17", - "publicPath": "/assets/js/0874f9a4.9d02c69f.js" + "file": "assets/js/aa11fbf4.2872790a.js", + "hash": "bd77fdf255f97308", + "publicPath": "/assets/js/aa11fbf4.2872790a.js" } ] }, - "3644": { + "2672": { "js": [ { - "file": "assets/js/3cd311f2.7bc4d79b.js", - "hash": "d0334501c316fac5", - "publicPath": "/assets/js/3cd311f2.7bc4d79b.js" + "file": "assets/js/c0738d6f.fe3394ca.js", + "hash": "b0bb6cbcdbf264dd", + "publicPath": "/assets/js/c0738d6f.fe3394ca.js" } ] }, - "3743": { + "2696": { "js": [ { - "file": "assets/js/322a49c4.c13c5290.js", - "hash": "945ea00318aca6c1", - "publicPath": "/assets/js/322a49c4.c13c5290.js" + "file": "assets/js/9cda237f.409216c7.js", + "hash": "71d3022dd27c76aa", + "publicPath": "/assets/js/9cda237f.409216c7.js" } ] }, - "4013": { + "2892": { "js": [ { - "file": "assets/js/d8d6327f.9aba7388.js", - "hash": "8093afea9569d6da", - "publicPath": "/assets/js/d8d6327f.9aba7388.js" + "file": "assets/js/65700f29.b43f8eab.js", + "hash": "831ca5c90bd12691", + "publicPath": "/assets/js/65700f29.b43f8eab.js" } ] }, - "4070": { + "2935": { "js": [ { - "file": "assets/js/d0fe3361.a61ce65c.js", - "hash": "e8c96942b7ccb496", - "publicPath": "/assets/js/d0fe3361.a61ce65c.js" + "file": "assets/js/d907171e.482d8822.js", + "hash": "26e5f490b704e0c1", + "publicPath": "/assets/js/d907171e.482d8822.js" } ] }, - "4195": { + "3057": { "js": [ { - "file": "assets/js/c4f5d8e4.ade78c2c.js", - "hash": "aaec017ee664106e", - "publicPath": "/assets/js/c4f5d8e4.ade78c2c.js" + "file": "assets/js/1aacdf1a.a31c259b.js", + "hash": "d0eb71f33efffc64", + "publicPath": "/assets/js/1aacdf1a.a31c259b.js" } ] }, - "4201": { + "3183": { "js": [ { - "file": "assets/js/f1f73209.3ac3ce84.js", - "hash": "d6099c6b5968d924", - "publicPath": "/assets/js/f1f73209.3ac3ce84.js" + "file": "assets/js/c561a9f7.4cc664fb.js", + "hash": "c8552641cc483d76", + "publicPath": "/assets/js/c561a9f7.4cc664fb.js" } ] }, - "4530": { + "3207": { "js": [ { - "file": "assets/js/079cfff5.6d2ebba9.js", - "hash": "89c8a194151abd21", - "publicPath": "/assets/js/079cfff5.6d2ebba9.js" + "file": "assets/js/fc549e88.1b8335bb.js", + "hash": "8428abe3433a0106", + "publicPath": "/assets/js/fc549e88.1b8335bb.js" } ] }, - "4549": { + "3273": { "js": [ { - "file": "assets/js/0d02c885.f2a25ff7.js", - "hash": "b6af9dac7f9976d4", - "publicPath": "/assets/js/0d02c885.f2a25ff7.js" + "file": "assets/js/de112a60.eab8c354.js", + "hash": "2b1b4eb9ededddfa", + "publicPath": "/assets/js/de112a60.eab8c354.js" } ] }, - "4554": { + "3855": { "js": [ { - "file": "assets/js/48d9d6a9.6b05d314.js", - "hash": "b830cbce245af72f", - "publicPath": "/assets/js/48d9d6a9.6b05d314.js" + "file": "assets/js/63f216fb.56c1cbbd.js", + "hash": "aedaa6ccef62ad42", + "publicPath": "/assets/js/63f216fb.56c1cbbd.js" } ] }, - "4769": { + "4052": { "js": [ { - "file": "assets/js/7df75973.103f827d.js", - "hash": "9b67f705a7a90f39", - "publicPath": "/assets/js/7df75973.103f827d.js" + "file": "assets/js/a72e2c34.473c94c2.js", + "hash": "d354e2458e43f5f3", + "publicPath": "/assets/js/a72e2c34.473c94c2.js" } ] }, - "4972": { + "4123": { "js": [ { - "file": "assets/js/4972.389e19fe.js", - "hash": "6bd9005ea8bebd47", - "publicPath": "/assets/js/4972.389e19fe.js" - }, + "file": "assets/js/830399a1.d912c4ba.js", + "hash": "0871c11f8e0eddd8", + "publicPath": "/assets/js/830399a1.d912c4ba.js" + } + ] + }, + "4296": { + "js": [ { - "file": "assets/js/1be78505.1d5f81e8.js", - "hash": "e3f09b13ee135d95", - "publicPath": "/assets/js/1be78505.1d5f81e8.js" + "file": "assets/js/a94aed5d.02a9d294.js", + "hash": "34d47149e4acff42", + "publicPath": "/assets/js/a94aed5d.02a9d294.js" } ] }, - "5219": { + "4389": { "js": [ { - "file": "assets/js/9cda237f.1ccab508.js", - "hash": "4359b8a4fe12b307", - "publicPath": "/assets/js/9cda237f.1ccab508.js" + "file": "assets/js/3dbbbf4c.5fd9cbe7.js", + "hash": "83f9310ac6e8def6", + "publicPath": "/assets/js/3dbbbf4c.5fd9cbe7.js" } ] }, - "5324": { + "4621": { "js": [ { - "file": "assets/js/7bc39c0f.7e535b66.js", - "hash": "4d358ab457e8678e", - "publicPath": "/assets/js/7bc39c0f.7e535b66.js" + "file": "assets/js/0d02c885.c8f58003.js", + "hash": "1862774d9991ded6", + "publicPath": "/assets/js/0d02c885.c8f58003.js" } ] }, - "5409": { + "4665": { "js": [ { - "file": "assets/js/3dbbbf4c.5c277fda.js", - "hash": "767c10740135b98e", - "publicPath": "/assets/js/3dbbbf4c.5c277fda.js" + "file": "assets/js/3d5a80f7.4e2f888c.js", + "hash": "1d9a30a7271b52d6", + "publicPath": "/assets/js/3d5a80f7.4e2f888c.js" } ] }, - "5610": { + "4734": { "js": [ { - "file": "assets/js/a0fedaae.3142d517.js", - "hash": "79dfd798528f45cf", - "publicPath": "/assets/js/a0fedaae.3142d517.js" + "file": "assets/js/48d9d6a9.712f70fc.js", + "hash": "edfafddeef060eb6", + "publicPath": "/assets/js/48d9d6a9.712f70fc.js" } ] }, - "5629": { + "4860": { "js": [ { - "file": "assets/js/89f8e59d.3b200ee7.js", - "hash": "e3cc2592b25aa64a", - "publicPath": "/assets/js/89f8e59d.3b200ee7.js" + "file": "assets/js/ecc29b0a.95b99b3f.js", + "hash": "80af2be80aabb3c9", + "publicPath": "/assets/js/ecc29b0a.95b99b3f.js" } ] }, - "5778": { + "5177": { "js": [ { - "file": "assets/js/f95c72e9.935a42a1.js", - "hash": "96a0d2822ca06d09", - "publicPath": "/assets/js/f95c72e9.935a42a1.js" + "file": "assets/js/f37eaf51.0fe4e01a.js", + "hash": "611716c626c05639", + "publicPath": "/assets/js/f37eaf51.0fe4e01a.js" } ] }, - "6039": { + "5315": { "js": [ { - "file": "assets/js/49891499.75ea786a.js", - "hash": "8576e375af4a22ec", - "publicPath": "/assets/js/49891499.75ea786a.js" + "file": "assets/js/079cfff5.1bc47f81.js", + "hash": "bf1f0894b6da9562", + "publicPath": "/assets/js/079cfff5.1bc47f81.js" } ] }, - "6293": { + "5354": { "js": [ { - "file": "assets/js/7bf20783.dd67d79e.js", - "hash": "3ad945e12c1c9750", - "publicPath": "/assets/js/7bf20783.dd67d79e.js" + "file": "assets/js/runtime~main.2242ba43.js", + "hash": "24cb75a81651ccfb", + "publicPath": "/assets/js/runtime~main.2242ba43.js" } ] }, - "6330": { + "5648": { "js": [ { - "file": "assets/js/c36fddde.00db06fd.js", - "hash": "0c8ba2ead96b36a6", - "publicPath": "/assets/js/c36fddde.00db06fd.js" + "file": "assets/js/cb052573.03dbdb7d.js", + "hash": "43ade284c71eacf8", + "publicPath": "/assets/js/cb052573.03dbdb7d.js" } ] }, - "6604": { + "5680": { "js": [ { - "file": "assets/js/cd180604.d35e9fab.js", - "hash": "92ef8ed808d62772", - "publicPath": "/assets/js/cd180604.d35e9fab.js" + "file": "assets/js/6c7f686e.c8df5022.js", + "hash": "62e7dfded0d4bad9", + "publicPath": "/assets/js/6c7f686e.c8df5022.js" } ] }, - "6945": { + "5740": { "js": [ { - "file": "assets/js/6945.1e057a68.js", - "hash": "2d498e839af2640e", - "publicPath": "/assets/js/6945.1e057a68.js" + "file": "assets/js/7bc39c0f.2d2d2bfb.js", + "hash": "1e0b2c4a6d75d23b", + "publicPath": "/assets/js/7bc39c0f.2d2d2bfb.js" } ] }, - "7006": { + "5884": { "js": [ { - "file": "assets/js/5d09215c.685e2025.js", - "hash": "c282bf3d1a02ddee", - "publicPath": "/assets/js/5d09215c.685e2025.js" + "file": "assets/js/f2fb7d9a.7ec5bb64.js", + "hash": "c85e5105a83df820", + "publicPath": "/assets/js/f2fb7d9a.7ec5bb64.js" } ] }, - "7010": { + "6038": { "js": [ { - "file": "assets/js/830399a1.cc8d2bf1.js", - "hash": "4858814c2c2360a8", - "publicPath": "/assets/js/830399a1.cc8d2bf1.js" + "file": "assets/js/e20c0e82.1125a30d.js", + "hash": "72bba0db2a7d7b99", + "publicPath": "/assets/js/e20c0e82.1125a30d.js" } ] }, - "7095": { + "6274": { "js": [ { - "file": "assets/js/1be23e60.9456dde0.js", - "hash": "ec004deb1ef7dad1", - "publicPath": "/assets/js/1be23e60.9456dde0.js" + "file": "assets/js/76e08b6a.2276d46b.js", + "hash": "ad1fb80d83f07634", + "publicPath": "/assets/js/76e08b6a.2276d46b.js" } ] }, - "7161": { + "6440": { "js": [ { - "file": "assets/js/c0738d6f.aa7a2d7e.js", - "hash": "c8d7d2373b0bfaff", - "publicPath": "/assets/js/c0738d6f.aa7a2d7e.js" + "file": "assets/js/c36fddde.5447ce7c.js", + "hash": "21bc50bde9323e63", + "publicPath": "/assets/js/c36fddde.5447ce7c.js" } ] }, - "7301": { + "6522": { "js": [ { - "file": "assets/js/fff7c774.386973ec.js", - "hash": "13a517c5d3c7cb45", - "publicPath": "/assets/js/fff7c774.386973ec.js" + "file": "assets/js/0874f9a4.868af88e.js", + "hash": "83403601428c7cfc", + "publicPath": "/assets/js/0874f9a4.868af88e.js" } ] }, - "7332": { + "7128": { "js": [ { - "file": "assets/js/cb052573.5ab8ee15.js", - "hash": "7e2bec1139360b1d", - "publicPath": "/assets/js/cb052573.5ab8ee15.js" + "file": "assets/js/ae444171.ccff1340.js", + "hash": "166bb0179e1ddcd1", + "publicPath": "/assets/js/ae444171.ccff1340.js" } ] }, - "7568": { + "7131": { "js": [ { - "file": "assets/js/0fa70dcc.33983006.js", - "hash": "086e92a89b138c49", - "publicPath": "/assets/js/0fa70dcc.33983006.js" + "file": "assets/js/322a49c4.60b7382f.js", + "hash": "29d4b90b4d4924a5", + "publicPath": "/assets/js/322a49c4.60b7382f.js" } ] }, - "7606": { + "7313": { "js": [ { - "file": "assets/js/a72e2c34.77146624.js", - "hash": "cef5da973dd7581f", - "publicPath": "/assets/js/a72e2c34.77146624.js" + "file": "assets/js/5c632b0c.627110ed.js", + "hash": "7c09e8ef93293ad1", + "publicPath": "/assets/js/5c632b0c.627110ed.js" } ] }, - "7918": { + "7549": { "js": [ { - "file": "assets/js/17896441.9c5c60a7.js", - "hash": "fdd498b11e4e5974", - "publicPath": "/assets/js/17896441.9c5c60a7.js" + "file": "assets/js/f09f0737.52e14fdf.js", + "hash": "cdd44bd5d51aa280", + "publicPath": "/assets/js/f09f0737.52e14fdf.js" } ] }, - "7920": { + "8241": { "js": [ { - "file": "assets/js/1a4e3797.db602145.js", - "hash": "0344b5fd27f713ac", - "publicPath": "/assets/js/1a4e3797.db602145.js" + "file": "assets/js/f24bf796.ed66ca8d.js", + "hash": "6aab437b103afb13", + "publicPath": "/assets/js/f24bf796.ed66ca8d.js" } ] }, - "7929": { + "8389": { "js": [ { - "file": "assets/js/ff603e77.6fc3220b.js", - "hash": "66c0234725bd6416", - "publicPath": "/assets/js/ff603e77.6fc3220b.js" + "file": "assets/js/0ba241d4.f08cf61a.js", + "hash": "3189836e0c8696bc", + "publicPath": "/assets/js/0ba241d4.f08cf61a.js" } ] }, - "8047": { + "8401": { "js": [ { - "file": "assets/js/3d5a80f7.366e3643.js", - "hash": "4da945d1f8a27be1", - "publicPath": "/assets/js/3d5a80f7.366e3643.js" + "file": "assets/js/17896441.ed12cee7.js", + "hash": "328216318171b258", + "publicPath": "/assets/js/17896441.ed12cee7.js" } ] }, - "8092": { + "8545": { "js": [ { - "file": "assets/js/f24bf796.2e6f8d6e.js", - "hash": "972a9a5a9052a625", - "publicPath": "/assets/js/f24bf796.2e6f8d6e.js" + "file": "assets/js/c1bbe575.7e46117e.js", + "hash": "85df66e3dc908e49", + "publicPath": "/assets/js/c1bbe575.7e46117e.js" } ] }, - "8131": { + "8572": { "js": [ { - "file": "assets/js/79bc4fa4.1eb2a340.js", - "hash": "3a96e693da7bb3c1", - "publicPath": "/assets/js/79bc4fa4.1eb2a340.js" + "file": "assets/js/a0fedaae.23fa30f2.js", + "hash": "ec56b6777477e23a", + "publicPath": "/assets/js/a0fedaae.23fa30f2.js" } ] }, - "8135": { + "8581": { "js": [ { - "file": "assets/js/6ff99807.ce78a7f9.js", - "hash": "5b50900342eaa9e5", - "publicPath": "/assets/js/6ff99807.ce78a7f9.js" + "file": "assets/js/935f2afb.1f1eb7e0.js", + "hash": "d5692463d9a408b1", + "publicPath": "/assets/js/935f2afb.1f1eb7e0.js" } ] }, - "8351": { + "8792": { "js": [ { - "file": "assets/js/aa11fbf4.3b81d1e4.js", - "hash": "19106988f9d0fd3e", - "publicPath": "/assets/js/aa11fbf4.3b81d1e4.js" + "file": "assets/js/main.66bc444b.js", + "hash": "c849d6de8cef1035", + "publicPath": "/assets/js/main.66bc444b.js" } ] }, - "8406": { + "8797": { "js": [ { - "file": "assets/js/fc549e88.40bd676d.js", - "hash": "2e1a07eba6997102", - "publicPath": "/assets/js/fc549e88.40bd676d.js" + "file": "assets/js/89f8e59d.bef31024.js", + "hash": "5608113f3045eb04", + "publicPath": "/assets/js/89f8e59d.bef31024.js" } ] }, - "8455": { + "8878": { "js": [ { - "file": "assets/js/90d7c7d0.a7c64fcf.js", - "hash": "47824e3adcc16ead", - "publicPath": "/assets/js/90d7c7d0.a7c64fcf.js" + "file": "assets/js/99d2c9c4.fcd4d834.js", + "hash": "0eb1693c8c4b4b6b", + "publicPath": "/assets/js/99d2c9c4.fcd4d834.js" } ] }, - "8527": { + "8913": { "js": [ { - "file": "assets/js/ecc29b0a.fe476cc6.js", - "hash": "5e6693da23500ec6", - "publicPath": "/assets/js/ecc29b0a.fe476cc6.js" + "file": "assets/js/8913.3c8d8e29.js", + "hash": "0ab918a4d41cd27e", + "publicPath": "/assets/js/8913.3c8d8e29.js" } ] }, - "8894": { + "8965": { "js": [ { - "file": "assets/js/8894.55353267.js", - "hash": "5d10fcdddf9af51e", - "publicPath": "/assets/js/8894.55353267.js" + "file": "assets/js/d1a25e88.02c8e59a.js", + "hash": "352f3088ff90078c", + "publicPath": "/assets/js/d1a25e88.02c8e59a.js" } ] }, - "9007": { + "9029": { "js": [ { - "file": "assets/js/2f261fb5.6fbb3253.js", - "hash": "1658c85f98fb3126", - "publicPath": "/assets/js/2f261fb5.6fbb3253.js" + "file": "assets/js/d8d6327f.f4bc3823.js", + "hash": "f3c3296dce39c087", + "publicPath": "/assets/js/d8d6327f.f4bc3823.js" } ] }, - "9112": { + "9081": { "js": [ { - "file": "assets/js/de112a60.16a49b56.js", - "hash": "4a3d7c15f4d43976", - "publicPath": "/assets/js/de112a60.16a49b56.js" + "file": "assets/js/6dc9a2ef.79694ab1.js", + "hash": "3d975db5d2b439ca", + "publicPath": "/assets/js/6dc9a2ef.79694ab1.js" } ] }, - "9181": { + "9414": { "js": [ { - "file": "assets/js/5c632b0c.1583b954.js", - "hash": "68484f3fab9c1099", - "publicPath": "/assets/js/5c632b0c.1583b954.js" + "file": "assets/js/1e94eb74.83badbf7.js", + "hash": "d01ec476022d1be0", + "publicPath": "/assets/js/1e94eb74.83badbf7.js" } ] }, - "9501": { + "9423": { "js": [ { - "file": "assets/js/f09f0737.99e7323d.js", - "hash": "b03ed83691faa16e", - "publicPath": "/assets/js/f09f0737.99e7323d.js" + "file": "assets/js/0fa70dcc.afee320e.js", + "hash": "58f6e43185424c04", + "publicPath": "/assets/js/0fa70dcc.afee320e.js" } ] }, - "9652": { + "9462": { "js": [ { - "file": "assets/js/f2fb7d9a.d6724edf.js", - "hash": "9f6ed4fcc22422f9", - "publicPath": "/assets/js/f2fb7d9a.d6724edf.js" + "file": "assets/js/9462.89695fff.js", + "hash": "353586c1b462e297", + "publicPath": "/assets/js/9462.89695fff.js" } ] }, - "9692": { + "9469": { "js": [ { - "file": "assets/js/76e08b6a.02d66aca.js", - "hash": "d10d1cf7fca6956c", - "publicPath": "/assets/js/76e08b6a.02d66aca.js" + "file": "assets/js/d5a0d1e6.8df28664.js", + "hash": "10087abcd1389f2d", + "publicPath": "/assets/js/d5a0d1e6.8df28664.js" } ] }, - "9700": { + "9729": { "js": [ { - "file": "assets/js/b38459e8.2714c730.js", - "hash": "b9624182199cd20a", - "publicPath": "/assets/js/b38459e8.2714c730.js" + "file": "assets/js/90d7c7d0.45885324.js", + "hash": "e11968a71357da61", + "publicPath": "/assets/js/90d7c7d0.45885324.js" } ] }, - "9906": { + "9800": { "js": [ { - "file": "assets/js/84f53706.ce472726.js", - "hash": "3cfad144434029b9", - "publicPath": "/assets/js/84f53706.ce472726.js" + "file": "assets/js/7bf20783.c874abce.js", + "hash": "0034f935ae2d52d0", + "publicPath": "/assets/js/7bf20783.c874abce.js" } ] } diff --git a/.docusaurus/client-modules.js b/.docusaurus/client-modules.js index c135ab36..b88d9b8d 100644 --- a/.docusaurus/client-modules.js +++ b/.docusaurus/client-modules.js @@ -1,7 +1,7 @@ export default [ - require('/home/grossmj/PycharmProjects/gns3-docs/node_modules/@docusaurus/plugin-google-gtag/lib/gtag'), - require('/home/grossmj/PycharmProjects/gns3-docs/node_modules/infima/dist/css/default/default.css'), - require('/home/grossmj/PycharmProjects/gns3-docs/node_modules/@docusaurus/theme-classic/lib/prism-include-languages'), - require('/home/grossmj/PycharmProjects/gns3-docs/node_modules/@docusaurus/theme-classic/lib/nprogress'), - require('/home/grossmj/PycharmProjects/gns3-docs/src/css/custom.css'), + require('/Users/stevenyuen/Sites/gns3-docs/node_modules/@docusaurus/plugin-google-gtag/lib/gtag'), + require('/Users/stevenyuen/Sites/gns3-docs/node_modules/infima/dist/css/default/default.css'), + require('/Users/stevenyuen/Sites/gns3-docs/node_modules/@docusaurus/theme-classic/lib/prism-include-languages'), + require('/Users/stevenyuen/Sites/gns3-docs/node_modules/@docusaurus/theme-classic/lib/nprogress'), + require('/Users/stevenyuen/Sites/gns3-docs/src/css/custom.css'), ]; diff --git a/.docusaurus/codeTranslations.json b/.docusaurus/codeTranslations.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/.docusaurus/codeTranslations.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json b/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json new file mode 100644 index 00000000..fb396f1d --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json @@ -0,0 +1,4 @@ +{ + "title": "Recent posts", + "items": [] +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json b/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json new file mode 100644 index 00000000..3206737b --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json @@ -0,0 +1,4 @@ +{ + "name": "docusaurus-plugin-content-blog", + "id": "default" +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json b/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json new file mode 100644 index 00000000..3818ad02 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json @@ -0,0 +1,4 @@ +{ + "name": "docusaurus-plugin-content-docs", + "id": "default" +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-contribute-to-gns-3-md-058.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-contribute-to-gns-3-md-058.json new file mode 100644 index 00000000..d643e997 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-contribute-to-gns-3-md-058.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "contribute/contribute-to-gns3", + "id": "contribute/contribute-to-gns3", + "title": "Contribute to GNS3", + "description": "The GNS3 community welcomes new contributors. Don’t be afraid to make mistakes - we are here to help.", + "source": "@site/docs/contribute/contribute-to-gns3.md", + "sourceDirName": "contribute", + "slug": "/contribute/contribute-to-gns3", + "permalink": "/docs/contribute/contribute-to-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/contribute/contribute-to-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "contribute-to-gns3", + "title": "Contribute to GNS3", + "sidebar_label": "Contribute to GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Qemu system UUID", + "permalink": "/docs/emulators/qemu-system-uuid" + }, + "next": { + "title": "Development of GNS3", + "permalink": "/docs/contribute/development-of-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-development-of-gns-3-md-3db.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-development-of-gns-3-md-3db.json new file mode 100644 index 00000000..6aeab34a --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-development-of-gns-3-md-3db.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "contribute/development-of-gns3", + "id": "contribute/development-of-gns3", + "title": "Development of GNS3", + "description": "Using the GNS3 API", + "source": "@site/docs/contribute/development-of-gns3.md", + "sourceDirName": "contribute", + "slug": "/contribute/development-of-gns3", + "permalink": "/docs/contribute/development-of-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/contribute/development-of-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "development-of-gns3", + "title": "Development of GNS3", + "sidebar_label": "Development of GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Contribute to GNS3", + "permalink": "/docs/contribute/contribute-to-gns3" + }, + "next": { + "title": "How to debug Web UI Guide", + "permalink": "/docs/contribute/how-to-debug-web-ui-guide" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-how-to-debug-web-ui-guide-md-0fa.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-how-to-debug-web-ui-guide-md-0fa.json new file mode 100644 index 00000000..00ff7b20 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-contribute-how-to-debug-web-ui-guide-md-0fa.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "contribute/how-to-debug-web-ui-guide", + "id": "contribute/how-to-debug-web-ui-guide", + "title": "How to debug Web UI Guide", + "description": "Using the GNS3 API", + "source": "@site/docs/contribute/how-to-debug-web-ui-guide.md", + "sourceDirName": "contribute", + "slug": "/contribute/how-to-debug-web-ui-guide", + "permalink": "/docs/contribute/how-to-debug-web-ui-guide", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/contribute/how-to-debug-web-ui-guide.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "how-to-debug-web-ui-guide", + "title": "How to debug Web UI Guide", + "sidebar_label": "How to debug Web UI Guide" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Development of GNS3", + "permalink": "/docs/contribute/development-of-gns3" + }, + "next": { + "title": "Cisco ASA", + "permalink": "/docs/how-to-guides/cisco-asa" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-1-md-cd1.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-1-md-cd1.json new file mode 100644 index 00000000..65f3da20 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-1-md-cd1.json @@ -0,0 +1,19 @@ +{ + "unversionedId": "docusaurus-reference/doc1", + "id": "docusaurus-reference/doc1", + "title": "Style Guide", + "description": "You can write content using GitHub-flavored Markdown syntax.", + "source": "@site/docs/docusaurus-reference/doc1.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/doc1", + "permalink": "/docs/docusaurus-reference/doc1", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc1.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "doc1", + "title": "Style Guide", + "sidebar_label": "Style Guide" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-2-md-b38.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-2-md-b38.json new file mode 100644 index 00000000..145eaf0c --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-2-md-b38.json @@ -0,0 +1,18 @@ +{ + "unversionedId": "docusaurus-reference/doc2", + "id": "docusaurus-reference/doc2", + "title": "Document Number 2", + "description": "This is a link to another document. This is a link to an external page.", + "source": "@site/docs/docusaurus-reference/doc2.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/doc2", + "permalink": "/docs/docusaurus-reference/doc2", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc2.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "doc2", + "title": "Document Number 2" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-3-md-2f2.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-3-md-2f2.json new file mode 100644 index 00000000..44afa811 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-doc-3-md-2f2.json @@ -0,0 +1,18 @@ +{ + "unversionedId": "docusaurus-reference/doc3", + "id": "docusaurus-reference/doc3", + "title": "This is Document Number 3", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + "source": "@site/docs/docusaurus-reference/doc3.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/doc3", + "permalink": "/docs/docusaurus-reference/doc3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "doc3", + "title": "This is Document Number 3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-mdx-md-fff.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-mdx-md-fff.json new file mode 100644 index 00000000..d0ed5489 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-docusaurus-reference-mdx-md-fff.json @@ -0,0 +1,18 @@ +{ + "unversionedId": "docusaurus-reference/mdx", + "id": "docusaurus-reference/mdx", + "title": "Powered by MDX", + "description": "You can write JSX and use React components within your Markdown thanks to MDX.", + "source": "@site/docs/docusaurus-reference/mdx.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/mdx", + "permalink": "/docs/docusaurus-reference/mdx", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/mdx.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "mdx", + "title": "Powered by MDX" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-adding-vmware-vms-to-gns-3-topologies-md-5d0.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-adding-vmware-vms-to-gns-3-topologies-md-5d0.json new file mode 100644 index 00000000..aa02dbe2 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-adding-vmware-vms-to-gns-3-topologies-md-5d0.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/adding-vmware-vms-to-gns3-topologies", + "id": "emulators/adding-vmware-vms-to-gns3-topologies", + "title": "Adding VMware VMs to GNS3 Topologies", + "description": "Introduction", + "source": "@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md", + "sourceDirName": "emulators", + "slug": "/emulators/adding-vmware-vms-to-gns3-topologies", + "permalink": "/docs/emulators/adding-vmware-vms-to-gns3-topologies", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/adding-vmware-vms-to-gns3-topologies.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "adding-vmware-vms-to-gns3-topologies", + "title": "Adding VMware VMs to GNS3 Topologies", + "sidebar_label": "Adding VMware VMs to GNS3 Topologies" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Non-Native IOU for Windows and OSX", + "permalink": "/docs/emulators/non-native-iou-for-windows-and-osx" + }, + "next": { + "title": "Docker support in GNS3", + "permalink": "/docs/emulators/docker-support-in-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-cisco-ios-images-for-dynamips-md-c07.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-cisco-ios-images-for-dynamips-md-c07.json new file mode 100644 index 00000000..fc5ba1c1 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-cisco-ios-images-for-dynamips-md-c07.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/cisco-ios-images-for-dynamips", + "id": "emulators/cisco-ios-images-for-dynamips", + "title": "Cisco IOS images for Dynamips", + "description": "GNS3 offers multiple ways to emulate IOS. For older images, we use and maintain Dynamips; an emulator dedicated to emulate some Cisco hardware. Dynamips can run unmodified IOS images. In the new GNS3 1.4, there is a way to run a second category of switches and routers. These are classified as Routing and Switching virtual machines (or R+Svms) for short. What are the differences? Here are the major differences:", + "source": "@site/docs/emulators/cisco-ios-images-for-dynamips.md", + "sourceDirName": "emulators", + "slug": "/emulators/cisco-ios-images-for-dynamips", + "permalink": "/docs/emulators/cisco-ios-images-for-dynamips", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/cisco-ios-images-for-dynamips.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "cisco-ios-images-for-dynamips", + "title": "Cisco IOS images for Dynamips", + "sidebar_label": "Cisco IOS images for Dynamips" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Which emulator should I use?", + "permalink": "/docs/emulators/which-emulators-should-i-use" + }, + "next": { + "title": "Non-Native IOU for Windows and OSX", + "permalink": "/docs/emulators/non-native-iou-for-windows-and-osx" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-create-a-docker-container-for-gns-3-md-f1f.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-create-a-docker-container-for-gns-3-md-f1f.json new file mode 100644 index 00000000..4cfe258c --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-create-a-docker-container-for-gns-3-md-f1f.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/create-a-docker-container-for-gns3", + "id": "emulators/create-a-docker-container-for-gns3", + "title": "Create a docker container for GNS3", + "description": "This tutorial is for users who never used Docker, and would like to create a Docker container for GNS3.", + "source": "@site/docs/emulators/create-a-docker-container-for-gns3.md", + "sourceDirName": "emulators", + "slug": "/emulators/create-a-docker-container-for-gns3", + "permalink": "/docs/emulators/create-a-docker-container-for-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/create-a-docker-container-for-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "create-a-docker-container-for-gns3", + "title": "Create a docker container for GNS3", + "sidebar_label": "Create a docker container for GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Docker support in GNS3", + "permalink": "/docs/emulators/docker-support-in-gns3" + }, + "next": { + "title": "VPCS", + "permalink": "/docs/emulators/vpcs" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-docker-support-in-gns-3-md-a72.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-docker-support-in-gns-3-md-a72.json new file mode 100644 index 00000000..71a4f22c --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-docker-support-in-gns-3-md-a72.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/docker-support-in-gns3", + "id": "emulators/docker-support-in-gns3", + "title": "Docker support in GNS3", + "description": "Docker container support was added as a feature starting with GNS3 1.5. Work on this feature was started by Goran Cetusic during the Google Summer Of Code and finished by the GNS3 core team.", + "source": "@site/docs/emulators/docker-support-in-gns3.md", + "sourceDirName": "emulators", + "slug": "/emulators/docker-support-in-gns3", + "permalink": "/docs/emulators/docker-support-in-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/docker-support-in-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "docker-support-in-gns3", + "title": "Docker support in GNS3", + "sidebar_label": "Docker support in GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Adding VMware VMs to GNS3 Topologies", + "permalink": "/docs/emulators/adding-vmware-vms-to-gns3-topologies" + }, + "next": { + "title": "Create a docker container for GNS3", + "permalink": "/docs/emulators/create-a-docker-container-for-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-non-native-iou-for-windows-and-osx-md-f09.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-non-native-iou-for-windows-and-osx-md-f09.json new file mode 100644 index 00000000..bc595800 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-non-native-iou-for-windows-and-osx-md-f09.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/non-native-iou-for-windows-and-osx", + "id": "emulators/non-native-iou-for-windows-and-osx", + "title": "Non-Native IOU for Windows and OSX", + "description": "IOU is IOS on Unix (Solaris, if you want to be specific). It's a version of IOS compiled to run on workstations. It's faster and lighter than emulation. Cisco transitioned to IOL images, which are x86-64 compatible versions of IOS that natively run in Linux. Since everyone and their kid brother still refers to IOL images as “IOU”, that convention is used for the remainder of this document.", + "source": "@site/docs/emulators/non-native-iou-for-windows-and-osx.md", + "sourceDirName": "emulators", + "slug": "/emulators/non-native-iou-for-windows-and-osx", + "permalink": "/docs/emulators/non-native-iou-for-windows-and-osx", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/non-native-iou-for-windows-and-osx.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "non-native-iou-for-windows-and-osx", + "title": "Non-Native IOU for Windows and OSX", + "sidebar_label": "Non-Native IOU for Windows and OSX" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Cisco IOS images for Dynamips", + "permalink": "/docs/emulators/cisco-ios-images-for-dynamips" + }, + "next": { + "title": "Adding VMware VMs to GNS3 Topologies", + "permalink": "/docs/emulators/adding-vmware-vms-to-gns3-topologies" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-qemu-system-uuid-md-c36.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-qemu-system-uuid-md-c36.json new file mode 100644 index 00000000..40bbb5b2 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-qemu-system-uuid-md-c36.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/qemu-system-uuid", + "id": "emulators/qemu-system-uuid", + "title": "Qemu system UUID", + "description": "Like any real computer, Qemu attributes a UUID to the system. This is stored in the SMBIOS:", + "source": "@site/docs/emulators/qemu-system-uuid.md", + "sourceDirName": "emulators", + "slug": "/emulators/qemu-system-uuid", + "permalink": "/docs/emulators/qemu-system-uuid", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/qemu-system-uuid.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "qemu-system-uuid", + "title": "Qemu system UUID", + "sidebar_label": "Qemu system UUID" + }, + "sidebar": "someSidebar", + "previous": { + "title": "VPCS", + "permalink": "/docs/emulators/vpcs" + }, + "next": { + "title": "Contribute to GNS3", + "permalink": "/docs/contribute/contribute-to-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-vpcs-md-c56.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-vpcs-md-c56.json new file mode 100644 index 00000000..0b295122 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-vpcs-md-c56.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/vpcs", + "id": "emulators/vpcs", + "title": "VPCS", + "description": "Virtual PC Simulator is a program written by Paul Meng, which allows you to simulate a lightweight PC supporting DHCP and ping. It consumes only 2MB of RAM per instance, and does not require an additional image.", + "source": "@site/docs/emulators/vpcs.md", + "sourceDirName": "emulators", + "slug": "/emulators/vpcs", + "permalink": "/docs/emulators/vpcs", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/vpcs.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "vpcs", + "title": "VPCS", + "sidebar_label": "VPCS" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Create a docker container for GNS3", + "permalink": "/docs/emulators/create-a-docker-container-for-gns3" + }, + "next": { + "title": "Qemu system UUID", + "permalink": "/docs/emulators/qemu-system-uuid" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-which-emulators-should-i-use-md-6dc.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-which-emulators-should-i-use-md-6dc.json new file mode 100644 index 00000000..3e139862 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-emulators-which-emulators-should-i-use-md-6dc.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "emulators/which-emulators-should-i-use", + "id": "emulators/which-emulators-should-i-use", + "title": "Which emulator should I use?", + "description": "GNS3 supports multiple emulators which you can use in your GNS3 projects. This gives you lots of flexibility when building topologies.", + "source": "@site/docs/emulators/which-emulators-should-i-use.md", + "sourceDirName": "emulators", + "slug": "/emulators/which-emulators-should-i-use", + "permalink": "/docs/emulators/which-emulators-should-i-use", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/which-emulators-should-i-use.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "which-emulators-should-i-use", + "title": "Which emulator should I use?", + "sidebar_label": "Which emulator should I use?" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Why does GNS3 use UUIDs?", + "permalink": "/docs/using-gns3/design/why-gns3-uses-uuid" + }, + "next": { + "title": "Cisco IOS images for Dynamips", + "permalink": "/docs/emulators/cisco-ios-images-for-dynamips" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-32-bit-md-0d0.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-32-bit-md-0d0.json new file mode 100644 index 00000000..6f4d56fb --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-32-bit-md-0d0.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/download-32-bit", + "id": "getting-started/installation/download-32-bit", + "title": "Download GNS3 for Windows 32 bit", + "description": "If you use a 32 bit version of Windows, you will need to use GNS3 1.3.13 (or older). 32 bit support was dropped starting with GNS3 1.4.", + "source": "@site/docs/getting-started/installation/download-32-bit.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/download-32-bit", + "permalink": "/docs/getting-started/installation/download-32-bit", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/download-32-bit.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "download-32-bit", + "title": "Download GNS3 for Windows 32 bit", + "sidebar_label": "Download for Windows 32-bit" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Download the GNS3 VM", + "permalink": "/docs/getting-started/installation/download-gns3-vm" + }, + "next": { + "title": "One GNS3 server, multiple clients", + "permalink": "/docs/getting-started/installation/one-server-multiple-clients" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-gns-3-vm-md-d90.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-gns-3-vm-md-d90.json new file mode 100644 index 00000000..96001241 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-download-gns-3-vm-md-d90.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/download-gns3-vm", + "id": "getting-started/installation/download-gns3-vm", + "title": "Downloading the GNS3 VM", + "description": "Which Virtualization Software? VirtualBox or VMware?", + "source": "@site/docs/getting-started/installation/download-gns3-vm.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/download-gns3-vm", + "permalink": "/docs/getting-started/installation/download-gns3-vm", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/download-gns3-vm.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "download-gns3-vm", + "title": "Downloading the GNS3 VM", + "sidebar_label": "Download the GNS3 VM" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Remote Server", + "permalink": "/docs/getting-started/installation/remote-server" + }, + "next": { + "title": "Download for Windows 32-bit", + "permalink": "/docs/getting-started/installation/download-32-bit" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-esxi-md-d5a.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-esxi-md-d5a.json new file mode 100644 index 00000000..7b2ee27e --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-esxi-md-d5a.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/esxi", + "id": "getting-started/installation/esxi", + "title": "Install the GNS3 VM on ESXi", + "description": "VMware ESXi and VMware workstation are two totally different products. If you want instructions for VMware Workstation or VMware Fusion read this document.", + "source": "@site/docs/getting-started/installation/esxi.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/esxi", + "permalink": "/docs/getting-started/installation/esxi", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/esxi.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "esxi", + "title": "Install the GNS3 VM on ESXi", + "sidebar_label": "ESXi" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Linux", + "permalink": "/docs/getting-started/installation/linux" + }, + "next": { + "title": "Remote Server", + "permalink": "/docs/getting-started/installation/remote-server" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-gns-3-on-equinix-md-6ff.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-gns-3-on-equinix-md-6ff.json new file mode 100644 index 00000000..07d316f9 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-gns-3-on-equinix-md-6ff.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/gns3-on-equinix", + "id": "getting-started/installation/gns3-on-equinix", + "title": "GNS3 on equinix", + "description": "What is Equinix?", + "source": "@site/docs/getting-started/installation/gns3-on-equinix.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/gns3-on-equinix", + "permalink": "/docs/getting-started/installation/gns3-on-equinix", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/gns3-on-equinix.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-on-equinix", + "title": "GNS3 on equinix", + "sidebar_label": "GNS3 on Equinix" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Upgrade GNS3", + "permalink": "/docs/getting-started/installation/upgrade-gns3" + }, + "next": { + "title": "Setup wizard for local server", + "permalink": "/docs/getting-started/setup-wizard-local-server" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-linux-md-f37.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-linux-md-f37.json new file mode 100644 index 00000000..91139808 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-linux-md-f37.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/linux", + "id": "getting-started/installation/linux", + "title": "GNS3 Linux Install", + "description": "Ubuntu-based distributions (64-bit only)", + "source": "@site/docs/getting-started/installation/linux.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/linux", + "permalink": "/docs/getting-started/installation/linux", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/linux.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "linux", + "title": "GNS3 Linux Install", + "sidebar_label": "Linux" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Mac", + "permalink": "/docs/getting-started/installation/mac" + }, + "next": { + "title": "ESXi", + "permalink": "/docs/getting-started/installation/esxi" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-mac-md-3d5.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-mac-md-3d5.json new file mode 100644 index 00000000..2980f617 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-mac-md-3d5.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/mac", + "id": "getting-started/installation/mac", + "title": "GNS3 Mac Install", + "description": "Introduction", + "source": "@site/docs/getting-started/installation/mac.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/mac", + "permalink": "/docs/getting-started/installation/mac", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/mac.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "mac", + "title": "GNS3 Mac Install", + "sidebar_label": "Mac" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Windows", + "permalink": "/docs/getting-started/installation/windows" + }, + "next": { + "title": "Linux", + "permalink": "/docs/getting-started/installation/linux" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-one-server-multiple-clients-md-f2f.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-one-server-multiple-clients-md-f2f.json new file mode 100644 index 00000000..80b44b0e --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-one-server-multiple-clients-md-f2f.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/one-server-multiple-clients", + "id": "getting-started/installation/one-server-multiple-clients", + "title": "One GNS3 server, multiple clients", + "description": "This documentation is only for GNS3 2.0 and later", + "source": "@site/docs/getting-started/installation/one-server-multiple-clients.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/one-server-multiple-clients", + "permalink": "/docs/getting-started/installation/one-server-multiple-clients", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/one-server-multiple-clients.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "one-server-multiple-clients", + "title": "One GNS3 server, multiple clients", + "sidebar_label": "One GNS3 server, multiple clients" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Download for Windows 32-bit", + "permalink": "/docs/getting-started/installation/download-32-bit" + }, + "next": { + "title": "Upgrade GNS3", + "permalink": "/docs/getting-started/installation/upgrade-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-remote-server-md-1be.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-remote-server-md-1be.json new file mode 100644 index 00000000..70b7f865 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-remote-server-md-1be.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/remote-server", + "id": "getting-started/installation/remote-server", + "title": "Install GNS3 on a remote server", + "description": "If you need more resources for bigger topologies, you can install GNS3 on a remote server. This could be on:", + "source": "@site/docs/getting-started/installation/remote-server.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/remote-server", + "permalink": "/docs/getting-started/installation/remote-server", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/remote-server.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "remote-server", + "title": "Install GNS3 on a remote server", + "sidebar_label": "Remote Server" + }, + "sidebar": "someSidebar", + "previous": { + "title": "ESXi", + "permalink": "/docs/getting-started/installation/esxi" + }, + "next": { + "title": "Download the GNS3 VM", + "permalink": "/docs/getting-started/installation/download-gns3-vm" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-upgrade-gns-3-md-d1a.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-upgrade-gns-3-md-d1a.json new file mode 100644 index 00000000..9fcefb94 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-upgrade-gns-3-md-d1a.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/upgrade-gns3", + "id": "getting-started/installation/upgrade-gns3", + "title": "Upgrade GNS3", + "description": "Upgrading the GNS3 Client", + "source": "@site/docs/getting-started/installation/upgrade-gns3.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/upgrade-gns3", + "permalink": "/docs/getting-started/installation/upgrade-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/upgrade-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "upgrade-gns3", + "title": "Upgrade GNS3", + "sidebar_label": "Upgrade GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "One GNS3 server, multiple clients", + "permalink": "/docs/getting-started/installation/one-server-multiple-clients" + }, + "next": { + "title": "GNS3 on Equinix", + "permalink": "/docs/getting-started/installation/gns3-on-equinix" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-windows-md-657.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-windows-md-657.json new file mode 100644 index 00000000..207bc5e5 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-installation-windows-md-657.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/installation/windows", + "id": "getting-started/installation/windows", + "title": "GNS3 Windows Install", + "description": "Introduction", + "source": "@site/docs/getting-started/installation/windows.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/windows", + "permalink": "/docs/getting-started/installation/windows", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/windows.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "windows", + "title": "GNS3 Windows Install", + "sidebar_label": "Windows" + }, + "sidebar": "someSidebar", + "previous": { + "title": "What is GNS3?", + "permalink": "/docs/" + }, + "next": { + "title": "Mac", + "permalink": "/docs/getting-started/installation/mac" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-gns-3-vm-md-cb0.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-gns-3-vm-md-cb0.json new file mode 100644 index 00000000..044e338f --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-gns-3-vm-md-cb0.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/setup-wizard-gns3-vm", + "id": "getting-started/setup-wizard-gns3-vm", + "title": "GNS3 Setup wizard with the GNS3 VM", + "description": "Which Virtualization Software? VirtualBox or VMware?", + "source": "@site/docs/getting-started/setup-wizard-gns3-vm.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/setup-wizard-gns3-vm", + "permalink": "/docs/getting-started/setup-wizard-gns3-vm", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/setup-wizard-gns3-vm.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "setup-wizard-gns3-vm", + "title": "GNS3 Setup wizard with the GNS3 VM", + "sidebar_label": "Setup wizard for GNS3 VM" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Setup wizard for local server", + "permalink": "/docs/getting-started/setup-wizard-local-server" + }, + "next": { + "title": "Your first GNS3 topology", + "permalink": "/docs/getting-started/your-first-gns3-topology" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-local-server-md-a94.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-local-server-md-a94.json new file mode 100644 index 00000000..dce12383 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-setup-wizard-local-server-md-a94.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/setup-wizard-local-server", + "id": "getting-started/setup-wizard-local-server", + "title": "GNS3 Setup Wizard - Local server", + "description": "Introduction", + "source": "@site/docs/getting-started/setup-wizard-local-server.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/setup-wizard-local-server", + "permalink": "/docs/getting-started/setup-wizard-local-server", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/setup-wizard-local-server.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "setup-wizard-local-server", + "title": "GNS3 Setup Wizard - Local server", + "sidebar_label": "Setup wizard for local server" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 on Equinix", + "permalink": "/docs/getting-started/installation/gns3-on-equinix" + }, + "next": { + "title": "Setup wizard for GNS3 VM", + "permalink": "/docs/getting-started/setup-wizard-gns3-vm" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-what-is-gns-3-md-322.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-what-is-gns-3-md-322.json new file mode 100644 index 00000000..1fe82b5c --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-what-is-gns-3-md-322.json @@ -0,0 +1,25 @@ +{ + "unversionedId": "getting-started/what-is-gns3", + "id": "getting-started/what-is-gns3", + "title": "Getting Started with GNS3", + "description": "Introduction", + "source": "@site/docs/getting-started/what-is-gns3.md", + "sourceDirName": "getting-started", + "slug": "/", + "permalink": "/docs/", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/what-is-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "what-is-gns3", + "title": "Getting Started with GNS3", + "sidebar_label": "What is GNS3?", + "slug": "/" + }, + "sidebar": "someSidebar", + "next": { + "title": "Windows", + "permalink": "/docs/getting-started/installation/windows" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-cisco-topology-md-ae4.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-cisco-topology-md-ae4.json new file mode 100644 index 00000000..b24f01f9 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-cisco-topology-md-ae4.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/your-first-cisco-topology", + "id": "getting-started/your-first-cisco-topology", + "title": "Your First Cisco Topology", + "description": "Introduction", + "source": "@site/docs/getting-started/your-first-cisco-topology.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/your-first-cisco-topology", + "permalink": "/docs/getting-started/your-first-cisco-topology", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/your-first-cisco-topology.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "your-first-cisco-topology", + "title": "Your First Cisco Topology", + "sidebar_label": "Your first Cisco topology" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Your first GNS3 topology", + "permalink": "/docs/getting-started/your-first-gns3-topology" + }, + "next": { + "title": "The GNS3 GUI", + "permalink": "/docs/using-gns3/beginners/the-gns3-gui" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-gns-3-topology-md-79b.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-gns-3-topology-md-79b.json new file mode 100644 index 00000000..63df2c9f --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-your-first-gns-3-topology-md-79b.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "getting-started/your-first-gns3-topology", + "id": "getting-started/your-first-gns3-topology", + "title": "Your First GNS3 Topology", + "description": "Introduction", + "source": "@site/docs/getting-started/your-first-gns3-topology.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/your-first-gns3-topology", + "permalink": "/docs/getting-started/your-first-gns3-topology", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/your-first-gns3-topology.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "your-first-gns3-topology", + "title": "Your First GNS3 Topology", + "sidebar_label": "Your first GNS3 topology" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Setup wizard for GNS3 VM", + "permalink": "/docs/getting-started/setup-wizard-gns3-vm" + }, + "next": { + "title": "Your first Cisco topology", + "permalink": "/docs/getting-started/your-first-cisco-topology" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-cisco-asa-md-3cd.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-cisco-asa-md-3cd.json new file mode 100644 index 00000000..3458ab04 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-cisco-asa-md-3cd.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "how-to-guides/cisco-asa", + "id": "how-to-guides/cisco-asa", + "title": "Cisco ASA", + "description": "ASA 8", + "source": "@site/docs/how-to-guides/cisco-asa.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/cisco-asa", + "permalink": "/docs/how-to-guides/cisco-asa", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/cisco-asa.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "cisco-asa", + "title": "Cisco ASA", + "sidebar_label": "Cisco ASA" + }, + "sidebar": "someSidebar", + "previous": { + "title": "How to debug Web UI Guide", + "permalink": "/docs/contribute/how-to-debug-web-ui-guide" + }, + "next": { + "title": "Importing vMX and vQFX into GNS3", + "permalink": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-configure-gns-3-to-use-an-additional-remote-server-md-de1.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-configure-gns-3-to-use-an-additional-remote-server-md-de1.json new file mode 100644 index 00000000..25e05b8d --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-configure-gns-3-to-use-an-additional-remote-server-md-de1.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "id": "how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "title": "Configure GNS3 to use an additional remote server", + "description": "Configure GNS3 to use an additional remote server", + "source": "@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "permalink": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "configure-gns3-to-use-an-additional-remote-server", + "title": "Configure GNS3 to use an additional remote server", + "sidebar_label": "Configure GNS3 to use an additional remote server" + }, + "sidebar": "someSidebar", + "previous": { + "title": "How to use applications with the GNS3 Web interface", + "permalink": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui" + }, + "next": { + "title": "Troubleshoot GNS3", + "permalink": "/docs/troubleshooting-faq/troubleshoot-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-how-to-use-console-applications-with-the-web-ui-md-f95.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-how-to-use-console-applications-with-the-web-ui-md-f95.json new file mode 100644 index 00000000..3596a6bc --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-how-to-use-console-applications-with-the-web-ui-md-f95.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "how-to-guides/how-to-use-console-applications-with-the-web-ui", + "id": "how-to-guides/how-to-use-console-applications-with-the-web-ui", + "title": "How to use applications with the GNS3 Web interface", + "description": "A web client pack must be installed on your operating system in order to launch local applications needed to work with the GNS3 Web interface. We currently support Telnet, VNC, SPICE and packet capture applications.", + "source": "@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/how-to-use-console-applications-with-the-web-ui", + "permalink": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "how-to-use-console-applications-with-the-web-ui", + "title": "How to use applications with the GNS3 Web interface", + "sidebar_label": "How to use applications with the GNS3 Web interface" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Importing vMX and vQFX into GNS3", + "permalink": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3" + }, + "next": { + "title": "Configure GNS3 to use an additional remote server", + "permalink": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-importing-vmx-and-vqfx-into-gns-3-md-830.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-importing-vmx-and-vqfx-into-gns-3-md-830.json new file mode 100644 index 00000000..8ee17f2f --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-to-guides-importing-vmx-and-vqfx-into-gns-3-md-830.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "how-to-guides/importing-vmx-and-vqfx-into-gns3", + "id": "how-to-guides/importing-vmx-and-vqfx-into-gns3", + "title": "Importing vMX and vQFX into GNS3", + "description": "Important edit - see bottom of the document!", + "source": "@site/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/importing-vmx-and-vqfx-into-gns3", + "permalink": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "importing-vmx-and-vqfx-into-gns3", + "title": "Importing vMX and vQFX into GNS3", + "sidebar_label": "Importing vMX and vQFX into GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Cisco ASA", + "permalink": "/docs/how-to-guides/cisco-asa" + }, + "next": { + "title": "How to use applications with the GNS3 Web interface", + "permalink": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-general-faq-md-90d.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-general-faq-md-90d.json new file mode 100644 index 00000000..c6f138a9 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-general-faq-md-90d.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "troubleshooting-faq/general-faq", + "id": "troubleshooting-faq/general-faq", + "title": "General FAQ", + "description": "IOU", + "source": "@site/docs/troubleshooting-faq/general-faq.md", + "sourceDirName": "troubleshooting-faq", + "slug": "/troubleshooting-faq/general-faq", + "permalink": "/docs/troubleshooting-faq/general-faq", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/general-faq.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "general-faq", + "title": "General FAQ", + "sidebar_label": "General FAQ" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Troubleshoot GNS3", + "permalink": "/docs/troubleshooting-faq/troubleshoot-gns3" + }, + "next": { + "title": "Where do I get IOS images?", + "permalink": "/docs/troubleshooting-faq/where-do-i-get-ios-images" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-troubleshoot-gns-3-md-d8d.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-troubleshoot-gns-3-md-d8d.json new file mode 100644 index 00000000..2f0de094 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-troubleshoot-gns-3-md-d8d.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "troubleshooting-faq/troubleshoot-gns3", + "id": "troubleshooting-faq/troubleshoot-gns3", + "title": "Troubleshoot GNS3", + "description": "Installation Problems", + "source": "@site/docs/troubleshooting-faq/troubleshoot-gns3.md", + "sourceDirName": "troubleshooting-faq", + "slug": "/troubleshooting-faq/troubleshoot-gns3", + "permalink": "/docs/troubleshooting-faq/troubleshoot-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/troubleshoot-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "troubleshoot-gns3", + "title": "Troubleshoot GNS3", + "sidebar_label": "Troubleshoot GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Configure GNS3 to use an additional remote server", + "permalink": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server" + }, + "next": { + "title": "General FAQ", + "permalink": "/docs/troubleshooting-faq/general-faq" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-where-do-i-get-ios-images-md-258.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-where-do-i-get-ios-images-md-258.json new file mode 100644 index 00000000..52e783e5 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-faq-where-do-i-get-ios-images-md-258.json @@ -0,0 +1,24 @@ +{ + "unversionedId": "troubleshooting-faq/where-do-i-get-ios-images", + "id": "troubleshooting-faq/where-do-i-get-ios-images", + "title": "Where do I get IOS images?", + "description": "Introduction", + "source": "@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md", + "sourceDirName": "troubleshooting-faq", + "slug": "/troubleshooting-faq/where-do-i-get-ios-images", + "permalink": "/docs/troubleshooting-faq/where-do-i-get-ios-images", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/where-do-i-get-ios-images.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "where-do-i-get-ios-images", + "title": "Where do I get IOS images?", + "sidebar_label": "Where do I get IOS images?" + }, + "sidebar": "someSidebar", + "previous": { + "title": "General FAQ", + "permalink": "/docs/troubleshooting-faq/general-faq" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-client-server-ssl-encryption-md-6c7.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-client-server-ssl-encryption-md-6c7.json new file mode 100644 index 00000000..9026d7cb --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-client-server-ssl-encryption-md-6c7.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/administration/client-server-ssl-encryption", + "id": "using-gns3/administration/client-server-ssl-encryption", + "title": "Client server SSL encryption", + "description": "GNS3 supports secured network communications between the GNS3 GUI and GNS3 server using SSL. SSL mode is not supported for the GNS3 server on Windows but you can use it for clients. You will need a SSL certificate, if you don't have one, it is possible to generate a self signed certificate using this script (OpenSSL must be installed):", + "source": "@site/docs/using-gns3/administration/client-server-ssl-encryption.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/client-server-ssl-encryption", + "permalink": "/docs/using-gns3/administration/client-server-ssl-encryption", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/client-server-ssl-encryption.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "client-server-ssl-encryption", + "title": "Client server SSL encryption", + "sidebar_label": "Client server SSL encryption" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 Security", + "permalink": "/docs/using-gns3/administration/gns3-security" + }, + "next": { + "title": "Scale GNS3", + "permalink": "/docs/using-gns3/administration/scale-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-security-md-ecc.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-security-md-ecc.json new file mode 100644 index 00000000..1c5616e4 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-security-md-ecc.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/administration/gns3-security", + "id": "using-gns3/administration/gns3-security", + "title": "GNS3 Security", + "description": "Users of GNS3 need to bear in mind that it is a tool designed to be used for experimentation/learning, not for managing Virtual Machines or appliances in a production environment.", + "source": "@site/docs/using-gns3/administration/gns3-security.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/gns3-security", + "permalink": "/docs/using-gns3/administration/gns3-security", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/gns3-security.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-security", + "title": "GNS3 Security", + "sidebar_label": "GNS3 Security" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Running the GNS3 server as a daemon", + "permalink": "/docs/using-gns3/administration/running-gns3-server-as-daemon" + }, + "next": { + "title": "Client server SSL encryption", + "permalink": "/docs/using-gns3/administration/client-server-ssl-encryption" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-server-configuration-file-md-9cd.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-server-configuration-file-md-9cd.json new file mode 100644 index 00000000..245945b9 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-gns-3-server-configuration-file-md-9cd.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/administration/gns3-server-configuration-file", + "id": "using-gns3/administration/gns3-server-configuration-file", + "title": "GNS3 server configuration file", + "description": "If you want to run the GNS3 server without the GUI, you can configure it with via an ini file.", + "source": "@site/docs/using-gns3/administration/gns3-server-configuration-file.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/gns3-server-configuration-file", + "permalink": "/docs/using-gns3/administration/gns3-server-configuration-file", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/gns3-server-configuration-file.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-server-configuration-file", + "title": "GNS3 server configuration file", + "sidebar_label": "GNS3 server configuration file" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Configuration transfer to QEMU VMs", + "permalink": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms" + }, + "next": { + "title": "Running the GNS3 server as a daemon", + "permalink": "/docs/using-gns3/administration/running-gns3-server-as-daemon" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-running-gns-3-server-as-daemon-md-f24.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-running-gns-3-server-as-daemon-md-f24.json new file mode 100644 index 00000000..ca7902c9 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-running-gns-3-server-as-daemon-md-f24.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/administration/running-gns3-server-as-daemon", + "id": "using-gns3/administration/running-gns3-server-as-daemon", + "title": "Running the GNS3 server as a daemon", + "description": "You will find a sample init script for various systems inside the init directory of the gns3-server project//github.com/GNS3/gns3-server/tree/master/init", + "source": "@site/docs/using-gns3/administration/running-gns3-server-as-daemon.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/running-gns3-server-as-daemon", + "permalink": "/docs/using-gns3/administration/running-gns3-server-as-daemon", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/running-gns3-server-as-daemon.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "running-gns3-server-as-daemon", + "title": "Running the GNS3 server as a daemon", + "sidebar_label": "Running the GNS3 server as a daemon" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 server configuration file", + "permalink": "/docs/using-gns3/administration/gns3-server-configuration-file" + }, + "next": { + "title": "GNS3 Security", + "permalink": "/docs/using-gns3/administration/gns3-security" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-scale-gns-3-md-7df.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-scale-gns-3-md-7df.json new file mode 100644 index 00000000..5bc0e3fb --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-administration-scale-gns-3-md-7df.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/administration/scale-gns3", + "id": "using-gns3/administration/scale-gns3", + "title": "Scale GNS3", + "description": "GNS3 itself doesn’t have limitation on the number of nodes you can run into it. The limitation will be your hardware.", + "source": "@site/docs/using-gns3/administration/scale-gns3.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/scale-gns3", + "permalink": "/docs/using-gns3/administration/scale-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/scale-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "scale-gns3", + "title": "Scale GNS3", + "sidebar_label": "Scale GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Client server SSL encryption", + "permalink": "/docs/using-gns3/administration/client-server-ssl-encryption" + }, + "next": { + "title": "Architecture", + "permalink": "/docs/using-gns3/design/architecture" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-configuration-transfer-qemu-vms-md-7bc.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-configuration-transfer-qemu-vms-md-7bc.json new file mode 100644 index 00000000..aab6fa80 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-configuration-transfer-qemu-vms-md-7bc.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/configuration-transfer-qemu-vms", + "id": "using-gns3/advanced/configuration-transfer-qemu-vms", + "title": "Configuration transfer to QEMU VMs", + "description": "GNS3 v2.2.18 introduces a feature to transfer files,", + "source": "@site/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/configuration-transfer-qemu-vms", + "permalink": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "configuration-transfer-qemu-vms", + "title": "Configuration transfer to QEMU VMs", + "sidebar_label": "Configuration transfer to QEMU VMs" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Port name formatting", + "permalink": "/docs/using-gns3/advanced/port-name-formatting" + }, + "next": { + "title": "GNS3 server configuration file", + "permalink": "/docs/using-gns3/administration/gns3-server-configuration-file" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-connect-gns-3-internet-md-e20.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-connect-gns-3-internet-md-e20.json new file mode 100644 index 00000000..06659f37 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-connect-gns-3-internet-md-e20.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/connect-gns3-internet", + "id": "using-gns3/advanced/connect-gns3-internet", + "title": "Connect GNS3 to the Internet (local server)", + "description": "Introduction", + "source": "@site/docs/using-gns3/advanced/connect-gns3-internet.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/connect-gns3-internet", + "permalink": "/docs/using-gns3/advanced/connect-gns3-internet", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/connect-gns3-internet.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "connect-gns3-internet", + "title": "Connect GNS3 to the Internet (local server)", + "sidebar_label": "Connect GNS3 to the Internet" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Link Control", + "permalink": "/docs/using-gns3/beginners/link-control" + }, + "next": { + "title": "The NAT node", + "permalink": "/docs/using-gns3/advanced/the-nat-node" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-create-a-new-version-for-an-appliance-md-1aa.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-create-a-new-version-for-an-appliance-md-1aa.json new file mode 100644 index 00000000..77281080 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-create-a-new-version-for-an-appliance-md-1aa.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/create-a-new-version-for-an-appliance", + "id": "using-gns3/advanced/create-a-new-version-for-an-appliance", + "title": "Create a new version of an appliance", + "description": "Manufacturers release new versions of their appliances every day. The GNS3 community does not always know about these new releases and updates to the appliance file, but GNS3 allows you to use an unknown version of an appliance.", + "source": "@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/create-a-new-version-for-an-appliance", + "permalink": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "create-a-new-version-for-an-appliance", + "title": "Create a new version of an appliance", + "sidebar_label": "Create a new version for an appliance" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Settings profiles", + "permalink": "/docs/using-gns3/advanced/settings-profiles" + }, + "next": { + "title": "Port name formatting", + "permalink": "/docs/using-gns3/advanced/port-name-formatting" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-hubs-and-switches-md-1e9.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-hubs-and-switches-md-1e9.json new file mode 100644 index 00000000..46ecb064 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-hubs-and-switches-md-1e9.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/hubs-and-switches", + "id": "using-gns3/advanced/hubs-and-switches", + "title": "GNS3's built-in Hub and Switch devices", + "description": "Introduction", + "source": "@site/docs/using-gns3/advanced/hubs-and-switches.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/hubs-and-switches", + "permalink": "/docs/using-gns3/advanced/hubs-and-switches", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/hubs-and-switches.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "hubs-and-switches", + "title": "GNS3's built-in Hub and Switch devices", + "sidebar_label": "Built-in hubs and switches" + }, + "sidebar": "someSidebar", + "previous": { + "title": "The NAT node", + "permalink": "/docs/using-gns3/advanced/the-nat-node" + }, + "next": { + "title": "Special IP addresses in GNS3", + "permalink": "/docs/using-gns3/advanced/special-ip-addresses" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-move-from-iouvm-gns-3-vm-md-079.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-move-from-iouvm-gns-3-vm-md-079.json new file mode 100644 index 00000000..c0ccd93a --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-move-from-iouvm-gns-3-vm-md-079.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/move-from-iouvm-gns3-vm", + "id": "using-gns3/advanced/move-from-iouvm-gns3-vm", + "title": "Move from IOUVM to GNS3 VM", + "description": "Starting with GNS3 v1.4, the IOUVM was deprecated in favor of the GNS3 VM.", + "source": "@site/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/move-from-iouvm-gns3-vm", + "permalink": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "move-from-iouvm-gns3-vm", + "title": "Move from IOUVM to GNS3 VM", + "sidebar_label": "Move from IOUVM to GNS3 VM" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Special IP addresses in GNS3", + "permalink": "/docs/using-gns3/advanced/special-ip-addresses" + }, + "next": { + "title": "Settings profiles", + "permalink": "/docs/using-gns3/advanced/settings-profiles" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-port-name-formatting-md-89f.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-port-name-formatting-md-89f.json new file mode 100644 index 00000000..b684eea1 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-port-name-formatting-md-89f.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/port-name-formatting", + "id": "using-gns3/advanced/port-name-formatting", + "title": "Port name formatting", + "description": "Some nodes (like QEMU VMs) will allow you to personalize the name of its ports, in order to match the name of the interfaces inside the emulator.", + "source": "@site/docs/using-gns3/advanced/port-name-formatting.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/port-name-formatting", + "permalink": "/docs/using-gns3/advanced/port-name-formatting", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/port-name-formatting.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "port-name-formatting", + "title": "Port name formatting", + "sidebar_label": "Port name formatting" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Create a new version for an appliance", + "permalink": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance" + }, + "next": { + "title": "Configuration transfer to QEMU VMs", + "permalink": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-settings-profiles-md-0ba.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-settings-profiles-md-0ba.json new file mode 100644 index 00000000..a4accf38 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-settings-profiles-md-0ba.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/settings-profiles", + "id": "using-gns3/advanced/settings-profiles", + "title": "Settings profiles", + "description": "This documentation is only for GNS3 2.0 and later", + "source": "@site/docs/using-gns3/advanced/settings-profiles.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/settings-profiles", + "permalink": "/docs/using-gns3/advanced/settings-profiles", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/settings-profiles.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "settings-profiles", + "title": "Settings profiles", + "sidebar_label": "Settings profiles" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Move from IOUVM to GNS3 VM", + "permalink": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm" + }, + "next": { + "title": "Create a new version for an appliance", + "permalink": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-special-ip-addresses-md-76e.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-special-ip-addresses-md-76e.json new file mode 100644 index 00000000..6808dd88 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-special-ip-addresses-md-76e.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/special-ip-addresses", + "id": "using-gns3/advanced/special-ip-addresses", + "title": "Special IP addresses in GNS3", + "description": "GNS3 uses several RFC1918 private IP ranges by default. If possible we recommend to avoid using them in your topology in order to limit conflicts.", + "source": "@site/docs/using-gns3/advanced/special-ip-addresses.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/special-ip-addresses", + "permalink": "/docs/using-gns3/advanced/special-ip-addresses", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/special-ip-addresses.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "special-ip-addresses", + "title": "Special IP addresses in GNS3", + "sidebar_label": "Special IP addresses in GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Built-in hubs and switches", + "permalink": "/docs/using-gns3/advanced/hubs-and-switches" + }, + "next": { + "title": "Move from IOUVM to GNS3 VM", + "permalink": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-the-nat-node-md-c1b.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-the-nat-node-md-c1b.json new file mode 100644 index 00000000..24d3e527 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-advanced-the-nat-node-md-c1b.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/advanced/the-nat-node", + "id": "using-gns3/advanced/the-nat-node", + "title": "The NAT node", + "description": "Starting with GNS3 2.0, the NAT node became available. This node allows you to connect a topology to internet via NAT. The Internet node was deprecated in favor of this node, and the Cloud node.", + "source": "@site/docs/using-gns3/advanced/the-nat-node.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/the-nat-node", + "permalink": "/docs/using-gns3/advanced/the-nat-node", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/the-nat-node.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "the-nat-node", + "title": "The NAT node", + "sidebar_label": "The NAT node" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Connect GNS3 to the Internet", + "permalink": "/docs/using-gns3/advanced/connect-gns3-internet" + }, + "next": { + "title": "Built-in hubs and switches", + "permalink": "/docs/using-gns3/advanced/hubs-and-switches" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-change-node-symbol-md-a0f.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-change-node-symbol-md-a0f.json new file mode 100644 index 00000000..310ebf48 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-change-node-symbol-md-a0f.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/change-node-symbol", + "id": "using-gns3/beginners/change-node-symbol", + "title": "Use custom symbols in GNS3", + "description": "Beginning with GNS3 1.4 you have been able to change the symbol for a node (or supply your own). Starting with GNS3 2.2.0, additional style types of symbols for the various device types are included by default. You can still add your own custom symbols if you wish (that hasn’t changed).", + "source": "@site/docs/using-gns3/beginners/change-node-symbol.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/change-node-symbol", + "permalink": "/docs/using-gns3/beginners/change-node-symbol", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/change-node-symbol.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "change-node-symbol", + "title": "Use custom symbols in GNS3", + "sidebar_label": "Change node symbol" + }, + "sidebar": "someSidebar", + "previous": { + "title": "The GNS3 GUI", + "permalink": "/docs/using-gns3/beginners/the-gns3-gui" + }, + "next": { + "title": "GNS3 Styles", + "permalink": "/docs/using-gns3/beginners/gns3-styles" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-gns-3-styles-md-087.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-gns-3-styles-md-087.json new file mode 100644 index 00000000..7eb17d9d --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-gns-3-styles-md-087.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/gns3-styles", + "id": "using-gns3/beginners/gns3-styles", + "title": "GNS3 Styles", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/gns3-styles.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/gns3-styles", + "permalink": "/docs/using-gns3/beginners/gns3-styles", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/gns3-styles.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-styles", + "title": "GNS3 Styles", + "sidebar_label": "GNS3 Styles" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Change node symbol", + "permalink": "/docs/using-gns3/beginners/change-node-symbol" + }, + "next": { + "title": "Switching and GNS3", + "permalink": "/docs/using-gns3/beginners/switching-and-gns3" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-import-gns-3-appliance-md-aa1.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-import-gns-3-appliance-md-aa1.json new file mode 100644 index 00000000..dc5c48bd --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-import-gns-3-appliance-md-aa1.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/import-gns3-appliance", + "id": "using-gns3/beginners/import-gns3-appliance", + "title": "Import GNS3 appliance", + "description": "This document assumes that you already have both the GNS3 Graphical User Interface installed (GNS3-all-in-one) and the GNS3 VM integrated with GNS3. Please refer to other guides for more details on how to install the GNS3 all-in-one package and how to download and configure the GNS3 VM.", + "source": "@site/docs/using-gns3/beginners/import-gns3-appliance.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/import-gns3-appliance", + "permalink": "/docs/using-gns3/beginners/import-gns3-appliance", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/import-gns3-appliance.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "import-gns3-appliance", + "title": "Import GNS3 appliance", + "sidebar_label": "Import GNS3 appliance" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Install an appliance from the GNS3 Marketplace", + "permalink": "/docs/using-gns3/beginners/install-from-marketplace" + }, + "next": { + "title": "Link Control", + "permalink": "/docs/using-gns3/beginners/link-control" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-install-from-marketplace-md-7bf.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-install-from-marketplace-md-7bf.json new file mode 100644 index 00000000..f851cfd4 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-install-from-marketplace-md-7bf.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/install-from-marketplace", + "id": "using-gns3/beginners/install-from-marketplace", + "title": "Install an appliance from the GNS3 Marketplace", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/install-from-marketplace.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/install-from-marketplace", + "permalink": "/docs/using-gns3/beginners/install-from-marketplace", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/install-from-marketplace.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "install-from-marketplace", + "title": "Install an appliance from the GNS3 Marketplace", + "sidebar_label": "Install an appliance from the GNS3 Marketplace" + }, + "sidebar": "someSidebar", + "previous": { + "title": "The console terminal", + "permalink": "/docs/using-gns3/beginners/the-console-terminal" + }, + "next": { + "title": "Import GNS3 appliance", + "permalink": "/docs/using-gns3/beginners/import-gns3-appliance" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-link-control-md-63f.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-link-control-md-63f.json new file mode 100644 index 00000000..c4ca7bbf --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-link-control-md-63f.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/link-control", + "id": "using-gns3/beginners/link-control", + "title": "Link Control", + "description": "available in GNS3 version 2.1 and later.", + "source": "@site/docs/using-gns3/beginners/link-control.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/link-control", + "permalink": "/docs/using-gns3/beginners/link-control", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/link-control.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "link-control", + "title": "Link Control", + "sidebar_label": "Link Control" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Import GNS3 appliance", + "permalink": "/docs/using-gns3/beginners/import-gns3-appliance" + }, + "next": { + "title": "Connect GNS3 to the Internet", + "permalink": "/docs/using-gns3/advanced/connect-gns3-internet" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-switching-and-gns-3-md-84f.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-switching-and-gns-3-md-84f.json new file mode 100644 index 00000000..bb8856d0 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-switching-and-gns-3-md-84f.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/switching-and-gns3", + "id": "using-gns3/beginners/switching-and-gns3", + "title": "Switching and GNS3", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/switching-and-gns3.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/switching-and-gns3", + "permalink": "/docs/using-gns3/beginners/switching-and-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/switching-and-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "switching-and-gns3", + "title": "Switching and GNS3", + "sidebar_label": "Switching and GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 Styles", + "permalink": "/docs/using-gns3/beginners/gns3-styles" + }, + "next": { + "title": "The console terminal", + "permalink": "/docs/using-gns3/beginners/the-console-terminal" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-console-terminal-md-fc5.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-console-terminal-md-fc5.json new file mode 100644 index 00000000..1bfd108d --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-console-terminal-md-fc5.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/the-console-terminal", + "id": "using-gns3/beginners/the-console-terminal", + "title": "The console terminal", + "description": "GNS3 uses Solar-PuTTY as the default console terminal in Windows* (see note), and will attempt to use the default system terminal in other operating systems (gnome-terminal, for example, in vanilla Ubuntu).", + "source": "@site/docs/using-gns3/beginners/the-console-terminal.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/the-console-terminal", + "permalink": "/docs/using-gns3/beginners/the-console-terminal", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/the-console-terminal.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "the-console-terminal", + "title": "The console terminal", + "sidebar_label": "The console terminal" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Switching and GNS3", + "permalink": "/docs/using-gns3/beginners/switching-and-gns3" + }, + "next": { + "title": "Install an appliance from the GNS3 Marketplace", + "permalink": "/docs/using-gns3/beginners/install-from-marketplace" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-gns-3-gui-md-5c6.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-gns-3-gui-md-5c6.json new file mode 100644 index 00000000..4d3f1f2d --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-beginners-the-gns-3-gui-md-5c6.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/beginners/the-gns3-gui", + "id": "using-gns3/beginners/the-gns3-gui", + "title": "The GNS3 GUI", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/the-gns3-gui.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/the-gns3-gui", + "permalink": "/docs/using-gns3/beginners/the-gns3-gui", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/the-gns3-gui.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "the-gns3-gui", + "title": "The GNS3 GUI", + "sidebar_label": "The GNS3 GUI" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Your first Cisco topology", + "permalink": "/docs/getting-started/your-first-cisco-topology" + }, + "next": { + "title": "Change node symbol", + "permalink": "/docs/using-gns3/beginners/change-node-symbol" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-architecture-md-9bd.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-architecture-md-9bd.json new file mode 100644 index 00000000..ce5a036b --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-architecture-md-9bd.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/design/architecture", + "id": "using-gns3/design/architecture", + "title": "Architecture", + "description": "GNS3 can be divided in four parts:", + "source": "@site/docs/using-gns3/design/architecture.md", + "sourceDirName": "using-gns3/design", + "slug": "/using-gns3/design/architecture", + "permalink": "/docs/using-gns3/design/architecture", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/design/architecture.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "architecture", + "title": "Architecture", + "sidebar_label": "Architecture" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Scale GNS3", + "permalink": "/docs/using-gns3/administration/scale-gns3" + }, + "next": { + "title": "Why does GNS3 use UUIDs?", + "permalink": "/docs/using-gns3/design/why-gns3-uses-uuid" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-why-gns-3-uses-uuid-md-48d.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-why-gns-3-uses-uuid-md-48d.json new file mode 100644 index 00000000..130caf2a --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-using-gns-3-design-why-gns-3-uses-uuid-md-48d.json @@ -0,0 +1,28 @@ +{ + "unversionedId": "using-gns3/design/why-gns3-uses-uuid", + "id": "using-gns3/design/why-gns3-uses-uuid", + "title": "Why does GNS3 use UUIDs?", + "description": "A commonly asked question about GNS3, is why I can’t easily find the files of a node or project names on disk. It’s due to the usage of UUIDs in folder naming.", + "source": "@site/docs/using-gns3/design/why-gns3-uses-uuid.md", + "sourceDirName": "using-gns3/design", + "slug": "/using-gns3/design/why-gns3-uses-uuid", + "permalink": "/docs/using-gns3/design/why-gns3-uses-uuid", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/design/why-gns3-uses-uuid.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "why-gns3-uses-uuid", + "title": "Why does GNS3 use UUIDs?", + "sidebar_label": "Why does GNS3 use UUIDs?" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Architecture", + "permalink": "/docs/using-gns3/design/architecture" + }, + "next": { + "title": "Which emulator should I use?", + "permalink": "/docs/emulators/which-emulators-should-i-use" + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json b/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json new file mode 100644 index 00000000..7a9a8a00 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json @@ -0,0 +1,808 @@ +{ + "pluginId": "default", + "version": "current", + "label": "Next", + "banner": null, + "badge": false, + "noIndex": false, + "className": "docs-version-current", + "isLast": true, + "docsSidebars": { + "someSidebar": [ + { + "type": "category", + "label": "Getting Started", + "items": [ + { + "type": "link", + "label": "What is GNS3?", + "href": "/docs/", + "docId": "getting-started/what-is-gns3" + }, + { + "type": "category", + "label": "Installation", + "items": [ + { + "type": "link", + "label": "Windows", + "href": "/docs/getting-started/installation/windows", + "docId": "getting-started/installation/windows" + }, + { + "type": "link", + "label": "Mac", + "href": "/docs/getting-started/installation/mac", + "docId": "getting-started/installation/mac" + }, + { + "type": "link", + "label": "Linux", + "href": "/docs/getting-started/installation/linux", + "docId": "getting-started/installation/linux" + }, + { + "type": "link", + "label": "ESXi", + "href": "/docs/getting-started/installation/esxi", + "docId": "getting-started/installation/esxi" + }, + { + "type": "link", + "label": "Remote Server", + "href": "/docs/getting-started/installation/remote-server", + "docId": "getting-started/installation/remote-server" + }, + { + "type": "link", + "label": "Download the GNS3 VM", + "href": "/docs/getting-started/installation/download-gns3-vm", + "docId": "getting-started/installation/download-gns3-vm" + }, + { + "type": "link", + "label": "Download for Windows 32-bit", + "href": "/docs/getting-started/installation/download-32-bit", + "docId": "getting-started/installation/download-32-bit" + }, + { + "type": "link", + "label": "One GNS3 server, multiple clients", + "href": "/docs/getting-started/installation/one-server-multiple-clients", + "docId": "getting-started/installation/one-server-multiple-clients" + }, + { + "type": "link", + "label": "Upgrade GNS3", + "href": "/docs/getting-started/installation/upgrade-gns3", + "docId": "getting-started/installation/upgrade-gns3" + }, + { + "type": "link", + "label": "GNS3 on Equinix", + "href": "/docs/getting-started/installation/gns3-on-equinix", + "docId": "getting-started/installation/gns3-on-equinix" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "link", + "label": "Setup wizard for local server", + "href": "/docs/getting-started/setup-wizard-local-server", + "docId": "getting-started/setup-wizard-local-server" + }, + { + "type": "link", + "label": "Setup wizard for GNS3 VM", + "href": "/docs/getting-started/setup-wizard-gns3-vm", + "docId": "getting-started/setup-wizard-gns3-vm" + }, + { + "type": "link", + "label": "Your first GNS3 topology", + "href": "/docs/getting-started/your-first-gns3-topology", + "docId": "getting-started/your-first-gns3-topology" + }, + { + "type": "link", + "label": "Your first Cisco topology", + "href": "/docs/getting-started/your-first-cisco-topology", + "docId": "getting-started/your-first-cisco-topology" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Using GNS3", + "items": [ + { + "type": "category", + "label": "Beginners", + "items": [ + { + "type": "link", + "label": "The GNS3 GUI", + "href": "/docs/using-gns3/beginners/the-gns3-gui", + "docId": "using-gns3/beginners/the-gns3-gui" + }, + { + "type": "link", + "label": "Change node symbol", + "href": "/docs/using-gns3/beginners/change-node-symbol", + "docId": "using-gns3/beginners/change-node-symbol" + }, + { + "type": "link", + "label": "GNS3 Styles", + "href": "/docs/using-gns3/beginners/gns3-styles", + "docId": "using-gns3/beginners/gns3-styles" + }, + { + "type": "link", + "label": "Switching and GNS3", + "href": "/docs/using-gns3/beginners/switching-and-gns3", + "docId": "using-gns3/beginners/switching-and-gns3" + }, + { + "type": "link", + "label": "The console terminal", + "href": "/docs/using-gns3/beginners/the-console-terminal", + "docId": "using-gns3/beginners/the-console-terminal" + }, + { + "type": "link", + "label": "Install an appliance from the GNS3 Marketplace", + "href": "/docs/using-gns3/beginners/install-from-marketplace", + "docId": "using-gns3/beginners/install-from-marketplace" + }, + { + "type": "link", + "label": "Import GNS3 appliance", + "href": "/docs/using-gns3/beginners/import-gns3-appliance", + "docId": "using-gns3/beginners/import-gns3-appliance" + }, + { + "type": "link", + "label": "Link Control", + "href": "/docs/using-gns3/beginners/link-control", + "docId": "using-gns3/beginners/link-control" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Advanced", + "items": [ + { + "type": "link", + "label": "Connect GNS3 to the Internet", + "href": "/docs/using-gns3/advanced/connect-gns3-internet", + "docId": "using-gns3/advanced/connect-gns3-internet" + }, + { + "type": "link", + "label": "The NAT node", + "href": "/docs/using-gns3/advanced/the-nat-node", + "docId": "using-gns3/advanced/the-nat-node" + }, + { + "type": "link", + "label": "Built-in hubs and switches", + "href": "/docs/using-gns3/advanced/hubs-and-switches", + "docId": "using-gns3/advanced/hubs-and-switches" + }, + { + "type": "link", + "label": "Special IP addresses in GNS3", + "href": "/docs/using-gns3/advanced/special-ip-addresses", + "docId": "using-gns3/advanced/special-ip-addresses" + }, + { + "type": "link", + "label": "Move from IOUVM to GNS3 VM", + "href": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm", + "docId": "using-gns3/advanced/move-from-iouvm-gns3-vm" + }, + { + "type": "link", + "label": "Settings profiles", + "href": "/docs/using-gns3/advanced/settings-profiles", + "docId": "using-gns3/advanced/settings-profiles" + }, + { + "type": "link", + "label": "Create a new version for an appliance", + "href": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance", + "docId": "using-gns3/advanced/create-a-new-version-for-an-appliance" + }, + { + "type": "link", + "label": "Port name formatting", + "href": "/docs/using-gns3/advanced/port-name-formatting", + "docId": "using-gns3/advanced/port-name-formatting" + }, + { + "type": "link", + "label": "Configuration transfer to QEMU VMs", + "href": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms", + "docId": "using-gns3/advanced/configuration-transfer-qemu-vms" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "GNS3 Administration", + "items": [ + { + "type": "link", + "label": "GNS3 server configuration file", + "href": "/docs/using-gns3/administration/gns3-server-configuration-file", + "docId": "using-gns3/administration/gns3-server-configuration-file" + }, + { + "type": "link", + "label": "Running the GNS3 server as a daemon", + "href": "/docs/using-gns3/administration/running-gns3-server-as-daemon", + "docId": "using-gns3/administration/running-gns3-server-as-daemon" + }, + { + "type": "link", + "label": "GNS3 Security", + "href": "/docs/using-gns3/administration/gns3-security", + "docId": "using-gns3/administration/gns3-security" + }, + { + "type": "link", + "label": "Client server SSL encryption", + "href": "/docs/using-gns3/administration/client-server-ssl-encryption", + "docId": "using-gns3/administration/client-server-ssl-encryption" + }, + { + "type": "link", + "label": "Scale GNS3", + "href": "/docs/using-gns3/administration/scale-gns3", + "docId": "using-gns3/administration/scale-gns3" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "GNS3 Design", + "items": [ + { + "type": "link", + "label": "Architecture", + "href": "/docs/using-gns3/design/architecture", + "docId": "using-gns3/design/architecture" + }, + { + "type": "link", + "label": "Why does GNS3 use UUIDs?", + "href": "/docs/using-gns3/design/why-gns3-uses-uuid", + "docId": "using-gns3/design/why-gns3-uses-uuid" + } + ], + "collapsed": true, + "collapsible": true + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Emulators", + "items": [ + { + "type": "link", + "label": "Which emulator should I use?", + "href": "/docs/emulators/which-emulators-should-i-use", + "docId": "emulators/which-emulators-should-i-use" + }, + { + "type": "link", + "label": "Cisco IOS images for Dynamips", + "href": "/docs/emulators/cisco-ios-images-for-dynamips", + "docId": "emulators/cisco-ios-images-for-dynamips" + }, + { + "type": "link", + "label": "Non-Native IOU for Windows and OSX", + "href": "/docs/emulators/non-native-iou-for-windows-and-osx", + "docId": "emulators/non-native-iou-for-windows-and-osx" + }, + { + "type": "link", + "label": "Adding VMware VMs to GNS3 Topologies", + "href": "/docs/emulators/adding-vmware-vms-to-gns3-topologies", + "docId": "emulators/adding-vmware-vms-to-gns3-topologies" + }, + { + "type": "link", + "label": "Docker support in GNS3", + "href": "/docs/emulators/docker-support-in-gns3", + "docId": "emulators/docker-support-in-gns3" + }, + { + "type": "link", + "label": "Create a docker container for GNS3", + "href": "/docs/emulators/create-a-docker-container-for-gns3", + "docId": "emulators/create-a-docker-container-for-gns3" + }, + { + "type": "link", + "label": "VPCS", + "href": "/docs/emulators/vpcs", + "docId": "emulators/vpcs" + }, + { + "type": "link", + "label": "Qemu system UUID", + "href": "/docs/emulators/qemu-system-uuid", + "docId": "emulators/qemu-system-uuid" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Contribute", + "items": [ + { + "type": "link", + "label": "Contribute to GNS3", + "href": "/docs/contribute/contribute-to-gns3", + "docId": "contribute/contribute-to-gns3" + }, + { + "type": "link", + "label": "Development of GNS3", + "href": "/docs/contribute/development-of-gns3", + "docId": "contribute/development-of-gns3" + }, + { + "type": "link", + "label": "How to debug Web UI Guide", + "href": "/docs/contribute/how-to-debug-web-ui-guide", + "docId": "contribute/how-to-debug-web-ui-guide" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "How-to Guides", + "items": [ + { + "type": "link", + "label": "Cisco ASA", + "href": "/docs/how-to-guides/cisco-asa", + "docId": "how-to-guides/cisco-asa" + }, + { + "type": "link", + "label": "Importing vMX and vQFX into GNS3", + "href": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3", + "docId": "how-to-guides/importing-vmx-and-vqfx-into-gns3" + }, + { + "type": "link", + "label": "How to use applications with the GNS3 Web interface", + "href": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui", + "docId": "how-to-guides/how-to-use-console-applications-with-the-web-ui" + }, + { + "type": "link", + "label": "Configure GNS3 to use an additional remote server", + "href": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "docId": "how-to-guides/configure-gns3-to-use-an-additional-remote-server" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Troubleshooting & FAQ", + "items": [ + { + "type": "link", + "label": "Troubleshoot GNS3", + "href": "/docs/troubleshooting-faq/troubleshoot-gns3", + "docId": "troubleshooting-faq/troubleshoot-gns3" + }, + { + "type": "link", + "label": "General FAQ", + "href": "/docs/troubleshooting-faq/general-faq", + "docId": "troubleshooting-faq/general-faq" + }, + { + "type": "link", + "label": "Where do I get IOS images?", + "href": "/docs/troubleshooting-faq/where-do-i-get-ios-images", + "docId": "troubleshooting-faq/where-do-i-get-ios-images" + } + ], + "collapsed": true, + "collapsible": true + } + ] + }, + "docs": { + "contribute/contribute-to-gns3": { + "id": "contribute/contribute-to-gns3", + "title": "Contribute to GNS3", + "description": "The GNS3 community welcomes new contributors. Don’t be afraid to make mistakes - we are here to help.", + "sidebar": "someSidebar" + }, + "contribute/development-of-gns3": { + "id": "contribute/development-of-gns3", + "title": "Development of GNS3", + "description": "Using the GNS3 API", + "sidebar": "someSidebar" + }, + "contribute/how-to-debug-web-ui-guide": { + "id": "contribute/how-to-debug-web-ui-guide", + "title": "How to debug Web UI Guide", + "description": "Using the GNS3 API", + "sidebar": "someSidebar" + }, + "docusaurus-reference/doc1": { + "id": "docusaurus-reference/doc1", + "title": "Style Guide", + "description": "You can write content using GitHub-flavored Markdown syntax." + }, + "docusaurus-reference/doc2": { + "id": "docusaurus-reference/doc2", + "title": "Document Number 2", + "description": "This is a link to another document. This is a link to an external page." + }, + "docusaurus-reference/doc3": { + "id": "docusaurus-reference/doc3", + "title": "This is Document Number 3", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit." + }, + "docusaurus-reference/mdx": { + "id": "docusaurus-reference/mdx", + "title": "Powered by MDX", + "description": "You can write JSX and use React components within your Markdown thanks to MDX." + }, + "emulators/adding-vmware-vms-to-gns3-topologies": { + "id": "emulators/adding-vmware-vms-to-gns3-topologies", + "title": "Adding VMware VMs to GNS3 Topologies", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "emulators/cisco-ios-images-for-dynamips": { + "id": "emulators/cisco-ios-images-for-dynamips", + "title": "Cisco IOS images for Dynamips", + "description": "GNS3 offers multiple ways to emulate IOS. For older images, we use and maintain Dynamips; an emulator dedicated to emulate some Cisco hardware. Dynamips can run unmodified IOS images. In the new GNS3 1.4, there is a way to run a second category of switches and routers. These are classified as Routing and Switching virtual machines (or R+Svms) for short. What are the differences? Here are the major differences:", + "sidebar": "someSidebar" + }, + "emulators/create-a-docker-container-for-gns3": { + "id": "emulators/create-a-docker-container-for-gns3", + "title": "Create a docker container for GNS3", + "description": "This tutorial is for users who never used Docker, and would like to create a Docker container for GNS3.", + "sidebar": "someSidebar" + }, + "emulators/docker-support-in-gns3": { + "id": "emulators/docker-support-in-gns3", + "title": "Docker support in GNS3", + "description": "Docker container support was added as a feature starting with GNS3 1.5. Work on this feature was started by Goran Cetusic during the Google Summer Of Code and finished by the GNS3 core team.", + "sidebar": "someSidebar" + }, + "emulators/non-native-iou-for-windows-and-osx": { + "id": "emulators/non-native-iou-for-windows-and-osx", + "title": "Non-Native IOU for Windows and OSX", + "description": "IOU is IOS on Unix (Solaris, if you want to be specific). It's a version of IOS compiled to run on workstations. It's faster and lighter than emulation. Cisco transitioned to IOL images, which are x86-64 compatible versions of IOS that natively run in Linux. Since everyone and their kid brother still refers to IOL images as “IOU”, that convention is used for the remainder of this document.", + "sidebar": "someSidebar" + }, + "emulators/qemu-system-uuid": { + "id": "emulators/qemu-system-uuid", + "title": "Qemu system UUID", + "description": "Like any real computer, Qemu attributes a UUID to the system. This is stored in the SMBIOS:", + "sidebar": "someSidebar" + }, + "emulators/vpcs": { + "id": "emulators/vpcs", + "title": "VPCS", + "description": "Virtual PC Simulator is a program written by Paul Meng, which allows you to simulate a lightweight PC supporting DHCP and ping. It consumes only 2MB of RAM per instance, and does not require an additional image.", + "sidebar": "someSidebar" + }, + "emulators/which-emulators-should-i-use": { + "id": "emulators/which-emulators-should-i-use", + "title": "Which emulator should I use?", + "description": "GNS3 supports multiple emulators which you can use in your GNS3 projects. This gives you lots of flexibility when building topologies.", + "sidebar": "someSidebar" + }, + "getting-started/installation/download-32-bit": { + "id": "getting-started/installation/download-32-bit", + "title": "Download GNS3 for Windows 32 bit", + "description": "If you use a 32 bit version of Windows, you will need to use GNS3 1.3.13 (or older). 32 bit support was dropped starting with GNS3 1.4.", + "sidebar": "someSidebar" + }, + "getting-started/installation/download-gns3-vm": { + "id": "getting-started/installation/download-gns3-vm", + "title": "Downloading the GNS3 VM", + "description": "Which Virtualization Software? VirtualBox or VMware?", + "sidebar": "someSidebar" + }, + "getting-started/installation/esxi": { + "id": "getting-started/installation/esxi", + "title": "Install the GNS3 VM on ESXi", + "description": "VMware ESXi and VMware workstation are two totally different products. If you want instructions for VMware Workstation or VMware Fusion read this document.", + "sidebar": "someSidebar" + }, + "getting-started/installation/gns3-on-equinix": { + "id": "getting-started/installation/gns3-on-equinix", + "title": "GNS3 on equinix", + "description": "What is Equinix?", + "sidebar": "someSidebar" + }, + "getting-started/installation/linux": { + "id": "getting-started/installation/linux", + "title": "GNS3 Linux Install", + "description": "Ubuntu-based distributions (64-bit only)", + "sidebar": "someSidebar" + }, + "getting-started/installation/mac": { + "id": "getting-started/installation/mac", + "title": "GNS3 Mac Install", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "getting-started/installation/one-server-multiple-clients": { + "id": "getting-started/installation/one-server-multiple-clients", + "title": "One GNS3 server, multiple clients", + "description": "This documentation is only for GNS3 2.0 and later", + "sidebar": "someSidebar" + }, + "getting-started/installation/remote-server": { + "id": "getting-started/installation/remote-server", + "title": "Install GNS3 on a remote server", + "description": "If you need more resources for bigger topologies, you can install GNS3 on a remote server. This could be on:", + "sidebar": "someSidebar" + }, + "getting-started/installation/upgrade-gns3": { + "id": "getting-started/installation/upgrade-gns3", + "title": "Upgrade GNS3", + "description": "Upgrading the GNS3 Client", + "sidebar": "someSidebar" + }, + "getting-started/installation/windows": { + "id": "getting-started/installation/windows", + "title": "GNS3 Windows Install", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "getting-started/setup-wizard-gns3-vm": { + "id": "getting-started/setup-wizard-gns3-vm", + "title": "GNS3 Setup wizard with the GNS3 VM", + "description": "Which Virtualization Software? VirtualBox or VMware?", + "sidebar": "someSidebar" + }, + "getting-started/setup-wizard-local-server": { + "id": "getting-started/setup-wizard-local-server", + "title": "GNS3 Setup Wizard - Local server", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "getting-started/what-is-gns3": { + "id": "getting-started/what-is-gns3", + "title": "Getting Started with GNS3", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "getting-started/your-first-cisco-topology": { + "id": "getting-started/your-first-cisco-topology", + "title": "Your First Cisco Topology", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "getting-started/your-first-gns3-topology": { + "id": "getting-started/your-first-gns3-topology", + "title": "Your First GNS3 Topology", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "how-to-guides/cisco-asa": { + "id": "how-to-guides/cisco-asa", + "title": "Cisco ASA", + "description": "ASA 8", + "sidebar": "someSidebar" + }, + "how-to-guides/configure-gns3-to-use-an-additional-remote-server": { + "id": "how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "title": "Configure GNS3 to use an additional remote server", + "description": "Configure GNS3 to use an additional remote server", + "sidebar": "someSidebar" + }, + "how-to-guides/how-to-use-console-applications-with-the-web-ui": { + "id": "how-to-guides/how-to-use-console-applications-with-the-web-ui", + "title": "How to use applications with the GNS3 Web interface", + "description": "A web client pack must be installed on your operating system in order to launch local applications needed to work with the GNS3 Web interface. We currently support Telnet, VNC, SPICE and packet capture applications.", + "sidebar": "someSidebar" + }, + "how-to-guides/importing-vmx-and-vqfx-into-gns3": { + "id": "how-to-guides/importing-vmx-and-vqfx-into-gns3", + "title": "Importing vMX and vQFX into GNS3", + "description": "Important edit - see bottom of the document!", + "sidebar": "someSidebar" + }, + "troubleshooting-faq/general-faq": { + "id": "troubleshooting-faq/general-faq", + "title": "General FAQ", + "description": "IOU", + "sidebar": "someSidebar" + }, + "troubleshooting-faq/troubleshoot-gns3": { + "id": "troubleshooting-faq/troubleshoot-gns3", + "title": "Troubleshoot GNS3", + "description": "Installation Problems", + "sidebar": "someSidebar" + }, + "troubleshooting-faq/where-do-i-get-ios-images": { + "id": "troubleshooting-faq/where-do-i-get-ios-images", + "title": "Where do I get IOS images?", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/administration/client-server-ssl-encryption": { + "id": "using-gns3/administration/client-server-ssl-encryption", + "title": "Client server SSL encryption", + "description": "GNS3 supports secured network communications between the GNS3 GUI and GNS3 server using SSL. SSL mode is not supported for the GNS3 server on Windows but you can use it for clients. You will need a SSL certificate, if you don't have one, it is possible to generate a self signed certificate using this script (OpenSSL must be installed):", + "sidebar": "someSidebar" + }, + "using-gns3/administration/gns3-security": { + "id": "using-gns3/administration/gns3-security", + "title": "GNS3 Security", + "description": "Users of GNS3 need to bear in mind that it is a tool designed to be used for experimentation/learning, not for managing Virtual Machines or appliances in a production environment.", + "sidebar": "someSidebar" + }, + "using-gns3/administration/gns3-server-configuration-file": { + "id": "using-gns3/administration/gns3-server-configuration-file", + "title": "GNS3 server configuration file", + "description": "If you want to run the GNS3 server without the GUI, you can configure it with via an ini file.", + "sidebar": "someSidebar" + }, + "using-gns3/administration/running-gns3-server-as-daemon": { + "id": "using-gns3/administration/running-gns3-server-as-daemon", + "title": "Running the GNS3 server as a daemon", + "description": "You will find a sample init script for various systems inside the init directory of the gns3-server project//github.com/GNS3/gns3-server/tree/master/init", + "sidebar": "someSidebar" + }, + "using-gns3/administration/scale-gns3": { + "id": "using-gns3/administration/scale-gns3", + "title": "Scale GNS3", + "description": "GNS3 itself doesn’t have limitation on the number of nodes you can run into it. The limitation will be your hardware.", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/configuration-transfer-qemu-vms": { + "id": "using-gns3/advanced/configuration-transfer-qemu-vms", + "title": "Configuration transfer to QEMU VMs", + "description": "GNS3 v2.2.18 introduces a feature to transfer files,", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/connect-gns3-internet": { + "id": "using-gns3/advanced/connect-gns3-internet", + "title": "Connect GNS3 to the Internet (local server)", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/create-a-new-version-for-an-appliance": { + "id": "using-gns3/advanced/create-a-new-version-for-an-appliance", + "title": "Create a new version of an appliance", + "description": "Manufacturers release new versions of their appliances every day. The GNS3 community does not always know about these new releases and updates to the appliance file, but GNS3 allows you to use an unknown version of an appliance.", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/hubs-and-switches": { + "id": "using-gns3/advanced/hubs-and-switches", + "title": "GNS3's built-in Hub and Switch devices", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/move-from-iouvm-gns3-vm": { + "id": "using-gns3/advanced/move-from-iouvm-gns3-vm", + "title": "Move from IOUVM to GNS3 VM", + "description": "Starting with GNS3 v1.4, the IOUVM was deprecated in favor of the GNS3 VM.", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/port-name-formatting": { + "id": "using-gns3/advanced/port-name-formatting", + "title": "Port name formatting", + "description": "Some nodes (like QEMU VMs) will allow you to personalize the name of its ports, in order to match the name of the interfaces inside the emulator.", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/settings-profiles": { + "id": "using-gns3/advanced/settings-profiles", + "title": "Settings profiles", + "description": "This documentation is only for GNS3 2.0 and later", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/special-ip-addresses": { + "id": "using-gns3/advanced/special-ip-addresses", + "title": "Special IP addresses in GNS3", + "description": "GNS3 uses several RFC1918 private IP ranges by default. If possible we recommend to avoid using them in your topology in order to limit conflicts.", + "sidebar": "someSidebar" + }, + "using-gns3/advanced/the-nat-node": { + "id": "using-gns3/advanced/the-nat-node", + "title": "The NAT node", + "description": "Starting with GNS3 2.0, the NAT node became available. This node allows you to connect a topology to internet via NAT. The Internet node was deprecated in favor of this node, and the Cloud node.", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/change-node-symbol": { + "id": "using-gns3/beginners/change-node-symbol", + "title": "Use custom symbols in GNS3", + "description": "Beginning with GNS3 1.4 you have been able to change the symbol for a node (or supply your own). Starting with GNS3 2.2.0, additional style types of symbols for the various device types are included by default. You can still add your own custom symbols if you wish (that hasn’t changed).", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/gns3-styles": { + "id": "using-gns3/beginners/gns3-styles", + "title": "GNS3 Styles", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/import-gns3-appliance": { + "id": "using-gns3/beginners/import-gns3-appliance", + "title": "Import GNS3 appliance", + "description": "This document assumes that you already have both the GNS3 Graphical User Interface installed (GNS3-all-in-one) and the GNS3 VM integrated with GNS3. Please refer to other guides for more details on how to install the GNS3 all-in-one package and how to download and configure the GNS3 VM.", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/install-from-marketplace": { + "id": "using-gns3/beginners/install-from-marketplace", + "title": "Install an appliance from the GNS3 Marketplace", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/link-control": { + "id": "using-gns3/beginners/link-control", + "title": "Link Control", + "description": "available in GNS3 version 2.1 and later.", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/switching-and-gns3": { + "id": "using-gns3/beginners/switching-and-gns3", + "title": "Switching and GNS3", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/the-console-terminal": { + "id": "using-gns3/beginners/the-console-terminal", + "title": "The console terminal", + "description": "GNS3 uses Solar-PuTTY as the default console terminal in Windows* (see note), and will attempt to use the default system terminal in other operating systems (gnome-terminal, for example, in vanilla Ubuntu).", + "sidebar": "someSidebar" + }, + "using-gns3/beginners/the-gns3-gui": { + "id": "using-gns3/beginners/the-gns3-gui", + "title": "The GNS3 GUI", + "description": "Introduction", + "sidebar": "someSidebar" + }, + "using-gns3/design/architecture": { + "id": "using-gns3/design/architecture", + "title": "Architecture", + "description": "GNS3 can be divided in four parts:", + "sidebar": "someSidebar" + }, + "using-gns3/design/why-gns3-uses-uuid": { + "id": "using-gns3/design/why-gns3-uses-uuid", + "title": "Why does GNS3 use UUIDs?", + "description": "A commonly asked question about GNS3, is why I can’t easily find the files of a node or project names on disk. It’s due to the usage of UUIDs in folder naming.", + "sidebar": "someSidebar" + } + } +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json b/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json new file mode 100644 index 00000000..b141f718 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json @@ -0,0 +1,4 @@ +{ + "name": "docusaurus-plugin-content-pages", + "id": "default" +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json b/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json new file mode 100644 index 00000000..0c92bafb --- /dev/null +++ b/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json @@ -0,0 +1,2035 @@ +{ + "docusaurus-plugin-content-docs": { + "default": { + "loadedVersions": [ + { + "versionName": "current", + "label": "Next", + "banner": null, + "badge": false, + "noIndex": false, + "className": "docs-version-current", + "path": "/docs", + "tagsPath": "/docs/tags", + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs", + "editUrlLocalized": "https://github.com/mother/gns3-docs/blob/master/i18n/en/docusaurus-plugin-content-docs/current", + "isLast": true, + "routePriority": -1, + "sidebarFilePath": "/Users/stevenyuen/Sites/gns3-docs/sidebars.js", + "contentPath": "/Users/stevenyuen/Sites/gns3-docs/docs", + "contentPathLocalized": "/Users/stevenyuen/Sites/gns3-docs/i18n/en/docusaurus-plugin-content-docs/current", + "docs": [ + { + "unversionedId": "contribute/contribute-to-gns3", + "id": "contribute/contribute-to-gns3", + "title": "Contribute to GNS3", + "description": "The GNS3 community welcomes new contributors. Don’t be afraid to make mistakes - we are here to help.", + "source": "@site/docs/contribute/contribute-to-gns3.md", + "sourceDirName": "contribute", + "slug": "/contribute/contribute-to-gns3", + "permalink": "/docs/contribute/contribute-to-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/contribute/contribute-to-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "contribute-to-gns3", + "title": "Contribute to GNS3", + "sidebar_label": "Contribute to GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Qemu system UUID", + "permalink": "/docs/emulators/qemu-system-uuid" + }, + "next": { + "title": "Development of GNS3", + "permalink": "/docs/contribute/development-of-gns3" + } + }, + { + "unversionedId": "contribute/development-of-gns3", + "id": "contribute/development-of-gns3", + "title": "Development of GNS3", + "description": "Using the GNS3 API", + "source": "@site/docs/contribute/development-of-gns3.md", + "sourceDirName": "contribute", + "slug": "/contribute/development-of-gns3", + "permalink": "/docs/contribute/development-of-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/contribute/development-of-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "development-of-gns3", + "title": "Development of GNS3", + "sidebar_label": "Development of GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Contribute to GNS3", + "permalink": "/docs/contribute/contribute-to-gns3" + }, + "next": { + "title": "How to debug Web UI Guide", + "permalink": "/docs/contribute/how-to-debug-web-ui-guide" + } + }, + { + "unversionedId": "contribute/how-to-debug-web-ui-guide", + "id": "contribute/how-to-debug-web-ui-guide", + "title": "How to debug Web UI Guide", + "description": "Using the GNS3 API", + "source": "@site/docs/contribute/how-to-debug-web-ui-guide.md", + "sourceDirName": "contribute", + "slug": "/contribute/how-to-debug-web-ui-guide", + "permalink": "/docs/contribute/how-to-debug-web-ui-guide", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/contribute/how-to-debug-web-ui-guide.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "how-to-debug-web-ui-guide", + "title": "How to debug Web UI Guide", + "sidebar_label": "How to debug Web UI Guide" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Development of GNS3", + "permalink": "/docs/contribute/development-of-gns3" + }, + "next": { + "title": "Cisco ASA", + "permalink": "/docs/how-to-guides/cisco-asa" + } + }, + { + "unversionedId": "docusaurus-reference/doc1", + "id": "docusaurus-reference/doc1", + "title": "Style Guide", + "description": "You can write content using GitHub-flavored Markdown syntax.", + "source": "@site/docs/docusaurus-reference/doc1.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/doc1", + "permalink": "/docs/docusaurus-reference/doc1", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc1.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "doc1", + "title": "Style Guide", + "sidebar_label": "Style Guide" + } + }, + { + "unversionedId": "docusaurus-reference/doc2", + "id": "docusaurus-reference/doc2", + "title": "Document Number 2", + "description": "This is a link to another document. This is a link to an external page.", + "source": "@site/docs/docusaurus-reference/doc2.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/doc2", + "permalink": "/docs/docusaurus-reference/doc2", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc2.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "doc2", + "title": "Document Number 2" + } + }, + { + "unversionedId": "docusaurus-reference/doc3", + "id": "docusaurus-reference/doc3", + "title": "This is Document Number 3", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + "source": "@site/docs/docusaurus-reference/doc3.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/doc3", + "permalink": "/docs/docusaurus-reference/doc3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "doc3", + "title": "This is Document Number 3" + } + }, + { + "unversionedId": "docusaurus-reference/mdx", + "id": "docusaurus-reference/mdx", + "title": "Powered by MDX", + "description": "You can write JSX and use React components within your Markdown thanks to MDX.", + "source": "@site/docs/docusaurus-reference/mdx.md", + "sourceDirName": "docusaurus-reference", + "slug": "/docusaurus-reference/mdx", + "permalink": "/docs/docusaurus-reference/mdx", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/mdx.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "mdx", + "title": "Powered by MDX" + } + }, + { + "unversionedId": "emulators/adding-vmware-vms-to-gns3-topologies", + "id": "emulators/adding-vmware-vms-to-gns3-topologies", + "title": "Adding VMware VMs to GNS3 Topologies", + "description": "Introduction", + "source": "@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md", + "sourceDirName": "emulators", + "slug": "/emulators/adding-vmware-vms-to-gns3-topologies", + "permalink": "/docs/emulators/adding-vmware-vms-to-gns3-topologies", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/adding-vmware-vms-to-gns3-topologies.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "adding-vmware-vms-to-gns3-topologies", + "title": "Adding VMware VMs to GNS3 Topologies", + "sidebar_label": "Adding VMware VMs to GNS3 Topologies" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Non-Native IOU for Windows and OSX", + "permalink": "/docs/emulators/non-native-iou-for-windows-and-osx" + }, + "next": { + "title": "Docker support in GNS3", + "permalink": "/docs/emulators/docker-support-in-gns3" + } + }, + { + "unversionedId": "emulators/cisco-ios-images-for-dynamips", + "id": "emulators/cisco-ios-images-for-dynamips", + "title": "Cisco IOS images for Dynamips", + "description": "GNS3 offers multiple ways to emulate IOS. For older images, we use and maintain Dynamips; an emulator dedicated to emulate some Cisco hardware. Dynamips can run unmodified IOS images. In the new GNS3 1.4, there is a way to run a second category of switches and routers. These are classified as Routing and Switching virtual machines (or R+Svms) for short. What are the differences? Here are the major differences:", + "source": "@site/docs/emulators/cisco-ios-images-for-dynamips.md", + "sourceDirName": "emulators", + "slug": "/emulators/cisco-ios-images-for-dynamips", + "permalink": "/docs/emulators/cisco-ios-images-for-dynamips", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/cisco-ios-images-for-dynamips.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "cisco-ios-images-for-dynamips", + "title": "Cisco IOS images for Dynamips", + "sidebar_label": "Cisco IOS images for Dynamips" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Which emulator should I use?", + "permalink": "/docs/emulators/which-emulators-should-i-use" + }, + "next": { + "title": "Non-Native IOU for Windows and OSX", + "permalink": "/docs/emulators/non-native-iou-for-windows-and-osx" + } + }, + { + "unversionedId": "emulators/create-a-docker-container-for-gns3", + "id": "emulators/create-a-docker-container-for-gns3", + "title": "Create a docker container for GNS3", + "description": "This tutorial is for users who never used Docker, and would like to create a Docker container for GNS3.", + "source": "@site/docs/emulators/create-a-docker-container-for-gns3.md", + "sourceDirName": "emulators", + "slug": "/emulators/create-a-docker-container-for-gns3", + "permalink": "/docs/emulators/create-a-docker-container-for-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/create-a-docker-container-for-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "create-a-docker-container-for-gns3", + "title": "Create a docker container for GNS3", + "sidebar_label": "Create a docker container for GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Docker support in GNS3", + "permalink": "/docs/emulators/docker-support-in-gns3" + }, + "next": { + "title": "VPCS", + "permalink": "/docs/emulators/vpcs" + } + }, + { + "unversionedId": "emulators/docker-support-in-gns3", + "id": "emulators/docker-support-in-gns3", + "title": "Docker support in GNS3", + "description": "Docker container support was added as a feature starting with GNS3 1.5. Work on this feature was started by Goran Cetusic during the Google Summer Of Code and finished by the GNS3 core team.", + "source": "@site/docs/emulators/docker-support-in-gns3.md", + "sourceDirName": "emulators", + "slug": "/emulators/docker-support-in-gns3", + "permalink": "/docs/emulators/docker-support-in-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/docker-support-in-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "docker-support-in-gns3", + "title": "Docker support in GNS3", + "sidebar_label": "Docker support in GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Adding VMware VMs to GNS3 Topologies", + "permalink": "/docs/emulators/adding-vmware-vms-to-gns3-topologies" + }, + "next": { + "title": "Create a docker container for GNS3", + "permalink": "/docs/emulators/create-a-docker-container-for-gns3" + } + }, + { + "unversionedId": "emulators/non-native-iou-for-windows-and-osx", + "id": "emulators/non-native-iou-for-windows-and-osx", + "title": "Non-Native IOU for Windows and OSX", + "description": "IOU is IOS on Unix (Solaris, if you want to be specific). It's a version of IOS compiled to run on workstations. It's faster and lighter than emulation. Cisco transitioned to IOL images, which are x86-64 compatible versions of IOS that natively run in Linux. Since everyone and their kid brother still refers to IOL images as “IOU”, that convention is used for the remainder of this document.", + "source": "@site/docs/emulators/non-native-iou-for-windows-and-osx.md", + "sourceDirName": "emulators", + "slug": "/emulators/non-native-iou-for-windows-and-osx", + "permalink": "/docs/emulators/non-native-iou-for-windows-and-osx", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/non-native-iou-for-windows-and-osx.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "non-native-iou-for-windows-and-osx", + "title": "Non-Native IOU for Windows and OSX", + "sidebar_label": "Non-Native IOU for Windows and OSX" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Cisco IOS images for Dynamips", + "permalink": "/docs/emulators/cisco-ios-images-for-dynamips" + }, + "next": { + "title": "Adding VMware VMs to GNS3 Topologies", + "permalink": "/docs/emulators/adding-vmware-vms-to-gns3-topologies" + } + }, + { + "unversionedId": "emulators/qemu-system-uuid", + "id": "emulators/qemu-system-uuid", + "title": "Qemu system UUID", + "description": "Like any real computer, Qemu attributes a UUID to the system. This is stored in the SMBIOS:", + "source": "@site/docs/emulators/qemu-system-uuid.md", + "sourceDirName": "emulators", + "slug": "/emulators/qemu-system-uuid", + "permalink": "/docs/emulators/qemu-system-uuid", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/qemu-system-uuid.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "qemu-system-uuid", + "title": "Qemu system UUID", + "sidebar_label": "Qemu system UUID" + }, + "sidebar": "someSidebar", + "previous": { + "title": "VPCS", + "permalink": "/docs/emulators/vpcs" + }, + "next": { + "title": "Contribute to GNS3", + "permalink": "/docs/contribute/contribute-to-gns3" + } + }, + { + "unversionedId": "emulators/vpcs", + "id": "emulators/vpcs", + "title": "VPCS", + "description": "Virtual PC Simulator is a program written by Paul Meng, which allows you to simulate a lightweight PC supporting DHCP and ping. It consumes only 2MB of RAM per instance, and does not require an additional image.", + "source": "@site/docs/emulators/vpcs.md", + "sourceDirName": "emulators", + "slug": "/emulators/vpcs", + "permalink": "/docs/emulators/vpcs", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/vpcs.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "vpcs", + "title": "VPCS", + "sidebar_label": "VPCS" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Create a docker container for GNS3", + "permalink": "/docs/emulators/create-a-docker-container-for-gns3" + }, + "next": { + "title": "Qemu system UUID", + "permalink": "/docs/emulators/qemu-system-uuid" + } + }, + { + "unversionedId": "emulators/which-emulators-should-i-use", + "id": "emulators/which-emulators-should-i-use", + "title": "Which emulator should I use?", + "description": "GNS3 supports multiple emulators which you can use in your GNS3 projects. This gives you lots of flexibility when building topologies.", + "source": "@site/docs/emulators/which-emulators-should-i-use.md", + "sourceDirName": "emulators", + "slug": "/emulators/which-emulators-should-i-use", + "permalink": "/docs/emulators/which-emulators-should-i-use", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/emulators/which-emulators-should-i-use.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "which-emulators-should-i-use", + "title": "Which emulator should I use?", + "sidebar_label": "Which emulator should I use?" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Why does GNS3 use UUIDs?", + "permalink": "/docs/using-gns3/design/why-gns3-uses-uuid" + }, + "next": { + "title": "Cisco IOS images for Dynamips", + "permalink": "/docs/emulators/cisco-ios-images-for-dynamips" + } + }, + { + "unversionedId": "getting-started/installation/download-32-bit", + "id": "getting-started/installation/download-32-bit", + "title": "Download GNS3 for Windows 32 bit", + "description": "If you use a 32 bit version of Windows, you will need to use GNS3 1.3.13 (or older). 32 bit support was dropped starting with GNS3 1.4.", + "source": "@site/docs/getting-started/installation/download-32-bit.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/download-32-bit", + "permalink": "/docs/getting-started/installation/download-32-bit", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/download-32-bit.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "download-32-bit", + "title": "Download GNS3 for Windows 32 bit", + "sidebar_label": "Download for Windows 32-bit" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Download the GNS3 VM", + "permalink": "/docs/getting-started/installation/download-gns3-vm" + }, + "next": { + "title": "One GNS3 server, multiple clients", + "permalink": "/docs/getting-started/installation/one-server-multiple-clients" + } + }, + { + "unversionedId": "getting-started/installation/download-gns3-vm", + "id": "getting-started/installation/download-gns3-vm", + "title": "Downloading the GNS3 VM", + "description": "Which Virtualization Software? VirtualBox or VMware?", + "source": "@site/docs/getting-started/installation/download-gns3-vm.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/download-gns3-vm", + "permalink": "/docs/getting-started/installation/download-gns3-vm", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/download-gns3-vm.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "download-gns3-vm", + "title": "Downloading the GNS3 VM", + "sidebar_label": "Download the GNS3 VM" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Remote Server", + "permalink": "/docs/getting-started/installation/remote-server" + }, + "next": { + "title": "Download for Windows 32-bit", + "permalink": "/docs/getting-started/installation/download-32-bit" + } + }, + { + "unversionedId": "getting-started/installation/esxi", + "id": "getting-started/installation/esxi", + "title": "Install the GNS3 VM on ESXi", + "description": "VMware ESXi and VMware workstation are two totally different products. If you want instructions for VMware Workstation or VMware Fusion read this document.", + "source": "@site/docs/getting-started/installation/esxi.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/esxi", + "permalink": "/docs/getting-started/installation/esxi", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/esxi.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "esxi", + "title": "Install the GNS3 VM on ESXi", + "sidebar_label": "ESXi" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Linux", + "permalink": "/docs/getting-started/installation/linux" + }, + "next": { + "title": "Remote Server", + "permalink": "/docs/getting-started/installation/remote-server" + } + }, + { + "unversionedId": "getting-started/installation/gns3-on-equinix", + "id": "getting-started/installation/gns3-on-equinix", + "title": "GNS3 on equinix", + "description": "What is Equinix?", + "source": "@site/docs/getting-started/installation/gns3-on-equinix.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/gns3-on-equinix", + "permalink": "/docs/getting-started/installation/gns3-on-equinix", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/gns3-on-equinix.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-on-equinix", + "title": "GNS3 on equinix", + "sidebar_label": "GNS3 on Equinix" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Upgrade GNS3", + "permalink": "/docs/getting-started/installation/upgrade-gns3" + }, + "next": { + "title": "Setup wizard for local server", + "permalink": "/docs/getting-started/setup-wizard-local-server" + } + }, + { + "unversionedId": "getting-started/installation/linux", + "id": "getting-started/installation/linux", + "title": "GNS3 Linux Install", + "description": "Ubuntu-based distributions (64-bit only)", + "source": "@site/docs/getting-started/installation/linux.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/linux", + "permalink": "/docs/getting-started/installation/linux", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/linux.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "linux", + "title": "GNS3 Linux Install", + "sidebar_label": "Linux" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Mac", + "permalink": "/docs/getting-started/installation/mac" + }, + "next": { + "title": "ESXi", + "permalink": "/docs/getting-started/installation/esxi" + } + }, + { + "unversionedId": "getting-started/installation/mac", + "id": "getting-started/installation/mac", + "title": "GNS3 Mac Install", + "description": "Introduction", + "source": "@site/docs/getting-started/installation/mac.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/mac", + "permalink": "/docs/getting-started/installation/mac", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/mac.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "mac", + "title": "GNS3 Mac Install", + "sidebar_label": "Mac" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Windows", + "permalink": "/docs/getting-started/installation/windows" + }, + "next": { + "title": "Linux", + "permalink": "/docs/getting-started/installation/linux" + } + }, + { + "unversionedId": "getting-started/installation/one-server-multiple-clients", + "id": "getting-started/installation/one-server-multiple-clients", + "title": "One GNS3 server, multiple clients", + "description": "This documentation is only for GNS3 2.0 and later", + "source": "@site/docs/getting-started/installation/one-server-multiple-clients.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/one-server-multiple-clients", + "permalink": "/docs/getting-started/installation/one-server-multiple-clients", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/one-server-multiple-clients.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "one-server-multiple-clients", + "title": "One GNS3 server, multiple clients", + "sidebar_label": "One GNS3 server, multiple clients" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Download for Windows 32-bit", + "permalink": "/docs/getting-started/installation/download-32-bit" + }, + "next": { + "title": "Upgrade GNS3", + "permalink": "/docs/getting-started/installation/upgrade-gns3" + } + }, + { + "unversionedId": "getting-started/installation/remote-server", + "id": "getting-started/installation/remote-server", + "title": "Install GNS3 on a remote server", + "description": "If you need more resources for bigger topologies, you can install GNS3 on a remote server. This could be on:", + "source": "@site/docs/getting-started/installation/remote-server.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/remote-server", + "permalink": "/docs/getting-started/installation/remote-server", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/remote-server.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "remote-server", + "title": "Install GNS3 on a remote server", + "sidebar_label": "Remote Server" + }, + "sidebar": "someSidebar", + "previous": { + "title": "ESXi", + "permalink": "/docs/getting-started/installation/esxi" + }, + "next": { + "title": "Download the GNS3 VM", + "permalink": "/docs/getting-started/installation/download-gns3-vm" + } + }, + { + "unversionedId": "getting-started/installation/upgrade-gns3", + "id": "getting-started/installation/upgrade-gns3", + "title": "Upgrade GNS3", + "description": "Upgrading the GNS3 Client", + "source": "@site/docs/getting-started/installation/upgrade-gns3.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/upgrade-gns3", + "permalink": "/docs/getting-started/installation/upgrade-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/upgrade-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "upgrade-gns3", + "title": "Upgrade GNS3", + "sidebar_label": "Upgrade GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "One GNS3 server, multiple clients", + "permalink": "/docs/getting-started/installation/one-server-multiple-clients" + }, + "next": { + "title": "GNS3 on Equinix", + "permalink": "/docs/getting-started/installation/gns3-on-equinix" + } + }, + { + "unversionedId": "getting-started/installation/windows", + "id": "getting-started/installation/windows", + "title": "GNS3 Windows Install", + "description": "Introduction", + "source": "@site/docs/getting-started/installation/windows.md", + "sourceDirName": "getting-started/installation", + "slug": "/getting-started/installation/windows", + "permalink": "/docs/getting-started/installation/windows", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/windows.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "windows", + "title": "GNS3 Windows Install", + "sidebar_label": "Windows" + }, + "sidebar": "someSidebar", + "previous": { + "title": "What is GNS3?", + "permalink": "/docs/" + }, + "next": { + "title": "Mac", + "permalink": "/docs/getting-started/installation/mac" + } + }, + { + "unversionedId": "getting-started/setup-wizard-gns3-vm", + "id": "getting-started/setup-wizard-gns3-vm", + "title": "GNS3 Setup wizard with the GNS3 VM", + "description": "Which Virtualization Software? VirtualBox or VMware?", + "source": "@site/docs/getting-started/setup-wizard-gns3-vm.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/setup-wizard-gns3-vm", + "permalink": "/docs/getting-started/setup-wizard-gns3-vm", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/setup-wizard-gns3-vm.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "setup-wizard-gns3-vm", + "title": "GNS3 Setup wizard with the GNS3 VM", + "sidebar_label": "Setup wizard for GNS3 VM" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Setup wizard for local server", + "permalink": "/docs/getting-started/setup-wizard-local-server" + }, + "next": { + "title": "Your first GNS3 topology", + "permalink": "/docs/getting-started/your-first-gns3-topology" + } + }, + { + "unversionedId": "getting-started/setup-wizard-local-server", + "id": "getting-started/setup-wizard-local-server", + "title": "GNS3 Setup Wizard - Local server", + "description": "Introduction", + "source": "@site/docs/getting-started/setup-wizard-local-server.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/setup-wizard-local-server", + "permalink": "/docs/getting-started/setup-wizard-local-server", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/setup-wizard-local-server.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "setup-wizard-local-server", + "title": "GNS3 Setup Wizard - Local server", + "sidebar_label": "Setup wizard for local server" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 on Equinix", + "permalink": "/docs/getting-started/installation/gns3-on-equinix" + }, + "next": { + "title": "Setup wizard for GNS3 VM", + "permalink": "/docs/getting-started/setup-wizard-gns3-vm" + } + }, + { + "unversionedId": "getting-started/what-is-gns3", + "id": "getting-started/what-is-gns3", + "title": "Getting Started with GNS3", + "description": "Introduction", + "source": "@site/docs/getting-started/what-is-gns3.md", + "sourceDirName": "getting-started", + "slug": "/", + "permalink": "/docs/", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/what-is-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "what-is-gns3", + "title": "Getting Started with GNS3", + "sidebar_label": "What is GNS3?", + "slug": "/" + }, + "sidebar": "someSidebar", + "next": { + "title": "Windows", + "permalink": "/docs/getting-started/installation/windows" + } + }, + { + "unversionedId": "getting-started/your-first-cisco-topology", + "id": "getting-started/your-first-cisco-topology", + "title": "Your First Cisco Topology", + "description": "Introduction", + "source": "@site/docs/getting-started/your-first-cisco-topology.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/your-first-cisco-topology", + "permalink": "/docs/getting-started/your-first-cisco-topology", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/your-first-cisco-topology.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "your-first-cisco-topology", + "title": "Your First Cisco Topology", + "sidebar_label": "Your first Cisco topology" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Your first GNS3 topology", + "permalink": "/docs/getting-started/your-first-gns3-topology" + }, + "next": { + "title": "The GNS3 GUI", + "permalink": "/docs/using-gns3/beginners/the-gns3-gui" + } + }, + { + "unversionedId": "getting-started/your-first-gns3-topology", + "id": "getting-started/your-first-gns3-topology", + "title": "Your First GNS3 Topology", + "description": "Introduction", + "source": "@site/docs/getting-started/your-first-gns3-topology.md", + "sourceDirName": "getting-started", + "slug": "/getting-started/your-first-gns3-topology", + "permalink": "/docs/getting-started/your-first-gns3-topology", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/getting-started/your-first-gns3-topology.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "your-first-gns3-topology", + "title": "Your First GNS3 Topology", + "sidebar_label": "Your first GNS3 topology" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Setup wizard for GNS3 VM", + "permalink": "/docs/getting-started/setup-wizard-gns3-vm" + }, + "next": { + "title": "Your first Cisco topology", + "permalink": "/docs/getting-started/your-first-cisco-topology" + } + }, + { + "unversionedId": "how-to-guides/cisco-asa", + "id": "how-to-guides/cisco-asa", + "title": "Cisco ASA", + "description": "ASA 8", + "source": "@site/docs/how-to-guides/cisco-asa.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/cisco-asa", + "permalink": "/docs/how-to-guides/cisco-asa", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/cisco-asa.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "cisco-asa", + "title": "Cisco ASA", + "sidebar_label": "Cisco ASA" + }, + "sidebar": "someSidebar", + "previous": { + "title": "How to debug Web UI Guide", + "permalink": "/docs/contribute/how-to-debug-web-ui-guide" + }, + "next": { + "title": "Importing vMX and vQFX into GNS3", + "permalink": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3" + } + }, + { + "unversionedId": "how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "id": "how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "title": "Configure GNS3 to use an additional remote server", + "description": "Configure GNS3 to use an additional remote server", + "source": "@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "permalink": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "configure-gns3-to-use-an-additional-remote-server", + "title": "Configure GNS3 to use an additional remote server", + "sidebar_label": "Configure GNS3 to use an additional remote server" + }, + "sidebar": "someSidebar", + "previous": { + "title": "How to use applications with the GNS3 Web interface", + "permalink": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui" + }, + "next": { + "title": "Troubleshoot GNS3", + "permalink": "/docs/troubleshooting-faq/troubleshoot-gns3" + } + }, + { + "unversionedId": "how-to-guides/how-to-use-console-applications-with-the-web-ui", + "id": "how-to-guides/how-to-use-console-applications-with-the-web-ui", + "title": "How to use applications with the GNS3 Web interface", + "description": "A web client pack must be installed on your operating system in order to launch local applications needed to work with the GNS3 Web interface. We currently support Telnet, VNC, SPICE and packet capture applications.", + "source": "@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/how-to-use-console-applications-with-the-web-ui", + "permalink": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "how-to-use-console-applications-with-the-web-ui", + "title": "How to use applications with the GNS3 Web interface", + "sidebar_label": "How to use applications with the GNS3 Web interface" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Importing vMX and vQFX into GNS3", + "permalink": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3" + }, + "next": { + "title": "Configure GNS3 to use an additional remote server", + "permalink": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server" + } + }, + { + "unversionedId": "how-to-guides/importing-vmx-and-vqfx-into-gns3", + "id": "how-to-guides/importing-vmx-and-vqfx-into-gns3", + "title": "Importing vMX and vQFX into GNS3", + "description": "Important edit - see bottom of the document!", + "source": "@site/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md", + "sourceDirName": "how-to-guides", + "slug": "/how-to-guides/importing-vmx-and-vqfx-into-gns3", + "permalink": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "importing-vmx-and-vqfx-into-gns3", + "title": "Importing vMX and vQFX into GNS3", + "sidebar_label": "Importing vMX and vQFX into GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Cisco ASA", + "permalink": "/docs/how-to-guides/cisco-asa" + }, + "next": { + "title": "How to use applications with the GNS3 Web interface", + "permalink": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui" + } + }, + { + "unversionedId": "troubleshooting-faq/general-faq", + "id": "troubleshooting-faq/general-faq", + "title": "General FAQ", + "description": "IOU", + "source": "@site/docs/troubleshooting-faq/general-faq.md", + "sourceDirName": "troubleshooting-faq", + "slug": "/troubleshooting-faq/general-faq", + "permalink": "/docs/troubleshooting-faq/general-faq", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/general-faq.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "general-faq", + "title": "General FAQ", + "sidebar_label": "General FAQ" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Troubleshoot GNS3", + "permalink": "/docs/troubleshooting-faq/troubleshoot-gns3" + }, + "next": { + "title": "Where do I get IOS images?", + "permalink": "/docs/troubleshooting-faq/where-do-i-get-ios-images" + } + }, + { + "unversionedId": "troubleshooting-faq/troubleshoot-gns3", + "id": "troubleshooting-faq/troubleshoot-gns3", + "title": "Troubleshoot GNS3", + "description": "Installation Problems", + "source": "@site/docs/troubleshooting-faq/troubleshoot-gns3.md", + "sourceDirName": "troubleshooting-faq", + "slug": "/troubleshooting-faq/troubleshoot-gns3", + "permalink": "/docs/troubleshooting-faq/troubleshoot-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/troubleshoot-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "troubleshoot-gns3", + "title": "Troubleshoot GNS3", + "sidebar_label": "Troubleshoot GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Configure GNS3 to use an additional remote server", + "permalink": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server" + }, + "next": { + "title": "General FAQ", + "permalink": "/docs/troubleshooting-faq/general-faq" + } + }, + { + "unversionedId": "troubleshooting-faq/where-do-i-get-ios-images", + "id": "troubleshooting-faq/where-do-i-get-ios-images", + "title": "Where do I get IOS images?", + "description": "Introduction", + "source": "@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md", + "sourceDirName": "troubleshooting-faq", + "slug": "/troubleshooting-faq/where-do-i-get-ios-images", + "permalink": "/docs/troubleshooting-faq/where-do-i-get-ios-images", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/where-do-i-get-ios-images.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "where-do-i-get-ios-images", + "title": "Where do I get IOS images?", + "sidebar_label": "Where do I get IOS images?" + }, + "sidebar": "someSidebar", + "previous": { + "title": "General FAQ", + "permalink": "/docs/troubleshooting-faq/general-faq" + } + }, + { + "unversionedId": "using-gns3/administration/client-server-ssl-encryption", + "id": "using-gns3/administration/client-server-ssl-encryption", + "title": "Client server SSL encryption", + "description": "GNS3 supports secured network communications between the GNS3 GUI and GNS3 server using SSL. SSL mode is not supported for the GNS3 server on Windows but you can use it for clients. You will need a SSL certificate, if you don't have one, it is possible to generate a self signed certificate using this script (OpenSSL must be installed):", + "source": "@site/docs/using-gns3/administration/client-server-ssl-encryption.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/client-server-ssl-encryption", + "permalink": "/docs/using-gns3/administration/client-server-ssl-encryption", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/client-server-ssl-encryption.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "client-server-ssl-encryption", + "title": "Client server SSL encryption", + "sidebar_label": "Client server SSL encryption" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 Security", + "permalink": "/docs/using-gns3/administration/gns3-security" + }, + "next": { + "title": "Scale GNS3", + "permalink": "/docs/using-gns3/administration/scale-gns3" + } + }, + { + "unversionedId": "using-gns3/administration/gns3-security", + "id": "using-gns3/administration/gns3-security", + "title": "GNS3 Security", + "description": "Users of GNS3 need to bear in mind that it is a tool designed to be used for experimentation/learning, not for managing Virtual Machines or appliances in a production environment.", + "source": "@site/docs/using-gns3/administration/gns3-security.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/gns3-security", + "permalink": "/docs/using-gns3/administration/gns3-security", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/gns3-security.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-security", + "title": "GNS3 Security", + "sidebar_label": "GNS3 Security" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Running the GNS3 server as a daemon", + "permalink": "/docs/using-gns3/administration/running-gns3-server-as-daemon" + }, + "next": { + "title": "Client server SSL encryption", + "permalink": "/docs/using-gns3/administration/client-server-ssl-encryption" + } + }, + { + "unversionedId": "using-gns3/administration/gns3-server-configuration-file", + "id": "using-gns3/administration/gns3-server-configuration-file", + "title": "GNS3 server configuration file", + "description": "If you want to run the GNS3 server without the GUI, you can configure it with via an ini file.", + "source": "@site/docs/using-gns3/administration/gns3-server-configuration-file.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/gns3-server-configuration-file", + "permalink": "/docs/using-gns3/administration/gns3-server-configuration-file", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/gns3-server-configuration-file.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-server-configuration-file", + "title": "GNS3 server configuration file", + "sidebar_label": "GNS3 server configuration file" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Configuration transfer to QEMU VMs", + "permalink": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms" + }, + "next": { + "title": "Running the GNS3 server as a daemon", + "permalink": "/docs/using-gns3/administration/running-gns3-server-as-daemon" + } + }, + { + "unversionedId": "using-gns3/administration/running-gns3-server-as-daemon", + "id": "using-gns3/administration/running-gns3-server-as-daemon", + "title": "Running the GNS3 server as a daemon", + "description": "You will find a sample init script for various systems inside the init directory of the gns3-server project//github.com/GNS3/gns3-server/tree/master/init", + "source": "@site/docs/using-gns3/administration/running-gns3-server-as-daemon.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/running-gns3-server-as-daemon", + "permalink": "/docs/using-gns3/administration/running-gns3-server-as-daemon", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/running-gns3-server-as-daemon.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "running-gns3-server-as-daemon", + "title": "Running the GNS3 server as a daemon", + "sidebar_label": "Running the GNS3 server as a daemon" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 server configuration file", + "permalink": "/docs/using-gns3/administration/gns3-server-configuration-file" + }, + "next": { + "title": "GNS3 Security", + "permalink": "/docs/using-gns3/administration/gns3-security" + } + }, + { + "unversionedId": "using-gns3/administration/scale-gns3", + "id": "using-gns3/administration/scale-gns3", + "title": "Scale GNS3", + "description": "GNS3 itself doesn’t have limitation on the number of nodes you can run into it. The limitation will be your hardware.", + "source": "@site/docs/using-gns3/administration/scale-gns3.md", + "sourceDirName": "using-gns3/administration", + "slug": "/using-gns3/administration/scale-gns3", + "permalink": "/docs/using-gns3/administration/scale-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/scale-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "scale-gns3", + "title": "Scale GNS3", + "sidebar_label": "Scale GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Client server SSL encryption", + "permalink": "/docs/using-gns3/administration/client-server-ssl-encryption" + }, + "next": { + "title": "Architecture", + "permalink": "/docs/using-gns3/design/architecture" + } + }, + { + "unversionedId": "using-gns3/advanced/configuration-transfer-qemu-vms", + "id": "using-gns3/advanced/configuration-transfer-qemu-vms", + "title": "Configuration transfer to QEMU VMs", + "description": "GNS3 v2.2.18 introduces a feature to transfer files,", + "source": "@site/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/configuration-transfer-qemu-vms", + "permalink": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "configuration-transfer-qemu-vms", + "title": "Configuration transfer to QEMU VMs", + "sidebar_label": "Configuration transfer to QEMU VMs" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Port name formatting", + "permalink": "/docs/using-gns3/advanced/port-name-formatting" + }, + "next": { + "title": "GNS3 server configuration file", + "permalink": "/docs/using-gns3/administration/gns3-server-configuration-file" + } + }, + { + "unversionedId": "using-gns3/advanced/connect-gns3-internet", + "id": "using-gns3/advanced/connect-gns3-internet", + "title": "Connect GNS3 to the Internet (local server)", + "description": "Introduction", + "source": "@site/docs/using-gns3/advanced/connect-gns3-internet.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/connect-gns3-internet", + "permalink": "/docs/using-gns3/advanced/connect-gns3-internet", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/connect-gns3-internet.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "connect-gns3-internet", + "title": "Connect GNS3 to the Internet (local server)", + "sidebar_label": "Connect GNS3 to the Internet" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Link Control", + "permalink": "/docs/using-gns3/beginners/link-control" + }, + "next": { + "title": "The NAT node", + "permalink": "/docs/using-gns3/advanced/the-nat-node" + } + }, + { + "unversionedId": "using-gns3/advanced/create-a-new-version-for-an-appliance", + "id": "using-gns3/advanced/create-a-new-version-for-an-appliance", + "title": "Create a new version of an appliance", + "description": "Manufacturers release new versions of their appliances every day. The GNS3 community does not always know about these new releases and updates to the appliance file, but GNS3 allows you to use an unknown version of an appliance.", + "source": "@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/create-a-new-version-for-an-appliance", + "permalink": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "create-a-new-version-for-an-appliance", + "title": "Create a new version of an appliance", + "sidebar_label": "Create a new version for an appliance" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Settings profiles", + "permalink": "/docs/using-gns3/advanced/settings-profiles" + }, + "next": { + "title": "Port name formatting", + "permalink": "/docs/using-gns3/advanced/port-name-formatting" + } + }, + { + "unversionedId": "using-gns3/advanced/hubs-and-switches", + "id": "using-gns3/advanced/hubs-and-switches", + "title": "GNS3's built-in Hub and Switch devices", + "description": "Introduction", + "source": "@site/docs/using-gns3/advanced/hubs-and-switches.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/hubs-and-switches", + "permalink": "/docs/using-gns3/advanced/hubs-and-switches", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/hubs-and-switches.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "hubs-and-switches", + "title": "GNS3's built-in Hub and Switch devices", + "sidebar_label": "Built-in hubs and switches" + }, + "sidebar": "someSidebar", + "previous": { + "title": "The NAT node", + "permalink": "/docs/using-gns3/advanced/the-nat-node" + }, + "next": { + "title": "Special IP addresses in GNS3", + "permalink": "/docs/using-gns3/advanced/special-ip-addresses" + } + }, + { + "unversionedId": "using-gns3/advanced/move-from-iouvm-gns3-vm", + "id": "using-gns3/advanced/move-from-iouvm-gns3-vm", + "title": "Move from IOUVM to GNS3 VM", + "description": "Starting with GNS3 v1.4, the IOUVM was deprecated in favor of the GNS3 VM.", + "source": "@site/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/move-from-iouvm-gns3-vm", + "permalink": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "move-from-iouvm-gns3-vm", + "title": "Move from IOUVM to GNS3 VM", + "sidebar_label": "Move from IOUVM to GNS3 VM" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Special IP addresses in GNS3", + "permalink": "/docs/using-gns3/advanced/special-ip-addresses" + }, + "next": { + "title": "Settings profiles", + "permalink": "/docs/using-gns3/advanced/settings-profiles" + } + }, + { + "unversionedId": "using-gns3/advanced/port-name-formatting", + "id": "using-gns3/advanced/port-name-formatting", + "title": "Port name formatting", + "description": "Some nodes (like QEMU VMs) will allow you to personalize the name of its ports, in order to match the name of the interfaces inside the emulator.", + "source": "@site/docs/using-gns3/advanced/port-name-formatting.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/port-name-formatting", + "permalink": "/docs/using-gns3/advanced/port-name-formatting", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/port-name-formatting.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "port-name-formatting", + "title": "Port name formatting", + "sidebar_label": "Port name formatting" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Create a new version for an appliance", + "permalink": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance" + }, + "next": { + "title": "Configuration transfer to QEMU VMs", + "permalink": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms" + } + }, + { + "unversionedId": "using-gns3/advanced/settings-profiles", + "id": "using-gns3/advanced/settings-profiles", + "title": "Settings profiles", + "description": "This documentation is only for GNS3 2.0 and later", + "source": "@site/docs/using-gns3/advanced/settings-profiles.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/settings-profiles", + "permalink": "/docs/using-gns3/advanced/settings-profiles", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/settings-profiles.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "settings-profiles", + "title": "Settings profiles", + "sidebar_label": "Settings profiles" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Move from IOUVM to GNS3 VM", + "permalink": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm" + }, + "next": { + "title": "Create a new version for an appliance", + "permalink": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance" + } + }, + { + "unversionedId": "using-gns3/advanced/special-ip-addresses", + "id": "using-gns3/advanced/special-ip-addresses", + "title": "Special IP addresses in GNS3", + "description": "GNS3 uses several RFC1918 private IP ranges by default. If possible we recommend to avoid using them in your topology in order to limit conflicts.", + "source": "@site/docs/using-gns3/advanced/special-ip-addresses.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/special-ip-addresses", + "permalink": "/docs/using-gns3/advanced/special-ip-addresses", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/special-ip-addresses.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "special-ip-addresses", + "title": "Special IP addresses in GNS3", + "sidebar_label": "Special IP addresses in GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Built-in hubs and switches", + "permalink": "/docs/using-gns3/advanced/hubs-and-switches" + }, + "next": { + "title": "Move from IOUVM to GNS3 VM", + "permalink": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm" + } + }, + { + "unversionedId": "using-gns3/advanced/the-nat-node", + "id": "using-gns3/advanced/the-nat-node", + "title": "The NAT node", + "description": "Starting with GNS3 2.0, the NAT node became available. This node allows you to connect a topology to internet via NAT. The Internet node was deprecated in favor of this node, and the Cloud node.", + "source": "@site/docs/using-gns3/advanced/the-nat-node.md", + "sourceDirName": "using-gns3/advanced", + "slug": "/using-gns3/advanced/the-nat-node", + "permalink": "/docs/using-gns3/advanced/the-nat-node", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/the-nat-node.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "the-nat-node", + "title": "The NAT node", + "sidebar_label": "The NAT node" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Connect GNS3 to the Internet", + "permalink": "/docs/using-gns3/advanced/connect-gns3-internet" + }, + "next": { + "title": "Built-in hubs and switches", + "permalink": "/docs/using-gns3/advanced/hubs-and-switches" + } + }, + { + "unversionedId": "using-gns3/beginners/change-node-symbol", + "id": "using-gns3/beginners/change-node-symbol", + "title": "Use custom symbols in GNS3", + "description": "Beginning with GNS3 1.4 you have been able to change the symbol for a node (or supply your own). Starting with GNS3 2.2.0, additional style types of symbols for the various device types are included by default. You can still add your own custom symbols if you wish (that hasn’t changed).", + "source": "@site/docs/using-gns3/beginners/change-node-symbol.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/change-node-symbol", + "permalink": "/docs/using-gns3/beginners/change-node-symbol", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/change-node-symbol.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "change-node-symbol", + "title": "Use custom symbols in GNS3", + "sidebar_label": "Change node symbol" + }, + "sidebar": "someSidebar", + "previous": { + "title": "The GNS3 GUI", + "permalink": "/docs/using-gns3/beginners/the-gns3-gui" + }, + "next": { + "title": "GNS3 Styles", + "permalink": "/docs/using-gns3/beginners/gns3-styles" + } + }, + { + "unversionedId": "using-gns3/beginners/gns3-styles", + "id": "using-gns3/beginners/gns3-styles", + "title": "GNS3 Styles", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/gns3-styles.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/gns3-styles", + "permalink": "/docs/using-gns3/beginners/gns3-styles", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/gns3-styles.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "gns3-styles", + "title": "GNS3 Styles", + "sidebar_label": "GNS3 Styles" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Change node symbol", + "permalink": "/docs/using-gns3/beginners/change-node-symbol" + }, + "next": { + "title": "Switching and GNS3", + "permalink": "/docs/using-gns3/beginners/switching-and-gns3" + } + }, + { + "unversionedId": "using-gns3/beginners/import-gns3-appliance", + "id": "using-gns3/beginners/import-gns3-appliance", + "title": "Import GNS3 appliance", + "description": "This document assumes that you already have both the GNS3 Graphical User Interface installed (GNS3-all-in-one) and the GNS3 VM integrated with GNS3. Please refer to other guides for more details on how to install the GNS3 all-in-one package and how to download and configure the GNS3 VM.", + "source": "@site/docs/using-gns3/beginners/import-gns3-appliance.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/import-gns3-appliance", + "permalink": "/docs/using-gns3/beginners/import-gns3-appliance", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/import-gns3-appliance.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "import-gns3-appliance", + "title": "Import GNS3 appliance", + "sidebar_label": "Import GNS3 appliance" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Install an appliance from the GNS3 Marketplace", + "permalink": "/docs/using-gns3/beginners/install-from-marketplace" + }, + "next": { + "title": "Link Control", + "permalink": "/docs/using-gns3/beginners/link-control" + } + }, + { + "unversionedId": "using-gns3/beginners/install-from-marketplace", + "id": "using-gns3/beginners/install-from-marketplace", + "title": "Install an appliance from the GNS3 Marketplace", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/install-from-marketplace.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/install-from-marketplace", + "permalink": "/docs/using-gns3/beginners/install-from-marketplace", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/install-from-marketplace.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "install-from-marketplace", + "title": "Install an appliance from the GNS3 Marketplace", + "sidebar_label": "Install an appliance from the GNS3 Marketplace" + }, + "sidebar": "someSidebar", + "previous": { + "title": "The console terminal", + "permalink": "/docs/using-gns3/beginners/the-console-terminal" + }, + "next": { + "title": "Import GNS3 appliance", + "permalink": "/docs/using-gns3/beginners/import-gns3-appliance" + } + }, + { + "unversionedId": "using-gns3/beginners/link-control", + "id": "using-gns3/beginners/link-control", + "title": "Link Control", + "description": "available in GNS3 version 2.1 and later.", + "source": "@site/docs/using-gns3/beginners/link-control.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/link-control", + "permalink": "/docs/using-gns3/beginners/link-control", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/link-control.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "link-control", + "title": "Link Control", + "sidebar_label": "Link Control" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Import GNS3 appliance", + "permalink": "/docs/using-gns3/beginners/import-gns3-appliance" + }, + "next": { + "title": "Connect GNS3 to the Internet", + "permalink": "/docs/using-gns3/advanced/connect-gns3-internet" + } + }, + { + "unversionedId": "using-gns3/beginners/switching-and-gns3", + "id": "using-gns3/beginners/switching-and-gns3", + "title": "Switching and GNS3", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/switching-and-gns3.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/switching-and-gns3", + "permalink": "/docs/using-gns3/beginners/switching-and-gns3", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/switching-and-gns3.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "switching-and-gns3", + "title": "Switching and GNS3", + "sidebar_label": "Switching and GNS3" + }, + "sidebar": "someSidebar", + "previous": { + "title": "GNS3 Styles", + "permalink": "/docs/using-gns3/beginners/gns3-styles" + }, + "next": { + "title": "The console terminal", + "permalink": "/docs/using-gns3/beginners/the-console-terminal" + } + }, + { + "unversionedId": "using-gns3/beginners/the-console-terminal", + "id": "using-gns3/beginners/the-console-terminal", + "title": "The console terminal", + "description": "GNS3 uses Solar-PuTTY as the default console terminal in Windows* (see note), and will attempt to use the default system terminal in other operating systems (gnome-terminal, for example, in vanilla Ubuntu).", + "source": "@site/docs/using-gns3/beginners/the-console-terminal.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/the-console-terminal", + "permalink": "/docs/using-gns3/beginners/the-console-terminal", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/the-console-terminal.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "the-console-terminal", + "title": "The console terminal", + "sidebar_label": "The console terminal" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Switching and GNS3", + "permalink": "/docs/using-gns3/beginners/switching-and-gns3" + }, + "next": { + "title": "Install an appliance from the GNS3 Marketplace", + "permalink": "/docs/using-gns3/beginners/install-from-marketplace" + } + }, + { + "unversionedId": "using-gns3/beginners/the-gns3-gui", + "id": "using-gns3/beginners/the-gns3-gui", + "title": "The GNS3 GUI", + "description": "Introduction", + "source": "@site/docs/using-gns3/beginners/the-gns3-gui.md", + "sourceDirName": "using-gns3/beginners", + "slug": "/using-gns3/beginners/the-gns3-gui", + "permalink": "/docs/using-gns3/beginners/the-gns3-gui", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/the-gns3-gui.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "the-gns3-gui", + "title": "The GNS3 GUI", + "sidebar_label": "The GNS3 GUI" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Your first Cisco topology", + "permalink": "/docs/getting-started/your-first-cisco-topology" + }, + "next": { + "title": "Change node symbol", + "permalink": "/docs/using-gns3/beginners/change-node-symbol" + } + }, + { + "unversionedId": "using-gns3/design/architecture", + "id": "using-gns3/design/architecture", + "title": "Architecture", + "description": "GNS3 can be divided in four parts:", + "source": "@site/docs/using-gns3/design/architecture.md", + "sourceDirName": "using-gns3/design", + "slug": "/using-gns3/design/architecture", + "permalink": "/docs/using-gns3/design/architecture", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/design/architecture.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "architecture", + "title": "Architecture", + "sidebar_label": "Architecture" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Scale GNS3", + "permalink": "/docs/using-gns3/administration/scale-gns3" + }, + "next": { + "title": "Why does GNS3 use UUIDs?", + "permalink": "/docs/using-gns3/design/why-gns3-uses-uuid" + } + }, + { + "unversionedId": "using-gns3/design/why-gns3-uses-uuid", + "id": "using-gns3/design/why-gns3-uses-uuid", + "title": "Why does GNS3 use UUIDs?", + "description": "A commonly asked question about GNS3, is why I can’t easily find the files of a node or project names on disk. It’s due to the usage of UUIDs in folder naming.", + "source": "@site/docs/using-gns3/design/why-gns3-uses-uuid.md", + "sourceDirName": "using-gns3/design", + "slug": "/using-gns3/design/why-gns3-uses-uuid", + "permalink": "/docs/using-gns3/design/why-gns3-uses-uuid", + "draft": false, + "editUrl": "https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/design/why-gns3-uses-uuid.md", + "tags": [], + "version": "current", + "frontMatter": { + "id": "why-gns3-uses-uuid", + "title": "Why does GNS3 use UUIDs?", + "sidebar_label": "Why does GNS3 use UUIDs?" + }, + "sidebar": "someSidebar", + "previous": { + "title": "Architecture", + "permalink": "/docs/using-gns3/design/architecture" + }, + "next": { + "title": "Which emulator should I use?", + "permalink": "/docs/emulators/which-emulators-should-i-use" + } + } + ], + "drafts": [], + "sidebars": { + "someSidebar": [ + { + "type": "category", + "label": "Getting Started", + "items": [ + { + "type": "doc", + "id": "getting-started/what-is-gns3" + }, + { + "type": "category", + "label": "Installation", + "items": [ + { + "type": "doc", + "id": "getting-started/installation/windows" + }, + { + "type": "doc", + "id": "getting-started/installation/mac" + }, + { + "type": "doc", + "id": "getting-started/installation/linux" + }, + { + "type": "doc", + "id": "getting-started/installation/esxi" + }, + { + "type": "doc", + "id": "getting-started/installation/remote-server" + }, + { + "type": "doc", + "id": "getting-started/installation/download-gns3-vm" + }, + { + "type": "doc", + "id": "getting-started/installation/download-32-bit" + }, + { + "type": "doc", + "id": "getting-started/installation/one-server-multiple-clients" + }, + { + "type": "doc", + "id": "getting-started/installation/upgrade-gns3" + }, + { + "type": "doc", + "id": "getting-started/installation/gns3-on-equinix" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "doc", + "id": "getting-started/setup-wizard-local-server" + }, + { + "type": "doc", + "id": "getting-started/setup-wizard-gns3-vm" + }, + { + "type": "doc", + "id": "getting-started/your-first-gns3-topology" + }, + { + "type": "doc", + "id": "getting-started/your-first-cisco-topology" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Using GNS3", + "items": [ + { + "type": "category", + "label": "Beginners", + "items": [ + { + "type": "doc", + "id": "using-gns3/beginners/the-gns3-gui" + }, + { + "type": "doc", + "id": "using-gns3/beginners/change-node-symbol" + }, + { + "type": "doc", + "id": "using-gns3/beginners/gns3-styles" + }, + { + "type": "doc", + "id": "using-gns3/beginners/switching-and-gns3" + }, + { + "type": "doc", + "id": "using-gns3/beginners/the-console-terminal" + }, + { + "type": "doc", + "id": "using-gns3/beginners/install-from-marketplace" + }, + { + "type": "doc", + "id": "using-gns3/beginners/import-gns3-appliance" + }, + { + "type": "doc", + "id": "using-gns3/beginners/link-control" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Advanced", + "items": [ + { + "type": "doc", + "id": "using-gns3/advanced/connect-gns3-internet" + }, + { + "type": "doc", + "id": "using-gns3/advanced/the-nat-node" + }, + { + "type": "doc", + "id": "using-gns3/advanced/hubs-and-switches" + }, + { + "type": "doc", + "id": "using-gns3/advanced/special-ip-addresses" + }, + { + "type": "doc", + "id": "using-gns3/advanced/move-from-iouvm-gns3-vm" + }, + { + "type": "doc", + "id": "using-gns3/advanced/settings-profiles" + }, + { + "type": "doc", + "id": "using-gns3/advanced/create-a-new-version-for-an-appliance" + }, + { + "type": "doc", + "id": "using-gns3/advanced/port-name-formatting" + }, + { + "type": "doc", + "id": "using-gns3/advanced/configuration-transfer-qemu-vms" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "GNS3 Administration", + "items": [ + { + "type": "doc", + "id": "using-gns3/administration/gns3-server-configuration-file" + }, + { + "type": "doc", + "id": "using-gns3/administration/running-gns3-server-as-daemon" + }, + { + "type": "doc", + "id": "using-gns3/administration/gns3-security" + }, + { + "type": "doc", + "id": "using-gns3/administration/client-server-ssl-encryption" + }, + { + "type": "doc", + "id": "using-gns3/administration/scale-gns3" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "GNS3 Design", + "items": [ + { + "type": "doc", + "id": "using-gns3/design/architecture" + }, + { + "type": "doc", + "id": "using-gns3/design/why-gns3-uses-uuid" + } + ], + "collapsed": true, + "collapsible": true + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Emulators", + "items": [ + { + "type": "doc", + "id": "emulators/which-emulators-should-i-use" + }, + { + "type": "doc", + "id": "emulators/cisco-ios-images-for-dynamips" + }, + { + "type": "doc", + "id": "emulators/non-native-iou-for-windows-and-osx" + }, + { + "type": "doc", + "id": "emulators/adding-vmware-vms-to-gns3-topologies" + }, + { + "type": "doc", + "id": "emulators/docker-support-in-gns3" + }, + { + "type": "doc", + "id": "emulators/create-a-docker-container-for-gns3" + }, + { + "type": "doc", + "id": "emulators/vpcs" + }, + { + "type": "doc", + "id": "emulators/qemu-system-uuid" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Contribute", + "items": [ + { + "type": "doc", + "id": "contribute/contribute-to-gns3" + }, + { + "type": "doc", + "id": "contribute/development-of-gns3" + }, + { + "type": "doc", + "id": "contribute/how-to-debug-web-ui-guide" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "How-to Guides", + "items": [ + { + "type": "doc", + "id": "how-to-guides/cisco-asa" + }, + { + "type": "doc", + "id": "how-to-guides/importing-vmx-and-vqfx-into-gns3" + }, + { + "type": "doc", + "id": "how-to-guides/how-to-use-console-applications-with-the-web-ui" + }, + { + "type": "doc", + "id": "how-to-guides/configure-gns3-to-use-an-additional-remote-server" + } + ], + "collapsed": true, + "collapsible": true + }, + { + "type": "category", + "label": "Troubleshooting & FAQ", + "items": [ + { + "type": "doc", + "id": "troubleshooting-faq/troubleshoot-gns3" + }, + { + "type": "doc", + "id": "troubleshooting-faq/general-faq" + }, + { + "type": "doc", + "id": "troubleshooting-faq/where-do-i-get-ios-images" + } + ], + "collapsed": true, + "collapsible": true + } + ] + } + } + ] + } + }, + "docusaurus-plugin-content-blog": { + "default": { + "blogSidebarTitle": "Recent posts", + "blogPosts": [], + "blogListPaginated": [], + "blogTags": {}, + "blogTagsListPath": "/blog/tags", + "blogTagsPaginated": [] + } + }, + "docusaurus-plugin-content-pages": { + "default": [ + { + "type": "jsx", + "permalink": "/", + "source": "@site/src/pages/index.js" + } + ] + }, + "docusaurus-plugin-debug": {}, + "docusaurus-plugin-google-gtag": {}, + "docusaurus-theme-classic": {}, + "docusaurus-theme-search-algolia": {}, + "docusaurus-bootstrap-plugin": {}, + "docusaurus-mdx-fallback-plugin": {} +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json b/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json new file mode 100644 index 00000000..21c2cfd4 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json @@ -0,0 +1,4 @@ +{ + "name": "docusaurus-plugin-debug", + "id": "default" +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-google-gtag/default/plugin-route-context-module-100.json b/.docusaurus/docusaurus-plugin-google-gtag/default/plugin-route-context-module-100.json new file mode 100644 index 00000000..605ba1a3 --- /dev/null +++ b/.docusaurus/docusaurus-plugin-google-gtag/default/plugin-route-context-module-100.json @@ -0,0 +1,4 @@ +{ + "name": "docusaurus-plugin-google-gtag", + "id": "default" +} \ No newline at end of file diff --git a/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json b/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json new file mode 100644 index 00000000..0f32ca36 --- /dev/null +++ b/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json @@ -0,0 +1,4 @@ +{ + "name": "docusaurus-theme-search-algolia", + "id": "default" +} \ No newline at end of file diff --git a/.docusaurus/docusaurus.config.mjs b/.docusaurus/docusaurus.config.mjs new file mode 100644 index 00000000..cf5d6559 --- /dev/null +++ b/.docusaurus/docusaurus.config.mjs @@ -0,0 +1,303 @@ +/* + * AUTOGENERATED - DON'T EDIT + * Your edits in this file will be overwritten in the next build! + * Modify the docusaurus.config.js file at your site's root instead. + */ +export default { + "title": "GNS3 Documentation", + "tagline": "The official guide and reference for GNS3", + "url": "https://mother.github.io", + "baseUrl": "/", + "favicon": "img/favicon.ico", + "organizationName": "mother", + "projectName": "gns3-docs", + "headTags": [ + { + "tagName": "meta", + "attributes": { + "http-equiv": "Content-Security-Policy", + "content": "default-src 'self' 'unsafe-eval' 'unsafe-inline' https://*.googletagmanager.com;" + } + } + ], + "themeConfig": { + "algolia": { + "apiKey": "878a16b0cf2e2172475efd1da20aa6fc", + "appId": "GGI3KOZE2A", + "indexName": "gns3", + "algoliaOptions": {}, + "contextualSearch": true, + "searchParameters": {}, + "searchPagePath": "search" + }, + "colorMode": { + "disableSwitch": true, + "defaultMode": "light", + "respectPrefersColorScheme": false + }, + "navbar": { + "logo": { + "alt": "GNS3 Docs", + "src": "img/logocolour.png" + }, + "items": [ + { + "to": "docs/", + "activeBasePath": "docs", + "label": "Documentation", + "position": "left" + }, + { + "href": "https://gns3.com/marketplace/appliances", + "label": "Appliances", + "position": "right" + }, + { + "href": "https://gns3.com", + "label": "Community", + "position": "right" + } + ], + "hideOnScroll": false + }, + "footer": { + "style": "dark", + "links": [ + { + "title": "Docs", + "items": [ + { + "label": "Documentation", + "to": "docs/" + } + ] + }, + { + "title": "Visit Us", + "items": [ + { + "label": "GNS3 Community", + "href": "https://gns3.com/community" + }, + { + "label": "GNS3 Academy", + "href": "https://academy.gns3.com" + }, + { + "label": "GNS3 Certification", + "href": "https://gns3.com/training" + } + ] + }, + { + "title": "Connect", + "items": [ + { + "label": "GitHub", + "href": "https://github.com/facebook/docusaurus" + } + ] + } + ], + "copyright": "Copyright © 2025 Galaxy Technologies LLC." + }, + "docs": { + "versionPersistence": "localStorage", + "sidebar": { + "hideable": false, + "autoCollapseCategories": false + } + }, + "metadata": [], + "prism": { + "additionalLanguages": [], + "theme": { + "plain": { + "color": "#bfc7d5", + "backgroundColor": "#292d3e" + }, + "styles": [ + { + "types": [ + "comment" + ], + "style": { + "color": "rgb(105, 112, 152)", + "fontStyle": "italic" + } + }, + { + "types": [ + "string", + "inserted" + ], + "style": { + "color": "rgb(195, 232, 141)" + } + }, + { + "types": [ + "number" + ], + "style": { + "color": "rgb(247, 140, 108)" + } + }, + { + "types": [ + "builtin", + "char", + "constant", + "function" + ], + "style": { + "color": "rgb(130, 170, 255)" + } + }, + { + "types": [ + "punctuation", + "selector" + ], + "style": { + "color": "rgb(199, 146, 234)" + } + }, + { + "types": [ + "variable" + ], + "style": { + "color": "rgb(191, 199, 213)" + } + }, + { + "types": [ + "class-name", + "attr-name" + ], + "style": { + "color": "rgb(255, 203, 107)" + } + }, + { + "types": [ + "tag", + "deleted" + ], + "style": { + "color": "rgb(255, 85, 114)" + } + }, + { + "types": [ + "operator" + ], + "style": { + "color": "rgb(137, 221, 255)" + } + }, + { + "types": [ + "boolean" + ], + "style": { + "color": "rgb(255, 88, 116)" + } + }, + { + "types": [ + "keyword" + ], + "style": { + "fontStyle": "italic" + } + }, + { + "types": [ + "doctype" + ], + "style": { + "color": "rgb(199, 146, 234)", + "fontStyle": "italic" + } + }, + { + "types": [ + "namespace" + ], + "style": { + "color": "rgb(178, 204, 214)" + } + }, + { + "types": [ + "url" + ], + "style": { + "color": "rgb(221, 221, 221)" + } + } + ] + }, + "magicComments": [ + { + "className": "theme-code-block-highlighted-line", + "line": "highlight-next-line", + "block": { + "start": "highlight-start", + "end": "highlight-end" + } + } + ] + }, + "tableOfContents": { + "minHeadingLevel": 2, + "maxHeadingLevel": 3 + } + }, + "presets": [ + [ + "@docusaurus/preset-classic", + { + "gtag": { + "trackingID": "G-D2TYZDQ4ZW", + "anonymizeIP": false + }, + "docs": { + "sidebarPath": "/Users/stevenyuen/Sites/gns3-docs/sidebars.js", + "editUrl": "https://github.com/mother/gns3-docs/blob/master/" + }, + "theme": { + "customCss": "/Users/stevenyuen/Sites/gns3-docs/src/css/custom.css" + } + } + ] + ], + "baseUrlIssueBanner": true, + "i18n": { + "defaultLocale": "en", + "path": "i18n", + "locales": [ + "en" + ], + "localeConfigs": {} + }, + "onBrokenLinks": "throw", + "onBrokenMarkdownLinks": "warn", + "onDuplicateRoutes": "warn", + "staticDirectories": [ + "static" + ], + "customFields": {}, + "plugins": [], + "themes": [], + "scripts": [], + "stylesheets": [], + "clientModules": [], + "titleDelimiter": "|", + "noIndex": false, + "markdown": { + "mermaid": false + } +}; diff --git a/.docusaurus/globalData.json b/.docusaurus/globalData.json new file mode 100644 index 00000000..1e1ea5cf --- /dev/null +++ b/.docusaurus/globalData.json @@ -0,0 +1,338 @@ +{ + "docusaurus-plugin-google-gtag": { + "default": { + "trackingID": [ + "G-D2TYZDQ4ZW" + ], + "anonymizeIP": false, + "id": "default" + } + }, + "docusaurus-plugin-content-docs": { + "default": { + "path": "/docs", + "versions": [ + { + "name": "current", + "label": "Next", + "isLast": true, + "path": "/docs", + "mainDocId": "getting-started/what-is-gns3", + "docs": [ + { + "id": "contribute/contribute-to-gns3", + "path": "/docs/contribute/contribute-to-gns3", + "sidebar": "someSidebar" + }, + { + "id": "contribute/development-of-gns3", + "path": "/docs/contribute/development-of-gns3", + "sidebar": "someSidebar" + }, + { + "id": "contribute/how-to-debug-web-ui-guide", + "path": "/docs/contribute/how-to-debug-web-ui-guide", + "sidebar": "someSidebar" + }, + { + "id": "docusaurus-reference/doc1", + "path": "/docs/docusaurus-reference/doc1" + }, + { + "id": "docusaurus-reference/doc2", + "path": "/docs/docusaurus-reference/doc2" + }, + { + "id": "docusaurus-reference/doc3", + "path": "/docs/docusaurus-reference/doc3" + }, + { + "id": "docusaurus-reference/mdx", + "path": "/docs/docusaurus-reference/mdx" + }, + { + "id": "emulators/adding-vmware-vms-to-gns3-topologies", + "path": "/docs/emulators/adding-vmware-vms-to-gns3-topologies", + "sidebar": "someSidebar" + }, + { + "id": "emulators/cisco-ios-images-for-dynamips", + "path": "/docs/emulators/cisco-ios-images-for-dynamips", + "sidebar": "someSidebar" + }, + { + "id": "emulators/create-a-docker-container-for-gns3", + "path": "/docs/emulators/create-a-docker-container-for-gns3", + "sidebar": "someSidebar" + }, + { + "id": "emulators/docker-support-in-gns3", + "path": "/docs/emulators/docker-support-in-gns3", + "sidebar": "someSidebar" + }, + { + "id": "emulators/non-native-iou-for-windows-and-osx", + "path": "/docs/emulators/non-native-iou-for-windows-and-osx", + "sidebar": "someSidebar" + }, + { + "id": "emulators/qemu-system-uuid", + "path": "/docs/emulators/qemu-system-uuid", + "sidebar": "someSidebar" + }, + { + "id": "emulators/vpcs", + "path": "/docs/emulators/vpcs", + "sidebar": "someSidebar" + }, + { + "id": "emulators/which-emulators-should-i-use", + "path": "/docs/emulators/which-emulators-should-i-use", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/download-32-bit", + "path": "/docs/getting-started/installation/download-32-bit", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/download-gns3-vm", + "path": "/docs/getting-started/installation/download-gns3-vm", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/esxi", + "path": "/docs/getting-started/installation/esxi", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/gns3-on-equinix", + "path": "/docs/getting-started/installation/gns3-on-equinix", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/linux", + "path": "/docs/getting-started/installation/linux", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/mac", + "path": "/docs/getting-started/installation/mac", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/one-server-multiple-clients", + "path": "/docs/getting-started/installation/one-server-multiple-clients", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/remote-server", + "path": "/docs/getting-started/installation/remote-server", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/upgrade-gns3", + "path": "/docs/getting-started/installation/upgrade-gns3", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/installation/windows", + "path": "/docs/getting-started/installation/windows", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/setup-wizard-gns3-vm", + "path": "/docs/getting-started/setup-wizard-gns3-vm", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/setup-wizard-local-server", + "path": "/docs/getting-started/setup-wizard-local-server", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/what-is-gns3", + "path": "/docs/", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/your-first-cisco-topology", + "path": "/docs/getting-started/your-first-cisco-topology", + "sidebar": "someSidebar" + }, + { + "id": "getting-started/your-first-gns3-topology", + "path": "/docs/getting-started/your-first-gns3-topology", + "sidebar": "someSidebar" + }, + { + "id": "how-to-guides/cisco-asa", + "path": "/docs/how-to-guides/cisco-asa", + "sidebar": "someSidebar" + }, + { + "id": "how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "path": "/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server", + "sidebar": "someSidebar" + }, + { + "id": "how-to-guides/how-to-use-console-applications-with-the-web-ui", + "path": "/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui", + "sidebar": "someSidebar" + }, + { + "id": "how-to-guides/importing-vmx-and-vqfx-into-gns3", + "path": "/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3", + "sidebar": "someSidebar" + }, + { + "id": "troubleshooting-faq/general-faq", + "path": "/docs/troubleshooting-faq/general-faq", + "sidebar": "someSidebar" + }, + { + "id": "troubleshooting-faq/troubleshoot-gns3", + "path": "/docs/troubleshooting-faq/troubleshoot-gns3", + "sidebar": "someSidebar" + }, + { + "id": "troubleshooting-faq/where-do-i-get-ios-images", + "path": "/docs/troubleshooting-faq/where-do-i-get-ios-images", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/administration/client-server-ssl-encryption", + "path": "/docs/using-gns3/administration/client-server-ssl-encryption", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/administration/gns3-security", + "path": "/docs/using-gns3/administration/gns3-security", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/administration/gns3-server-configuration-file", + "path": "/docs/using-gns3/administration/gns3-server-configuration-file", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/administration/running-gns3-server-as-daemon", + "path": "/docs/using-gns3/administration/running-gns3-server-as-daemon", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/administration/scale-gns3", + "path": "/docs/using-gns3/administration/scale-gns3", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/configuration-transfer-qemu-vms", + "path": "/docs/using-gns3/advanced/configuration-transfer-qemu-vms", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/connect-gns3-internet", + "path": "/docs/using-gns3/advanced/connect-gns3-internet", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/create-a-new-version-for-an-appliance", + "path": "/docs/using-gns3/advanced/create-a-new-version-for-an-appliance", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/hubs-and-switches", + "path": "/docs/using-gns3/advanced/hubs-and-switches", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/move-from-iouvm-gns3-vm", + "path": "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/port-name-formatting", + "path": "/docs/using-gns3/advanced/port-name-formatting", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/settings-profiles", + "path": "/docs/using-gns3/advanced/settings-profiles", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/special-ip-addresses", + "path": "/docs/using-gns3/advanced/special-ip-addresses", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/advanced/the-nat-node", + "path": "/docs/using-gns3/advanced/the-nat-node", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/change-node-symbol", + "path": "/docs/using-gns3/beginners/change-node-symbol", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/gns3-styles", + "path": "/docs/using-gns3/beginners/gns3-styles", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/import-gns3-appliance", + "path": "/docs/using-gns3/beginners/import-gns3-appliance", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/install-from-marketplace", + "path": "/docs/using-gns3/beginners/install-from-marketplace", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/link-control", + "path": "/docs/using-gns3/beginners/link-control", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/switching-and-gns3", + "path": "/docs/using-gns3/beginners/switching-and-gns3", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/the-console-terminal", + "path": "/docs/using-gns3/beginners/the-console-terminal", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/beginners/the-gns3-gui", + "path": "/docs/using-gns3/beginners/the-gns3-gui", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/design/architecture", + "path": "/docs/using-gns3/design/architecture", + "sidebar": "someSidebar" + }, + { + "id": "using-gns3/design/why-gns3-uses-uuid", + "path": "/docs/using-gns3/design/why-gns3-uses-uuid", + "sidebar": "someSidebar" + } + ], + "draftIds": [], + "sidebars": { + "someSidebar": { + "link": { + "path": "/docs/", + "label": "getting-started/what-is-gns3" + } + } + } + } + ], + "breadcrumbs": true + } + } +} \ No newline at end of file diff --git a/.docusaurus/i18n.json b/.docusaurus/i18n.json new file mode 100644 index 00000000..285e67dc --- /dev/null +++ b/.docusaurus/i18n.json @@ -0,0 +1,17 @@ +{ + "defaultLocale": "en", + "locales": [ + "en" + ], + "path": "i18n", + "currentLocale": "en", + "localeConfigs": { + "en": { + "label": "English", + "direction": "ltr", + "htmlLang": "en", + "calendar": "gregory", + "path": "en" + } + } +} \ No newline at end of file diff --git a/.docusaurus/registry.js b/.docusaurus/registry.js index 9f57c6c2..9fd7ff55 100644 --- a/.docusaurus/registry.js +++ b/.docusaurus/registry.js @@ -10,6 +10,7 @@ export default { '1aacdf1a': [() => import(/* webpackChunkName: '1aacdf1a' */ '@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md'), '@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md', require.resolveWeak('@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md')], '1be23e60': [() => import(/* webpackChunkName: '1be23e60' */ '@site/docs/getting-started/installation/remote-server.md'), '@site/docs/getting-started/installation/remote-server.md', require.resolveWeak('@site/docs/getting-started/installation/remote-server.md')], '1be78505': [() => import(/* webpackChunkName: '1be78505' */ '@theme/DocPage'), '@theme/DocPage', require.resolveWeak('@theme/DocPage')], + '1e94eb74': [() => import(/* webpackChunkName: '1e94eb74' */ '@site/docs/using-gns3/advanced/hubs-and-switches.md'), '@site/docs/using-gns3/advanced/hubs-and-switches.md', require.resolveWeak('@site/docs/using-gns3/advanced/hubs-and-switches.md')], '25877efd': [() => import(/* webpackChunkName: '25877efd' */ '@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md'), '@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md', require.resolveWeak('@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md')], '2f261fb5': [() => import(/* webpackChunkName: '2f261fb5' */ '@site/docs/docusaurus-reference/doc3.md'), '@site/docs/docusaurus-reference/doc3.md', require.resolveWeak('@site/docs/docusaurus-reference/doc3.md')], '322a49c4': [() => import(/* webpackChunkName: '322a49c4' */ '@site/docs/getting-started/what-is-gns3.md'), '@site/docs/getting-started/what-is-gns3.md', require.resolveWeak('@site/docs/getting-started/what-is-gns3.md')], @@ -17,7 +18,6 @@ export default { '3d5a80f7': [() => import(/* webpackChunkName: '3d5a80f7' */ '@site/docs/getting-started/installation/mac.md'), '@site/docs/getting-started/installation/mac.md', require.resolveWeak('@site/docs/getting-started/installation/mac.md')], '3dbbbf4c': [() => import(/* webpackChunkName: '3dbbbf4c' */ '@site/docs/contribute/development-of-gns3.md'), '@site/docs/contribute/development-of-gns3.md', require.resolveWeak('@site/docs/contribute/development-of-gns3.md')], '48d9d6a9': [() => import(/* webpackChunkName: '48d9d6a9' */ '@site/docs/using-gns3/design/why-gns3-uses-uuid.md'), '@site/docs/using-gns3/design/why-gns3-uses-uuid.md', require.resolveWeak('@site/docs/using-gns3/design/why-gns3-uses-uuid.md')], - '49891499': [() => import(/* webpackChunkName: '49891499' */ '/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json'), '/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json', require.resolveWeak('/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json')], '5c632b0c': [() => import(/* webpackChunkName: '5c632b0c' */ '@site/docs/using-gns3/beginners/the-gns3-gui.md'), '@site/docs/using-gns3/beginners/the-gns3-gui.md', require.resolveWeak('@site/docs/using-gns3/beginners/the-gns3-gui.md')], '5d09215c': [() => import(/* webpackChunkName: '5d09215c' */ '@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md'), '@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md', require.resolveWeak('@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md')], '5e9f5e1a': [() => import(/* webpackChunkName: '5e9f5e1a' */ '@generated/docusaurus.config'), '@generated/docusaurus.config', require.resolveWeak('@generated/docusaurus.config')], @@ -36,6 +36,7 @@ export default { '89f8e59d': [() => import(/* webpackChunkName: '89f8e59d' */ '@site/docs/using-gns3/advanced/port-name-formatting.md'), '@site/docs/using-gns3/advanced/port-name-formatting.md', require.resolveWeak('@site/docs/using-gns3/advanced/port-name-formatting.md')], '90d7c7d0': [() => import(/* webpackChunkName: '90d7c7d0' */ '@site/docs/troubleshooting-faq/general-faq.md'), '@site/docs/troubleshooting-faq/general-faq.md', require.resolveWeak('@site/docs/troubleshooting-faq/general-faq.md')], '935f2afb': [() => import(/* webpackChunkName: '935f2afb' */ '~docs/default/version-current-metadata-prop-751.json'), '~docs/default/version-current-metadata-prop-751.json', require.resolveWeak('~docs/default/version-current-metadata-prop-751.json')], + '99d2c9c4': [() => import(/* webpackChunkName: '99d2c9c4' */ '/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json'), '/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json', require.resolveWeak('/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json')], '9bd9ba21': [() => import(/* webpackChunkName: '9bd9ba21' */ '@site/docs/using-gns3/design/architecture.md'), '@site/docs/using-gns3/design/architecture.md', require.resolveWeak('@site/docs/using-gns3/design/architecture.md')], '9cda237f': [() => import(/* webpackChunkName: '9cda237f' */ '@site/docs/using-gns3/administration/gns3-server-configuration-file.md'), '@site/docs/using-gns3/administration/gns3-server-configuration-file.md', require.resolveWeak('@site/docs/using-gns3/administration/gns3-server-configuration-file.md')], 'a0fedaae': [() => import(/* webpackChunkName: 'a0fedaae' */ '@site/docs/using-gns3/beginners/change-node-symbol.md'), '@site/docs/using-gns3/beginners/change-node-symbol.md', require.resolveWeak('@site/docs/using-gns3/beginners/change-node-symbol.md')], @@ -49,11 +50,12 @@ export default { 'c36fddde': [() => import(/* webpackChunkName: 'c36fddde' */ '@site/docs/emulators/qemu-system-uuid.md'), '@site/docs/emulators/qemu-system-uuid.md', require.resolveWeak('@site/docs/emulators/qemu-system-uuid.md')], 'c4f5d8e4': [() => import(/* webpackChunkName: 'c4f5d8e4' */ '@site/src/pages/index.js'), '@site/src/pages/index.js', require.resolveWeak('@site/src/pages/index.js')], 'c561a9f7': [() => import(/* webpackChunkName: 'c561a9f7' */ '@site/docs/emulators/vpcs.md'), '@site/docs/emulators/vpcs.md', require.resolveWeak('@site/docs/emulators/vpcs.md')], + 'c9496258': [() => import(/* webpackChunkName: 'c9496258' */ '/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json'), '/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json', require.resolveWeak('/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json')], 'cb052573': [() => import(/* webpackChunkName: 'cb052573' */ '@site/docs/getting-started/setup-wizard-gns3-vm.md'), '@site/docs/getting-started/setup-wizard-gns3-vm.md', require.resolveWeak('@site/docs/getting-started/setup-wizard-gns3-vm.md')], 'cd180604': [() => import(/* webpackChunkName: 'cd180604' */ '@site/docs/docusaurus-reference/doc1.md'), '@site/docs/docusaurus-reference/doc1.md', require.resolveWeak('@site/docs/docusaurus-reference/doc1.md')], - 'd0fe3361': [() => import(/* webpackChunkName: 'd0fe3361' */ '/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json'), '/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json', require.resolveWeak('/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json')], 'd1a25e88': [() => import(/* webpackChunkName: 'd1a25e88' */ '@site/docs/getting-started/installation/upgrade-gns3.md'), '@site/docs/getting-started/installation/upgrade-gns3.md', require.resolveWeak('@site/docs/getting-started/installation/upgrade-gns3.md')], 'd5a0d1e6': [() => import(/* webpackChunkName: 'd5a0d1e6' */ '@site/docs/getting-started/installation/esxi.md'), '@site/docs/getting-started/installation/esxi.md', require.resolveWeak('@site/docs/getting-started/installation/esxi.md')], + 'd7f44f17': [() => import(/* webpackChunkName: 'd7f44f17' */ '/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json'), '/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json', require.resolveWeak('/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json')], 'd8d6327f': [() => import(/* webpackChunkName: 'd8d6327f' */ '@site/docs/troubleshooting-faq/troubleshoot-gns3.md'), '@site/docs/troubleshooting-faq/troubleshoot-gns3.md', require.resolveWeak('@site/docs/troubleshooting-faq/troubleshoot-gns3.md')], 'd907171e': [() => import(/* webpackChunkName: 'd907171e' */ '@site/docs/getting-started/installation/download-gns3-vm.md'), '@site/docs/getting-started/installation/download-gns3-vm.md', require.resolveWeak('@site/docs/getting-started/installation/download-gns3-vm.md')], 'de112a60': [() => import(/* webpackChunkName: 'de112a60' */ '@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md'), '@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md', require.resolveWeak('@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md')], @@ -66,5 +68,4 @@ export default { 'f37eaf51': [() => import(/* webpackChunkName: 'f37eaf51' */ '@site/docs/getting-started/installation/linux.md'), '@site/docs/getting-started/installation/linux.md', require.resolveWeak('@site/docs/getting-started/installation/linux.md')], 'f95c72e9': [() => import(/* webpackChunkName: 'f95c72e9' */ '@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md'), '@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md', require.resolveWeak('@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md')], 'fc549e88': [() => import(/* webpackChunkName: 'fc549e88' */ '@site/docs/using-gns3/beginners/the-console-terminal.md'), '@site/docs/using-gns3/beginners/the-console-terminal.md', require.resolveWeak('@site/docs/using-gns3/beginners/the-console-terminal.md')], - 'ff603e77': [() => import(/* webpackChunkName: 'ff603e77' */ '/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json'), '/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json', require.resolveWeak('/home/grossmj/PycharmProjects/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json')], 'fff7c774': [() => import(/* webpackChunkName: 'fff7c774' */ '@site/docs/docusaurus-reference/mdx.md'), '@site/docs/docusaurus-reference/mdx.md', require.resolveWeak('@site/docs/docusaurus-reference/mdx.md')],}; diff --git a/.docusaurus/routes.js b/.docusaurus/routes.js index d77463f0..fbcea655 100644 --- a/.docusaurus/routes.js +++ b/.docusaurus/routes.js @@ -4,12 +4,12 @@ import ComponentCreator from '@docusaurus/ComponentCreator'; export default [ { path: '/search', - component: ComponentCreator('/search', '6df'), + component: ComponentCreator('/search', '9aa'), exact: true }, { path: '/docs', - component: ComponentCreator('/docs', 'dc4'), + component: ComponentCreator('/docs', '6d6'), routes: [ { path: '/docs/', @@ -277,6 +277,12 @@ export default [ exact: true, sidebar: "someSidebar" }, + { + path: '/docs/using-gns3/advanced/hubs-and-switches', + component: ComponentCreator('/docs/using-gns3/advanced/hubs-and-switches', '3bf'), + exact: true, + sidebar: "someSidebar" + }, { path: '/docs/using-gns3/advanced/move-from-iouvm-gns3-vm', component: ComponentCreator('/docs/using-gns3/advanced/move-from-iouvm-gns3-vm', '9cf'), @@ -371,7 +377,7 @@ export default [ }, { path: '/', - component: ComponentCreator('/', '8a6'), + component: ComponentCreator('/', '151'), exact: true }, { diff --git a/.docusaurus/routesChunkNames.json b/.docusaurus/routesChunkNames.json index dbb11160..5df2d7dc 100644 --- a/.docusaurus/routesChunkNames.json +++ b/.docusaurus/routesChunkNames.json @@ -1,14 +1,14 @@ { - "/search-6df": { + "/search-9aa": { "__comp": "1a4e3797", "__context": { - "plugin": "d0fe3361" + "plugin": "99d2c9c4" } }, - "/docs-dc4": { + "/docs-6d6": { "__comp": "1be78505", "__context": { - "plugin": "ff603e77" + "plugin": "d7f44f17" }, "versionMetadata": "935f2afb" }, @@ -192,6 +192,10 @@ "__comp": "17896441", "content": "1aacdf1a" }, + "/docs/using-gns3/advanced/hubs-and-switches-3bf": { + "__comp": "17896441", + "content": "1e94eb74" + }, "/docs/using-gns3/advanced/move-from-iouvm-gns3-vm-9cf": { "__comp": "17896441", "content": "079cfff5" @@ -252,10 +256,10 @@ "__comp": "17896441", "content": "48d9d6a9" }, - "/-8a6": { + "/-151": { "__comp": "c4f5d8e4", "__context": { - "plugin": "49891499" + "plugin": "c9496258" }, "config": "5e9f5e1a" } diff --git a/.docusaurus/site-metadata.json b/.docusaurus/site-metadata.json new file mode 100644 index 00000000..769f3b26 --- /dev/null +++ b/.docusaurus/site-metadata.json @@ -0,0 +1,41 @@ +{ + "docusaurusVersion": "2.4.1", + "siteVersion": "1.0.0", + "pluginVersions": { + "docusaurus-plugin-content-docs": { + "type": "package", + "name": "@docusaurus/plugin-content-docs", + "version": "2.4.1" + }, + "docusaurus-plugin-content-blog": { + "type": "package", + "name": "@docusaurus/plugin-content-blog", + "version": "2.4.1" + }, + "docusaurus-plugin-content-pages": { + "type": "package", + "name": "@docusaurus/plugin-content-pages", + "version": "2.4.1" + }, + "docusaurus-plugin-google-gtag": { + "type": "package", + "name": "@docusaurus/plugin-google-gtag", + "version": "2.4.1" + }, + "docusaurus-plugin-sitemap": { + "type": "package", + "name": "@docusaurus/plugin-sitemap", + "version": "2.4.1" + }, + "docusaurus-theme-classic": { + "type": "package", + "name": "@docusaurus/theme-classic", + "version": "2.4.1" + }, + "docusaurus-theme-search-algolia": { + "type": "package", + "name": "@docusaurus/theme-search-algolia", + "version": "2.4.1" + } + } +} \ No newline at end of file diff --git a/build/404.html b/build/404.html index 7d1feba9..ba02e760 100644 --- a/build/404.html +++ b/build/404.html @@ -3,20 +3,21 @@ -Page Not Found | GNS3 Documentation +Page Not Found | GNS3 Documentation - - - + + + +
-
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/build/assets/css/styles.337c8af9.css b/build/assets/css/styles.337c8af9.css new file mode 100644 index 00000000..e6488901 --- /dev/null +++ b/build/assets/css/styles.337c8af9.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,.hash-link{-webkit-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#14b4fc;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#46cbae;--ifm-color-primary-lighter:#66d4bd;--ifm-color-primary-lightest:#92e0d0;--ifm-code-font-size:95%;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none,li{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom);margin:0;padding:0}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{-webkit-column-gap:var(--ifm-avatar-intro-margin);column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;-webkit-filter:var(--ifm-breadcrumb-separator-filter);filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:-webkit-any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;-webkit-transform:translateY(-1px);transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);-webkit-transform:translateY(-.625rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility,-webkit-transform;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.codeBlockStandalone_MEMb,[type=checkbox],h1{padding:0}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.menu__caret:before,.menu__link--sublist-caret:after{-webkit-filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;width:1.25rem;content:""}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;filter:var(--ifm-menu-link-sublist-icon-filter);margin-left:auto;min-width:1.25rem;-webkit-transform:rotate(180deg);transform:rotate(180deg);transition:-webkit-transform var(--ifm-transition-fast) linear;transition:transform var(--ifm-transition-fast) linear;transition:transform var(--ifm-transition-fast) linear,-webkit-transform var(--ifm-transition-fast) linear}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;filter:var(--ifm-menu-link-sublist-icon-filter);-webkit-transform:rotate(180deg);transform:rotate(180deg);transition:-webkit-transform var(--ifm-transition-fast) linear;transition:transform var(--ifm-transition-fast) linear;transition:transform var(--ifm-transition-fast) linear,-webkit-transform var(--ifm-transition-fast) linear}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:-webkit-sticky;position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::-webkit-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform,-webkit-transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar--show .navbar-sidebar{-webkit-transform:translateZ(0);transform:translateZ(0)}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform var(--ifm-transition-fast) ease-in-out;transition:transform var(--ifm-transition-fast) ease-in-out;transition:transform var(--ifm-transition-fast) ease-in-out,-webkit-transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{-webkit-transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0);transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{-webkit-column-gap:var(--ifm-pagination-page-spacing);column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.menu,li{padding:0!important}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);width:100px}.navbar{background:#21252f!important}.navbar .navbar__link{color:#fff}.navbar__items--right .navbar__link{font-size:.85em!important}.currentColor{stroke:#fff}.navbar__toggle svg path{stroke:#eee!important}.menu{background:#f6f9fb!important}.menu__link{color:#666;font-size:15px}.menu__list-item--collapsed .menu__list{display:none}.menu__link--active{color:#14b4fc;font-weight:700!important}.menu__link--active:hover{color:#14b4fc!important}.menu__list-item{border-bottom:1px solid #eee;padding:2px 0!important}.menu__list-item:last-child{border-bottom:none}.menu__list .menu__list .menu__link{padding-left:35px!important}.menu__list .menu__list .menu__list .menu__link{padding-left:70px!important}h1{color:#333;font-size:45px!important;letter-spacing:-1px;line-height:100%;margin-bottom:20px!important;margin-top:20px}h2{color:#14b4fc;font-size:30px!important;margin-bottom:10px!important}h3{border-bottom:1px solid #ddd;color:#222;font-size:20px!important;margin:10px 0 20px!important;padding:10px 0!important}ul{margin:10px 0!important}.docusaurus-highlight-code-line{background-color:#484d5b;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;-webkit-transform:translate(50%,-50%) rotate(-45deg);transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";-webkit-filter:var(--ifm-menu-link-sublist-icon-filter);filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;-webkit-transform:rotate(180deg);transform:rotate(180deg);transition:-webkit-transform var(--ifm-transition-fast);transition:transform var(--ifm-transition-fast);transition:transform var(--ifm-transition-fast),-webkit-transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{-webkit-transform:none;transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);user-select:none}.hash-link:before{content:"#"}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{-webkit-column-gap:.2rem;column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:-webkit-sticky;position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;-webkit-transform:translate(-50%,-50%) scale(.33);transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;-webkit-transform:scale(.33);transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Hit[aria-selected=true] mark,.content_knG7 a{text-decoration:underline}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::-webkit-input-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{-webkit-animation:.1s ease-in forwards a;animation:.1s ease-in forwards a;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:-webkit-sticky;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_b6E3,.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key,.container_czXe,.inner_nC8_{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@-webkit-keyframes a{0%{opacity:0}to{opacity:1}}@keyframes a{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container,.skipToContent_fXgn{z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:-webkit-transform var(--ifm-transition-fast) ease;transition:transform var(--ifm-transition-fast) ease;transition:transform var(--ifm-transition-fast) ease,-webkit-transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{-webkit-transform:translate3d(0,calc(-100% - 2px),0);transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{font-family:-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif!important;display:flex;flex-direction:column;min-height:100%}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::-webkit-input-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.algoliaLogoPathFill_WdUC{fill:var(--ifm-font-color-base)}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{-webkit-animation:1s linear infinite b;animation:1s linear infinite b;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@-webkit-keyframes b{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes b{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;-webkit-transform:scale(0);transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;-webkit-transform:scale(1);transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.container_czXe{background-color:#0c1b30;background-image:linear-gradient(180deg,#05141f 30%,#272b37);justify-content:center;min-height:90vh;padding:50px 20px 0}.inner_nC8_{flex-flow:row;padding-bottom:100px;padding-right:70px}.splash_HqcR{display:inline-block;padding-right:70px;width:400px}.title_VwV3{color:#fff;font-size:60px;font-weight:700;letter-spacing:-2px;line-height:100%;margin-top:10px}.subtitle_WGyH{color:hsla(0,0%,100%,.5);font-size:25px;margin-bottom:30px}.button_hqdx{background-color:#14b4fc;border-radius:3px;color:#fff;font-size:18px;font-weight:700;padding:15px 40px}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:-webkit-sticky;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{-webkit-transform:rotate(0);transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:-webkit-sticky;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer_F8PC{padding:0 .3rem}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media screen and (max-width:966px){.inner_nC8_{flex-flow:column;padding-right:0}.splash_HqcR{display:none}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media screen and (max-width:600px){.title_VwV3{font-size:40px}.subtitle_WGyH{font-size:18px}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);-webkit-animation:none;animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/build/assets/js/058140c7.e919982f.js b/build/assets/js/058140c7.e919982f.js new file mode 100644 index 00000000..354346fd --- /dev/null +++ b/build/assets/js/058140c7.e919982f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1789],{5680:(e,t,n)=>{n.d(t,{xA:()=>c,yg:()=>y});var o=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=o.createContext({}),l=function(e){var t=o.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=l(e.components);return o.createElement(u.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=l(n),g=r,y=p["".concat(u,".").concat(g)]||p[g]||m[g]||i;return n?o.createElement(y,a(a({ref:t},c),{},{components:n})):o.createElement(y,a({ref:t},c))}));function y(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=g;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:r,a[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>y,frontMatter:()=>u,metadata:()=>c,toc:()=>m});var o=n(8168),r=n(8587),i=(n(6540),n(5680)),a=n(6025),s=["components"],u={id:"contribute-to-gns3",title:"Contribute to GNS3",sidebar_label:"Contribute to GNS3"},l=void 0,c={unversionedId:"contribute/contribute-to-gns3",id:"contribute/contribute-to-gns3",title:"Contribute to GNS3",description:"The GNS3 community welcomes new contributors. Don\u2019t be afraid to make mistakes - we are here to help.",source:"@site/docs/contribute/contribute-to-gns3.md",sourceDirName:"contribute",slug:"/contribute/contribute-to-gns3",permalink:"/docs/contribute/contribute-to-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/contribute/contribute-to-gns3.md",tags:[],version:"current",frontMatter:{id:"contribute-to-gns3",title:"Contribute to GNS3",sidebar_label:"Contribute to GNS3"},sidebar:"someSidebar",previous:{title:"Qemu system UUID",permalink:"/docs/emulators/qemu-system-uuid"},next:{title:"Development of GNS3",permalink:"/docs/contribute/development-of-gns3"}},p={},m=[{value:"Help Users",id:"help-users",level:2},{value:"Report Bugs",id:"report-bugs",level:2},{value:"New Appliances",id:"new-appliances",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Typos, mistakes",id:"typos-mistakes",level:3},{value:"New documentation",id:"new-documentation",level:3},{value:"Test Builds",id:"test-builds",level:2}],g={toc:m};function y(e){var t=e.components,n=(0,r.A)(e,s);return(0,i.yg)("wrapper",(0,o.A)({},g,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"The GNS3 community welcomes new contributors. Don\u2019t be afraid to make mistakes - we are here to help."),(0,i.yg)("h2",{id:"help-users"},"Help Users"),(0,i.yg)("p",null,"The best way to initially contribute is to help other users on the GNS community:\n",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/community"},"https://gns3.com/community")),(0,i.yg)("h2",{id:"report-bugs"},"Report Bugs"),(0,i.yg)("p",null,"The best way to report bugs is via the GNS3 community:\n",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/community"},"https://gns3.com/community")),(0,i.yg)("p",null,"The forum is a good place to report issues because the whole community can help debug and propose workarounds."),(0,i.yg)("p",null,"If you know exactly what\u2019s wrong, report the issue directly on Github:\n",(0,i.yg)("a",{parentName:"p",href:"http://github.com/GNS3/"},"http://github.com/GNS3/")),(0,i.yg)("h2",{id:"new-appliances"},"New Appliances"),(0,i.yg)("p",null,"You can submit new a appliance template using the following link:\n",(0,i.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-registry"},"https://github.com/GNS3/gns3-registry")),(0,i.yg)("p",null,"Look at samples here:\n",(0,i.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-registry/blob/master/appliances/microcore-linux.gns3a"},"https://github.com/GNS3/gns3-registry/blob/master/appliances/microcore-linux.gns3a")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"An easier way to submit your new appliance is via a GitHub pull request.")),(0,i.yg)("p",null,"You can find the GNS3 source code on ",(0,i.yg)("a",{parentName:"p",href:"http://github.com/GNS3/"},"http://github.com/GNS3/"),"."),(0,i.yg)("p",null,"The GNS3 software is licensed via the GNU General Public License (GPLV3). GNS3 welcomes new code contributors. If you have an idea that you want to implement, don\u2019t hesitate to open an issue (we will guide you if needed)."),(0,i.yg)("p",null,"For the first step with the code read this documentation:\n",(0,i.yg)("a",{parentName:"p",href:"./development-of-gns3"},"Development of GNS3")),(0,i.yg)("h2",{id:"documentation"},"Documentation"),(0,i.yg)("h3",{id:"typos-mistakes"},"Typos, mistakes"),(0,i.yg)("p",null,"You can suggest changes on any documentation by clicking on the Edit this article button on each documentation."),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/contribute/contribute-to-gns3/1.jpg")}),(0,i.yg)("p",null,"This will open Google Doc where you can suggest your modifications:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/contribute/contribute-to-gns3/2.jpg")}),(0,i.yg)("h3",{id:"new-documentation"},"New documentation"),(0,i.yg)("p",null,"If you want to contribute to the documentation you can send emails to ",(0,i.yg)("a",{parentName:"p",href:"mailto:docs@gns3.net"},"docs@gns3.net")," with your suggested document. You can also send us a Google Docs document which will make the integration easier. Don\u2019t worry about formatting - just use standard styles (Heading 1, Heading 2, Normal text)."),(0,i.yg)("h2",{id:"test-builds"},"Test Builds"),(0,i.yg)("p",null,"The GNS3 developers regularly post new alpha/beta/release candidates. You can find links to the builds pinned in the GNS3 forums. Please help us test the software."),(0,i.yg)("p",null,"If you want to test a nightly build, you can find them here:\n",(0,i.yg)("a",{parentName:"p",href:"https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/"},"https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/")),(0,i.yg)("admonition",{type:"caution"},(0,i.yg)("p",{parentName:"admonition"},"Be aware that these versions may not work and you could lose your data..")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/079cfff5.1bc47f81.js b/build/assets/js/079cfff5.1bc47f81.js new file mode 100644 index 00000000..d1325847 --- /dev/null +++ b/build/assets/js/079cfff5.1bc47f81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[5315],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>g});var o=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),u=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},c=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(n),c=r,g=d["".concat(s,".").concat(c)]||d[c]||m[c]||a;return n?o.createElement(g,i(i({ref:t},p),{},{components:n})):o.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>g,frontMatter:()=>s,metadata:()=>p,toc:()=>m});var o=n(8168),r=n(8587),a=(n(6540),n(5680)),i=n(6025),l=["components"],s={id:"move-from-iouvm-gns3-vm",title:"Move from IOUVM to GNS3 VM",sidebar_label:"Move from IOUVM to GNS3 VM"},u=void 0,p={unversionedId:"using-gns3/advanced/move-from-iouvm-gns3-vm",id:"using-gns3/advanced/move-from-iouvm-gns3-vm",title:"Move from IOUVM to GNS3 VM",description:"Starting with GNS3 v1.4, the IOUVM was deprecated in favor of the GNS3 VM.",source:"@site/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/move-from-iouvm-gns3-vm",permalink:"/docs/using-gns3/advanced/move-from-iouvm-gns3-vm",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md",tags:[],version:"current",frontMatter:{id:"move-from-iouvm-gns3-vm",title:"Move from IOUVM to GNS3 VM",sidebar_label:"Move from IOUVM to GNS3 VM"},sidebar:"someSidebar",previous:{title:"Special IP addresses in GNS3",permalink:"/docs/using-gns3/advanced/special-ip-addresses"},next:{title:"Settings profiles",permalink:"/docs/using-gns3/advanced/settings-profiles"}},d={},m=[{value:"Why a new VM?",id:"why-a-new-vm",level:2},{value:"But I will lose my projects!",id:"but-i-will-lose-my-projects",level:2},{value:"How much time is required for the upgrade",id:"how-much-time-is-required-for-the-upgrade",level:2},{value:"How to Upgrade",id:"how-to-upgrade",level:2},{value:"Step 1 Download the GNS3 VM",id:"step-1-download-the-gns3-vm",level:3},{value:"Step 2 Launch the wizard",id:"step-2-launch-the-wizard",level:3},{value:"Step 3 Follow the wizard",id:"step-3-follow-the-wizard",level:3}],c={toc:m};function g(e){var t=e.components,n=(0,r.A)(e,l);return(0,a.yg)("wrapper",(0,o.A)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"Starting with GNS3 v1.4, the IOUVM was deprecated in favor of the GNS3 VM."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"This conversion tool is available only for GNS3 1.X you can\u2019t use it in 2.0 and later. If you want to convert a 1.3 installation with IOUVM to 2.0, you need to might to version 1.5, first, then to 2.0. ")),(0,a.yg)("h2",{id:"why-a-new-vm"},"Why a new VM?"),(0,a.yg)("p",null,"The original VM was a hack made by the community and after maintain by the GNS3 team. But this vm has several issues:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"OS was stripped down, without any way to properly reinstall missing packages"),(0,a.yg)("li",{parentName:"ul"},"No script allowing users to rebuild the VM from scratch"),(0,a.yg)("li",{parentName:"ul"},"Blocked on a specific Debian version with old packages"),(0,a.yg)("li",{parentName:"ul"},"Old Python version 3.3, with annoying bugs in the GNS3 context"),(0,a.yg)("li",{parentName:"ul"},"Supports ",(0,a.yg)("em",{parentName:"li"},"only")," IOU"),(0,a.yg)("li",{parentName:"ul"},"Upgrade path is unnecessarily painful"),(0,a.yg)("li",{parentName:"ul"},"Only VirtualBox was supported")),(0,a.yg)("p",null,"The new GNS3 VM is:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"One click upgrade"),(0,a.yg)("li",{parentName:"ul"},"Supports IOU, dynamips, qemu docker, and futures solutions"),(0,a.yg)("li",{parentName:"ul"},"Easy to build a new VM for everyone"),(0,a.yg)("li",{parentName:"ul"},"Easier to use"),(0,a.yg)("li",{parentName:"ul"},"Correctly supports Virtualbox, VMWare, Hyper-V, and KVM"),(0,a.yg)("li",{parentName:"ul"},"Nat and Host-only interface support")),(0,a.yg)("p",null,"You have no easy way for using GNS3 1.4 in the IOUVM. The easier solution is to move to the new GNS3 VM. Trying to get GNS3 1.4 running on the IOUVM will probably require you days of work for fixing the broken OS dependencies."),(0,a.yg)("h2",{id:"but-i-will-lose-my-projects"},"But I will lose my projects!"),(0,a.yg)("p",null,"No we provide tools for upgrading. We recommend to backup your .gns3 project files before the upgrade."),(0,a.yg)("h2",{id:"how-much-time-is-required-for-the-upgrade"},"How much time is required for the upgrade"),(0,a.yg)("p",null,"No more than 5 minutes."),(0,a.yg)("h2",{id:"how-to-upgrade"},"How to Upgrade"),(0,a.yg)("h3",{id:"step-1-download-the-gns3-vm"},"Step 1 Download the GNS3 VM"),(0,a.yg)("p",null,"Go to ",(0,a.yg)("a",{parentName:"p",href:"http://www.gns3.com"},"http://www.gns3.com")," and download the lastest VM for VirtualBox or VMware."),(0,a.yg)("h3",{id:"step-2-launch-the-wizard"},"Step 2 Launch the wizard"),(0,a.yg)("p",null,"Launch GNS3 and in the tools menu launch IOU VM Converter"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/move-from-iouvm-gns3-vm/1.jpg")}),(0,a.yg)("h3",{id:"step-3-follow-the-wizard"},"Step 3 Follow the wizard"),(0,a.yg)("p",null,"After cliking on the IOUVM converter button you will see a wizard helping you to move from the IOUVM to the GNS3 VM. Just follow the instructions on screen carefully."),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/move-from-iouvm-gns3-vm/2.jpg")}))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/0874f9a4.868af88e.js b/build/assets/js/0874f9a4.868af88e.js new file mode 100644 index 00000000..701724ef --- /dev/null +++ b/build/assets/js/0874f9a4.868af88e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[6522],{5680:(e,n,t)=>{t.d(n,{xA:()=>c,yg:()=>d});var s=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);n&&(s=s.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,s)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var a=s.createContext({}),g=function(e){var n=s.useContext(a),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=g(e.components);return s.createElement(a.Provider,{value:n},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var n=e.children;return s.createElement(s.Fragment,{},n)}},p=s.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,a=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=g(t),p=r,d=u["".concat(a,".").concat(p)]||u[p]||y[p]||i;return t?s.createElement(d,l(l({ref:n},c),{},{components:t})):s.createElement(d,l({ref:n},c))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=p;var o={};for(var a in n)hasOwnProperty.call(n,a)&&(o[a]=n[a]);o.originalType=e,o[u]="string"==typeof e?e:r,l[1]=o;for(var g=2;g{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>g,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>y});var s=t(8168),r=t(8587),i=(t(6540),t(5680)),l=t(6025),o=["components"],a={id:"gns3-styles",title:"GNS3 Styles",sidebar_label:"GNS3 Styles"},g=void 0,c={unversionedId:"using-gns3/beginners/gns3-styles",id:"using-gns3/beginners/gns3-styles",title:"GNS3 Styles",description:"Introduction",source:"@site/docs/using-gns3/beginners/gns3-styles.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/gns3-styles",permalink:"/docs/using-gns3/beginners/gns3-styles",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/gns3-styles.md",tags:[],version:"current",frontMatter:{id:"gns3-styles",title:"GNS3 Styles",sidebar_label:"GNS3 Styles"},sidebar:"someSidebar",previous:{title:"Change node symbol",permalink:"/docs/using-gns3/beginners/change-node-symbol"},next:{title:"Switching and GNS3",permalink:"/docs/using-gns3/beginners/switching-and-gns3"}},u={},y=[{value:"Introduction",id:"introduction",level:2},{value:"GNS3 Styles",id:"gns3-styles",level:2}],p={toc:y};function d(e){var n=e.components,t=(0,r.A)(e,o);return(0,i.yg)("wrapper",(0,s.A)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"introduction"},"Introduction"),(0,i.yg)("p",null,"GNS3 supports multiple styles and designs which you can use the change the GNS3 look and feel. You can change styles, add your own icons and change other GNS3 preferences."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"This document assumes that you already have GNS3 installed.")),(0,i.yg)("h2",{id:"gns3-styles"},"GNS3 Styles"),(0,i.yg)("p",null,"The default GNS3 style depends on the operating system you use. The following figure shows the default Classic style used by GNS3 in Windows:"),(0,i.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/gns3-styles/1.jpg")}),(0,i.yg)("p",null,"(the tint will be slightly different in Windows 7, than in the various editions of Windows 10)"),(0,i.yg)("p",null,"To change the GNS3 style, click ",(0,i.yg)("strong",{parentName:"p"},"Edit")," and then ",(0,i.yg)("strong",{parentName:"p"},"Preferences")," in the GNS3 GUI . Styles are shown under the ",(0,i.yg)("strong",{parentName:"p"},"General")," options"),(0,i.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/gns3-styles/2.jpg")}),(0,i.yg)("p",null,"Three styles are currently available:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Classic"),(0,i.yg)("li",{parentName:"ul"},"Charcoal"),(0,i.yg)("li",{parentName:"ul"},"Legacy")),(0,i.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/gns3-styles/3.jpg")}),(0,i.yg)("p",null,"Select the style you wish to use in the dropdown (In the above image, the \u201cClassic\u201d syle is still highlighted), and Click ",(0,i.yg)("strong",{parentName:"p"},"\u2018OK\u2019")," to save your changes."),(0,i.yg)("p",null,"This is what GNS3 looks like using the \u201cCharcoal\u201d style:"),(0,i.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/gns3-styles/4.jpg")}),(0,i.yg)("p",null,"This is what GNS3 looks like using the Legacy Style:"),(0,i.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/gns3-styles/5.jpg")}),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Congratulations!")," You have changed the look and feel of GNS3 using GNS3 styles."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/0ba241d4.f08cf61a.js b/build/assets/js/0ba241d4.f08cf61a.js new file mode 100644 index 00000000..22c459d9 --- /dev/null +++ b/build/assets/js/0ba241d4.f08cf61a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8389],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>d});var r=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),f=o,d=u["".concat(l,".").concat(f)]||u[f]||g[f]||i;return n?r.createElement(d,a(a({ref:t},p),{},{components:n})):r.createElement(d,a({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>d,frontMatter:()=>l,metadata:()=>p,toc:()=>g});var r=n(8168),o=n(8587),i=(n(6540),n(5680)),a=n(6025),s=["components"],l={id:"settings-profiles",title:"Settings profiles",sidebar_label:"Settings profiles"},c=void 0,p={unversionedId:"using-gns3/advanced/settings-profiles",id:"using-gns3/advanced/settings-profiles",title:"Settings profiles",description:"This documentation is only for GNS3 2.0 and later",source:"@site/docs/using-gns3/advanced/settings-profiles.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/settings-profiles",permalink:"/docs/using-gns3/advanced/settings-profiles",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/settings-profiles.md",tags:[],version:"current",frontMatter:{id:"settings-profiles",title:"Settings profiles",sidebar_label:"Settings profiles"},sidebar:"someSidebar",previous:{title:"Move from IOUVM to GNS3 VM",permalink:"/docs/using-gns3/advanced/move-from-iouvm-gns3-vm"},next:{title:"Create a new version for an appliance",permalink:"/docs/using-gns3/advanced/create-a-new-version-for-an-appliance"}},u={},g=[{value:"Create a Profile",id:"create-a-profile",level:2},{value:"Comman Line Usage",id:"comman-line-usage",level:2}],f={toc:g};function d(e){var t=e.components,n=(0,o.A)(e,s);return(0,i.yg)("wrapper",(0,r.A)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"This documentation is only for GNS3 2.0 and later")),(0,i.yg)("p",null,"If you need to connect your GNS3 GUI to different GNS3 servers, you can use the settings profiles. This allows you to have multiple GNS3 environments."),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Video: ",(0,i.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=IMpmosLy9i8"},"https://www.youtube.com/watch?v=IMpmosLy9i8"))),(0,i.yg)("h2",{id:"create-a-profile"},"Create a Profile"),(0,i.yg)("p",null,"First click Edit->Preferences to go to the settings in order to enable the feature"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/advanced/settings-profiles/1.jpg")}),(0,i.yg)("p",null,"And restart GNS3. You can now create a profile:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/advanced/settings-profiles/2.jpg")}),(0,i.yg)("p",null,"default is a profile always here. It\u2019s the profile use when you don\u2019t choose a profile."),(0,i.yg)("h2",{id:"comman-line-usage"},"Comman Line Usage"),(0,i.yg)("p",null,"You can also use different profile if you pass ",(0,i.yg)("inlineCode",{parentName:"p"},"--profile")," to the GNS3 client with the profile name."),(0,i.yg)("p",null,"Example:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"gns3 --profile work\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/0d02c885.c8f58003.js b/build/assets/js/0d02c885.c8f58003.js new file mode 100644 index 00000000..432f2869 --- /dev/null +++ b/build/assets/js/0d02c885.c8f58003.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4621],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>f});var o=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),d=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(n),g=r,f=c["".concat(s,".").concat(g)]||c[g]||u[g]||a;return n?o.createElement(f,i(i({ref:t},p),{},{components:n})):o.createElement(f,i({ref:t},p))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var d=2;d{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>g,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var o=n(8168),r=n(8587),a=(n(6540),n(5680)),i=["components"],l={id:"download-32-bit",title:"Download GNS3 for Windows 32 bit",sidebar_label:"Download for Windows 32-bit"},s=void 0,d={unversionedId:"getting-started/installation/download-32-bit",id:"getting-started/installation/download-32-bit",title:"Download GNS3 for Windows 32 bit",description:"If you use a 32 bit version of Windows, you will need to use GNS3 1.3.13 (or older). 32 bit support was dropped starting with GNS3 1.4.",source:"@site/docs/getting-started/installation/download-32-bit.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/download-32-bit",permalink:"/docs/getting-started/installation/download-32-bit",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/download-32-bit.md",tags:[],version:"current",frontMatter:{id:"download-32-bit",title:"Download GNS3 for Windows 32 bit",sidebar_label:"Download for Windows 32-bit"},sidebar:"someSidebar",previous:{title:"Download the GNS3 VM",permalink:"/docs/getting-started/installation/download-gns3-vm"},next:{title:"One GNS3 server, multiple clients",permalink:"/docs/getting-started/installation/one-server-multiple-clients"}},p={},c=[{value:"Where I can download the IOU VM?",id:"where-i-can-download-the-iou-vm",level:3}],u={toc:c};function g(e){var t=e.components,n=(0,r.A)(e,i);return(0,a.yg)("wrapper",(0,o.A)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"If you use a 32 bit version of Windows, you will need to use GNS3 1.3.13 (or older). 32 bit support was dropped starting with GNS3 1.4."),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-gui/releases/tag/v1.3.13"},"https://github.com/GNS3/gns3-gui/releases/tag/v1.3.13")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"If it\u2019s possible to update to a 64 bit version of Windows, we recommend to use the lastest GNS3 version if possible. Bugfixes and improved User Experience (UX) are continually being added.")),(0,a.yg)("h3",{id:"where-i-can-download-the-iou-vm"},"Where I can download the IOU VM?"),(0,a.yg)("p",null,"The IOU VM for GNS3 1.3.13 is available on ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-gui/releases/tag/v1.3.13"},"https://github.com/GNS3/gns3-gui/releases/tag/v1.3.13")),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"If you are looking for an IOU VM release for GNS3 1.4 (or later), was superseded by ",(0,a.yg)("a",{parentName:"p",href:"download-gns3-vm"},"the GNS3 VM"),".")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/0fa70dcc.afee320e.js b/build/assets/js/0fa70dcc.afee320e.js new file mode 100644 index 00000000..22ae9cc8 --- /dev/null +++ b/build/assets/js/0fa70dcc.afee320e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9423],{5680:(e,t,o)=>{o.d(t,{xA:()=>p,yg:()=>m});var n=o(6540);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function l(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),u=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):l(l({},t),e)),o},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},g="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),g=u(o),c=r,m=g["".concat(s,".").concat(c)]||g[c]||d[c]||i;return o?n.createElement(m,l(l({ref:t},p),{},{components:o})):n.createElement(m,l({ref:t},p))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=o.length,l=new Array(i);l[0]=c;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[g]="string"==typeof e?e:r,l[1]=a;for(var u=2;u{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>c,frontMatter:()=>a,metadata:()=>u,toc:()=>g});var n=o(8168),r=o(8587),i=(o(6540),o(5680)),l=["components"],a={id:"how-to-debug-web-ui-guide",title:"How to debug Web UI Guide",sidebar_label:"How to debug Web UI Guide"},s=void 0,u={unversionedId:"contribute/how-to-debug-web-ui-guide",id:"contribute/how-to-debug-web-ui-guide",title:"How to debug Web UI Guide",description:"Using the GNS3 API",source:"@site/docs/contribute/how-to-debug-web-ui-guide.md",sourceDirName:"contribute",slug:"/contribute/how-to-debug-web-ui-guide",permalink:"/docs/contribute/how-to-debug-web-ui-guide",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/contribute/how-to-debug-web-ui-guide.md",tags:[],version:"current",frontMatter:{id:"how-to-debug-web-ui-guide",title:"How to debug Web UI Guide",sidebar_label:"How to debug Web UI Guide"},sidebar:"someSidebar",previous:{title:"Development of GNS3",permalink:"/docs/contribute/development-of-gns3"},next:{title:"Cisco ASA",permalink:"/docs/how-to-guides/cisco-asa"}},p={},g=[{value:"Using the GNS3 API",id:"using-the-gns3-api",level:2},{value:"How to start with GNS3 Web UI",id:"how-to-start-with-gns3-web-ui",level:2},{value:"Dependencies",id:"dependencies",level:2},{value:"Linux & Windows & Mac OS",id:"linux--windows--mac-os",level:3},{value:"Testing",id:"testing",level:2},{value:"Linux & Windows & Mac OS",id:"linux--windows--mac-os-1",level:3},{value:"Reporting Bugs",id:"reporting-bugs",level:2},{value:"Google Chrome",id:"google-chrome",level:3},{value:"Mozilla Firefox",id:"mozilla-firefox",level:3}],d={toc:g};function c(e){var t=e.components,o=(0,r.A)(e,l);return(0,i.yg)("wrapper",(0,n.A)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"using-the-gns3-api"},"Using the GNS3 API"),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"http://api.gns3.net/en/latest/"},"http://api.gns3.net/en/latest/")),(0,i.yg)("h2",{id:"how-to-start-with-gns3-web-ui"},"How to start with GNS3 Web UI"),(0,i.yg)("p",null,"You have two options: installing the latest GNS3 with GNS3 Webclient Pack (it\u2019s needed to run console for particular node) or to setup development environment if you want to contribute."),(0,i.yg)("p",null,"If you want to create development environment you should install latest node.js and yarn:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"https://nodejs.org/en/"},"https://nodejs.org/en/")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"https://yarnpkg.com/lang/en/"},"https://yarnpkg.com/lang/en/"))),(0,i.yg)("p",null,"then clone following projects:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"git clone https://github.com/GNS3/gns3-web-ui.git\n")),(0,i.yg)("h2",{id:"dependencies"},"Dependencies"),(0,i.yg)("h3",{id:"linux--windows--mac-os"},"Linux & Windows & Mac OS"),(0,i.yg)("p",null,"Go to proper folder and open console then type following command:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"yarn install")," to install and update dependencies"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"yarn ng serve")," to run application (then navigate to proper port in web browser), keep the terminal open and all the changes you made will be applied without delay")),(0,i.yg)("p",null,"If you want to build an application type ",(0,i.yg)("inlineCode",{parentName:"p"},"yarn ng build")," command."),(0,i.yg)("h2",{id:"testing"},"Testing"),(0,i.yg)("h3",{id:"linux--windows--mac-os-1"},"Linux & Windows & Mac OS"),(0,i.yg)("p",null,"Run unit tests to make sure that changes you made won\u2019t break any functionalities, type ",(0,i.yg)("inlineCode",{parentName:"p"},"yarn ng test"),"."),(0,i.yg)("h2",{id:"reporting-bugs"},"Reporting Bugs"),(0,i.yg)("p",null,"For debugging purposes you can put console.log with proper message in any place of the code. Message will be printed after the function invocation.The you should open the console in the browser."),(0,i.yg)("h3",{id:"google-chrome"},"Google Chrome"),(0,i.yg)("p",null,"Please read the following links to get information about developers tools provided by Chrome browser:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"https://developers.google.com/web/tools/chrome-devtools/console"},"https://developers.google.com/web/tools/chrome-devtools/console"),","),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"https://developers.google.com/web/tools/chrome-devtools/console/javascript"},"https://developers.google.com/web/tools/chrome-devtools/console/javascript"))),(0,i.yg)("h3",{id:"mozilla-firefox"},"Mozilla Firefox"),(0,i.yg)("p",null,"Please read the following links to get information about developers tools provided by Firefox browser:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"https://developer.mozilla.org/en-US/docs/Tools"},"https://developer.mozilla.org/en-US/docs/Tools")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"https://developer.mozilla.org/en-US/docs/Tools/Tools_Toolbox"},"https://developer.mozilla.org/en-US/docs/Tools/Tools_Toolbox"))),(0,i.yg)("p",null,"You can report bugs on this site ",(0,i.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-web-ui/issues"},"https://github.com/GNS3/gns3-web-ui/issues")," by clicking the new issue button and write proper description (add screenshot if you can)."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/1774.a7152c63.js b/build/assets/js/1774.a7152c63.js new file mode 100644 index 00000000..067fb4aa --- /dev/null +++ b/build/assets/js/1774.a7152c63.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1774],{1774:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(6540),l=n(1312),o=n(9024),r=n(8511);function c(){return a.createElement(a.Fragment,null,a.createElement(o.be,{title:(0,l.T)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.A,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.A,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file diff --git a/build/assets/js/17896441.ed12cee7.js b/build/assets/js/17896441.ed12cee7.js new file mode 100644 index 00000000..81d41458 --- /dev/null +++ b/build/assets/js/17896441.ed12cee7.js @@ -0,0 +1 @@ +(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8401],{5680:(e,t,n)=>{"use strict";n.d(t,{xA:()=>u,yg:()=>f});var a=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=s(n),p=r,f=d["".concat(c,".").concat(p)]||d[p]||m[p]||l;return n?a.createElement(f,o(o({ref:t},u),{},{components:n})):a.createElement(f,o({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=p;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:r,o[1]=i;for(var s=2;s{"use strict";n.r(t),n.d(t,{default:()=>Kt});var a=n(6540),r=n(9024),l=n(3807),o=a.createContext(null);function i(e){var t=e.children,n=function(e){return(0,a.useMemo)((function(){return{metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}}),[e])}(e.content);return a.createElement(o.Provider,{value:n},t)}function c(){var e=(0,a.useContext)(o);if(null===e)throw new l.dV("DocProvider");return e}function s(){var e,t=c(),n=t.metadata,l=t.frontMatter,o=t.assets;return a.createElement(r.be,{title:n.title,description:n.description,keywords:l.keywords,image:null!=(e=o.image)?e:l.image})}var u=n(870),d=n(4581),m=n(8168),p=n(1312),f=n(5489);function v(e){var t=e.permalink,n=e.title,r=e.subLabel,l=e.isNext;return a.createElement(f.A,{className:(0,u.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},r&&a.createElement("div",{className:"pagination-nav__sublabel"},r),a.createElement("div",{className:"pagination-nav__label"},n))}function h(e){var t=e.previous,n=e.next;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,p.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&a.createElement(v,(0,m.A)({},t,{subLabel:a.createElement(p.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&a.createElement(v,(0,m.A)({},n,{subLabel:a.createElement(p.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function g(){var e=c().metadata;return a.createElement(h,{previous:e.previous,next:e.next})}var b=n(4586),E=n(4070),y=n(7559),A=n(5597),N=n(2252);var k={unreleased:function(e){var t=e.siteTitle,n=e.versionMetadata;return a.createElement(p.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){var t=e.siteTitle,n=e.versionMetadata;return a.createElement(p.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function C(e){var t=k[e.versionMetadata.banner];return a.createElement(t,e)}function L(e){var t=e.versionLabel,n=e.to,r=e.onClick;return a.createElement(p.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(f.A,{to:n,onClick:r},a.createElement(p.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function T(e){var t,n=e.className,r=e.versionMetadata,l=(0,b.A)().siteConfig.title,o=(0,E.vT)({failfast:!0}).pluginId,i=(0,A.g1)(o).savePreferredVersionName,c=(0,E.HW)(o),s=c.latestDocSuggestion,d=c.latestVersionSuggestion,m=null!=s?s:(t=d).docs.find((function(e){return e.id===t.mainDocId}));return a.createElement("div",{className:(0,u.A)(n,y.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(C,{siteTitle:l,versionMetadata:r})),a.createElement("div",{className:"margin-top--md"},a.createElement(L,{versionLabel:d.label,to:m.path,onClick:function(){return i(d.name)}})))}function _(e){var t=e.className,n=(0,N.r)();return n.banner?a.createElement(T,{className:t,versionMetadata:n}):null}function w(e){var t=e.className,n=(0,N.r)();return n.badge?a.createElement("span",{className:(0,u.A)(t,y.G.docs.docVersionBadge,"badge badge--secondary")},a.createElement(p.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function x(e){var t=e.lastUpdatedAt,n=e.formattedLastUpdatedAt;return a.createElement(p.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function B(e){var t=e.lastUpdatedBy;return a.createElement(p.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function O(e){var t=e.lastUpdatedAt,n=e.formattedLastUpdatedAt,r=e.lastUpdatedBy;return a.createElement("span",{className:y.G.common.lastUpdated},a.createElement(p.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(x,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:r?a.createElement(B,{lastUpdatedBy:r}):""}},"Last updated{atDate}{byUser}"),!1)}var j=n(8587);const H="iconEdit_Z9Sw";var M=["className"];function S(e){var t=e.className,n=(0,j.A)(e,M);return a.createElement("svg",(0,m.A)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.A)(H,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function P(e){var t=e.editUrl;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:y.G.common.editThisPage},a.createElement(S,null),a.createElement(p.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}const U="tag_zVej",I="tagRegular_sFm0",V="tagWithCount_h2kH";function z(e){var t=e.permalink,n=e.label,r=e.count;return a.createElement(f.A,{href:t,className:(0,u.A)(U,r?V:I)},n,r&&a.createElement("span",null,r))}const D="tags_jXut",R="tag_QGVx";function G(e){var t=e.tags;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(p.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,u.A)(D,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,n=e.permalink;return a.createElement("li",{key:n,className:R},a.createElement(z,{label:t,permalink:n}))}))))}const W="lastUpdated_vwxv";function F(e){return a.createElement("div",{className:(0,u.A)(y.G.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(G,e)))}function q(e){var t=e.editUrl,n=e.lastUpdatedAt,r=e.lastUpdatedBy,l=e.formattedLastUpdatedAt;return a.createElement("div",{className:(0,u.A)(y.G.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(P,{editUrl:t})),a.createElement("div",{className:(0,u.A)("col",W)},(n||r)&&a.createElement(O,{lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r})))}function Y(){var e=c().metadata,t=e.editUrl,n=e.lastUpdatedAt,r=e.formattedLastUpdatedAt,l=e.lastUpdatedBy,o=e.tags,i=o.length>0,s=!!(t||n||l);return i||s?a.createElement("footer",{className:(0,u.A)(y.G.docs.docFooter,"docusaurus-mt-lg")},i&&a.createElement(F,{tags:o}),s&&a.createElement(q,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r})):null}var Z=n(1422),$=n(6342),Q=["parentIndex"];function X(e){var t=e.map((function(e){return Object.assign({},e,{parentIndex:-1,children:[]})})),n=Array(7).fill(-1);t.forEach((function(e,t){var a=n.slice(2,e.level);e.parentIndex=Math.max.apply(Math,a),n[e.level]=t}));var a=[];return t.forEach((function(e){var n=e.parentIndex,r=(0,j.A)(e,Q);n>=0?t[n].children.push(r):a.push(r)})),a}function J(e){var t=e.toc,n=e.minHeadingLevel,a=e.maxHeadingLevel;return t.flatMap((function(e){var t=J({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[Object.assign({},e,{children:t})]:t}))}function K(e){var t=e.getBoundingClientRect();return t.top===t.bottom?K(e.parentNode):t}function ee(e,t){var n,a,r=t.anchorTopOffset,l=e.find((function(e){return K(e).top>=r}));return l?function(e){return e.top>0&&e.bottom0})).map((function(e){return[e-1,[i]]}));return{lineClassNames:Object.fromEntries(c),code:n}}if(void 0===a)return{lineClassNames:{},code:n};for(var s=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Ue(["js","jsBlock"],t);case"jsx":case"tsx":return Ue(["js","jsBlock","jsx"],t);case"html":return Ue(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Ue(["bash"],t);case"markdown":case"md":return Ue(["html","jsx","bash"],t);default:return Ue(Object.keys(Pe),t)}}(a,r),u=n.split("\n"),d=Object.fromEntries(r.map((function(e){return[e.className,{start:0,range:""}]}))),m=Object.fromEntries(r.filter((function(e){return e.line})).map((function(e){var t=e.className;return[e.line,t]}))),p=Object.fromEntries(r.filter((function(e){return e.block})).map((function(e){var t=e.className;return[e.block.start,t]}))),f=Object.fromEntries(r.filter((function(e){return e.block})).map((function(e){var t=e.className;return[e.block.end,t]}))),v=0;v0&&e[n-1]===t?e:e.concat(t)},Ke=function(e,t){var n=e.plain,a=Object.create(null),r=e.styles.reduce((function(e,n){var a=n.languages,r=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=$e({},e[t],r);e[t]=n})),e}),a);return r.root=n,r.plain=$e({},n,{backgroundColor:null}),r};function et(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}const tt=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),Ze(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?Ke(e.theme,e.language):void 0;return t.themeDict=n})),Ze(this,"getLineProps",(function(e){var n=e.key,a=e.className,r=e.style,l=$e({},et(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),o=t.getThemeDict(t.props);return void 0!==o&&(l.style=o.plain),void 0!==r&&(l.style=void 0!==l.style?$e({},l.style,r):r),void 0!==n&&(l.key=n),a&&(l.className+=" "+a),l})),Ze(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,r=n.length,l=t.getThemeDict(t.props);if(void 0!==l){if(1===r&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===r&&!a)return l[n[0]];var o=a?{display:"inline-block"}:{},i=n.map((function(e){return l[e]}));return Object.assign.apply(Object,[o].concat(i))}})),Ze(this,"getTokenProps",(function(e){var n=e.key,a=e.className,r=e.style,l=e.token,o=$e({},et(e,["key","className","style","token"]),{className:"token "+l.types.join(" "),children:l.content,style:t.getStyleForToken(l),key:void 0});return void 0!==r&&(o.style=void 0!==o.style?$e({},o.style,r):r),void 0!==n&&(o.key=n),a&&(o.className+=" "+a),o})),Ze(this,"tokenize",(function(e,t,n,a){var r={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",r);var l=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),l}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,r=e.children,l=this.getThemeDict(this.props),o=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],a=[0],r=[e.length],l=0,o=0,i=[],c=[i];o>-1;){for(;(l=a[o]++)0?u:["plain"],s=d):(u=Je(u,d.type),d.alias&&(u=Je(u,d.alias)),s=d.content),"string"==typeof s){var m=s.split(Qe),p=m.length;i.push({types:u,content:m[0]});for(var f=1;f0&&o.getRangeAt(0);a.append(r),r.select(),r.selectionStart=0,r.selectionEnd=e.length;var c=!1;try{c=document.execCommand("copy")}catch(s){}r.remove(),i&&(o.removeAllRanges(),o.addRange(i)),l&&l.focus()}(t),o(!0),i.current=window.setTimeout((function(){o(!1)}),1e3)}),[t]);return(0,a.useEffect)((function(){return function(){return window.clearTimeout(i.current)}}),[]),a.createElement("button",{type:"button","aria-label":l?(0,p.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,p.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,p.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.A)("clean-btn",n,ct.copyButton,l&&ct.copyButtonCopied),onClick:c},a.createElement("span",{className:ct.copyButtonIcons,"aria-hidden":"true"},a.createElement(ot,{className:ct.copyButtonIcon}),a.createElement(it,{className:ct.copyButtonSuccessIcon})))}function ut(e){return a.createElement("svg",(0,m.A)({viewBox:"0 0 24 24"},e),a.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}))}const dt="wordWrapButtonIcon_Bwma",mt="wordWrapButtonEnabled_EoeP";function pt(e){var t=e.className,n=e.onClick,r=e.isEnabled,l=(0,p.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return a.createElement("button",{type:"button",onClick:n,className:(0,u.A)("clean-btn",t,r&&mt),"aria-label":l,title:l},a.createElement(ut,{className:dt,"aria-hidden":"true"}))}function ft(e){var t,n,r,l,o,i,c,s,d,p,f,v=e.children,h=e.className,g=void 0===h?"":h,b=e.metastring,E=e.title,y=e.showLineNumbers,A=e.language,N=(0,$.p)().prism,k=N.defaultLanguage,C=N.magicComments,L=null!=(t=null!=A?A:null==(n=g.split(" ").find((function(e){return e.startsWith("language-")})))?void 0:n.replace(/language-/,""))?t:k,T=Be(),_=(r=(0,a.useState)(!1),l=r[0],o=r[1],i=(0,a.useState)(!1),c=i[0],s=i[1],d=(0,a.useRef)(null),p=(0,a.useCallback)((function(){var e=d.current.querySelector("code");l?e.removeAttribute("style"):(e.style.whiteSpace="pre-wrap",e.style.overflowWrap="anywhere"),o((function(e){return!e}))}),[d,l]),f=(0,a.useCallback)((function(){var e=d.current,t=e.scrollWidth>e.clientWidth||d.current.querySelector("code").hasAttribute("style");s(t)}),[d]),Fe(d,f),(0,a.useEffect)((function(){f()}),[l,f]),(0,a.useEffect)((function(){return window.addEventListener("resize",f,{passive:!0}),function(){window.removeEventListener("resize",f)}}),[f]),{codeBlockRef:d,isEnabled:l,isCodeScrollable:c,toggle:p}),w=function(e){var t,n;return null!=(t=null==e||null==(n=e.match(Me))?void 0:n.groups.title)?t:""}(b)||E,x=Ie(v,{metastring:b,language:L,magicComments:C}),B=x.lineClassNames,O=x.code,j=null!=y?y:function(e){return Boolean(null==e?void 0:e.includes("showLineNumbers"))}(b);return a.createElement(De,{as:"div",className:(0,u.A)(g,L&&!g.includes("language-"+L)&&"language-"+L)},w&&a.createElement("div",{className:Re.codeBlockTitle},w),a.createElement("div",{className:Re.codeBlockContent},a.createElement(tt,(0,m.A)({},Ye,{theme:T,code:O,language:null!=L?L:"text"}),(function(e){var t=e.className,n=e.tokens,r=e.getLineProps,l=e.getTokenProps;return a.createElement("pre",{tabIndex:0,ref:_.codeBlockRef,className:(0,u.A)(t,Re.codeBlock,"thin-scrollbar")},a.createElement("code",{className:(0,u.A)(Re.codeBlockLines,j&&Re.codeBlockLinesWithNumbering)},n.map((function(e,t){return a.createElement(lt,{key:t,line:e,getLineProps:r,getTokenProps:l,classNames:B[t],showLineNumbers:j})}))))})),a.createElement("div",{className:Re.buttonGroup},(_.isEnabled||_.isCodeScrollable)&&a.createElement(pt,{className:Re.codeButton,onClick:function(){return _.toggle()},isEnabled:_.isEnabled}),a.createElement(st,{className:Re.codeButton,code:O}))))}var vt=["children"];function ht(e){var t=e.children,n=(0,j.A)(e,vt),r=(0,we.A)(),l=function(e){return a.Children.toArray(e).some((function(e){return(0,a.isValidElement)(e)}))?e:Array.isArray(e)?e.join(""):e}(t),o="string"==typeof l?ft:Ge;return a.createElement(o,(0,m.A)({key:String(r)},n),l)}var gt=n(9423);const bt="details_lb9f",Et="isBrowser_bmU9",yt="collapsibleContent_i85q";var At=["summary","children"];function Nt(e){return!!e&&("SUMMARY"===e.tagName||Nt(e.parentElement))}function kt(e,t){return!!e&&(e===t||kt(e.parentElement,t))}function Ct(e){var t=e.summary,n=e.children,r=(0,j.A)(e,At),l=(0,we.A)(),o=(0,a.useRef)(null),i=(0,Z.u)({initialState:!r.open}),c=i.collapsed,s=i.setCollapsed,u=(0,a.useState)(r.open),d=u[0],p=u[1],f=a.isValidElement(t)?t:a.createElement("summary",null,null!=t?t:"Details");return a.createElement("details",(0,m.A)({},r,{ref:o,open:d,"data-collapsed":c,className:(0,gt.A)(bt,l&&Et,r.className),onMouseDown:function(e){Nt(e.target)&&e.detail>1&&e.preventDefault()},onClick:function(e){e.stopPropagation();var t=e.target;Nt(t)&&kt(t,o.current)&&(e.preventDefault(),c?(s(!1),p(!0)):s(!0))}}),f,a.createElement(Z.N,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:function(e){s(e),p(!e)}},a.createElement("div",{className:yt},n)))}const Lt="details_b_Ee";function Tt(e){var t=Object.assign({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e));return a.createElement(Ct,(0,m.A)({},t,{className:(0,u.A)("alert alert--info",Lt,t.className)}))}function _t(e){return a.createElement(Ce,e)}const wt="containsTaskList_mC6p";const xt="img_ev3q";const Bt="admonition_LlT9",Ot="admonitionHeading_tbUL",jt="admonitionIcon_kALy",Ht="admonitionContent_S0QG";var Mt={note:{infimaClassName:"secondary",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:a.createElement(p.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:a.createElement(p.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:a.createElement(p.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:a.createElement(p.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 16 16"},a.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:a.createElement(p.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},St={secondary:"note",important:"info",success:"tip",warning:"danger"};function Pt(e){var t,n=function(e){var t=a.Children.toArray(e),n=t.find((function(e){var t;return a.isValidElement(e)&&"mdxAdmonitionTitle"===(null==(t=e.props)?void 0:t.mdxType)})),r=a.createElement(a.Fragment,null,t.filter((function(e){return e!==n})));return{mdxAdmonitionTitle:n,rest:r}}(e.children),r=n.mdxAdmonitionTitle,l=n.rest;return Object.assign({},e,{title:null!=(t=e.title)?t:r,children:l})}const Ut={head:function(e){var t=a.Children.map(e.children,(function(e){return a.isValidElement(e)?function(e){var t;if(null!=(t=e.props)&&t.mdxType&&e.props.originalType){var n=e.props,r=(n.mdxType,n.originalType,(0,j.A)(n,_e));return a.createElement(e.props.originalType,r)}return e}(e):e}));return a.createElement(Te.A,e,t)},code:function(e){var t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return a.Children.toArray(e.children).every((function(e){var n;return"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&t.includes(null==(n=e.props)?void 0:n.mdxType)}))?a.createElement("code",e):a.createElement(ht,e)},a:function(e){return a.createElement(f.A,e)},pre:function(e){var t;return a.createElement(ht,(0,a.isValidElement)(e.children)&&"code"===(null==(t=e.children.props)?void 0:t.originalType)?e.children.props:Object.assign({},e))},details:function(e){var t=a.Children.toArray(e.children),n=t.find((function(e){var t;return a.isValidElement(e)&&"summary"===(null==(t=e.props)?void 0:t.mdxType)})),r=a.createElement(a.Fragment,null,t.filter((function(e){return e!==n})));return a.createElement(Tt,(0,m.A)({},e,{summary:n}),r)},ul:function(e){return a.createElement("ul",(0,m.A)({},e,{className:(t=e.className,(0,u.A)(t,(null==t?void 0:t.includes("contains-task-list"))&&wt))}));var t},img:function(e){return a.createElement("img",(0,m.A)({loading:"lazy"},e,{className:(t=e.className,(0,u.A)(t,xt))}));var t},h1:function(e){return a.createElement(_t,(0,m.A)({as:"h1"},e))},h2:function(e){return a.createElement(_t,(0,m.A)({as:"h2"},e))},h3:function(e){return a.createElement(_t,(0,m.A)({as:"h3"},e))},h4:function(e){return a.createElement(_t,(0,m.A)({as:"h4"},e))},h5:function(e){return a.createElement(_t,(0,m.A)({as:"h5"},e))},h6:function(e){return a.createElement(_t,(0,m.A)({as:"h6"},e))},admonition:function(e){var t=Pt(e),n=t.children,r=t.type,l=t.title,o=t.icon,i=function(e){var t,n=null!=(t=St[e])?t:e,a=Mt[n];return a||(console.warn('No admonition config found for admonition type "'+n+'". Using Info as fallback.'),Mt.info)}(r),c=null!=l?l:i.label,s=i.iconComponent,d=null!=o?o:a.createElement(s,null);return a.createElement("div",{className:(0,u.A)(y.G.common.admonition,y.G.common.admonitionType(e.type),"alert","alert--"+i.infimaClassName,Bt)},a.createElement("div",{className:Ot},a.createElement("span",{className:jt},d),c),a.createElement("div",{className:Ht},n))},mermaid:function(){return null}};function It(e){var t=e.children;return a.createElement(Le.xA,{components:Ut},t)}function Vt(e){var t,n,r,l,o=e.children,i=(t=c(),n=t.metadata,r=t.frontMatter,l=t.contentTitle,r.hide_title||void 0!==l?null:n.title);return a.createElement("div",{className:(0,u.A)(y.G.docs.docMarkdown,"markdown")},i&&a.createElement("header",null,a.createElement(Ce,{as:"h1"},i)),a.createElement(It,null,o))}var zt=n(7460),Dt=n(9169),Rt=n(6025);function Gt(e){return a.createElement("svg",(0,m.A)({viewBox:"0 0 24 24"},e),a.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const Wt="breadcrumbHomeIcon_YNFT";function Ft(){var e=(0,Rt.A)("/");return a.createElement("li",{className:"breadcrumbs__item"},a.createElement(f.A,{"aria-label":(0,p.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},a.createElement(Gt,{className:Wt})))}const qt="breadcrumbsContainer_Z_bl";function Yt(e){var t=e.children,n=e.href,r="breadcrumbs__link";return e.isLast?a.createElement("span",{className:r,itemProp:"name"},t):n?a.createElement(f.A,{className:r,href:n,itemProp:"item"},a.createElement("span",{itemProp:"name"},t)):a.createElement("span",{className:r},t)}function Zt(e){var t=e.children,n=e.active,r=e.index,l=e.addMicrodata;return a.createElement("li",(0,m.A)({},l&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,a.createElement("meta",{itemProp:"position",content:String(r+1)}))}function $t(){var e=(0,zt.OF)(),t=(0,Dt.Dt)();return e?a.createElement("nav",{className:(0,u.A)(y.G.docs.docBreadcrumbs,qt),"aria-label":(0,p.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},a.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&a.createElement(Ft,null),e.map((function(t,n){var r=n===e.length-1;return a.createElement(Zt,{key:n,active:r,index:n,addMicrodata:!!t.href},a.createElement(Yt,{href:t.href,isLast:r},t.label))})))):null}const Qt="docItemContainer_Djhp",Xt="docItemCol_VOVn";function Jt(e){var t,n,r,l,o,i,s=e.children,m=(t=c(),n=t.frontMatter,r=t.toc,l=(0,d.l)(),o=n.hide_table_of_contents,i=!o&&r.length>0,{hidden:o,mobile:i?a.createElement(he,null):void 0,desktop:!i||"desktop"!==l&&"ssr"!==l?void 0:a.createElement(ye,null)});return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,u.A)("col",!m.hidden&&Xt)},a.createElement(_,null),a.createElement("div",{className:Qt},a.createElement("article",null,a.createElement($t,null),a.createElement(w,null),m.mobile,a.createElement(Vt,null,s),a.createElement(Y,null)),a.createElement(g,null))),m.desktop&&a.createElement("div",{className:"col col--3"},m.desktop))}function Kt(e){var t="docs-doc-id-"+e.content.metadata.unversionedId,n=e.content;return a.createElement(i,{content:e.content},a.createElement(r.e3,{className:t},a.createElement(s,null),a.createElement(Jt,null,a.createElement(n,null))))}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>o,r:()=>i});var a=n(6540),r=n(3807),l=a.createContext(null);function o(e){var t=e.children,n=e.version;return a.createElement(l.Provider,{value:n},t)}function i(){var e=(0,a.useContext)(l);if(null===e)throw new r.dV("DocsVersionProvider");return e}},8426:(e,t)=>{function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,r,l]=t;if(a&&l){a=parseInt(a),l=parseInt(l);const e=a{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(n(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(i=this._events[e]).length,a=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=s;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){a=c;break}if(a<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},4103:(e,t,r)=>{"use strict";var n=r(6571),i=r(3371),a=r(7691);function s(e,t,r){return new n(e,t,r)}s.version=r(6938),s.AlgoliaSearchHelper=n,s.SearchParameters=i,s.SearchResults=a,e.exports=s},6732:(e,t,r)=>{"use strict";var n=r(2733);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(3014)(i,n),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},1673:(e,t,r)=>{"use strict";var n=r(9110),i=r(1383),a=r(317),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var i=""+r,a=e[t]?e[t].concat(i):[i],c={};return c[t]=a,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return a(e)?{}:e;if("string"==typeof t)return i(e,[t]);if("function"==typeof t){var n=!1,s=Object.keys(e).reduce((function(i,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(n=!0),i[a]=c,i}),{});return n?s:e}},isRefined:function(e,t,r){var n=Boolean(e[t])&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=s},3371:(e,t,r)=>{"use strict";var n=r(4728),i=r(9110),a=r(4843),s=r(849),c=r(7507),u=r(1383),o=r(317),h=r(2208),f=r(1673);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return n({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&o(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):o(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=c(r);if(this.isNumericRefined(e,t,i))return this;var a=n({},this.numericRefinements);return a[e]=n({},a[e]),a[e][t]?(a[e][t]=a[e][t].slice(),a[e][t].push(i)):a[e][t]=[i],this.setQueryParameters({numericRefinements:a})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){var n=r;return void 0!==n?this.isNumericRefined(e,t,n)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,i){return i===e&&r.op===t&&l(r.val,c(n))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return o(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var a=r[i],s={};return a=a||{},Object.keys(a).forEach((function(r){var n=a[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),s[r]=c})),n[i]=s,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return Boolean(this.numericRefinements[e]);var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var i,a,u=c(r),o=void 0!==(i=this.numericRefinements[e][t],a=u,s(i,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets())},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0})))},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return s(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},6673:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var s=e.hierarchicalFacets[r],o=e.hierarchicalFacetsRefinements[s.name]&&e.hierarchicalFacetsRefinements[s.name][0]||"",h=e._getHierarchicalFacetSeparator(s),f=e._getHierarchicalRootPath(s),l=e._getHierarchicalShowParentLevel(s),m=a(e._getHierarchicalFacetSortBy(s)),d=t.every((function(e){return e.exhaustive})),v=function(e,t,r,a,s){return function(o,h,f){var l=o;if(f>0){var m=0;for(l=o;m{"use strict";var n=r(4728),i=r(9110),a=r(8601),s=r(8965),c=r(849),u=r(3917),o=r(7577),h=r(2909),f=h.escapeFacetValue,l=h.unescapeFacetValue,m=r(6673);function d(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function v(e,t,r){t&&t[r]&&(e.stats=t[r])}function p(e,t,r){var a=t[0];this._rawResults=t;var o=this;Object.keys(a).forEach((function(e){o[e]=a[e]})),Object.keys(r||{}).forEach((function(e){o[e]=r[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var h=e.getRefinedDisjunctiveFacets(),f=d(e.facets),p=d(e.disjunctiveFacets),g=1,y=a.facets||{};Object.keys(y).forEach((function(t){var r,n,i=y[t],s=(r=e.hierarchicalFacets,n=t,c(r,(function(e){return(e.attributes||[]).indexOf(n)>-1})));if(s){var h=s.attributes.indexOf(t),l=u(e.hierarchicalFacets,(function(e){return e.name===s.name}));o.hierarchicalFacets[l][h]={attribute:t,data:i,exhaustive:a.exhaustiveFacetsCount}}else{var m,d=-1!==e.disjunctiveFacets.indexOf(t),g=-1!==e.facets.indexOf(t);d&&(m=p[t],o.disjunctiveFacets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},v(o.disjunctiveFacets[m],a.facets_stats,t)),g&&(m=f[t],o.facets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},v(o.facets[m],a.facets_stats,t))}})),this.hierarchicalFacets=s(this.hierarchicalFacets),h.forEach((function(r){var s=t[g],c=s&&s.facets?s.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(c).forEach((function(t){var r,f=c[t];if(h){r=u(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=u(o.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;o.hierarchicalFacets[r][m].data=n({},o.hierarchicalFacets[r][m].data,f)}else{r=p[t];var d=a.facets&&a.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:i({},f,d),exhaustive:s.exhaustiveFacetsCount},v(o.disjunctiveFacets[r],s.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(n){!o.disjunctiveFacets[r].data[n]&&e.disjunctiveFacetsRefinements[t].indexOf(l(n))>-1&&(o.disjunctiveFacets[r].data[n]=0)}))}})),g++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),a=e._getHierarchicalFacetSeparator(n),s=e.getHierarchicalRefinement(r);0===s.length||s[0].split(a).length<2||t.slice(g).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var c=r[t],h=u(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=u(o.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(s.length>0){var m=s[0].split(a)[0];l[m]=o.hierarchicalFacets[h][f].data[m]}o.hierarchicalFacets[h][f].data=i(l,c,o.hierarchicalFacets[h][f].data)}})),g++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],n=f[t];o.facets[n]={name:t,data:y[t],exhaustive:a.exhaustiveFacetsCount},r.forEach((function(e){o.facets[n]=o.facets[n]||{name:t},o.facets[n].data=o.facets[n].data||{},o.facets[n].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=s(this.facets),this.disjunctiveFacets=s(this.disjunctiveFacets),this._state=e}function g(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=c(e.facets,r);return n?Object.keys(n.data).map((function(r){var i=f(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isFacetRefined(t,i),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=c(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){var n=f(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,n)}})):[]}if(e._state.isHierarchicalFacet(t)){var a=c(e.hierarchicalFacets,r);if(!a)return a;var s=e._state.getHierarchicalFacetByName(t),u=e._state._getHierarchicalFacetSeparator(s),o=l(e._state.getHierarchicalRefinement(t)[0]||"");0===o.indexOf(s.rootPath)&&(o=o.replace(s.rootPath+u,""));var h=o.split(u);return h.unshift(t),y(a,h,0),a}}function y(e,t,r){e.isRefined=e.name===t[r],e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return R(e,t,r,n+1)})),s=e(a,r[n]);return i({data:s},t)}function F(e,t){var r=c(e,(function(e){return e.name===t}));return r&&r.stats}function b(e,t,r,n,i){var a=c(i,(function(e){return e.name===r})),s=a&&a.data&&a.data[n]?a.data[n]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:n,count:s,exhaustive:u}}p.prototype.getFacetByName=function(e){function t(t){return t.name===e}return c(this.facets,t)||c(this.disjunctiveFacets,t)||c(this.hierarchicalFacets,t)},p.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],p.prototype.getFacetValues=function(e,t){var r=g(this,e);if(r){var n,s=i({},t,{sortBy:p.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),c=this;if(Array.isArray(r))n=[e];else n=c._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(c,t);if(r)return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)})),r=r.filter((function(e){return e}));var s,c=t.sortRemainingBy;return"hidden"===c?r:(s="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(a(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,p.DEFAULT_SORT);return a(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},p.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},p.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(b(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(b(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(b(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(i),s=r.split(a),u=c(n,(function(e){return e.name===t})),o=s.reduce((function(e,t){var r=e&&c(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=p},6571:(e,t,r)=>{"use strict";var n=r(3371),i=r(7691),a=r(6732),s=r(9228),c=r(2733),u=r(3014),o=r(317),h=r(1383),f=r(4728),l=r(6938),m=r(2909).escapeFacetValue;function d(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.setClient(e);var i=r||{};i.index=t,this.state=n.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function v(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function p(){return this.state.page}u(d,c),d.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},d.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},d.prototype.getQuery=function(){var e=this.state;return s._getHitsSearchParams(e)},d.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=s._getQueries(r.index,r),a=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),{content:new i(r,e.results),state:r,_originalResponse:e}}),(function(e){throw a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(null,new i(r,e.results),r)})).catch((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(e,null,r)}))},d.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=f({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:h(s._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var c=this.client.initIndex(n.index);if("function"!=typeof c.findAnswers)throw new Error(a);return c.findAnswers(n.query,e.queryLanguages,i)},d.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues,a="function"==typeof this.client.initIndex;if(!i&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(n||{}),u=c.isDisjunctiveFacet(e),o=s.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var h,f=this;return i?h=this.client.searchForFacetValues([{indexName:c.index,params:o}]):a?h=this.client.initIndex(c.index).searchForFacetValues(o):(delete o.facetName,h=this.client.search([{type:"facet",facet:e,indexName:c.index,params:o}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t}),h.then((function(t){return f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=m(t.value),t.isRefined=u?c.isDisjunctiveFacetRefined(e,t.escapedValue):c.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),e}))},d.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},d.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},d.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},d.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},d.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},d.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},d.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},d.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},d.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},d.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},d.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},d.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},d.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},d.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},d.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},d.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},d.prototype.setCurrentPage=v,d.prototype.setPage=v,d.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},d.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},d.prototype.setState=function(e){return this._change({state:n.make(e),isPageReset:!1}),this},d.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new n(e),this},d.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},d.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},d.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},d.prototype.hasTag=function(e){return this.state.isTagRefined(e)},d.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},d.prototype.getIndex=function(){return this.state.index},d.prototype.getCurrentPage=p,d.prototype.getPage=p,d.prototype.getTags=function(){return this.state.tagRefinements},d.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},d.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},d.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},d.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=s._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=n.index?s._getQueries(n.index,n):[];return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),a=Array.prototype.concat.apply(n,i),c=this._queryId++;if(this._currentNbQueries++,!a.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,r,c));try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,c)).catch(this._dispatchAlgoliaError.bind(this,c))}catch(u){this.emit("error",{error:u})}},d.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},d.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},d.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},d.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.client=e),this},d.prototype.getClient=function(){return this.client},d.prototype.derive=function(e){var t=new a(this,e);return this.derivedHelpers.push(t),t},d.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},d.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=d},8965:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},9110:e=>{"use strict";e.exports=function(){var e=Array.prototype.slice.call(arguments);return e.reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},2909:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},849:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r{"use strict";var n=r(849);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var i=t.split(":"),a=n(r,(function(e){return e[0]===i[0]}));return i.length>1||!a?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},3014:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},4843:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},4728:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)&&"__proto__"!==i&&"constructor"!==i){var a=n[i],s=e[i];void 0!==s&&void 0===a||(t(s)&&t(a)?e[i]=r(s,a):e[i]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},1383:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},8601:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,a=null===t;if(!a&&e>t||n&&i||!r)return 1;if(!n&&e=n.length?a:"desc"===n[i]?-a:a}return e.index-r.index})),i.map((function(e){return e.value}))}},7507:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},9228:(e,t,r)=>{"use strict";var n=r(4728);function i(e){return Object.keys(e).sort((function(e,t){return e.localeCompare(t)})).reduce((function(t,r){return t[r]=e[r],t}),{})}var a={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:a._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:a._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var i=t.getHierarchicalFacetByName(n),s=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(i);if(s.length>0&&s[0].split(c).length>1){var u=s[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:i.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);u.forEach((function(n,s){var c=a._getDisjunctiveFacetSearchParams(t,n.attribute,0===s);function o(e){return i.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!o(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||o(t)||e.push(t),e}),[]),f=u[s-1];c.facetFilters=s>0?h.concat(f.attribute+":"+f.value):h.length>0?h:void 0,r.push({indexName:e,params:c})}))}})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(a._getHitsHierarchicalFacetsAttributes(e)),r=a._getFacetFilters(e),s=a._getNumericFilters(e),c=a._getTagFilters(e),u={facets:t.indexOf("*")>-1?["*"]:t,tagFilters:c};return r.length>0&&(u.facetFilters=r),s.length>0&&(u.numericFilters=s),i(n({},e.getQueryParams(),u))},_getDisjunctiveFacetSearchParams:function(e,t,r){var s=a._getFacetFilters(e,t,r),c=a._getNumericFilters(e,t),u=a._getTagFilters(e),o={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};u.length>0&&(o.tagFilters=u);var h=e.getHierarchicalFacetByName(t);return o.facets=h?a._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(o.numericFilters=c),s.length>0&&(o.facetFilters=s),i(n({},e.getQueryParams(),o))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var a=i[e]||[];t!==n&&a.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).forEach((function(e){(i[e]||[]).forEach((function(t){n.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).forEach((function(e){(a[e]||[]).forEach((function(t){n.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).forEach((function(i){var a=(c[i]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===a.indexOf(h)||!f&&!0===r||f&&f.split(h).length===a.split(h).length)return;f?(u=f.split(h).length-1,a=f):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&n.push([s+":"+a])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),a=n.split(i).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),a=0;return i&&(a=i.split(n).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,s){var c=s.isDisjunctiveFacet(e)?s.clearRefinements(e):s,u={facetQuery:t,facetName:e};return"number"==typeof r&&(u.maxFacetHits=r),i(n({},a._getHitsSearchParams(c),u))}};e.exports=a},2208:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},6938:e=>{"use strict";e.exports="3.13.3"},3643:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(n=(s=c.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw a}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){c();var t=JSON.stringify(e);return a()[t]})).then((function(e){return Promise.all([e?e.value:t(),void 0!==e])})).then((function(e){var t=i(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=a();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=n(),c=i&&i.miss||function(){return Promise.resolve()};return s.then((function(e){return c(e)})).then((function(){return s}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},v=1,p=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function P(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===v||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function j(e,t,n,i){var s=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,a){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:O(s)};var m={data:c,headers:u,method:o,url:E(h,n.path,f),connectTimeout:a(l,e.timeouts.connect),responseTimeout:a(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return s.push(t),t},v={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:p))]).then((function(){return t(r,a)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,O(s))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,v)}))};return P(e.hostsCache,t).then((function(e){return m(a(e.statelessHosts).reverse(),e.getTimeout)}))}function _(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function E(e,t,r){var n=x(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function x(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function O(e){return e.map((function(e){return w(e)}))}function w(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var A=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,s=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:s,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},N=function(e){return function(t,r){return t.method===F?e.transporter.read(t,r):e.transporter.write(t,r)}},H=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},S=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:x(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},T=function(e){return function(t,i){return Promise.all(t.map((function(t){var a=t.params,s=a.facetName,c=a.facetQuery,u=n(a,["facetName","facetQuery"]);return H(e)(t.indexName,{methods:{searchForFacetValues:k}}).searchForFacetValues(s,c,r(r({},i),u))})))}},Q=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},C=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},k=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,I=2,q=3;function V(e,t,n){var i,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=q,{debug:function(e,t){return D>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return I>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[s({key:"".concat("4.18.0","-").concat(e)}),u()]}),userAgent:_("4.18.0").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return A(r(r(r({},a),n),{},{methods:{search:S,searchForFacetValues:T,multipleQueries:S,multipleSearchForFacetValues:T,customRequest:N,initIndex:function(e){return function(t){return H(e)(t,{methods:{search:C,searchForFacetValues:k,findAnswers:Q}})}}}}))}return V.version="4.18.0",V}()},5598:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>M});var n=r(6540);function i(e){var t,r,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tr.pluralForms.length&&console.error("For locale="+r.locale+", a maximum of "+r.pluralForms.length+" plural forms are expected ("+r.pluralForms.join(",")+"), but the message contains "+n.length+": "+e);var i=r.select(t),a=r.pluralForms.indexOf(i);return n[Math.min(a,n.length-1)]}(r,t,e)}}}var F=r(4255),b=r(3807),P=r(9024),j=r(481),_=r(1312),E=r(8126),x=r(1062),O=r(8511);const w="searchQueryInput_u2C7",A="searchVersionInput_m0Ui",N="searchResultsColumn_JPFH",H="algoliaLogo_rT1R",S="algoliaLogoPathFill_WdUC",T="searchResultItem_Tv2o",Q="searchResultItemHeading_KbCB",C="searchResultItemPath_lhe1",k="searchResultItemSummary_AEaO",D="searchQueryColumn_RTkw",I="searchVersionColumn_ypXd",q="searchLogoColumn_rJIA",V="loadingSpinner_XVxU",L="loader_vvXV";function B(e){var t=e.docsSearchVersionsHelpers,r=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return n.createElement("div",{className:a("col","col--3","padding-left--none",I)},r.map((function(e){var i=e[0],a=e[1],s=r.length>1?i+": ":"";return n.createElement("select",{key:i,onChange:function(e){return t.setSearchVersion(i,e.target.value)},defaultValue:t.searchVersions[i],className:A},a.versions.map((function(e,t){return n.createElement("option",{key:t,label:""+s+e.label,value:e.name})})))})))}function z(){var e,t,r,i,s,u,v=(0,d.A)().i18n.currentLocale,p=(0,E.c)().algolia,g=p.appId,y=p.apiKey,P=p.indexName,A=(0,x.C)(),I=(e=R().selectMessage,function(t){return e(t,(0,_.T)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}),z=(t=(0,m.Gy)(),r=(0,n.useState)((function(){return Object.entries(t).reduce((function(e,t){var r,n=t[0],i=t[1];return Object.assign({},e,((r={})[n]=i.versions[0].name,r))}),{})})),i=r[0],s=r[1],u=Object.values(t).some((function(e){return e.versions.length>1})),{allDocsData:t,versioningEnabled:u,searchVersions:i,setSearchVersion:function(e,t){return s((function(r){var n;return Object.assign({},r,((n={})[e]=t,n))}))}}),M=(0,F.b)(),J=M[0],W=M[1],U={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},K=(0,n.useReducer)((function(e,t){switch(t.type){case"reset":return U;case"loading":return Object.assign({},e,{loading:!0});case"update":return J!==t.value.query?e:Object.assign({},t.value,{items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)});case"advance":var r=e.totalPages>e.lastPage+1;return Object.assign({},e,{lastPage:r?e.lastPage+1:e.lastPage,hasMore:r});default:return e}}),U),X=K[0],G=K[1],Z=o()(g,y),$=c()(Z,P,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});$.on("result",(function(e){var t=e.results,r=t.query,n=t.hits,i=t.page,a=t.nbHits,s=t.nbPages;if(""!==r&&Array.isArray(n)){var c=function(e){return e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match")},u=n.map((function(e){var t=e.url,r=e._highlightResult.hierarchy,n=e._snippetResult,i=void 0===n?{}:n,a=Object.keys(r).map((function(e){return c(r[e].value)}));return{title:a.pop(),url:A(t),summary:i.content?c(i.content.value)+"...":"",breadcrumbs:a}}));G({type:"update",value:{items:u,query:r,totalResults:a,totalPages:s,lastPage:i,hasMore:s>i+1,loading:!1}})}else G({type:"reset"})}));var Y=(0,n.useState)(null),ee=Y[0],te=Y[1],re=(0,n.useRef)(0),ne=(0,n.useRef)(h.A.canUseIntersectionObserver&&new IntersectionObserver((function(e){var t=e[0],r=t.isIntersecting,n=t.boundingClientRect.y;r&&re.current>n&&G({type:"advance"}),re.current=n}),{threshold:1})),ie=function(){return J?(0,_.T)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:J}):(0,_.T)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})},ae=(0,b._q)((function(e){void 0===e&&(e=0),$.addDisjunctiveFacetRefinement("docusaurus_tag","default"),$.addDisjunctiveFacetRefinement("language",v),Object.entries(z.searchVersions).forEach((function(e){var t=e[0],r=e[1];$.addDisjunctiveFacetRefinement("docusaurus_tag","docs-"+t+"-"+r)})),$.setQuery(J).setPage(e).search()}));return(0,n.useEffect)((function(){if(ee){var e=ne.current;return e?(e.observe(ee),function(){return e.unobserve(ee)}):function(){return!0}}}),[ee]),(0,n.useEffect)((function(){G({type:"reset"}),J&&(G({type:"loading"}),setTimeout((function(){ae()}),300))}),[J,z.searchVersions,ae]),(0,n.useEffect)((function(){X.lastPage&&0!==X.lastPage&&ae(X.lastPage)}),[ae,X.lastPage]),n.createElement(O.A,null,n.createElement(f.A,null,n.createElement("title",null,(0,j.s)(ie())),n.createElement("meta",{property:"robots",content:"noindex, follow"})),n.createElement("div",{className:"container margin-vert--lg"},n.createElement("h1",null,ie()),n.createElement("form",{className:"row",onSubmit:function(e){return e.preventDefault()}},n.createElement("div",{className:a("col",D,{"col--9":z.versioningEnabled,"col--12":!z.versioningEnabled})},n.createElement("input",{type:"search",name:"q",className:w,placeholder:(0,_.T)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,_.T)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:function(e){return W(e.target.value)},value:J,autoComplete:"off",autoFocus:!0})),z.versioningEnabled&&n.createElement(B,{docsSearchVersionsHelpers:z})),n.createElement("div",{className:"row"},n.createElement("div",{className:a("col","col--8",N)},!!X.totalResults&&I(X.totalResults)),n.createElement("div",{className:a("col","col--4","text--right",q)},n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.algolia.com/","aria-label":(0,_.T)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"})},n.createElement("svg",{viewBox:"0 0 168 24",className:H},n.createElement("g",{fill:"none"},n.createElement("path",{className:S,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),n.createElement("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),n.createElement("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})))))),X.items.length>0?n.createElement("main",null,X.items.map((function(e,t){var r=e.title,i=e.url,s=e.summary,c=e.breadcrumbs;return n.createElement("article",{key:t,className:T},n.createElement("h2",{className:Q},n.createElement(l.A,{to:i,dangerouslySetInnerHTML:{__html:r}})),c.length>0&&n.createElement("nav",{"aria-label":"breadcrumbs"},n.createElement("ul",{className:a("breadcrumbs",C)},c.map((function(e,t){return n.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}})})))),s&&n.createElement("p",{className:k,dangerouslySetInnerHTML:{__html:s}}))}))):[J&&!X.loading&&n.createElement("p",{key:"no-results"},n.createElement(_.A,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!X.loading&&n.createElement("div",{key:"spinner",className:V})],X.hasMore&&n.createElement("div",{className:L,ref:te},n.createElement(_.A,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}function M(){return n.createElement(P.e3,{className:"search-page-wrapper"},n.createElement(z,null))}}}]); \ No newline at end of file diff --git a/build/assets/js/1a4e3797.16a0d4ea.js.LICENSE.txt b/build/assets/js/1a4e3797.16a0d4ea.js.LICENSE.txt new file mode 100644 index 00000000..7c6390ff --- /dev/null +++ b/build/assets/js/1a4e3797.16a0d4ea.js.LICENSE.txt @@ -0,0 +1 @@ +/*! algoliasearch-lite.umd.js | 4.18.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ diff --git a/build/assets/js/1aacdf1a.a31c259b.js b/build/assets/js/1aacdf1a.a31c259b.js new file mode 100644 index 00000000..74473e56 --- /dev/null +++ b/build/assets/js/1aacdf1a.a31c259b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[3057],{5680:(e,n,a)=>{a.d(n,{xA:()=>l,yg:()=>f});var t=a(6540);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function o(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function i(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=t.createContext({}),p=function(e){var n=t.useContext(c),a=n;return e&&(a="function"==typeof e?e(n):i(i({},n),e)),a},l=function(e){var n=p(e.components);return t.createElement(c.Provider,{value:n},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},d=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=p(a),d=r,f=u["".concat(c,".").concat(d)]||u[d]||g[d]||o;return a?t.createElement(f,i(i({ref:n},l),{},{components:a})):t.createElement(f,i({ref:n},l))}));function f(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{a.r(n),a.d(n,{assets:()=>u,contentTitle:()=>p,default:()=>f,frontMatter:()=>c,metadata:()=>l,toc:()=>g});var t=a(8168),r=a(8587),o=(a(6540),a(5680)),i=a(6025),s=["components"],c={id:"create-a-new-version-for-an-appliance",title:"Create a new version of an appliance",sidebar_label:"Create a new version for an appliance"},p=void 0,l={unversionedId:"using-gns3/advanced/create-a-new-version-for-an-appliance",id:"using-gns3/advanced/create-a-new-version-for-an-appliance",title:"Create a new version of an appliance",description:"Manufacturers release new versions of their appliances every day. The GNS3 community does not always know about these new releases and updates to the appliance file, but GNS3 allows you to use an unknown version of an appliance.",source:"@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/create-a-new-version-for-an-appliance",permalink:"/docs/using-gns3/advanced/create-a-new-version-for-an-appliance",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md",tags:[],version:"current",frontMatter:{id:"create-a-new-version-for-an-appliance",title:"Create a new version of an appliance",sidebar_label:"Create a new version for an appliance"},sidebar:"someSidebar",previous:{title:"Settings profiles",permalink:"/docs/using-gns3/advanced/settings-profiles"},next:{title:"Port name formatting",permalink:"/docs/using-gns3/advanced/port-name-formatting"}},u={},g=[{value:"Create a new version from the appliances wizard",id:"create-a-new-version-from-the-appliances-wizard",level:2},{value:"Contribute your changes",id:"contribute-your-changes",level:2}],d={toc:g};function f(e){var n=e.components,a=(0,r.A)(e,s);return(0,o.yg)("wrapper",(0,t.A)({},d,a,{components:n,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"Manufacturers release new versions of their appliances every day. The GNS3 community does not always know about these new releases and updates to the appliance file, but GNS3 allows you to use an unknown version of an appliance."),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"This version of the appliance has not tested and might not work in GNS3 don\u2019t hesitate to share your feedback on the forum ",(0,o.yg)("a",{parentName:"p",href:"https://gns3.com/community"},"https://gns3.com/community"))),(0,o.yg)("h2",{id:"create-a-new-version-from-the-appliances-wizard"},"Create a new version from the appliances wizard"),(0,o.yg)("p",null,"Import the ",(0,o.yg)("inlineCode",{parentName:"p"},".gns3a")," file as usual. When GNS3 list all the version at appliance import click on Create a new version."),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/create-a-new-version-for-an-appliance/1.jpg")}),(0,o.yg)("p",null,"Give your version a name"),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/create-a-new-version-for-an-appliance/2.jpg")}),(0,o.yg)("p",null,"After that, you can import your appliance disk"),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/create-a-new-version-for-an-appliance/3.jpg")}),(0,o.yg)("p",null,"After that, it will work like any other appliance."),(0,o.yg)("h2",{id:"contribute-your-changes"},"Contribute your changes"),(0,o.yg)("p",null,"If you test a new version we encourage you to contribute your changes to the community. You can do it by opening an issue on ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-registry"},"https://github.com/GNS3/gns3-registry")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/1be23e60.328910d8.js b/build/assets/js/1be23e60.328910d8.js new file mode 100644 index 00000000..21f36981 --- /dev/null +++ b/build/assets/js/1be23e60.328910d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[537],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>h});var o=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),u=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(n),g=r,h=c["".concat(s,".").concat(g)]||c[g]||d[g]||i;return n?o.createElement(h,a(a({ref:t},p),{},{components:n})):o.createElement(h,a({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,a[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>s,metadata:()=>p,toc:()=>d});var o=n(8168),r=n(8587),i=(n(6540),n(5680)),a=n(6025),l=["components"],s={id:"remote-server",title:"Install GNS3 on a remote server",sidebar_label:"Remote Server"},u=void 0,p={unversionedId:"getting-started/installation/remote-server",id:"getting-started/installation/remote-server",title:"Install GNS3 on a remote server",description:"If you need more resources for bigger topologies, you can install GNS3 on a remote server. This could be on:",source:"@site/docs/getting-started/installation/remote-server.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/remote-server",permalink:"/docs/getting-started/installation/remote-server",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/remote-server.md",tags:[],version:"current",frontMatter:{id:"remote-server",title:"Install GNS3 on a remote server",sidebar_label:"Remote Server"},sidebar:"someSidebar",previous:{title:"ESXi",permalink:"/docs/getting-started/installation/esxi"},next:{title:"Download the GNS3 VM",permalink:"/docs/getting-started/installation/download-gns3-vm"}},c={},d=[{value:"Why a VPN?",id:"why-a-vpn",level:2},{value:"VPN Setup",id:"vpn-setup",level:2},{value:"VPN connection on Linux",id:"vpn-connection-on-linux",level:3},{value:"VPN connection on Windows",id:"vpn-connection-on-windows",level:3},{value:"VPN connection on Mac OSX",id:"vpn-connection-on-mac-osx",level:3},{value:"Configure GNS3 in order to use the new server",id:"configure-gns3-in-order-to-use-the-new-server",level:2}],g={toc:d};function h(e){var t=e.components,n=(0,r.A)(e,l);return(0,i.yg)("wrapper",(0,o.A)({},g,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"If you need more resources for bigger topologies, you can install GNS3 on a remote server. This could be on:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"your own server"),(0,i.yg)("li",{parentName:"ul"},"a bare metal hosting provider"),(0,i.yg)("li",{parentName:"ul"},"a cloud provider")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Most cloud providers (AWS, Azure...) block access to the CPU virtualization instructions and your VM will be slow and may not work when using Qemu. This limitation is due to the fact that you are already in a VM (nested virtualization)")),(0,i.yg)("admonition",{type:"caution"},(0,i.yg)("p",{parentName:"admonition"},"Run these instructions only on a server dedicated to GNS3 otherwise you need to manually setup GNS3 on your server.")),(0,i.yg)("p",null,"The easiest way to install GNS3 on this server is to install it on a fresh Ubuntu 18.04 LTS installation. "),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Ubuntu 16.04 LTS is deprecated, you will receive a warning similar to the following: 'DEPRECATION WARNING This Linux distribution (ubuntu xenial) reached end-of-life and is no longer supported by this script.'")),(0,i.yg)("p",null,"As root run these commands:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"cd /tmp\ncurl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh > gns3-remote-install.sh\nbash gns3-remote-install.sh --with-openvpn --with-iou --with-i386-repository\n")),(0,i.yg)("p",null,"This will install all the required packages and setup a VPN. When the installation is done, reboot the server. The details of arguments that you can pass to the script are:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"--with-openvpn: Install Open VPN to allow access over insecure network"),(0,i.yg)("li",{parentName:"ul"},"--with-iou: Install IOU"),(0,i.yg)("li",{parentName:"ul"},"--with-i386-repository: Add i386 repositories require by IOU if they are not available on the system. Warning this will replace your source.list in order to use official ubuntu mirror"),(0,i.yg)("li",{parentName:"ul"},"--help: Show the help"),(0,i.yg)("li",{parentName:"ul"},"--unstable: Use the unstable repository (for installing beta, release candidate\u2026)")),(0,i.yg)("p",null,"The options with-i386-repository is required only for certain providers where the ubuntu mirror doesn't include 32 bits package (example: ",(0,i.yg)("a",{parentName:"p",href:"gns3-on-equinix"},"Equinix Metal"),") but you can use it without problem on any host. The 32 bit package are require for IOU."),(0,i.yg)("h2",{id:"why-a-vpn"},"Why a VPN?"),(0,i.yg)("p",null,"If the server is exposed on the internet, you need to setup a VPN to avoid anybody taking control of your GNS3 and the emulators. GNS3 itself could be secured via user and password over HTTPS but because you need to be able to telnet on the routers we need to expose their console on the network. That's why we highly recommend to use a VPN to protect the access to the telnet console ."),(0,i.yg)("h2",{id:"vpn-setup"},"VPN Setup"),(0,i.yg)("p",null,"The next time you log in you will see this message:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/remote-server/1.jpg")}),(0,i.yg)("p",null,"Download the certificate. You can also find the certificate in /root/client.ovpn"),(0,i.yg)("h3",{id:"vpn-connection-on-linux"},"VPN connection on Linux"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"# sudo apt-get install openvpn\n# sudo openvpn client.ovpn\nTue Apr 25 17:12:48 2017 [OpenVPN] Peer Connection Initiated with [AF_INET]X.X.X.X:1194\nTue Apr 25 17:12:51 2017 TUN/TAP device tun0 opened\nTue Apr 25 17:12:51 2017 Initialization Sequence Completed\n")),(0,i.yg)("p",null,"If the VPN works, this page should work:\n",(0,i.yg)("a",{parentName:"p",href:"http://172.16.253.1:3080/"},"http://172.16.253.1:3080/")),(0,i.yg)("h3",{id:"vpn-connection-on-windows"},"VPN connection on Windows"),(0,i.yg)("p",null,"Download and install OpenVPN for Windows (be careful to use the version associated with your OS version)"),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"https://openvpn.net/index.php/open-source/downloads.html"},"https://openvpn.net/index.php/open-source/downloads.html")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Click on \u201cShow Hidden Items\u201d in the Taskbar"),(0,i.yg)("li",{parentName:"ul"},"Right-click on \u201cOpenVPN-GUI\u201d, and select \u201cImport file\u201d"),(0,i.yg)("li",{parentName:"ul"},"Select the .ovpn file you downloaded, and click \u201cImport\u201d"),(0,i.yg)("li",{parentName:"ul"},"Right-click on \u201cOpenVPN-GUI\u201d again, and select \u201cConnect\u201d")),(0,i.yg)("p",null,"If the VPN works, this page should work:"),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"http://172.16.253.1:3080/"},"http://172.16.253.1:3080/")),(0,i.yg)("h3",{id:"vpn-connection-on-mac-osx"},"VPN connection on Mac OSX"),(0,i.yg)("p",null,"Download and install Tunnelblick:"),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"https://tunnelblick.net/"},"https://tunnelblick.net/")),(0,i.yg)("p",null,"After double clicking on the client certificate, it install the config for you. And the setup will be done.\nNow if you click on the tunnelblick icon in the OSX top bar. You can connect to the VPN.\nIf the VPN work this page should work:"),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"http://172.16.253.1:3080/"},"http://172.16.253.1:3080/")),(0,i.yg)("h2",{id:"configure-gns3-in-order-to-use-the-new-server"},"Configure GNS3 in order to use the new server"),(0,i.yg)("p",null,"You have two ways to use your new server:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"/docs/getting-started/installation/one-server-multiple-clients"},"As the main server (you can have multiple client connected to it)")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server"},"As additional compute resources"))),(0,i.yg)("p",null,"For both methods, if you use the VPN, the host of your GNS3 server will be 172.16.253.1"))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/1be78505.93a6e3c9.js b/build/assets/js/1be78505.93a6e3c9.js new file mode 100644 index 00000000..0c43809e --- /dev/null +++ b/build/assets/js/1be78505.93a6e3c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8714,1774],{10:(e,t,n)=>{n.r(t),n.d(t,{default:()=>xe});var a=n(6540),r=n(870),l=n(9024),i=n(7559),o=n(2967),c=n(7460),s=n(2252),d=n(6588),m=n(8511),u=n(1312),b=n(3104),p=n(5062);const v="backToTopButton_sjWU",h="backToTopButtonShow_xfvO";function E(){var e=function(e){var t=e.threshold,n=(0,a.useState)(!1),r=n[0],l=n[1],i=(0,a.useRef)(!1),o=(0,b.gk)(),c=o.startScroll,s=o.cancelScroll;return(0,b.Mq)((function(e,n){var a=e.scrollY,r=null==n?void 0:n.scrollY;r&&(i.current?i.current=!1:a>=r?(s(),l(!1)):a{n.r(t),n.d(t,{default:()=>o});var a=n(6540),r=n(1312),l=n(9024),i=n(8511);function o(){return a.createElement(a.Fragment,null,a.createElement(l.be,{title:(0,r.T)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(i.A,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(r.A,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(r.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(r.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}},2252:(e,t,n)=>{n.d(t,{n:()=>i,r:()=>o});var a=n(6540),r=n(3807),l=a.createContext(null);function i(e){var t=e.children,n=e.version;return a.createElement(l.Provider,{value:n},t)}function o(){var e=(0,a.useContext)(l);if(null===e)throw new r.dV("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/build/assets/js/1e94eb74.83badbf7.js b/build/assets/js/1e94eb74.83badbf7.js new file mode 100644 index 00000000..0148a6da --- /dev/null +++ b/build/assets/js/1e94eb74.83badbf7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9414],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>g});var a=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),h=i,g=d["".concat(c,".").concat(h)]||d[h]||u[h]||r;return n?a.createElement(g,o(o({ref:t},p),{},{components:n})):a.createElement(g,o({ref:t},p))}));function g(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var a=n(8168),i=n(8587),r=(n(6540),n(5680)),o=(n(6025),["components"]),s={id:"hubs-and-switches",title:"GNS3's built-in Hub and Switch devices",sidebar_label:"Built-in hubs and switches"},c=void 0,l={unversionedId:"using-gns3/advanced/hubs-and-switches",id:"using-gns3/advanced/hubs-and-switches",title:"GNS3's built-in Hub and Switch devices",description:"Introduction",source:"@site/docs/using-gns3/advanced/hubs-and-switches.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/hubs-and-switches",permalink:"/docs/using-gns3/advanced/hubs-and-switches",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/hubs-and-switches.md",tags:[],version:"current",frontMatter:{id:"hubs-and-switches",title:"GNS3's built-in Hub and Switch devices",sidebar_label:"Built-in hubs and switches"},sidebar:"someSidebar",previous:{title:"The NAT node",permalink:"/docs/using-gns3/advanced/the-nat-node"},next:{title:"Special IP addresses in GNS3",permalink:"/docs/using-gns3/advanced/special-ip-addresses"}},p={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Port Modes",id:"port-modes",level:2},{value:"Access",id:"access",level:3},{value:"Dot1Q",id:"dot1q",level:3},{value:"QinQ",id:"qinq",level:3},{value:"Sample Use Case",id:"sample-use-case",level:2}],u={toc:d};function h(e){var t=e.components,n=(0,i.A)(e,o);return(0,r.yg)("wrapper",(0,a.A)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"introduction"},"Introduction"),(0,r.yg)("p",null,'GNS3 comes with both an "Ethernet Hub" and an "Ethernet Switch" device out of the box. For the most part, these behave like their physical counterparts. Some peculiarities are documented here.'),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"GNS3's Ethernet Switch only supports specific combinations of functionality. The following topology describes some of these limitations, but the final answer in any open-source product is: \"Read the Source, Luke\".\nAs of this writing, GNS3's Ethernet Switch is implemented in ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/GNS3/dynamips/blob/f7361331d2e72bd65b6355da5fce3277da460f7c/common/eth_switch.c#L181"},"eth_switch.c"),".")),(0,r.yg)("h2",{id:"port-modes"},"Port Modes"),(0,r.yg)("h3",{id:"access"},"Access"),(0,r.yg)("p",null,"Access ports generally face end-devices: users, servers, etc."),(0,r.yg)("p",null,'The only knob here is "VLAN". This sets the PVID and is equivalent to ',(0,r.yg)("inlineCode",{parentName:"p"},"switchport access vlan X")," on Cisco Catalyst (and many other) switches.\nIn the GNS3 implementation, a packet received on an access port can be transmitted out:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"an Access port if the PVIDs match, in which case the packet is sent as-is, or"),(0,r.yg)("li",{parentName:"ul"},"a Dot1Q port, in which case the access port's PVID is added (prepended) as the 802.1Q VLAN tag, or C-tag.")),(0,r.yg)("h3",{id:"dot1q"},"Dot1Q"),(0,r.yg)("p",null,'Dot1Q ports generally face Dot1Q ("trunk") ports on other switches.'),(0,r.yg)("p",null,'The only knob here is "VLAN". In this mode, it sets the PVID and is equivalent to ',(0,r.yg)("inlineCode",{parentName:"p"},"switchport mode trunk native vlan X")," on Cisco Catalyst (and many other) switches.\nA received packet, if untagged, will have the PVID VLAN applied to it, then switched as a tagged packet.\nA received packet, if tagged, will retain its existing VLAN tag.\nIn the GNS3 implementation, a packet received on a dot1q port can be transmitted out:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"an Access port (if the VLAN tag matches hte access port's PVID),"),(0,r.yg)("li",{parentName:"ul"},"a Dot1Q port (packet remains as-is unless the VLAN tag matches the output port's PVID, in which case it gets stripped), or"),(0,r.yg)("li",{parentName:"ul"},"a QinQ port, in which case the outer tag is stripped. Note that a dot1q interface will happily transmit a double-tagged packet; this is how QinQ tunneling works.")),(0,r.yg)("h3",{id:"qinq"},"QinQ"),(0,r.yg)("p",null,'QinQ ports generally face Dot1Q ports on other switches. QinQ ports are generally "customer-facing", i.e. they preserve a customer\'s C-tags by prepending their S-tag on ingress, and stripping their S-tag on egress.'),(0,r.yg)("p",null,"There are knobs here: VLAN, which sets the outer s-tag, and Ethertype, which defaults to 0x8100, but 0x88A8, 0x9100, and 0x9200 are also available.\nThe VLAN knob, aka S-tag, is equivalent to setting the port's Access-mode PVID on a Cisco Catalyst or equivalent.\nPackets received on a QinQ port can be transmitted on:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"another QinQ port if the S-tags match, in which case the S-tag is stripped, or"),(0,r.yg)("li",{parentName:"ul"},"a Dot1Q port in which case the S-tag is added (prepended) as an outer VLAN tag.")),(0,r.yg)("h2",{id:"sample-use-case"},"Sample Use Case"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"[PC1] \u2509\u2509A\u2509\u2509 0:[SW1]:1 \u2509\u2509B\u2509\u2509 0:[SW2]:1 \u2509\u2509\u256e\n \u250b\n C\n \u250b\n[PC2] \u2509\u2509E\u2509\u2509 0:[SW4]:1 \u2509\u2509D\u2509\u2509 0:[SW3]:1 \u2509\u2509\u256f\n")),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"PC1: 192.0.2.1/24, no VLAN-tagging capability",(0,r.yg)("blockquote",{parentName:"li"},(0,r.yg)("p",{parentName:"blockquote"},"Link A: PC1 (single-port device) connects to Switch1 port 0. This link sees only untagged traffic."))),(0,r.yg)("li",{parentName:"ul"},"Switch1 Port 0: Access mode, PVID 234 (i.e., untagged, ",(0,r.yg)("inlineCode",{parentName:"li"},"switchport access vlan 234"),")"),(0,r.yg)("li",{parentName:"ul"},'Switch1 Port 1: Dot1Q mode, PVID 1 (i.e. all VLANs other than "1" are tagged, ',(0,r.yg)("inlineCode",{parentName:"li"},"switchport trunk native vlan 1"),")",(0,r.yg)("blockquote",{parentName:"li"},(0,r.yg)("p",{parentName:"blockquote"},"Link B: Switch1 Port 1 connects to Switch2 Port 0. This link sees only 802.1Q-tagged (single-tagged) traffic with VLAN tag 234."))),(0,r.yg)("li",{parentName:"ul"},"Switch2 Port 0: QinQ mode, PVID 777 (i.e. 'switchport access vlan 777",(0,r.yg)("inlineCode",{parentName:"li"},"+"),"switchport mode dot1q-tunnel`)"),(0,r.yg)("li",{parentName:"ul"},'Switch2 Port 1: Dot1Q mode, PVID 1 (i.e. all VLANs other than "1" are tagged, ',(0,r.yg)("inlineCode",{parentName:"li"},"switchport trunk native vlan 1"),")")),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},'Switch2 would normally be a carrier edge ("CE") device.')),(0,r.yg)("blockquote",null,(0,r.yg)("p",{parentName:"blockquote"},"Link C: Switch2 Port 1 connects to Switch3 Port 1. This link sees only QinQ, or double-tagged, traffic. All packets will have an S-tag of 777 and a C-tag of 234. This link represents the carrier network, where the customer traffic is encapsulated inside the carrier's VLAN 777."),(0,r.yg)("ul",{parentName:"blockquote"},(0,r.yg)("li",{parentName:"ul"},'Switch3 Port 1: Dot1Q mode, PVID 1 (i.e. all VLANs other than "1" are tagged, ',(0,r.yg)("inlineCode",{parentName:"li"},"switchport trunk native vlan 1"),")"),(0,r.yg)("li",{parentName:"ul"},"Switch3 Port 0: QinQ mode, PVID 777 (i.e. 'switchport access vlan 777",(0,r.yg)("inlineCode",{parentName:"li"},"+"),"switchport mode dot1q-tunnel`)"))),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},'Switch3 would normally be a carrier edge ("CE") device.')),(0,r.yg)("blockquote",null,(0,r.yg)("p",{parentName:"blockquote"},"Link D: Switch3 Port 0 connects to Switch4 Port 1. This link sees only 802.1Q-tagged (single-tagged) traffic with VLAN tag 234."),(0,r.yg)("ul",{parentName:"blockquote"},(0,r.yg)("li",{parentName:"ul"},'Switch4 Port 1: Dot1Q mode, PVID 1 (i.e. all VLANs other than "1" are tagged, ',(0,r.yg)("inlineCode",{parentName:"li"},"switchport trunk native vlan 1"),")"),(0,r.yg)("li",{parentName:"ul"},"Switch4 Port 0: Access mode, PVID 234 (i.e., untagged, ",(0,r.yg)("inlineCode",{parentName:"li"},"switchport access vlan 234"),")\nLink E: Switch4 port 0 connects to PC2 (single-port device). This link sees only untagged traffic."),(0,r.yg)("li",{parentName:"ul"},"PC2: 192.0.2.2/24, no VLAN-tagging capability"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/25877efd.5043be26.js b/build/assets/js/25877efd.5043be26.js new file mode 100644 index 00000000..bb5c3e92 --- /dev/null +++ b/build/assets/js/25877efd.5043be26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2569],{5680:(e,t,o)=>{o.d(t,{xA:()=>u,yg:()=>d});var r=o(6540);function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function a(e){for(var t=1;t=0||(i[o]=e[o]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},g="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var o=e.components,i=e.mdxType,n=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),g=c(o),p=i,d=g["".concat(l,".").concat(p)]||g[p]||m[p]||n;return o?r.createElement(d,a(a({ref:t},u),{},{components:o})):r.createElement(d,a({ref:t},u))}));function d(e,t){var o=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=o.length,a=new Array(n);a[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[g]="string"==typeof e?e:i,a[1]=s;for(var c=2;c{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>g});var r=o(8168),i=o(8587),n=(o(6540),o(5680)),a=["components"],s={id:"where-do-i-get-ios-images",title:"Where do I get IOS images?",sidebar_label:"Where do I get IOS images?"},l=void 0,c={unversionedId:"troubleshooting-faq/where-do-i-get-ios-images",id:"troubleshooting-faq/where-do-i-get-ios-images",title:"Where do I get IOS images?",description:"Introduction",source:"@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md",sourceDirName:"troubleshooting-faq",slug:"/troubleshooting-faq/where-do-i-get-ios-images",permalink:"/docs/troubleshooting-faq/where-do-i-get-ios-images",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/where-do-i-get-ios-images.md",tags:[],version:"current",frontMatter:{id:"where-do-i-get-ios-images",title:"Where do I get IOS images?",sidebar_label:"Where do I get IOS images?"},sidebar:"someSidebar",previous:{title:"General FAQ",permalink:"/docs/troubleshooting-faq/general-faq"}},u={},g=[{value:"Introduction",id:"introduction",level:2},{value:"Important",id:"important",level:3},{value:"Options",id:"options",level:2},{value:"Cisco website:",id:"cisco-website",level:3},{value:"VIRL:",id:"virl",level:3},{value:"Physical Cisco devices:",id:"physical-cisco-devices",level:3}],m={toc:g};function p(e){var t=e.components,o=(0,i.A)(e,a);return(0,n.yg)("wrapper",(0,r.A)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h2",{id:"introduction"},"Introduction"),(0,n.yg)("p",null,"One of the most common questions asked in the GNS3 forums is \u201cWhere do I get Cisco IOS images?\u201d"),(0,n.yg)("h3",{id:"important"},"Important"),(0,n.yg)("p",null,"Unfortunately due to legal requirements, GNS3 is unable to provide IOS images or any other Cisco images. You will need to provide your own images to use them with GNS3."),(0,n.yg)("p",null,"::: note\nSome vendors make their software images freely available, but unfortunately this is not true for Cisco images.\n:::"),(0,n.yg)("h2",{id:"options"},"Options"),(0,n.yg)("p",null,"Here are some suggestions on ways to get Cisco images:"),(0,n.yg)("h3",{id:"cisco-website"},"Cisco website:"),(0,n.yg)("p",null,"Download images directly from Cisco: ",(0,n.yg)("a",{parentName:"p",href:"https://software.cisco.com/download/navigator.html"},"https://software.cisco.com/download/navigator.html")),(0,n.yg)("admonition",{type:"note"},(0,n.yg)("p",{parentName:"admonition"},"A Service Contract is required for downloading of images.")),(0,n.yg)("p",null,"The only IOS images currently available from Cisco, that will work with the Dynamips emulator are the c7200 images (not the c7200p images!). The images for all of the other platforms Dynamips supported hit End of Support status, and their images were removed. "),(0,n.yg)("h3",{id:"virl"},"VIRL:"),(0,n.yg)("p",null,"If you don\u2019t have a service contract with Cisco, you can purchase a VIRL license to get access to multiple images that are very useful for GNS3 labs. The price starts at $199.99 per year for the Personal Edition:"),(0,n.yg)("p",null,(0,n.yg)("a",{parentName:"p",href:"http://virl.cisco.com/"},"http://virl.cisco.com/")),(0,n.yg)("admonition",{type:"note"},(0,n.yg)("p",{parentName:"admonition"},"You can use VIRL images without license authentication. You can therefore download the VIRL images, integrate them with GNS3 and use them offline if needed.")),(0,n.yg)("h3",{id:"physical-cisco-devices"},"Physical Cisco devices:"),(0,n.yg)("p",null,"If you own a physical router like a Cisco 3725 router, you can copy the image from the router and import it into GNS3."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/2f261fb5.3047170f.js b/build/assets/js/2f261fb5.3047170f.js new file mode 100644 index 00000000..57ae8d68 --- /dev/null +++ b/build/assets/js/2f261fb5.3047170f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2425],{5680:(e,t,r)=>{r.d(t,{xA:()=>c,yg:()=>f});var i=r(6540);function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function n(e){for(var t=1;t=0||(u[r]=e[r]);return u}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(u[r]=e[r])}return u}var o=i.createContext({}),l=function(e){var t=i.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):n(n({},t),e)),r},c=function(e){var t=l(e.components);return i.createElement(o.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var r=e.components,u=e.mdxType,s=e.originalType,o=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),m=l(r),p=u,f=m["".concat(o,".").concat(p)]||m[p]||d[p]||s;return r?i.createElement(f,n(n({ref:t},c),{},{components:r})):i.createElement(f,n({ref:t},c))}));function f(e,t){var r=arguments,u=t&&t.mdxType;if("string"==typeof e||u){var s=r.length,n=new Array(s);n[0]=p;var a={};for(var o in t)hasOwnProperty.call(t,o)&&(a[o]=t[o]);a.originalType=e,a[m]="string"==typeof e?e:u,n[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>m});var i=r(8168),u=r(8587),s=(r(6540),r(5680)),n=["components"],a={id:"doc3",title:"This is Document Number 3"},o=void 0,l={unversionedId:"docusaurus-reference/doc3",id:"docusaurus-reference/doc3",title:"This is Document Number 3",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.",source:"@site/docs/docusaurus-reference/doc3.md",sourceDirName:"docusaurus-reference",slug:"/docusaurus-reference/doc3",permalink:"/docs/docusaurus-reference/doc3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc3.md",tags:[],version:"current",frontMatter:{id:"doc3",title:"This is Document Number 3"}},c={},m=[],d={toc:m};function p(e){var t=e.components,r=(0,u.A)(e,n);return(0,s.yg)("wrapper",(0,i.A)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit."),(0,s.yg)("p",null,"Duis et egestas libero, imperdiet faucibus ipsum. Sed posuere eget urna vel feugiat. Vivamus a arcu sagittis, fermentum urna dapibus, congue lectus. Fusce vulputate porttitor nisl, ac cursus elit volutpat vitae. Nullam vitae ipsum egestas, convallis quam non, porta nibh. Morbi gravida erat nec neque bibendum, eu pellentesque velit posuere. Fusce aliquam erat eu massa eleifend tristique."),(0,s.yg)("p",null,"Sed consequat sollicitudin ipsum eget tempus. Integer a aliquet velit. In justo nibh, pellentesque non suscipit eget, gravida vel lacus. Donec odio ante, malesuada in massa quis, pharetra tristique ligula. Donec eros est, tristique eget finibus quis, semper non nisl. Vivamus et elit nec enim ornare placerat. Sed posuere odio a elit cursus sagittis."),(0,s.yg)("p",null,"Phasellus feugiat purus eu tortor ultrices finibus. Ut libero nibh, lobortis et libero nec, dapibus posuere eros. Sed sagittis euismod justo at consectetur. Nulla finibus libero placerat, cursus sapien at, eleifend ligula. Vivamus elit nisl, hendrerit ac nibh eu, ultrices tempus dui. Nam tellus neque, commodo non rhoncus eu, gravida in risus. Nullam id iaculis tortor."),(0,s.yg)("p",null,"Nullam at odio in sem varius tempor sit amet vel lorem. Etiam eu hendrerit nisl. Fusce nibh mauris, vulputate sit amet ex vitae, congue rhoncus nisl. Sed eget tellus purus. Nullam tempus commodo erat ut tristique. Cras accumsan massa sit amet justo consequat eleifend. Integer scelerisque vitae tellus id consectetur."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/322a49c4.60b7382f.js b/build/assets/js/322a49c4.60b7382f.js new file mode 100644 index 00000000..38a85ab2 --- /dev/null +++ b/build/assets/js/322a49c4.60b7382f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[7131],{5680:(e,t,o)=>{o.d(t,{xA:()=>p,yg:()=>g});var a=o(6540);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function r(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var l=a.createContext({}),u=function(e){var t=a.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):r(r({},t),e)),o},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(o),m=n,g=c["".concat(l,".").concat(m)]||c[m]||d[m]||i;return o?a.createElement(g,r(r({ref:t},p),{},{components:o})):a.createElement(g,r({ref:t},p))}));function g(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,r=new Array(i);r[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:n,r[1]=s;for(var u=2;u{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>g,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var a=o(8168),n=o(8587),i=(o(6540),o(5680)),r=o(6025),s=["components"],l={id:"what-is-gns3",title:"Getting Started with GNS3",sidebar_label:"What is GNS3?",slug:"/"},u=void 0,p={unversionedId:"getting-started/what-is-gns3",id:"getting-started/what-is-gns3",title:"Getting Started with GNS3",description:"Introduction",source:"@site/docs/getting-started/what-is-gns3.md",sourceDirName:"getting-started",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/what-is-gns3.md",tags:[],version:"current",frontMatter:{id:"what-is-gns3",title:"Getting Started with GNS3",sidebar_label:"What is GNS3?",slug:"/"},sidebar:"someSidebar",next:{title:"Windows",permalink:"/docs/getting-started/installation/windows"}},c={},d=[{value:"Introduction",id:"introduction",level:2},{value:"What is GNS3?",id:"what-is-gns3",level:2},{value:"Architecture",id:"architecture",level:3},{value:"GNS3 Comparisons",id:"gns3-comparisons",level:2},{value:"GNS3",id:"gns3",level:3},{value:"Packet Tracer",id:"packet-tracer",level:3},{value:"Cisco VIRL",id:"cisco-virl",level:3},{value:"Device Support",id:"device-support",level:2},{value:"Use Cases",id:"use-cases",level:2},{value:"Versions of GNS3",id:"versions-of-gns3",level:2},{value:"GNS3 Help & Support",id:"gns3-help--support",level:2},{value:"Documentation",id:"documentation",level:3},{value:"Community",id:"community",level:3},{value:"GNS3 YouTube channel",id:"gns3-youtube-channel",level:3},{value:"GNS3 courses",id:"gns3-courses",level:3},{value:"Supported Operating Systems",id:"supported-operating-systems",level:2},{value:"Supported Appliances",id:"supported-appliances",level:2},{value:"Should you use the GNS3 VM?",id:"should-you-use-the-gns3-vm",level:2},{value:"What is not supported or recommended",id:"what-is-not-supported-or-recommended",level:2},{value:"ASA 8",id:"asa-8",level:3},{value:"Local install with Qemu images",id:"local-install-with-qemu-images",level:3},{value:"Complex topologies",id:"complex-topologies",level:3}],m={toc:d};function g(e){var t=e.components,o=(0,n.A)(e,s);return(0,i.yg)("wrapper",(0,a.A)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"introduction"},"Introduction"),(0,i.yg)("p",null,"GNS3 is used by hundreds of thousands of network engineers worldwide to emulate, configure, test and troubleshoot virtual and real networks. GNS3 allows you to run a small topology consisting of only a few devices on your laptop, to those that have many devices hosted on multiple servers or even hosted in the cloud."),(0,i.yg)("p",null,"GNS3 is open source, free software that you can download from ",(0,i.yg)("a",{parentName:"p",href:"http://gns3.com"},"http://gns3.com")),(0,i.yg)("p",null,"It is actively developed and supported and has a growing community of over 800,000 members. By joining the GNS3 community you will be joining fellow students, network engineers, architects and others that have downloaded GNS3 over 10 million times to date. GNS3 is used in companies all over the world including Fortune 500 companies."),(0,i.yg)("p",null,"GNS3 can help you prepare for certification exams such as the Cisco CCNA, but also help you test and verify real world deployments. Jeremy Grossman, the original developer of GNS3 originally created the software to help him study for his CCNP certifications. Because of that original work, you can today use to help you do the same without paying for expensive hardware."),(0,i.yg)("p",null," GNS3 has allowed network engineers to virtualize real hardware devices for over 10 years. Originally only emulating Cisco devices using software called Dynamips, GNS3 has now evolved and supports many devices from multiple network vendors including Cisco virtual switches, Cisco ASAs, Brocade vRouters, Cumulus Linux switches, Docker instances, HPE VSRs, multiple Linux appliances and many others. Go here to see a list of appliances available: ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/appliances"},"https://gns3.com/marketplace/appliances")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"GNS3 has been around for over 10 years. Some information you will find on the Internet is outdated or unfortunately entirely incorrect. This document will hopefully help answer questions and help you get started on your journey with GNS3.")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"GNS3 does not only support Cisco devices. Cisco is often discussed because that is what most network engineers are interested in learning about. However, many other commercial and open source vendors are supported today in GNS3. You are now able to test interoperability between many vendors and even try out esoteric setups using network technologies with SDN, NFV, Linux and Docker.")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Recommendation:")," If you are using an older version of GNS3, it is recommended that you upgrade to the current stable release of GNS3."),(0,i.yg)("h2",{id:"what-is-gns3"},"What is GNS3?"),(0,i.yg)("h3",{id:"architecture"},"Architecture"),(0,i.yg)("p",null,"GNS3 consists of two software components:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"The GNS3-all-in-one software (GUI)"),(0,i.yg)("li",{parentName:"ul"},"The GNS3 virtual machine (VM)")),(0,i.yg)("p",null,"GNS3-all-in-one:"),(0,i.yg)("p",null,"This is the client part of GNS3 and is graphical user interface (GUI). You install the all-in-one software on your local PC (Windows, MAC, Linux) and create your topologies using this software. This is what you usually see show in screenshots such as the following:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/what-is-gns3/1.jpg")}),(0,i.yg)("p",null,"Server options:"),(0,i.yg)("p",null,"When you create topologies in GNS3 using the all-in-one software GUI client, the devices created need to be hosted and run by a server process. You have a few options for the server part of the software:"),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},"Local GNS3 server"),(0,i.yg)("li",{parentName:"ol"},"Local GNS3 VM"),(0,i.yg)("li",{parentName:"ol"},"Remote GNS3 VM")),(0,i.yg)("p",null,"The local GNS3 server runs locally on the same PC where you installed the GNS3 all-in-one software. If for example you are using a Windows PC, both the GNS3 GUI and the local GNS3 server are running as processes in Windows. Additional processes such as Dynamips will also be running on your PC:"),(0,i.yg)("p",null,"If you decide to use the GNS3 VM (recommended), you can either run the GNS3 VM locally on your PC using virtualization software such as VMware Workstation, Virtualbox or Hyper-V; or you can run the GNS3 VM remotely on a server using VMware ESXi or even in the cloud."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"You are able to use GNS3 without using the GNS3 VM. This is a good way to get started initially, but this setup is limited and does not provide as many choices with regards to topology size and devices supported. If you want to create more advanced GNS3 topologies, or want to include devices such as the Cisco VIRL devices (IOSvL2, IOSvL3, ASAv) or other other devices that require Qemu, the GNS3 VM is recommended (and is often required).")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Start a basic GNS3 topology using only the GNS3-all-in-one software and once you have got that working, refer to additional documentation for the setup of a local GNS3 VM.Emulation versus Simulation:")),(0,i.yg)("p",null,"GNS3 supports both emulated and simulated devices."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Emulation:")," GNS3 mimics or emulates the hardware of a device and you run actual images on the virtual device. For example, you could copy the Cisco IOS from a real, physical Cisco router and run that on a virtual, emulated Cisco router in GNS3."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Simulation:")," GNS3 simulates the features and functionality of a device such as a switch. You are not running actual operating systems (such as Cisco IOS), but rather, a simulated device developed by GNS3, like the built-in layer 2 switch."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"The lines between simulation and emulation blur a bit these days. You are now able to run Cisco VIRL images which are images of real Cisco operating system images which run on standardized virtual hardware. GNS3 emulates the hardware that VIRL images require to run")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Remember"),": Don\u2019t worry too much about the difference between simulation and emulation except for the following points:"),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},"Dynamips is an older technology that emulates Cisco hardware. It uses real Cisco IOS images. It is good for basic CCNA type topologies, but has a number of limitations such as only supporting older Cisco IOS versions (12.X) which are also not supported or actively updated by Cisco."),(0,i.yg)("li",{parentName:"ol"},"The recommended Cisco images to use with GNS3 are those from Cisco VIRL (IOSv, IOSvL2, IOS-XRv, ASAv). This images are supported and are actively updated by Cisco. The images support current releases of the Cisco IOS (15.X) and provide the best scale and user experience.")),(0,i.yg)("h2",{id:"gns3-comparisons"},"GNS3 Comparisons"),(0,i.yg)("p",null,"Questions often arise about which software is the best. A lot of this is down to personal preference with all solutions providing some benefits and having some disadvantages."),(0,i.yg)("p",null,"Bad old days: The world today is much better than the past! In the old days, network engineers studying for their CCNAs, CCNPs or CCIEs only had limited choices: Buy or rent physical Cisco equipment for your studies."),(0,i.yg)("p",null,"Today, you have multiple choices when studying and testing networks:"),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},"GNS3"),(0,i.yg)("li",{parentName:"ol"},"Cisco Packet Tracer"),(0,i.yg)("li",{parentName:"ol"},"Cisco VIRL"),(0,i.yg)("li",{parentName:"ol"},"Physical equipment"),(0,i.yg)("li",{parentName:"ol"},"Others")),(0,i.yg)("h3",{id:"gns3"},"GNS3"),(0,i.yg)("p",null,"As mentioned, GNS3 is open source software which you can download and use for free. The source code is available on GitHub if you are interested in taking a peek at the code. We hope you find it useful and beneficial, but if you don\u2019t like something, or want to add something, why don\u2019t you get involved by contributing? Join the community or volunteer to check code or add code recommendations. With over 800,000 community members, we can all learn from each other."),(0,i.yg)("p",null,"There are, however, other options available that you can use. Some of them are free, some cost money. Use whichever works best for you. Use multiple options if you like. We are happy that there are a plethora of choices available today, which helps all of us improve and learn more about networking."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Advantages:")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Free software"),(0,i.yg)("li",{parentName:"ul"},"Open Source software"),(0,i.yg)("li",{parentName:"ul"},"No monthly or yearly license fees"),(0,i.yg)("li",{parentName:"ul"},"No limitation on number of devices supported (the only limitation is your hardware: CPU and memory)"),(0,i.yg)("li",{parentName:"ul"},"Supports multiple switching options (NM-ESW16 Etherswitch module, IOU/IOL Layer 2 images, VIRL IOSvL2):"),(0,i.yg)("li",{parentName:"ul"},"Supports all VIRL images (IOSv, IOSvL2, IOS-XRv, CSR1000v, NX-OSv, ASAv)"),(0,i.yg)("li",{parentName:"ul"},"Supports multi vendor environments"),(0,i.yg)("li",{parentName:"ul"},"Can be run with or without hypervisors"),(0,i.yg)("li",{parentName:"ul"},"Supports both free and paid hypervisors (Virtualbox, VMware workstation, VMware player, ESXi, Fusion)"),(0,i.yg)("li",{parentName:"ul"},"Downloadable, free, pre-configured and optimized appliances available to simplify deployment"),(0,i.yg)("li",{parentName:"ul"},"Native support for Linux without the need for need for additional virtualization software"),(0,i.yg)("li",{parentName:"ul"},"Software from multiple vendors freely available"),(0,i.yg)("li",{parentName:"ul"},"Large and active community (800,000+ members)")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Disadvantages:")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Cisco images need to be supplied by user (download from Cisco.com, or purchase VIRL license, or copy from physical device)."),(0,i.yg)("li",{parentName:"ul"},"Not a self contained package, but requires a local installation of software (GUI)."),(0,i.yg)("li",{parentName:"ul"},"GNS3 can be affected by your PC\u2019s setup and limitations because of local installation (firewall and security settings, company laptop policies etc).")),(0,i.yg)("h3",{id:"packet-tracer"},"Packet Tracer"),(0,i.yg)("p",null,"Cisco Packet Tracer is an official Cisco product for Cisco Academy students that simulates Cisco networks. It does not emulate Cisco hardware or support real images from Cisco or other vendors."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Advantages:")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Easy to set up"),(0,i.yg)("li",{parentName:"ul"},"Supports Cisco router, switch and PC simulations"),(0,i.yg)("li",{parentName:"ul"},"Sufficient for CCNA studies"),(0,i.yg)("li",{parentName:"ul"},"Simulates multiple devices and protocols (routers, switches, wireless, RADIUS, etc...)"),(0,i.yg)("li",{parentName:"ul"},"Free (requires registration at Cisco\u2019s NetAcad website)")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Disadvantages:")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Proprietary code - not open source"),(0,i.yg)("li",{parentName:"ul"},"Only simulates Cisco devices (Not running true Cisco images)"),(0,i.yg)("li",{parentName:"ul"},"No multivendor support"),(0,i.yg)("li",{parentName:"ul"},"Cannot integrate with real physical devices"),(0,i.yg)("li",{parentName:"ul"},"You can only use the IOS commands implemented by the developers. Not every conceivable command available on a platform simulated in Packet Tracer will be present for use")),(0,i.yg)("h3",{id:"cisco-virl"},"Cisco VIRL"),(0,i.yg)("p",null,"Cisco have created another officially supported network simulation platform- Cisco Virtual Internet Routing Lab (VIRL). This is a much more powerful solution when compared to Cisco Packet Tracer and allows not only learning, but simulation of actual networks."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Cisco VIRL is a closer product in comparison to GNS3 allowing network engineers to simulate real world networks in addition to learning Cisco technologies.")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Advantages:")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Supports Cisco router, switch, firewall and PC simulations (IOSv, IOSvL2, ASAv,"),(0,i.yg)("li",{parentName:"ul"},"Good for CCNA, CCNP and CCIE studies"),(0,i.yg)("li",{parentName:"ul"},"Supports Cisco Firewalls (ASAv)"),(0,i.yg)("li",{parentName:"ul"},"Large number of protocols and features supported: RPVST+, Etherchannel, Port Security, MPLS, VRFs and more. Full list is here: ",(0,i.yg)("a",{parentName:"li",href:"http://virl.cisco.com/work/"},"http://virl.cisco.com/work/")),(0,i.yg)("li",{parentName:"ul"},"Latest versions of Cisco IOS supported (15.X)")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Disadvantages:")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Not Free software. You pay $199.99 per year for a Personal Edition VIRL subscription."),(0,i.yg)("li",{parentName:"ul"},"Limited number of devices supported. With the personal edition, you are limited to 20 Cisco nodes per topology"),(0,i.yg)("li",{parentName:"ul"},"VIRL can be complex to setup and configure."),(0,i.yg)("li",{parentName:"ul"},"Resource intensive (requires large amounts of RAM and CPU)"),(0,i.yg)("li",{parentName:"ul"},"Requires virtualization software (VMware Workstation Player/Pro, Fusion, or ESXi)"),(0,i.yg)("li",{parentName:"ul"},"Does not support VirtualBox"),(0,i.yg)("li",{parentName:"ul"},"No multivendor support - only supports Cisco networking devices")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"GNS3 is able to support all VIRL images. You are able to import VIRL images into GNS3 and use them without the per-topology node restriction (you are only limited by your hardware).")),(0,i.yg)("h2",{id:"device-support"},"Device Support"),(0,i.yg)("p",null,"GNS3 supports many devices from multiple vendors and more devices are being added all the time. The best place to look for the current list of supported devices is the GNS3 marketplace: ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/appliances"},"https://gns3.com/marketplace/appliances")),(0,i.yg)("h2",{id:"use-cases"},"Use Cases"),(0,i.yg)("p",null,"GNS3 is probably most famous as a platform used for learning and teaching. GNS3 has for years been used by students and network engineers to help practice and prepare for vendor certification exams such as the Cisco CCNA exam."),(0,i.yg)("p",null,"GNS3 can however be used for other use cases such as proof of concepts and commercial demonstrations. GNS3 provides an easy, cost effective way to new software such as management or SDN software. It allows you to test multi vendor interoperability using a virtual lab environment rather than requiring dedicated physical equipment."),(0,i.yg)("p",null,"An entire GNS3 topology can be created and run on a single laptop. This allows engineers to demonstrate topologies and software to clients and others on the road."),(0,i.yg)("p",null,"Classroom environments can also benefit from a preconfigured lab environment that students use to learn networking concepts and technologies."),(0,i.yg)("p",null,"Some additional reasons to use GNS3:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Real-time network simulation for pre-deployment testing without the need for network hardware: Run the OS that emulates real behavior of network hardware"),(0,i.yg)("li",{parentName:"ul"},"Test 20+ different network vendors in risk-free virtual environment: Quickly run and test multiple hardware vendors without the need for hardware"),(0,i.yg)("li",{parentName:"ul"},"Create dynamic network maps for troubleshooting and proof of concept (POC) testing: - Test your networks before you build them to reduce the time it takes to get a production network up and running"),(0,i.yg)("li",{parentName:"ul"},"Connect GNS3 to any real network: Leverage your existing hardware and expand your current lab by connecting your GNS3 topologies directly to it"),(0,i.yg)("li",{parentName:"ul"},"Customized topologies and labs within GNS3 for network certification training:\nGNS3 is the best study tool for aspiring network professional seeking their certifications, without the need for a home lab.")),(0,i.yg)("h2",{id:"versions-of-gns3"},"Versions of GNS3"),(0,i.yg)("p",null,"The latest, current release of GNS3 can be found here:\n",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/software"},"https://gns3.com/software")),(0,i.yg)("p",null,"Development releases of GNS3 can be found here:\n",(0,i.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-gui/releases"},"https://github.com/GNS3/gns3-gui/releases")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Use the latest stable release of GNS3. Only use development releases if you are prepared to encounter issues and loss of GNS3 data. Do not use development releases if you have an exam to prepare for or other type of deadline.")),(0,i.yg)("h2",{id:"gns3-help--support"},"GNS3 Help & Support"),(0,i.yg)("p",null,"GNS3 provides multiple ways for you to get help including:"),(0,i.yg)("h3",{id:"documentation"},"Documentation"),(0,i.yg)("p",null,"You can access the GNS3 documentation here:\n",(0,i.yg)("a",{parentName:"p",href:"https://docs.gns3.com"},"https://docs.gns3.com")),(0,i.yg)("h3",{id:"community"},"Community"),(0,i.yg)("p",null,"This is one of the best places to get help. Join many thousands of GNS3 users and experts helping each other make the most of GNS3.\n",(0,i.yg)("a",{parentName:"p",href:"http://gns3.com/community"},"http://gns3.com/community")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"DO"),": Do report bugs and ask questions on the GNS3 community."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"DON\u2019T"),": Don\u2019t ask for illegal stuff or violate GNS3 user policies. Don\u2019t ask for Cisco IOS images. Don\u2019t share Cisco IOS images. Don\u2019t do anything else that infringes copyright or breaks the law."),(0,i.yg)("h3",{id:"gns3-youtube-channel"},"GNS3 YouTube channel"),(0,i.yg)("p",null,"Watch videos on David Bombal GNS3 channel:",(0,i.yg)("br",{parentName:"p"}),"\n",(0,i.yg)("a",{parentName:"p",href:"https://www.youtube.com/playlist?list=PLhfrWIlLOoKPTPPv6ZiNHFM2FKAZ96f-r"},"https://www.youtube.com/playlist?list=PLhfrWIlLOoKPTPPv6ZiNHFM2FKAZ96f-r")),(0,i.yg)("h3",{id:"gns3-courses"},"GNS3 courses"),(0,i.yg)("p",null,"Learn about GNS3 by enrolling in GNS3 courses available in the GNS3 Academy:\n",(0,i.yg)("a",{parentName:"p",href:"http://academy.gns3.com"},"http://academy.gns3.com")),(0,i.yg)("h2",{id:"supported-operating-systems"},"Supported Operating Systems"),(0,i.yg)("p",null,"GNS3 supports the following operating systems:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Windows 7 (64 bit)"),(0,i.yg)("li",{parentName:"ul"},"Windows 8 (64 bit)"),(0,i.yg)("li",{parentName:"ul"},"Windows 10 (64 bit)"),(0,i.yg)("li",{parentName:"ul"},"Windows Server 2012 (64 bit)"),(0,i.yg)("li",{parentName:"ul"},"Windows Server 2016 (64 bit)"),(0,i.yg)("li",{parentName:"ul"},"Mac OS X Mavericks (version 10.9) and later."),(0,i.yg)("li",{parentName:"ul"},"Linux")),(0,i.yg)("p",null,"Additional platforms that can run the GNS3 VM:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"ESXi"),(0,i.yg)("li",{parentName:"ul"},"Bare Metal Cloud based providers such as Packet.net")),(0,i.yg)("h2",{id:"supported-appliances"},"Supported Appliances"),(0,i.yg)("p",null,"GNS3 supports multiple operating systems and appliances and emulators.\n",(0,i.yg)("a",{parentName:"p",href:"emulators/which-emulators-should-i-use"},"Which emulator should I use?")),(0,i.yg)("h2",{id:"should-you-use-the-gns3-vm"},"Should you use the GNS3 VM?"),(0,i.yg)("p",null,"The GNS3 VM is recommended for most situations when you are using Windows or Mac OS. The GNS3 development team have worked hard to create a lightweight, robust way of creating GNS3 topologies that avoids multiple common issues experienced when using a local install of GNS3. This includes the lack of proper Qemu support when running VIRL natively on Windows (not recommended)."),(0,i.yg)("p",null,"However, if you only want to create basic GNS3 topologies using Cisco IOS routers, a local (Dynamips) install will suffice. This means that you only install the GNS3 GUI (all-in-one) and don\u2019t use the GNS3 VM."),(0,i.yg)("p",null,"This is simpler in some ways to set up, but does have limitations and should be seen as the starting point in your GNS3 journey. As soon as you are comfortable with GNS3, it is recommended that you move to a GNS3 VM setup to make the most of GNS3 options and optimization."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Use the GNS3 VM on Windows and Mac OS. It\u2019s optional, but not required, when running GNS3 natively in Linux.")),(0,i.yg)("h2",{id:"what-is-not-supported-or-recommended"},"What is not supported or recommended"),(0,i.yg)("h3",{id:"asa-8"},"ASA 8"),(0,i.yg)("admonition",{type:"caution"},(0,i.yg)("p",{parentName:"admonition"},"ASA 8 is not supported")),(0,i.yg)("p",null,"You may find a lot of tutorials on the Internet explaining how to extract ASA 8 images from physical hardware devices and use them with GNS3. This method was the only way to get an ASA image in the past, but the results are random; and getting worse with modern computers and operating systems. For example Windows 10 has multiple issues running ASA 8."),(0,i.yg)("p",null,"The problem with this way of doing things is that you are using an image made for a bespoke hardware device from Cisco. Qemu can emulate part of the hardware, but some components specific to a physical ASA are missing. For example, the hardware clock on the hardware ASA appliance is missing. The ASA kernel can sometimes replace it depending on the speed of your computer, but results may vary."),(0,i.yg)("p",null,"You will also encounter issues when running multiple ASAs simultaneously."),(0,i.yg)("h3",{id:"local-install-with-qemu-images"},"Local install with Qemu images"),(0,i.yg)("p",null,"GNS3 does not support or recommend the use of Qemu images with a local GNS3 installation on Windows or Mac OS X. You should use Qemu images with the GNS3 VM."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Examples_of_Qemu_images"),"\nIOSvL2, IOSv, IOS-XRv, ASAv, any appliance available on the GNS3 website: ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/appliances"},"https://gns3.com/marketplace/appliances")),(0,i.yg)("h3",{id:"complex-topologies"},"Complex topologies"),(0,i.yg)("p",null,"When creating complex topologies on Windows or Mac OS, it is recommended that you use the GNS3 VM. Only use a local GNS3 install when creating simple GNS3 topologies."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/3cd311f2.7bba453b.js b/build/assets/js/3cd311f2.7bba453b.js new file mode 100644 index 00000000..dd5ae061 --- /dev/null +++ b/build/assets/js/3cd311f2.7bba453b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2584],{5680:(e,t,r)=>{r.d(t,{xA:()=>u,yg:()=>h});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(r),m=o,h=p["".concat(c,".").concat(m)]||p[m]||d[m]||a;return r?n.createElement(h,i(i({ref:t},u),{},{components:r})):n.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var n=r(8168),o=r(8587),a=(r(6540),r(5680)),i=["components"],s={id:"cisco-asa",title:"Cisco ASA",sidebar_label:"Cisco ASA"},c=void 0,l={unversionedId:"how-to-guides/cisco-asa",id:"how-to-guides/cisco-asa",title:"Cisco ASA",description:"ASA 8",source:"@site/docs/how-to-guides/cisco-asa.md",sourceDirName:"how-to-guides",slug:"/how-to-guides/cisco-asa",permalink:"/docs/how-to-guides/cisco-asa",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/cisco-asa.md",tags:[],version:"current",frontMatter:{id:"cisco-asa",title:"Cisco ASA",sidebar_label:"Cisco ASA"},sidebar:"someSidebar",previous:{title:"How to debug Web UI Guide",permalink:"/docs/contribute/how-to-debug-web-ui-guide"},next:{title:"Importing vMX and vQFX into GNS3",permalink:"/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3"}},u={},p=[{value:"ASA 8",id:"asa-8",level:2},{value:"ASAV",id:"asav",level:2},{value:"ASAv with Qemu (RECOMMENDED)",id:"asav-with-qemu-recommended",level:3},{value:"ASAv with VMware",id:"asav-with-vmware",level:3}],d={toc:p};function m(e){var t=e.components,r=(0,o.A)(e,i);return(0,a.yg)("wrapper",(0,n.A)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h2",{id:"asa-8"},"ASA 8"),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"ASA 8 IS NOT SUPPORTED")),(0,a.yg)("p",null,"You may find a lot of tutorials on the Internet explaining how to extract ASA 8 images from physical hardware devices and use them with GNS3. This method was the only way to get an ASA image in the past, but the results are random; and getting worse with modern computers and operating systems. For example Windows 10 has multiple issues running ASA 8."),(0,a.yg)("p",null,"The problem with this way of doing things. is that you are using an image made for a bespoke hardware device from Cisco. Qemu can emulate part of the hardware, but some components specific to a physical ASA are missing. For example, the hardware clock on the hardware ASA appliance is missing. The ASA kernel can sometimes replace it, depending on the speed of your computer, but results will vary."),(0,a.yg)("p",null,"You will also encounter issues when running multiple ASA instances simultaneously."),(0,a.yg)("h2",{id:"asav"},"ASAV"),(0,a.yg)("p",null,"ASAv is a version of ASA made by Cisco for using ASA, and was created with the express goal of it being run in virtualized environments. This the solution supported by Cisco and the GNS3 team."),(0,a.yg)("h3",{id:"asav-with-qemu-recommended"},"ASAv with Qemu (RECOMMENDED)"),(0,a.yg)("p",null,"Use the GNS3 appliance you will find all the instructions ",(0,a.yg)("a",{parentName:"p",href:"https://docs.gns3.com/appliances/cisco-asav.html"},"here"),"."),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Video: ",(0,a.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=GM_VmmkCEag"},"https://www.youtube.com/watch?v=GM_VmmkCEag"))),(0,a.yg)("h3",{id:"asav-with-vmware"},"ASAv with VMware"),(0,a.yg)("p",null,"You can run the ASAv OVA as a VMware VM. This will work, but is not recommended because it is harder to share the VM between projects or other GNS3 users."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/3d5a80f7.4e2f888c.js b/build/assets/js/3d5a80f7.4e2f888c.js new file mode 100644 index 00000000..6e7a4091 --- /dev/null +++ b/build/assets/js/3d5a80f7.4e2f888c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4665],{5680:(t,e,n)=>{n.d(e,{xA:()=>g,yg:()=>m});var a=n(6540);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var s=a.createContext({}),c=function(t){var e=a.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},g=function(t){var e=c(t.components);return a.createElement(s.Provider,{value:e},t.children)},p="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},u=a.forwardRef((function(t,e){var n=t.components,o=t.mdxType,r=t.originalType,s=t.parentName,g=l(t,["components","mdxType","originalType","parentName"]),p=c(n),u=o,m=p["".concat(s,".").concat(u)]||p[u]||d[u]||r;return n?a.createElement(m,i(i({ref:e},g),{},{components:n})):a.createElement(m,i({ref:e},g))}));function m(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var r=n.length,i=new Array(r);i[0]=u;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[p]="string"==typeof t?t:o,i[1]=l;for(var c=2;c{n.r(e),n.d(e,{assets:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>s,metadata:()=>g,toc:()=>d});var a=n(8168),o=n(8587),r=(n(6540),n(5680)),i=n(6025),l=["components"],s={id:"mac",title:"GNS3 Mac Install",sidebar_label:"Mac"},c=void 0,g={unversionedId:"getting-started/installation/mac",id:"getting-started/installation/mac",title:"GNS3 Mac Install",description:"Introduction",source:"@site/docs/getting-started/installation/mac.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/mac",permalink:"/docs/getting-started/installation/mac",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/mac.md",tags:[],version:"current",frontMatter:{id:"mac",title:"GNS3 Mac Install",sidebar_label:"Mac"},sidebar:"someSidebar",previous:{title:"Windows",permalink:"/docs/getting-started/installation/windows"},next:{title:"Linux",permalink:"/docs/getting-started/installation/linux"}},p={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Supported Operating Systems",id:"supported-operating-systems",level:2},{value:"Download GNS3",id:"download-gns3",level:2},{value:"Allow installation of GNS3 before OSX Sierra",id:"allow-installation-of-gns3-before-osx-sierra",level:2},{value:"Installation of GNS3",id:"installation-of-gns3",level:2},{value:"GNS3 Setup Wizard",id:"gns3-setup-wizard",level:2}],u={toc:d};function m(t){var e=t.components,n=(0,o.A)(t,l);return(0,r.yg)("wrapper",(0,a.A)({},u,n,{components:e,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"introduction"},"Introduction"),(0,r.yg)("p",null,"This document explains how to install GNS3 using when a Mac OS X environment. You will learn how to:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Download the required software"),(0,r.yg)("li",{parentName:"ul"},"Install the software")),(0,r.yg)("h2",{id:"supported-operating-systems"},"Supported Operating Systems"),(0,r.yg)("p",null,"GNS3 officially supports the 3 latest versions of macOS (currently macOS 10.14 - Mojave to macOS 11.0 - Big Sur). GNS3 v2.1.9 is the last version that runs on OS X version 10.11 (El Capitan)."),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Video: ",(0,r.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=OFjt3jS3Mhg"},"https://www.youtube.com/watch?v=OFjt3jS3Mhg"))),(0,r.yg)("h2",{id:"download-gns3"},"Download GNS3"),(0,r.yg)("p",null,"Follow these steps to download GNS3 to you MAC. Using a web browser, browse to ",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com"},"https://gns3.com")," and click the ",(0,r.yg)("strong",{parentName:"p"},"Free Download")," link:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/1.jpg")}),(0,r.yg)("p",null,"If you have not already registered on the GNS3 site, create an account and then click ",(0,r.yg)("strong",{parentName:"p"},"Create Account & Continue"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/2.jpg")}),(0,r.yg)("p",null,"Or, if you already have an account, click ",(0,r.yg)("strong",{parentName:"p"},"Login"),", fill in the your details and then click ",(0,r.yg)("strong",{parentName:"p"},"Login & Continue"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/3.jpg")}),(0,r.yg)("p",null,"After login, you will be prompted to select the version of GNS3 to download. In this guide, we will select the Mac installation. Click the Download button to download the Mac OS X package."),(0,r.yg)("h2",{id:"allow-installation-of-gns3-before-osx-sierra"},"Allow installation of GNS3 before OSX Sierra"),(0,r.yg)("p",null,"GNS3 is distributed outside the Apple App Store. Due to this, you need to allow the installation of applications from anywhere."),(0,r.yg)("p",null,"Go to the ",(0,r.yg)("strong",{parentName:"p"},"Security & Privacy")," in System Preferences."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/4.jpg")}),(0,r.yg)("p",null,"Click on the lock:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/5.jpg")}),(0,r.yg)("p",null,"Select the ",(0,r.yg)("strong",{parentName:"p"},"Anywhere")," option under ",(0,r.yg)("strong",{parentName:"p"},"Allow apps downloaded from"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/6.jpg")}),(0,r.yg)("h2",{id:"installation-of-gns3"},"Installation of GNS3"),(0,r.yg)("p",null,"Click on the downloaded DMG and drag the ",(0,r.yg)("strong",{parentName:"p"},"GNS3")," icon to the ",(0,r.yg)("strong",{parentName:"p"},"Applications")," folder:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/7.jpg")}),(0,r.yg)("p",null,"Click on the ",(0,r.yg)("strong",{parentName:"p"},"Applications")," icon. Find the GNS3 icon and click it to start GNS."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Make sure GNS3 is installed in \u201cApplications\u201d to avoid any problem. It has been reported that the application may crash if launched from a path containing non-ascii characters.")),(0,r.yg)("p",null,"If the following security warning is displayed (starting with OSX Sierra), click ",(0,r.yg)("strong",{parentName:"p"},"OK"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/8.jpg")}),(0,r.yg)("p",null,"If the above security prompt was shown, right click on the GNS3 icon and click on ",(0,r.yg)("strong",{parentName:"p"},"Open"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/9.jpg")}),(0,r.yg)("p",null,"This is required only at first launch. The next time you click on GNS3, the application will start normally as Mac OS X will remember the configured security settings."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Unlike for Windows and Linux versions of GNS3, the Mac version of GNS3 is not signed due to Apple restrictions.")),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"If OSX say the .dmg is damaged and even right click is not working you could need to temporary disable gatekeeper and renable it. This seem to reset a cache in the OS. ",(0,r.yg)("a",{parentName:"p",href:"https://www.tekrevue.com/tip/gatekeeper-macos-sierra/"},"https://www.tekrevue.com/tip/gatekeeper-macos-sierra/"))),(0,r.yg)("p",null,"Once GNS3 starts, you will be prompted to allow root uBridge. This is required to allow GNS3 to control your network. Click ",(0,r.yg)("strong",{parentName:"p"},"Yes"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/10.jpg")}),(0,r.yg)("p",null,"You will prompted twice to enter your root password:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/11.jpg")}),(0,r.yg)("h2",{id:"gns3-setup-wizard"},"GNS3 Setup Wizard"),(0,r.yg)("p",null,"The GNS3 Setup Wizard will display:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/mac/12.jpg")}),(0,r.yg)("p",null,"You now need to make a decision and then you can return to this document to complete to create an initial GNS topology:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"If you are unsure, ",(0,r.yg)("a",{parentName:"li",href:"../../../docs"},"click here")),(0,r.yg)("li",{parentName:"ul"},"If you are going to only use Cisco IOS images, use the Local server and ",(0,r.yg)("a",{parentName:"li",href:"../setup-wizard-local-server"},"click here for instructions")),(0,r.yg)("li",{parentName:"ul"},"If you are going to use IOSvL2, IOU, ASAv or create complex topologies, then use the GNS3 VM and ",(0,r.yg)("a",{parentName:"li",href:"../setup-wizard-gns3-vm"},"click here for instructions"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/3dbbbf4c.5fd9cbe7.js b/build/assets/js/3dbbbf4c.5fd9cbe7.js new file mode 100644 index 00000000..cf51ee4b --- /dev/null +++ b/build/assets/js/3dbbbf4c.5fd9cbe7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4389],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>y});var o=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),u=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},c=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),d=u(n),c=r,y=d["".concat(s,".").concat(c)]||d[c]||g[c]||l;return n?o.createElement(y,i(i({ref:t},p),{},{components:n})):o.createElement(y,i({ref:t},p))}));function y(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=c;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:r,i[1]=a;for(var u=2;u{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>y,frontMatter:()=>s,metadata:()=>p,toc:()=>g});var o=n(8168),r=n(8587),l=(n(6540),n(5680)),i=n(6025),a=["components"],s={id:"development-of-gns3",title:"Development of GNS3",sidebar_label:"Development of GNS3"},u=void 0,p={unversionedId:"contribute/development-of-gns3",id:"contribute/development-of-gns3",title:"Development of GNS3",description:"Using the GNS3 API",source:"@site/docs/contribute/development-of-gns3.md",sourceDirName:"contribute",slug:"/contribute/development-of-gns3",permalink:"/docs/contribute/development-of-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/contribute/development-of-gns3.md",tags:[],version:"current",frontMatter:{id:"development-of-gns3",title:"Development of GNS3",sidebar_label:"Development of GNS3"},sidebar:"someSidebar",previous:{title:"Contribute to GNS3",permalink:"/docs/contribute/contribute-to-gns3"},next:{title:"How to debug Web UI Guide",permalink:"/docs/contribute/how-to-debug-web-ui-guide"}},d={},g=[{value:"Using the GNS3 API",id:"using-the-gns3-api",level:2},{value:"Get the Source Code",id:"get-the-source-code",level:2},{value:"Dependencies",id:"dependencies",level:2},{value:"Linux",id:"linux",level:3},{value:"Windows",id:"windows",level:3},{value:"Mac OS X",id:"mac-os-x",level:3},{value:"Run Tests",id:"run-tests",level:2},{value:"For Linux & Mac OS X",id:"for-linux--mac-os-x",level:3},{value:"For Windows",id:"for-windows",level:3},{value:"Start the Server",id:"start-the-server",level:2},{value:"For Linux & Mac OS X",id:"for-linux--mac-os-x-1",level:3},{value:"For Windows",id:"for-windows-1",level:3},{value:"Start the GUI",id:"start-the-gui",level:2},{value:"For Linux & Mac OS X",id:"for-linux--mac-os-x-2",level:3},{value:"For Windows",id:"for-windows-2",level:3},{value:"Modify the GUI",id:"modify-the-gui",level:2},{value:"Contribute Code",id:"contribute-code",level:2}],c={toc:g};function y(e){var t=e.components,n=(0,r.A)(e,a);return(0,l.yg)("wrapper",(0,o.A)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,l.yg)("h2",{id:"using-the-gns3-api"},"Using the GNS3 API"),(0,l.yg)("p",null,(0,l.yg)("a",{parentName:"p",href:"http://api.gns3.net/en/latest/"},"http://api.gns3.net/en/latest/")),(0,l.yg)("h2",{id:"get-the-source-code"},"Get the Source Code"),(0,l.yg)("p",null,"At first you need to clone both project:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"git clone https://github.com/GNS3/gns3-server.git\ngit clone https://github.com/GNS3/gns3-gui.git\n")),(0,l.yg)("p",null,"If you want to access to the code of next big release in both project:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"git checkout NEXT_RELEASE\n")),(0,l.yg)("p",null,"For example:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"git checkout 2.0\n")),(0,l.yg)("h2",{id:"dependencies"},"Dependencies"),(0,l.yg)("h3",{id:"linux"},"Linux"),(0,l.yg)("p",null,"If you are on Linux the best is to install GNS3 via the ppa. This will setup all the dependencies required for the development."),(0,l.yg)("p",null,"Go to both folder (gns3-gui & gns3-server)"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo pip3 install -r dev-requirements.txt\n")),(0,l.yg)("h3",{id:"windows"},"Windows"),(0,l.yg)("p",null,"On Windows you need to install Python 3.5 and PyQT.\nGo to both folder (gns3-gui & gns3-server)"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python.exe -m pip install -r dev-requirements.txt\n")),(0,l.yg)("h3",{id:"mac-os-x"},"Mac OS X"),(0,l.yg)("p",null,"With homebrew:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"brew install python3\nbrew install PyQt5\n")),(0,l.yg)("p",null,"Go to both folder (gns3-gui & gns3-server)"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"pip3 install -r dev-requirements.txt\n")),(0,l.yg)("h2",{id:"run-tests"},"Run Tests"),(0,l.yg)("h3",{id:"for-linux--mac-os-x"},"For Linux & Mac OS X"),(0,l.yg)("p",null,"After that the tests should work go to both projects. And run:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"py.test\n")),(0,l.yg)("h3",{id:"for-windows"},"For Windows"),(0,l.yg)("p",null,"After that the tests should work go to both projects. And run:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python.exe -m py.test\n")),(0,l.yg)("h2",{id:"start-the-server"},"Start the Server"),(0,l.yg)("h3",{id:"for-linux--mac-os-x-1"},"For Linux & Mac OS X"),(0,l.yg)("p",null,"Go to the gns3-server folder and run:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python3 -m gns3server --debug --local\n")),(0,l.yg)("h3",{id:"for-windows-1"},"For Windows"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python.exe -m gns3server --debug --local\n")),(0,l.yg)("h2",{id:"start-the-gui"},"Start the GUI"),(0,l.yg)("p",null,"For starting the gui go to the gns3-gui folder."),(0,l.yg)("h3",{id:"for-linux--mac-os-x-2"},"For Linux & Mac OS X"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python3 -m gns3\n")),(0,l.yg)("h3",{id:"for-windows-2"},"For Windows"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python3.exe -m gns3\n")),(0,l.yg)("h2",{id:"modify-the-gui"},"Modify the GUI"),(0,l.yg)("p",null,"We will start by a simple modification by adding your name to the thanks to in the about dialog."),(0,l.yg)("p",null,"In the gns3-gui folder open with the Qt Designer the file gns3/ui/about_dialog.ui click on Thanks to and add your name to the list:"),(0,l.yg)("img",{alt:"screenshot",src:(0,i.A)("img/contribute/development-of-gns3/1.jpg")}),(0,l.yg)("p",null,"Click on About (otherwise the dialog will open the Thanks to tab) and save.\nNow you need to export the dialog to python code.\nJust run:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"python scripts/build_pyqt.py\n")),(0,l.yg)("p",null,"This will regenerate all the changed Qt interface.\nYou can now start the GUI and see your change."),(0,l.yg)("h2",{id:"contribute-code"},"Contribute Code"),(0,l.yg)("p",null,"You can create a pull request on Gui or Server via Github. Even for work in progress code. We will help you."))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/416.a0d061ae.js b/build/assets/js/416.a0d061ae.js new file mode 100644 index 00000000..e65bba73 --- /dev/null +++ b/build/assets/js/416.a0d061ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[416],{416:(s,c,e)=>{e.r(c)}}]); \ No newline at end of file diff --git a/build/assets/js/48d9d6a9.712f70fc.js b/build/assets/js/48d9d6a9.712f70fc.js new file mode 100644 index 00000000..79f490fa --- /dev/null +++ b/build/assets/js/48d9d6a9.712f70fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4734],{5680:(e,t,o)=>{o.d(t,{xA:()=>d,yg:()=>f});var n=o(6540);function s(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var t=1;t=0||(s[o]=e[o]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(s[o]=e[o])}return s}var u=n.createContext({}),l=function(e){var t=n.useContext(u),o=t;return e&&(o="function"==typeof e?e(t):r(r({},t),e)),o},d=function(e){var t=l(e.components);return n.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var o=e.components,s=e.mdxType,i=e.originalType,u=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),c=l(o),p=s,f=c["".concat(u,".").concat(p)]||c[p]||h[p]||i;return o?n.createElement(f,r(r({ref:t},d),{},{components:o})):n.createElement(f,r({ref:t},d))}));function f(e,t){var o=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=o.length,r=new Array(i);r[0]=p;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[c]="string"==typeof e?e:s,r[1]=a;for(var l=2;l{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=o(8168),s=o(8587),i=(o(6540),o(5680)),r=["components"],a={id:"why-gns3-uses-uuid",title:"Why does GNS3 use UUIDs?",sidebar_label:"Why does GNS3 use UUIDs?"},u=void 0,l={unversionedId:"using-gns3/design/why-gns3-uses-uuid",id:"using-gns3/design/why-gns3-uses-uuid",title:"Why does GNS3 use UUIDs?",description:"A commonly asked question about GNS3, is why I can\u2019t easily find the files of a node or project names on disk. It\u2019s due to the usage of UUIDs in folder naming.",source:"@site/docs/using-gns3/design/why-gns3-uses-uuid.md",sourceDirName:"using-gns3/design",slug:"/using-gns3/design/why-gns3-uses-uuid",permalink:"/docs/using-gns3/design/why-gns3-uses-uuid",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/design/why-gns3-uses-uuid.md",tags:[],version:"current",frontMatter:{id:"why-gns3-uses-uuid",title:"Why does GNS3 use UUIDs?",sidebar_label:"Why does GNS3 use UUIDs?"},sidebar:"someSidebar",previous:{title:"Architecture",permalink:"/docs/using-gns3/design/architecture"},next:{title:"Which emulator should I use?",permalink:"/docs/emulators/which-emulators-should-i-use"}},d={},c=[{value:"What is a UUID?",id:"what-is-a-uuid",level:2},{value:"Why use UUIDs?",id:"why-use-uuids",level:2},{value:"Node UUID in folders",id:"node-uuid-in-folders",level:2},{value:"Project UUIDs on a remote server",id:"project-uuids-on-a-remote-server",level:2},{value:"User or third parties application are not supposed to directly interact with files",id:"user-or-third-parties-application-are-not-supposed-to-directly-interact-with-files",level:2},{value:"What is on disk is not necessarily what is in the VM",id:"what-is-on-disk-is-not-necessarily-what-is-in-the-vm",level:3},{value:"Modification on disk could be lost",id:"modification-on-disk-could-be-lost",level:3},{value:"Modification on disk could corrupt the node",id:"modification-on-disk-could-corrupt-the-node",level:3},{value:"Data could be on another server",id:"data-could-be-on-another-server",level:3}],h={toc:c};function p(e){var t=e.components,o=(0,s.A)(e,r);return(0,i.yg)("wrapper",(0,n.A)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"A commonly asked question about GNS3, is why I can\u2019t easily find the files of a node or project names on disk. It\u2019s due to the usage of UUIDs in folder naming."),(0,i.yg)("h2",{id:"what-is-a-uuid"},"What is a UUID?"),(0,i.yg)("p",null,"A UUID is a 128-bit number. The generation of a UUID doesn\u2019t require a central registration authority in order to be almost unique, while providing a low probability of collisions. In GNS3, we represent a UUID in this manner: 42a1b682-b5bf-4de4-b5af-5366fc20a111."),(0,i.yg)("p",null,"More information about UUIDs can be found here: ",(0,i.yg)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Universally_unique_identifier"},"https://en.wikipedia.org/wiki/Universally_unique_identifier")),(0,i.yg)("h2",{id:"why-use-uuids"},"Why use UUIDs?"),(0,i.yg)("p",null,"Because UUIDs are unique, you can be assured that a UUID for a project or node on your computer is not in use on another computer. This allows the sharing of projects without conflicts. Otherwise, it\u2019s highly probable that the same names for nodes or projects will be used, causing potential conflicts. "),(0,i.yg)("h2",{id:"node-uuid-in-folders"},"Node UUID in folders"),(0,i.yg)("p",null,"If you list the files of a project, you will see that the nodes folder uses UUID:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"# ls -R myproject\nproject-files tutu.gns3\n\nmyproject/project-files:\nvpcs\n\nmyproject/project-files/vpcs:\n1c18e765-0107-4083-b371-a92d490eb8a0\n4349251e-1d91-454f-9d89-c998cbfa90c9\n\nmyproject/project-files/vpcs/1c18e765-0107-4083-b371-a92d490eb8a0:\nstartup.vpc\n\nmyproject/project-files/vpcs/4349251e-1d91-454f-9d89-c998cbfa90c9:\nstartup.vpc\n")),(0,i.yg)("p",null,"The UUID for a node is stable and will never change."),(0,i.yg)("p",null,"The main reason for using UUIDs instead of names, is that most emulators don\u2019t support changing the path of their files while the emulator is running. If you want to rename a node and change the path of a folder, you\u2019d need to stop the node and restart it."),(0,i.yg)("p",null,"The second reason, is that some emulators have restrictions on the characters in the path. By using UUIDs, the user doesn\u2019t need to care about that."),(0,i.yg)("h2",{id:"project-uuids-on-a-remote-server"},"Project UUIDs on a remote server"),(0,i.yg)("p",null,"When you use GNS3 on your local computer, you can choose the location of the project files. It\u2019s for backward compatibility, and to allow user to freeup disk space without starting GNS3. However, on a remote server, all projects are in the same directory, with a UUID as their name."),(0,i.yg)("p",null,"The first reason is to avoid problems when renaming/copy a project. Second reason is to prevent problem if the remote server filesystem doesn\u2019t support UTF-8."),(0,i.yg)("p",null,"This also allows running multiple GNS3 servers using the same shared projects folder, without the risk of collision. In the future, it should be possible to support multiple users with same project name, sharing a common server."),(0,i.yg)("h2",{id:"user-or-third-parties-application-are-not-supposed-to-directly-interact-with-files"},"User or third parties application are not supposed to directly interact with files"),(0,i.yg)("p",null,"There's a reason for GNS3 not consider the need to have a user friendly file system. Nobody should directly interact with what is contained in the folder. It\u2019s internal to GNS3, and there are good reasons for this. GNS3 provides tools to export or edit files, and you need to use them. If you build a third party's application, use the API to apply your modification(s). You can find more information over at ",(0,i.yg)("a",{parentName:"p",href:"http://api.gns3.net/"},"http://api.gns3.net/"),"."),(0,i.yg)("h3",{id:"what-is-on-disk-is-not-necessarily-what-is-in-the-vm"},"What is on disk is not necessarily what is in the VM"),(0,i.yg)("p",null,"If you browse the disk, you will see stuff that could be the configuration file of the node. But this not always synced, and for various reasons, they could be out of sync. This is normal. You could have a delay when you save in the emulator, and when GNS3 is notified about the changes and dumps the configuration on disk."),(0,i.yg)("h3",{id:"modification-on-disk-could-be-lost"},"Modification on disk could be lost"),(0,i.yg)("p",null,"What you change on disk could be lost at the next sync."),(0,i.yg)("h3",{id:"modification-on-disk-could-corrupt-the-node"},"Modification on disk could corrupt the node"),(0,i.yg)("p",null,"This is the worst case scenario. A user could be modifying something on disk outside GNS3, and GNS3 attempts to write the file at the same time. This could corrupt the files. Some configuration file modifications can even crash the emulator."),(0,i.yg)("h3",{id:"data-could-be-on-another-server"},"Data could be on another server"),(0,i.yg)("p",null,"If you split up your project on multiple servers, the data could be spread across all of them. If you use the API, this won\u2019t be a concern."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/5c632b0c.627110ed.js b/build/assets/js/5c632b0c.627110ed.js new file mode 100644 index 00000000..1fb7fc9b --- /dev/null +++ b/build/assets/js/5c632b0c.627110ed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[7313],{5680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>y});var o=t(6540);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function r(e){for(var n=1;n=0||(s[t]=e[t]);return s}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}var a=o.createContext({}),l=function(e){var n=o.useContext(a),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},u=function(e){var n=l(e.components);return o.createElement(a.Provider,{value:n},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},p=o.forwardRef((function(e,n){var t=e.components,s=e.mdxType,i=e.originalType,a=e.parentName,u=g(e,["components","mdxType","originalType","parentName"]),c=l(t),p=s,y=c["".concat(a,".").concat(p)]||c[p]||h[p]||i;return t?o.createElement(y,r(r({ref:n},u),{},{components:t})):o.createElement(y,r({ref:n},u))}));function y(e,n){var t=arguments,s=n&&n.mdxType;if("string"==typeof e||s){var i=t.length,r=new Array(i);r[0]=p;var g={};for(var a in n)hasOwnProperty.call(n,a)&&(g[a]=n[a]);g.originalType=e,g[c]="string"==typeof e?e:s,r[1]=g;for(var l=2;l{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>a,metadata:()=>u,toc:()=>h});var o=t(8168),s=t(8587),i=(t(6540),t(5680)),r=t(6025),g=["components"],a={id:"the-gns3-gui",title:"The GNS3 GUI",sidebar_label:"The GNS3 GUI"},l=void 0,u={unversionedId:"using-gns3/beginners/the-gns3-gui",id:"using-gns3/beginners/the-gns3-gui",title:"The GNS3 GUI",description:"Introduction",source:"@site/docs/using-gns3/beginners/the-gns3-gui.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/the-gns3-gui",permalink:"/docs/using-gns3/beginners/the-gns3-gui",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/the-gns3-gui.md",tags:[],version:"current",frontMatter:{id:"the-gns3-gui",title:"The GNS3 GUI",sidebar_label:"The GNS3 GUI"},sidebar:"someSidebar",previous:{title:"Your first Cisco topology",permalink:"/docs/getting-started/your-first-cisco-topology"},next:{title:"Change node symbol",permalink:"/docs/using-gns3/beginners/change-node-symbol"}},c={},h=[{value:"Introduction",id:"introduction",level:2},{value:"Screen Layout",id:"screen-layout",level:2},{value:"GNS3 Workspace",id:"gns3-workspace",level:2},{value:"Topology Summary",id:"topology-summary",level:2},{value:"Servers Summary",id:"servers-summary",level:2},{value:"GNS3 Console",id:"gns3-console",level:2},{value:"Devices Toolbar",id:"devices-toolbar",level:2},{value:"GNS3 Toolbar",id:"gns3-toolbar",level:2},{value:"First GNS3 Toolbar Group",id:"first-gns3-toolbar-group",level:2},{value:"New Blank Project",id:"new-blank-project",level:3},{value:"Open Project",id:"open-project",level:3},{value:"Second GNS3 Toolbar Group",id:"second-gns3-toolbar-group",level:2},{value:"Manage Snapshot",id:"manage-snapshot",level:3},{value:"Show/Hide Interface Labels",id:"showhide-interface-labels",level:3},{value:"Console Connect to all Devices",id:"console-connect-to-all-devices",level:3},{value:"Third GNS3 Toolbar Group",id:"third-gns3-toolbar-group",level:2},{value:"Fourth GNS3 Toolbar Group",id:"fourth-gns3-toolbar-group",level:2}],p={toc:h};function y(e){var n=e.components,t=(0,s.A)(e,g);return(0,i.yg)("wrapper",(0,o.A)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"introduction"},"Introduction"),(0,i.yg)("p",null,"This document explains various options in the GNS3 Graphical User Interface (GUI) which help you create and manage GNS3 projects."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"This guide applies to both the Local Server and GNS3 VM installations. Both installation options use the same user interface for the management of projects.")),(0,i.yg)("h2",{id:"screen-layout"},"Screen Layout"),(0,i.yg)("p",null,"The following figure shows a screenshot of the version 2.2.0 GNS3 GUI:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/1.jpg")}),(0,i.yg)("p",null,"The GUI is subdivided into several sections: The Workspace, Toolbar, Devices Toolbar, Topology Summary, Servers Summary, and the Console."),(0,i.yg)("h2",{id:"gns3-workspace"},"GNS3 Workspace"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/2.jpg")}),(0,i.yg)("p",null,"The Workspace is where devices will be \u201cdragged and dropped\u201d in order to build your topology."),(0,i.yg)("h2",{id:"topology-summary"},"Topology Summary"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/3.jpg")}),(0,i.yg)("p",null,"This pane will display devices currently in the Workspace, their status (on/off/suspended), as well as which devices are connected to one another."),(0,i.yg)("h2",{id:"servers-summary"},"Servers Summary"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/4.jpg")}),(0,i.yg)("p",null,"This pane will display the servers in use (local, local GNS3-VM, remote), their state (on/off), as well as their current resource usage. Note that the local server includes statistics for more than just GNS3, so if you\u2019re heavily multitasking, that will be reflected in its reported resource usage."),(0,i.yg)("h2",{id:"gns3-console"},"GNS3 Console"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/5.jpg")}),(0,i.yg)("p",null,"This pane will display any errors/issues GNS3 itself encounters, and will output those messages here. You may be be asked by Moderators or other community members attempting to help you will ask that you report any error messages, as well as potentially run debug commands here for more verbose error output. "),(0,i.yg)("h2",{id:"devices-toolbar"},"Devices Toolbar"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/6.jpg")}),(0,i.yg)("p",null,"Devices in GNS3 are divided by category, such as Routers, Switches, End Devices, Security, All Devices, along with the Add Link button at the bottom (it looks like a network cable)."),(0,i.yg)("h2",{id:"gns3-toolbar"},"GNS3 Toolbar"),(0,i.yg)("p",null,"The GNS3 toolbar found at the top of the GNS3 GUI, contains groups of icons that allow you to easily perform common tasks."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/7.jpg")}),(0,i.yg)("p",null,"The toolbar groups icons into specific functions or features. This gives you a simple way of getting things done."),(0,i.yg)("h2",{id:"first-gns3-toolbar-group"},"First GNS3 Toolbar Group"),(0,i.yg)("p",null,"The first group allows you to create, open and save projects:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/8.jpg")}),(0,i.yg)("h3",{id:"new-blank-project"},"New Blank Project"),(0,i.yg)("p",null,"Click the New Blank Project button to create a new project in GNS3. You will be asked for your new project name and folder to save the new project."),(0,i.yg)("p",null,"To create a new GNS3 project, click the ",(0,i.yg)("strong",{parentName:"p"},"New Blank Project")," button on the GNS3 Toolbar:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/9.jpg")}),(0,i.yg)("p",null,"GNS3 will prompt you for the Name and Location of your new project.The default name is untitled and default location ",(0,i.yg)("inlineCode",{parentName:"p"},"C:\\Users\\\\GNS3")," in Windows:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/10.jpg")}),(0,i.yg)("p",null,"Give your project a name, change the location if desired and click OK"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/11.jpg")}),(0,i.yg)("p",null,"A new project is opened:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/12.jpg")}),(0,i.yg)("h3",{id:"open-project"},"Open Project"),(0,i.yg)("p",null,"Click the ",(0,i.yg)("strong",{parentName:"p"},"Open Project")," button to open an existing GNS3 project. You will be asked for your new project name and folder to save the new project."),(0,i.yg)("p",null,"To Open an existing project, click the ",(0,i.yg)("strong",{parentName:"p"},"Open Project")," button on the GNS3 Toolbar:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/13.jpg")}),(0,i.yg)("p",null,"An Open project window will display. Navigate to the GNS3 projects folder. By default this is ",(0,i.yg)("inlineCode",{parentName:"p"},"C:\\Users\\\\GNS3")," in Windows:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/14.jpg")}),(0,i.yg)("p",null,"Select the project file and click then ",(0,i.yg)("strong",{parentName:"p"},"Open")),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/15.jpg")}),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Project files use the .gns3 extension. For example, in the above figure, the name is: ",(0,i.yg)("strong",{parentName:"p"},"ospf-2.gns3"))),(0,i.yg)("p",null,"The project is opened with all devices turned off:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/16.jpg")}),(0,i.yg)("p",null,"(GNS3 now saves as you go, so there\u2019s no longer discrete Save button)"),(0,i.yg)("h2",{id:"second-gns3-toolbar-group"},"Second GNS3 Toolbar Group"),(0,i.yg)("p",null,"The second GNS3 Toolbar Group allows you to create project snapshots, show or hide interface labels and connect to device consoles:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/17.jpg")}),(0,i.yg)("h3",{id:"manage-snapshot"},"Manage Snapshot"),(0,i.yg)("p",null,"Click the Snapshot button to create a snapshot of your devices, links and IOS configurations. The Snapshots in GNS3 are similar to snapshots in other systems such as VMware which allow you to create a saved version of your project at a specific point in time. You can then revert back to this later."),(0,i.yg)("p",null,"::: important\nIf you want your router configurations saved, make sure you save them via the router CLI.\nClicking the Snapshot button will open a window giving you the options to create/delete/restore a snapshot.\n:::"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/18.jpg")}),(0,i.yg)("p",null,"To create a new Snapshot of the current topology, all devices in it must first be stopped, so save their configuration changes first in their CLI, then click Create."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/19.jpg")}),(0,i.yg)("p",null,"Give the Snapshot a unique name, and click OK."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/20.jpg")}),(0,i.yg)("p",null,"The newly created Snapshot will be displayed by name, along with the creation date & time in DD/MM/YY and 24hr formats."),(0,i.yg)("p",null,"Snapshots are stored on a per-project basis, so in order to restore a Snapshot of project ospf-2.gns3 (for example), you\u2019d need to already have that project open."),(0,i.yg)("p",null,"Click \u2018Close\u2019 to exit this pop-up window."),(0,i.yg)("h3",{id:"showhide-interface-labels"},"Show/Hide Interface Labels"),(0,i.yg)("p",null,"Click the ",(0,i.yg)("strong",{parentName:"p"},"Show/Hide interface labels")," button to display or hide interface labels in your GNS3 projects. The button will toggle the displaying or hiding of abbreviated interface names. For example interface FastEthernet 0/0 is displayed as f0/0 in GNS3."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Default")," By default, interface labels are hidden."),(0,i.yg)("p",null,"To display interface labels click the Show/Hide interface labels button on the GNS3 Toolbar: "),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/21.jpg")}),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Result")," Interface labels are displayed in devices in the workspace. The button also displays as depressed:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/22.jpg")}),(0,i.yg)("p",null,"Click the ",(0,i.yg)("strong",{parentName:"p"},"Show/Hide interface labels")," button again to hide the labels."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/23.jpg")}),(0,i.yg)("h3",{id:"console-connect-to-all-devices"},"Console Connect to all Devices"),(0,i.yg)("p",null,"The console connect button on the toolbar will open connections to each running device in your topology using whichever terminal emulation program you have selected in GNS3\u2019s global preferences."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/24.jpg")}),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"The following isn\u2019t a Toolbar button, but you can elect to open console connections to a subset of topology devices by selecting them in the workspace, right-clicking, and left-clicking on \u201cConsole\u201d in the pop-up menu")),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/25.jpg")}),(0,i.yg)("h2",{id:"third-gns3-toolbar-group"},"Third GNS3 Toolbar Group"),(0,i.yg)("p",null,"The third GNS3 Toolbar Group allows you to Start, Suspend, Stop, and Restart all the topology devices at once."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/26.jpg")}),(0,i.yg)("p",null,"The buttons themselves are pretty self-explanatory, but you will notice both in the Workspace and Topology Summary panes that the indicators will change color for devices that are running, suspended, or stopped (restarted devices switch to Started, and you\u2019ll see them reload in any open console connection)."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/27.jpg")}),(0,i.yg)("p",null,"The Start button will power on every device in the Workspace, and the indicators on the links will turn green."),(0,i.yg)("p",null,"You can also verify the status of each link in the Topology Summary, to the right:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/28.jpg")}),(0,i.yg)("p",null,"The link indicators for Suspended devices will turn yellow. Suspended devices still have any non-saved configuration changes stored in your system RAM, and while switch to a powered on state faster than stopped devices will (again, this will also be reflected in the Topology Summary).\nStopped devices have their link indicators turn red, and are fully powered off. You\u2019ll need to either click the Start or Restart buttons to turn them back on."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/29.jpg")}),(0,i.yg)("p",null,"The Restart button is just to the right of the Stop button:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/30.jpg")}),(0,i.yg)("h2",{id:"fourth-gns3-toolbar-group"},"Fourth GNS3 Toolbar Group"),(0,i.yg)("p",null,"The fourth GNS3 Toolbar Group allows you to annotate notes into the topology Workspace, import an image to serve as a background, add shapes and lines, as well as zoom in/out, or take a screenshot of the Workspace"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/31.jpg")}),(0,i.yg)("p",null,"Annotate allows you to add notes in the Workspace related to your topology (to make it easier to remember when coming back to it later, instead of viewing the config files of each device)."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/32.jpg")}),(0,i.yg)("p",null,"If you right-click on the current text box, you\u2019ll get options to duplicate the text (comes in handy of you\u2019re adding IP addressing to a large topology, raising/lowering the text a layer, as well as Text edit. Text edit gives you the ability to change the text color, font, font size, and orientation."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/33.jpg")}),(0,i.yg)("p",null,"The background image button will allow to select an image (from the My Pictures folder by default) to import as the background image for the topology,"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/34.jpg")}),(0,i.yg)("p",null,"When the pop-up window opens, asking you which image you\u2019d like to use as the topology background, select it, and click ",(0,i.yg)("strong",{parentName:"p"},"'Open'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/35.jpg")}),(0,i.yg)("p",null,"That image will be added as the background. Ideally, you\u2019d use an image roughly the same size (or larger) than the topology you\u2019re creating:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/36.jpg")}),(0,i.yg)("p",null,"(obviously this background image was quite small, but it\u2019s just here for illustration purposes)"),(0,i.yg)("p",null,"The Circle, Square, and Line buttons allow you add and arbitrarily change the size/shape and color of those shapes that you add to a topology."),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/37.jpg")}),(0,i.yg)("p",null,"(the square shape is just shown as an example, since the other two have similar options)."),(0,i.yg)("p",null,"You can also right-click and duplicate those, like you can with text annotations:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/38.jpg")}),(0,i.yg)("p",null,"Something to bear in mind, is that these shapes will initially be placed on a higher layer than devices already in the topology workspace, so they\u2019ll obscure devices already present:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/39.jpg")}),(0,i.yg)("p",null,"Right-click on the object, and select \u201cLower one layer\u201d to place it on a layer lower than the device(s) in the topology:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/40.jpg")}),(0,i.yg)("p",null,"Once you\u2019ve dropped these shapes down a couple of layers they become non-editable, so you\u2019ll need to raise them to higher layers to manipulate them further, or just delete them (accomplished by right-clicking on them, and choosing \u201cRaise one layer\u201d)."),(0,i.yg)("p",null,"You can right-click on them just like a text box to get similar options, but you\u2019d choose \u201cStyle\u201d instead of text edit:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/41.jpg")}),(0,i.yg)("p",null,"You can change the objects fill color, border color, border width, border type, and rotation. In the two below images, the fill color and border type of two squares have been changed, to indicate they\u2019re in different VLANs:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/42.jpg")}),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/43.jpg")}),(0,i.yg)("p",null,"The final three buttons are pretty self explanatory. The first magnifying glass (with the plus (+) sign) will zoom in the topology view:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/44.jpg")}),(0,i.yg)("p",null,"The magnifying glass with glass with the minus ( - ) sign will zoom out the topology view:"),(0,i.yg)("p",null,"The snapshot button (looks like a little camera) will take a image of the entire topology (not just the currently visible area), and save it in your default images folder. It will use the topology name for the filename by default, but you can change that:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/beginners/the-gns3-gui/45.jpg")}))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/5d09215c.caf33ebf.js b/build/assets/js/5d09215c.caf33ebf.js new file mode 100644 index 00000000..8ca1cfe3 --- /dev/null +++ b/build/assets/js/5d09215c.caf33ebf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[174],{5680:(e,t,o)=>{o.d(t,{xA:()=>m,yg:()=>u});var n=o(6540);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=n.createContext({}),g=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},m=function(e){var t=g(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=g(o),d=a,u=p["".concat(l,".").concat(d)]||p[d]||c[d]||r;return o?n.createElement(u,i(i({ref:t},m),{},{components:o})):n.createElement(u,i({ref:t},m))}));function u(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var g=2;g{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>g,default:()=>u,frontMatter:()=>l,metadata:()=>m,toc:()=>c});var n=o(8168),a=o(8587),r=(o(6540),o(5680)),i=o(6025),s=["components"],l={id:"adding-vmware-vms-to-gns3-topologies",title:"Adding VMware VMs to GNS3 Topologies",sidebar_label:"Adding VMware VMs to GNS3 Topologies"},g=void 0,m={unversionedId:"emulators/adding-vmware-vms-to-gns3-topologies",id:"emulators/adding-vmware-vms-to-gns3-topologies",title:"Adding VMware VMs to GNS3 Topologies",description:"Introduction",source:"@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md",sourceDirName:"emulators",slug:"/emulators/adding-vmware-vms-to-gns3-topologies",permalink:"/docs/emulators/adding-vmware-vms-to-gns3-topologies",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/adding-vmware-vms-to-gns3-topologies.md",tags:[],version:"current",frontMatter:{id:"adding-vmware-vms-to-gns3-topologies",title:"Adding VMware VMs to GNS3 Topologies",sidebar_label:"Adding VMware VMs to GNS3 Topologies"},sidebar:"someSidebar",previous:{title:"Non-Native IOU for Windows and OSX",permalink:"/docs/emulators/non-native-iou-for-windows-and-osx"},next:{title:"Docker support in GNS3",permalink:"/docs/emulators/docker-support-in-gns3"}},p={},c=[{value:"Introduction",id:"introduction",level:2},{value:"VMWare Limitations in GNS3",id:"vmware-limitations-in-gns3",level:2},{value:"Limitation of VMware Player",id:"limitation-of-vmware-player",level:3},{value:"Why use VMWare?",id:"why-use-vmware",level:2},{value:"What about VMWare Fusion?",id:"what-about-vmware-fusion",level:2},{value:"Add a virtual machine to VMWare Workstation (Local Server)",id:"add-a-virtual-machine-to-vmware-workstation-local-server",level:2},{value:"Add a virtual machine to GNS3 (Local Server)",id:"add-a-virtual-machine-to-gns3-local-server",level:2},{value:"Create a GNS3 Topology",id:"create-a-gns3-topology",level:2}],d={toc:c};function u(e){var t=e.components,o=(0,a.A)(e,s);return(0,r.yg)("wrapper",(0,n.A)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"introduction"},"Introduction"),(0,r.yg)("p",null,"This document explains how to add VMware virtual machines to GNS3 topologies. Even though this document discusses the use of VMware virtual machines, you can do something similar using Virtualbox."),(0,r.yg)("p",null,"This document will show you two methods of adding a virtual machine to GNS3:"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"Manually using a local install of GNS3"),(0,r.yg)("li",{parentName:"ol"},"Using an appliance and adding the VM to the GNS3 VM")),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"We are not discussing the importing of the GNS3 VM in this document; but rather the addition of other virtual machines to GNS3 topologies which may be running in the GNS3 VM or running locally.")),(0,r.yg)("h2",{id:"vmware-limitations-in-gns3"},"VMWare Limitations in GNS3"),(0,r.yg)("p",null,"The data of the VMware VMs are stored outside GNS3. This mean a topology using a VMware VM will not be portable on a different computer. If you want a portable topology you will need to use Qemu."),(0,r.yg)("p",null,"You can\u2019t run multiple instances of the same VMware VM if you are using VMware Player. You need a paid version of VMware to do that."),(0,r.yg)("h3",{id:"limitation-of-vmware-player"},"Limitation of VMware Player"),(0,r.yg)("p",null,"The Player version of VMware has limitations and if your VM are not in the default directory sometimes GNS3 can\u2019t locate the VM you created."),(0,r.yg)("p",null,"This problem doesn\u2019t occur with the paid version of VMware because a central database is available to third parties applications."),(0,r.yg)("h2",{id:"why-use-vmware"},"Why use VMWare?"),(0,r.yg)("p",null,"Some appliances are designed to only run in VMware. Also, there are times when you may simply prefer using a desktop VM (and the GUI applications it can provide), instead of using the serial console to work with the VMs CLI in a terminal. Desktop VMs are more responsive in VMware than Qemu, purely due to technical reasons that are beyond the scope of this document."),(0,r.yg)("h2",{id:"what-about-vmware-fusion"},"What about VMWare Fusion?"),(0,r.yg)("p",null,"On MacOSX, VMware Fusion is used instead of VMware Workstation. The user interface of VMware Fusion is different than VMware Workstations, but it works in the same way with GNS3, so the same principles apply."),(0,r.yg)("h2",{id:"add-a-virtual-machine-to-vmware-workstation-local-server"},"Add a virtual machine to VMWare Workstation (Local Server)"),(0,r.yg)("p",null,"If you already have a virtual machine imported into VMware Workstation, go to the next section of this document."),(0,r.yg)("p",null,"Download or copy a virtual machine ISO to your local computer. In this example, TinyCore Linux is used. This is a recommended lightweight Linux distribution:"),(0,r.yg)("p",null,"Download link: ",(0,r.yg)("a",{parentName:"p",href:"http://tinycorelinux.net/downloads.html"},"http://tinycorelinux.net/downloads.html")),(0,r.yg)("p",null,"ISO on local PC:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/1.jpg")}),(0,r.yg)("p",null,"In VMware Workstation, click ",(0,r.yg)("strong",{parentName:"p"},"\u201cCreate a New Virtual Machine\u201d"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/2.jpg")}),(0,r.yg)("p",null,"Follow the VMware Wizard to import create the new virtual machine. In the first step, select ",(0,r.yg)("strong",{parentName:"p"},"Typical")," and then click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/3.jpg")}),(0,r.yg)("p",null,"Point to the ISO file downloaded and click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/4.jpg")}),(0,r.yg)("p",null,"Select ",(0,r.yg)("strong",{parentName:"p"},"Linux")," as the ",(0,r.yg)("strong",{parentName:"p"},"Guest operating system")," and ",(0,r.yg)("strong",{parentName:"p"},"Other Linux 4.x")," as the Version and then click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/5.jpg")}),(0,r.yg)("p",null,"Name the VM and change the default ",(0,r.yg)("strong",{parentName:"p"},"Location")," if you want to. In this example the VM is called TinyCore-Local-VMware and the default Location is used. Then click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/6.jpg")}),(0,r.yg)("p",null,"Specify the amount of disk space required by your virtual machine. In this example only 1 GB is allocated. You can also select ",(0,r.yg)("strong",{parentName:"p"},"\u201cStore virtual disk as a single file\u201d"),", as this VM will be so small. Then click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/7.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Customize Hardware"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/8.jpg")}),(0,r.yg)("p",null,"Customize the hardware of the VM as required. In this example only 128 MB of RAM is required for the VM. To do so, click ",(0,r.yg)("strong",{parentName:"p"},"\u201cMemory\u201d")," in the Virtual Machine settings, type ",(0,r.yg)("strong",{parentName:"p"},"\u201c128\u201d")," in the dialog box for the amount of memory it will use. Once the required changes have been completed, click ",(0,r.yg)("strong",{parentName:"p"},"Close"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/9.jpg")}),(0,r.yg)("p",null,"To complete the VM import, click ",(0,r.yg)("strong",{parentName:"p"},"Finish"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/10.jpg")}),(0,r.yg)("p",null,"The VM is now available in VMware Workstation:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/11.jpg")}),(0,r.yg)("p",null,"Power on the virtual machine in VMware Workstation:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/12.jpg")}),(0,r.yg)("p",null,"Install the operating system as required. TinyCore Linux does not require this and is booted to RAM by selecting ",(0,r.yg)("strong",{parentName:"p"},"Boot TinyCore"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/13.jpg")}),(0,r.yg)("p",null,"Complete any operating system installation setup as required. In this example, TinyCore simply boots up and no configuration is required:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/14.jpg")}),(0,r.yg)("p",null,"Once install is completed, shut down the virtual machine by either clicking on the ",(0,r.yg)("strong",{parentName:"p"},"Suspend")," button in VMware Workstation and select ",(0,r.yg)("strong",{parentName:"p"},"Power Off")," (shown below), or right-clicking on the tab for the virtual machine (containing its name), select ",(0,r.yg)("strong",{parentName:"p"},"Power"),", and then ",(0,r.yg)("strong",{parentName:"p"},"Shut Down Guest")," (not shown):"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/15.jpg")}),(0,r.yg)("p",null,"You are now ready to integrate the new VM with GNS3."),(0,r.yg)("h2",{id:"add-a-virtual-machine-to-gns3-local-server"},"Add a virtual machine to GNS3 (Local Server)"),(0,r.yg)("p",null,"Once you have installed and configured your virtual machine in VMware Workstation, you are ready to integrate the VM with GNS3."),(0,r.yg)("p",null,"Start GNS3 and create a ",(0,r.yg)("strong",{parentName:"p"},"New project"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/16.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Edit")," and then ",(0,r.yg)("strong",{parentName:"p"},"Preferences"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/17.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"VMware VMs")," and ",(0,r.yg)("strong",{parentName:"p"},"New"),", to add a new VMware virtual machine:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/18.jpg")}),(0,r.yg)("p",null,"You will be prompted which server type to use, to run this virtual machine. As this article uses the local server, the remote server option is greyed out. Click ",(0,r.yg)("strong",{parentName:"p"},"Next>"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/19.jpg")}),(0,r.yg)("p",null,"On the next screen, click on the dropdown:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/20.jpg")}),(0,r.yg)("p",null,"The dropdown lists all the available VMware virtual machines available on this computer. Left-click on your new TinyCore-Local-VMware virtual machine to select it:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/21.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Finish>")," to complete the import process:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/22.jpg")}),(0,r.yg)("p",null,"The new virtual machine is now available in GNS3. Ensure that it is still highlighted, and click ",(0,r.yg)("strong",{parentName:"p"},"Edit")," to change the VM settings:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/23.jpg")}),(0,r.yg)("p",null,"Click the ",(0,r.yg)("strong",{parentName:"p"},"Network")," Tab:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/24.jpg")}),(0,r.yg)("p",null,"Ensure that \u201cAllow GNS3 to override non custom VMware adapter\u201d is selected, and click ",(0,r.yg)("strong",{parentName:"p"},"OK")," to finish editing the TinyCore-Local-VMware virtual machine\u2019s properties."),(0,r.yg)("p",null,"GNS3 will randomly select an available Host-only VMnet to bridge the VMware virtual machine into the GNS3 topology. VMnet 0 (bridged), VMnet 1 (host-only), and VMnet 8 (NAT) are available in VMware by default, but will not be used by GNS3 for this purpose!"),(0,r.yg)("p",null,"It is important that any new Host-Only VMnet created for GNS3 to use have the default DHCP for it disabled!"),(0,r.yg)("p",null,"Below a screenshot of the Virtual Network Editor (VNE) in VMware Workstation Pro, showing additional Host-only VMnets (VMnets 2-7, and 9 - 19), for illustration purposes. VNE is unavailable to users of VMware Workstation Player."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/25.jpg")}),(0,r.yg)("p",null,"(notice that VMnets 2 - 7 are Host-only, and have their own local DHCP servers disabled. That is important!!)"),(0,r.yg)("p",null,"VMware Workstation Players (and VMware Workstation Pro users) can use a script included with GNS3 (named gns3vmnet) to automatically create and configure the additional VMnets necessary."),(0,r.yg)("p",null,"In Windows, this executable is located in the default GNS3 installation directory:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/26.jpg")}),(0,r.yg)("p",null,"(You may need to create an exemption/exclusion in your anti-virus software to allow this executable to run. This process varies, so consult the documentation of the anti-virus suite you use for instructions.)"),(0,r.yg)("p",null,"To have GNS3 automatically create the necessary Host-only VMnets for you (using the aforementioned gns3vmnet file), click on ",(0,r.yg)("strong",{parentName:"p"},"VMware -> Advanced local settings"),", and then click on the ",(0,r.yg)("strong",{parentName:"p"},"Configure")," button:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/27.jpg")}),(0,r.yg)("p",null,"(If necessary, you can have GNS3 remove the host-only VMnets it created by clicking the ",(0,r.yg)("strong",{parentName:"p"},"Reset")," button, instead). "),(0,r.yg)("p",null,"Once completed, click Click ",(0,r.yg)("strong",{parentName:"p"},"OK")," to complete the integration."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/28.jpg")}),(0,r.yg)("h2",{id:"create-a-gns3-topology"},"Create a GNS3 Topology"),(0,r.yg)("p",null,"Once you have integrated the new virtual machine with GNS3, you can now create topologies that contain the new VM."),(0,r.yg)("p",null,"To create a new GNS3 topology, select a group of devices in the ",(0,r.yg)("strong",{parentName:"p"},"Devices Toolbar")," by clicking the ",(0,r.yg)("strong",{parentName:"p"},"End Devices")," button"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/29.jpg")}),(0,r.yg)("p",null,"The new virtual machine is now available to be added to a GNS3 topology:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/30.jpg")}),(0,r.yg)("p",null,"Drag and drop the selected node (device) to the GNS3 ",(0,r.yg)("strong",{parentName:"p"},"Workspace"),". An instance of the node becomes available in the ",(0,r.yg)("strong",{parentName:"p"},"Workspace"),". In this example, the TinyCore PC is now available:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/31.jpg")}),(0,r.yg)("p",null,"Drag and drop another node into the GNS3 ",(0,r.yg)("strong",{parentName:"p"},"Workspace"),". For this article, a router will be added to the GNS3 workspace. The devices available will depend on your GNS3 configuration:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/32.jpg")}),(0,r.yg)("p",null,"Click the ",(0,r.yg)("strong",{parentName:"p"},"Toolbar Device")," button again to collapse the group:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/33.jpg")}),(0,r.yg)("p",null,"Click the ",(0,r.yg)("strong",{parentName:"p"},"Add a Link")," button to start adding links to your topology. The mouse cursor will change to indicate that links can be added:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/34.jpg")}),(0,r.yg)("p",null,"Click on the TinyCore-Local-VMware~1 virtual machine in your topology, to display its available interfaces. In this example ",(0,r.yg)("strong",{parentName:"p"},"Ethernet0")," is available (the available interfaces will be device dependant):"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/35.jpg")}),(0,r.yg)("p",null,"Click the interface and then select another device in the topology to connect the interface to. In this example ",(0,r.yg)("strong",{parentName:"p"},"Ethernet 0")," on ",(0,r.yg)("strong",{parentName:"p"},"TinyCore-Local-VMware")," was selected and the link was joined to the ",(0,r.yg)("strong",{parentName:"p"},"FastEthernet0/0")," interface of ",(0,r.yg)("strong",{parentName:"p"},"R1"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/36.jpg")}),(0,r.yg)("p",null,"Click the ",(0,r.yg)("strong",{parentName:"p"},"Add a Link")," button to stop adding links. The mouse cursor will change back to normal to indicate that you have stopped adding links:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/37.jpg")}),(0,r.yg)("p",null,"Click the ",(0,r.yg)("strong",{parentName:"p"},"Show/Hide interface labels")," button on the ",(0,r.yg)("strong",{parentName:"p"},"GNS3 Toolbar")," to display interface labels in your topology:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/38.jpg")}),(0,r.yg)("p",null,"This will display the connected interfaces of both devices:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/39.jpg")}),(0,r.yg)("p",null,"You are now ready to power on your network devices. Click the ",(0,r.yg)("strong",{parentName:"p"},"Start/Resume")," button on the ",(0,r.yg)("strong",{parentName:"p"},"GNS3 Toolbar")," to start up your network devices:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/40.jpg")}),(0,r.yg)("p",null,"GNS3 indicates that the devices have been powered on by turning the interface connectors from red to green:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/41.jpg")}),(0,r.yg)("admonition",{type:"caution"},(0,r.yg)("p",{parentName:"admonition"},"GNS3 will automatically start up the VMware virtual machine when you click the start button (shown below). The only available console options for this TinyCore-Local-VMware are None and Telnet. We will be using the GUI displayed in GNS3 to configure this device:")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/42.jpg")}),(0,r.yg)("p",null,"To access the serial console of the router (or any other additional nodes you may have in your topology), click the Console All button in the Toolbar to launch your select terminal emulator. The below example uses Solar-PuTTY, as it\u2019s included in the Windows GNS3 All-in-one installer from ",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com"},"gns3.com"),", and is set to be the default terminal emulator (you\u2019re free to select a different terminal emulator. There are instructions available in ",(0,r.yg)("a",{parentName:"p",href:"../using-gns3/beginners/the-console-terminal"},"this article")," showing how to do so)."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/43.jpg")}),(0,r.yg)("p",null,"Be advised that Solar-PuTTY is not included by default if the GNS3 AIO installer was downloaded from Github (regular PuTTY will be included instead). "),(0,r.yg)("p",null,"Solar-PuTTY is available for free on SolarWinds website ",(0,r.yg)("a",{parentName:"p",href:"https://www.solarwinds.com/free-tools/solar-putty"},"here"),"."),(0,r.yg)("p",null,"If you have downloaded Solar-PuTTY from SolarWinds will be in a .zip archive. Decompress that file, copy the Solar-PuTTY executable to the GNS3 installation directory. ",(0,r.yg)("a",{parentName:"p",href:"../using-gns3/beginners/the-console-terminal"},"This article")," (the same one linked to above) shows how to change the default terminal emulator GNS3 will use."),(0,r.yg)("p",null,"Let\u2019s go back to the TinyCore-Local-VMware virtual machine running in the VMware Workstation GUI:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/44.jpg")}),(0,r.yg)("p",null,"In this example, R1 is configured as follows:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1# configure terminal\nR1(config)# interface fastEthernet 0/0\nR1(config-if)# ip address 10.1.1.1 255.255.255.0\nR1(config-if)# no shutdown\nR1(config-if)# end\nR1#\n")),(0,r.yg)("p",null,"Configure the VM with an IP address in the same subnet. In TinyCore, this is done by first selecting the Control Panel:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/45.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Network"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/46.jpg")}),(0,r.yg)("p",null,"Configure the relevant IP addressing information and click ",(0,r.yg)("strong",{parentName:"p"},"Apply")," and then Exit:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/47.jpg")}),(0,r.yg)("p",null,"In this example the following settings have been used:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"Interface: eth0\nIP address: 10.1.1.2\nMask: 255.255.255.0\nBroadcast: 10.1.1.255\nGateway: 10.1.1.1\nDNS: 8.8.8.8\n")),(0,r.yg)("p",null,"Click Apply to save the network configuration of this VM."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/48.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Exit")," to close the ",(0,r.yg)("strong",{parentName:"p"},"Network Configuration")," pop-up window, and then click on the ",(0,r.yg)("strong",{parentName:"p"},"X")," in the upper-right corner of the TinyCore ",(0,r.yg)("strong",{parentName:"p"},"Control Panel")," to close it:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/49.jpg")}),(0,r.yg)("p",null,"Click on the ",(0,r.yg)("strong",{parentName:"p"},"Terminal")," icon at the bottom of the TinyCore GUI to open a terminal:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/50.jpg")}),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/51.jpg")}),(0,r.yg)("p",null,"(a terminal is now open)\nPing R1 from the TinyCore PC:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/52.jpg")}),(0,r.yg)("p",null,"Result: The New TinyCore PC can ping the GNS3 router R1."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Congratulations!")," You have integrated a new VMware virtual machine with GNS3."),(0,r.yg)("p",null,"Addendum:\nIf you\u2019re curious to see which of those new host-only VMnets this particular virtual machine is using, click ",(0,r.yg)("strong",{parentName:"p"},"Edit virtual machine settings")," in VMware Workstation:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/53.jpg")}),(0,r.yg)("p",null,"When you first created the TinyCore-Local-VMware virtual machine, it was set to use a NAT (VMnet 8) by default:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/54.jpg")}),(0,r.yg)("p",null,"After importing this virtual machine into GNS3, adding it to a topology, and powering up, GNS3 happened to select Host-only VMnet 2, during the creation of this article:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/55.jpg")}),(0,r.yg)("p",null,"Also note that GNS3 also created and configured a ",(0,r.yg)("strong",{parentName:"p"},"Serial Port")," (set to be connected at power on) for this VM, along with a ",(0,r.yg)("strong",{parentName:"p"},"Named Pipe"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/adding-vmware-vms-to-gns3-topologies/56.jpg")}),(0,r.yg)("p",null,"The named pipe is ",(0,r.yg)("inlineCode",{parentName:"p"},"\\\\.\\pipe\\gns3_vmware\\UUID"),"\nFor more information on this, check the GNS3 Architecture article"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/63f216fb.56c1cbbd.js b/build/assets/js/63f216fb.56c1cbbd.js new file mode 100644 index 00000000..1e51ee69 --- /dev/null +++ b/build/assets/js/63f216fb.56c1cbbd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[3855],{5680:(e,n,t)=>{t.d(n,{xA:()=>g,yg:()=>m});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},g=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},y=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,g=o(e,["components","mdxType","originalType","parentName"]),p=c(t),y=i,m=p["".concat(s,".").concat(y)]||p[y]||u[y]||a;return t?r.createElement(m,l(l({ref:n},g),{},{components:t})):r.createElement(m,l({ref:n},g))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=t.length,l=new Array(a);l[0]=y;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o[p]="string"==typeof e?e:i,l[1]=o;for(var c=2;c{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>s,metadata:()=>g,toc:()=>u});var r=t(8168),i=t(8587),a=(t(6540),t(5680)),l=t(6025),o=["components"],s={id:"link-control",title:"Link Control",sidebar_label:"Link Control"},c=void 0,g={unversionedId:"using-gns3/beginners/link-control",id:"using-gns3/beginners/link-control",title:"Link Control",description:"available in GNS3 version 2.1 and later.",source:"@site/docs/using-gns3/beginners/link-control.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/link-control",permalink:"/docs/using-gns3/beginners/link-control",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/link-control.md",tags:[],version:"current",frontMatter:{id:"link-control",title:"Link Control",sidebar_label:"Link Control"},sidebar:"someSidebar",previous:{title:"Import GNS3 appliance",permalink:"/docs/using-gns3/beginners/import-gns3-appliance"},next:{title:"Connect GNS3 to the Internet",permalink:"/docs/using-gns3/advanced/connect-gns3-internet"}},p={},u=[{value:"Packet Filters",id:"packet-filters",level:2},{value:"Suspend a Link",id:"suspend-a-link",level:2}],y={toc:u};function m(e){var n=e.components,t=(0,i.A)(e,o);return(0,a.yg)("wrapper",(0,r.A)({},y,t,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"available in GNS3 version 2.1 and later.")),(0,a.yg)("h2",{id:"packet-filters"},"Packet Filters"),(0,a.yg)("p",null,"Packet filters can be applied on links without stopping any node."),(0,a.yg)("p",null,"Supported packet filters are:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},"Frequency_drop")," drop a packet every x packets."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},"Packet_loss")," randomly drop a packet"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},"Delay"),": adds latency and/or jitter."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},"Packet_corruption")," randomly corrupt a packet."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},"BPF_(Berkeley_Packet_Filter)")," filter packets matching a BPF expression.")),(0,a.yg)("p",null,"All packet filters can be combined, meaning you can apply both a packet loss filter and a delay filter on the same link that will be active simultaneously."),(0,a.yg)("p",null,"To apply a packet filter, right-click on a link, and select ",(0,a.yg)("strong",{parentName:"p"},"Packet filters"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/1.jpg")}),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/2.jpg")}),(0,a.yg)("p",null,"As an example, click the ",(0,a.yg)("strong",{parentName:"p"},"Delay")," tab, add a non-zero value for ",(0,a.yg)("strong",{parentName:"p"},"Latency"),", then click ",(0,a.yg)("strong",{parentName:"p"},"Apply"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/3.jpg")}),(0,a.yg)("p",null,"The icon on the ",(0,a.yg)("strong",{parentName:"p"},"Delay")," tab changes from a red square to a green circle, indicating it\u2019s active:"),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/4.jpg")}),(0,a.yg)("p",null,"Click ",(0,a.yg)("strong",{parentName:"p"},"OK")," to close the ",(0,a.yg)("strong",{parentName:"p"},"Packet filters")," window:"),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/5.jpg")}),(0,a.yg)("p",null,"A filter icon will be displayed on the link to indicate one or more packet filters are active."),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/6.jpg")}),(0,a.yg)("h2",{id:"suspend-a-link"},"Suspend a Link"),(0,a.yg)("p",null,"It is possible to suspend a link. For instance, to simulate a temporary connectivity issue in your project. Suspending a link currently means that all packets going through the link will be dropped."),(0,a.yg)("p",null,"To suspend a link, right-click it and then select ",(0,a.yg)("strong",{parentName:"p"},"Suspend"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/7.jpg")}),(0,a.yg)("p",null,"The link is now suspended, so no traffic can pass through it:"),(0,a.yg)("img",{alt:"screenshot",src:(0,l.A)("img/using-gns3/beginners/link-control/8.jpg")}))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/65700f29.b43f8eab.js b/build/assets/js/65700f29.b43f8eab.js new file mode 100644 index 00000000..2d720925 --- /dev/null +++ b/build/assets/js/65700f29.b43f8eab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2892],{5680:(e,t,n)=>{n.d(t,{xA:()=>d,yg:()=>c});var a=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),g=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=g(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=g(n),y=i,c=p["".concat(s,".").concat(y)]||p[y]||m[y]||o;return n?a.createElement(c,r(r({ref:t},d),{},{components:n})):a.createElement(c,r({ref:t},d))}));function c(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:i,r[1]=l;for(var g=2;g{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>g,default:()=>c,frontMatter:()=>s,metadata:()=>d,toc:()=>m});var a=n(8168),i=n(8587),o=(n(6540),n(5680)),r=n(6025),l=["components"],s={id:"windows",title:"GNS3 Windows Install",sidebar_label:"Windows"},g=void 0,d={unversionedId:"getting-started/installation/windows",id:"getting-started/installation/windows",title:"GNS3 Windows Install",description:"Introduction",source:"@site/docs/getting-started/installation/windows.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/windows",permalink:"/docs/getting-started/installation/windows",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/windows.md",tags:[],version:"current",frontMatter:{id:"windows",title:"GNS3 Windows Install",sidebar_label:"Windows"},sidebar:"someSidebar",previous:{title:"What is GNS3?",permalink:"/docs/"},next:{title:"Mac",permalink:"/docs/getting-started/installation/mac"}},p={},m=[{value:"Introduction",id:"introduction",level:2},{value:"Supported Operating Systems",id:"supported-operating-systems",level:2},{value:"Minimum Requirements",id:"minimum-requirements",level:2},{value:"Recommended Requirements",id:"recommended-requirements",level:2},{value:"Optimal Requirements",id:"optimal-requirements",level:2},{value:"Video",id:"video",level:2},{value:"Download the GNS3 all-in-one-installer",id:"download-the-gns3-all-in-one-installer",level:2},{value:"Install GNS3",id:"install-gns3",level:2}],y={toc:m};function c(e){var t=e.components,n=(0,i.A)(e,l);return(0,o.yg)("wrapper",(0,a.A)({},y,n,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("h2",{id:"introduction"},"Introduction"),(0,o.yg)("p",null,"This document explains how to install GNS3 using a Windows environment. You will learn how to:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Download the required software"),(0,o.yg)("li",{parentName:"ul"},"Install prerequisite and optional software")),(0,o.yg)("h2",{id:"supported-operating-systems"},"Supported Operating Systems"),(0,o.yg)("p",null,"GNS3 supports the following Windows operating systems:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Windows 7 SP1 (64 bit)"),(0,o.yg)("li",{parentName:"ul"},"Windows 8 (64 bit)"),(0,o.yg)("li",{parentName:"ul"},"Windows 10 (64 bit)"),(0,o.yg)("li",{parentName:"ul"},"Windows Server 2012 (64 bit)"),(0,o.yg)("li",{parentName:"ul"},"Windows Server 2016 (64 bit)")),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Note"),": The 32 bit version is not discussed in this guide. For 32-bit CPU or older operating systems, please read ",(0,o.yg)("a",{parentName:"p",href:"download-32-bit"},"this documentation"),"."),(0,o.yg)("h2",{id:"minimum-requirements"},"Minimum Requirements"),(0,o.yg)("p",null,"The following are the minimum requirements for a Windows GNS3 environment:"),(0,o.yg)("table",null,(0,o.yg)("thead",{parentName:"table"},(0,o.yg)("tr",{parentName:"thead"},(0,o.yg)("th",{parentName:"tr",align:"left"},"Item"),(0,o.yg)("th",{parentName:"tr",align:"left"},"Requirement"))),(0,o.yg)("tbody",{parentName:"table"},(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Operating System"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Windows 7 (64 bit) or later")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Processor"),(0,o.yg)("td",{parentName:"tr",align:"left"},"2 or more Logical cores")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualization"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualization extensions required. You may need to enable this via your computer's BIOS.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Memory"),(0,o.yg)("td",{parentName:"tr",align:"left"},"4 GB RAM")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Storage"),(0,o.yg)("td",{parentName:"tr",align:"left"},"1 GB available space (Windows Installation is < 200 MB).")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Additional Notes"),(0,o.yg)("td",{parentName:"tr",align:"left"},"You may need additional storage for your operating system and device images.")))),(0,o.yg)("admonition",{type:"important"},(0,o.yg)("p",{parentName:"admonition"},"The hardware requirements listed here are minimum requirements for a small GNS3 environment. If you want to create complex environments with many devices, your hardware requirements will increase.")),(0,o.yg)("h2",{id:"recommended-requirements"},"Recommended Requirements"),(0,o.yg)("p",null,"The following are the recommended requirements for a Windows GNS3 environment:"),(0,o.yg)("table",null,(0,o.yg)("thead",{parentName:"table"},(0,o.yg)("tr",{parentName:"thead"},(0,o.yg)("th",{parentName:"tr",align:"left"},"Item"),(0,o.yg)("th",{parentName:"tr",align:"left"},"Requirement"))),(0,o.yg)("tbody",{parentName:"table"},(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Operating System"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Windows 7 (64 bit) or later")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Processor"),(0,o.yg)("td",{parentName:"tr",align:"left"},"4 or more Logical cores - AMD-V / RVI Series or Intel VT-X / EPT")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualization"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualization extensions required. You may need to enable this via your computer's BIOS.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Memory"),(0,o.yg)("td",{parentName:"tr",align:"left"},"16 GB RAM")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Storage"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Solid-state Drive (SDD) with 35 GB available space")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Additional Notes"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualizing devices is processor and memory intensive. More is better but properly configured device trumps RAM and Processing power.")))),(0,o.yg)("admonition",{type:"important"},(0,o.yg)("p",{parentName:"admonition"},"The hardware requirements listed here are recommended for a small GNS3 environment. If you want to create complex environments with many devices, your hardware requirements will increase.")),(0,o.yg)("h2",{id:"optimal-requirements"},"Optimal Requirements"),(0,o.yg)("p",null,"The following are the optimal requirements for a Windows GNS3 environment:"),(0,o.yg)("table",null,(0,o.yg)("thead",{parentName:"table"},(0,o.yg)("tr",{parentName:"thead"},(0,o.yg)("th",{parentName:"tr",align:"left"},"Item"),(0,o.yg)("th",{parentName:"tr",align:"left"},"Requirement"))),(0,o.yg)("tbody",{parentName:"table"},(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Operating System"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Windows 7 (64 bit) or later")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Processor"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Core i7 or i9 Intel CPU / R7 or R9 AMD CPU / 8 or more Logical cores - AMD-V / RVI Series or Intel VT-X / EPT")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualization"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualization extensions required. You will need to enable this via your computer's BIOS.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Memory"),(0,o.yg)("td",{parentName:"tr",align:"left"},"32 GB RAM")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Storage"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Solid-state Drive (SDD) with 80 GB available space")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Additional Notes"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Virtualizing devices is processor and memory intensive. More is better, but a properly configured device trumps RAM and processing power.")))),(0,o.yg)("admonition",{type:"important"},(0,o.yg)("p",{parentName:"admonition"},"If you want to create complex environments with many devices, your hardware requirements will increase.")),(0,o.yg)("h2",{id:"video"},"Video"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=x9pGYyEqLYs"},"https://www.youtube.com/watch?v=x9pGYyEqLYs")),(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=lFEDmM_lsxI"},"https://www.youtube.com/watch?v=lFEDmM_lsxI"))),(0,o.yg)("h2",{id:"download-the-gns3-all-in-one-installer"},"Download the GNS3 all-in-one-installer"),(0,o.yg)("p",null,"Follow these steps to download GNS3 to you MAC. Using a web browser, browse to ",(0,o.yg)("a",{parentName:"p",href:"https://gns3.com"},"https://gns3.com")," and click the ",(0,o.yg)("strong",{parentName:"p"},"Free Download")," link:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/1.jpg")}),(0,o.yg)("p",null,"If you have not already registered on the GNS3 site, create an account and then click ",(0,o.yg)("strong",{parentName:"p"},"Create Account & Continue"),":"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/2.jpg")}),(0,o.yg)("p",null,"Or, if you already have an account, click ",(0,o.yg)("strong",{parentName:"p"},"Login"),", fill in the your details and then click ",(0,o.yg)("strong",{parentName:"p"},"Login & Continue"),":"),(0,o.yg)("p",null,"After login, you will be prompted to select the version of GNS3 to download. In this guide, we will select the Windows installation. Click the Download button to download the GNS3-all-in-one package."),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/3.jpg")}),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"The GNS3 executable file is about 85MB in size. The amount of time it takes to download will depend on the speed of your Internet connection.")),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"The GNS3 downloaded file is an executable Windows file. If you have issues downloading, ensure that your security policies such as firewall and antivirus rules allow for the downloading of .exe files.")),(0,o.yg)("p",null,"The GNS3-all-in-one package will automatically be downloaded to your PC."),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/4.jpg")}),(0,o.yg)("p",null,"You also get an option to download a free version of the SolarWinds Network Engineers Toolkit (this is a subset of the full Pro version)."),(0,o.yg)("h2",{id:"install-gns3"},"Install GNS3"),(0,o.yg)("p",null,"Follow these steps to download GNS3 on a local Windows PC."),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"This guide only discusses a local Windows installation (Dynamips). If you are using the GNS3 VM, please refer to the GNS3 VM installation guide.")),(0,o.yg)("p",null,"Navigate in Windows Explorer to your Downloads folder and then double-click the GNS3-2.2.0-all-in-one-regular.exe file:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/5.jpg")}),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"If you have configured your browser to download files to a different directory to the default Downloads directory, look for the GNS3-2.2.0-all-in-one-regular.exe file (or the version of file you downloaded) in that directory.")),(0,o.yg)("p",null,"If displayed, click the ",(0,o.yg)("strong",{parentName:"p"},"Run")," button to start the GNS3 installation (it\u2019s not possible to take a screenshot of the UAC prompt for this, but allow setup to continue)"),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"The GNS install process will run multiple installation wizards. If the process seems to have stalled, check if additional windows have been opened that are waiting for your input.")),(0,o.yg)("p",null,"The GNS3 Setup wizard displays. Click ",(0,o.yg)("strong",{parentName:"p"},"Next >")," to start the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/6.jpg")}),(0,o.yg)("p",null,"GNS3 is free open source software distributed under the GNU General Public License Version 3. Read the license agreement, and if you agree with the contents, click the ",(0,o.yg)("strong",{parentName:"p"},"I Agree")," button to continue the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/7.jpg")}),(0,o.yg)("p",null,"Select the Start Menu folder for the GNS3 shortcut. The default is the GNS3 folder. Click ",(0,o.yg)("strong",{parentName:"p"},"Next >")," to continue the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/8.jpg")}),(0,o.yg)("p",null,"GNS3 comes bundled with various prerequisite and optional software. By default most software is selected for installation, but you can decide to only install specific software."),(0,o.yg)("p",null,"If you are unsure, leave all software selections at their default selection and click ",(0,o.yg)("strong",{parentName:"p"},"Next >")," to continue the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/9.jpg")}),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"Recent versions of Windows 10 have an issue with WinPcap. If Wireshark hangs while trying to use it in a GNS3 topology, consider switching to Npcap instead. Instructions can be found lower down in this document. ")),(0,o.yg)("p",null,"Here is a brief description of software:"),(0,o.yg)("table",null,(0,o.yg)("thead",{parentName:"table"},(0,o.yg)("tr",{parentName:"thead"},(0,o.yg)("th",{parentName:"tr",align:"left"},"Item"),(0,o.yg)("th",{parentName:"tr",align:"left"},"Required"),(0,o.yg)("th",{parentName:"tr",align:"left"},"Description"))),(0,o.yg)("tbody",{parentName:"table"},(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"WinPCAP"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Required"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Required to connect GNS3 to your computer network. Used by Cloud and NAT nodes to allow your projects to communicate with the outside world.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Npcap"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Optional"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Modern replacement to WinPCAP know to fix issues with Win10 but is less tested than WinPCAP. Install Npcap with the \u201cWinPcap API-compatible Mode\u201d option selected, if using without WinPcap. Npcap can co-exist with WinPcap, if that option is ",(0,o.yg)("em",{parentName:"td"},"not")," selected.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Wireshark"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Recommended"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Allows you to capture and view network traffic sent between nodes.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Dynamips"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Required"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Required to run a local installation of GNS3 with Cisco routers. Only unselect if you are going to exclusively use the GNS3 VM.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"QEMU 3.1.0 and 0.11.0"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Optional"),(0,o.yg)("td",{parentName:"tr",align:"left"},"A computer emulator used to emulate a full computer which could for example be Linux. The older Qemu version 0.11.0 is installed in order to support old ASA devices. It is recommended to use the GNS3 VM instead.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"VPCS"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Recommended"),(0,o.yg)("td",{parentName:"tr",align:"left"},"A very light PC emulator that supports basic commands like ping and traceroute")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Cpulimit"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Optional"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Used to avoid QEMU using 100% of your CPU (when it is running) in some cases like with the old ASA devices")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"GNS3"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Required"),(0,o.yg)("td",{parentName:"tr",align:"left"},"The core GNS3 software. This is always required.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"TightVNC Viewer"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Recommended"),(0,o.yg)("td",{parentName:"tr",align:"left"},"A VNC client used to connect to appliance graphical user interfaces.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Solar-Putty"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Recommended"),(0,o.yg)("td",{parentName:"tr",align:"left"},"The new default Console application.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Virt-viewer"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Recommended"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Alternate displayer of Qemu desktop VMs that have qemu-spice pre-installed.")),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:"left"},"Intel Hardware Acceleration Manager (HAXM)"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Optional"),(0,o.yg)("td",{parentName:"tr",align:"left"},"Only available on systems with Intel CPUs (and VT-X enabled), that are ",(0,o.yg)("em",{parentName:"td"},"not")," using Hyper-V. Used for hardware acceleration of Android emulation, as well as QEMU.")))),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/10.jpg")}),(0,o.yg)("p",null,"Choose an install location. The default location is ",(0,o.yg)("inlineCode",{parentName:"p"},"C:\\Program Files\\GNS3"),". Then click ",(0,o.yg)("strong",{parentName:"p"},"Install"),":"),(0,o.yg)("p",null,"The output displayed will depend on what you have selected to install."),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"If you are new to GNS3 and this is a new install, go to the next step. "),(0,o.yg)("li",{parentName:"ul"},"For WinPCAP install instructions go to the next step."),(0,o.yg)("li",{parentName:"ul"},"For Wireshark install instructions"),(0,o.yg)("li",{parentName:"ul"},"For SolarWinds Response Time Viewer install instructions"),(0,o.yg)("li",{parentName:"ul"},"For GNS3 install instructions")),(0,o.yg)("p",null,"If WinPcap is already installed, a warning message is displayed. It is not necessary to reinstall WinPcap. Click ",(0,o.yg)("strong",{parentName:"p"}," Cancel")," if you do not want to reinstall WinPcap and go directly to the next step. Click ",(0,o.yg)("strong",{parentName:"p"},"OK")," to continue re-installing WinPcap:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/11.jpg")}),(0,o.yg)("p",null,"The WinPcap installation wizard displays. Click ",(0,o.yg)("strong",{parentName:"p"},"Next >")," to continue the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/12.jpg")}),(0,o.yg)("p",null,"The WinPcap License Agreement displays. Read the agreement and if you agree, click the ",(0,o.yg)("strong",{parentName:"p"},"I Agree")," button to continue with the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/13.jpg")}),(0,o.yg)("p",null,"Leave the checkbox ",(0,o.yg)("strong",{parentName:"p"},"Automatically start the WinPcap driver at boot time")," checked and click ",(0,o.yg)("strong",{parentName:"p"},"Install"),":"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/14.jpg")}),(0,o.yg)("p",null,"The WinPcap installation continues. Click ",(0,o.yg)("strong",{parentName:"p"},"Finish")," to complete the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/15.jpg")}),(0,o.yg)("p",null,"If you selected that Wireshark should be installed, the GNS3 setup software will download the Wireshark install files. Wait for the process to complete:"),(0,o.yg)("p",null,"GNS3 will then perform a silent install of Wireshark. Wait for the process to complete:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/16.jpg")}),(0,o.yg)("p",null,"Once the core GNS3 software (and any optional selected items) is installed, Click ",(0,o.yg)("strong",{parentName:"p"},"Next>")),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/17.jpg")}),(0,o.yg)("p",null,"Optional: If you are interested, install the Solarwinds Standard Toolset. This is free evaluation (a $200 value). Otherwise Select ",(0,o.yg)("strong",{parentName:"p"},"No")," and click ",(0,o.yg)("strong",{parentName:"p"},"Next >")," to continue:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/18.jpg")}),(0,o.yg)("p",null,"If you elect to download the Standard Toolset, you\u2019ll be redirected to a webpage on Solarwinds, where you enter registration information, in order to download the software:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/19.jpg")}),(0,o.yg)("p",null,"After registration and clicking the Download Free Toolkit link, you\u2019ll be redirected to an informational page asking that you check your email, as well as instructions on how to activate your license for the Standard Toolset:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/20.jpg")}),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/21.jpg")}),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Congratulations!")," You have successfully installed GNS3. A browser window will open showing additional help and options. Leave the ",(0,o.yg)("strong",{parentName:"p"},"Start GNS3")," checkbox enabled and click ",(0,o.yg)("strong",{parentName:"p"},"Finish")," to complete the GNS3 installation. Click here to for a walkthrough of using the Setup Wizard to configure and use the Local Server."),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"If you intend on using the GNS3-VM to run your devices, the please leave this window open and minimized in your taskbar, proceed with importing the GNS3-VM first (please click here to see those steps), and then come back to complete this step once the GNS3-VM has been imported.")),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/22.jpg")}),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"If you are running Win10 with the latest updates, and experience issues with Wireshark hanging while trying to initialize interfaces, it\u2019s worth giving the most recent Npcap a shot. "),(0,o.yg)("p",{parentName:"admonition"},"First, uninstall WinPcap and reboot. Next, either re-run the GNS3 All-In-One installer (ncap v0.9982 is included as an optional install), or open up your web browser and navigate to ",(0,o.yg)("a",{parentName:"p",href:"http://www.nmap.org/npacp/"},"www.nmap.org/npacp/"),". "),(0,o.yg)("p",{parentName:"admonition"},"Scroll down the page a little bit, and look for the most recent version (v0.9983 as of Oct 7th, 2019):")),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/23.jpg")}),(0,o.yg)("p",null,"When installing Npcap with WinPcap, make sure to enable the \u201cWinPcap API-compatible Mode\u201d option before completing the installation:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/24.jpg")}),(0,o.yg)("p",null,"Click ",(0,o.yg)("strong",{parentName:"p"},"Install"),", and then reboot Windows a final time. "),(0,o.yg)("p",null,"If you do wish to also have WinPcap installed, make sure that \u201cWinPcap API-compatible Mode\u201d is not selected, so that they can co-exist."),(0,o.yg)("p",null,"If you wish to install Npcap before installing GNS3, you\u2019re free to do so. Just ensure that the options to install WinPcap and Npcap as part of the GNS3 installation process are deselected"),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"Solar-Putty is now the new default terminal emulation application for GNS3 in Windows, if you downloaded the GNS3 AIO installer from gns3.com (see note 3) . During GNS3 installation, if you elected to install Solar-Putty, you\u2019ll be prompted to accept a License Agreement and Privacy Notice:")),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/25.jpg")}),(0,o.yg)("p",null,"After clicking \u2018Accept\u2019, you\u2019ll be prompted to enter a valid email address:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/26.jpg")}),(0,o.yg)("p",null,"Clicking Continue will finish this part of the installation, and takes you back to the main GNS3 installation. Solar-Putty will now be the default console application, unless you choose to select a different one, by click Edit->Preferences->GNS3->Console in the main GNS3 GUI:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/getting-started/installation/windows/27.jpg")}),(0,o.yg)("p",null,"David Bombal has several videos online, showing Solar-Putty in general, along with configuration changes you can make:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=3utfGQyQOkA"},"https://www.youtube.com/watch?v=3utfGQyQOkA")),(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=iuev1Hyc-f4"},"https://www.youtube.com/watch?v=iuev1Hyc-f4")),(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=mQKbXMIxHSk"},"https://www.youtube.com/watch?v=mQKbXMIxHSk")),(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=Q2TnxcJa0wI"},"https://www.youtube.com/watch?v=Q2TnxcJa0wI")),(0,o.yg)("li",{parentName:"ul"},"Video: ",(0,o.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=shoDldraAsE"},"https://www.youtube.com/watch?v=shoDldraAsE"))),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"GNS3, as well as the various versions of the GNS3 VM and the source code can also be downloaded from ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-gui/releases"},"Github"),". This version of the Windows GNS3 AIO installer does ",(0,o.yg)("em",{parentName:"p"},"not")," include Solar-PuTTY by default, and will use the original PuTTY instead."),(0,o.yg)("p",{parentName:"admonition"},"You can still use Solar-PuTTY with GNS3 as your terminal emulator if you wish, by downloading it directly from ",(0,o.yg)("a",{parentName:"p",href:"https://www.solarwinds.com/free-tools/solar-putty"},"SolarWinds"),". It\u2019s still free to use (registration required). It will download as a .zip archive. You can then extract the Solar-PuTTY executable file from the .zip archive, and copy/paste that file into the main GNS3 installation directory ",(0,o.yg)("inlineCode",{parentName:"p"},"(C:\\Program Files\\GNS3 by default)"),". In the GNS3 GUI, click ",(0,o.yg)("strong",{parentName:"p"},"Edit->Preferences->GNS3->Console"),", and select Solar-PuTTY from the dropdown menu, to make it the default terminal emulator.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/6c7f686e.c8df5022.js b/build/assets/js/6c7f686e.c8df5022.js new file mode 100644 index 00000000..c78e65e3 --- /dev/null +++ b/build/assets/js/6c7f686e.c8df5022.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[5680],{5680:(e,t,r)=>{r.d(t,{xA:()=>p,yg:()=>y});var n=r(6540);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var a=n.createContext({}),l=function(e){var t=n.useContext(a),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(a.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var r=e.components,s=e.mdxType,i=e.originalType,a=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),g=s,y=u["".concat(a,".").concat(g)]||u[g]||d[g]||i;return r?n.createElement(y,o(o({ref:t},p),{},{components:r})):n.createElement(y,o({ref:t},p))}));function y(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=r.length,o=new Array(i);o[0]=g;var c={};for(var a in t)hasOwnProperty.call(t,a)&&(c[a]=t[a]);c.originalType=e,c[u]="string"==typeof e?e:s,o[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>g,frontMatter:()=>c,metadata:()=>l,toc:()=>u});var n=r(8168),s=r(8587),i=(r(6540),r(5680)),o=["components"],c={id:"client-server-ssl-encryption",title:"Client server SSL encryption",sidebar_label:"Client server SSL encryption"},a=void 0,l={unversionedId:"using-gns3/administration/client-server-ssl-encryption",id:"using-gns3/administration/client-server-ssl-encryption",title:"Client server SSL encryption",description:"GNS3 supports secured network communications between the GNS3 GUI and GNS3 server using SSL. SSL mode is not supported for the GNS3 server on Windows but you can use it for clients. You will need a SSL certificate, if you don't have one, it is possible to generate a self signed certificate using this script (OpenSSL must be installed):",source:"@site/docs/using-gns3/administration/client-server-ssl-encryption.md",sourceDirName:"using-gns3/administration",slug:"/using-gns3/administration/client-server-ssl-encryption",permalink:"/docs/using-gns3/administration/client-server-ssl-encryption",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/client-server-ssl-encryption.md",tags:[],version:"current",frontMatter:{id:"client-server-ssl-encryption",title:"Client server SSL encryption",sidebar_label:"Client server SSL encryption"},sidebar:"someSidebar",previous:{title:"GNS3 Security",permalink:"/docs/using-gns3/administration/gns3-security"},next:{title:"Scale GNS3",permalink:"/docs/using-gns3/administration/scale-gns3"}},p={},u=[],d={toc:u};function g(e){var t=e.components,r=(0,s.A)(e,o);return(0,i.yg)("wrapper",(0,n.A)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"GNS3 supports secured network communications between the GNS3 GUI and GNS3 server using SSL. SSL mode is not supported for the GNS3 server on Windows but you can use it for clients. You will need a SSL certificate, if you don't have one, it is possible to generate a self signed certificate using this script (OpenSSL must be installed):"),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/create_cert.sh"},"https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/create_cert.sh")),(0,i.yg)("p",null,"The script will put the certificate files (certificate + key) into ~/.config/GNS3/ssl"),(0,i.yg)("p",null,"Once a certificate is ready, you can start the server in SSL mode using the following command:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"gns3server --certfile ~/.config/GNS3/ssl/server.cert --certkey ~/.config/GNS3/ssl/server.key --ssl\n")),(0,i.yg)("p",null,"Or you can edit your gns3_server.conf by adding the certificate and key files to the server section and then launching the GNS3 server."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"[Server]\ncertfile=/Users/noplay/.config/GNS3/ssl/server.cert\ncertkey=/Users/noplay/.config/GNS3/ssl/server.key\nssl=True\n")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/6dc9a2ef.79694ab1.js b/build/assets/js/6dc9a2ef.79694ab1.js new file mode 100644 index 00000000..7a10170c --- /dev/null +++ b/build/assets/js/6dc9a2ef.79694ab1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9081],{5680:(e,o,t)=>{t.d(o,{xA:()=>c,yg:()=>h});var i=t(6540);function a(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function n(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);o&&(i=i.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,i)}return t}function r(e){for(var o=1;o=0||(a[t]=e[t]);return a}(e,o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=i.createContext({}),u=function(e){var o=i.useContext(l),t=o;return e&&(t="function"==typeof e?e(o):r(r({},o),e)),t},c=function(e){var o=u(e.components);return i.createElement(l.Provider,{value:o},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var o=e.children;return i.createElement(i.Fragment,{},o)}},p=i.forwardRef((function(e,o){var t=e.components,a=e.mdxType,n=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=u(t),p=a,h=d["".concat(l,".").concat(p)]||d[p]||m[p]||n;return t?i.createElement(h,r(r({ref:o},c),{},{components:t})):i.createElement(h,r({ref:o},c))}));function h(e,o){var t=arguments,a=o&&o.mdxType;if("string"==typeof e||a){var n=t.length,r=new Array(n);r[0]=p;var s={};for(var l in o)hasOwnProperty.call(o,l)&&(s[l]=o[l]);s.originalType=e,s[d]="string"==typeof e?e:a,r[1]=s;for(var u=2;u{t.r(o),t.d(o,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>s,metadata:()=>u,toc:()=>d});var i=t(8168),a=t(8587),n=(t(6540),t(5680)),r=["components"],s={id:"which-emulators-should-i-use",title:"Which emulator should I use?",sidebar_label:"Which emulator should I use?"},l=void 0,u={unversionedId:"emulators/which-emulators-should-i-use",id:"emulators/which-emulators-should-i-use",title:"Which emulator should I use?",description:"GNS3 supports multiple emulators which you can use in your GNS3 projects. This gives you lots of flexibility when building topologies.",source:"@site/docs/emulators/which-emulators-should-i-use.md",sourceDirName:"emulators",slug:"/emulators/which-emulators-should-i-use",permalink:"/docs/emulators/which-emulators-should-i-use",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/which-emulators-should-i-use.md",tags:[],version:"current",frontMatter:{id:"which-emulators-should-i-use",title:"Which emulator should I use?",sidebar_label:"Which emulator should I use?"},sidebar:"someSidebar",previous:{title:"Why does GNS3 use UUIDs?",permalink:"/docs/using-gns3/design/why-gns3-uses-uuid"},next:{title:"Cisco IOS images for Dynamips",permalink:"/docs/emulators/cisco-ios-images-for-dynamips"}},c={},d=[{value:"Use GNS3 VM or not?",id:"use-gns3-vm-or-not",level:2},{value:"Cisco",id:"cisco",level:2},{value:"Dynamips",id:"dynamips",level:3},{value:"Qemu and VIRL",id:"qemu-and-virl",level:3},{value:"IOU",id:"iou",level:3},{value:"VMware / VirtualBox",id:"vmware--virtualbox",level:2},{value:"VPCS",id:"vpcs",level:2},{value:"Docker",id:"docker",level:2}],m={toc:d};function p(e){var o=e.components,t=(0,a.A)(e,r);return(0,n.yg)("wrapper",(0,i.A)({},m,t,{components:o,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"GNS3 supports multiple emulators which you can use in your GNS3 projects. This gives you lots of flexibility when building topologies."),(0,n.yg)("p",null,"This document will help you decide which emulator or simulator you should use in your GNS3 topologies."),(0,n.yg)("h2",{id:"use-gns3-vm-or-not"},"Use GNS3 VM or not?"),(0,n.yg)("p",null,"The GNS3 VM is recommended for most situations when you are using Windows or Mac OS."),(0,n.yg)("p",null,"The GNS3 development team have worked hard to create a lightweight, robust way of creating GNS3 topologies that avoids multiple common issues experienced when using a local install of GNS3. This includes the lack of proper Qemu support when running VIRL natively on Windows (not recommended), as well as a method to easily add docker containers to your projects."),(0,n.yg)("p",null,"However, if you only want to create basic GNS3 topologies using Cisco IOS routers, a local (Dynamips) install will suffice. This means that you only install the GNS3 GUI (all-in-one)."),(0,n.yg)("p",null,"This is simpler in some ways to set up, but does have limitations and should be seen as the starting point in your GNS3 journey. As soon as you are comfortable with GNS3, it is recommended that you move to a GNS3 VM setup to make the most of GNS3 options and optimization."),(0,n.yg)("h2",{id:"cisco"},"Cisco"),(0,n.yg)("h3",{id:"dynamips"},"Dynamips"),(0,n.yg)("p",null,"Dynamips is the technology leveraged by GNS3 since inception and emulates Cisco routers and basic switching using the Etherswitch module. It emulates older Cisco hardware such as 3725 routers and uses actual Cisco IOS images. You can copy a supported IOS image from a physical network device and use it with GNS3."),(0,n.yg)("p",null,"You will need access to either physical hardware or have a Cisco support contract to get an IOS image. GNS3 is unable to provide IOS images for your labs."),(0,n.yg)("p",null,"Cisco does not support you using IOS images on non-Cisco hardware and you may run into bugs emulating Cisco hardware."),(0,n.yg)("h3",{id:"qemu-and-virl"},"Qemu and VIRL"),(0,n.yg)("p",null,"Most manufacturers offer Qemu images which can also be used with GNS3. To use Cisco images such as IOSvL2, you will need to purchase a Cisco VIRL subscription. This will allow you to access images that work with GNS3 and approved by Cisco team. VIRL images are created specifically for simulation and work well especially if you want newer versions of the Cisco operating system and modern features."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"GNS3 RECOMMENDATION:")," Qemu is the best choice for creating and using Cisco GNS3 topologies. The topologies are portable and lighter than using native VirtualBox and VMware virtual machines. An ASAv for example can be run natively in VMware or in Qemu. If you are not using Linux it is recommended that you run VIRL appliances directly in the GNS3 VM which leverages Qemu."),(0,n.yg)("admonition",{type:"note"},(0,n.yg)("p",{parentName:"admonition"},"Qemu (not VIRL) is also used for the emulation of other vendors such as Cumulus Linux. VIRL is Cisco specific, but Qemu is not.")),(0,n.yg)("h3",{id:"iou"},"IOU"),(0,n.yg)("p",null,"IOU is a Cisco internal way of running IOS on Unix. It is not CPU and memory resource intensive which makes it a good choice."),(0,n.yg)("p",null,"IOU supports both routers and switches."),(0,n.yg)("admonition",{type:"caution"},(0,n.yg)("p",{parentName:"admonition"},"IOU is a Cisco internal tool that has not been publicly released, and a Cisco employee will need to give you both the software and a license. You will also not get support from Cisco TAC.")),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"GNS3 RECOMMENDATIONS")," GNS3 does not recommend the use of IOU. The software is not officially released by Cisco, and those images can often be buggy. If you want a stable platform and officially released Cisco images which are constantly updated, GNS3 recommends the use of Qemu and Cisco VIRL images."),(0,n.yg)("h2",{id:"vmware--virtualbox"},"VMware / VirtualBox"),(0,n.yg)("p",null,"Both VMware and VirtualBox provide an easy way to virtualize devices and can be added to your GNS3 topologies."),(0,n.yg)("p",null,"VMware workstation is recommended when nesting of operating systems is required due to better VTx support for both AMD and Intel CPUs. "),(0,n.yg)("p",null,"Virtualbox had nested virtualization support added in version 6.0, but as of 6.0.12, that support is for AMD CPUs only. All questions about when nested virtualization support for Intel CPUs will be added, must be directed to the Virtualbox forums, not the GNS3 user forums."),(0,n.yg)("admonition",{type:"caution"},(0,n.yg)("p",{parentName:"admonition"},"Be aware that GNS3 only integrates with VMware and VirtualBox and does not have control of the configuration of your virtual machines (VMs). Any configuration settings of the virtual machines is controlled by the virtualization software and not GNS3. This means that that you will not be able to copy or move your VM as part of your GNS3 project. Therefore, sharing of topologies or moving from one computer to another is more difficult when using native VMware and VirtualBox VMs.")),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"ADVANTAGES:")," VMware and Virtualbox do provide many advantages. They allow you to build complex GNS3 topologies that include servers and PCs that run software from Solarwinds and many other vendors which can be integrated directly in your GNS3 topologies."),(0,n.yg)("h2",{id:"vpcs"},"VPCS"),(0,n.yg)("p",null,"Virtual PC Simulator (VPCS) is a lightweight way of emulating a very basic PC. VPCS uses very little memory and is therefore a good choice when you want to emulate a PC without a GUI and if you only require simple commands such as ping to test connectivity in your GNS3 networks."),(0,n.yg)("p",null,"If you want more complex servers or PCs, use Qemu, Docker, VMware or VirtualBox."),(0,n.yg)("h2",{id:"docker"},"Docker"),(0,n.yg)("p",null,"Docker support in GNS3 gives you the option of running multiple containers as part of your GNS3 topologies. Docker is a good choice when you want to emulate a server or PC providing a specific service such as TFTP server, mail server or web server; and you want to do that without using large amounts of memory."),(0,n.yg)("p",null,"Docker uses less memory than Qemu or a virtual machine (VM) in VMware / Virtualbox does and has become a popular way today of instantiating a process or service versus the traditional method of booting entire VM to provide an individual service."),(0,n.yg)("p",null,"In GNS3, Docker is used to emulate a lightweight Linux PC with one service. This is more efficient than the traditional way of"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Emulating PC hardware using Qemu or VMware"),(0,n.yg)("li",{parentName:"ol"},"Installing and running a full operating system (OS) on that emulated hardware"),(0,n.yg)("li",{parentName:"ol"},"Installing and running a service (application) on the OS.")),(0,n.yg)("p",null,"Traditionally, VMware or Qemu virtualizes the PC hardware, but you still need an operating system installed for applications. Docker takes this a step further by virtualizing the operating system for lightweight instantiation of multiple processes."),(0,n.yg)("p",null,"Because you are able to create Docker images with a shell that supports multiple tools, Docker can be used as a powerful replacement of VPCS."),(0,n.yg)("p",null,"Docker is more complicated to set up when compared to Qemu. However, because of the significant reduction in CPU and memory consumption, Docker is a great choice for your GNS3 projects."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/6ff99807.8b4cd387.js b/build/assets/js/6ff99807.8b4cd387.js new file mode 100644 index 00000000..234c3b5b --- /dev/null +++ b/build/assets/js/6ff99807.8b4cd387.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2404],{5680:(e,t,n)=>{n.d(t,{xA:()=>c,yg:()=>d});var i=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=i.createContext({}),u=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return i.createElement(s.Provider,{value:t},e.children)},g="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},y=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),g=u(n),y=r,d=g["".concat(s,".").concat(y)]||g[y]||p[y]||a;return n?i.createElement(d,o(o({ref:t},c),{},{components:n})):i.createElement(d,o({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[g]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>g,contentTitle:()=>u,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>p});var i=n(8168),r=n(8587),a=(n(6540),n(5680)),o=n(6025),l=["components"],s={id:"gns3-on-equinix",title:"GNS3 on equinix",sidebar_label:"GNS3 on Equinix"},u=void 0,c={unversionedId:"getting-started/installation/gns3-on-equinix",id:"getting-started/installation/gns3-on-equinix",title:"GNS3 on equinix",description:"What is Equinix?",source:"@site/docs/getting-started/installation/gns3-on-equinix.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/gns3-on-equinix",permalink:"/docs/getting-started/installation/gns3-on-equinix",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/gns3-on-equinix.md",tags:[],version:"current",frontMatter:{id:"gns3-on-equinix",title:"GNS3 on equinix",sidebar_label:"GNS3 on Equinix"},sidebar:"someSidebar",previous:{title:"Upgrade GNS3",permalink:"/docs/getting-started/installation/upgrade-gns3"},next:{title:"Setup wizard for local server",permalink:"/docs/getting-started/setup-wizard-local-server"}},g={},p=[{value:"What is Equinix?",id:"what-is-equinix",level:2},{value:"Special offers for GNS3 users only:",id:"special-offers-for-gns3-users-only",level:3},{value:"Sign up with Equinix Metal",id:"sign-up-with-equinix-metal",level:2},{value:"Deploy your Server",id:"deploy-your-server",level:2}],y={toc:p};function d(e){var t=e.components,n=(0,r.A)(e,l);return(0,a.yg)("wrapper",(0,i.A)({},y,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h2",{id:"what-is-equinix"},"What is Equinix?"),(0,a.yg)("p",null,"Equinix is a bare metal cloud provider, with datacenter locations 29 datacenters around the world. "),(0,a.yg)("p",null,"Unlike AWS or Google Cloud (which provide only Virtual Machines), Equinix Metal gives you full access to a true dedicated server, but with the same automation and flexibility you expect from a public cloud. Since you have direct access to the virtualization instructions on the CPU, running GNS3 on Packet is a great experience."),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/equinix-metal.png")}),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Video (Part 1): ",(0,a.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=5MzYIh3FK2g"},"https://www.youtube.com/watch?v=5MzYIh3FK2g")),(0,a.yg)("li",{parentName:"ul"},"Video (Part 2): ",(0,a.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=KyxJ3l7GypU&feature=emb_title"},"https://www.youtube.com/watch?v=KyxJ3l7GypU&feature=emb_title"))),(0,a.yg)("h3",{id:"special-offers-for-gns3-users-only"},"Special offers for GNS3 users only:"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"$25 Trial Credit")," - Equinix Metal is offering $25 in credit for GNS3 users to help them kick the tires. Simply use code \u201cGNS3METAL\u201d when signing up."),(0,a.yg)("h2",{id:"sign-up-with-equinix-metal"},"Sign up with Equinix Metal"),(0,a.yg)("p",null,"First, you will need to sign up for an account at Equinix Metal ",(0,a.yg)("a",{parentName:"p",href:"https://console.equinix.com/sign-up"},"here"),'. Here provide First & Last Name, E-Mail and a passowrd. Then check the "I agree to the Acceptable Use Policy and Privacy Policy" if you do.'),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/sign-up.png")}),(0,a.yg)("p",null,"A few things:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Once your account is activated, we recommend activating Two Factor Authentication (2FA) (currently only available in the legacy portal). Simply visit 'My Profile' -> 'Security', scroll down to the Two Factor Authentication section, select either \u201c set up using an app\u201d or \u201cset up using SMS\u201d, and follow the instructions:")),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/equinix-mfa.png")}),(0,a.yg)("p",null,"Receiving your 2FA pin via SMS isn\u2019t secure as using an authenticator app, like Google Authenticator. When using the \u201cset up using an app\u201d option, scan in the QR code with your app, and you\u2019ll receive a 6 digit pin (2FA token) that is only valid for a small amount of time, before a new token appears. Enter the token within that time, and click Enable to finish enabling 2FA for login."),(0,a.yg)("p",null,"When 2FA is enabled, you will log into your account using your username/password as usual."),(0,a.yg)("h2",{id:"deploy-your-server"},"Deploy your Server"),(0,a.yg)("p",null,"Once you are ready, you can go ahead and deploy a new server with the Ubuntu 22.04 OS in the Equinix Metal location which is closest to you. "),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"While GNS3 works on the ",(0,a.yg)("a",{parentName:"li",href:"https://deploy.equinix.com/product/servers/c3-small/"},"c3.small.x86")," server, you can allways upgrade to a larger instance."),(0,a.yg)("li",{parentName:"ul"},"GNS3 is not supported for Equinix\u2019s ARM server offerings.."),(0,a.yg)("li",{parentName:"ul"},"A listing of available bare metal servers can be found ",(0,a.yg)("a",{parentName:"li",href:"https://deploy.equinix.com/product/servers/"},"here"),".")),(0,a.yg)("admonition",{type:"important"},(0,a.yg)("p",{parentName:"admonition"},"At equinix you are getting your own dedicated bare metal machine that is yours alone from the time you provision it until you actually delete the device from your account. So even if you were to power it down, it would still accrue usage until you actually delete it completely.")),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Video: ",(0,a.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=meygA4aEN5I"},"https://www.youtube.com/watch?v=meygA4aEN5I"))),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"If you use IOU, the name of the machine should be exactly the name you have in your license file. The characters case is important: gns3vm is different from GNS3VM.")),(0,a.yg)("p",null,"The first thing you must do is to create a Organization, this is normally promted just after creation. if not ",(0,a.yg)("a",{parentName:"p",href:"https://console.equinix.com/setup/organization"},"link here")," Fill out all the information including creditcard."),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/setup-org.png")}),(0,a.yg)("p",null,"Since there currently are no project, create a new project, click \u201cadd new\u201d:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/setup-done.png")}),(0,a.yg)("p",null,"Since there currently are no servers provisioned and deployed in your new project, click \u201cDeploy On Demand\u201d:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/deploy-servers.png")}),(0,a.yg)("p",null,"On the next screen, give your server a hostname, select the location and type of server, as well as the OS you\u2019d like installed (Ubuntu recommended):"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/gns3-on-equinix/order.png")}),(0,a.yg)("p",null,"This will take anywhere between 5 to 10 minutes, depending on the hardware. If you click the symbol to the right (below \u201cTags\u201d), you can open up a sidebar to watch the progress of the automated provisioning:"),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"You\u2019ll need to log in as the user \u201croot\u201d with no password, using the private key that was generated earlier, when you created the public/private keypair. This step varies between the terminal you use.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/76e08b6a.2276d46b.js b/build/assets/js/76e08b6a.2276d46b.js new file mode 100644 index 00000000..22f3b323 --- /dev/null +++ b/build/assets/js/76e08b6a.2276d46b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[6274],{5680:(e,r,t)=>{t.d(r,{xA:()=>c,yg:()=>g});var n=t(6540);function s(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r=0||(s[t]=e[t]);return s}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}var l=n.createContext({}),d=function(e){var r=n.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},c=function(e){var r=d(e.components);return n.createElement(l.Provider,{value:r},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var t=e.components,s=e.mdxType,a=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=d(t),y=s,g=u["".concat(l,".").concat(y)]||u[y]||p[y]||a;return t?n.createElement(g,i(i({ref:r},c),{},{components:t})):n.createElement(g,i({ref:r},c))}));function g(e,r){var t=arguments,s=r&&r.mdxType;if("string"==typeof e||s){var a=t.length,i=new Array(a);i[0]=y;var o={};for(var l in r)hasOwnProperty.call(r,l)&&(o[l]=r[l]);o.originalType=e,o[u]="string"==typeof e?e:s,i[1]=o;for(var d=2;d{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var n=t(8168),s=t(8587),a=(t(6540),t(5680)),i=t(6025),o=["components"],l={id:"special-ip-addresses",title:"Special IP addresses in GNS3",sidebar_label:"Special IP addresses in GNS3"},d=void 0,c={unversionedId:"using-gns3/advanced/special-ip-addresses",id:"using-gns3/advanced/special-ip-addresses",title:"Special IP addresses in GNS3",description:"GNS3 uses several RFC1918 private IP ranges by default. If possible we recommend to avoid using them in your topology in order to limit conflicts.",source:"@site/docs/using-gns3/advanced/special-ip-addresses.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/special-ip-addresses",permalink:"/docs/using-gns3/advanced/special-ip-addresses",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/special-ip-addresses.md",tags:[],version:"current",frontMatter:{id:"special-ip-addresses",title:"Special IP addresses in GNS3",sidebar_label:"Special IP addresses in GNS3"},sidebar:"someSidebar",previous:{title:"Built-in hubs and switches",permalink:"/docs/using-gns3/advanced/hubs-and-switches"},next:{title:"Move from IOUVM to GNS3 VM",permalink:"/docs/using-gns3/advanced/move-from-iouvm-gns3-vm"}},u={},p=[{value:"IP Reserved by GNS3",id:"ip-reserved-by-gns3",level:2},{value:"NAT: 192.168.122.0/24",id:"nat-192168122024",level:3},{value:"VPN: 172.16.253.0/24",id:"vpn-17216253024",level:3},{value:"IP Reserved by Emulators",id:"ip-reserved-by-emulators",level:2},{value:"IP reserved by Docker",id:"ip-reserved-by-docker",level:3},{value:"IP reserved by VMware",id:"ip-reserved-by-vmware",level:3}],y={toc:p};function g(e){var r=e.components,t=(0,s.A)(e,o);return(0,a.yg)("wrapper",(0,n.A)({},y,t,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"GNS3 uses several RFC1918 private IP ranges by default. If possible we recommend to avoid using them in your topology in order to limit conflicts."),(0,a.yg)("h2",{id:"ip-reserved-by-gns3"},"IP Reserved by GNS3"),(0,a.yg)("h3",{id:"nat-192168122024"},"NAT: 192.168.122.0/24"),(0,a.yg)("p",null,"Starting with GNS3 2.0 this IP range is used by the NAT node (powered by libvirt)."),(0,a.yg)("p",null,"It runs a DHCP server and DNS relay on its internal \u201cnat0\u201d interface, which is assigned 192.168.122.1. Topology devices are able to use this node, both for automatic addressing, as well as to easily allow them to access the internet with minimal set up work."),(0,a.yg)("p",null,"(you\u2019ll see this IP assigned to virbr0 in the GNS3 VM\u2019s bash shell)"),(0,a.yg)("h3",{id:"vpn-17216253024"},"VPN: 172.16.253.0/24"),(0,a.yg)("p",null,"This range is used only when you connect to a GNS3 remote server via VPN. These IPs are not visible in GNS3 until you use the Cloud Object to connect your real network to your GNS3 topology."),(0,a.yg)("h2",{id:"ip-reserved-by-emulators"},"IP Reserved by Emulators"),(0,a.yg)("p",null,"This IPs are not visible in GNS3 until you use the Cloud object to connect your local LAN to your topology."),(0,a.yg)("h3",{id:"ip-reserved-by-docker"},"IP reserved by Docker"),(0,a.yg)("p",null,"If docker is installed, be careful to this IP range:"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"DOCKER0: 172.17.0.0/16"),"\nThis the default range use by docker0"),(0,a.yg)("h3",{id:"ip-reserved-by-vmware"},"IP reserved by VMware"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"VMWARE VMNET: 192.168.0.0/16"),"\nFor each vmnet created in VMware (either directly via its Virtual Network Editor), or by using the gns3vmnet executable, it will have a random 192.168.x.x/24 subnet address and a DHCP server automatically created. "),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/special-ip-addresses/1.jpg")}),(0,a.yg)("p",null,"This is an example of the subnet addresses VMware automatically created for each of new host-only vmnets. When adding a VMware VM into a GNS3 topology, it must be a host-only vmnet with the DHCP server turned off."),(0,a.yg)("p",null,"More information about using VMware VMs in GNS3 topologies can be found in ",(0,a.yg)("a",{parentName:"p",href:"../../emulators/adding-vmware-vms-to-gns3-topologies"},"this article"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/79bc4fa4.68f8f164.js b/build/assets/js/79bc4fa4.68f8f164.js new file mode 100644 index 00000000..6749359a --- /dev/null +++ b/build/assets/js/79bc4fa4.68f8f164.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1731],{5680:(e,t,o)=>{o.d(t,{xA:()=>p,yg:()=>u});var n=o(6540);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var l=n.createContext({}),g=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=g(e.components);return n.createElement(l.Provider,{value:t},e.children)},y="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,s=e.originalType,l=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),y=g(o),m=r,u=y["".concat(l,".").concat(m)]||y[m]||c[m]||s;return o?n.createElement(u,i(i({ref:t},p),{},{components:o})):n.createElement(u,i({ref:t},p))}));function u(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=o.length,i=new Array(s);i[0]=m;var a={};for(var l in t)hasOwnProperty.call(t,l)&&(a[l]=t[l]);a.originalType=e,a[y]="string"==typeof e?e:r,i[1]=a;for(var g=2;g{o.r(t),o.d(t,{assets:()=>y,contentTitle:()=>g,default:()=>u,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var n=o(8168),r=o(8587),s=(o(6540),o(5680)),i=o(6025),a=["components"],l={id:"your-first-gns3-topology",title:"Your First GNS3 Topology",sidebar_label:"Your first GNS3 topology"},g=void 0,p={unversionedId:"getting-started/your-first-gns3-topology",id:"getting-started/your-first-gns3-topology",title:"Your First GNS3 Topology",description:"Introduction",source:"@site/docs/getting-started/your-first-gns3-topology.md",sourceDirName:"getting-started",slug:"/getting-started/your-first-gns3-topology",permalink:"/docs/getting-started/your-first-gns3-topology",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/your-first-gns3-topology.md",tags:[],version:"current",frontMatter:{id:"your-first-gns3-topology",title:"Your First GNS3 Topology",sidebar_label:"Your first GNS3 topology"},sidebar:"someSidebar",previous:{title:"Setup wizard for GNS3 VM",permalink:"/docs/getting-started/setup-wizard-gns3-vm"},next:{title:"Your first Cisco topology",permalink:"/docs/getting-started/your-first-cisco-topology"}},y={},c=[{value:"Introduction",id:"introduction",level:2},{value:"Get to know your GNS3 Graphical User Interface (GUI)",id:"get-to-know-your-gns3-graphical-user-interface-gui",level:2},{value:"On first start up",id:"on-first-start-up",level:3},{value:"Screen Layout",id:"screen-layout",level:3},{value:"GNS3 Workspace",id:"gns3-workspace",level:3},{value:"GNS3 Toolbar",id:"gns3-toolbar",level:3},{value:"Devices Toolbar",id:"devices-toolbar",level:3},{value:"Create your Topology",id:"create-your-topology",level:2}],m={toc:c};function u(e){var t=e.components,o=(0,r.A)(e,a);return(0,s.yg)("wrapper",(0,n.A)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("h2",{id:"introduction"},"Introduction"),(0,s.yg)("p",null,"This document explains how to configure a simple GNS3 topology which consists of two Virtual PC Simulator (VPCS) devices.This is a simple way to test your GNS3 installation and build your first topology."),(0,s.yg)("p",null,"VPCS PCs are installed by default as part of the GNS3 installation on Windows and Mac OS."),(0,s.yg)("admonition",{type:"note"},(0,s.yg)("p",{parentName:"admonition"},"This document assumes that you already have GNS3 installed. ")),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"Video: ",(0,s.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=C9JEq6CBaJo&feature=emb_title"},"https://www.youtube.com/watch?v=C9JEq6CBaJo&feature=emb_title"))),(0,s.yg)("h2",{id:"get-to-know-your-gns3-graphical-user-interface-gui"},"Get to know your GNS3 Graphical User Interface (GUI)"),(0,s.yg)("h3",{id:"on-first-start-up"},"On first start up"),(0,s.yg)("p",null,"When you first start GNS3 2.2.0, create a new project by clicking ",(0,s.yg)("strong",{parentName:"p"},"File->New_blank_project")),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/1.jpg")}),(0,s.yg)("p",null,"Name the project as desired and then click ",(0,s.yg)("strong",{parentName:"p"},"OK"),":"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/2.jpg")}),(0,s.yg)("h3",{id:"screen-layout"},"Screen Layout"),(0,s.yg)("p",null,"The following figure shows a screenshot of the GNS graphical user interface which we will quickly discuss so you know some of the terminology used:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/3.jpg")}),(0,s.yg)("h3",{id:"gns3-workspace"},"GNS3 Workspace"),(0,s.yg)("p",null,"The GNS3 workspace is the area of GNS3 where you create topologies by adding devices and links:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/4.jpg")}),(0,s.yg)("h3",{id:"gns3-toolbar"},"GNS3 Toolbar"),(0,s.yg)("p",null,"The GNS3 toolbar is found at the top of the GNS3 GUI and contains groups of icons that allow you to easily perform common tasks:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/5.jpg")}),(0,s.yg)("p",null,"The toolbar groups icons into specific functions or features. This gives you a simple way of getting things done."),(0,s.yg)("h3",{id:"devices-toolbar"},"Devices Toolbar"),(0,s.yg)("p",null,"The devices toolbar allows you to add devices to your network topology. You do this by dragging devices from the Toolbar to the GNS3 workspace (explained below)."),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/6.jpg")}),(0,s.yg)("p",null,"The devices toolbar is grouped into different types by default:"),(0,s.yg)("table",null,(0,s.yg)("thead",{parentName:"table"},(0,s.yg)("tr",{parentName:"thead"},(0,s.yg)("th",{parentName:"tr",align:null},"Tool"),(0,s.yg)("th",{parentName:"tr",align:null},"Name"))),(0,s.yg)("tbody",{parentName:"table"},(0,s.yg)("tr",{parentName:"tbody"},(0,s.yg)("td",{parentName:"tr",align:null},(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/7.jpg")})),(0,s.yg)("td",{parentName:"tr",align:null},"Routers")),(0,s.yg)("tr",{parentName:"tbody"},(0,s.yg)("td",{parentName:"tr",align:null},(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/8.jpg")})),(0,s.yg)("td",{parentName:"tr",align:null},"Switches")),(0,s.yg)("tr",{parentName:"tbody"},(0,s.yg)("td",{parentName:"tr",align:null},(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/9.jpg")})),(0,s.yg)("td",{parentName:"tr",align:null},"End Devices")),(0,s.yg)("tr",{parentName:"tbody"},(0,s.yg)("td",{parentName:"tr",align:null},(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/10.jpg")})),(0,s.yg)("td",{parentName:"tr",align:null},"Security Devices")),(0,s.yg)("tr",{parentName:"tbody"},(0,s.yg)("td",{parentName:"tr",align:null},(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/11.jpg")})),(0,s.yg)("td",{parentName:"tr",align:null},"All Devices")),(0,s.yg)("tr",{parentName:"tbody"},(0,s.yg)("td",{parentName:"tr",align:null},(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/12.jpg")})),(0,s.yg)("td",{parentName:"tr",align:null},"Add a link")))),(0,s.yg)("p",null,"You will find both simulated devices as well as emulated devices in the various device groupings."),(0,s.yg)("p",null,"The Topology Summary pane is located towards the upper-right side of the GNS3 GUI, and will list the nodes that are in the current topology:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/13.jpg")}),(0,s.yg)("p",null,"As you\u2019ll see shortly, this pane not only lists the current topology devices, but also their state (on/off), as well as list the interface connections between the various nodes."),(0,s.yg)("p",null,"The Server Summary pane shows the Local Server status, as well as that of the GNS3-VM (if in use):"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/14.jpg")}),(0,s.yg)("p",null,"In this instance, the both the local server (the name of the PC) and the GNS3-VM are currently up and running. The local server\u2019s resource usage includes more than just what GNS3 itself is using (if you are heavily multitasking while running GNS3, you\u2019ll see that reflected in the resource summary), while the resource usage for the GNS3-VM is only showing what ",(0,s.yg)("em",{parentName:"p"},"it")," is currently using."),(0,s.yg)("p",null,"Lastly, the GNS3 Console is at the bottom of the GNS3 GUI:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/15.jpg")}),(0,s.yg)("p",null,"Errors GNS3 encounters while executing tasks will be written here, and GNS3 mods may ask you to run debug commands here, to better isolate an issue you may be encountering."),(0,s.yg)("h2",{id:"create-your-topology"},"Create your Topology"),(0,s.yg)("p",null,"To create a new GNS3 topology, click the ",(0,s.yg)("strong",{parentName:"p"},"Browse End Devices")," button on the ",(0,s.yg)("strong",{parentName:"p"},"Devices Toolbar"),":"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/16.jpg")}),(0,s.yg)("p",null,"The toolbar will expand to show available devices of that type. In this example, the VPCS device is one of the available types:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/17.jpg")}),(0,s.yg)("p",null,"To create your first GNS3 topology, first click on ",(0,s.yg)("strong",{parentName:"p"},"Switches")," in the Devices Toolbar. Drag and drop the built-in ethernet switch to the GNS3 ",(0,s.yg)("strong",{parentName:"p"},"Workspace")," as shown below. An instance of the device called ",(0,s.yg)("strong",{parentName:"p"},"Ethernetswitch-1")," will now be available in the topology."),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/18.jpg")}),(0,s.yg)("p",null,"Next, click on ",(0,s.yg)("strong",{parentName:"p"},"End devices")," in the ",(0,s.yg)("strong",{parentName:"p"},"Devices Toolbar"),", and drag and drop an instance of VPCS (a simple PC simulator) into the ",(0,s.yg)("strong",{parentName:"p"},"Workspace"),", which will be called PC-1:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/19.jpg")}),(0,s.yg)("admonition",{type:"note"},(0,s.yg)("p",{parentName:"admonition"},"If you already have the GNS-VM imported and configured, you\u2019ll be prompted to select whether you wish to run the VPCS node via the local server or the GNS3-VM. Select whichever you wish, since VPCS can run in either.")),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/20.jpg")}),(0,s.yg)("p",null,"The above image is listing the name of the PC, indicating that you\u2019d like to run this node via the local server."),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/21.jpg")}),(0,s.yg)("p",null,"The above image lists \u201cGNS3 VM\u201d, indicating you\u2019d like to run this node via the GNS3 VM"),(0,s.yg)("p",null,"Drag and drop that same VPCS node again into the ",(0,s.yg)("strong",{parentName:"p"},"Workspace"),", which will add a second node called \u201cPC-2\u201d, so that you have the resulting devices in your topology:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/22.jpg")}),(0,s.yg)("p",null,"To collapse the ",(0,s.yg)("strong",{parentName:"p"},"Browse End Devices")," toolbar, either click the ",(0,s.yg)("strong",{parentName:"p"},"Browse End Devices")," button again, or click the X shown below:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/23.jpg")}),(0,s.yg)("p",null,"Notice that the Topology Summary pane has now changed, to reflect that we have three nodes in our workspace: Ethernetswitch-1, PC-1, and PC-2:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/24.jpg")}),(0,s.yg)("p",null,"Click the ",(0,s.yg)("strong",{parentName:"p"},"Add a Link")," button to start adding links to your topology. The mouse cursor will change to indicate that links can be added:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/25.jpg")}),(0,s.yg)("p",null,"Click on ",(0,s.yg)("strong",{parentName:"p"},"PC-1")," in your topology to display available interfaces. In this example, only Ethernet0 is available (this is device dependent):"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/26.jpg")}),(0,s.yg)("p",null,"Click Ethernet0 on PC-1, and then left-click on Ethernetswitch-1:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/27.jpg")}),(0,s.yg)("p",null,"Select Ethernet0 on Ethernetswitch-1 to complete the connection. To create a link between Ethernetswitch-1 and PC-2, you can click on either node, select an interface, click on the other node, and make that connection:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/28.jpg")}),(0,s.yg)("p",null,"Click the ",(0,s.yg)("strong",{parentName:"p"},"Add a Link")," button to stop adding links. The mouse cursor will change back to normal to indicate that you have stopped adding links."),(0,s.yg)("p",null,"The first thing you\u2019ll notice is that the indicator symbols next to the devices are red. The means the devices are currently powered off:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/29.jpg")}),(0,s.yg)("admonition",{type:"note"},(0,s.yg)("p",{parentName:"admonition"},"Devices that are suspended will have yellow indicators. Devices that are powered on will have green indicators even if their interfaces are in the down/down state (such as router/switch interfaces that have been administratively shut). You\u2019ll need to double check the running config of any routers or switches to ensure that their interfaces have been manually enabled."),(0,s.yg)("p",{parentName:"admonition"},"This powered on/powered off/suspended state is also reflected in the ",(0,s.yg)("strong",{parentName:"p"},"Topology_Summary"))),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/30.jpg")}),(0,s.yg)("p",null,"It\u2019s helpful to toggle on the interface names, as well as add notes to your topology, to make it easier to see which interfaces are connected between devices, as well as adding notes such as subnets/ip addressing, listing OSPF areas or BGP autonomous Systems, and so forth. These two buttons on the toolbar will enable you to toggle interface names on/off, and add notes:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/31.jpg")}),(0,s.yg)("p",null,"Below is an example of this in use. You can see that PC-1\u2019s e0 interface is connected to e0 of Ethernetswitch-1, and e0 of PC-2 is connected to Ethernetswitch-1\u2019s e1 interface, along with a simple note:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/32.jpg")}),(0,s.yg)("p",null,"The Green \u201cPlay\u201d button on the ",(0,s.yg)("strong",{parentName:"p"},"GNS3 Toolbar")," will power on all devices in the topology, while the Yellow \u201cPause\u201d button will suspend them, and the Red \u201cStop\u201d button powers everything in the topology down:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/33.jpg")}),(0,s.yg)("p",null,"This is also reflected in the ",(0,s.yg)("strong",{parentName:"p"},"Topology Summary"),"."),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/34.jpg")}),(0,s.yg)("p",null,"You are now ready to configure your devices. Click the ",(0,s.yg)("strong",{parentName:"p"},"Console connect to all devices")," button on the ",(0,s.yg)("strong",{parentName:"p"},"GNS3 Toolbar")," to open a connection to every device in the topology:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/35.jpg")}),(0,s.yg)("p",null,"By default, GNS3 will use Solar-PuTTY in Windows, as it\u2019s installed as part of the GNS3 installation process, but you can configure GNS3 to use other terminal emulators (such as SecureCRT or Gnome-Term):"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/36.jpg")}),(0,s.yg)("p",null,"Let\u2019s assign some IP addresses to PC-1 and PC-2, and ensure they can communicate with one another:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-1> ip 10.1.1.1 255.255.255.0\nChecking for duplicate address...\nPC1 : 10.1.1.1 255.255.255.0\nPC-1>\nPC-2> ip 10.1.1.2 255.255.255.0\nChecking for duplicate address...\nPC1 : 10.1.1.2 255.255.255.0\nPC-2>\n")),(0,s.yg)("p",null,"Can PC-1 ping PC-2?"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-1> ping 10.1.1.2\n84 bytes from 10.1.1.2 icmp_seq=1 ttl=64 time=0.985 ms\n84 bytes from 10.1.1.2 icmp_seq=2 ttl=64 time=0.982 ms\n84 bytes from 10.1.1.2 icmp_seq=3 ttl=64 time=0.000 ms\n84 bytes from 10.1.1.2 icmp_seq=4 ttl=64 time=0.981 ms\n84 bytes from 10.1.1.2 icmp_seq=5 ttl=64 time=0.982 ms\n")),(0,s.yg)("p",null,"Yes, it can. Now let\u2019s ping PC-1 from PC-2:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-2> ping 10.1.1.1\n84 bytes from 10.1.1.1 icmp_seq=1 ttl=64 time=0.980 ms\n84 bytes from 10.1.1.1 icmp_seq=2 ttl=64 time=0.982 ms\n84 bytes from 10.1.1.1 icmp_seq=3 ttl=64 time=0.997 ms\n84 bytes from 10.1.1.1 icmp_seq=4 ttl=64 time=1.029 ms\n84 bytes from 10.1.1.1 icmp_seq=5 ttl=64 time=0.996 ms\n")),(0,s.yg)("p",null,"That succeeds as well."),(0,s.yg)("p",null,"Now let\u2019s add a third PC to our topology:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/37.jpg")}),(0,s.yg)("p",null,"Instead of clicking the large green Play button on the ",(0,s.yg)("strong",{parentName:"p"},"Toolbar"),", we can right-click on PC-3, and select ",(0,s.yg)("strong",{parentName:"p"},"Start")," to power it on:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/38.jpg")}),(0,s.yg)("p",null,"We\u2019ll do the same thing a second time, but we\u2019ll select ",(0,s.yg)("strong",{parentName:"p"},"Console"),", since we already have console tabs open for the other two devices:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/39.jpg")}),(0,s.yg)("p",null,"That will open a new third tab in Solar-Putty for us:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-gns3-topology/40.jpg")}),(0,s.yg)("p",null,"(if we\u2019d clicked the Console button on the Toolbar, it would\u2019ve opened tabs for all three devices, even though we already had two of them open already for PC-1 and PC-2)."),(0,s.yg)("p",null,"Let\u2019s assign an IP address to PC-3, and see if all three PCs can ping one another:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-3> ip 10.1.1.3 255.255.255.0\nChecking for duplicate address...\nPC1 : 10.1.1.3 255.255.255.0\nPC-3>\n")),(0,s.yg)("p",null,"Can PC-1 ping PC-2 and PC-3?"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-1> ping 10.1.1.2\n84 bytes from 10.1.1.2 icmp_seq=1 ttl=64 time=0.985 ms\n84 bytes from 10.1.1.2 icmp_seq=2 ttl=64 time=0.982 ms\n84 bytes from 10.1.1.2 icmp_seq=3 ttl=64 time=0.000 ms\n84 bytes from 10.1.1.2 icmp_seq=4 ttl=64 time=0.981 ms\n84 bytes from 10.1.1.2 icmp_seq=5 ttl=64 time=0.982 ms\nPC-1> ping 10.1.1.3\n84 bytes from 10.1.1.3 icmp_seq=1 ttl=64 time=0.000 ms\n84 bytes from 10.1.1.3 icmp_seq=2 ttl=64 time=1.001 ms\n84 bytes from 10.1.1.3 icmp_seq=3 ttl=64 time=0.982 ms\n84 bytes from 10.1.1.3 icmp_seq=4 ttl=64 time=0.984 ms\n84 bytes from 10.1.1.3 icmp_seq=5 ttl=64 time=0.988 ms\n")),(0,s.yg)("p",null,"Yes it can. Can PC-2 ping PC-1 and PC-3?"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-2> ping 10.1.1.1\n84 bytes from 10.1.1.1 icmp_seq=1 ttl=64 time=0.980 ms\n84 bytes from 10.1.1.1 icmp_seq=2 ttl=64 time=0.982 ms\n84 bytes from 10.1.1.1 icmp_seq=3 ttl=64 time=0.997 ms\n84 bytes from 10.1.1.1 icmp_seq=4 ttl=64 time=1.029 ms\n84 bytes from 10.1.1.1 icmp_seq=5 ttl=64 time=0.996 ms\nPC-2> ping 10.1.1.3\n84 bytes from 10.1.1.3 icmp_seq=1 ttl=64 time=0.999 ms\n84 bytes from 10.1.1.3 icmp_seq=2 ttl=64 time=0.985 ms\n84 bytes from 10.1.1.3 icmp_seq=3 ttl=64 time=0.000 ms\n84 bytes from 10.1.1.3 icmp_seq=4 ttl=64 time=0.980 ms\n84 bytes from 10.1.1.3 icmp_seq=5 ttl=64 time=0.000 ms\n")),(0,s.yg)("p",null,"It also can. Since both PC-1 and PC-2 can ping PC-3, it\u2019s safe to assume it can ping both of them as well, but we\u2019ll run the test anyway, just to be safe:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-3> ping 10.1.1.1\n84 bytes from 10.1.1.1 icmp_seq=1 ttl=64 time=0.999 ms\n84 bytes from 10.1.1.1 icmp_seq=2 ttl=64 time=0.000 ms\n84 bytes from 10.1.1.1 icmp_seq=3 ttl=64 time=0.980 ms\n84 bytes from 10.1.1.1 icmp_seq=4 ttl=64 time=0.997 ms\n84 bytes from 10.1.1.1 icmp_seq=5 ttl=64 time=0.000 ms\nPC-3> ping 10.1.1.2\n84 bytes from 10.1.1.2 icmp_seq=1 ttl=64 time=0.999 ms\n84 bytes from 10.1.1.2 icmp_seq=2 ttl=64 time=0.988 ms\n84 bytes from 10.1.1.2 icmp_seq=3 ttl=64 time=0.999 ms\n84 bytes from 10.1.1.2 icmp_seq=4 ttl=64 time=0.981 ms\n84 bytes from 10.1.1.2 icmp_seq=5 ttl=64 time=0.980 ms\n")),(0,s.yg)("p",null,"Good. Everything works as expected. Now, since GNS3 doesn\u2019t save the configurations of these by default, it\u2019s a good idea to go ahead and manually do so ourselves, so that if we reload this project at a later date, the PCs will still be configured the way we left them:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"PC-1> save\nSaving startup configuration to startup.vpc\n. done\nPC-1>\nPC-2> save\nSaving startup configuration to startup.vpc\n. done\nPC-2>\nPC-3> save\nSaving startup configuration to startup.vpc\n. done\nPC-3>\n")),(0,s.yg)("p",null,"(If you\u2019d like to see what other commands are available in VPCS, you can enter \u2018?\u2019 (minus the quotes) to see what else VPCS supports). "),(0,s.yg)("p",null,(0,s.yg)("strong",{parentName:"p"},"Congratulations!")," You have configured a basic GNS3 topology. From here on, you can create much more complex topologies and test and learn various technologies such as OSPF, EIGRP, BGP, STP and many others."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/7bc39c0f.2d2d2bfb.js b/build/assets/js/7bc39c0f.2d2d2bfb.js new file mode 100644 index 00000000..fadec18d --- /dev/null +++ b/build/assets/js/7bc39c0f.2d2d2bfb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[5740],{5680:(e,n,t)=>{t.d(n,{xA:()=>c,yg:()=>h});var i=t(6540);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function s(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=i.createContext({}),d=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},c=function(e){var n=d(e.components);return i.createElement(l.Provider,{value:n},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},g=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),u=d(t),g=a,h=u["".concat(l,".").concat(g)]||u[g]||f[g]||o;return t?i.createElement(h,s(s({ref:n},c),{},{components:t})):i.createElement(h,s({ref:n},c))}));function h(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,s=new Array(o);s[0]=g;var r={};for(var l in n)hasOwnProperty.call(n,l)&&(r[l]=n[l]);r.originalType=e,r[u]="string"==typeof e?e:a,s[1]=r;for(var d=2;d{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>f});var i=t(8168),a=t(8587),o=(t(6540),t(5680)),s=t(6025),r=["components"],l={id:"configuration-transfer-qemu-vms",title:"Configuration transfer to QEMU VMs",sidebar_label:"Configuration transfer to QEMU VMs"},d=void 0,c={unversionedId:"using-gns3/advanced/configuration-transfer-qemu-vms",id:"using-gns3/advanced/configuration-transfer-qemu-vms",title:"Configuration transfer to QEMU VMs",description:"GNS3 v2.2.18 introduces a feature to transfer files,",source:"@site/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/configuration-transfer-qemu-vms",permalink:"/docs/using-gns3/advanced/configuration-transfer-qemu-vms",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md",tags:[],version:"current",frontMatter:{id:"configuration-transfer-qemu-vms",title:"Configuration transfer to QEMU VMs",sidebar_label:"Configuration transfer to QEMU VMs"},sidebar:"someSidebar",previous:{title:"Port name formatting",permalink:"/docs/using-gns3/advanced/port-name-formatting"},next:{title:"GNS3 server configuration file",permalink:"/docs/using-gns3/administration/gns3-server-configuration-file"}},u={},f=[{value:"Disk Interface of Config Disk",id:"disk-interface-of-config-disk",level:2},{value:"Config ZIP is not updated while Node is running",id:"config-zip-is-not-updated-while-node-is-running",level:2},{value:"GNS3 Server needs Mtools installed",id:"gns3-server-needs-mtools-installed",level:2},{value:"Some VM Types don't support additional Disk Images",id:"some-vm-types-dont-support-additional-disk-images",level:2},{value:"IOS disk naming",id:"ios-disk-naming",level:2},{value:"Archive feature",id:"archive-feature",level:2},{value:"Startup Configuration",id:"startup-configuration",level:2}],g={toc:f};function h(e){var n=e.components,t=(0,a.A)(e,r);return(0,o.yg)("wrapper",(0,i.A)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"GNS3 v2.2.18 introduces a feature to transfer files,\nfor example configurations, between the GNS3 GUI and QEMU VMs.\nThat's done by adding an additional disk image to the VM\nand implement a way to transfer its data to the user.\nIt is not as convenient to use as the IOS and IOU method,\nbut it is more flexible.\nIt's not limited to configurations and\nit will work for almost all QEMU node types."),(0,o.yg)("p",null,"The additional disk image, named config disk,\nis not active by default.\nYou have to enable it in the HDD tab of the\nnode properties (for a specific node)\nor the QEMU VM template (for all new nodes of that type)."),(0,o.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/advanced/configuration-transfer-qemu-vms/1.png")}),(0,o.yg)("p",null,"This adds a FAT formatted image as hard disk D to the node.\nThe user can now transfer data to/from this disk to the VM.\nThere is no automatic transfer into the node's configuration,\nas for IOS and IOU devices.\nThe config disk is simply a file storage with all its flexibility.\nThe disk size is set to 1 MB,\nso it can't be used to exchange large files."),(0,o.yg)("p",null,"The config disk images are not simply exposed to the user,\nas it's cumbersome to use them.\nInstead, they are converted to ZIP archives.\nBy right click on a node / Export config the\nZIP file is copied to the users computers\nand can be opened and inspected there.\nBy creating/modifying a ZIP file and importing it,\nit is copied to the node."),(0,o.yg)("p",null,"When a node is initially started the config disk is empty.\nSometimes it might be useful to fill it with initial contents.\nThe manual way is to import a ZIP archive before the first start of a node.\nThis can be automated by storing the ZIP archive in the\n",(0,o.yg)("inlineCode",{parentName:"p"},"GNS3/images/QEMU"),' directory and entering its name\nin the "Startup-cfg" field of the HDD configuration.'),(0,o.yg)("h1",{id:"pitfalls"},"Pitfalls"),(0,o.yg)("h2",{id:"disk-interface-of-config-disk"},"Disk Interface of Config Disk"),(0,o.yg)("p",null,"A VM doesn't use the hard disk images in the sequence\nthey are defined in the node.\nThe VM additionally considers the disk interface type.\nA disk with an ide disk interface has priority over\ndisks with other interface types.\nFor example, if the HDA disk uses the virtio type\nand the config disk uses ide,\nthe VM will use the config disk as its primary disk and\ntries to boot from it.\nThat, of course, will fail.\nTherefore, it's strongly suggested using the same disk interface type\nfor all the disks of a node."),(0,o.yg)("p",null,'To make this issue less likely in the future,\nnewly created templates will set the disk interface by default to "none".\nConfig disks with the "none" disk interface will automatically\nuse the same disk interface as the first hard disk (HDA).\nBut for already existing nodes/template you have to pay attention.'),(0,o.yg)("h2",{id:"config-zip-is-not-updated-while-node-is-running"},"Config ZIP is not updated while Node is running"),(0,o.yg)("p",null,"The ZIP archive is converted to the config disk,\nwhen the node is started.\nLikewise, the ZIP archive is updated from the config disk,\nwhen the node is stopped.\nTherefore, changes on the config disk while the nodes are running,\nwill not immediately update the ZIP archive.\nYou have to wait until the node is stopped."),(0,o.yg)("h2",{id:"gns3-server-needs-mtools-installed"},"GNS3 Server needs Mtools installed"),(0,o.yg)("p",null,"This config disk feature uses the\n",(0,o.yg)("a",{parentName:"p",href:"https://www.gnu.org/software/mtools/"},"Mtools"),"\nprogram to access the config disk.\nTherefore, it needs to be installed on the Linux GNS3 server.\nThe gns3-server package for Ubuntu has added mtools as a requirement,\nso it will be automatically installed in the GNS3VM and other Ubuntu systems.\nDifferent Linux flavors need to additionally install mtools."),(0,o.yg)("h2",{id:"some-vm-types-dont-support-additional-disk-images"},"Some VM Types don't support additional Disk Images"),(0,o.yg)("p",null,"Some VM types, like ASAv, support only the main disk image.\nThe config disk will therefore not be visible on these VMs."),(0,o.yg)("h1",{id:"use-with-iosv-and-iosvl2"},"Use with IOSv and IOSvL2"),(0,o.yg)("h2",{id:"ios-disk-naming"},"IOS disk naming"),(0,o.yg)("p",null,"IOSv and IOSvL2 images have an odd way to name the flash drives."),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("inlineCode",{parentName:"li"},"flash:"),", ",(0,o.yg)("inlineCode",{parentName:"li"},"flash0:")," - part within IOS image"),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("inlineCode",{parentName:"li"},"flash2:")," - first external disk"),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("inlineCode",{parentName:"li"},"flash1:")," - second external disk"),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("inlineCode",{parentName:"li"},"flash3:")," - third external disk")),(0,o.yg)("p",null,"So lets assume the following IOSv template:"),(0,o.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/advanced/configuration-transfer-qemu-vms/2.png")}),(0,o.yg)("p",null,"The HDB disk is the first external disk and\nwill therefore be named ",(0,o.yg)("inlineCode",{parentName:"p"},"flash2:")," within IOS.\nThe config disk is the second external disk and\nwill be named ",(0,o.yg)("inlineCode",{parentName:"p"},"flash1:"),".\nPretty confusing, but that's the way IOS is working."),(0,o.yg)("h2",{id:"archive-feature"},"Archive feature"),(0,o.yg)("p",null,"With the\n",(0,o.yg)("a",{parentName:"p",href:"https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/config-mgmt/configuration/15-sy/config-mgmt-15-sy-book/cm-config-versioning.html"},"archive"),"\nfeature of IOS\nthe configs can be automatically saved to the config disk.\nSo you don't have to manually copy them.\nThat has the additional benefit,\nthat the user gets a backup of his configurations."),(0,o.yg)("p",null,"Add the following to the IOS configuration:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"archive\n path flash1:$h\n write-memory\n")),(0,o.yg)("p",null,"The path has to be adopted to the IOS disk name used for the config disk,\nsee the previous section."),(0,o.yg)("p",null,"By default, it will create a maximum of 10 backups,\nbut that can be changed with the ",(0,o.yg)("inlineCode",{parentName:"p"},"maximum")," subcommand."),(0,o.yg)("h2",{id:"startup-configuration"},"Startup Configuration"),(0,o.yg)("p",null,'IOSv / IOSvL2 has the ability to load an initial configuration\nfrom a file named "ios_config.txt" placed on a flash drive.\nIt additionally needs a checksum file named "ios_config_checksum",\ncontaining the MD5 checksum of ios_config.txt.\nThe IOSv appliance uses disk HDB with an IOSv_startup_config.img,\nthat contains this initial ios_config.txt.'),(0,o.yg)("p",null,"However, this image is difficult to modify.\nAn alternative is to add this ios_config.txt to the config disk.\nAll we have to do is to create this file,\nput its MD5 sum into ios_config_checksum and\ncreate a zip file containing them.\nWell, there is one quirk.\nThe checksum file should contain only the 32 characters of the MD5 sum and\nan optional linefeed."),(0,o.yg)("p",null,"As an example here the config ZIP file I'm using for IOSv and IOSvL2: ",(0,o.yg)("a",{href:(0,s.A)("configs/IOSv_startup_image.zip"),target:"_blank"},"IOSv_startup_image.zip")),(0,o.yg)("p",null,'I have added it as a config disk "Startup-cfg",\nso it\'s automatically added to all new IOSv VMs.\nThis replaces the old HDB IOSv_startup_image.img,\nwhich should be cleared from the template.'),(0,o.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/advanced/configuration-transfer-qemu-vms/3.png")}))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/7bf20783.c874abce.js b/build/assets/js/7bf20783.c874abce.js new file mode 100644 index 00000000..5c0e02b2 --- /dev/null +++ b/build/assets/js/7bf20783.c874abce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9800],{5680:(e,n,t)=>{t.d(n,{xA:()=>c,yg:()=>d});var a=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),p=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(l.Provider,{value:n},e.children)},g="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=p(t),u=r,d=g["".concat(l,".").concat(u)]||g[u]||m[u]||i;return t?a.createElement(d,o(o({ref:n},c),{},{components:t})):a.createElement(d,o({ref:n},c))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=u;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[g]="string"==typeof e?e:r,o[1]=s;for(var p=2;p{t.r(n),t.d(n,{assets:()=>g,contentTitle:()=>p,default:()=>d,frontMatter:()=>l,metadata:()=>c,toc:()=>m});var a=t(8168),r=t(8587),i=(t(6540),t(5680)),o=t(6025),s=["components"],l={id:"install-from-marketplace",title:"Install an appliance from the GNS3 Marketplace",sidebar_label:"Install an appliance from the GNS3 Marketplace"},p=void 0,c={unversionedId:"using-gns3/beginners/install-from-marketplace",id:"using-gns3/beginners/install-from-marketplace",title:"Install an appliance from the GNS3 Marketplace",description:"Introduction",source:"@site/docs/using-gns3/beginners/install-from-marketplace.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/install-from-marketplace",permalink:"/docs/using-gns3/beginners/install-from-marketplace",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/install-from-marketplace.md",tags:[],version:"current",frontMatter:{id:"install-from-marketplace",title:"Install an appliance from the GNS3 Marketplace",sidebar_label:"Install an appliance from the GNS3 Marketplace"},sidebar:"someSidebar",previous:{title:"The console terminal",permalink:"/docs/using-gns3/beginners/the-console-terminal"},next:{title:"Import GNS3 appliance",permalink:"/docs/using-gns3/beginners/import-gns3-appliance"}},g={},m=[{value:"Introduction",id:"introduction",level:2},{value:"Why?",id:"why",level:2},{value:"Download the GNS3 Appliance",id:"download-the-gns3-appliance",level:2}],u={toc:m};function d(e){var n=e.components,t=(0,r.A)(e,s);return(0,i.yg)("wrapper",(0,a.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"introduction"},"Introduction"),(0,i.yg)("p",null,"This document explains how to download and install an appliance from the ",(0,i.yg)("strong",{parentName:"p"},"GNS3 Marketplace"),"."),(0,i.yg)("h2",{id:"why"},"Why?"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Question"),": Why would you want to use an appliance from the GNS3 Marketplace rather than manually configuring settings yourself?"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Answer"),": The GNS3 appliances are using GNS3 recommended settings and have been thoroughly tested. You will most likely have a much better user experience using the appliances. You will also encounter fewer errors if you use an appliance rather than trying to configure settings yourself and using untested images."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"If you want to use IOSvL2, IOU, IOSv, IOS-XRv or ASAv images with GNS3, the GNS3 VM is mandatory when using Windows or Mac OS. This is because Qemu is better supported on Linux and faster when run with VMware (you can also use KVM). .")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Some vendors provide images of their systems for free. Others like Cisco do not. You will be need to provide your own Cisco images to use Cisco devices with GNS3. GNS3 are unable to provide Cisco IOS images. Please do not ask us or others to give you an image. You will need to either have an authorized account with Cisco or purchase a VIRL license to access Cisco images like the Cisco ASAv or IOSv. For VIRL, go here: ",(0,i.yg)("a",{parentName:"p",href:"http://virl.cisco.com/"},"http://virl.cisco.com/"))),(0,i.yg)("h2",{id:"download-the-gns3-appliance"},"Download the GNS3 Appliance"),(0,i.yg)("p",null,"::note\nIn this example, a Cisco IOSvL2 appliance will be imported. Other appliances will follow a similar process.\n:::"),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"In this guide, the Windows operating system is used. The process is similar however for other operating systems such as Mac OS and Linux.")),(0,i.yg)("p",null,"Before downloading the appliance from the GNS3 website, download and save the operating system for the appliance in your ",(0,i.yg)("strong",{parentName:"p"},"Downloads")," directory:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/1.jpg")}),(0,i.yg)("p",null,"Starting with GNS3 2.2.0, there are appliances included, in the GNS3 installation directory:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/2.jpg")}),(0,i.yg)("p",null,"(The default installation directory in Windows is ",(0,i.yg)("inlineCode",{parentName:"p"},"C:\\Program Files\\GNS3"),")"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/3.jpg")}),(0,i.yg)("p",null,"(the appliance templates listed in ",(0,i.yg)("inlineCode",{parentName:"p"},"C:\\Program Files\\GNS3\\appliances"),")"),(0,i.yg)("p",null,"You can also download the appliance template files from the GNS3 website using a web browser. Browse to ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com"},"https://gns3.com")," and click the ",(0,i.yg)("strong",{parentName:"p"},"Marketplace")," menu item:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/4.jpg")}),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"Appliances"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/5.jpg")}),(0,i.yg)("p",null,"Select the appliance you want to download. Since we want to import the ",(0,i.yg)("strong",{parentName:"p"},"Cisco IOSvL2 VM"),", select ",(0,i.yg)("strong",{parentName:"p"},"Cisco IOSvL2")," in the ",(0,i.yg)("strong",{parentName:"p"},"Appliances")," section of the ",(0,i.yg)("strong",{parentName:"p"},"Marketplace"),", in order to download the cisco-iosvl2.gns3a template file:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/6.jpg")}),(0,i.yg)("p",null,"An appliance description is displayed. Confirm details of the appliance and then click ",(0,i.yg)("strong",{parentName:"p"},"Download Template"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/7.jpg")}),(0,i.yg)("p",null,"The appliance template is downloaded to your local PC:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/install-from-marketplace/8.jpg")}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/7df75973.89a1c821.js b/build/assets/js/7df75973.89a1c821.js new file mode 100644 index 00000000..9b78e965 --- /dev/null +++ b/build/assets/js/7df75973.89a1c821.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[271],{5680:(e,t,n)=>{n.d(t,{xA:()=>c,yg:()=>d});var r=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},g="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=u(n),p=i,d=g["".concat(l,".").concat(p)]||g[p]||m[p]||a;return n?r.createElement(d,o(o({ref:t},c),{},{components:n})):r.createElement(d,o({ref:t},c))}));function d(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[g]="string"==typeof e?e:i,o[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>g,contentTitle:()=>u,default:()=>d,frontMatter:()=>l,metadata:()=>c,toc:()=>m});var r=n(8168),i=n(8587),a=(n(6540),n(5680)),o=n(6025),s=["components"],l={id:"scale-gns3",title:"Scale GNS3",sidebar_label:"Scale GNS3"},u=void 0,c={unversionedId:"using-gns3/administration/scale-gns3",id:"using-gns3/administration/scale-gns3",title:"Scale GNS3",description:"GNS3 itself doesn\u2019t have limitation on the number of nodes you can run into it. The limitation will be your hardware.",source:"@site/docs/using-gns3/administration/scale-gns3.md",sourceDirName:"using-gns3/administration",slug:"/using-gns3/administration/scale-gns3",permalink:"/docs/using-gns3/administration/scale-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/scale-gns3.md",tags:[],version:"current",frontMatter:{id:"scale-gns3",title:"Scale GNS3",sidebar_label:"Scale GNS3"},sidebar:"someSidebar",previous:{title:"Client server SSL encryption",permalink:"/docs/using-gns3/administration/client-server-ssl-encryption"},next:{title:"Architecture",permalink:"/docs/using-gns3/design/architecture"}},g={},m=[{value:"Run GNS3 on a remote server",id:"run-gns3-on-a-remote-server",level:2},{value:"Split the load on multiple machine",id:"split-the-load-on-multiple-machine",level:2},{value:"Requirements",id:"requirements",level:2},{value:"Limitations",id:"limitations",level:2},{value:"Setup",id:"setup",level:2},{value:"Add your remote servers",id:"add-your-remote-servers",level:3},{value:"Setup the Appliance Templates",id:"setup-the-appliance-templates",level:3}],p={toc:m};function d(e){var t=e.components,n=(0,i.A)(e,s);return(0,a.yg)("wrapper",(0,r.A)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"GNS3 itself doesn\u2019t have limitation on the number of nodes you can run into it. The limitation will be your hardware."),(0,a.yg)("h2",{id:"run-gns3-on-a-remote-server"},"Run GNS3 on a remote server"),(0,a.yg)("p",null,"If your local machine is not enough to let you create the sorts of topologies you want to use, you can run GNS3 on a bigger machine locally or on a cloud Provider like Packet."),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"See ",(0,a.yg)("a",{parentName:"li",href:"../../getting-started/installation/remote-server"},"Install on a remote server")),(0,a.yg)("li",{parentName:"ul"},"See ",(0,a.yg)("a",{parentName:"li",href:"../../getting-started/installation/gns3-on-equinix"},"GNS3 on Equinix Metal"))),(0,a.yg)("h2",{id:"split-the-load-on-multiple-machine"},"Split the load on multiple machine"),(0,a.yg)("p",null,"In order to cross the limitation of your hardware, you can use multiple GNS3 servers for running the same topology."),(0,a.yg)("p",null,"An example is Jason C. Neumann running GNS3 in a Raspberry Pi cluster:\n",(0,a.yg)("a",{parentName:"p",href:"https://www.gns3.com/discussions/the-worlds-first-gns3-beowulf-cl"},"https://www.gns3.com/discussions/the-worlds-first-gns3-beowulf-cl")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"The PI use an ARM processor that is not adapted to run x86 code on Qemu. Also since this forum post, the interfaces have changed.")),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/1.jpg")}),(0,a.yg)("h2",{id:"requirements"},"Requirements"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"You need the same version of the GNS3 server on all machines"),(0,a.yg)("li",{parentName:"ul"},"All servers need to be on the same network . Nothing should prevent them from being able to communicate with each other")),(0,a.yg)("h2",{id:"limitations"},"Limitations"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"A node need to be explicitly created on a server. There is no smart allocation"),(0,a.yg)("li",{parentName:"ul"},"You need to create an appliance template by server"),(0,a.yg)("li",{parentName:"ul"},"You can\u2019t move a node from a server to another"),(0,a.yg)("li",{parentName:"ul"},"Portable projects are not supported")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"This is not definitive. GNS3 is evolving and contributions are welcome")),(0,a.yg)("h2",{id:"setup"},"Setup"),(0,a.yg)("h3",{id:"add-your-remote-servers"},"Add your remote servers"),(0,a.yg)("p",null,"First you need to add your remote servers in the Server preferences:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/2.jpg")}),(0,a.yg)("p",null,"You will see these appear in the Server summary pane, along with the CPU/RAM usage of each:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/3.jpg")}),(0,a.yg)("h3",{id:"setup-the-appliance-templates"},"Setup the Appliance Templates"),(0,a.yg)("p",null,"When you create your appliance template, choose a remote server:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/4.jpg")}),(0,a.yg)("p",null,"At the node name step, choose a name to help you remember which server this node will be run on:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/5.jpg")}),(0,a.yg)("p",null,"Create a second template for the other server. You have now two nodes that allow you to manually dispatch the load between servers:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/6.jpg")}),(0,a.yg)("p",null,"You can use the server summary in order to know which server has free resources:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/administration/scale-gns3/7.jpg")}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/830399a1.d912c4ba.js b/build/assets/js/830399a1.d912c4ba.js new file mode 100644 index 00000000..bdae3f4b --- /dev/null +++ b/build/assets/js/830399a1.d912c4ba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4123],{5680:(e,t,n)=>{n.d(t,{xA:()=>g,yg:()=>p});var o=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=o.createContext({}),h=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},g=function(e){var t=h(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},c=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,g=r(e,["components","mdxType","originalType","parentName"]),u=h(n),c=i,p=u["".concat(l,".").concat(c)]||u[c]||d[c]||a;return n?o.createElement(p,s(s({ref:t},g),{},{components:n})):o.createElement(p,s({ref:t},g))}));function p(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,s=new Array(a);s[0]=c;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[u]="string"==typeof e?e:i,s[1]=r;for(var h=2;h{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>h,default:()=>p,frontMatter:()=>l,metadata:()=>g,toc:()=>d});var o=n(8168),i=n(8587),a=(n(6540),n(5680)),s=n(6025),r=["components"],l={id:"importing-vmx-and-vqfx-into-gns3",title:"Importing vMX and vQFX into GNS3",sidebar_label:"Importing vMX and vQFX into GNS3"},h=void 0,g={unversionedId:"how-to-guides/importing-vmx-and-vqfx-into-gns3",id:"how-to-guides/importing-vmx-and-vqfx-into-gns3",title:"Importing vMX and vQFX into GNS3",description:"Important edit - see bottom of the document!",source:"@site/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md",sourceDirName:"how-to-guides",slug:"/how-to-guides/importing-vmx-and-vqfx-into-gns3",permalink:"/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md",tags:[],version:"current",frontMatter:{id:"importing-vmx-and-vqfx-into-gns3",title:"Importing vMX and vQFX into GNS3",sidebar_label:"Importing vMX and vQFX into GNS3"},sidebar:"someSidebar",previous:{title:"Cisco ASA",permalink:"/docs/how-to-guides/cisco-asa"},next:{title:"How to use applications with the GNS3 Web interface",permalink:"/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui"}},u={},d=[{value:"Legacy VMX (the single-VM pre-release versions)",id:"legacy-vmx-the-single-vm-pre-release-versions",level:2},{value:"Importing the split-VM public releases/trials of VMX",id:"importing-the-split-vm-public-releasestrials-of-vmx",level:2},{value:"Importing the pre-releases VQFX trial into GNS3",id:"importing-the-pre-releases-vqfx-trial-into-gns3",level:2},{value:"How to ask Juniper for access to download the 60-day trial of VMX, and the pre-releases trial of VQFX",id:"how-to-ask-juniper-for-access-to-download-the-60-day-trial-of-vmx-and-the-pre-releases-trial-of-vqfx",level:2}],c={toc:d};function p(e){var t=e.components,n=(0,i.A)(e,r);return(0,a.yg)("wrapper",(0,o.A)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"Important edit - see bottom of the document!")),(0,a.yg)("h2",{id:"legacy-vmx-the-single-vm-pre-release-versions"},"Legacy VMX (the single-VM pre-release versions)"),(0,a.yg)("p",null,"These single-VM versions of vMX include 14.1R1.10, 14.1R3.5, and 14.1R4.8."),(0,a.yg)("p",null,"First, click ",(0,a.yg)("strong",{parentName:"p"},"Edit->Qemu VMs->New")," in GNS3."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/1.jpg")}),(0,a.yg)("p",null,"I just called it \u201cvMX\u201d, but you could include the version number in the name, as well."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/2.jpg")}),(0,a.yg)("p",null,"Next, assign it 1GB of RAM, and select your qemu binary. I happen to be using v2.6.0 in Linux, but the GNS3-VM will have v2.5.0."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/3.jpg")}),(0,a.yg)("p",null,"Next, choose your image file. By default, these will be called ",(0,a.yg)("inlineCode",{parentName:"p"},"\u201cjinstall-vmx--domesting.img\u201d"),"."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/4.jpg")}),(0,a.yg)("p",null,"When you edit the newly created VM, set assign it to the Routers category, and make sure it\u2019s set to use 1GB RAM, 1 \u201cvCPU\u201d, and telnet."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/5.jpg")}),(0,a.yg)("p",null,"For the network settings, I\u2019ve assigned it 12 adapters. Here\u2019s why:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Eth0 = the management interface (fxp0)"),(0,a.yg)("li",{parentName:"ul"},"Eth1 = internal interface (unusable to us)"),(0,a.yg)("li",{parentName:"ul"},"Eth2 = ge-0/0/0"),(0,a.yg)("li",{parentName:"ul"},"Eth3 = ge-0/0/1"),(0,a.yg)("li",{parentName:"ul"},"Eth4 = ge-0/0/2"),(0,a.yg)("li",{parentName:"ul"},"\u2026"),(0,a.yg)("li",{parentName:"ul"},"Eth11 = ge-0/0/9")),(0,a.yg)("p",null,"Thus, if you wanted to connect ge-0/0/0 on two vMX instances to each other, you\u2019d connect Eth2 on both VMs to each other."),(0,a.yg)("p",null,"Here are what your final settings should look like, in GNS3:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/6.jpg")}),(0,a.yg)("p",null,"When you start up one of these legacy images, the login is \u201croot\u201d with no password. Now, before I proceed, there something you need to be aware of: Not all the pre-release single-VM images of vMX had the virtual FP enabled. Here is what you WANT to see, after the vMX instance loads:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/7.jpg")}),(0,a.yg)("p",null,"If that statement isn\u2019t there, don\u2019t worry. You can manually enable it by running this:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"root@% echo \u2018vm_local_rpio=\u201d1\u201d\u2019 >> /boot/loader.conf\n")),(0,a.yg)("p",null,"Reboot the image, and then it will be enabled."),(0,a.yg)("p",null,"Something else you know: Even though the legacy vMX image boots up rather quickly, the virtual FP part of it does NOT. You really need to give it an extra 2-3 minutes, after you see the login prompt, so that everything fully loads up. Here is what you\u2019ll see, if you do not wait:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/8.jpg")}),(0,a.yg)("p",null,"You may think that looks fine, but the virtual PIC 0 is missing, which means none of the gigabit ethernet interfaces will ever be present. Once you wait an extra 2-3 minutes, here\u2019s the output we really want to see:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/9.jpg")}),(0,a.yg)("p",null,"Notice that virtual PIC 0 is Online, and we can see that the 10 ge-0/0/x interfaces I configured the VM to use, are present and \u201cup/up\u201d. That means we can start configuring the system. Type \u201cedit\u201d (without the quotes) to get into configuration mode. Now, since we didn\u2019t have a root password when we logged in, the first step we should do is create one. If we don\u2019t, then the commit process will never work, so we\u2019ll be unable to commit our configuration changes."),(0,a.yg)("p",null,"In the below example, I set a root system password, configured ge-0/0/0 to use an IPv4 address, and successfully committed the changes:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/10.jpg")}),(0,a.yg)("p",null,"That\u2019s really all it takes to get the legacy single-VM versions of vMX to run via GNS3. Since they are far more lightweight (resource-wise) than the split VM public releases of vMX, you might want to consider tracking these down. Sure, they are missing features, but they\u2019re perfect if you want to dip your toes in Juniper\u2019s \u201cwater\u201d, and you can easily use multiple instances in a topology, like this:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/11.jpg")}),(0,a.yg)("h2",{id:"importing-the-split-vm-public-releasestrials-of-vmx"},"Importing the split-VM public releases/trials of VMX"),(0,a.yg)("p",null,"With the public releases of vMX, Juniper split it up into two VMs: the virtual control-plane (vCP), and the virtual forwarding-plane (vFP). This means we\u2019ll need to create two VMs in GNS3, and connect them together, in order to run a vMX \u201cinstance\u201d. The way to do this, is to request access to the 60-day trial download from Juniper, and download the KVM version. The reason we\u2019re after the KVM version, is that we\u2019ll need 4 files out of the \u201cimages\u201d folder, in order to create and run the VMs. I\u2019ve successfully been able to do this with the 16.1R2.11 and 16.1R3.10 versions. "),(0,a.yg)("p",null,"When you download the KVM version of vMX, it will come as a roughly 3GB .tgz file. Once you extract that archive, here\u2019s what you\u2019ll find in the resulting folder:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/12.jpg")}),(0,a.yg)("p",null,"All of these are necessary, if you wanted to run vMX on an Ubuntu server via KVM, but since we\u2019ll be using this with GNS3, we only need 4 files from the images folder:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/13.jpg")}),(0,a.yg)("p",null,"If you have no intention of running vMX on an Ubuntu server, feel free to delete everything except the files I\u2019ve highlighted. Just be aware that Juniper changes the filenames of the vFPC .img and the vmx .qcow2 file, with the different versions. They may even require we use a different metadata-usb-re.img in later releases."),(0,a.yg)("p",null,"First, let\u2019s create the vCP virtual machine, so we can run it via Qemu:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/14.jpg")}),(0,a.yg)("p",null,"I chose to name the VMs \u201cvMX-vCP\u201d and vMX-vFP\u201d, but you can call them whatever you wish."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/15.jpg")}),(0,a.yg)("p",null,"We need to allocate vCP at least 2GB RAM."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/16.jpg")}),(0,a.yg)("p",null,"Choose the junos .qcow2 file from the image folder to be used as HDA. Click finish, and we\u2019ll edit the vMX-vCP vm:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/17.jpg")}),(0,a.yg)("p",null,"Assign vMX-vCP to the Router category, confirm it\u2019s been assigned 2GB RAM, 1 vCPU, and that we\u2019ll use Telnet. Next, we need to click on the HDD tab, since we must add two more files:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/18.jpg")}),(0,a.yg)("p",null,"We MUST add vmxhdd.img as HDB, and metadata-usb-re.img as HDC. Failing to add these, or adding them in the wrong order, will result in this VM either not loading at all, or to load up with issues. Click on the Network Tab next."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/19.jpg")}),(0,a.yg)("p",null,"The vMX-vCP VM only needs two adapters. One to connect to an out-of-band mgmt switch, and the other to connect to the vMX-vFP VM as our internal interface. I\u2019ve see people name the first port \u201cfxp0\u201d, since that\u2019s what the mgmt port is called, and then use em{port1} so that the second interface is called \u201cem1\u201d, which is the name of the internal interface. You can leave these set as Intel GigE interfaces. Click finish, and here are what your final settings for the vCP VM should look like:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/20.jpg")}),(0,a.yg)("p",null,"Next, we need to create the vFP VM:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/21.jpg")}),(0,a.yg)("p",null,"Again, I just called this the unimaginative name \u201cvMX-vFP\u201d, but you can call it whatever you want."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/22.jpg")}),(0,a.yg)("p",null,"Yes, you actually do need to assign the vFP virtual machine 4GB RAM. You could even go as far as assigning it 6GB RAM."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/23.jpg")}),(0,a.yg)("p",null,"We assign the ",(0,a.yg)("inlineCode",{parentName:"p"},"vFPC-.img")," file to be HDA (we don\u2019t currently need to worry about adding extra disk images for the vFP vm at this time). Go back, and edit the newly created \u201cvMX-vFP\u201d vm, and we\u2019ll make some setting changes:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/24.jpg")}),(0,a.yg)("p",null,"Set this vm to be part of the Router group, confirm that it\u2019s been assigned 4GB RAM, assign it THREE (3) vCPUs, and that we\u2019ll be using telnet. Next, click on the Network tab:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/25.jpg")}),(0,a.yg)("p",null,"I have seen folks say not to use more than 9 interfaces, but with the 16.x series, I\u2019ve had pretty good luck with 12. The first port name was set to \u201cext\u201d, since that will also connect to the OOB mgmt switch, and the name format was set to Eth{port1}, since Eth1 will be part of our internal interface, and connect to \u201cem1\u201d of the vCP vm. Now, notice that I set the interface type to \u201cvirtio-net-pci\u201d. This is very important. When I tried leaving it set to Intel e1000, it would generate lots of error on boot (and besides, you use those adapter types, when running vMX via KVM on an Ubuntu server any way, so it makes sense). "),(0,a.yg)("p",null,"Now, this next part is optional, but you can limit the amount of CPU time that gets allocated to the vFP vm via the Advanced Settings tab:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/26.jpg")}),(0,a.yg)("p",null,"I haven\u2019t tried this part yet, but I have seen people recommend using this option for both the vFP vm of vMX, as well as the vPFE vm of vQFX, so they don\u2019t peg out the vCPUs they\u2019ve been assigned."),(0,a.yg)("p",null,"Here are what the final settings of your vMX-vFP vm should look like:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/29.jpg")}),(0,a.yg)("p",null,"Here\u2019s an example topology, to show you how to connect the two VMs together, as well as connect other VMs to our vMX \u201cdevice\u201d:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/30.jpg")}),(0,a.yg)("p",null,"I used a generic ethernet switch to stand in for an actual OOB mgmt switch. Notice that \u201cfxp0\u201d of the vCP vm and \u201cext\u201d of the vFP vm connect to it. Also note that \u201cem1\u201d of vCP and Eth1 of vFP connect to each other, replicating the internal interface found in physical MX devices."),(0,a.yg)("p",null,"Just like with our legacy single-VM versions of vMX, Eth2 is our ge-0/0/0 interface, Eth3 is ge-0/0/1, and so on\u2026 All of our other topology devices will connect to the vFP vm, not the vCP vm."),(0,a.yg)("p",null,"Now, let\u2019s boot the vCP and vFP VMs up! I won\u2019t sugar coat this, they take a while to load up. The vFP vm loads up first, but only to a point. It will sit and wait on the vCP vm to fully load up, before it can fully load up itself. Here\u2019s a visual hint that the vFP is fully loaded:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/31.jpg")}),(0,a.yg)("p",null,"Once you see those messages, the vFP vm is loaded up. You can even log into it, by using \u201croot/root\u201d, but you\u2019ll be dropped into Wind River Linux, and not Junos"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/32.jpg")}),(0,a.yg)("p",null,"Personally, I wouldn\u2019t really recommend tinkering around in Linux directly. Instead, I\u2019d open up the PFE shell via the vCP, using this command:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"> start shell pfe network fpc0\n")),(0,a.yg)("p",null,"By using this, you can troubleshoot the PFE (in vMX, they actually only virtualized the Lookup (LU) part of the Trio chipset. The other functional blocks were recreated by Juniper, using the software packet processing abilities of Linux, and the DPDK libraries/Framework from Intel (for certain features)"),(0,a.yg)("p",null,"There\u2019s a free Day One book (you just need a free J-net account) called \u201cThis Week: An Expert Packet Walkthrough on the MX 3D Series\u201d that will show you more PFE shell commands. ",(0,a.yg)("a",{parentName:"p",href:"https://www.www.juniper.net/us/en/training/jnbooks/day-one/networking-technologies-series/packet-walkthrough-mx-series/"},"Here\u2019s a direct link to the .pdf file"),"."),(0,a.yg)("p",null,"If you want to read more about this (and MX in general), you can check out the ",(0,a.yg)("a",{parentName:"p",href:"https://www.amazon.com/Juniper-MX-Comprehensive-Guide-Technologies/dp/1491932724"},"MX series 2nd Edition book from O\u2019Reilly")," (you can also read it on Safari Online if you have an account there)."),(0,a.yg)("p",null,"Now, when you log into the vCP vm, it\u2019s \u201croot\u201d with no password, and you\u2019ll be dropped into Junos, just like before:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/33.jpg")}),(0,a.yg)("p",null,"You can see our virtual PIC 0 is Online, and our 10 ge-0/0/x interfaces are \u201cup/up\u201d, but notice that like with vSRX, the virtual PIC 0 doesn\u2019t show how many interfaces that PIC would provide. Weird."),(0,a.yg)("p",null,"Any way, once you\u2019ve reached this point, you can administer it, just like a single-VM version of vMX. ",(0,a.yg)("a",{parentName:"p",href:"https://www.juniper.net/us/en/dm/free-vmx-trial/"},"On this page"),", there is a link to an evaluation license you can add to vMX (there\u2019s also a link that shows how to do it). It gives you 60 days to try out a premium license with 50Mbps throughput. You can also use it without the license, but you\u2019re limited to the base license and 1Mbps."),(0,a.yg)("p",null,"Something I was unable to get working with vMX and GNS3, was having two routing engines running at the same time. It\u2019s entirely possible it\u2019ll work if you build the KVM version of vMX on a dedicated server, but trying to use the metadata-usb-re0 and re1 images as hdc and hdd, respectively still only resulted in vMX using a single routing engine. That means no Virtual Chassis, NSR, or ISSU for us, in a GNS3 topology. "),(0,a.yg)("h2",{id:"importing-the-pre-releases-vqfx-trial-into-gns3"},"Importing the pre-releases VQFX trial into GNS3"),(0,a.yg)("p",null,"This is fairly simple to import into GNS3, even though it is a split VM, just like vMX. There are only currently two versions available: VMware and Vagrant. When I requested access to the trial downloads, here are the files Juniper has available:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/34.jpg")}),(0,a.yg)("p",null,"We only need two files, I just wanted to show that they have two .vmdk files for VMware (we can use them with Qemu/KVM), as well as the same two files, but as Vagrant .box files for Virtualbox."),(0,a.yg)("p",null,"As you can glean from the filenames, these are virtual versions of Juniper QFX 10000 series switches (vQFX thinks it has a single QFX10002-36Q linecard installed). These are high-end switches aimed more at Spine, Core, IP Exchange, Provider Edge, or any other role that calls for high-end switches. Like vMX and physical MX routers, Junos actually runs as a guest OS via KVM, while the host OS is Wind River\u2019s Yocto Linux."),(0,a.yg)("p",null,"Let\u2019s get started by creating the Routing Engine VM for Qemu:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/35.jpg")}),(0,a.yg)("p",null,"Again, I used a pretty unimaginative name for it."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/36.jpg")}),(0,a.yg)("p",null,"I allocated it 1GB RAM, but I\u2019ve heard from a user that he only gave it 512MB RAM, when he runs it in the GNS3-VM. I can confirm that it boots with that amount, but I haven\u2019t really stressed the VMs yet, so I don\u2019t know if it\u2019s going to cause an issue down the road."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/37.jpg")}),(0,a.yg)("p",null,"Next, select the vqfx10k-re-15.1X53-D60 file. I converted the .vmdk files into .qcow2 disk images, but you can run the .vmdk files directly, without needing this extra step."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/38.jpg")}),(0,a.yg)("p",null,"When you edit this newly created VM, add it to the Switches category, and assign it 2 vCPUs. Leave console type as telnet. Click the Network tab next."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/39.jpg")}),(0,a.yg)("p",null,"Unlike with vMX, we\u2019ll actually connect our other topology devices to the Routing Engine (RE) VM, instead of the Packet Forwarding Engine (PFE) VM, which is why I assigned it 15 interfaces."),(0,a.yg)("p",null,"Just like with vMX, Eth0 will connect to an OOB mgmt switch, Eth1 will connect to Eth1 of the PFE VM as an internal interface, and for some reason, we can\u2019t use Eth2 (not sure of why). That means our interface scheme now looks like this:"),(0,a.yg)("p",null,"Eth3 = xe-0/0/0\nEth4 = xe-0/0/1\nEth5 = xe-0/0/2\n\u2026\nEth14 = xe-0/0/11"),(0,a.yg)("p",null,"Once finished, your final VM settings should resemble this:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/40.jpg")}),(0,a.yg)("p",null,"Now we create the vPFE VM:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/41.jpg")}),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/42.jpg")}),(0,a.yg)("p",null,"I only assigned the PFE VM 1GB RAM, as well."),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/43.jpg")}),(0,a.yg)("p",null,"Select the vqfx10k-pfe-20160609-2 file. Again, I had converted the .vmdk file to a .qcow2, but you could likely skip that step, and still run this fine."),(0,a.yg)("p",null,"Now to edit the newly create vQFX-PFE vm:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/44.jpg")}),(0,a.yg)("p",null,"Assign it to the Switches category, double-check it has 1GB RAM and 1 vCPU, and that the console type is telnet. Next, click the Network tab:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/45.jpg")}),(0,a.yg)("p",null,"We only need two interfaces, and we don\u2019t need to alter any other settings. Now, one complaint about vQFX has been that once the PFE vm fully loads, it will peg the vCPU assigned it to 100%. If you click on the Advanced Settings tab, you can limit the percentage of CPU time this VM can use, but it WILL cause it to load even slower than it already does."),(0,a.yg)("p",null,"Now, let\u2019s fire up our vQFX \u201cdevice\u201d. Here\u2019s a sample topology, just to show how to connect the VMs together:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/46.jpg")}),(0,a.yg)("p",null,"Just like vMX, the Eth0 interfaces connect to the OOB mgmt switch, and Eth1 on each VM connect to each other, to be our \u201cinternal interface\u201d. Now, unlike vMX, not only do other topology devices connect to the RE vm, instead of the PFE vm ( RE is like vCP, and PFE is like vFP), so that\u2019s backwards, but also note that we have to use Eth3 as the first switchport of our vQFX \u201cdevice\u201d, instead of Eth2, like we would with vMX. "),(0,a.yg)("p",null,"Now, let\u2019s start both vQFX VMs up. I\u2019m going to warn you, that even with the settings I assigned it, vQFX will take about 15-20 minutes to fully load, largely due to the PFE VM. One other thing that\u2019s a bit odd, is that the console window for the PFE vm will just sit at \u201cLoading Linux ..\u201d"),(0,a.yg)("p",null," I thought it was an issue at first, but it turns out that it\u2019s not. You can safely ignore it. . In fact, you don\u2019t really even need to open a terminal window for the PFE VM, because it displays nothing but that message, and we can always open a shell for the PFE via the RE vm, just like we can do with vMX. "),(0,a.yg)("p",null,"The RE vm will drop us to the Junos prompt, like we\u2019re used to. The only way to really tell that the PFE is fully loaded, is to login with \u201croot/Juniper\u201d, type \u201ccli\u201d (minus the quotes), and then run these commands:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"root> show chassis fpc pic-status\nroot > show interfaces xe-* terse.\n")),(0,a.yg)("p",null,"Here\u2019s what it looks like, when we\u2019re ready to go:"),(0,a.yg)("img",{alt:"screenshot",src:(0,s.A)("img/how-to-guides/importing-vmx-and-vqfx-into-gns3/47.jpg")}),(0,a.yg)("p",null,"Notice that it thinks we\u2019re using the QFX10002-36Q linecard, and PIC 0 claims it supports up to 48 10G ports. I\u2019ve never tried that many, just xe-0/0/0 - xe-0/0/11, which I know work. "),(0,a.yg)("p",null,"Now, since we had to use a password to login, you can skip the step of creating a system password. We can commit configuration changes right away. One thing I do want you to be aware of, is that all the switchports are set to \u201cdhcp\u201d by default. You can turn this off, by running"),(0,a.yg)("p",null,"Deactivate interfaces xe-0/0/0 unit 0 family inet dhcp"),(0,a.yg)("p",null,"(note: you\u2019d have to do this on all switchports you want to assign an ip address to, directly)."),(0,a.yg)("p",null,"If you want to learn more about the QFX-10K series in general, you can either purchase the ",(0,a.yg)("a",{parentName:"p",href:"https://www.amazon.com/Juniper-QFX10000-Comprehensive-Building-Next-Generation/dp/1491922257"},"O\u2019Reilly QFX10000 series book"),", or read it on Safari Online (if you have an account). There\u2019s nothing on vQFX (especially since it\u2019s still not production-ready), but it likely will in a 2nd edition, like the MX series book."),(0,a.yg)("h2",{id:"how-to-ask-juniper-for-access-to-download-the-60-day-trial-of-vmx-and-the-pre-releases-trial-of-vqfx"},"How to ask Juniper for access to download the 60-day trial of VMX, and the pre-releases trial of VQFX"),(0,a.yg)("p",null,"For the vQFX trial, ",(0,a.yg)("a",{parentName:"p",href:"https://www.juniper.net/us/en/dm/free-vqfx-trial/"},"click on this link"),". Next, click on the Customer Care link, and for \u201cissue type\u201d, select \u201cAccess to software downloads\u201d. In the Description box below that, type out \u201cQFX10000 trial\u201d, and fill out the remaining fields. A Juniper customer care rep should contact you via email in a few days. They seem to prefer it, if you use a company email address, but you can sometimes explain it away, if you are a freelance network contractor. "),(0,a.yg)("p",null,"For the vMX 60-day trial, ",(0,a.yg)("a",{parentName:"p",href:"https://www.juniper.net/us/en/dm/free-vmx-trial/"},"click on this link"),". You click on the same Customer Care link, and fill out the form just like before, but you put \u201cvMX 60-day trial\u201d in the Description box. Fill out the rest of the information as before, and you should get an email from Juniper customer care in a few days."),(0,a.yg)("p",null,"There\u2019s also a link on that first vMX page, with a freebie 60-day eval license. You can add it by running this command:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"}," > request system add license terminal\n")),(0,a.yg)("p",null,"Then, just copy and paste that freebie license key into the cli, and use Ctrl+D to exit. That\u2019ll enable the license, and start the 60-day countdown. You can view license info with this:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"> show system license.\n")),(0,a.yg)("p",null,"There\u2019s currently no trial license for vQFX, since it\u2019s still pre-release, just like we didn\u2019t need one for the old single-vm vMX."),(0,a.yg)("p",null,"I have no idea if these trial downloads are only available to U.S. residents, or not."),(0,a.yg)("p",null,"[EDIT]"),(0,a.yg)("p",null,"With the release of vMX 17.2R1.13, and the latest vqfx10k routing engine VM, there are a few things you need to be aware of:"),(0,a.yg)("p",null,"vMX 17.2R1.13 - Firstly, the chassis will attempt to auto-update the system image, and it relentlessly spams the console. You can disable this by using:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"root# delete chassis auto-image-upgrade\n")),(0,a.yg)("p",null,"Secondly, every interface has DHCP enabled by default. You can correct this by running this by deleting dhcp from an interface. For example, to remove it from ge-0/0/0, you\u2019d use this: "),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"delete interfaces ge-0/0/0.0 family inet dhcp\n")),(0,a.yg)("p",null,"Without doing the above, you won\u2019t be able to assign an IP address to an interface. "),(0,a.yg)("p",null,"Just be aware that you\u2019ll need to assign the system a root-authentication password (as usual), in order to use \u201ccommit\u201d, so that these changes apply. The commit process will fail without a system password set."),(0,a.yg)("p",null,"To set a system password, run this command:"),(0,a.yg)("p",null,"[edit]"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"root# set system root-authentication plain-text-password\nNew password:\nRetype new password:\n")),(0,a.yg)("p",null,"There are also two other versions of 17.2R1.13 available. The \u201climited\u201d version is pointless, since you cannot apply the trial license to it, so you\u2019ll be limited to the same three features that you have after the 90-day trial license expires. There\u2019s also a file named \u201cnested\u201d, but from my testing, it seems to only be a VM of the virtual control-plane. It only loads up WindRiver linux, so I\u2019d ignore it, too. "),(0,a.yg)("p",null,"Just stick with the KVM or ESXi releases of 17.2R1.13 (and apply the trial license), and you\u2019ll be fine."),(0,a.yg)("p",null,"2) vqfx10k-re-15_X53-D63:"),(0,a.yg)("p",null,"The KVM version of the latest vqfx10k routing engine VM (vqfx10k-re-15_X53-D63) is broken, and will crash within minutes of trying to load it. There ",(0,a.yg)("em",{parentName:"p"},"is")," a workaround, but it requires 7zip. "),(0,a.yg)("p",null,"What you\u2019ll need to do, is to download the Vagrant .box file of the new routing engine VM. Once it\u2019s downloaded, you\u2019ll need to use 7zip to extract the .box file. You\u2019ll end up with a file without an extension. You need to extract that file with 7zip as well, which will output a file named \u201cpacker-virtualbox-ovf-1491593710-disk001.vmdk\u201d. Feel free to rename it whatever you wish, making sure to leave the .vmdk extension alone. You can then use that file for HDA in your vQFX RE VM. I\u2019ve tested it, and it works."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/84f53706.f9341085.js b/build/assets/js/84f53706.f9341085.js new file mode 100644 index 00000000..74962221 --- /dev/null +++ b/build/assets/js/84f53706.f9341085.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1488],{5680:(e,t,n)=>{n.d(t,{xA:()=>c,yg:()=>d});var i=n(6540);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}var g=i.createContext({}),l=function(e){var t=i.useContext(g),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return i.createElement(g.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var n=e.components,s=e.mdxType,a=e.originalType,g=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),u=l(n),p=s,d=u["".concat(g,".").concat(p)]||u[p]||h[p]||a;return n?i.createElement(d,o(o({ref:t},c),{},{components:n})):i.createElement(d,o({ref:t},c))}));function d(e,t){var n=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var a=n.length,o=new Array(a);o[0]=p;var r={};for(var g in t)hasOwnProperty.call(t,g)&&(r[g]=t[g]);r.originalType=e,r[u]="string"==typeof e?e:s,o[1]=r;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>g,metadata:()=>c,toc:()=>h});var i=n(8168),s=n(8587),a=(n(6540),n(5680)),o=n(6025),r=["components"],g={id:"switching-and-gns3",title:"Switching and GNS3",sidebar_label:"Switching and GNS3"},l=void 0,c={unversionedId:"using-gns3/beginners/switching-and-gns3",id:"using-gns3/beginners/switching-and-gns3",title:"Switching and GNS3",description:"Introduction",source:"@site/docs/using-gns3/beginners/switching-and-gns3.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/switching-and-gns3",permalink:"/docs/using-gns3/beginners/switching-and-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/switching-and-gns3.md",tags:[],version:"current",frontMatter:{id:"switching-and-gns3",title:"Switching and GNS3",sidebar_label:"Switching and GNS3"},sidebar:"someSidebar",previous:{title:"GNS3 Styles",permalink:"/docs/using-gns3/beginners/gns3-styles"},next:{title:"The console terminal",permalink:"/docs/using-gns3/beginners/the-console-terminal"}},u={},h=[{value:"Introduction",id:"introduction",level:2},{value:"Cisco Switches",id:"cisco-switches",level:2},{value:"IOSvL2",id:"iosvl2",level:3},{value:"Etherswitch",id:"etherswitch",level:3},{value:"IOU",id:"iou",level:3},{value:"Non-Cisco",id:"non-cisco",level:2},{value:"Unmanaged switching: GNS3 built in switch",id:"unmanaged-switching-gns3-built-in-switch",level:3},{value:"Open vSwitch",id:"open-vswitch",level:3},{value:"Others",id:"others",level:3},{value:"Using a c3725 as an \u201cEtherswitch Router\u201d",id:"using-a-c3725-as-an-etherswitch-router",level:3}],p={toc:h};function d(e){var t=e.components,n=(0,s.A)(e,r);return(0,a.yg)("wrapper",(0,i.A)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h2",{id:"introduction"},"Introduction"),(0,a.yg)("p",null,"One common misconception about GNS3 is that GNS3 does not support advanced switching options. While this was true in the past, GNS3 now supports options such as:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Etherchannel"),(0,a.yg)("li",{parentName:"ul"},"PVST+"),(0,a.yg)("li",{parentName:"ul"},"RPVST+"),(0,a.yg)("li",{parentName:"ul"},"MST"),(0,a.yg)("li",{parentName:"ul"},"Port Security"),(0,a.yg)("li",{parentName:"ul"},"DTP"),(0,a.yg)("li",{parentName:"ul"},"And many others.")),(0,a.yg)("p",null,"Complimentary campus technologies such as HSRP are also supported.\nYour selection of image and platform will affect what is possible. Options include:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Cisco IOSvL2"),(0,a.yg)("li",{parentName:"ul"},"Etherswitch module"),(0,a.yg)("li",{parentName:"ul"},"IOU"),(0,a.yg)("li",{parentName:"ul"},"GNS3 built in switch"),(0,a.yg)("li",{parentName:"ul"},"Openvswitch"),(0,a.yg)("li",{parentName:"ul"},"Others")),(0,a.yg)("h2",{id:"cisco-switches"},"Cisco Switches"),(0,a.yg)("h3",{id:"iosvl2"},"IOSvL2"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Recommended_switching_platform")," Cisco VIRL IOSvL2"),(0,a.yg)("p",null,"With a Cisco VIRL IOSvL2 image, you can configure and test a wide range of advanced switching features. Go here for a full list:"),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://learningnetwork.cisco.com/docs/DOC-30404"},"https://learningnetwork.cisco.com/docs/DOC-30404")),(0,a.yg)("p",null,"This is the official Cisco way of emulating a switch."),(0,a.yg)("h3",{id:"etherswitch"},"Etherswitch"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Basic_switching")," Etherswitch module"),(0,a.yg)("p",null,"While an Etherswitch module does not support advanced layer 2 features, it does allow you to configure basic VLANs, Spanning Tree and other options."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Instructions on configuring a c3725 router to act as an \u201cetherswitch router\u201d (or \u201cswouter\u201d), with a few basic instructions are found at the bottom of this document")),(0,a.yg)("h3",{id:"iou"},"IOU"),(0,a.yg)("p",null,"IOU is a less resource intensive alternative to IOSvL2, but the images are not publicly available. You will need to get them from someone who works at Cisco. In addition, as this is a Cisco internal tool, IOU mages may be buggy and no support is available."),(0,a.yg)("h2",{id:"non-cisco"},"Non-Cisco"),(0,a.yg)("h3",{id:"unmanaged-switching-gns3-built-in-switch"},"Unmanaged switching: GNS3 built in switch"),(0,a.yg)("p",null,"Use this if all you need is a basic switch to connect devices in a GNS3 topology. You cannot configure this switch through a CLI, but you can set the number of ports supported on the switch and other basic settings."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"It\u2019s not running a switch OS, everything is emulated from scratch. This mean some protocol could be buggy. Use it only for basic operations")),(0,a.yg)("h3",{id:"open-vswitch"},"Open vSwitch"),(0,a.yg)("p",null,"By leveraging GNS3 support for Docker, you can now add Open vSwitch to your GNS3 topologies. In order to do that, use this template:"),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/appliance/open-vswitch"},"https://gns3.com/marketplace/appliance/open-vswitch")),(0,a.yg)("h3",{id:"others"},"Others"),(0,a.yg)("p",null,"You can also use switches from other vendors such as Cumulus, Extreme Networks and many more."),(0,a.yg)("h3",{id:"using-a-c3725-as-an-etherswitch-router"},"Using a c3725 as an \u201cEtherswitch Router\u201d"),(0,a.yg)("p",null,"This is a rather simple process, but be aware that your options for configuring Cisco switching while using a c3640, c3660, c3725, and c3745 for this are quite limited. ",(0,a.yg)("a",{parentName:"p",href:"../../emulators/cisco-ios-images-for-dynamips#cisco-catalyst-switches"},"Refer to the switching section of this document to see what features will be unavailable to you"),"."),(0,a.yg)("p",null,"This example will use a c3725 router IOS image, but the same steps apply if using the other three platforms listed above."),(0,a.yg)("p",null,"First, click ",(0,a.yg)("strong",{parentName:"p"},"Edit->Preferences->IOS Routers->New")," in the GNS3 GUI."),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/1.jpg")}),(0,a.yg)("p",null,"Pick ",(0,a.yg)("strong",{parentName:"p"},"run this IOS image via the local computer"),", and click ",(0,a.yg)("strong",{parentName:"p"},"Next >"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/2.jpg")}),(0,a.yg)("p",null,"(You can also run this image via the GNS3 VM)\nSelect ",(0,a.yg)("strong",{parentName:"p"},"New Image"),", and click ",(0,a.yg)("strong",{parentName:"p"},"Browse")," to locate the image in your filesystem (you must supply your own!)."),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/3.jpg")}),(0,a.yg)("p",null,"Select the image file, and click ",(0,a.yg)("strong",{parentName:"p"},"Open"),": "),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/4.jpg")}),(0,a.yg)("p",null,"You\u2019ll be asked if you\u2019d like to decompress this image. Choose ",(0,a.yg)("strong",{parentName:"p"},"Yes"),", as it will load faster, instead of decompressing every time you start the image:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/5.jpg")}),(0,a.yg)("p",null,"Click ",(0,a.yg)("strong",{parentName:"p"},"Next >")," to continue:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/6.jpg")}),(0,a.yg)("p",null," On the screen where you\u2019re asked to name the router, select the ",(0,a.yg)("strong",{parentName:"p"},"\u201cThis is an Etherswitch router\u201d")," option (this is important!). It will automatically name the device ",(0,a.yg)("strong",{parentName:"p"},"Etherswitch router"),", and place into the ",(0,a.yg)("strong",{parentName:"p"},"Switches")," device category, instead of ",(0,a.yg)("strong",{parentName:"p"},"Routers"),". Click ",(0,a.yg)("strong",{parentName:"p"},"Next >"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/7.jpg")}),(0,a.yg)("p",null,"On the next screen, go ahead and increase the minimum amount of RAM to 256MB, and click ",(0,a.yg)("strong",{parentName:"p"},"Next >"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/8.jpg")}),(0,a.yg)("p",null,"Notice that slot 0 is still prepopulated with the GT96100-FE Dual FastEthernet adapter, and slot 1 will have the NM-16ESW module preinstalled. Never attempt to replace that GT96100-FE adapter with a switch module, as it will not work. You can add a second NM-16ESW,a NM-1FE-TX single FastEthernet adapter, or an NM-4T serial port adapter to slot 2."),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/9.jpg")}),(0,a.yg)("p",null,"Click ",(0,a.yg)("strong",{parentName:"p"},"Next >"),":"),(0,a.yg)("p",null,"You can add WIC modules on the next page, consisting of either WIC-1T or WIC-2T serial port adapters. It\u2019s not a bad idea to add a few serial WICs to this Etherswitch Router, but you can skip this step if you choose. Whichever you decide, click ",(0,a.yg)("strong",{parentName:"p"},"Next >")," to continue:."),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/10.jpg")}),(0,a.yg)("p",null,"This device will should already have an Idle-PC value listed. If so, click ",(0,a.yg)("strong",{parentName:"p"},"Finish"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/11.jpg")}),(0,a.yg)("p",null,"If the IOS image you are using does not also list an ",(0,a.yg)("strong",{parentName:"p"},"Idle-PC")," value, then click the ",(0,a.yg)("strong",{parentName:"p"},"Idle-PC finder")," button:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/12.jpg")}),(0,a.yg)("p",null,"Without having a suitable Idle-PC value for this device, it can consume 100% of the processing time of a CPU core, while running. With an Idle-PC value defined, this will not be the case. "),(0,a.yg)("p",null,"It will take several seconds (depending on the speed of your computer) for the ",(0,a.yg)("strong",{parentName:"p"},"Idle-PC Finder")," to determine a suitable ",(0,a.yg)("strong",{parentName:"p"},"Idle-PC")," value:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/13.jpg")}),(0,a.yg)("p",null,"Once an Idle-PC value is found, click ",(0,a.yg)("strong",{parentName:"p"},"OK")," to close the pop up window:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/14.jpg")}),(0,a.yg)("p",null,"Click ",(0,a.yg)("strong",{parentName:"p"},"Finish")," to complete the import and set up process:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/15.jpg")}),(0,a.yg)("p",null,"Back at the main ",(0,a.yg)("strong",{parentName:"p"},"IOS router template")," page, ensure that the Etherswitch router has at least ",(0,a.yg)("strong",{parentName:"p"},"1MB")," specified for ",(0,a.yg)("strong",{parentName:"p"},"PCMCIA disk0"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/16.jpg")}),(0,a.yg)("p",null,"Click ",(0,a.yg)("strong",{parentName:"p"},"OK")," to return to the main GNS3 GUI:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/17.jpg")}),(0,a.yg)("p",null,"When you add this Etherswitch Router to a topology in the ",(0,a.yg)("strong",{parentName:"p"},"Workspace"),", there is something you must be aware of. The first two FastEthernet ports (fa0/0 and fa0/1) provided by that GT96100-FE are routed ports only! This is by design, and they cannot be used as switchports. If you left the default NM-16ESW adapter installed in slot 1, the switchports will be interfaces fa1/0 and go through fa1/15: "),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/18.jpg")}),(0,a.yg)("p",null,"With that out of the way, let\u2019s see a few of the configuration quirks you\u2019ll want to be aware of. When the Etherswitch router boots up, you\u2019ll see that you either create vlans using \u201cvlan database\u201d in exec mode, or the \u201cva ","[#]","\u201d macro in global config mode:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/19.jpg")}),(0,a.yg)("p",null,"Here\u2019s an example of creating vlans 10 and 20 in vlan database:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/20.jpg")}),(0,a.yg)("p",null,"We can\u2019t use the \u201csh vlan\u201d command, but we can either use the \u201csh vlan-switch brief\u201d command or the \u201cvl\u201d macro in exec mode:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/21.jpg")}),(0,a.yg)("p",null,"Despite the router saying to create/delete VLANs in config mode instead of vlan database, both of those macros will take you out to the vlan database, and then return you to global config mode automatically."),(0,a.yg)("p",null,"\u201cva ","[#]","\u201d in global config mode will add a vlan:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/22.jpg")}),(0,a.yg)("p",null,"While \u201cvd ","[#]","\u201d in global config mode will delete a vlan:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/using-gns3/beginners/switching-and-gns3/23.jpg")}),(0,a.yg)("p",null,"These are just the immediate quirks you\u2019ll need to get accustomed to, when using these Etherswitch routers, as opposed to the IOSvL2 multilayer switch VM from Cisco VIRL. Again, for a full list of what these Etherswitch routers are and are not capable of, please refer to the link I posted at the beginning of this section. "),(0,a.yg)("p",null,"If VIRL isn\u2019t an option, but you can use the GNS3 VM in VMware Workstation Player/Pro/Fusion, ESXi, or even running GNS3 natively in Linux, there are multiple non-Cisco vendors with switch VMs available. Some merely require registration to download, like Arista and their vEOS switch VM, Cumulus Networks and their Cumulus VX VM, others like Extreme Networks make their virtual EXOS and VOSS VMs available for free on Github, and Juniper does have a vQFX-10K switch VM, but you must request access from a service rep to get the 90 day trial. Only vEOS comes close to having a CLI comparable to IOS, and obviously not every feature will be functional on these VMs, and some have steep system requirements, but they are an alternate option."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/8913.3c8d8e29.js b/build/assets/js/8913.3c8d8e29.js new file mode 100644 index 00000000..69265755 --- /dev/null +++ b/build/assets/js/8913.3c8d8e29.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8913],{8913:(s,c,e)=>{e.r(c)}}]); \ No newline at end of file diff --git a/build/assets/js/89f8e59d.bef31024.js b/build/assets/js/89f8e59d.bef31024.js new file mode 100644 index 00000000..2d138f27 --- /dev/null +++ b/build/assets/js/89f8e59d.bef31024.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8797],{5680:(e,t,n)=>{n.d(t,{xA:()=>m,yg:()=>f});var r=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},m=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(n),g=a,f=u["".concat(s,".").concat(g)]||u[g]||c[g]||o;return n?r.createElement(f,i(i({ref:t},m),{},{components:n})):r.createElement(f,i({ref:t},m))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>m,contentTitle:()=>s,default:()=>g,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var r=n(8168),a=n(8587),o=(n(6540),n(5680)),i=["components"],l={id:"port-name-formatting",title:"Port name formatting",sidebar_label:"Port name formatting"},s=void 0,p={unversionedId:"using-gns3/advanced/port-name-formatting",id:"using-gns3/advanced/port-name-formatting",title:"Port name formatting",description:"Some nodes (like QEMU VMs) will allow you to personalize the name of its ports, in order to match the name of the interfaces inside the emulator.",source:"@site/docs/using-gns3/advanced/port-name-formatting.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/port-name-formatting",permalink:"/docs/using-gns3/advanced/port-name-formatting",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/port-name-formatting.md",tags:[],version:"current",frontMatter:{id:"port-name-formatting",title:"Port name formatting",sidebar_label:"Port name formatting"},sidebar:"someSidebar",previous:{title:"Create a new version for an appliance",permalink:"/docs/using-gns3/advanced/create-a-new-version-for-an-appliance"},next:{title:"Configuration transfer to QEMU VMs",permalink:"/docs/using-gns3/advanced/configuration-transfer-qemu-vms"}},m={},u=[{value:"Simple Syntax",id:"simple-syntax",level:2},{value:"Use Segments",id:"use-segments",level:2}],c={toc:u};function g(e){var t=e.components,n=(0,a.A)(e,i);return(0,o.yg)("wrapper",(0,r.A)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"Some nodes (like QEMU VMs) will allow you to personalize the name of its ports, in order to match the name of the interfaces inside the emulator."),(0,o.yg)("h2",{id:"simple-syntax"},"Simple Syntax"),(0,o.yg)("p",null,"The first set of curly brackets (",(0,o.yg)("inlineCode",{parentName:"p"},"{}"),") will be replaced by the interface number\nFor example: ",(0,o.yg)("inlineCode",{parentName:"p"},"eth{}")," will give:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"eth0"),(0,o.yg)("li",{parentName:"ul"},"eth1"),(0,o.yg)("li",{parentName:"ul"},"eth2")),(0,o.yg)("p",null,"A more verbose name format, like ",(0,o.yg)("inlineCode",{parentName:"p"},"eth{port0}")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"eth{0}"),", will have the same effect."),(0,o.yg)("h2",{id:"use-segments"},"Use Segments"),(0,o.yg)("p",null,"Segments allow you to split your interface in multiple ports\nFor example, here is ",(0,o.yg)("inlineCode",{parentName:"p"},"Ethernet{segment0}/{port0}")," with a specified segment size of 3:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Ethernet0/0"),(0,o.yg)("li",{parentName:"ul"},"Ethernet0/1"),(0,o.yg)("li",{parentName:"ul"},"Ethernet0/2"),(0,o.yg)("li",{parentName:"ul"},"Ethernet1/0"),(0,o.yg)("li",{parentName:"ul"},"Ethernet1/1")),(0,o.yg)("p",null,"You can also change the start number.\nFor example, this is ",(0,o.yg)("inlineCode",{parentName:"p"},"Ethernet{segment1}/{port1}")," with a segment size of 3:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Ethernet1/1"),(0,o.yg)("li",{parentName:"ul"},"Ethernet1/2"),(0,o.yg)("li",{parentName:"ul"},"Ethernet1/3"),(0,o.yg)("li",{parentName:"ul"},"Ethernet2/1"),(0,o.yg)("li",{parentName:"ul"},"Ethernet2/2")),(0,o.yg)("p",null,"This work from ",(0,o.yg)("inlineCode",{parentName:"p"},"port0")," to ",(0,o.yg)("inlineCode",{parentName:"p"},"port9"),". If you need a bigger range, feel free to ask us."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/90d7c7d0.45885324.js b/build/assets/js/90d7c7d0.45885324.js new file mode 100644 index 00000000..c2a3781e --- /dev/null +++ b/build/assets/js/90d7c7d0.45885324.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9729],{5680:(e,t,r)=>{r.d(t,{xA:()=>c,yg:()=>p});var o=r(6540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),u=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},c=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(r),g=n,p=d["".concat(s,".").concat(g)]||d[g]||h[g]||i;return r?o.createElement(p,a(a({ref:t},c),{},{components:r})):o.createElement(p,a({ref:t},c))}));function p(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,a[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>g,frontMatter:()=>l,metadata:()=>u,toc:()=>d});var o=r(8168),n=r(8587),i=(r(6540),r(5680)),a=["components"],l={id:"general-faq",title:"General FAQ",sidebar_label:"General FAQ"},s=void 0,u={unversionedId:"troubleshooting-faq/general-faq",id:"troubleshooting-faq/general-faq",title:"General FAQ",description:"IOU",source:"@site/docs/troubleshooting-faq/general-faq.md",sourceDirName:"troubleshooting-faq",slug:"/troubleshooting-faq/general-faq",permalink:"/docs/troubleshooting-faq/general-faq",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/general-faq.md",tags:[],version:"current",frontMatter:{id:"general-faq",title:"General FAQ",sidebar_label:"General FAQ"},sidebar:"someSidebar",previous:{title:"Troubleshoot GNS3",permalink:"/docs/troubleshooting-faq/troubleshoot-gns3"},next:{title:"Where do I get IOS images?",permalink:"/docs/troubleshooting-faq/where-do-i-get-ios-images"}},c={},d=[{value:"IOU",id:"iou",level:2},{value:"What is iourc.txt?",id:"what-is-iourctxt",level:3},{value:"What is iouyap?",id:"what-is-iouyap",level:3},{value:"GNS3 VM",id:"gns3-vm",level:2},{value:"What is the IOUVM?",id:"what-is-the-iouvm",level:3},{value:"What is the GNS3 VM?",id:"what-is-the-gns3-vm",level:3},{value:"Should I use the GNS3 VM?",id:"should-i-use-the-gns3-vm",level:3}],h={toc:d};function g(e){var t=e.components,r=(0,n.A)(e,a);return(0,i.yg)("wrapper",(0,o.A)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"iou"},"IOU"),(0,i.yg)("h3",{id:"what-is-iourctxt"},"What is iourc.txt?"),(0,i.yg)("p",null,"It\u2019s your IOU licence file. This file is provided by Cisco you can\u2019t get it from other sources."),(0,i.yg)("h3",{id:"what-is-iouyap"},"What is iouyap?"),(0,i.yg)("p",null,"It\u2019s a program bridging your iou to the GNS3 network. It\u2019s removed in GNS3 2.0 and replace by ubridge."),(0,i.yg)("h2",{id:"gns3-vm"},"GNS3 VM"),(0,i.yg)("h3",{id:"what-is-the-iouvm"},"What is the IOUVM?"),(0,i.yg)("p",null,"The IOUVM was the VM provided with GNS3 1.3 in order to run IOU devices. Starting with 1.4 it\u2019s replaced by the GNS3 VM."),(0,i.yg)("h3",{id:"what-is-the-gns3-vm"},"What is the GNS3 VM?"),(0,i.yg)("p",null,"The GNS3 VM is a requirement if you want to run Qemu based devices on Windows or Mac OS. It is a virtual machine that you import into VMware Workstation (recommended) or VirtualBox on your local PC when running a local version of the GNS3 VM. It can also be used in a distriubted environment where you run the client software (GNS3-all-in-one) on your local PC and the GNS3 VM on a Hypervisor such as ESXi or the cloud."),(0,i.yg)("h3",{id:"should-i-use-the-gns3-vm"},"Should I use the GNS3 VM?"),(0,i.yg)("p",null,"If all you are going to create are basic GNS3 topologies consisting of Cisco routers using an IOS image, than the GNS3 VM is not required. In this case you would only need the GNS3 all-in-one software which you install on your local PC. This is called legacy mode or Dynamips mode."),(0,i.yg)("p",null,"If you want to run IOSv images, IOU images, ASAv or create complex network topologies, the GNS3 VM is recommended and is in some cases required."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Recommendation")," Use the GNS3 VM in most cases."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/935f2afb.1f1eb7e0.js b/build/assets/js/935f2afb.1f1eb7e0.js new file mode 100644 index 00000000..8d47c209 --- /dev/null +++ b/build/assets/js/935f2afb.1f1eb7e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"someSidebar":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"What is GNS3?","href":"/docs/","docId":"getting-started/what-is-gns3"},{"type":"category","label":"Installation","items":[{"type":"link","label":"Windows","href":"/docs/getting-started/installation/windows","docId":"getting-started/installation/windows"},{"type":"link","label":"Mac","href":"/docs/getting-started/installation/mac","docId":"getting-started/installation/mac"},{"type":"link","label":"Linux","href":"/docs/getting-started/installation/linux","docId":"getting-started/installation/linux"},{"type":"link","label":"ESXi","href":"/docs/getting-started/installation/esxi","docId":"getting-started/installation/esxi"},{"type":"link","label":"Remote Server","href":"/docs/getting-started/installation/remote-server","docId":"getting-started/installation/remote-server"},{"type":"link","label":"Download the GNS3 VM","href":"/docs/getting-started/installation/download-gns3-vm","docId":"getting-started/installation/download-gns3-vm"},{"type":"link","label":"Download for Windows 32-bit","href":"/docs/getting-started/installation/download-32-bit","docId":"getting-started/installation/download-32-bit"},{"type":"link","label":"One GNS3 server, multiple clients","href":"/docs/getting-started/installation/one-server-multiple-clients","docId":"getting-started/installation/one-server-multiple-clients"},{"type":"link","label":"Upgrade GNS3","href":"/docs/getting-started/installation/upgrade-gns3","docId":"getting-started/installation/upgrade-gns3"},{"type":"link","label":"GNS3 on Equinix","href":"/docs/getting-started/installation/gns3-on-equinix","docId":"getting-started/installation/gns3-on-equinix"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Setup wizard for local server","href":"/docs/getting-started/setup-wizard-local-server","docId":"getting-started/setup-wizard-local-server"},{"type":"link","label":"Setup wizard for GNS3 VM","href":"/docs/getting-started/setup-wizard-gns3-vm","docId":"getting-started/setup-wizard-gns3-vm"},{"type":"link","label":"Your first GNS3 topology","href":"/docs/getting-started/your-first-gns3-topology","docId":"getting-started/your-first-gns3-topology"},{"type":"link","label":"Your first Cisco topology","href":"/docs/getting-started/your-first-cisco-topology","docId":"getting-started/your-first-cisco-topology"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Using GNS3","items":[{"type":"category","label":"Beginners","items":[{"type":"link","label":"The GNS3 GUI","href":"/docs/using-gns3/beginners/the-gns3-gui","docId":"using-gns3/beginners/the-gns3-gui"},{"type":"link","label":"Change node symbol","href":"/docs/using-gns3/beginners/change-node-symbol","docId":"using-gns3/beginners/change-node-symbol"},{"type":"link","label":"GNS3 Styles","href":"/docs/using-gns3/beginners/gns3-styles","docId":"using-gns3/beginners/gns3-styles"},{"type":"link","label":"Switching and GNS3","href":"/docs/using-gns3/beginners/switching-and-gns3","docId":"using-gns3/beginners/switching-and-gns3"},{"type":"link","label":"The console terminal","href":"/docs/using-gns3/beginners/the-console-terminal","docId":"using-gns3/beginners/the-console-terminal"},{"type":"link","label":"Install an appliance from the GNS3 Marketplace","href":"/docs/using-gns3/beginners/install-from-marketplace","docId":"using-gns3/beginners/install-from-marketplace"},{"type":"link","label":"Import GNS3 appliance","href":"/docs/using-gns3/beginners/import-gns3-appliance","docId":"using-gns3/beginners/import-gns3-appliance"},{"type":"link","label":"Link Control","href":"/docs/using-gns3/beginners/link-control","docId":"using-gns3/beginners/link-control"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Advanced","items":[{"type":"link","label":"Connect GNS3 to the Internet","href":"/docs/using-gns3/advanced/connect-gns3-internet","docId":"using-gns3/advanced/connect-gns3-internet"},{"type":"link","label":"The NAT node","href":"/docs/using-gns3/advanced/the-nat-node","docId":"using-gns3/advanced/the-nat-node"},{"type":"link","label":"Built-in hubs and switches","href":"/docs/using-gns3/advanced/hubs-and-switches","docId":"using-gns3/advanced/hubs-and-switches"},{"type":"link","label":"Special IP addresses in GNS3","href":"/docs/using-gns3/advanced/special-ip-addresses","docId":"using-gns3/advanced/special-ip-addresses"},{"type":"link","label":"Move from IOUVM to GNS3 VM","href":"/docs/using-gns3/advanced/move-from-iouvm-gns3-vm","docId":"using-gns3/advanced/move-from-iouvm-gns3-vm"},{"type":"link","label":"Settings profiles","href":"/docs/using-gns3/advanced/settings-profiles","docId":"using-gns3/advanced/settings-profiles"},{"type":"link","label":"Create a new version for an appliance","href":"/docs/using-gns3/advanced/create-a-new-version-for-an-appliance","docId":"using-gns3/advanced/create-a-new-version-for-an-appliance"},{"type":"link","label":"Port name formatting","href":"/docs/using-gns3/advanced/port-name-formatting","docId":"using-gns3/advanced/port-name-formatting"},{"type":"link","label":"Configuration transfer to QEMU VMs","href":"/docs/using-gns3/advanced/configuration-transfer-qemu-vms","docId":"using-gns3/advanced/configuration-transfer-qemu-vms"}],"collapsed":true,"collapsible":true},{"type":"category","label":"GNS3 Administration","items":[{"type":"link","label":"GNS3 server configuration file","href":"/docs/using-gns3/administration/gns3-server-configuration-file","docId":"using-gns3/administration/gns3-server-configuration-file"},{"type":"link","label":"Running the GNS3 server as a daemon","href":"/docs/using-gns3/administration/running-gns3-server-as-daemon","docId":"using-gns3/administration/running-gns3-server-as-daemon"},{"type":"link","label":"GNS3 Security","href":"/docs/using-gns3/administration/gns3-security","docId":"using-gns3/administration/gns3-security"},{"type":"link","label":"Client server SSL encryption","href":"/docs/using-gns3/administration/client-server-ssl-encryption","docId":"using-gns3/administration/client-server-ssl-encryption"},{"type":"link","label":"Scale GNS3","href":"/docs/using-gns3/administration/scale-gns3","docId":"using-gns3/administration/scale-gns3"}],"collapsed":true,"collapsible":true},{"type":"category","label":"GNS3 Design","items":[{"type":"link","label":"Architecture","href":"/docs/using-gns3/design/architecture","docId":"using-gns3/design/architecture"},{"type":"link","label":"Why does GNS3 use UUIDs?","href":"/docs/using-gns3/design/why-gns3-uses-uuid","docId":"using-gns3/design/why-gns3-uses-uuid"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Emulators","items":[{"type":"link","label":"Which emulator should I use?","href":"/docs/emulators/which-emulators-should-i-use","docId":"emulators/which-emulators-should-i-use"},{"type":"link","label":"Cisco IOS images for Dynamips","href":"/docs/emulators/cisco-ios-images-for-dynamips","docId":"emulators/cisco-ios-images-for-dynamips"},{"type":"link","label":"Non-Native IOU for Windows and OSX","href":"/docs/emulators/non-native-iou-for-windows-and-osx","docId":"emulators/non-native-iou-for-windows-and-osx"},{"type":"link","label":"Adding VMware VMs to GNS3 Topologies","href":"/docs/emulators/adding-vmware-vms-to-gns3-topologies","docId":"emulators/adding-vmware-vms-to-gns3-topologies"},{"type":"link","label":"Docker support in GNS3","href":"/docs/emulators/docker-support-in-gns3","docId":"emulators/docker-support-in-gns3"},{"type":"link","label":"Create a docker container for GNS3","href":"/docs/emulators/create-a-docker-container-for-gns3","docId":"emulators/create-a-docker-container-for-gns3"},{"type":"link","label":"VPCS","href":"/docs/emulators/vpcs","docId":"emulators/vpcs"},{"type":"link","label":"Qemu system UUID","href":"/docs/emulators/qemu-system-uuid","docId":"emulators/qemu-system-uuid"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Contribute","items":[{"type":"link","label":"Contribute to GNS3","href":"/docs/contribute/contribute-to-gns3","docId":"contribute/contribute-to-gns3"},{"type":"link","label":"Development of GNS3","href":"/docs/contribute/development-of-gns3","docId":"contribute/development-of-gns3"},{"type":"link","label":"How to debug Web UI Guide","href":"/docs/contribute/how-to-debug-web-ui-guide","docId":"contribute/how-to-debug-web-ui-guide"}],"collapsed":true,"collapsible":true},{"type":"category","label":"How-to Guides","items":[{"type":"link","label":"Cisco ASA","href":"/docs/how-to-guides/cisco-asa","docId":"how-to-guides/cisco-asa"},{"type":"link","label":"Importing vMX and vQFX into GNS3","href":"/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3","docId":"how-to-guides/importing-vmx-and-vqfx-into-gns3"},{"type":"link","label":"How to use applications with the GNS3 Web interface","href":"/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui","docId":"how-to-guides/how-to-use-console-applications-with-the-web-ui"},{"type":"link","label":"Configure GNS3 to use an additional remote server","href":"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server","docId":"how-to-guides/configure-gns3-to-use-an-additional-remote-server"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Troubleshooting & FAQ","items":[{"type":"link","label":"Troubleshoot GNS3","href":"/docs/troubleshooting-faq/troubleshoot-gns3","docId":"troubleshooting-faq/troubleshoot-gns3"},{"type":"link","label":"General FAQ","href":"/docs/troubleshooting-faq/general-faq","docId":"troubleshooting-faq/general-faq"},{"type":"link","label":"Where do I get IOS images?","href":"/docs/troubleshooting-faq/where-do-i-get-ios-images","docId":"troubleshooting-faq/where-do-i-get-ios-images"}],"collapsed":true,"collapsible":true}]},"docs":{"contribute/contribute-to-gns3":{"id":"contribute/contribute-to-gns3","title":"Contribute to GNS3","description":"The GNS3 community welcomes new contributors. Don\u2019t be afraid to make mistakes - we are here to help.","sidebar":"someSidebar"},"contribute/development-of-gns3":{"id":"contribute/development-of-gns3","title":"Development of GNS3","description":"Using the GNS3 API","sidebar":"someSidebar"},"contribute/how-to-debug-web-ui-guide":{"id":"contribute/how-to-debug-web-ui-guide","title":"How to debug Web UI Guide","description":"Using the GNS3 API","sidebar":"someSidebar"},"docusaurus-reference/doc1":{"id":"docusaurus-reference/doc1","title":"Style Guide","description":"You can write content using GitHub-flavored Markdown syntax."},"docusaurus-reference/doc2":{"id":"docusaurus-reference/doc2","title":"Document Number 2","description":"This is a link to another document. This is a link to an external page."},"docusaurus-reference/doc3":{"id":"docusaurus-reference/doc3","title":"This is Document Number 3","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit."},"docusaurus-reference/mdx":{"id":"docusaurus-reference/mdx","title":"Powered by MDX","description":"You can write JSX and use React components within your Markdown thanks to MDX."},"emulators/adding-vmware-vms-to-gns3-topologies":{"id":"emulators/adding-vmware-vms-to-gns3-topologies","title":"Adding VMware VMs to GNS3 Topologies","description":"Introduction","sidebar":"someSidebar"},"emulators/cisco-ios-images-for-dynamips":{"id":"emulators/cisco-ios-images-for-dynamips","title":"Cisco IOS images for Dynamips","description":"GNS3 offers multiple ways to emulate IOS. For older images, we use and maintain Dynamips; an emulator dedicated to emulate some Cisco hardware. Dynamips can run unmodified IOS images. In the new GNS3 1.4, there is a way to run a second category of switches and routers. These are classified as Routing and Switching virtual machines (or R+Svms) for short. What are the differences? Here are the major differences:","sidebar":"someSidebar"},"emulators/create-a-docker-container-for-gns3":{"id":"emulators/create-a-docker-container-for-gns3","title":"Create a docker container for GNS3","description":"This tutorial is for users who never used Docker, and would like to create a Docker container for GNS3.","sidebar":"someSidebar"},"emulators/docker-support-in-gns3":{"id":"emulators/docker-support-in-gns3","title":"Docker support in GNS3","description":"Docker container support was added as a feature starting with GNS3 1.5. Work on this feature was started by Goran Cetusic during the Google Summer Of Code and finished by the GNS3 core team.","sidebar":"someSidebar"},"emulators/non-native-iou-for-windows-and-osx":{"id":"emulators/non-native-iou-for-windows-and-osx","title":"Non-Native IOU for Windows and OSX","description":"IOU is IOS on Unix (Solaris, if you want to be specific). It\'s a version of IOS compiled to run on workstations. It\'s faster and lighter than emulation. Cisco transitioned to IOL images, which are x86-64 compatible versions of IOS that natively run in Linux. Since everyone and their kid brother still refers to IOL images as \u201cIOU\u201d, that convention is used for the remainder of this document.","sidebar":"someSidebar"},"emulators/qemu-system-uuid":{"id":"emulators/qemu-system-uuid","title":"Qemu system UUID","description":"Like any real computer, Qemu attributes a UUID to the system. This is stored in the SMBIOS:","sidebar":"someSidebar"},"emulators/vpcs":{"id":"emulators/vpcs","title":"VPCS","description":"Virtual PC Simulator is a program written by Paul Meng, which allows you to simulate a lightweight PC supporting DHCP and ping. It consumes only 2MB of RAM per instance, and does not require an additional image.","sidebar":"someSidebar"},"emulators/which-emulators-should-i-use":{"id":"emulators/which-emulators-should-i-use","title":"Which emulator should I use?","description":"GNS3 supports multiple emulators which you can use in your GNS3 projects. This gives you lots of flexibility when building topologies.","sidebar":"someSidebar"},"getting-started/installation/download-32-bit":{"id":"getting-started/installation/download-32-bit","title":"Download GNS3 for Windows 32 bit","description":"If you use a 32 bit version of Windows, you will need to use GNS3 1.3.13 (or older). 32 bit support was dropped starting with GNS3 1.4.","sidebar":"someSidebar"},"getting-started/installation/download-gns3-vm":{"id":"getting-started/installation/download-gns3-vm","title":"Downloading the GNS3 VM","description":"Which Virtualization Software? VirtualBox or VMware?","sidebar":"someSidebar"},"getting-started/installation/esxi":{"id":"getting-started/installation/esxi","title":"Install the GNS3 VM on ESXi","description":"VMware ESXi and VMware workstation are two totally different products. If you want instructions for VMware Workstation or VMware Fusion read this document.","sidebar":"someSidebar"},"getting-started/installation/gns3-on-equinix":{"id":"getting-started/installation/gns3-on-equinix","title":"GNS3 on equinix","description":"What is Equinix?","sidebar":"someSidebar"},"getting-started/installation/linux":{"id":"getting-started/installation/linux","title":"GNS3 Linux Install","description":"Ubuntu-based distributions (64-bit only)","sidebar":"someSidebar"},"getting-started/installation/mac":{"id":"getting-started/installation/mac","title":"GNS3 Mac Install","description":"Introduction","sidebar":"someSidebar"},"getting-started/installation/one-server-multiple-clients":{"id":"getting-started/installation/one-server-multiple-clients","title":"One GNS3 server, multiple clients","description":"This documentation is only for GNS3 2.0 and later","sidebar":"someSidebar"},"getting-started/installation/remote-server":{"id":"getting-started/installation/remote-server","title":"Install GNS3 on a remote server","description":"If you need more resources for bigger topologies, you can install GNS3 on a remote server. This could be on:","sidebar":"someSidebar"},"getting-started/installation/upgrade-gns3":{"id":"getting-started/installation/upgrade-gns3","title":"Upgrade GNS3","description":"Upgrading the GNS3 Client","sidebar":"someSidebar"},"getting-started/installation/windows":{"id":"getting-started/installation/windows","title":"GNS3 Windows Install","description":"Introduction","sidebar":"someSidebar"},"getting-started/setup-wizard-gns3-vm":{"id":"getting-started/setup-wizard-gns3-vm","title":"GNS3 Setup wizard with the GNS3 VM","description":"Which Virtualization Software? VirtualBox or VMware?","sidebar":"someSidebar"},"getting-started/setup-wizard-local-server":{"id":"getting-started/setup-wizard-local-server","title":"GNS3 Setup Wizard - Local server","description":"Introduction","sidebar":"someSidebar"},"getting-started/what-is-gns3":{"id":"getting-started/what-is-gns3","title":"Getting Started with GNS3","description":"Introduction","sidebar":"someSidebar"},"getting-started/your-first-cisco-topology":{"id":"getting-started/your-first-cisco-topology","title":"Your First Cisco Topology","description":"Introduction","sidebar":"someSidebar"},"getting-started/your-first-gns3-topology":{"id":"getting-started/your-first-gns3-topology","title":"Your First GNS3 Topology","description":"Introduction","sidebar":"someSidebar"},"how-to-guides/cisco-asa":{"id":"how-to-guides/cisco-asa","title":"Cisco ASA","description":"ASA 8","sidebar":"someSidebar"},"how-to-guides/configure-gns3-to-use-an-additional-remote-server":{"id":"how-to-guides/configure-gns3-to-use-an-additional-remote-server","title":"Configure GNS3 to use an additional remote server","description":"Configure GNS3 to use an additional remote server","sidebar":"someSidebar"},"how-to-guides/how-to-use-console-applications-with-the-web-ui":{"id":"how-to-guides/how-to-use-console-applications-with-the-web-ui","title":"How to use applications with the GNS3 Web interface","description":"A web client pack must be installed on your operating system in order to launch local applications needed to work with the GNS3 Web interface. We currently support Telnet, VNC, SPICE and packet capture applications.","sidebar":"someSidebar"},"how-to-guides/importing-vmx-and-vqfx-into-gns3":{"id":"how-to-guides/importing-vmx-and-vqfx-into-gns3","title":"Importing vMX and vQFX into GNS3","description":"Important edit - see bottom of the document!","sidebar":"someSidebar"},"troubleshooting-faq/general-faq":{"id":"troubleshooting-faq/general-faq","title":"General FAQ","description":"IOU","sidebar":"someSidebar"},"troubleshooting-faq/troubleshoot-gns3":{"id":"troubleshooting-faq/troubleshoot-gns3","title":"Troubleshoot GNS3","description":"Installation Problems","sidebar":"someSidebar"},"troubleshooting-faq/where-do-i-get-ios-images":{"id":"troubleshooting-faq/where-do-i-get-ios-images","title":"Where do I get IOS images?","description":"Introduction","sidebar":"someSidebar"},"using-gns3/administration/client-server-ssl-encryption":{"id":"using-gns3/administration/client-server-ssl-encryption","title":"Client server SSL encryption","description":"GNS3 supports secured network communications between the GNS3 GUI and GNS3 server using SSL. SSL mode is not supported for the GNS3 server on Windows but you can use it for clients. You will need a SSL certificate, if you don\'t have one, it is possible to generate a self signed certificate using this script (OpenSSL must be installed):","sidebar":"someSidebar"},"using-gns3/administration/gns3-security":{"id":"using-gns3/administration/gns3-security","title":"GNS3 Security","description":"Users of GNS3 need to bear in mind that it is a tool designed to be used for experimentation/learning, not for managing Virtual Machines or appliances in a production environment.","sidebar":"someSidebar"},"using-gns3/administration/gns3-server-configuration-file":{"id":"using-gns3/administration/gns3-server-configuration-file","title":"GNS3 server configuration file","description":"If you want to run the GNS3 server without the GUI, you can configure it with via an ini file.","sidebar":"someSidebar"},"using-gns3/administration/running-gns3-server-as-daemon":{"id":"using-gns3/administration/running-gns3-server-as-daemon","title":"Running the GNS3 server as a daemon","description":"You will find a sample init script for various systems inside the init directory of the gns3-server project//github.com/GNS3/gns3-server/tree/master/init","sidebar":"someSidebar"},"using-gns3/administration/scale-gns3":{"id":"using-gns3/administration/scale-gns3","title":"Scale GNS3","description":"GNS3 itself doesn\u2019t have limitation on the number of nodes you can run into it. The limitation will be your hardware.","sidebar":"someSidebar"},"using-gns3/advanced/configuration-transfer-qemu-vms":{"id":"using-gns3/advanced/configuration-transfer-qemu-vms","title":"Configuration transfer to QEMU VMs","description":"GNS3 v2.2.18 introduces a feature to transfer files,","sidebar":"someSidebar"},"using-gns3/advanced/connect-gns3-internet":{"id":"using-gns3/advanced/connect-gns3-internet","title":"Connect GNS3 to the Internet (local server)","description":"Introduction","sidebar":"someSidebar"},"using-gns3/advanced/create-a-new-version-for-an-appliance":{"id":"using-gns3/advanced/create-a-new-version-for-an-appliance","title":"Create a new version of an appliance","description":"Manufacturers release new versions of their appliances every day. The GNS3 community does not always know about these new releases and updates to the appliance file, but GNS3 allows you to use an unknown version of an appliance.","sidebar":"someSidebar"},"using-gns3/advanced/hubs-and-switches":{"id":"using-gns3/advanced/hubs-and-switches","title":"GNS3\'s built-in Hub and Switch devices","description":"Introduction","sidebar":"someSidebar"},"using-gns3/advanced/move-from-iouvm-gns3-vm":{"id":"using-gns3/advanced/move-from-iouvm-gns3-vm","title":"Move from IOUVM to GNS3 VM","description":"Starting with GNS3 v1.4, the IOUVM was deprecated in favor of the GNS3 VM.","sidebar":"someSidebar"},"using-gns3/advanced/port-name-formatting":{"id":"using-gns3/advanced/port-name-formatting","title":"Port name formatting","description":"Some nodes (like QEMU VMs) will allow you to personalize the name of its ports, in order to match the name of the interfaces inside the emulator.","sidebar":"someSidebar"},"using-gns3/advanced/settings-profiles":{"id":"using-gns3/advanced/settings-profiles","title":"Settings profiles","description":"This documentation is only for GNS3 2.0 and later","sidebar":"someSidebar"},"using-gns3/advanced/special-ip-addresses":{"id":"using-gns3/advanced/special-ip-addresses","title":"Special IP addresses in GNS3","description":"GNS3 uses several RFC1918 private IP ranges by default. If possible we recommend to avoid using them in your topology in order to limit conflicts.","sidebar":"someSidebar"},"using-gns3/advanced/the-nat-node":{"id":"using-gns3/advanced/the-nat-node","title":"The NAT node","description":"Starting with GNS3 2.0, the NAT node became available. This node allows you to connect a topology to internet via NAT. The Internet node was deprecated in favor of this node, and the Cloud node.","sidebar":"someSidebar"},"using-gns3/beginners/change-node-symbol":{"id":"using-gns3/beginners/change-node-symbol","title":"Use custom symbols in GNS3","description":"Beginning with GNS3 1.4 you have been able to change the symbol for a node (or supply your own). Starting with GNS3 2.2.0, additional style types of symbols for the various device types are included by default. You can still add your own custom symbols if you wish (that hasn\u2019t changed).","sidebar":"someSidebar"},"using-gns3/beginners/gns3-styles":{"id":"using-gns3/beginners/gns3-styles","title":"GNS3 Styles","description":"Introduction","sidebar":"someSidebar"},"using-gns3/beginners/import-gns3-appliance":{"id":"using-gns3/beginners/import-gns3-appliance","title":"Import GNS3 appliance","description":"This document assumes that you already have both the GNS3 Graphical User Interface installed (GNS3-all-in-one) and the GNS3 VM integrated with GNS3. Please refer to other guides for more details on how to install the GNS3 all-in-one package and how to download and configure the GNS3 VM.","sidebar":"someSidebar"},"using-gns3/beginners/install-from-marketplace":{"id":"using-gns3/beginners/install-from-marketplace","title":"Install an appliance from the GNS3 Marketplace","description":"Introduction","sidebar":"someSidebar"},"using-gns3/beginners/link-control":{"id":"using-gns3/beginners/link-control","title":"Link Control","description":"available in GNS3 version 2.1 and later.","sidebar":"someSidebar"},"using-gns3/beginners/switching-and-gns3":{"id":"using-gns3/beginners/switching-and-gns3","title":"Switching and GNS3","description":"Introduction","sidebar":"someSidebar"},"using-gns3/beginners/the-console-terminal":{"id":"using-gns3/beginners/the-console-terminal","title":"The console terminal","description":"GNS3 uses Solar-PuTTY as the default console terminal in Windows* (see note), and will attempt to use the default system terminal in other operating systems (gnome-terminal, for example, in vanilla Ubuntu).","sidebar":"someSidebar"},"using-gns3/beginners/the-gns3-gui":{"id":"using-gns3/beginners/the-gns3-gui","title":"The GNS3 GUI","description":"Introduction","sidebar":"someSidebar"},"using-gns3/design/architecture":{"id":"using-gns3/design/architecture","title":"Architecture","description":"GNS3 can be divided in four parts:","sidebar":"someSidebar"},"using-gns3/design/why-gns3-uses-uuid":{"id":"using-gns3/design/why-gns3-uses-uuid","title":"Why does GNS3 use UUIDs?","description":"A commonly asked question about GNS3, is why I can\u2019t easily find the files of a node or project names on disk. It\u2019s due to the usage of UUIDs in folder naming.","sidebar":"someSidebar"}}}')}}]); \ No newline at end of file diff --git a/build/assets/js/9462.89695fff.js b/build/assets/js/9462.89695fff.js new file mode 100644 index 00000000..5c5b0e25 --- /dev/null +++ b/build/assets/js/9462.89695fff.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9462],{9462:(e,t,r)=>{function n(e,t){var r=void 0;return function(){for(var n=arguments.length,o=new Array(n),i=0;ihn});var a=function(){};function c(e){var t=e.item,r=e.items;return{index:t.__autocomplete_indexName,items:[t],positions:[1+r.findIndex((function(e){return e.objectID===t.objectID}))],queryID:t.__autocomplete_queryID,algoliaSource:["autocomplete"]}}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(s){u=!0,o=s}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function h(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:20,r=[],n=0;n=3||2===r&&n>=4||1===r&&n>=10);function i(t,r,n){if(o&&void 0!==n){var i=n[0].__autocomplete_algoliaCredentials,a={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(p(r),[{headers:a}]))}else e.apply(void 0,[t].concat(p(r)))}return{init:function(t,r){e("init",{appId:t,apiKey:r})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("clickedObjectIDsAfterSearch",O(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("clickedObjectIDs",O(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n0&&e.apply(void 0,["clickedFilters"].concat(r))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("convertedObjectIDsAfterSearch",O(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("convertedObjectIDs",O(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n0&&e.apply(void 0,["convertedFilters"].concat(r))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&t.reduce((function(e,t){var r=t.items,n=d(t,f);return[].concat(p(e),p(g(h(h({},n),{},{objectIDs:(null==r?void 0:r.map((function(e){return e.objectID})))||n.objectIDs})).map((function(e){return{items:r,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n0&&e.apply(void 0,["viewedFilters"].concat(r))}}}function j(e){var t=e.items.reduce((function(e,t){var r;return e[t.__autocomplete_indexName]=(null!==(r=e[t.__autocomplete_indexName])&&void 0!==r?r:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function w(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function P(e){return function(e){if(Array.isArray(e))return I(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return I(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return I(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&_({onItemsChange:o,items:r,insights:f,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,r=e.onSelect,n=e.onActive;s("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:f}}),r((function(e){var t=e.item,r=e.state,n=e.event;w(t)&&l({state:r,event:n,insights:f,item:t,insightsEvents:[A({eventName:"Item Selected"},c({item:t,items:m.current}))]})})),n((function(e){var t=e.item,r=e.state,n=e.event;w(t)&&u({state:r,event:n,insights:f,item:t,insightsEvents:[A({eventName:"Item Active"},c({item:t,items:m.current}))]})}))},onStateChange:function(e){var t=e.state;p({state:t})},__autocomplete_pluginOptions:e}}function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function R(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==T(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===T(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function L(e,t,r){var n,o=t.initialState;return{getState:function(){return o},dispatch:function(n,i){var a=function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(K++),plugins:o,initialState:G({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(Z(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:a,onResolve:a};Object.keys(t).forEach((function(e){t[e].__default=!0}));var n=J(J({},t),e);return Promise.resolve(n)})))}))}(e,r)}))).then((function(e){return M(e)})).then((function(e){return e.map((function(e){return G(G({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))},onResolve:function(r){e.onResolve(r),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:G({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}function re(e){return re="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},re(e)}function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function oe(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var De,Ae,ke,xe=null,Ce=(De=-1,Ae=-1,ke=void 0,function(e){var t=++De;return Promise.resolve(e).then((function(e){return ke&&t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var He=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function Fe(e){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(e)}var Ue=["props","refresh","store"],Be=["inputElement","formElement","panelElement"],Ve=["inputElement"],Ke=["inputElement","maxLength"],$e=["sourceIndex"],Je=["sourceIndex"],ze=["item","source","sourceIndex"];function We(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Qe(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ye(e){var t=e.props,r=e.refresh,n=e.store,o=Xe(e,Ue),i=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,i=e.panelElement;function a(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,i].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return Qe({onTouchStart:a,onMouseDown:a,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},Xe(e,Be))},getRootProps:function(e){return Qe({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return Qe({action:"",noValidate:!0,role:"search",onSubmit:function(i){var a;i.preventDefault(),t.onSubmit(Qe({event:i,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(a=e.inputElement)||void 0===a||a.blur()},onReset:function(i){var a;i.preventDefault(),t.onReset(Qe({event:i,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(a=e.inputElement)||void 0===a||a.focus()}},Xe(e,Ve))},getLabelProps:function(e){var r=e||{},n=r.sourceIndex,o=Xe(r,$e);return Qe({htmlFor:"".concat(i(t.id,n),"-input"),id:"".concat(i(t.id,n),"-label")},o)},getInputProps:function(e){var i;function c(e){(t.openOnFocus||Boolean(n.getState().query))&&_e(Qe({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var l=e||{},u=(l.inputElement,l.maxLength),s=void 0===u?512:u,f=Xe(l,Ke),m=Oe(n.getState()),p=function(e){return Boolean(e&&e.match(He))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),v=null!=m&&m.itemUrl&&!p?"go":"search";return Qe({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:v,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:s,type:"search",onChange:function(e){_e(Qe({event:e,props:t,query:e.currentTarget.value.slice(0,s),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,i=Me(e,Te);if("ArrowUp"===t.key||"ArrowDown"===t.key){var a=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},c=function(){var e=Oe(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,a=e.itemInputValue,c=e.itemUrl,l=e.source;l.onActive(Re({event:t,item:r,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?_e(Re({event:t,props:r,query:o.getState().query,refresh:n,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),c(),setTimeout(a,0)})):(o.dispatch(t.key,{}),c(),a())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=Oe(o.getState()),u=l.item,s=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(Re({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),r.navigator.navigateNewTab({itemUrl:f,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(Re({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),r.navigator.navigateNewWindow({itemUrl:f,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(Re({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),void r.navigator.navigate({itemUrl:f,item:u,state:o.getState()});_e(Re({event:t,nextState:{isOpen:!1},props:r,query:s,refresh:n,store:o},i)).then((function(){m.onSelect(Re({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i))}))}}}(Qe({event:e,props:t,refresh:r,store:n},o))},onFocus:c,onBlur:a,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||c(r)}},f)},getPanelProps:function(e){return Qe({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){var r=e||{},n=r.sourceIndex,o=Xe(r,Je);return Qe({role:"listbox","aria-labelledby":"".concat(i(t.id,n),"-label"),id:"".concat(i(t.id,n),"-list")},o)},getItemProps:function(e){var a=e.item,c=e.source,l=e.sourceIndex,u=Xe(e,ze);return Qe({id:"".concat(i(t.id,l),"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=Oe(n.getState());if(null!==n.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(Qe({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:r,source:u,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():_e(Qe({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(Qe({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},u)}}}var Ge=[{segment:"autocomplete-core",version:"1.9.3"}];function et(e){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},et(e)}function tt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function rt(e){for(var t=1;t=r?null===n?null:0:o}function ct(e){return ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ct(e)}function lt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ut(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function kt(e){var t=e.translations,r=void 0===t?{}:t,n=At(e,Pt),o=r.noResultsText,i=void 0===o?"No results for":o,a=r.suggestedQueryText,c=void 0===a?"Try searching for":a,l=r.reportMissingResultsText,u=void 0===l?"Believe this query should return results?":l,s=r.reportMissingResultsLinkText,f=void 0===s?"Let us know.":s,m=n.state.context.searchSuggestions;return ht.createElement("div",{className:"DocSearch-NoResults"},ht.createElement("div",{className:"DocSearch-Screen-Icon"},ht.createElement(Et,null)),ht.createElement("p",{className:"DocSearch-Title"},i,' "',ht.createElement("strong",null,n.state.query),'"'),m&&m.length>0&&ht.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},ht.createElement("p",{className:"DocSearch-Help"},c,":"),ht.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(It(e),[ht.createElement("li",{key:t},ht.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&ht.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),ht.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}var xt=function(){return ht.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ht.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ct(e){switch(e.type){case"lvl1":return ht.createElement(xt,null);case"content":return ht.createElement(Nt,null);default:return ht.createElement(_t,null)}}function _t(){return ht.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ht.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Nt(){return ht.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ht.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Tt(){return ht.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},ht.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ht.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),ht.createElement("path",{d:"M8 17l-6-6 6-6"})))}var qt=["hit","attribute","tagName"];function Rt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Lt(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ft(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function Ut(e){var t=e.hit,r=e.attribute,n=e.tagName,o=void 0===n?"span":n,i=Ht(e,qt);return(0,ht.createElement)(o,Lt(Lt({},i),{},{dangerouslySetInnerHTML:{__html:Ft(t,"_snippetResult.".concat(r,".value"))||Ft(t,r)}}))}function Bt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(l){c=!0,o=l}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Vt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Vt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Vt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r|<\/mark>)/g,Wt=RegExp(zt.source);function Qt(e){var t,r,n,o,i,a=e;if(!a.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var c=((a.__docsearch_parent?null===(t=a.__docsearch_parent)||void 0===t||null===(r=t._highlightResult)||void 0===r||null===(n=r.hierarchy)||void 0===n?void 0:n.lvl0:null===(o=e._highlightResult)||void 0===o||null===(i=o.hierarchy)||void 0===i?void 0:i.lvl0)||{}).value;return c&&Wt.test(c)?c.replace(zt,""):c}function Zt(){return Zt=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function or(e){var t=e.translations,r=void 0===t?{}:t,n=nr(e,tr),o=r.recentSearchesTitle,i=void 0===o?"Recent":o,a=r.noRecentSearchesText,c=void 0===a?"No recent searches":a,l=r.saveRecentSearchButtonTitle,u=void 0===l?"Save this search":l,s=r.removeRecentSearchButtonTitle,f=void 0===s?"Remove this search from history":s,m=r.favoriteSearchesTitle,p=void 0===m?"Favorite":m,v=r.removeFavoriteSearchButtonTitle,d=void 0===v?"Remove this search from favorites":v;return"idle"===n.state.status&&!1===n.hasCollections?n.disableUserPersonalization?null:ht.createElement("div",{className:"DocSearch-StartScreen"},ht.createElement("p",{className:"DocSearch-Help"},c)):!1===n.hasCollections?null:ht.createElement("div",{className:"DocSearch-Dropdown-Container"},ht.createElement($t,rr({},n,{title:i,collection:n.state.collections[0],renderIcon:function(){return ht.createElement("div",{className:"DocSearch-Hit-icon"},ht.createElement(Yt,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,o=e.runDeleteTransition;return ht.createElement(ht.Fragment,null,ht.createElement("div",{className:"DocSearch-Hit-action"},ht.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.add(t),n.recentSearches.remove(t),n.refresh()}))}},ht.createElement(Gt,null))),ht.createElement("div",{className:"DocSearch-Hit-action"},ht.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){n.recentSearches.remove(t),n.refresh()}))}},ht.createElement(er,null))))}})),ht.createElement($t,rr({},n,{title:p,collection:n.state.collections[1],renderIcon:function(){return ht.createElement("div",{className:"DocSearch-Hit-icon"},ht.createElement(Gt,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return ht.createElement("div",{className:"DocSearch-Hit-action"},ht.createElement("button",{className:"DocSearch-Hit-action-button",title:d,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.remove(t),n.refresh()}))}},ht.createElement(er,null)))}})))}var ir=["translations"];function ar(){return ar=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var lr=ht.memo((function(e){var t=e.translations,r=void 0===t?{}:t,n=cr(e,ir);if("error"===n.state.status)return ht.createElement(wt,{translations:null==r?void 0:r.errorScreen});var o=n.state.collections.some((function(e){return e.items.length>0}));return n.state.query?!1===o?ht.createElement(kt,ar({},n,{translations:null==r?void 0:r.noResultsScreen})):ht.createElement(Xt,n):ht.createElement(or,ar({},n,{hasCollections:o,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function ur(){return ht.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},ht.createElement("g",{fill:"none",fillRule:"evenodd"},ht.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},ht.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),ht.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},ht.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var sr=r(9188),fr=["translations"];function mr(){return mr=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function vr(e){var t=e.translations,r=void 0===t?{}:t,n=pr(e,fr),o=r.resetButtonTitle,i=void 0===o?"Clear the query":o,a=r.resetButtonAriaLabel,c=void 0===a?"Clear the query":a,l=r.cancelButtonText,u=void 0===l?"Cancel":l,s=r.cancelButtonAriaLabel,f=void 0===s?"Cancel":s,m=n.getFormProps({inputElement:n.inputRef.current}).onReset;return ht.useEffect((function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()}),[n.autoFocus,n.inputRef]),ht.useEffect((function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()}),[n.isFromSelection,n.inputRef]),ht.createElement(ht.Fragment,null,ht.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:m},ht.createElement("label",mr({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),ht.createElement(sr.W,null)),ht.createElement("div",{className:"DocSearch-LoadingIndicator"},ht.createElement(ur,null)),ht.createElement("input",mr({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:64}))),ht.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":c,hidden:!n.state.query},ht.createElement(er,null))),ht.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:n.onClose},u))}var dr=["_highlightResult","_snippetResult"];function yr(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function hr(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function br(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=hr(t),i=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,yr(t,dr)),a=i.findIndex((function(e){return e.objectID===r.objectID}));a>-1&&i.splice(a,1),i.unshift(r),i=i.slice(0,n),o.setItem(i)},remove:function(e){i=i.filter((function(t){return t.objectID!==e.objectID})),o.setItem(i)},getAll:function(){return i}}}function gr(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}"),i=e=>{n().setItem(t,JSON.stringify(e))};return{get:(t,r,n={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{(()=>{const t=e.timeToLive?1e3*e.timeToLive:null,r=o(),n=Object.fromEntries(Object.entries(r).filter((([,e])=>void 0!==e.timestamp)));if(i(n),!t)return;const a=Object.fromEntries(Object.entries(n).filter((([,e])=>{const r=(new Date).getTime();return!(e.timestamp+tPromise.all([e?e.value:r(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||n.miss(e)]))).then((([e])=>e)),set:(e,r)=>Promise.resolve().then((()=>{const i=o();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:r},n().setItem(t,JSON.stringify(i)),r})),delete:e=>Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))})),clear:()=>Promise.resolve().then((()=>{n().removeItem(t)}))}}function Or(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,n,o={miss:()=>Promise.resolve()})=>r.get(e,n,o).catch((()=>Or({caches:t}).get(e,n,o))),set:(e,n)=>r.set(e,n).catch((()=>Or({caches:t}).set(e,n))),delete:e=>r.delete(e).catch((()=>Or({caches:t}).delete(e))),clear:()=>r.clear().catch((()=>Or({caches:t}).clear()))}}function Sr(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const i=JSON.stringify(r);if(i in t)return Promise.resolve(e.serializable?JSON.parse(t[i]):t[i]);const a=n(),c=o&&o.miss||(()=>Promise.resolve());return a.then((e=>c(e))).then((()=>a))},set:(r,n)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function jr(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function wr(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Er(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Pr="4.18.0",Ir={WithinQueryParameters:0,WithinHeaders:1};function Dr(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Ar={Read:1,Write:2,Any:3},kr=1,xr=2,Cr=3,_r=12e4;function Nr(e,t=kr){return{...e,status:t,lastUpdate:Date.now()}}function Tr(e){return"string"==typeof e?{protocol:"https",url:e,accept:Ar.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Ar.Any}}const qr="GET",Rr="POST";function Lr(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Nr(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===kr||Date.now()-e.lastUpdate>_r}(e))),n=e.filter((e=>function(e){return e.status===Cr&&Date.now()-e.lastUpdate<=_r}(e))),o=[...r,...n];return{getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t,statelessHosts:o.length>0?o.map((e=>Tr(e))):t}}))}function Mr(e,t,r,n){const o=[],i=function(e,t){if(e.method===qr||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),a=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),c=r.method,l=r.method!==qr?{}:{...r.data,...n.data},u={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let s=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Br(o)};const p={data:i,headers:a,method:c,url:Fr(m,r.path,u),connectTimeout:l(s,e.timeouts.connect),responseTimeout:l(s,n.timeout)},v=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},d={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=v(r);return r.isTimedOut&&s++,Promise.all([e.logger.info("Retryable failure",Vr(n)),e.hostsCache.set(m,Nr(m,r.isTimedOut?Cr:xr))]).then((()=>f(t,l)))},onFail(e){throw v(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,Br(o))}};return e.requester.send(p).then((e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e))(e,d)))};return Lr(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Hr(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Fr(e,t,r){const n=Ur(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Ur(e){return Object.keys(e).map((t=>{return Er("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function Br(e){return e.map((e=>Vr(e)))}function Vr(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const Kr=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:()=>e===Ir.WithinHeaders?n:{},queryParameters:()=>e===Ir.WithinQueryParameters?n:{}}}(void 0!==e.authMode?e.authMode:Ir.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:a,userAgent:c,hosts:l,queryParameters:u,headers:s}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:a,userAgent:c,headers:s,queryParameters:u,hosts:l.map((e=>Tr(e))),read(e,t){const r=Dr(t,f.timeouts.read),n=()=>Mr(f,f.hosts.filter((e=>0!=(e.accept&Ar.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write:(e,t)=>Mr(f,f.hosts.filter((e=>0!=(e.accept&Ar.Write))),e,Dr(t,f.timeouts.write))};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Ar.Read},{url:`${t}.algolia.net`,accept:Ar.Write}].concat(jr([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))};return wr(o,e.methods)},$r=e=>(t,r)=>t.method===qr?e.transporter.read(t,r):e.transporter.write(t,r),Jr=e=>(t,r={})=>wr({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),zr=e=>(t,r)=>{const n=t.map((e=>({...e,params:Ur(e.params||{})})));return e.transporter.read({method:Rr,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},Wr=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...i}=t.params;return Jr(e)(t.indexName,{methods:{searchForFacetValues:Xr}}).searchForFacetValues(n,o,{...r,...i})}))),Qr=e=>(t,r,n)=>e.transporter.read({method:Rr,path:Er("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),Zr=e=>(t,r)=>e.transporter.read({method:Rr,path:Er("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),Xr=e=>(t,r,n)=>e.transporter.read({method:Rr,path:Er("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),Yr=1,Gr=2,en=3;function tn(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let i;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===i&&(clearTimeout(o),i=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(i),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(i),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))},logger:(o=en,{debug:(e,t)=>(Yr>=o&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(Gr>=o&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:Sr(),requestsCache:Sr({serializable:!1}),hostsCache:Or({caches:[gr({key:`${Pr}-${e}`}),Sr()]}),userAgent:Hr(Pr).add({segment:"Browser",version:"lite"}),authMode:Ir.WithinQueryParameters};var o;return Kr({...n,...r,methods:{search:zr,searchForFacetValues:Wr,multipleQueries:zr,multipleSearchForFacetValues:Wr,customRequest:$r,initIndex:e=>t=>Jr(e)(t,{methods:{search:Zr,searchForFacetValues:Xr,findAnswers:Qr}})}})}tn.version=Pr;const rn=tn;var nn="3.5.1";function on(){}function an(e){return e}function cn(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function ln(e,t,r){return e.reduce((function(e,n){var o=t(n);return e.hasOwnProperty(o)||(e[o]=[]),e[o].length<(r||5)&&e[o].push(n),e}),{})}var un=["footer","searchBox"];function sn(){return sn=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function hn(e){var t=e.appId,r=e.apiKey,n=e.indexName,o=e.placeholder,i=void 0===o?"Search docs":o,a=e.searchParameters,c=e.maxResultsPerGroup,l=e.onClose,u=void 0===l?on:l,s=e.transformItems,f=void 0===s?an:s,m=e.hitComponent,p=void 0===m?St:m,v=e.resultsFooterComponent,d=void 0===v?function(){return null}:v,y=e.navigator,h=e.initialScrollY,b=void 0===h?0:h,g=e.transformSearchClient,O=void 0===g?an:g,S=e.disableUserPersonalization,j=void 0!==S&&S,w=e.initialQuery,E=void 0===w?"":w,P=e.translations,I=void 0===P?{}:P,D=e.getMissingResultsUrl,A=e.insights,k=void 0!==A&&A,x=I.footer,C=I.searchBox,_=yn(I,un),N=vn(ht.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),T=N[0],q=N[1],R=ht.useRef(null),L=ht.useRef(null),M=ht.useRef(null),H=ht.useRef(null),F=ht.useRef(null),U=ht.useRef(10),B=ht.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,V=ht.useRef(E||B).current,K=function(e,t,r){return ht.useMemo((function(){var n=rn(e,t);return n.addAlgoliaAgent("docsearch",nn),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",nn),r(n)}),[e,t,r])}(t,r,O),$=ht.useRef(br({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,J=ht.useRef(br({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:0===$.getAll().length?7:4})).current,z=ht.useCallback((function(e){if(!j){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===$.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&J.add(t)}}),[$,J,j]),W=ht.useCallback((function(e){if(T.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,r={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};T.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(r)}}),[T.context.algoliaInsightsPlugin]),Q=ht.useMemo((function(){return yt({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:V,context:{searchSuggestions:[]}},insights:k,navigator:y,onStateChange:function(e){q(e.state)},getSources:function(e){var o=e.query,i=e.state,l=e.setContext,s=e.setStatus;if(!o)return j?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,r=e.event;z(t),cn(r)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return J.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,r=e.event;z(t),cn(r)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return $.getAll()}}];var m=Boolean(k);return K.search([{query:o,indexName:n,params:mn({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(U.current),"hierarchy.lvl2:".concat(U.current),"hierarchy.lvl3:".concat(U.current),"hierarchy.lvl4:".concat(U.current),"hierarchy.lvl5:".concat(U.current),"hierarchy.lvl6:".concat(U.current),"content:".concat(U.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:m},a)}]).catch((function(e){throw"RetryError"===e.name&&s("error"),e})).then((function(e){var o=e.results,a=o[0],s=a.hits,p=a.nbHits,v=ln(s,(function(e){return Qt(e)}),c);i.context.searchSuggestions.length0&&(Y(),F.current&&F.current.focus())}),[V,Y]),ht.useEffect((function(){function e(){if(L.current){var e=.01*window.innerHeight;L.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),ht.createElement("div",sn({ref:R},X({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===T.status&&"DocSearch-Container--Stalled","error"===T.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&u()}}),ht.createElement("div",{className:"DocSearch-Modal",ref:L},ht.createElement("header",{className:"DocSearch-SearchBar",ref:M},ht.createElement(vr,sn({},Q,{state:T,autoFocus:0===V.length,inputRef:F,isFromSelection:Boolean(V)&&V===B,translations:C,onClose:u}))),ht.createElement("div",{className:"DocSearch-Dropdown",ref:H},ht.createElement(lr,sn({},Q,{indexName:n,state:T,hitComponent:p,resultsFooterComponent:d,disableUserPersonalization:j,recentSearches:J,favoriteSearches:$,inputRef:F,translations:_,getMissingResultsUrl:D,onItemClick:function(e,t){W(e),z(e),cn(t)||u()}}))),ht.createElement("footer",{className:"DocSearch-Footer"},ht.createElement(Ot,{translations:x}))))}}}]); \ No newline at end of file diff --git a/build/assets/js/99d2c9c4.fcd4d834.js b/build/assets/js/99d2c9c4.fcd4d834.js new file mode 100644 index 00000000..29443654 --- /dev/null +++ b/build/assets/js/99d2c9c4.fcd4d834.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8878],{7757:s=>{s.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]); \ No newline at end of file diff --git a/build/assets/js/9bd9ba21.8eb62c25.js b/build/assets/js/9bd9ba21.8eb62c25.js new file mode 100644 index 00000000..9bb186a6 --- /dev/null +++ b/build/assets/js/9bd9ba21.8eb62c25.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1927],{5680:(e,t,n)=>{n.d(t,{xA:()=>u,yg:()=>m});var r=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(n),g=o,m=p["".concat(c,".").concat(g)]||p[g]||d[g]||i;return n?r.createElement(m,a(a({ref:t},u),{},{components:n})):r.createElement(m,a({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=g;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>g,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var r=n(8168),o=n(8587),i=(n(6540),n(5680)),a=["components"],s={id:"architecture",title:"Architecture",sidebar_label:"Architecture"},c=void 0,l={unversionedId:"using-gns3/design/architecture",id:"using-gns3/design/architecture",title:"Architecture",description:"GNS3 can be divided in four parts:",source:"@site/docs/using-gns3/design/architecture.md",sourceDirName:"using-gns3/design",slug:"/using-gns3/design/architecture",permalink:"/docs/using-gns3/design/architecture",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/design/architecture.md",tags:[],version:"current",frontMatter:{id:"architecture",title:"Architecture",sidebar_label:"Architecture"},sidebar:"someSidebar",previous:{title:"Scale GNS3",permalink:"/docs/using-gns3/administration/scale-gns3"},next:{title:"Why does GNS3 use UUIDs?",permalink:"/docs/using-gns3/design/why-gns3-uses-uuid"}},u={},p=[{value:"Communications",id:"communications",level:2},{value:"Errors",id:"errors",level:2},{value:"Concurrency",id:"concurrency",level:2},{value:"Authentication",id:"authentication",level:2},{value:"Notifications",id:"notifications",level:2}],d={toc:p};function g(e){var t=e.components,n=(0,o.A)(e,a);return(0,i.yg)("wrapper",(0,r.A)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"GNS3 can be divided in four parts:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"the user interface or GUI (gns3-gui or gns3-web projects)"),(0,i.yg)("li",{parentName:"ul"},"the controller (gns3-server project)"),(0,i.yg)("li",{parentName:"ul"},"the compute (part of the gns3-server project)"),(0,i.yg)("li",{parentName:"ul"},"the emulators (Qemu, Dynamips, VirtualBox\u2026)")),(0,i.yg)("p",null,"The controller pilots everything, it manages the state of each project. Only one controller should run."),(0,i.yg)("p",null,"The GUI displays a topology representing a project on a canvas and allow to perform actions on given project, sending API requests to the controller."),(0,i.yg)("p",null,"The compute controls emulators to run nodes. A compute that is on the same server as the controller is the same process."),(0,i.yg)("p",null,"The compute usually starts an emulator instance for each node."),(0,i.yg)("p",null,"A small schema:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"+---------------+ +----------+ +------+\n| | | COMPUTE +-----\x3e QEMU |\n| GNS3 GUI | +---\x3e SERVER 1 | +------+\n| QT interface +-----+ | +----------+\n| | | | +---+\n+---------------+ +v--------++ +---\x3eIOU|\n |CONTROLLER| | +---+\n +---------+ +^--------++ +---------+ |\n | GNS3 WEB+-----+ | | COMPUTE +--+\n +---------+ +---\x3e SERVER 2+--+ +--------+\n +---------+ +---\x3eDYNAMIPS|\n +--------+\n")),(0,i.yg)("p",null,"Use the controller API to work with the GNS3 backend"),(0,i.yg)("h2",{id:"communications"},"Communications"),(0,i.yg)("p",null,"All communication are done over HTTP using the JSON format."),(0,i.yg)("h2",{id:"errors"},"Errors"),(0,i.yg)("p",null,"A standard HTTP error is sent in case of an error:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},'{\n "status": 409,\n "message": "Conflict"\n}\n')),(0,i.yg)("h2",{id:"concurrency"},"Concurrency"),(0,i.yg)("p",null,"A node cannot processes multiple requests at the same time. However, multiple requests on multiple nodes can be executed concurrently. This should be transparent for clients since internal locks are used inside the server, so it is safe to send multiple requests at the same time and let the server manage the concurrency."),(0,i.yg)("h2",{id:"authentication"},"Authentication"),(0,i.yg)("p",null,"HTTP basic authentication can be used to prevent unauthorized API requests. It is recommended to set up a VPN if the communication between clients and the server must be encrypted."),(0,i.yg)("h2",{id:"notifications"},"Notifications"),(0,i.yg)("p",null,"Notifications can be received from the server by listening to a HTTP stream or via a Websocket."),(0,i.yg)("p",null,"Read ",(0,i.yg)("a",{parentName:"p",href:"https://gns3-server.readthedocs.io/en/latest/notifications.html"},"Notifications")," for more information"))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/9cda237f.409216c7.js b/build/assets/js/9cda237f.409216c7.js new file mode 100644 index 00000000..6df333ae --- /dev/null +++ b/build/assets/js/9cda237f.409216c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2696],{5680:(e,n,r)=>{r.d(n,{xA:()=>c,yg:()=>d});var t=r(6540);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function a(e){for(var n=1;n=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=t.createContext({}),u=function(e){var n=t.useContext(l),r=n;return e&&(r="function"==typeof e?e(n):a(a({},n),e)),r},c=function(e){var n=u(e.components);return t.createElement(l.Provider,{value:n},e.children)},g="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},f=t.forwardRef((function(e,n){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=u(r),f=o,d=g["".concat(l,".").concat(f)]||g[f]||p[f]||i;return r?t.createElement(d,a(a({ref:n},c),{},{components:r})):t.createElement(d,a({ref:n},c))}));function d(e,n){var r=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[g]="string"==typeof e?e:o,a[1]=s;for(var u=2;u{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>f,frontMatter:()=>s,metadata:()=>u,toc:()=>g});var t=r(8168),o=r(8587),i=(r(6540),r(5680)),a=["components"],s={id:"gns3-server-configuration-file",title:"GNS3 server configuration file",sidebar_label:"GNS3 server configuration file"},l=void 0,u={unversionedId:"using-gns3/administration/gns3-server-configuration-file",id:"using-gns3/administration/gns3-server-configuration-file",title:"GNS3 server configuration file",description:"If you want to run the GNS3 server without the GUI, you can configure it with via an ini file.",source:"@site/docs/using-gns3/administration/gns3-server-configuration-file.md",sourceDirName:"using-gns3/administration",slug:"/using-gns3/administration/gns3-server-configuration-file",permalink:"/docs/using-gns3/administration/gns3-server-configuration-file",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/gns3-server-configuration-file.md",tags:[],version:"current",frontMatter:{id:"gns3-server-configuration-file",title:"GNS3 server configuration file",sidebar_label:"GNS3 server configuration file"},sidebar:"someSidebar",previous:{title:"Configuration transfer to QEMU VMs",permalink:"/docs/using-gns3/advanced/configuration-transfer-qemu-vms"},next:{title:"Running the GNS3 server as a daemon",permalink:"/docs/using-gns3/administration/running-gns3-server-as-daemon"}},c={},g=[{value:"File Location",id:"file-location",level:2},{value:"Linux",id:"linux",level:3},{value:"Mac OS X",id:"mac-os-x",level:3},{value:"Windows",id:"windows",level:3}],p={toc:g};function f(e){var n=e.components,r=(0,o.A)(e,a);return(0,i.yg)("wrapper",(0,t.A)({},p,r,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"If you want to run the GNS3 server without the GUI, you can configure it with via an ini file."),(0,i.yg)("h2",{id:"file-location"},"File Location"),(0,i.yg)("p",null,"We search for the configuration file in multiple locations:"),(0,i.yg)("h3",{id:"linux"},"Linux"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"$HOME/.config/GNS3/gns3_server.conf"),(0,i.yg)("li",{parentName:"ul"},"$HOME/.config/GNS3.conf"),(0,i.yg)("li",{parentName:"ul"},"/etc/xdg/GNS3/gns3_server.conf"),(0,i.yg)("li",{parentName:"ul"},"/etc/xdg/GNS3.conf"),(0,i.yg)("li",{parentName:"ul"},"gns3_server.conf in the current directory")),(0,i.yg)("h3",{id:"mac-os-x"},"Mac OS X"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"$HOME/.config/GNS3/gns3_server.conf"),(0,i.yg)("li",{parentName:"ul"},"gns3_server.conf in the current directory")),(0,i.yg)("h3",{id:"windows"},"Windows"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"%APPDATA%/GNS3/gns3_server.ini"),(0,i.yg)("li",{parentName:"ul"},"%APPDATA%/Roaming/GNS3/gns3_server.ini"),(0,i.yg)("li",{parentName:"ul"},"%APPDATA%/GNS3.ini"),(0,i.yg)("li",{parentName:"ul"},"%COMMON_APPDATA%/GNS3/gns3_server.ini"),(0,i.yg)("li",{parentName:"ul"},"%COMMON_APPDATA%/GNS3.ini"),(0,i.yg)("li",{parentName:"ul"},"gns3_server.ini in current directory")),(0,i.yg)("p",null,"All configurations have default settings. This means you need in the configuration file only the configuration you need to change. For executables like VCPS, ubridge, and dynamips, we search in the PATH environment variable by default (on a standard linux install we will look in /bin, /usr/bin)."),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"The configuration file"),":"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"[Server]\n; IP where the server listen for connection\nhost = 127.0.0.1\n; HTTP port for controlling the servers\nport = 3080\n; Path where images of devices are stored\nimages_path = /home/gns3/GNS3/images\n; Path where user project are stored\nprojects_path = /home/gns3/GNS3/projects\n; Send crash to the GNS3 team\nreport_errors = True\n; First port of the range allocated to devices telnet console\nconsole_start_port_range = 2001\n; Last port of the range allocated to devices telnet console\nconsole_end_port_range = 5000\n; First port of the range allocated to communication between devices. You need two port by link\nudp_start_port_range = 10000\n; Last port of the range allocated to communication between devices. You need two port by link\nudp_end_port_range = 20000\n; Path of the ubridge program\nubridge_path = /Applications/GNS3.app/Contents/Resources/ubridge\n; Boolean for enabling HTTP auth\nauth = True\n; Username for HTTP auth\nuser = bob\n; Password for HTTP auth\npassword = alice\n\n[VPCS]\n; Path of the VPCS binary\nvpcs_path = /usr/local/bin/vpcs\n\n[Dynamips]\nallocate_aux_console_ports = False\nmmap_support = True\n; Path of the dynamips path\ndynamips_path = /usr/local/bin/dynamips\nsparse_memory_support = True\nghost_ios_support = True\n\n[IOU]\n; Path of the iouyap binary\niouyap_path = /usr/local/bin/iouyap\n; Path of your .iourc file. If empty we search in $HOME/.iourc\niourc_path = /home/gns3/.iourc\n; Validate if the iourc is correct. If you turn off and your licence is invalid iou will crash without errors\nlicense_check = True\n\n[VirtualBox]\n; Path of the VBoxManage command\nvboxmanage_path = /usr/local/bin/VBoxManage\n; Run VirtualBox with sudo as vbox_user\nvbox_user =\n\n[VMware]\n; Type of Virtualization product (fusion, player, workstation)\nhost_type = fusion\n; First vmnet adapter controlled by GNS3\nvmnet_start_range = 2\n; Last vmnet adapter controlled by GNS3\nvmnet_end_range = 50\n; Path of the vmrun executable\nvmrun_path = /Applications/VMware Fusion.app/Contents/Library/vmrun\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/a0fedaae.23fa30f2.js b/build/assets/js/a0fedaae.23fa30f2.js new file mode 100644 index 00000000..d5979bc7 --- /dev/null +++ b/build/assets/js/a0fedaae.23fa30f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8572],{5680:(e,n,t)=>{t.d(n,{xA:()=>c,yg:()=>p});var s=t(6540);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);n&&(s=s.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,s)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=s.createContext({}),g=function(e){var n=s.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},c=function(e){var n=g(e.components);return s.createElement(l.Provider,{value:n},e.children)},y="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return s.createElement(s.Fragment,{},n)}},u=s.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),y=g(t),u=o,p=y["".concat(l,".").concat(u)]||y[u]||m[u]||r;return t?s.createElement(p,a(a({ref:n},c),{},{components:t})):s.createElement(p,a({ref:n},c))}));function p(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,a=new Array(r);a[0]=u;var i={};for(var l in n)hasOwnProperty.call(n,l)&&(i[l]=n[l]);i.originalType=e,i[y]="string"==typeof e?e:o,a[1]=i;for(var g=2;g{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>g,default:()=>p,frontMatter:()=>l,metadata:()=>c,toc:()=>m});var s=t(8168),o=t(8587),r=(t(6540),t(5680)),a=t(6025),i=["components"],l={id:"change-node-symbol",title:"Use custom symbols in GNS3",sidebar_label:"Change node symbol"},g=void 0,c={unversionedId:"using-gns3/beginners/change-node-symbol",id:"using-gns3/beginners/change-node-symbol",title:"Use custom symbols in GNS3",description:"Beginning with GNS3 1.4 you have been able to change the symbol for a node (or supply your own). Starting with GNS3 2.2.0, additional style types of symbols for the various device types are included by default. You can still add your own custom symbols if you wish (that hasn\u2019t changed).",source:"@site/docs/using-gns3/beginners/change-node-symbol.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/change-node-symbol",permalink:"/docs/using-gns3/beginners/change-node-symbol",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/change-node-symbol.md",tags:[],version:"current",frontMatter:{id:"change-node-symbol",title:"Use custom symbols in GNS3",sidebar_label:"Change node symbol"},sidebar:"someSidebar",previous:{title:"The GNS3 GUI",permalink:"/docs/using-gns3/beginners/the-gns3-gui"},next:{title:"GNS3 Styles",permalink:"/docs/using-gns3/beginners/gns3-styles"}},y={},m=[{value:"Bonus",id:"bonus",level:2}],u={toc:m};function p(e){var n=e.components,t=(0,o.A)(e,i);return(0,r.yg)("wrapper",(0,s.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"Beginning with GNS3 1.4 you have been able to change the symbol for a node (or supply your own). Starting with GNS3 2.2.0, additional style types of symbols for the various device types are included by default. You can still add your own custom symbols if you wish (that hasn\u2019t changed)."),(0,r.yg)("p",null,"Changing the symbol used by a device is purely cosmetic. You can change the symbol directly from the topology with a right click:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/1.jpg")}),(0,r.yg)("p",null,"Or in that nodes settings in its global preferences:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/2.jpg")}),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Changing the nodes symbol on a device in a topology is just temporary, and on a per-instance basis. If you change the symbol used by a device via its global settings, all new instances of that device will use the chosen symbol.")),(0,r.yg)("p",null,"When right-clicking on a device in a topology, you\u2019ll see a listing of symbols you can use:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/3.jpg")}),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u201cClassic\u201d")," are the symbols that have been included with GNS3 for quite a while, and that many are accustomed to seeing. Click on the arrow next to it, to expand that symbol category:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/4.jpg")}),(0,r.yg)("p",null,"Select a symbol, and click ",(0,r.yg)("strong",{parentName:"p"},"OK")," to have it applied to that device:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/5.jpg")}),(0,r.yg)("p",null,"The symbol for R11 has now been changed to \u201cRoute Switch Processor\u201d:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/6.jpg")}),(0,r.yg)("p",null,"As you could see from the Symbol Selection menu further up the page, you aren\u2019t limited to just the \u201cClassic\u201d symbols. The \u201cAffinity\u201d symbol styles are included by default, starting with GNS3 2.2.0."),(0,r.yg)("p",null,"In the below example, the symbol for R11 will be changed to \u201crouter\u201d, from the Affinity-circle-blue\u201d list:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/7.jpg")}),(0,r.yg)("p",null,"After selecting that symbol, and clicking ",(0,r.yg)("strong",{parentName:"p"},"OK"),", R11 will now use that:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/8.jpg")}),(0,r.yg)("p",null,"You can also add a custom symbol from any place in filesystem:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/9.jpg")}),(0,r.yg)("p",null,"Custom symbols should be one of these two graphic file formats:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"SVG (scalable vector graphics)"),(0,r.yg)("li",{parentName:"ul"},"PNG (portable network graphics)")),(0,r.yg)("p",null,"In Windows, there will be a linux_guest.svg file included in ",(0,r.yg)("inlineCode",{parentName:"p"},"C:\\User\\user_name\\GNS3\\symbols"),", as part of a default installation:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/10.jpg")}),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/11.jpg")}),(0,r.yg)("p",null,"Select the SVG file and Click ",(0,r.yg)("strong",{parentName:"p"},"Open")," to add it to the symbol library:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/12.jpg")}),(0,r.yg)("p",null,"The symbol for ",(0,r.yg)("strong",{parentName:"p"},"R11")," has changed to ",(0,r.yg)("strong",{parentName:"p"},"\u201cLinux Guest\u201d"),". Click ",(0,r.yg)("strong",{parentName:"p"},"OK")," to complete the process:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/13.jpg")}),(0,r.yg)("p",null,"In the main Symbol selection menu, a new ",(0,r.yg)("strong",{parentName:"p"},"\u201cCustom Symbols\u201d")," library is added:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/14.jpg")}),(0,r.yg)("p",null,"(as only a single custom symbol has been added, there is no arrow to expand that library. If two or more are added, that arrow will appear)"),(0,r.yg)("p",null,"You can also use ",(0,r.yg)("strong",{parentName:"p"},"Filter"),", to search a library for a specific symbol that has already been added to a library:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/using-gns3/beginners/change-node-symbol/15.jpg")}),(0,r.yg)("p",null,"(typing \u201cqem\u201d in the ",(0,r.yg)("strong",{parentName:"p"},"Filter")," dialog box displays the ",(0,r.yg)("strong",{parentName:"p"},"Qemu Guest")," symbol in the ",(0,r.yg)("strong",{parentName:"p"},"Classic")," library, as that\u2019s the only symbols in that library that matches the filter string)"),(0,r.yg)("p",null,"Portability\nThe custom symbols are exported to the project directory. You can safely copy a project to another computer."),(0,r.yg)("h2",{id:"bonus"},"Bonus"),(0,r.yg)("p",null,"A repository of images is available here:"),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-registry/tree/master/symbols"},"https://github.com/GNS3/gns3-registry/tree/master/symbols")),(0,r.yg)("p",null,"Feel free to contribute your own"))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/a72e2c34.473c94c2.js b/build/assets/js/a72e2c34.473c94c2.js new file mode 100644 index 00000000..8af37b90 --- /dev/null +++ b/build/assets/js/a72e2c34.473c94c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4052],{5680:(e,t,n)=>{n.d(t,{xA:()=>u,yg:()=>g});var o=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,g=p["".concat(l,".").concat(h)]||p[h]||d[h]||r;return n?o.createElement(g,i(i({ref:t},u),{},{components:n})):o.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>u,toc:()=>d});var o=n(8168),a=n(8587),r=(n(6540),n(5680)),i=n(6025),s=["components"],l={id:"docker-support-in-gns3",title:"Docker support in GNS3",sidebar_label:"Docker support in GNS3"},c=void 0,u={unversionedId:"emulators/docker-support-in-gns3",id:"emulators/docker-support-in-gns3",title:"Docker support in GNS3",description:"Docker container support was added as a feature starting with GNS3 1.5. Work on this feature was started by Goran Cetusic during the Google Summer Of Code and finished by the GNS3 core team.",source:"@site/docs/emulators/docker-support-in-gns3.md",sourceDirName:"emulators",slug:"/emulators/docker-support-in-gns3",permalink:"/docs/emulators/docker-support-in-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/docker-support-in-gns3.md",tags:[],version:"current",frontMatter:{id:"docker-support-in-gns3",title:"Docker support in GNS3",sidebar_label:"Docker support in GNS3"},sidebar:"someSidebar",previous:{title:"Adding VMware VMs to GNS3 Topologies",permalink:"/docs/emulators/adding-vmware-vms-to-gns3-topologies"},next:{title:"Create a docker container for GNS3",permalink:"/docs/emulators/create-a-docker-container-for-gns3"}},p={},d=[{value:"Advantages of Containers versus QEMU VMS",id:"advantages-of-containers-versus-qemu-vms",level:2},{value:"Warning",id:"warning",level:3},{value:"Adding a container template",id:"adding-a-container-template",level:2},{value:"Persistence",id:"persistence",level:2},{value:"Networking",id:"networking",level:2},{value:"VNC",id:"vnc",level:2},{value:"HTTP",id:"http",level:2},{value:"Auxiliary Console",id:"auxiliary-console",level:2},{value:"Images designed for running inside GNS3",id:"images-designed-for-running-inside-gns3",level:2}],h={toc:d};function g(e){var t=e.components,n=(0,a.A)(e,s);return(0,r.yg)("wrapper",(0,o.A)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"Docker container support was added as a feature starting with GNS3 1.5. Work on this feature was started by Goran Cetusic during the Google Summer Of Code and finished by the GNS3 core team."),(0,r.yg)("p",null,"Bernhard Ehlers and AJ Nouri contributed a lot of their time to the testing/validation of this feature, and Andras Dosztal has added many containers as appliances available in the Marketplace (like the Network Automation container, for example)."),(0,r.yg)("h2",{id:"advantages-of-containers-versus-qemu-vms"},"Advantages of Containers versus QEMU VMS"),(0,r.yg)("p",null,"Containers use services provided by the kernel in the host OS (meaning the GNS3 VM or the local machine, if running GNS3 natively in Linux), and not relying on the kernel provided by the OS installed within a Qemu VM. This means containers consume far less RAM and CPU resources overall, per instance, and have a smaller storage footprint. Docker containers are available from a registry, so you can fork them in order to add your own tools."),(0,r.yg)("h3",{id:"warning"},"Warning"),(0,r.yg)("p",null,"The idea isn\u2019t to simulate the deployment of container infrastructure in production, but to use containers as light virtual machines, replacing heavy qemu VMs instances or VPCS, for times when you want to use tools like telnet, nmap, etc\u2026"),(0,r.yg)("p",null,"Only the top-most layer in a docker container is actually read/write. All of the layers beneath it are read-only."),(0,r.yg)("p",null,"It\u2019s also not designed to control a docker cluster for production or development. If you want to simulate real life container infrastructure, you need to deploy an OS in a Qemu VM, and start the containers in it."),(0,r.yg)("h2",{id:"adding-a-container-template"},"Adding a container template"),(0,r.yg)("p",null,"Go to Edit->Preferences->Docker containers and click on New:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/1.jpg")}),(0,r.yg)("p",null,"Next, select the server you wish to run the container with. Since this article is being written on a Win 10 Pro desktop that has the GNS3 VM running in WS Pro 15.5, that\u2019s the only available option:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/2.jpg")}),(0,r.yg)("p",null,"(Running GNS3 natively in Linux would allow this container to run via the local server, or if GNS3 had been configured to use a remote server, that option would be available, too)"),(0,r.yg)("p",null,"You will need to select the container you wish to use. There are many freely available containers over on Docker Hub (",(0,r.yg)("a",{parentName:"p",href:"https://hub.docker.com"},"https://hub.docker.com"),"), as well as in the GNS3 Marketplace (you\u2019d simply use download the relevant .gns3a appliance file, use the \u201cimport appliance\u201d wizard, and follow the direction). "),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Please note")," that most containers start a daemon and expose ports. This will not work on GNS3 because we need to configure the IP address inside the container (in standard usage, docker take care of the networking and you can not access containers directly from the network)"),(0,r.yg)("p",null,"We will use for this example an image of Alpine Linux 3.2, which is a very lightweight Linux distribution."),(0,r.yg)("p",null,"You can see all the alpine linux versions available for Docker here:\n",(0,r.yg)("a",{parentName:"p",href:"https://hub.docker.com/_/alpine/"},"https://hub.docker.com/_/alpine/"),"*"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/3.jpg")}),(0,r.yg)("p",null,"On the next screen, we\u2019ll elect to use the alpine docker container from Docker Hub. Select ",(0,r.yg)("strong",{parentName:"p"},"\u201cNew Image\u201d"),", and in the dialog box, type ",(0,r.yg)("inlineCode",{parentName:"p"},"alpine:latest"),", as shown below, and then click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),": "),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/4.jpg")}),(0,r.yg)("p",null,"The reason to use \u201clatest\u201d, as opposed to using a specific version number, is so you can easily upgrade this container to the latest version on Docker Hub. You\u2019d enter the GNS3 VM\u2019s shell (or just use a terminal in Linux), and run \u201cdocker pull alpine:latest\u201d, and any changes will be pulled down from Docker Hub, and applied the existing container."),(0,r.yg)("p",null,"On the next screen, give the container a name. In this instance, it\u2019ll just be called \u201calpine\u201d, and that\u2019s what it will be listed as in the End Devices toolbar:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/5.jpg")}),(0,r.yg)("p",null,"Next, you\u2019ll assign how many adapters this container should have. Since This example will just be using the Alpine container as a host, it\u2019ll be left at the default of 1:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/6.jpg")}),(0,r.yg)("p",null,"(it\u2019s entirely possible to create a docker container based off of Debian with FRRouting installed, and have it run OSPF, BGP, or IS-IS, and act as a temporary light router. You could also have a container running an open-source firewall. Those are just two simple examples of why you\u2019d use more than a single interface for a container )"),(0,r.yg)("p",null,"Next, specify the start command. It\u2019s like the init process on a standard Linux. Often in GNS3, we just want a shell:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/7.jpg")}),(0,r.yg)("p",null,"On the next screen you\u2019ll choose a Console type from a dropdown menu. It\u2019s set to \u201cTelnet\u201d by default, which is fine for this example, so just click Next>:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/8.jpg")}),(0,r.yg)("p",null,"(the full list of console types are currently telnet, vnc, http, https, and none)"),(0,r.yg)("p",null,"Next, you can configure environment variables that will be accessible inside the container. A lot of Docker containers will use that for their configuration. We\u2019ll just use a simple \u201cHELLO=WORLD\u201d variable for this example:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/9.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Finish")," to complete this wizard, and then click ",(0,r.yg)("strong",{parentName:"p"},"OK")," to exit out of the Preferences menu:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/10.jpg")}),(0,r.yg)("p",null,"At the end of the wizard, if the base container is not available already on your system, you will need to initiate a docker-pull. There are two methods of doing this. We\u2019ll look at the simplest method first."),(0,r.yg)("p",null,"(note: this docker pull only needs to occur once per-container, unless you deleted the container, deleted and reimported the GNS3 VM, or if you\u2019re attempting to upgrade the container, etc...)"),(0,r.yg)("p",null,"As stated previously, this container is found in the End Devices toolbar:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/11.jpg")}),(0,r.yg)("p",null,"Drag and drop an instance of the container into the topology (internet access is required at this point), and GNS3 will initiate the docker pull. You\u2019ll see the progress in the GNS3 Console pane:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/12.jpg")}),(0,r.yg)("p",null,"The second option is almost as easy, but it does require that you enter the GNS3 VM\u2019s shell (or use a terminal, if running GNS3 in Linux). You manually initiate the docker pull by using the command ",(0,r.yg)("inlineCode",{parentName:"p"},"docker pull :"),". In this instance, it\u2019s ",(0,r.yg)("inlineCode",{parentName:"p"},"docker pull alpine:latest"),", as shown below:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/13.jpg")}),(0,r.yg)("p",null,"(This screenshot was taken after having initiating the docker pull via the GNS3 GUI, so the docker engine is just letting us know that we have the latest version. Had there been an updated version published (or if the pull hadn\u2019t been run in the GUI already), you\u2019d see the same progress as shown in the GNS3 console)"),(0,r.yg)("p",null,"Next, you can start the container in the topology, and open a console window. The \u201cenv\u201d command was to show the environmental variables:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/docker-support-in-gns3/14.jpg")}),(0,r.yg)("p",null,"Please note that network interfaces will be available only when a cable is connected!"),(0,r.yg)("h2",{id:"persistence"},"Persistence"),(0,r.yg)("p",null,"By default, changes made to the read/write layer of the container are not written to disk, thus not persistent across reboots. The container needs to be designed in advance for this behavior to be changed."),(0,r.yg)("p",null,"If, in the Dockerfile, the container mounts volumes, GNS3 will create in a folder (within the overall Project Folder for this project) for each of the Docker volumes, and will write files inside those."),(0,r.yg)("p",null,"This means if you use a container outside GNS3, that data will not be available. But, this also means that all the data of the current GNS3 project is stored in the same location."),(0,r.yg)("h2",{id:"networking"},"Networking"),(0,r.yg)("p",null,"When you use a normal Docker installation, the networking part is managed for you. Because GNS3 uses docker to simulate a computer, you need to configure it by hand."),(0,r.yg)("p",null,"The file \u201c/etc/network/interfaces\u201d is read at container start and you can edit it from within the container, or you can also graphically edit that file in the GNS3 GUI, by right-clicking on a stopped instance of the container in a topology, selecting \u201cEdit Config\u201d, edit the ",(0,r.yg)("inlineCode",{parentName:"p"},"/etc/network/interfaces")," file in the resulting pop up window, selecting \u201cSave\u201d, and then starting the container."),(0,r.yg)("p",null,"This file contains a sample config that you can tune to adapt the config to suit your simulated network within the topology (like assigning it a static IP, or setting it to use DHCP). The directory ",(0,r.yg)("inlineCode",{parentName:"p"},"/etc/network")," is persisted on disk on a per-project basis."),(0,r.yg)("h2",{id:"vnc"},"VNC"),(0,r.yg)("p",null,"You can launch graphical programs if you choose VNC as the console type. Behind the scenes, GNS3 will start a fake Xserver (using Xvfb) and inject it in the container. After that this X server is exposed to the network via X11VNC. You don\u2019t need to modify your container to get VNC support. A limitation of this, is that any container can access the X socket of other containers."),(0,r.yg)("h2",{id:"http"},"HTTP"),(0,r.yg)("p",null,"You can replace the telnet console with a web page, if your container is running a web server. This support will not work for some applications, because we just forward the data without interpreting the data being passed by HTTP."),(0,r.yg)("h2",{id:"auxiliary-console"},"Auxiliary Console"),(0,r.yg)("p",null,"By default, we start a /bin/sh as an auxiliary console. This allows you to get a shell for a container, where the start command is not a shel,l or if the console type is VNC. Under the hood, it\u2019s a docker exec starting a custom busybox shell. For technical reasons, this is slower than the standard telnet console."),(0,r.yg)("h2",{id:"images-designed-for-running-inside-gns3"},"Images designed for running inside GNS3"),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://hub.docker.com/u/gns3/"},"https://hub.docker.com/u/gns3/")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/a94aed5d.02a9d294.js b/build/assets/js/a94aed5d.02a9d294.js new file mode 100644 index 00000000..191b3f90 --- /dev/null +++ b/build/assets/js/a94aed5d.02a9d294.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4296],{5680:(e,t,r)=>{r.d(t,{xA:()=>p,yg:()=>m});var a=r(6540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),g=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=g(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=g(r),u=n,m=c["".concat(l,".").concat(u)]||c[u]||d[u]||i;return r?a.createElement(m,s(s({ref:t},p),{},{components:r})):a.createElement(m,s({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,s=new Array(i);s[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[c]="string"==typeof e?e:n,s[1]=o;for(var g=2;g{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>g,default:()=>m,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var a=r(8168),n=r(8587),i=(r(6540),r(5680)),s=r(6025),o=["components"],l={id:"setup-wizard-local-server",title:"GNS3 Setup Wizard - Local server",sidebar_label:"Setup wizard for local server"},g=void 0,p={unversionedId:"getting-started/setup-wizard-local-server",id:"getting-started/setup-wizard-local-server",title:"GNS3 Setup Wizard - Local server",description:"Introduction",source:"@site/docs/getting-started/setup-wizard-local-server.md",sourceDirName:"getting-started",slug:"/getting-started/setup-wizard-local-server",permalink:"/docs/getting-started/setup-wizard-local-server",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/setup-wizard-local-server.md",tags:[],version:"current",frontMatter:{id:"setup-wizard-local-server",title:"GNS3 Setup Wizard - Local server",sidebar_label:"Setup wizard for local server"},sidebar:"someSidebar",previous:{title:"GNS3 on Equinix",permalink:"/docs/getting-started/installation/gns3-on-equinix"},next:{title:"Setup wizard for GNS3 VM",permalink:"/docs/getting-started/setup-wizard-gns3-vm"}},c={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Overview",id:"overview",level:2},{value:"Manually starting the Setup Wizard",id:"manually-starting-the-setup-wizard",level:2},{value:"Disable the Setup Wizard",id:"disable-the-setup-wizard",level:2},{value:"Using the GNS3 Setup Wizard",id:"using-the-gns3-setup-wizard",level:2}],u={toc:d};function m(e){var t=e.components,r=(0,n.A)(e,o);return(0,i.yg)("wrapper",(0,a.A)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"introduction"},"Introduction"),(0,i.yg)("p",null,"This document explains how use the GNS3 Setup Wizard to configure a GNS3 local server. This is also called a local Dynamips implementation of GNS3."),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"If you want to use IOSvL2, IOU, IOSv, IOS-XRv, ASAv or want to create more complex topologies, the GNS3 VM is recommended for Windows and Mac OS implementations (it\u2019s optional for Linux users). ")),(0,i.yg)("p",null,"Video: ",(0,i.yg)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=C9JEq6CBaJo"},"https://www.youtube.com/watch?v=C9JEq6CBaJo")),(0,i.yg)("h2",{id:"overview"},"Overview"),(0,i.yg)("p",null,"The GNS3 Setup Wizard is displayed when GNS3 starts up for the first time. This provides an easy way to initially configure GNS3 options:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/1.jpg")}),(0,i.yg)("h2",{id:"manually-starting-the-setup-wizard"},"Manually starting the Setup Wizard"),(0,i.yg)("p",null,"You can also manually start the Setup Wizard at any time by clicking ",(0,i.yg)("strong",{parentName:"p"},"\u2018Help\u2019")," and then ",(0,i.yg)("strong",{parentName:"p"},"\u2018Setup Wizard\u2019")," in the GNS3 GUI:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/2.jpg")}),(0,i.yg)("h2",{id:"disable-the-setup-wizard"},"Disable the Setup Wizard"),(0,i.yg)("p",null,"As of the GNS3 2.2.0 release, the default is for ",(0,i.yg)("strong",{parentName:"p"},"\u201cDon\u2019t show this again\u201d")," on the first Setup Wizard screen to be selected."),(0,i.yg)("p",null,"With previous GNS3 releases (like the 2.1.x series), this was not the case. "),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/3.jpg")}),(0,i.yg)("h2",{id:"using-the-gns3-setup-wizard"},"Using the GNS3 Setup Wizard"),(0,i.yg)("p",null,"Select ",(0,i.yg)("strong",{parentName:"p"},'"Run appliances on my local computer"')," in the Wizard and click ",(0,i.yg)("strong",{parentName:"p"},"'Next >'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/4.jpg")}),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"This guide explains the Local server set up. For the Local GNS3 VM guide ",(0,i.yg)("a",{parentName:"p",href:"setup-wizard-gns3-vm"},"click here"))),(0,i.yg)("p",null,"For Windows and Mac OSX users, running appliances on your local computer will limit you to only running certain devices, like the legacy IOS images that Dynamips supports (see here), VPCS, and the other devices that GNS3 includes in the base installation (like VPCS, the built-in hub and ethernet switches, etc\u2026)"),(0,i.yg)("p",null,"This is not the case with users running GNS3 in Linux. GNS3 can run IOS images, QEMU/KVM VMs, and Docker containers natively, so they should select the local server optional, unless they are optionally using the GNS3 VM instead."),(0,i.yg)("p",null,"The next screen shows the server path (the directory gns3server.exe is stored in locally), the Host binding, and the port GNS3 will use to connect to gns3server.exe. Alter these settings to suit your local environment, and click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/5.jpg")}),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"While there is a lengthy dropdown list of possible host binding addresses, opting for the 127.0.0.1 local loopback address tends to be the most trouble-free option. ")),(0,i.yg)("p",null,"After clicking ",(0,i.yg)("strong",{parentName:"p"},"\u2018Next\u2019"),", you should get a validation screen:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/6.jpg")}),(0,i.yg)("p",null,"Some anti-virus suites will block the connection attempt, so you may need to create exception/whitelist entries for the gns3server, ubridge, and dynamips executables in order for the connection validation to be successful."),(0,i.yg)("p",null,"Performing that operation varies between antivirus suites, so you\u2019ll need to refer to their relevant documentation to learn how to do this. "),(0,i.yg)("p",null,"By default, gns3server, ubridge, and dynamips should already be allowed through the Windows firewall. It\u2019s worth double checking to ensure that\u2019s the case."),(0,i.yg)("p",null,"Once the connection to the local server has been validated, clicking ",(0,i.yg)("strong",{parentName:"p"},"'Next'")," will show you a brief summary:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/7.jpg")}),(0,i.yg)("p",null,"(notice that the Server Type lists \u201cLocal\u201d, in the above image)"),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"'Finish'")),(0,i.yg)("p",null,"With recent releases of GNS3, devices are typically installed using the Import Appliance wizard (File->Import Appliance). The appropriate appliance templates for the devices you wish to use, are available in the GNS3 Marketplace. However, this article will discuss adding and configuring a supported IOS image manually, as the articles here and here discuss appliance templates, and using the Import Appliance Wizard to automate installation of images/VMs/docker containers."),(0,i.yg)("p",null,"In the GNS3 GUI, click ",(0,i.yg)("strong",{parentName:"p"},"Edit > Preferences"),", to open the preferences menu."),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/8.jpg")}),(0,i.yg)("p",null,"In the preferences menu, select ",(0,i.yg)("strong",{parentName:"p"},"'IOS Routers and New'"),", to begin the process of importing an image."),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/9.jpg")}),(0,i.yg)("p",null,"You\u2019ll be prompted which server you\u2019d like to run the image with, but everything except ",(0,i.yg)("strong",{parentName:"p"},"'Run the IOS router on my local computer'")," should be greyed out."),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/10.jpg")}),(0,i.yg)("p",null,"(the option to run the image via the GNS3 VM isn\u2019t greyed out in the above picture, since the GNS3 VM had previously been set up on this PC)"),(0,i.yg)("p",null,"On the next screen, click ",(0,i.yg)("strong",{parentName:"p"},"'Browse'")," to import a supported IOS image:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/11.jpg")}),(0,i.yg)("p",null,"Browse to the folder where you have stored your Cisco IOS images, select the image, and click ",(0,i.yg)("strong",{parentName:"p"},"'Open'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/12.jpg")}),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"Some vendors provide images of their systems for free. Others do not, and you are required to provide your own images. The GNS3 team are unable to legally provide Cisco IOS images to anyone.")),(0,i.yg)("p",null,"GNS3 can decompress IOS images to allow for quicker booting of routers in your GNS3 topologies. This is recommended for a better user experience. Click ",(0,i.yg)("strong",{parentName:"p"},"'Yes'")," to decompress the image:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/13.jpg")}),(0,i.yg)("p",null,"The directory where the decompressed image is stored is displayed. Click ",(0,i.yg)("strong",{parentName:"p"},"'Next'")," to continue the setup: "),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/14.jpg")}),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"Name and platform")," window displays. Confirm the Platform selection, and configure the router Name. Click ",(0,i.yg)("strong",{parentName:"p"},"'Next'")," : "),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/15.jpg")}),(0,i.yg)("p",null,"A Default RAM setting is displayed. It is important that you check your Router's minimum memory requirements using the Cisco website. Click the ",(0,i.yg)("strong",{parentName:"p"},"'Check for minimum and maximum RAM requirement'")," option:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/16.jpg")}),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"Cisco Feature Navigator")," is opened in your default web browser. Select ",(0,i.yg)("strong",{parentName:"p"},"Image Name")," and enter the name of the image you are using: "),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/17.jpg")}),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"Search for Image(s)"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/18.jpg")}),(0,i.yg)("p",null,"The minimum DRAM requirements for the IOS are displayed. Note the value for your IOS image:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/19.jpg")}),(0,i.yg)("p",null,"Set the Default RAM value to the value recommended by the Cisco Feature Navigator (yours may be different to the screenshot) and click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),": "),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/20.jpg")}),(0,i.yg)("p",null,"Select your preferred Network adapters. This is device dependant."),(0,i.yg)("p",null,"In this example both Ethernet Serial interfaces will be added to the router. Once selected, click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/21.jpg")}),(0,i.yg)("p",null,"The c3725 IOS images will have the GT96100-FE dual Fast Ethernet adapter installed in slot 0 by default, and you can add extra adapters in slots 1 and 2. The types of adapters, and how many slots you are allowed to add will depend on the IOS image in use."),(0,i.yg)("p",null,"Once you have configured the network adapters, click ",(0,i.yg)("strong",{parentName:"p"},"'Next'")," to add WIC adapters (again, this is IOS image dependent):"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/22.jpg")}),(0,i.yg)("p",null,"When you have added WIC adapters (if available), click ",(0,i.yg)("strong",{parentName:"p"},"'Next >'")),(0,i.yg)("p",null,"It is important for optimum GNS3 performance that an ",(0,i.yg)("strong",{parentName:"p"},"Idle-PC")," value be selected. Occasionally, some images will already display an ",(0,i.yg)("strong",{parentName:"p"},"Idle-PC")," value:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/23.jpg")}),(0,i.yg)("p",null,"If a green Idle-PC value is NOT shown then click the ",(0,i.yg)("strong",{parentName:"p"},"'Idle-PC finder'")," button to find an Idle-PC value:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/24.jpg")}),(0,i.yg)("p",null,"If you selected the ",(0,i.yg)("strong",{parentName:"p"},"'Idle-PC finder'")," button (only necessary if no value was detected automatically), GNS3 will calculate a value:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/25.jpg")}),(0,i.yg)("p",null,"(note, this may take a few moments, depending on the speed of your PC)\nAn Idle-PC value is displayed. Click ",(0,i.yg)("strong",{parentName:"p"},"'OK'")," to complete:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/26.jpg")}),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"If no Idle-PC value is displayed, try clicking the Idle-PC finder button again. You may also need to reboot your computer and try again is no value is found. It\u2019s incredibly important to have an idle-pc value when using supported IOS images. Without this value, DynaMIPS can\u2019t prevent an instance of an IOS image from consuming 100% of a CPU core or hardware thread (in the case of CPUs capable of hyperthreading).")),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"'Finish'")," to complete the GNS3 Setup Wizard: "),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/27.jpg")}),(0,i.yg)("p",null,"In this instance, the IDLE PC value was already specified, according to the value listed in this page, so you can click ",(0,i.yg)("strong",{parentName:"p"},"'Finish'"),", instead of going through the IDLE-PC finder process."),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"Preferences")," window displays showing the settings you have configured through the Setup Wizard. Click ",(0,i.yg)("strong",{parentName:"p"},"'OK'")," to complete the process:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/28.jpg")}),(0,i.yg)("p",null,"(notice that the name of your PC will be listed next to \u2018Server\u2019 in the shown settings. That is further indication that this router will be run via the local computer, as opposed to the GNS3 VM)"),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"New Project")," Window displays. Give your new Project a ",(0,i.yg)("strong",{parentName:"p"},"Name")," and click ",(0,i.yg)("strong",{parentName:"p"},"'OK'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/29.jpg")}),(0,i.yg)("p",null,"The GNS3 workspace displays:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/setup-wizard-local-server/30.jpg")}),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Congratulations!")," You are now ready to create your first GNS3 topologies. ",(0,i.yg)("a",{parentName:"p",href:"your-first-gns3-topology"},"Click here to create a basic GNS3 topology")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/aa11fbf4.2872790a.js b/build/assets/js/aa11fbf4.2872790a.js new file mode 100644 index 00000000..e2794c7f --- /dev/null +++ b/build/assets/js/aa11fbf4.2872790a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2669],{5680:(e,n,t)=>{t.d(n,{xA:()=>g,yg:()=>y});var i=t(6540);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function s(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=i.createContext({}),l=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},g=function(e){var n=l(e.components);return i.createElement(p.Provider,{value:n},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,g=o(e,["components","mdxType","originalType","parentName"]),c=l(t),u=a,y=c["".concat(p,".").concat(u)]||c[u]||m[u]||r;return t?i.createElement(y,s(s({ref:n},g),{},{components:t})):i.createElement(y,s({ref:n},g))}));function y(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,s=new Array(r);s[0]=u;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o[c]="string"==typeof e?e:a,s[1]=o;for(var l=2;l{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>p,metadata:()=>g,toc:()=>m});var i=t(8168),a=t(8587),r=(t(6540),t(5680)),s=t(6025),o=["components"],p={id:"import-gns3-appliance",title:"Import GNS3 appliance",sidebar_label:"Import GNS3 appliance"},l=void 0,g={unversionedId:"using-gns3/beginners/import-gns3-appliance",id:"using-gns3/beginners/import-gns3-appliance",title:"Import GNS3 appliance",description:"This document assumes that you already have both the GNS3 Graphical User Interface installed (GNS3-all-in-one) and the GNS3 VM integrated with GNS3. Please refer to other guides for more details on how to install the GNS3 all-in-one package and how to download and configure the GNS3 VM.",source:"@site/docs/using-gns3/beginners/import-gns3-appliance.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/import-gns3-appliance",permalink:"/docs/using-gns3/beginners/import-gns3-appliance",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/import-gns3-appliance.md",tags:[],version:"current",frontMatter:{id:"import-gns3-appliance",title:"Import GNS3 appliance",sidebar_label:"Import GNS3 appliance"},sidebar:"someSidebar",previous:{title:"Install an appliance from the GNS3 Marketplace",permalink:"/docs/using-gns3/beginners/install-from-marketplace"},next:{title:"Link Control",permalink:"/docs/using-gns3/beginners/link-control"}},c={},m=[{value:"Import the Appliance",id:"import-the-appliance",level:2},{value:"View Appliance Settings",id:"view-appliance-settings",level:2},{value:"Use the Appliance",id:"use-the-appliance",level:2}],u={toc:m};function y(e){var n=e.components,t=(0,a.A)(e,o);return(0,r.yg)("wrapper",(0,i.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"This document assumes that you already have both the GNS3 Graphical User Interface installed (GNS3-all-in-one) and the GNS3 VM integrated with GNS3. Please refer to other guides for more details on how to install the GNS3 all-in-one package and how to download and configure the GNS3 VM.")),(0,r.yg)("h2",{id:"import-the-appliance"},"Import the Appliance"),(0,r.yg)("p",null,"In the GNS3 user interface, click ",(0,r.yg)("strong",{parentName:"p"},"File")," and then ",(0,r.yg)("strong",{parentName:"p"},"Import appliance"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/1.jpg")}),(0,r.yg)("p",null,"Navigate to your ",(0,r.yg)("strong",{parentName:"p"},"Downloads")," folder, select the appliance and then click ",(0,r.yg)("strong",{parentName:"p"},"Open"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/2.jpg")}),(0,r.yg)("p",null,"The ",(0,r.yg)("strong",{parentName:"p"},"Server")," window displays. This article is using the GNS3 VM to run the IOSvL2, so the other two options are greyed out. Click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/3.jpg")}),(0,r.yg)("p",null,"The QEMU settings window displays. The 2.2.0 version of the GNS3 VM includes the 64 and 32 bit QEMU 3.1.0 binaries. Since IOSvL2 requires use of a 64 bit QEMU binary, Click ",(0,r.yg)("strong",{parentName:"p"},"Next >"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/4.jpg")}),(0,r.yg)("p",null,"The Required files window displays:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/5.jpg")}),(0,r.yg)("p",null,"Select the version of the VM you wish to install, highlight its file name, and click \u201cImport\u201d."),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/6.jpg")}),(0,r.yg)("p",null,"(this presumes you already have that file contained in your filesystem. If you do not, you can click ",(0,r.yg)("strong",{parentName:"p"},"Download"),", which will open a new browser tab with the relevant website open. Not all images/VMs are free. As such, clicking ",(0,r.yg)("strong",{parentName:"p"},"Download")," for ones like IOSvL2 will redirect you to the Cisco\u2019s ",(0,r.yg)("strong",{parentName:"p"},"VIRL")," website)"),(0,r.yg)("p",null,"A window opens, in order to browse your filesystem and select the relevant image file/virtual disk image for the device you\u2019re trying to import. Click ",(0,r.yg)("strong",{parentName:"p"},"Open"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/7.jpg")}),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"GNS3 will search the GNS3 images directory by default. If the file is not found, you will need to navigate your filesystem to find that file.")),(0,r.yg)("p",null,"As the GNS3 VM is used in the article, GNS3 will check the md5sum and size of the file against the values listed in the .gns3a template. If those are matches, GNS3 will upload a copy of that file to the GNS3 VM."),(0,r.yg)("p",null,"If the file was successfully uploaded to the GNS3 VM, you\u2019ll see a green box in the upper-right corner of the GNS3 GUI indicated that."),(0,r.yg)("p",null,"Note that in the ",(0,r.yg)("strong",{parentName:"p"},"Required file")," window, that status of that VM has now changed from ",(0,r.yg)("strong",{parentName:"p"},"\u201cMissing\u201d/\u201dMissing files\u201d")," to ",(0,r.yg)("strong",{parentName:"p"},"\u201cReady to install\u201d"),". Click on the version name of that VM, and click ",(0,r.yg)("strong",{parentName:"p"},"Next>"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/8.jpg")}),(0,r.yg)("p",null,"A confirmation prompt is displayed. Click ",(0,r.yg)("strong",{parentName:"p"},"Yes")," to install the appliance:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/9.jpg")}),(0,r.yg)("p",null,"A ",(0,r.yg)("strong",{parentName:"p"},"Usage")," screen is displayed. Click ",(0,r.yg)("strong",{parentName:"p"},"Finish")," to complete the appliance addition"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/10.jpg")}),(0,r.yg)("p",null,"(What is listed in the ",(0,r.yg)("strong",{parentName:"p"},"Usage")," window will vary, based on the imported device. As IOSvL2 is a Multilayer switch vm, it will be added to the ",(0,r.yg)("strong",{parentName:"p"},"Switch")," category in the ",(0,r.yg)("strong",{parentName:"p"},"Device Toolbar"),". Note that this window indicates that are no configured default password or enable passwords, nor is there a default configuration present for this device. This will vary, based on the device. )"),(0,r.yg)("p",null,"The appliance is added to GNS3 and a success message displayed. Click ",(0,r.yg)("strong",{parentName:"p"},"OK"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/11.jpg")}),(0,r.yg)("p",null,"Click the ",(0,r.yg)("strong",{parentName:"p"},"Browse all Devices")," menu option to view the newly imported GNS3 appliance:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/12.jpg")}),(0,r.yg)("h2",{id:"view-appliance-settings"},"View Appliance Settings"),(0,r.yg)("p",null,"Optional: You can view and change the appliance settings by clicking ",(0,r.yg)("strong",{parentName:"p"},"Edit")," and then ",(0,r.yg)("strong",{parentName:"p"},"Preferences")," in the GNS3 GUI:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/13.jpg")}),(0,r.yg)("p",null,"Click on the appliance type to view the appliance details:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/14.jpg")}),(0,r.yg)("p",null,"(the setting listed to the right will vary, based on the type of device)"),(0,r.yg)("p",null,"If you do want to alter this appliances setting, ensure it is selected, and click ",(0,r.yg)("strong",{parentName:"p"},"Edit"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/15.jpg")}),(0,r.yg)("h2",{id:"use-the-appliance"},"Use the Appliance"),(0,r.yg)("p",null,"Once you have imported the new appliance into GNS3, you can create topologies which include the new appliance. Drag and drop the appliance from the ",(0,r.yg)("strong",{parentName:"p"},"GNS3 Toolbar")," to the ",(0,r.yg)("strong",{parentName:"p"},"GNS3 Workspace"),"."),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/16.jpg")}),(0,r.yg)("p",null,"Build your GNS3 topology by dragging devices from the ",(0,r.yg)("strong",{parentName:"p"},"GNS3 Device Toolbar")," (1) to the ",(0,r.yg)("strong",{parentName:"p"},"GNS3 Workspace")," (2) and connecting them as desired:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/17.jpg")}),(0,r.yg)("p",null,"Once you have created your topology, start the appliance: right click on the appliance and click ",(0,r.yg)("strong",{parentName:"p"},"Start"),"):"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/18.jpg")}),(0,r.yg)("p",null,"(optionally, you can press the Play/Resume bottom in the Toolbar to start all topology devices simultaneously)"),(0,r.yg)("p",null,"To open a console to this device: right click on the appliance and click ",(0,r.yg)("strong",{parentName:"p"},"Console"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/19.jpg")}),(0,r.yg)("p",null,"(optionally, you can also click the ",(0,r.yg)("strong",{parentName:"p"},"Console All")," button in the toolbar. A console window will not open for any devices that are currently shutdown or paused)"),(0,r.yg)("p",null,"The appliance console displays:"),(0,r.yg)("img",{alt:"screenshot",src:(0,s.A)("img/using-gns3/beginners/import-gns3-appliance/20.jpg")}),(0,r.yg)("p",null,"Start other devices in your topology as required and configure your GNS3 network."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Congratulations!")," You have successfully imported an appliance."))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/ae444171.ccff1340.js b/build/assets/js/ae444171.ccff1340.js new file mode 100644 index 00000000..5637abda --- /dev/null +++ b/build/assets/js/ae444171.ccff1340.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[7128],{5680:(e,n,t)=>{t.d(n,{xA:()=>d,yg:()=>y});var o=t(6540);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=o.createContext({}),c=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},d=function(e){var n=c(e.components);return o.createElement(l.Provider,{value:n},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},p=o.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(t),p=a,y=u["".concat(l,".").concat(p)]||u[p]||g[p]||r;return t?o.createElement(y,i(i({ref:n},d),{},{components:t})):o.createElement(y,i({ref:n},d))}));function y(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,i=new Array(r);i[0]=p;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>d,toc:()=>g});var o=t(8168),a=t(8587),r=(t(6540),t(5680)),i=t(6025),s=["components"],l={id:"your-first-cisco-topology",title:"Your First Cisco Topology",sidebar_label:"Your first Cisco topology"},c=void 0,d={unversionedId:"getting-started/your-first-cisco-topology",id:"getting-started/your-first-cisco-topology",title:"Your First Cisco Topology",description:"Introduction",source:"@site/docs/getting-started/your-first-cisco-topology.md",sourceDirName:"getting-started",slug:"/getting-started/your-first-cisco-topology",permalink:"/docs/getting-started/your-first-cisco-topology",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/your-first-cisco-topology.md",tags:[],version:"current",frontMatter:{id:"your-first-cisco-topology",title:"Your First Cisco Topology",sidebar_label:"Your first Cisco topology"},sidebar:"someSidebar",previous:{title:"Your first GNS3 topology",permalink:"/docs/getting-started/your-first-gns3-topology"},next:{title:"The GNS3 GUI",permalink:"/docs/using-gns3/beginners/the-gns3-gui"}},u={},g=[{value:"Introduction",id:"introduction",level:2},{value:"Create your Topology",id:"create-your-topology",level:2}],p={toc:g};function y(e){var n=e.components,t=(0,a.A)(e,s);return(0,r.yg)("wrapper",(0,o.A)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"introduction"},"Introduction"),(0,r.yg)("p",null,"This document explains how to configure a simple GNS3 topology consisting of two Cisco routers. The set up shown here is the same when using either a local GNS3 installation or a GNS3 VM environment."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"This document assumes that you already have GNS3 installed and a Cisco IOS router image added to GNS3. If not, please refer to other guides which explain how to download, install and configure GNS3.")),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Video: ",(0,r.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=YQcWuWGjppY"},"https://www.youtube.com/watch?v=YQcWuWGjppY"))),(0,r.yg)("h2",{id:"create-your-topology"},"Create your Topology"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"To create a new GNS3 topology, select a group of devices in the Devices Toolbar by clicking the device type button. In this example the Routers group was selected:")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/1.jpg")}),(0,r.yg)("ol",{start:2},(0,r.yg)("li",{parentName:"ol"},"In this example, a c3725 IOS image has already been imported, so we\u2019ll use it."),(0,r.yg)("li",{parentName:"ol"},"Drag and drop the selected node (device) to the GNS3 ",(0,r.yg)("strong",{parentName:"li"},"Workspace"),". An instance of the node becomes available in the ",(0,r.yg)("strong",{parentName:"li"},"Workspace"),". In this example a router is now available:")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/2.jpg")}),(0,r.yg)("ol",{start:4},(0,r.yg)("li",{parentName:"ol"},"Drag and drop the node again into the GNS3 ",(0,r.yg)("strong",{parentName:"li"},"Workspace"),", which will result in routers R1 and R2 appearing in both the ",(0,r.yg)("strong",{parentName:"li"},"Workspace"),", and the ",(0,r.yg)("strong",{parentName:"li"},"Topology Summary"),":")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/3.jpg")}),(0,r.yg)("ol",{start:5},(0,r.yg)("li",{parentName:"ol"},"Click the ",(0,r.yg)("strong",{parentName:"li"},"Toolbar Device")," button again (or the X in the corner of it) to collapse the group:")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/4.jpg")}),(0,r.yg)("ol",{start:6},(0,r.yg)("li",{parentName:"ol"},"Click the ",(0,r.yg)("strong",{parentName:"li"},"Add a Link")," button to start adding links to your topology. The mouse cursor will change to indicate that links can be added:")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/5.jpg")}),(0,r.yg)("ol",{start:7},(0,r.yg)("li",{parentName:"ol"},"Click on a device in your topology to display available interfaces. In this example we\u2019ll use FastEthernet0/0 of each router to connect them together:")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/6.jpg")}),(0,r.yg)("ol",{start:8},(0,r.yg)("li",{parentName:"ol"},"Left click FastEthernet0/0 of R1, and connect it to FastEthernet0/0 of R2.")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/7.jpg")}),(0,r.yg)("ol",{start:9},(0,r.yg)("li",{parentName:"ol"},"Click the Interface Names icon (this is optional), to display the interfaces on each device, that have been connected together.")),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/8.jpg")}),(0,r.yg)("p",null,"Below, the green ",(0,r.yg)("strong",{parentName:"p"},"Start")," button (marked #1) and the ",(0,r.yg)("strong",{parentName:"p"},"Console")," button (marked #2) have been selected. This powers on all devices in the ",(0,r.yg)("strong",{parentName:"p"},"Workspace"),", as well as launches Solar-Putty and creates tabs for each device:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/your-first-cisco-topology/9.jpg")}),(0,r.yg)("p",null,"Now let\u2019s configure the routers!"),(0,r.yg)("p",null,"Since these are IOS images, they will act like real routers, as you\u2019ll see."),(0,r.yg)("p",null,"After R1 loads up, we\u2019ll already be at the enable prompt, due to the configuration files GNS3 includes (they also configure \u201clogging sync\u201d and \u201cexec-time 0 0\u201d on line con 0 for us, and let us bypass that initial configuration dialog). Let\u2019s look at the interfaces of R1:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1# sh ip int br\nInterface IP-Address OK? Method Status Protocol\nFastEthernet0/0 unassigned YES unset administratively down down\nSerial0/0 unassigned YES unset administratively down down\nFastEthernet0/1 unassigned YES unset administratively down down\nSerial0/1 unassigned YES unset administratively down down\nSerial0/2 unassigned YES unset administratively down down\nSerial0/3 unassigned YES unset administratively down down\nSerial0/4 unassigned YES unset administratively down down\nSerial0/5 unassigned YES unset administratively down down\nFastEthernet1/0 unassigned YES unset administratively down down\nFastEthernet2/0 unassigned YES unset administratively down down\nR1#\n")),(0,r.yg)("p",null,"As you can see, the interfaces are all administratively down/down.\nThe same is true of R2:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R2# sh ip int br\nInterface IP-Address OK? Method Status Protocol\nFastEthernet0/0 unassigned YES unset administratively down down\nSerial0/0 unassigned YES unset administratively down down\nFastEthernet0/1 unassigned YES unset administratively down down\nSerial0/1 unassigned YES unset administratively down down\nSerial0/2 unassigned YES unset administratively down down\nSerial0/3 unassigned YES unset administratively down down\nSerial0/4 unassigned YES unset administratively down down\nSerial0/5 unassigned YES unset administratively down down\nFastEthernet1/0 unassigned YES unset administratively down down\nFastEthernet2/0 unassigned YES unset administratively down down\nR2#\n")),(0,r.yg)("p",null,"Let\u2019s configure interface fa0/0 and loopback0 of R1:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1# conf t\nEnter configuration commands, one per line. End with CNTL/Z.\nR1(config)# int fa0/0\nR1(config-if)#ip add 10.1.1.1 255.255.255.0\nR1(config-if)#int loop 0\nR1(config-if)#ip add\n*Mar 1 00:03:42.663: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up\nR1(config-if)#ip add 1.1.1.1 255.255.255.255\nR1(config-if)# end\nR1#sh ip int br\nInterface IP-Address OK? Method Status Protocol\nFastEthernet0/0 10.1.1.1 YES manual administratively down down\nSerial0/0 unassigned YES unset administratively down down\nFastEthernet0/1 unassigned YES unset administratively down down\nSerial0/1 unassigned YES unset administratively down down\nSerial0/2 unassigned YES unset administratively down down\nSerial0/3 unassigned YES unset administratively down down\nSerial0/4 unassigned YES unset administratively down down\nSerial0/5 unassigned YES unset administratively down down\nFastEthernet1/0 unassigned YES unset administratively down down\nFastEthernet2/0 unassigned YES unset administratively down down\nLoopback0 1.1.1.1 YES manual up up\nR1#\n")),(0,r.yg)("p",null,"That\u2019s just like a real router. We have to enable the interface first, before it will come up (virtual interfaces like loopback0 automatically get enabled when we create them. SVIs on switches are a little different, since they need to be associated with either an access port or trunk port before they come up)."),(0,r.yg)("p",null,"Let\u2019s enable fa0/0 on R1:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1(config)#int fa0/0\nR1(config-if)#no shut\nR1(config-if)#end\nR1#\n*Mar 1 00:06:52.391: %SYS-5-CONFIG_I: Configured from console by console\nR1#sh\n*Mar 1 00:06:52.667: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up\n*Mar 1 00:06:53.667: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up\n")),(0,r.yg)("p",null,"There we go! That\u2019s more like it! Now let\u2019s check those interfaces again:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1#sh ip int br\nInterface IP-Address OK? Method Status Protocol\nFastEthernet0/0 10.1.1.1 YES manual up up\nSerial0/0 unassigned YES unset administratively down down\nFastEthernet0/1 unassigned YES unset administratively down down\nSerial0/1 unassigned YES unset administratively down down\nSerial0/2 unassigned YES unset administratively down down\nSerial0/3 unassigned YES unset administratively down down\nSerial0/4 unassigned YES unset administratively down down\nSerial0/5 unassigned YES unset administratively down down\nFastEthernet1/0 unassigned YES unset administratively down down\nFastEthernet2/0 unassigned YES unset administratively down down\nLoopback0 1.1.1.1 YES manual up up\nR1#\n")),(0,r.yg)("p",null,"And as expected, fa0/0 is up/up. Let\u2019s configure the interfaces on R2 next:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R2#conf t\n\nEnter configuration commands, one per line. End with CNTL/Z.\n\nR2(config)#int fa0/0\nR2(config-if)#no shut\nR2(config-if)#\n\n*Mar 1 00:00:36.899: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up\n*Mar 1 00:00:37.899: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up\n\nR2(config-if)#ip add 10.1.1.2 255.255.255.0\nR2(config-if)#int loop 0\nR2(config-if)#\n\n*Mar 1 00:00:53.215: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up\n\nR2(config-if)#ip add 2.2.2.2 255.255.255.25\nBad mask 0xFFFFFF19 for address 2.2.2.2\nR2(config-if)#ip add 2.2.2.2 255.255.255.255\nR2(config-if)#\n")),(0,r.yg)("p",null,"Since we used \u201cno shut\u201d on int fa0/0 already, that interface has already gone up/up, and loopback0 went up/up as soon as we created that interface. But notice that error I\u2019ve bolded, where I entered the /32 subnet mask incorrectly. This is an IOS image off a real router, and as such, mistakes you make will cause the router to output messages letting you know something is amiss."),(0,r.yg)("p",null,"If we run \u201csh version\u201d on R2, we can see the image it\u2019s using, just like a physical router will:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R2#sh ver\n\nCisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)\n\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2010 by Cisco Systems, Inc.\nCompiled Tue 17-Aug-10 12:08 by prod_rel_team\nROM: ROMMON Emulation Microcode\nROM: 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)\n\n")),(0,r.yg)("p",null,"....truncated for brevity......."),(0,r.yg)("p",null,"I truncated the output, but you can can see the router knows it\u2019s running an advanced enterprise c3725 image, along with the version number."),(0,r.yg)("p",null,"Since I quickly corrected my mistake, let\u2019s see if the routers can ping one other, via the IP address assigned to their fa0/0 interfaces:"),(0,r.yg)("p",null,"At this point, R2 should be able to ping R1, which it can."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R2#ping 10.1.1.1\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:\n.!!!!\nSuccess rate is 80 percent (4/5), round-trip min/avg/max = 20/27/32 ms\nR2#\n")),(0,r.yg)("p",null,"(that single missed ping was due to the initial ARP broadcast, which is normal)."),(0,r.yg)("p",null,"R1 should also be able to ping R2, which it can:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1#ping 10.1.1.2\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 10.1.1.2, timeout is 2 seconds:\n!!!!!\nSuccess rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms\nR1#\n")),(0,r.yg)("p",null,"(there's no dropped ping, since the ARP exchange already took place)."),(0,r.yg)("p",null,"As expected, pings succeed. Now, because the routers don\u2019t contain routes to the /32 addresses assigned to each others loopback0 interfaces, let\u2019s use a routing protocol (ospf in this instance), so they can each dynamically learn how to reach those:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1(config)#router ospf 1\nR1(config-router)#router-id 1.1.1.1\nR1(config-router)#network 0.0.0.0 255.255.255.255 area 0\nR1(config-router)#end\nR1#\n")),(0,r.yg)("p",null,'(note: using "network 0.0.0.0 255.255.255.255 area 0" in ospf is a shortcut to enable ospf on all interfaces in an ospf area. It\'s not always desirable in the real world, but is fine for lab purposes)'),(0,r.yg)("p",null,"Let\u2019s do the same on R2L"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R2#conf t\nEnter configuration commands, one per line. End with CNTL/Z.\nR2(config)#router ospf 1\nR2(config-router)#router-id 2.2.2.2\nR2(config-router)#network 0.0.0.0 255.255.255.255 area 0\nR2(config-router)#end\nR2#\n*Mar 1 00:15:54.155: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done\nR2#\n*Mar 1 00:15:57.271: %SYS-5-CONFIG_I: Configured from console by console\nR2#\n")),(0,r.yg)("p",null,"(notice that an ospf neighbor relationship between R1 and R2 has already formed)"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R2#sh ip ospf neigh\nNeighbor ID Pri State Dead Time Address Interface\n1.1.1.1 1 FULL/DR 00:00:34 10.1.1.1 FastEthernet0/0\nR2#\n")),(0,r.yg)("p",null,"Running this command on R2 proves that not only was the relationship formed, but it\u2019s in the FULL state, as opposed to 2WAY or EXSTART. "),(0,r.yg)("p",null,"Now let\u2019s check the routing table on R1:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1#\n*Mar 1 00:25:43.155: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0 from LOADING to FULL, Loading Done\nR1#sh ip route\n\nCodes: C - connected, S - static, R - RIP, M - mobile, B - BGP\n D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area\n N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2\n E1 - OSPF external type 1, E2 - OSPF external type 2\n i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2\n ia - IS-IS inter area, * - candidate default, U - per-user static route\n o - ODR, P - periodic downloaded static route\n\nGateway of last resort is not set\n 1.0.0.0/32 is subnetted, 1 subnets\nC 1.1.1.1 is directly connected, Loopback0\n 2.0.0.0/32 is subnetted, 1 subnets\nO 2.2.2.2 [110/11] via 10.1.1.2, 00:03:26, FastEthernet0/0\n 10.0.0.0/24 is subnetted, 1 subnets\nC 10.1.1.0 is directly connected, FastEthernet0/0\nR1#\n")),(0,r.yg)("p",null,"R1 already displayed the neighbor relationship was formed earlier (we were just busy looking at R2), and its routing table does contain an OSPF route for 2.2.2.2."),(0,r.yg)("p",null,"We should now be able to ping the loopbacks of both routers:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1#ping 2.2.2.2\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:\n!!!!!\nSuccess rate is 100 percent (5/5), round-trip min/avg/max = 12/22/32 ms\nR1#\nR2#ping 1.1.1.1\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:\n!!!!!\nSuccess rate is 100 percent (5/5), round-trip min/avg/max = 8/14/32 ms\nR2#\n")),(0,r.yg)("p",null,"And the pings succeed! "),(0,r.yg)("p",null,"By default, GNS3 will not save the configuration changes you\u2019ve made (just like a real router), you\u2019ll need to manually save them before shutting down your routers and closing the project:"),(0,r.yg)("p",null,"We can use the long-form command:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1#copy running-config startup-config\nDestination filename [startup-config]?\nBuilding configuration...\n[OK]\n")),(0,r.yg)("p",null,"Or the short-form command:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1#wr\nBuilding configuration...\n[OK]\nR1#\n")),(0,r.yg)("p",null,"After saving your configuration changes, you can shut down your project (and even GNS3 completely if you need to), and when you reload your project at a later date, the changes you saved in this project will still be present."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Congratulations!")," You have configured a basic GNS3 topology. From here on, you can create much more complex topologies and test and learn various technologies such as OSPF, EIGRP, BGP, STP and many others."))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/b38459e8.b7bb4631.js b/build/assets/js/b38459e8.b7bb4631.js new file mode 100644 index 00000000..8d28613a --- /dev/null +++ b/build/assets/js/b38459e8.b7bb4631.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[23],{5680:(e,r,t)=>{t.d(r,{xA:()=>p,yg:()=>m});var n=t(6540);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var i=n.createContext({}),s=function(e){var r=n.useContext(i),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},p=function(e){var r=s(e.components);return n.createElement(i.Provider,{value:r},e.children)},l="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},f=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,c=e.originalType,i=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),l=s(t),f=o,m=l["".concat(i,".").concat(f)]||l[f]||d[f]||c;return t?n.createElement(m,a(a({ref:r},p),{},{components:t})):n.createElement(m,a({ref:r},p))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var c=t.length,a=new Array(c);a[0]=f;var u={};for(var i in r)hasOwnProperty.call(r,i)&&(u[i]=r[i]);u.originalType=e,u[l]="string"==typeof e?e:o,a[1]=u;for(var s=2;s{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>u,metadata:()=>s,toc:()=>l});var n=t(8168),o=t(8587),c=(t(6540),t(5680)),a=["components"],u={id:"doc2",title:"Document Number 2"},i=void 0,s={unversionedId:"docusaurus-reference/doc2",id:"docusaurus-reference/doc2",title:"Document Number 2",description:"This is a link to another document. This is a link to an external page.",source:"@site/docs/docusaurus-reference/doc2.md",sourceDirName:"docusaurus-reference",slug:"/docusaurus-reference/doc2",permalink:"/docs/docusaurus-reference/doc2",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc2.md",tags:[],version:"current",frontMatter:{id:"doc2",title:"Document Number 2"}},p={},l=[],d={toc:l};function f(e){var r=e.components,t=(0,o.A)(e,a);return(0,c.yg)("wrapper",(0,n.A)({},d,t,{components:r,mdxType:"MDXLayout"}),(0,c.yg)("p",null,"This is a link to ",(0,c.yg)("a",{parentName:"p",href:"/docs/docusaurus-reference/doc3"},"another document.")," This is a link to an ",(0,c.yg)("a",{parentName:"p",href:"http://www.example.com/"},"external page.")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/c0738d6f.fe3394ca.js b/build/assets/js/c0738d6f.fe3394ca.js new file mode 100644 index 00000000..63f2fff6 --- /dev/null +++ b/build/assets/js/c0738d6f.fe3394ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2672],{5680:(e,i,n)=>{n.d(i,{xA:()=>m,yg:()=>g});var a=n(6540);function t(e,i,n){return i in e?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n,e}function o(e,i){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);i&&(a=a.filter((function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var i=1;i=0||(t[n]=e[n]);return t}(e,i);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var s=a.createContext({}),u=function(e){var i=a.useContext(s),n=i;return e&&(n="function"==typeof e?e(i):r(r({},i),e)),n},m=function(e){var i=u(e.components);return a.createElement(s.Provider,{value:i},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var i=e.children;return a.createElement(a.Fragment,{},i)}},p=a.forwardRef((function(e,i){var n=e.components,t=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=u(n),p=t,g=d["".concat(s,".").concat(p)]||d[p]||c[p]||o;return n?a.createElement(g,r(r({ref:i},m),{},{components:n})):a.createElement(g,r({ref:i},m))}));function g(e,i){var n=arguments,t=i&&i.mdxType;if("string"==typeof e||t){var o=n.length,r=new Array(o);r[0]=p;var l={};for(var s in i)hasOwnProperty.call(i,s)&&(l[s]=i[s]);l.originalType=e,l[d]="string"==typeof e?e:t,r[1]=l;for(var u=2;u{n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>u,default:()=>g,frontMatter:()=>s,metadata:()=>m,toc:()=>c});var a=n(8168),t=n(8587),o=(n(6540),n(5680)),r=n(6025),l=["components"],s={id:"cisco-ios-images-for-dynamips",title:"Cisco IOS images for Dynamips",sidebar_label:"Cisco IOS images for Dynamips"},u=void 0,m={unversionedId:"emulators/cisco-ios-images-for-dynamips",id:"emulators/cisco-ios-images-for-dynamips",title:"Cisco IOS images for Dynamips",description:"GNS3 offers multiple ways to emulate IOS. For older images, we use and maintain Dynamips; an emulator dedicated to emulate some Cisco hardware. Dynamips can run unmodified IOS images. In the new GNS3 1.4, there is a way to run a second category of switches and routers. These are classified as Routing and Switching virtual machines (or R+Svms) for short. What are the differences? Here are the major differences:",source:"@site/docs/emulators/cisco-ios-images-for-dynamips.md",sourceDirName:"emulators",slug:"/emulators/cisco-ios-images-for-dynamips",permalink:"/docs/emulators/cisco-ios-images-for-dynamips",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/cisco-ios-images-for-dynamips.md",tags:[],version:"current",frontMatter:{id:"cisco-ios-images-for-dynamips",title:"Cisco IOS images for Dynamips",sidebar_label:"Cisco IOS images for Dynamips"},sidebar:"someSidebar",previous:{title:"Which emulator should I use?",permalink:"/docs/emulators/which-emulators-should-i-use"},next:{title:"Non-Native IOU for Windows and OSX",permalink:"/docs/emulators/non-native-iou-for-windows-and-osx"}},d={},c=[{value:"Important Points",id:"important-points",level:2},{value:"Availability",id:"availability",level:3},{value:"IOS 15.x",id:"ios-15x",level:3},{value:"Should I use a mainline and technology train image?",id:"should-i-use-a-mainline-and-technology-train-image",level:3},{value:"Minimum memory",id:"minimum-memory",level:3},{value:"Recommended images",id:"recommended-images",level:3},{value:"Idle-PC value",id:"idle-pc-value",level:3},{value:"C1700 Series",id:"c1700-series",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline",level:3},{value:"C2600 Series",id:"c2600-series",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline-1",level:3},{value:"IOS version 12.4.15T14 (Technology train)",id:"ios-version-12415t14-technology-train",level:3},{value:"C3620",id:"c3620",level:2},{value:"IOS version 12.2.26c",id:"ios-version-12226c",level:3},{value:"C3640",id:"c3640",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline-2",level:3},{value:"C3660",id:"c3660",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline-3",level:3},{value:"IOS version 12.4.15T14 (Technology train)",id:"ios-version-12415t14-technology-train-1",level:3},{value:"C2691",id:"c2691",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline-4",level:3},{value:"IOS version 12.4.15T14 (Technology train)",id:"ios-version-12415t14-technology-train-2",level:3},{value:"C3725",id:"c3725",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline-5",level:3},{value:"IOS version 12.4.15T14 (Technology train)",id:"ios-version-12415t14-technology-train-3",level:3},{value:"C3745",id:"c3745",level:2},{value:"IOS version 12.4.25d (Mainline)",id:"ios-version-12425d-mainline-6",level:3},{value:"IOS version 12.4.15T14 (Technology train)",id:"ios-version-12415t14-technology-train-4",level:3},{value:"C7200 SERIES",id:"c7200-series",level:2},{value:"IOS 15 (Mainline)",id:"ios-15-mainline",level:3},{value:"IOS 12.4.25g (Mainline)",id:"ios-12425g-mainline",level:3},{value:"IOS 12.4.24T5 (Technology train)",id:"ios-12424t5-technology-train",level:3},{value:"Cisco Catalyst Switches",id:"cisco-catalyst-switches",level:2}],p={toc:c};function g(e){var i=e.components,n=(0,t.A)(e,l);return(0,o.yg)("wrapper",(0,a.A)({},p,n,{components:i,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"GNS3 offers multiple ways to emulate IOS. For older images, we use and maintain Dynamips; an emulator dedicated to emulate some Cisco hardware. Dynamips can run unmodified IOS images. In the new GNS3 1.4, there is a way to run a second category of switches and routers. These are classified as Routing and Switching virtual machines (or R+Svms) for short. What are the differences? Here are the major differences:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"IOS images are usually run in Dynamips however R+Svms are housed in a virtual machine."),(0,o.yg)("li",{parentName:"ul"},"IOS images are lower in cpu and memory so you can fit more of them in one topology."),(0,o.yg)("li",{parentName:"ul"},"R+Svms are all vendor Routing and Switching images that are larger in size but can be imported into GNS3 for real world network emulation.")),(0,o.yg)("h2",{id:"important-points"},"Important Points"),(0,o.yg)("h3",{id:"availability"},"Availability"),(0,o.yg)("p",null,"Due to these platforms hitting End of Sale, End of Life, and End of Support status, the images are no longer available for download from Cisco\u2019s support sections. Currently, the c7200 images are the only ones still available for download for those with a support contract."),(0,o.yg)("h3",{id:"ios-15x"},"IOS 15.x"),(0,o.yg)("p",null,"Only the c7200 series get newer IOS 15 images. All other platforms are now end-of-life and only support IOS 12.4. Please note that the IOSv appliance is based on IOS 15 and there are IOU (IOS on UNIX) images with IOS 15."),(0,o.yg)("h3",{id:"should-i-use-a-mainline-and-technology-train-image"},"Should I use a mainline and technology train image?"),(0,o.yg)("p",null,"You will find the technology train images to contain the newest features but it may also contain the most bugs. We recommend Mainline over Technology train if you are interested on stability without the need of new features.Please see ",(0,o.yg)("a",{parentName:"p",href:"http://www.ciscopress.com/articles/article.asp?p=2106547"},"Cisco IOS Versions and Naming")," for more information."),(0,o.yg)("h3",{id:"minimum-memory"},"Minimum memory"),(0,o.yg)("p",null,"The minimum RAM is the amount of memory needed for IOS to work at maximum capacity with most feature configured and activated. From experience you can usually use a bit less RAM just fine."),(0,o.yg)("h3",{id:"recommended-images"},"Recommended images"),(0,o.yg)("p",null,"We really recommend using the c3640, c3660, c3725, c3745 and c7200 IOS images listed below, they have proven to be the most stable in GNS3 provided you use the right amount of RAM and Idle-PC value."),(0,o.yg)("h3",{id:"idle-pc-value"},"Idle-PC value"),(0,o.yg)("p",null,"When Dynamips runs an IOS image, a single instance can consume 100% of the processing time for a CPU core or thread. To remedy this, you can supply Dynamips with an Idle-PC value, to consume less CPU. This value will vary between devices/images. To help automate the process of determining a valid Idle-PC value, you can use the Idle-PC finder button when importing a supported IOS image into GNS3:"),(0,o.yg)("img",{alt:"screenshot",src:(0,r.A)("img/emulators/cisco-ios-images-for-dynamips/1.jpg")}),(0,o.yg)("p",null,"(Idle-PC values are not required with virtual machines or docker containers. They\u2019re only required for use by the Dynamips emulator)"),(0,o.yg)("h2",{id:"c1700-series"},"C1700 Series"),(0,o.yg)("p",null,"1700s have 1 FastEthernet fixed port (C1700-MB-1ETH) on its motherboard, 2 subslots for WICs (maximum of 2 Ethernet ports or 4 serial ports), and no Network Module slots. Note that interfaces do not use a slot designation (e.g. \u201cf0\u201d)"),(0,o.yg)("h3",{id:"ios-version-12425d-mainline"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c1700-adventerprisek9-mz.124-25d.bin\nMD5: 3ed8d56a8757771105a56070e4147716\nMinimum RAM: 128MB\nProposed idle-PC value: 0x80358a60"),(0,o.yg)("p",null,"IOS version 12.4.15T14 (Technology train)\nFile name: c1700-adventerprisek9-mz.124-15.T14.bin\nMD5: 351190de8764263e85a2b50718f394fd\nMinimum RAM: 160MB\nProposed idle-PC value: 0x824a4dc4"),(0,o.yg)("h2",{id:"c2600-series"},"C2600 Series"),(0,o.yg)("p",null,"2600s have one or two Ethernet or FastEthernet interfaces on its motherboard, 3 subslots for WICs (maximum of 6 serial ports) and 1 Network Module slot (maximum of 4 Ethernet ports or 16 FastEthernet ports)."),(0,o.yg)("h3",{id:"ios-version-12425d-mainline-1"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c2600-adventerprisek9-mz.124-25d.bin\nMD5: 8eca1f6fe57dfb3c3cf3568c0e475853\nMinimum RAM: 128MB\nProposed idle-PC value: 0x80519c48"),(0,o.yg)("h3",{id:"ios-version-12415t14-technology-train"},"IOS version 12.4.15T14 (Technology train)"),(0,o.yg)("p",null,"File name: c2600-adventerprisek9-mz.124-15.T14.bin\nMD5: 12b8548b23e2ec593652ae9310ac797f\nMinimum RAM: 256MB\nProposed idle-PC value: 0x8027ec88"),(0,o.yg)("h2",{id:"c3620"},"C3620"),(0,o.yg)("p",null,"The c3620 supports up to 2 Network Modules (maximum of 8 Ethernet ports, 32 FastEthernet ports or 8 serial ports). Note that tt shouldn\u2019t be used since the latest available IOS image is very old."),(0,o.yg)("h3",{id:"ios-version-12226c"},"IOS version 12.2.26c"),(0,o.yg)("p",null,"File name: c3620-a3jk8s-mz.122-26c.bin\nMD5: dd34b958ad362ef54ba48b187f4c97b4\nMinimum RAM: 64MB\nProposed idle-PC value: 0x603a8bac"),(0,o.yg)("h2",{id:"c3640"},"C3640"),(0,o.yg)("p",null,"The c3640 supports up to 4 Network Modules (maximum of 16 Ethernet ports, 32 FastEthernet ports or 16 serial ports)."),(0,o.yg)("h3",{id:"ios-version-12425d-mainline-2"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c3640-a3js-mz.124-25d.bin\nMD5: db9f63ca1b46d18fb835496bfffe608a\nMinimum RAM: 128MB\nProposed idle-PC value: 0x6050b114"),(0,o.yg)("h2",{id:"c3660"},"C3660"),(0,o.yg)("p",null,"The c3660 has 2 FastEthernet fixed ports (Leopard-2FE) and supports up to 6 Network Modules (maximum of 24 Ethernet ports, 32 FastEthernet ports or 24 serial ports)."),(0,o.yg)("h3",{id:"ios-version-12425d-mainline-3"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c3660-a3jk9s-mz.124-25d.bin\nMD5: 4ac7e947f13c189d746149dc74992890\nMinimum RAM: 192MB\nProposed idle-PC value: 0x606071f8"),(0,o.yg)("h3",{id:"ios-version-12415t14-technology-train-1"},"IOS version 12.4.15T14 (Technology train)"),(0,o.yg)("p",null,"File name: c3660-a3jk9s-mz.124-15.T14.bin\nMD5: 39950b7a563aa08e94a168260409f1e6\nMinimum RAM: 256MB\nProposed idle-PC value: 0x6076e0b4"),(0,o.yg)("h2",{id:"c2691"},"C2691"),(0,o.yg)("p",null,"The c2691 has 2 FastEthernet interfaces its motherboard (GT96100-FE), 3 subslots for WICs (maximum of 6 serial ports) and 1 Network Module slot (maximum of 16 FastEthernet ports or 4 serial ports)."),(0,o.yg)("h3",{id:"ios-version-12425d-mainline-4"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c2691-adventerprisek9-mz.124-25d.bin\nMD5: a8e1f5821d87456595488d6221ce42e5\nMinimum RAM: 192MB\nProposed idle-PC value: 0x60a48cb8"),(0,o.yg)("h3",{id:"ios-version-12415t14-technology-train-2"},"IOS version 12.4.15T14 (Technology train)"),(0,o.yg)("p",null,"File name: c2691-adventerprisek9-mz.124-15.T14.bin\nMD5: 91388104d7276ad09204e36d2dfcf52d\nMinimum RAM: 256MB\nProposed idle-PC value: 0x60bcf9f8"),(0,o.yg)("h2",{id:"c3725"},"C3725"),(0,o.yg)("p",null,"The c3725 has 2 FastEthernet interfaces on its motherboard (GT96100-FE), 3 subslots for WICs (maximum of 6 serial ports) and 2 Network Module slots (maximum of 32 FastEthernet ports or 8 serial ports)."),(0,o.yg)("h3",{id:"ios-version-12425d-mainline-5"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c3725-adventerprisek9-mz.24-25d.bin\nMD5: ac3d313d3caff5beeee244b81d2c024c\nMinimum RAM: 128MB\nProposed idle-PC value: 0x602467a4"),(0,o.yg)("h3",{id:"ios-version-12415t14-technology-train-3"},"IOS version 12.4.15T14 (Technology train)"),(0,o.yg)("p",null,"File name: c3725-adventerprisek9-mz.124-15.T14.bin\nMD5: 42baf17af10d9a1471bf542f0bfd07c7\nMinimum RAM: 256MB\nProposed idle-PC value: 0x60c09aa0"),(0,o.yg)("h2",{id:"c3745"},"C3745"),(0,o.yg)("p",null,"The c3745 has 2 FastEthernet interfaces on its motherboard (GT96100-FE), 3 subslots for WICs (maximum of 6 serial ports) and 4 Network Module slots (maximum of 32 FastEthernet ports or 16 serial ports)."),(0,o.yg)("h3",{id:"ios-version-12425d-mainline-6"},"IOS version 12.4.25d (Mainline)"),(0,o.yg)("p",null,"File name: c3745-adventerprisek9-mz.124-25d.bin\nMD5: 563797308a3036337c3dee9b4ab54649\nMinimum RAM: 256MB\nProposed idle-PC value: 0x60aa1da0"),(0,o.yg)("h3",{id:"ios-version-12415t14-technology-train-4"},"IOS version 12.4.15T14 (Technology train)"),(0,o.yg)("p",null,"File name: c3745-adventerprisek9-mz.124-15.T14.bin\nMD5: a696619869a972ec3a27742d38031b6a\nMinimum RAM: 256 RAM\nProposed idle-PC value: 0x602701e4"),(0,o.yg)("h2",{id:"c7200-series"},"C7200 SERIES"),(0,o.yg)("p",null,"7200s have a different architecture. Only the 7206 is supported, it has 6 Port Adapters (PA) slots. VXR chassis, NPE-400 and C7200-IO-FE are the default settings in GNS3."),(0,o.yg)("h3",{id:"ios-15-mainline"},"IOS 15 (Mainline)"),(0,o.yg)("p",null,"This router series is still getting new IOS 15.x versions.\nThe last one at this date is:\nFile name: c7200-adventerprisek9-mz.152-4.M8.bin\nMinimum RAM: 512MB"),(0,o.yg)("h3",{id:"ios-12425g-mainline"},"IOS 12.4.25g (Mainline)"),(0,o.yg)("p",null,"MD5: 3a78cb61831b3ef1530f7402f5986556\nFile name: c7200-a3jk9s-mz.124-25g.bin\nMinimum RAM: 256MB"),(0,o.yg)("h3",{id:"ios-12424t5-technology-train"},"IOS 12.4.24T5 (Technology train)"),(0,o.yg)("p",null,"This one is not the latest 12.4 version but it is easier to find.\nMD5: 3c4148f62acf56602ce3b371ebae60c9\nFile name: c7200-adventerprisek9-mz.124-24.T5\nMinimum RAM: 256MB\nProposed idle-PC value: 0x606df838"),(0,o.yg)("h2",{id:"cisco-catalyst-switches"},"Cisco Catalyst Switches"),(0,o.yg)("p",null,"Dynamips is incapable of running IOS images from Catalyst Switches, as it\u2019s unable to emulate the ASICs used in those type of devices."),(0,o.yg)("p",null,"For switching, you can use an IOU L2 binary image, or an IOSvL2 virtual disk image with Qemu."),(0,o.yg)("p",null,"However, if you want to use Dynamips you can use the EtherSwitch module with 2600s, 3600s and 3700s Series. Keep in mind that this module works differently (it uses the vlan database etc.) and does NOT support the following features:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Access Switch Device Manager (SDM) Template"),(0,o.yg)("li",{parentName:"ul"},"ACL \u2013 Improved Merging Algorithm"),(0,o.yg)("li",{parentName:"ul"},"ARP Optimization"),(0,o.yg)("li",{parentName:"ul"},"BGP Increased Support of Numbered as-path Access Lists to 500"),(0,o.yg)("li",{parentName:"ul"},"BGP Restart Neighbor Session After max-prefix Limit Reached"),(0,o.yg)("li",{parentName:"ul"},"BGP Route-Map Continue Support for Outbound Policy"),(0,o.yg)("li",{parentName:"ul"},"Clear Counters Per Port"),(0,o.yg)("li",{parentName:"ul"},"DHCP Snooping"),(0,o.yg)("li",{parentName:"ul"},"DHCP Snooping Counters"),(0,o.yg)("li",{parentName:"ul"},"Diagnostics Options on bootup"),(0,o.yg)("li",{parentName:"ul"},"ErrDisable Reactivation Per Port"),(0,o.yg)("li",{parentName:"ul"},"ErrDisable timeout"),(0,o.yg)("li",{parentName:"ul"},"EtherChannel \u2013 Flexible PAgP"),(0,o.yg)("li",{parentName:"ul"},"Etherchannel Guard"),(0,o.yg)("li",{parentName:"ul"},"Fallback Bridging"),(0,o.yg)("li",{parentName:"ul"},"Flex Link Bi-directional Fast Convergence"),(0,o.yg)("li",{parentName:"ul"},"Flex Link VLAN Load-Balancing"),(0,o.yg)("li",{parentName:"ul"},"Flex Links Interface Preemption"),(0,o.yg)("li",{parentName:"ul"},"GOLD \u2013 Generic Online Diagnostics"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1ab, Link Layer Discovery Protocol"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1s \u2013 Multiple Spanning Tree (MST) Standard Compliance"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1s VLAN Multiple Spanning Trees"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1t"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1W Spanning Tree Rapid Reconfiguration"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1x \u2013 Auth Fail Open"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1x \u2013 Auth Fail VLAN"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1x \u2013 VLAN Assignment"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1x \u2013 Wake on LAN Support"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1X Multi-Domain Authentication"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1x RADIUS Accounting"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.1x with Port Security"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.3ad Link Aggregation (LACP)"),(0,o.yg)("li",{parentName:"ul"},"IEEE 802.3af Power over Ethernet"),(0,o.yg)("li",{parentName:"ul"},"IGMP Fast Leave"),(0,o.yg)("li",{parentName:"ul"},"IGMP Version 1"),(0,o.yg)("li",{parentName:"ul"},"IGRP"),(0,o.yg)("li",{parentName:"ul"},"IP Phone Detection Enhancements"),(0,o.yg)("li",{parentName:"ul"},"IP Phone Enhancement \u2013 PHY Loop Detection"),(0,o.yg)("li",{parentName:"ul"},"IPSG (IP Source Guard)"),(0,o.yg)("li",{parentName:"ul"},"Jumbo Frames"),(0,o.yg)("li",{parentName:"ul"},"L2PT \u2013 Layer 2 Protocol Tunneling"),(0,o.yg)("li",{parentName:"ul"},"MAC Authentication Bypass"),(0,o.yg)("li",{parentName:"ul"},"MLD Snooping"),(0,o.yg)("li",{parentName:"ul"},"Multicast Etherchannel Load Balancing"),(0,o.yg)("li",{parentName:"ul"},"NAC \u2013 L2 IEEE 802.1x"),(0,o.yg)("li",{parentName:"ul"},"NAC \u2013 L2 IP"),(0,o.yg)("li",{parentName:"ul"},"NAC \u2013 L2 IP with Auth Fail Open"),(0,o.yg)("li",{parentName:"ul"},"Packet-Based Storm Control"),(0,o.yg)("li",{parentName:"ul"},"Per Port Per VLAN Policing"),(0,o.yg)("li",{parentName:"ul"},"Port Security"),(0,o.yg)("li",{parentName:"ul"},"Port Security on Private VLAN Ports"),(0,o.yg)("li",{parentName:"ul"},"Private VLANs"),(0,o.yg)("li",{parentName:"ul"},"QoS Policy Propagation via Border Gateway Protocol (QPPB)"),(0,o.yg)("li",{parentName:"ul"},"Rapid-Per-VLAN-Spanning Tree (Rapid-PVST)"),(0,o.yg)("li",{parentName:"ul"},"Reduced MAC Address Usage"),(0,o.yg)("li",{parentName:"ul"},"Remote SPAN (RSPAN)"),(0,o.yg)("li",{parentName:"ul"},"Smart Port"),(0,o.yg)("li",{parentName:"ul"},"Spanning Tree Protocol (STP) \u2013 Loop Guard"),(0,o.yg)("li",{parentName:"ul"},"Spanning Tree Protocol (STP) \u2013 PortFast BPDU Filtering"),(0,o.yg)("li",{parentName:"ul"},"Spanning Tree Protocol (STP) \u2013 Portfast Support for Trunks"),(0,o.yg)("li",{parentName:"ul"},"Spanning Tree Protocol (STP) \u2013 Root Guard"),(0,o.yg)("li",{parentName:"ul"},"Spanning Tree Protocol (STP) \u2013 Uplink Load Balancing"),(0,o.yg)("li",{parentName:"ul"},"SRR (Shaped Round Robin)"),(0,o.yg)("li",{parentName:"ul"},"Standby Supervisor Port Usage"),(0,o.yg)("li",{parentName:"ul"},"STP Syslog Messages"),(0,o.yg)("li",{parentName:"ul"},"Switching Database Manager (SDM)"),(0,o.yg)("li",{parentName:"ul"},"Trunk Failover"),(0,o.yg)("li",{parentName:"ul"},"Trusted boundary (extended trust for CDP devices)"),(0,o.yg)("li",{parentName:"ul"},"Unicast Mac Filtering"),(0,o.yg)("li",{parentName:"ul"},"UniDirectional Link Detection (UDLD)"),(0,o.yg)("li",{parentName:"ul"},"VLAN Access Control List (VACL)"),(0,o.yg)("li",{parentName:"ul"},"VLAN Aware Port Security"),(0,o.yg)("li",{parentName:"ul"},"Weighted Tail Drop (WTD)"),(0,o.yg)("li",{parentName:"ul"},"Routing and Switching Virtual machines from Vendors")),(0,o.yg)("p",null,"To recap: You can import many images using Virtualbox or VMWare. ASIC based models like the Cisco Catalyst switches are impossible to import as a Routing and Switching image."),(0,o.yg)("p",null,"If you require more switching features, it is recommended to use larger Virtual Machine Switches and Routers (like the ones from VIRL) that run inside your choice of Qemu, Virtualbox or VMWare. For advanced switching IOSv and/or IOU is recommended."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/c1bbe575.7e46117e.js b/build/assets/js/c1bbe575.7e46117e.js new file mode 100644 index 00000000..505252c7 --- /dev/null +++ b/build/assets/js/c1bbe575.7e46117e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8545],{5680:(e,n,t)=>{t.d(n,{xA:()=>d,yg:()=>p});var o=t(6540);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function r(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=o.createContext({}),l=function(e){var n=o.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},d=function(e){var n=l(e.components);return o.createElement(c.Provider,{value:n},e.children)},g="mdxType",h={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},u=o.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),g=l(t),u=a,p=g["".concat(c,".").concat(u)]||g[u]||h[u]||i;return t?o.createElement(p,r(r({ref:n},d),{},{components:t})):o.createElement(p,r({ref:n},d))}));function p(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,r=new Array(i);r[0]=u;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s[g]="string"==typeof e?e:a,r[1]=s;for(var l=2;l{t.r(n),t.d(n,{assets:()=>g,contentTitle:()=>l,default:()=>p,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var o=t(8168),a=t(8587),i=(t(6540),t(5680)),r=t(6025),s=["components"],c={id:"the-nat-node",title:"The NAT node",sidebar_label:"The NAT node"},l=void 0,d={unversionedId:"using-gns3/advanced/the-nat-node",id:"using-gns3/advanced/the-nat-node",title:"The NAT node",description:"Starting with GNS3 2.0, the NAT node became available. This node allows you to connect a topology to internet via NAT. The Internet node was deprecated in favor of this node, and the Cloud node.",source:"@site/docs/using-gns3/advanced/the-nat-node.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/the-nat-node",permalink:"/docs/using-gns3/advanced/the-nat-node",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/the-nat-node.md",tags:[],version:"current",frontMatter:{id:"the-nat-node",title:"The NAT node",sidebar_label:"The NAT node"},sidebar:"someSidebar",previous:{title:"Connect GNS3 to the Internet",permalink:"/docs/using-gns3/advanced/connect-gns3-internet"},next:{title:"Built-in hubs and switches",permalink:"/docs/using-gns3/advanced/hubs-and-switches"}},g={},h=[],u={toc:h};function p(e){var n=e.components,t=(0,a.A)(e,s);return(0,i.yg)("wrapper",(0,o.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"Starting with GNS3 2.0, the NAT node became available. This node allows you to connect a topology to internet via NAT. The Internet node was deprecated in favor of this node, and the Cloud node."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Your topology will not be directly accessible from the internet or local LAN, when using the NAT node. If that is required, then the Cloud node should be used.")),(0,i.yg)("p",null,"It\u2019s useful when you need to download things from the internet, like packages, if nodes need to perform license check, etc\u2026). It\u2019s also much simpler to use than the preexisting Cloud node."),(0,i.yg)("p",null,"The NAT node requires either the GNS3 VM, or a Linux computer with libvirt installed. Libvirt is necessary, to create a virbr0 interface for this node to function."),(0,i.yg)("p",null,"By default, the NAT node runs a DHCP server with a predefined pool in the 192.168.122.0/24 range. It\u2019s located in the End devices category:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/1.jpg")}),(0,i.yg)("p",null,"To add the NAT node to a topology, drag and drop it into the workspace. You will be prompted to specify the server type you want to use, to run the NAT node. This article will use the Webterm docker container for testing internet connectivity, so the server type needs to be set to GNS3 VM, as this is being done on a Win10 workstation:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/2.jpg")}),(0,i.yg)("p",null,"The NAT node will appear in the workspace:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/3.jpg")}),(0,i.yg)("p",null,"Next, the Webterm docker container will also be added to the workspace:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/4.jpg")}),(0,i.yg)("p",null,"The NAT node has a single interface named nat0:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/5.jpg")}),(0,i.yg)("p",null,"To allow more than one topology node to have access to the internet, it will be necessary to connect a switch or router to the NAT node, and then connect the topology nodes to the other device."),(0,i.yg)("p",null,"For simplicity, the built-in ethernet switch will be connected to the NAT node, and the Webterm container will be connected to the switch:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/6.jpg")}),(0,i.yg)("p",null,"You enable DHCP or manually configure static IP assignment to docker container like Webterm, by right-clicking on it while it\u2019s shutdown, and then select \u201cEdit config\u201d:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/7.jpg")}),(0,i.yg)("p",null,"A window will open, showing this container\u2019s /etc/network/interfaces file:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/8.jpg")}),(0,i.yg)("p",null,"To configure this container to use DHCP, you uncomment the two lines shown in the below image, and click Save:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/9.jpg")}),(0,i.yg)("p",null,"(uncomment means removing the \u2018#\u2019 symbol at the front of those lines. That symbol causes the system to not read those lines, and are commonly used to add comments to code, which should not be processed)"),(0,i.yg)("p",null,"Starting up the Webterm container (the NAT node will automatically be running from the moment it\u2019s added to a topology) and opening its console will result in a VNC window appearing. Click on the \u201cRestore\u201d symbol in the upper-right corner of Firefox, to take it out of the fullscreen view:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/10.jpg")}),(0,i.yg)("p",null,"Left-clicking on the black background and selecting \u201cTerminal\u201d will open terminal window:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/11.jpg")}),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/12.jpg")}),(0,i.yg)("p",null,"You can use the terminal for a variety of things, but in this article, it\u2019ll just be used to check the IP configuration of the container."),(0,i.yg)("p",null,"Using the \u2018ifconfig\u2019 command in the terminal will show that the DHCP running on the NAT node assigned this container the 192.168.122.200 address from its pool:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/13.jpg")}),(0,i.yg)("p",null,"Back in Firefox, enter a URL in the address bar, to access a website:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/14.jpg")}),(0,i.yg)("p",null,"You aren\u2019t restricted to just using dynamic address assignment with the NAT node. You can also statically assign IP addressing on it, and still have internet access."),(0,i.yg)("p",null,"Stop the Webterm container, right-click it, and choose \u201cEdit config\u201d again. "),(0,i.yg)("p",null,"This time, you\u2019ll comment out the two lines for DHCP, and uncomment the lines in the Static IP section of the /etc/network/interfaces file;"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/15.jpg")}),(0,i.yg)("p",null,"In the above example, the Webterm container was statically assigned the 192.168.122.25/24 IP address and mask, its default gateway was set to 192.168.122.1 (the internal IP address of the NAT node), and the nameserver was set to 8.8.8.8, which is one of Google\u2019s free public DNS servers."),(0,i.yg)("p",null,"Click Save, start the container, and console back into it. Opening a terminal and running \u201cifconfig\u201d will show that the container is using the statically assigned IP address:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/16.jpg")}),(0,i.yg)("p",null,"Entering a URL in the Firefox address bar will open a website:"),(0,i.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/advanced/the-nat-node/17.jpg")}))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/c36fddde.5447ce7c.js b/build/assets/js/c36fddde.5447ce7c.js new file mode 100644 index 00000000..853fc0a6 --- /dev/null +++ b/build/assets/js/c36fddde.5447ce7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[6440],{5680:(e,t,r)=>{r.d(t,{xA:()=>l,yg:()=>y});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,s=e.originalType,u=e.parentName,l=a(e,["components","mdxType","originalType","parentName"]),m=c(r),d=o,y=m["".concat(u,".").concat(d)]||m[d]||p[d]||s;return r?n.createElement(y,i(i({ref:t},l),{},{components:r})):n.createElement(y,i({ref:t},l))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=r.length,i=new Array(s);i[0]=d;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[m]="string"==typeof e?e:o,i[1]=a;for(var c=2;c{r.r(t),r.d(t,{assets:()=>m,contentTitle:()=>c,default:()=>y,frontMatter:()=>u,metadata:()=>l,toc:()=>p});var n=r(8168),o=r(8587),s=(r(6540),r(5680)),i=r(6025),a=["components"],u={id:"qemu-system-uuid",title:"Qemu system UUID",sidebar_label:"Qemu system UUID"},c=void 0,l={unversionedId:"emulators/qemu-system-uuid",id:"emulators/qemu-system-uuid",title:"Qemu system UUID",description:"Like any real computer, Qemu attributes a UUID to the system. This is stored in the SMBIOS:",source:"@site/docs/emulators/qemu-system-uuid.md",sourceDirName:"emulators",slug:"/emulators/qemu-system-uuid",permalink:"/docs/emulators/qemu-system-uuid",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/qemu-system-uuid.md",tags:[],version:"current",frontMatter:{id:"qemu-system-uuid",title:"Qemu system UUID",sidebar_label:"Qemu system UUID"},sidebar:"someSidebar",previous:{title:"VPCS",permalink:"/docs/emulators/vpcs"},next:{title:"Contribute to GNS3",permalink:"/docs/contribute/contribute-to-gns3"}},m={},p=[],d={toc:p};function y(e){var t=e.components,r=(0,o.A)(e,a);return(0,s.yg)("wrapper",(0,n.A)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("p",null,"Like any real computer, Qemu attributes a UUID to the system. This is stored in the SMBIOS:"),(0,s.yg)("p",null,(0,s.yg)("a",{parentName:"p",href:"https://software.intel.com/en-us/Uniqueness-of-UUID"},"https://software.intel.com/en-us/Uniqueness-of-UUID")),(0,s.yg)("p",null,"Most of the time, you won\u2019t need to set a UUID yourself. However this information could be used by vendors (for example), to check for a valid licence."),(0,s.yg)("p",null,"A UUID is generated by default for each node included in a project. This UUID is kept across machine reboots."),(0,s.yg)("p",null,"To force a UUID, you will have to pass the ",(0,s.yg)("inlineCode",{parentName:"p"},"-uuid")," option to the Qemu command line. This can be set in the advanced settings tab, when editing a nodes global configuration:"),(0,s.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/qemu-system-uuid/1.jpg")}))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/c4f5d8e4.03b71918.js b/build/assets/js/c4f5d8e4.03b71918.js new file mode 100644 index 00000000..02546780 --- /dev/null +++ b/build/assets/js/c4f5d8e4.03b71918.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2634],{2468:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var l=a(6540),n=a(8511),c=a(5489),s=a(4586),i=a(6025);const r="container_czXe",m="inner_nC8_",o="splash_HqcR",d="title_VwV3",g="subtitle_WGyH",u="button_hqdx";const E=function(){var e=(0,s.A)().siteConfig,t=void 0===e?{}:e;return l.createElement(n.A,{title:t.title,description:t.tagline},l.createElement("div",{className:r},l.createElement("div",{className:m},l.createElement("div",{className:o},l.createElement("img",{src:"img/docs-splash.png",width:"100%",alt:"GNS3"})),l.createElement("div",null,l.createElement("div",{style:{display:"inline-block"}},l.createElement("img",{src:"img/logocolour.png",height:"60px",alt:"GNS3"}),l.createElement("div",{className:d},"Documentation"),l.createElement("div",{className:g},t.tagline),l.createElement(c.A,{to:(0,i.A)("docs/")},l.createElement("span",{className:u},"Get Started")))))))}}}]); \ No newline at end of file diff --git a/build/assets/js/c561a9f7.4cc664fb.js b/build/assets/js/c561a9f7.4cc664fb.js new file mode 100644 index 00000000..4b1db897 --- /dev/null +++ b/build/assets/js/c561a9f7.4cc664fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[3183],{5680:(e,t,n)=>{n.d(t,{xA:()=>u,yg:()=>g});var r=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,g=p["".concat(l,".").concat(m)]||p[m]||d[m]||i;return n?r.createElement(g,a(a({ref:t},u),{},{components:n})):r.createElement(g,a({ref:t},u))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:o,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>u,toc:()=>d});var r=n(8168),o=n(8587),i=(n(6540),n(5680)),a=n(6025),s=["components"],l={id:"vpcs",title:"VPCS",sidebar_label:"VPCS"},c=void 0,u={unversionedId:"emulators/vpcs",id:"emulators/vpcs",title:"VPCS",description:"Virtual PC Simulator is a program written by Paul Meng, which allows you to simulate a lightweight PC supporting DHCP and ping. It consumes only 2MB of RAM per instance, and does not require an additional image.",source:"@site/docs/emulators/vpcs.md",sourceDirName:"emulators",slug:"/emulators/vpcs",permalink:"/docs/emulators/vpcs",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/vpcs.md",tags:[],version:"current",frontMatter:{id:"vpcs",title:"VPCS",sidebar_label:"VPCS"},sidebar:"someSidebar",previous:{title:"Create a docker container for GNS3",permalink:"/docs/emulators/create-a-docker-container-for-gns3"},next:{title:"Qemu system UUID",permalink:"/docs/emulators/qemu-system-uuid"}},p={},d=[{value:"Put a VPCS node your topology",id:"put-a-vpcs-node-your-topology",level:2},{value:"Set an IP",id:"set-an-ip",level:2},{value:"Manually set an IP",id:"manually-set-an-ip",level:3},{value:"Use DHCP",id:"use-dhcp",level:3},{value:"Ping & Traceroute",id:"ping--traceroute",level:2},{value:"Save Configuration",id:"save-configuration",level:2},{value:"Limitations",id:"limitations",level:2}],m={toc:d};function g(e){var t=e.components,n=(0,o.A)(e,s);return(0,i.yg)("wrapper",(0,r.A)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"Virtual PC Simulator is a program written by Paul Meng, which allows you to simulate a lightweight PC supporting DHCP and ping. It consumes only 2MB of RAM per instance, and does not require an additional image."),(0,i.yg)("p",null,"The official website:\n",(0,i.yg)("a",{parentName:"p",href:"https://github.com/GNS3/vpcs"},"https://sourceforge.net/projects/vpcs/?source=directory")),(0,i.yg)("h2",{id:"put-a-vpcs-node-your-topology"},"Put a VPCS node your topology"),(0,i.yg)("p",null,"The VPCS node is included with GNS3 by default. No additional configuration is required. It will be located in the End devices category in the Devices list:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/vpcs/1.jpg")}),(0,i.yg)("p",null,"Drag and drop an instance of VPCS into the workspace. You\u2019ll be prompted which server type will run this VPCS instance:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/vpcs/2.jpg")}),(0,i.yg)("p",null,"(for this article, \u201cGNS3 VM\u201d was selected for the server type)\nAn instance of VPCS will now appear in the workspace:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/vpcs/3.jpg")}),(0,i.yg)("p",null,"After you start the VPCS node, you can access its console:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"Welcome to Virtual PC Simulator, version 0.6.1\nDedicated to Daling.\nBuild time: Feb 25 2016 00:35:23\nCopyright (c) 2007-2015, Paul Meng (mirnshi@gmail.com)\nAll rights reserved.\n\nVPCS is free software, distributed under the terms of the \"BSD\" licence.\nSource code and license can be found at vpcs.sf.net.\nFor more information, please visit wiki.freecode.com.cn.\n\nPress '?' to get help.\n\nExecuting the startup file\n\n\nPC1>\n")),(0,i.yg)("h2",{id:"set-an-ip"},"Set an IP"),(0,i.yg)("h3",{id:"manually-set-an-ip"},"Manually set an IP"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"PC1> ip 192.168.1.1\nChecking for duplicate address...\nPC1 : 192.168.1.1 255.255.255.0\n")),(0,i.yg)("h3",{id:"use-dhcp"},"Use DHCP"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"PC1> dhcp\n")),(0,i.yg)("h2",{id:"ping--traceroute"},"Ping & Traceroute"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"PC1> ping 192.168.1.2\n\n84 bytes from 192.168.1.2 icmp_seq=1 ttl=64 time=0.576 ms\n84 bytes from 192.168.1.2 icmp_seq=2 ttl=64 time=0.512 ms\n84 bytes from 192.168.1.2 icmp_seq=3 ttl=64 time=0.473 ms\n84 bytes from 192.168.1.2 icmp_seq=4 ttl=64 time=0.453 ms\n84 bytes from 192.168.1.2 icmp_seq=5 ttl=64 time=1.182 ms\n")),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"PC1> trace 192.168.1.2\ntrace to 192.168.1.2, 8 hops max, press Ctrl+C to stop\n 1 *192.168.1.2 0.398 ms (ICMP type:3, code:3, Destination port unreachable)\n")),(0,i.yg)("h2",{id:"save-configuration"},"Save Configuration"),(0,i.yg)("p",null,"The configured IP address will be lost on restart, if you don\u2019t save the config:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"PC1> save\nSaving startup configuration to startup.vpc\n. done\n")),(0,i.yg)("h2",{id:"limitations"},"Limitations"),(0,i.yg)("p",null,"VPCS is a PC simulator. Its implementation of the network stack is not perfect, and you will see bugs when it\u2019s used in complex topologies."),(0,i.yg)("p",null,"Use of the ipterm docker container is a viable alternative to using VPCS. The ipterm container will require use of linux commands, as well as running it via the GNS3 VM for Windows/Mac OS X users. Linux users can run it natively, provided docker-ce has been installed, and their user was added to the docker group (restarting your user session after adding your user to that group is required)."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/c9496258.a97dbc04.js b/build/assets/js/c9496258.a97dbc04.js new file mode 100644 index 00000000..94317b5f --- /dev/null +++ b/build/assets/js/c9496258.a97dbc04.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1341],{4061:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/build/assets/js/cb052573.03dbdb7d.js b/build/assets/js/cb052573.03dbdb7d.js new file mode 100644 index 00000000..5c256e62 --- /dev/null +++ b/build/assets/js/cb052573.03dbdb7d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[5648],{5680:(e,t,a)=>{a.d(t,{xA:()=>p,yg:()=>c});var n=a(6540);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),g=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=g(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=g(a),m=r,c=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return a?n.createElement(c,o(o({ref:t},p),{},{components:a})):n.createElement(c,o({ref:t},p))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,o[1]=s;for(var g=2;g{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>g,default:()=>c,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var n=a(8168),r=a(8587),i=(a(6540),a(5680)),o=a(6025),s=["components"],l={id:"setup-wizard-gns3-vm",title:"GNS3 Setup wizard with the GNS3 VM",sidebar_label:"Setup wizard for GNS3 VM"},g=void 0,p={unversionedId:"getting-started/setup-wizard-gns3-vm",id:"getting-started/setup-wizard-gns3-vm",title:"GNS3 Setup wizard with the GNS3 VM",description:"Which Virtualization Software? VirtualBox or VMware?",source:"@site/docs/getting-started/setup-wizard-gns3-vm.md",sourceDirName:"getting-started",slug:"/getting-started/setup-wizard-gns3-vm",permalink:"/docs/getting-started/setup-wizard-gns3-vm",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/setup-wizard-gns3-vm.md",tags:[],version:"current",frontMatter:{id:"setup-wizard-gns3-vm",title:"GNS3 Setup wizard with the GNS3 VM",sidebar_label:"Setup wizard for GNS3 VM"},sidebar:"someSidebar",previous:{title:"Setup wizard for local server",permalink:"/docs/getting-started/setup-wizard-local-server"},next:{title:"Your first GNS3 topology",permalink:"/docs/getting-started/your-first-gns3-topology"}},u={},d=[{value:"Which Virtualization Software? VirtualBox or VMware?",id:"which-virtualization-software-virtualbox-or-vmware",level:2},{value:"VMware Workstation vs. Player",id:"vmware-workstation-vs-player",level:2},{value:"VMware ESXi",id:"vmware-esxi",level:2},{value:"Import GNS3 VM into VMware Workstation",id:"import-gns3-vm-into-vmware-workstation",level:2},{value:"Local GNS3 VM Setup Wizard",id:"local-gns3-vm-setup-wizard",level:2},{value:"Manually Starting the Setup Wizard",id:"manually-starting-the-setup-wizard",level:3},{value:"Disable Setup Wizard",id:"disable-setup-wizard",level:3},{value:"Using the GNS3 Setup Wizard",id:"using-the-gns3-setup-wizard",level:3},{value:"Legacy",id:"legacy",level:2}],m={toc:d};function c(e){var t=e.components,a=(0,r.A)(e,s);return(0,i.yg)("wrapper",(0,n.A)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"which-virtualization-software-virtualbox-or-vmware"},"Which Virtualization Software? VirtualBox or VMware?"),(0,i.yg)("p",null,"In this document we will explain the import of the GNS3 VM for VMware but instructions for VirtualBox are similar."),(0,i.yg)("p",null,"VMware is a better option because it\u2019s faster and supports nested virtualization (the VMs inside the VM are accelerated by your CPU). The speed difference is important and some VM will be too slow on VirtualBox* (see note)."),(0,i.yg)("h2",{id:"vmware-workstation-vs-player"},"VMware Workstation vs. Player"),(0,i.yg)("p",null,"GNS3 supports both VMware Workstation Pro and VMware Fusion (Paid software), as well as VMware Player (Free software)."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"VMware Player requires the installation of additional free software (",(0,i.yg)("a",{parentName:"p",href:"https://www.vmware.com/support/developer/vix-api/"},"VMware VIX"),"). If you forget to install this, GNS3 will prompt you to do so (and open a browser to the link on VMware\u2019s website). The option for \u201cVIX version 1.17 and later\u201d is sufficient for VMware Workstation Player version 16.x. For older versions of Player, you\u2019ll need to select a previous version of VIX that matches your version of Player.")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"You can get 20% off ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/software/workstation-pro-15"},"VMware Workstation Pro")," and ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/software/fusion-8"},"VMware Fusion")," thanks to our deal with VMware.")),(0,i.yg)("h2",{id:"vmware-esxi"},"VMware ESXi"),(0,i.yg)("p",null,"VMware ESXi is for advanced users only and is not covered by this document."),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Video: ",(0,i.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=0T9YZssqDyE"},"https://www.youtube.com/watch?v=0T9YZssqDyE")),(0,i.yg)("li",{parentName:"ul"},"Video: ",(0,i.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=s7CkW9DNS3E"},"https://www.youtube.com/watch?v=s7CkW9DNS3E"))),(0,i.yg)("h2",{id:"import-gns3-vm-into-vmware-workstation"},"Import GNS3 VM into VMware Workstation"),(0,i.yg)("p",null,"In this section, you will learn how to import the GNS3 VM into VMware Workstation on your local Windows PC."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"This document assumes that you already have VMware Workstation installed on your local Windows PC. Please refer to VMware documentation for the process to download and install VMware Workstation.")),(0,i.yg)("p",null,"Extract the downloaded .zip archive:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/1.jpg")}),(0,i.yg)("p",null,"This extracts the \u201cGNS3 VM.ova\u201d file stored within the compressed archive, in order to import it into VMware Workstation. "),(0,i.yg)("p",null,"In VMware Workstation, click ",(0,i.yg)("strong",{parentName:"p"},"'Open a Virtual Machine'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/2.jpg")}),(0,i.yg)("p",null,"Navigate to the directory where the extracted ",(0,i.yg)("strong",{parentName:"p"},"GNS3 VM.ova")," is located, and click ",(0,i.yg)("strong",{parentName:"p"},"'Open'")," to open the OVA:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/3.jpg")}),(0,i.yg)("p",null,"Leave the virtual machine name as ",(0,i.yg)("strong",{parentName:"p"},"'GNS3 VM'"),", and click ",(0,i.yg)("strong",{parentName:"p"},"'Import'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/4.jpg")}),(0,i.yg)("admonition",{type:"caution"},(0,i.yg)("p",{parentName:"admonition"},"With VMware Player it\u2019s recommended to keep the default location. GNS3 will try to detect VMs outside, but unlike Workstation VMware Player doesn\u2019t offer a central database with all VMs location.")),(0,i.yg)("p",null,"VMware Workstation will import the GNS3 VM:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/5.jpg")}),(0,i.yg)("p",null,"The GNS3 VM will show as available in VMware Workstation. Leave all settings at their defaults:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/6.jpg")}),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Congratulations!")," You have successfully imported the GNS3 VM. In the next section you will integrate GNS3 with the GNS3 VM."),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"If you encounter a message in the GNS3-VM where it states that KVM support is not available, even if you have a CPU capable of hardware virtualization (modern Intel and AMD CPUs all support this), please confirm that it has been enabled in your system BIOS/UEFI (consult the documentation supplied by your motherboard manufacturer or PC vendor, to learn how to access this)")),(0,i.yg)("h2",{id:"local-gns3-vm-setup-wizard"},"Local GNS3 VM Setup Wizard"),(0,i.yg)("p",null,"The GNS3 Setup Wizard is displayed when GNS3 starts up for the first time. This provides an easy way to initially configure GNS3 options:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/7.jpg")}),(0,i.yg)("h3",{id:"manually-starting-the-setup-wizard"},"Manually Starting the Setup Wizard"),(0,i.yg)("p",null,"You can also manually start the Setup Wizard at any time by clicking Help->Setup Wizard in the GNS3 software:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/8.jpg")}),(0,i.yg)("h3",{id:"disable-setup-wizard"},"Disable Setup Wizard"),(0,i.yg)("p",null,"Optional: You can disable the Setup Wizard from displaying by selecting the \u2018Don't show this again\u2019 checkbox: "),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/9.jpg")}),(0,i.yg)("h3",{id:"using-the-gns3-setup-wizard"},"Using the GNS3 Setup Wizard"),(0,i.yg)("p",null,"Select ",(0,i.yg)("strong",{parentName:"p"},"'Run Modern IOS (IOSv or IOU), ASA, and appliances from non-Cisco manufacturers'")," in the Wizard and click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),": "),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/10.jpg")}),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"This guide explains the Local GNS3 VM server configuration. For a Local Server (Dynamips) configuration ",(0,i.yg)("a",{parentName:"p",href:"setup-wizard-local-server"},"click here"),".")),(0,i.yg)("p",null,"Even though you\u2019ll be using the GNS3-VM to perform the \u201cheavy lifting\u201d of running your VMs/images/containers, it\u2019s still necessary to configure the local server settings in GNS3 before proceeding with the remaining process of configuring the GNS3-VM."),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/11.jpg")}),(0,i.yg)("p",null,"Ensure that the path to the gns3server executable is correct (typically ",(0,i.yg)("inlineCode",{parentName:"p"},"C:\\Program Files\\GNS3")," in a default installation), and select a Host binding and Port. Selecting the 127.0.0.1 local loopback address tends to be the most trouble-free option to use as a host binding, but the dropdown menu does contain additional options. Click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),"."),(0,i.yg)("p",null,"A connection validation screen will appear:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/12.jpg")}),(0,i.yg)("p",null,"If successful, click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),". If this connection attempt was unsuccessful for any reason, there possible remedies are to:"),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},"Confirm the path to the gns3server.exe file is correct, and try a different address/port for the host binding"),(0,i.yg)("li",{parentName:"ol"},"Create exception/whitelist entries in your antivirus suite for the gns3server, ubridge, and dynamips executables (or just the entire GNS3 installation directory, if possible). You\u2019ll need to refer to the relevant documentation of the antivirus suite you run, in order to perform this step.")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"An additional step that may be necessary is to allow the gns3server, ubridge, and dynamips executables through the Windows Firewall. The default behavior is for these to already be allowed through, but it\u2019s well worth double-checking."),(0,i.yg)("p",{parentName:"admonition"},"The Virtualization software you are going to use needs to be selected. In this example, ",(0,i.yg)("strong",{parentName:"p"},"VMware (recommended)")," is selected:")),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/13.jpg")}),(0,i.yg)("p",null,"The Setup Wizard will detect the presence of the ",(0,i.yg)("strong",{parentName:"p"},"GNS3 VM")," in VMware Workstation. If the GNS3 VM is not displayed, click the ",(0,i.yg)("strong",{parentName:"p"},"'Refresh'")," button and ensure that the VM was imported correctly into VMware Workstation:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/14.jpg")}),(0,i.yg)("p",null,"Change the vCPU cores and RAM values to the amount that your computer supports and then click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"GNS3 recommends a minimum of 1 vCPU core and 2GB RAM. However, if you want to run large topologies with many devices, more CPU cores and RAM are recommended. You can adjust the settings later using the GNS3 GUI. A good rule of thumb is to assign it half the total amount of available vCPU cores and physical RAM available in your PC. The below example uses a minimal resource allocation, as it\u2019s being run on a laptop. On a desktop with an i7 quad-core CPU with hyperthreading and 32GB RAM, allocating the GNS3 VM 4-6 vCPUs and 16GB RAM will allow for respectable GNS3 topologies to be running, while still reserving enough resources to task switch between GNS3 and Windows (or Linux).")),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/15.jpg")}),(0,i.yg)("p",null,"After making your allocation choices, click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/16.jpg")}),(0,i.yg)("p",null,"The next page will show a summary of the settings you chose for the GNS3 VM. You may see a pop up saying \u201cPlease Wait\u201d. That\u2019s perfectly normal, as it\u2019s due to GNS3 starting the GNS3 VM up:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/17.jpg")}),(0,i.yg)("p",null," Once booted successfully, the IP address of the GNS3 VM will be displayed:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/18.jpg")}),(0,i.yg)("p",null,"While devices are normally installed using appliance templates found in the ",(0,i.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/appliances"},"GNS3 Marketplace")," (via the Import Appliance wizard), we\u2019ll manually add a router using a ",(0,i.yg)("a",{parentName:"p",href:"../emulators/cisco-ios-images-for-dynamips"},"compatible IOS image"),", just for a quick example. GNS3 is not limited to just those IOS images. Other articles (",(0,i.yg)("a",{parentName:"p",href:"../using-gns3/beginners/install-from-marketplace"},"here")," and ",(0,i.yg)("a",{parentName:"p",href:"../using-gns3/beginners/import-gns3-appliance"},"here")," cover importing devices via those appliance templates via the aforementioned Import Appliance wizard, even compatible IOS images."),(0,i.yg)("p",null,"In the GNS3 GUI, click ",(0,i.yg)("strong",{parentName:"p"},"Edit->Preferences->IOS Routers"),", to reach the correct section we need to be in:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/19.jpg")}),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/20.jpg")}),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"'New'")," to begin manually importing and configuring the image."),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/21.jpg")}),(0,i.yg)("p",null,"In the ",(0,i.yg)("strong",{parentName:"p"},"New IOS router template")," window, select ",(0,i.yg)("strong",{parentName:"p"},"Run the IOS router on the GNS3 VM")," and click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/22.jpg")}),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"New IOS router template")," window displays. Click ",(0,i.yg)("strong",{parentName:"p"},"'Browse\u2026'")," to find a local IOS image on your computer:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/23.jpg")}),(0,i.yg)("p",null," Browse to the folder where you have stored your Cisco IOS images (you must supply your own), select the image and click ",(0,i.yg)("strong",{parentName:"p"},"'Open'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/24.jpg")}),(0,i.yg)("p",null,"GNS3 can decompress IOS images to allow for quicker booting of routers in your GNS3 topologies. This is recommended for a better user experience, as IOS image decompression can take several minutes, even on physical hardware. Click ",(0,i.yg)("strong",{parentName:"p"},"'Yes'")," to uncompress the image:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/25.jpg")}),(0,i.yg)("p",null,"The image is automatically uploaded to the GNS3 VM (this may take a few moments, depending on the speed of your PC, and the size of the image/VM)."),(0,i.yg)("p",null,"The uploaded image is shown. Click ",(0,i.yg)("strong",{parentName:"p"},"'Next'")," to continue the setup:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/26.jpg")}),(0,i.yg)("p",null,"The Name and platform window displays. Confirm the ",(0,i.yg)("strong",{parentName:"p"},"Platform")," selection, and configure the router ",(0,i.yg)("strong",{parentName:"p"},"Name")," as desired and click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/27.jpg")}),(0,i.yg)("p",null,"A Default RAM setting is displayed. It is important that you check your Router's minimum memory requirements using the Cisco website. Click the ",(0,i.yg)("strong",{parentName:"p"},"Check for minimum and maximum RAM requirement")," option:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/28.jpg")}),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"Cisco Feature Navigator")," is opened in your default web browser. Select ",(0,i.yg)("strong",{parentName:"p"},"Image Name")," and enter the name of the image you are using: "),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/29.jpg")}),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"Search for Image(s)"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/30.jpg")}),(0,i.yg)("p",null,"The minimum DRAM requirements for the IOS are displayed. Note the value for your IOS image:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/31.jpg")}),(0,i.yg)("p",null,"Set the Default RAM value to the value recommended by the Cisco Feature Navigator (yours may be different to the screenshot) and click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/32.jpg")}),(0,i.yg)("p",null,"Select your preferred Network adapters. This is device dependant. With this c3725 image, we can only add adapters to slots 0, 1, and 2, with slot 0 prepopulated with GT96100-FE dual Fast Ethernet adapter. Which adapters you can add, and how many slots you are allowed to install adapters to is device dependent. Click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/33.jpg")}),(0,i.yg)("p",null,"WIC modules can now be added. Again, it\u2019s device dependent on whether WIC slots are available, but WIC-1T and WIC-2T serial modules will be available on devices that support WICs. Once completed, click Click ",(0,i.yg)("strong",{parentName:"p"},"'Next'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/34.jpg")}),(0,i.yg)("p",null,"It is important for optimum GNS3 performance that an ",(0,i.yg)("strong",{parentName:"p"},"Idle-PC")," value be selected. If a green Idle-PC value is NOT shown then click the ",(0,i.yg)("strong",{parentName:"p"},"'Idle-PC finder'")," button to find an Idle-PC value. This c3725 happens to already have an optimum idle-pc value predefined, so it\u2019s OK to click ",(0,i.yg)("strong",{parentName:"p"},"'Finish'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/35.jpg")}),(0,i.yg)("p",null,"If your device does NOT have an idle-pc value predefined, click the ",(0,i.yg)("strong",{parentName:"p"},"Idle-PC")," finder button in the upper-right to initiate that process."),(0,i.yg)("p",null,"It is important for optimum GNS3 performance that an ",(0,i.yg)("strong",{parentName:"p"},"Idle-PC")," value be selected. If a green Idle-PC value is NOT shown then click the ",(0,i.yg)("strong",{parentName:"p"},"'Idle-PC finder'")," button to find an Idle-PC value."),(0,i.yg)("p",null,"If you selected the Idle-PC finder button (only necessary if no value was detected automatically), GNS3 will calculate a value:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/36.jpg")}),(0,i.yg)("p",null,"An Idle-PC value is displayed. Click ",(0,i.yg)("strong",{parentName:"p"},"'OK'")," to complete:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/37.jpg")}),(0,i.yg)("admonition",{type:"important"},(0,i.yg)("p",{parentName:"admonition"},"If no Idle-PC value is displayed, try clicking the \u2018Idle-PC finder\u2019 button again. You may also need to reboot your computer and try again is no value is found.")),(0,i.yg)("p",null,"Click ",(0,i.yg)("strong",{parentName:"p"},"'Finish'")," to complete the GNS3 Setup Wizard. "),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"Preferences")," window displays showing the settings you have configured through the Setup Wizard. Click ",(0,i.yg)("strong",{parentName:"p"},"'OK'")," to complete the process:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/38.jpg")}),(0,i.yg)("p",null,"The ",(0,i.yg)("strong",{parentName:"p"},"New Project")," Window displays. Give your new Project a ",(0,i.yg)("strong",{parentName:"p"},"Name")," and click ",(0,i.yg)("strong",{parentName:"p"},"'OK'"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/39.jpg")}),(0,i.yg)("p",null,"The GNS3 workspace displays:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/40.jpg")}),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Congratulations!")," You are now ready to create your first GNS3 topologies."),(0,i.yg)("p",null,(0,i.yg)("a",{parentName:"p",href:"your-first-gns3-topology"},"Continue here for a basic GNS3 topology")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"The Virtualbox developers announced that nested hardware virtualization support was added to Virtualbox 6.0 for desktops/laptops that have AMD CPUs and since 6.1 supports also Intel CPUs. Questions regarding Virtualbox should be directed Virtualbox user forums, and not the GNS3 community forums! ")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"As of GNS3 2.2.3, the issue where users with AMD CPUs wanting to run the GNS3 VM in VMware Workstation needed to install a newer kernel has been resolved! It now works, like it did in past versions, so this workaround is no longer necessary.")),(0,i.yg)("h2",{id:"legacy"},"Legacy"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"In case anyone intends on using the older, affected version, We've left the instructions below. But it is highly recommended to update to the latest version.")),(0,i.yg)("p",null,"(There\u2019s potential risk of data loss, if this process goes awry! Proceed at your own risk!)"),(0,i.yg)("p",null,"Start the GNS3 VM in VMware, while GNS3 itself is shut down. Access the GNS3 VM\u2019s shell using its text menu. Click OK on the Information screen:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/41.jpg")}),(0,i.yg)("p",null,"Press the down arrow to highlight \u201cShell\u201d, and press the Enter key again:"),(0,i.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/setup-wizard-gns3-vm/42.jpg")}),(0,i.yg)("p",null,"You\u2019ll now be in Bash (the default shell for Ubuntu):\nWe need to upgrade the GNS3 VM\u2019s kernel by entering the following in the CLI:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"sudo apt update\nsudo apt upgrade\n\n(note: If you happen to receive this prompt while apt is performing the upgrade step, select Y (yes):\n\nPROMPT: Configuring libssl1.1:amd64 >>>>> Restart services during package upgrades without asking?\n")),(0,i.yg)("p",null,"Once apt has completed the upgrade process, enter the following commands:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"cd /tmp/\n\nwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.2/linux-headers-5.2.2-050202_5.2.2-050202.201907231250_all.deb\n\nwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.2/linux-headers-5.2.2-050202-generic_5.2.2-050202.201907231250_amd64.deb\n\nwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.2/linux-image-unsigned-5.2.2-050202-generic_5.2.2-050202.201907231250_amd64.deb\n\nwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.2/linux-modules-5.2.2-050202-generic_5.2.2-050202.201907231250_amd64.deb\n")),(0,i.yg)("p",null,"In the above commands, the WGET utility is downloading the packages for the newer kernel from kernel.ubuntu.com. The next step will install them:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"sudo dpkg -i *.deb\n")),(0,i.yg)("p",null,"Once those are installed, using the next command will reboot the GNS3 VM:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"sudo reboot\n")),(0,i.yg)("p",null,"After the GNS3 VM has finished rebooting, and you\u2019re back at the information page of its text menu,, run the following command in the GNS3 VM\u2019s shell, to ensure that it is using the newer kernel. This is what you want to see:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre"},"gns3@gns3vm:~$ uname -r\n5.2.2-050202-generic\n")),(0,i.yg)("p",null,"Power down the GNS3 VM, and then launch the GNS3 GUI. Now, you should be able to run QEMU/KVM VMs without issue!"))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/cd180604.785bd603.js b/build/assets/js/cd180604.785bd603.js new file mode 100644 index 00000000..3cc5ade3 --- /dev/null +++ b/build/assets/js/cd180604.785bd603.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[475],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>d});var a=n(6540);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),g=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=g(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=g(n),y=r,d=u["".concat(s,".").concat(y)]||u[y]||m[y]||l;return n?a.createElement(d,i(i({ref:t},p),{},{components:n})):a.createElement(d,i({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=y;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:r,i[1]=o;for(var g=2;g{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>y,frontMatter:()=>o,metadata:()=>g,toc:()=>u});var a=n(8168),r=n(8587),l=(n(6540),n(5680)),i=["components"],o={id:"doc1",title:"Style Guide",sidebar_label:"Style Guide"},s=void 0,g={unversionedId:"docusaurus-reference/doc1",id:"docusaurus-reference/doc1",title:"Style Guide",description:"You can write content using GitHub-flavored Markdown syntax.",source:"@site/docs/docusaurus-reference/doc1.md",sourceDirName:"docusaurus-reference",slug:"/docusaurus-reference/doc1",permalink:"/docs/docusaurus-reference/doc1",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/doc1.md",tags:[],version:"current",frontMatter:{id:"doc1",title:"Style Guide",sidebar_label:"Style Guide"}},p={},u=[{value:"Markdown Syntax",id:"markdown-syntax",level:2},{value:"Headers",id:"headers",level:2},{value:"H2 - Create the best documentation",id:"h2---create-the-best-documentation",level:2},{value:"H3 - Create the best documentation",id:"h3---create-the-best-documentation",level:3},{value:"H4 - Create the best documentation",id:"h4---create-the-best-documentation",level:4},{value:"H5 - Create the best documentation",id:"h5---create-the-best-documentation",level:5},{value:"H6 - Create the best documentation",id:"h6---create-the-best-documentation",level:6},{value:"Emphasis",id:"emphasis",level:2},{value:"Lists",id:"lists",level:2},{value:"Links",id:"links",level:2},{value:"Images",id:"images",level:2},{value:"Code",id:"code",level:2},{value:"Tables",id:"tables",level:2},{value:"Blockquotes",id:"blockquotes",level:2},{value:"Inline HTML",id:"inline-html",level:2},{value:"Line Breaks",id:"line-breaks",level:2},{value:"Admonitions",id:"admonitions",level:2}],m={toc:u};function y(e){var t=e.components,n=(0,r.A)(e,i);return(0,l.yg)("wrapper",(0,a.A)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,l.yg)("p",null,"You can write content using ",(0,l.yg)("a",{parentName:"p",href:"https://github.github.com/gfm/"},"GitHub-flavored Markdown syntax"),"."),(0,l.yg)("h2",{id:"markdown-syntax"},"Markdown Syntax"),(0,l.yg)("p",null,"To serve as an example page when styling markdown based Docusaurus sites."),(0,l.yg)("h2",{id:"headers"},"Headers"),(0,l.yg)("h1",{id:"h1---create-the-best-documentation"},"H1 - Create the best documentation"),(0,l.yg)("h2",{id:"h2---create-the-best-documentation"},"H2 - Create the best documentation"),(0,l.yg)("h3",{id:"h3---create-the-best-documentation"},"H3 - Create the best documentation"),(0,l.yg)("h4",{id:"h4---create-the-best-documentation"},"H4 - Create the best documentation"),(0,l.yg)("h5",{id:"h5---create-the-best-documentation"},"H5 - Create the best documentation"),(0,l.yg)("h6",{id:"h6---create-the-best-documentation"},"H6 - Create the best documentation"),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"emphasis"},"Emphasis"),(0,l.yg)("p",null,"Emphasis, aka italics, with ",(0,l.yg)("em",{parentName:"p"},"asterisks")," or ",(0,l.yg)("em",{parentName:"p"},"underscores"),"."),(0,l.yg)("p",null,"Strong emphasis, aka bold, with ",(0,l.yg)("strong",{parentName:"p"},"asterisks")," or ",(0,l.yg)("strong",{parentName:"p"},"underscores"),"."),(0,l.yg)("p",null,"Combined emphasis with ",(0,l.yg)("strong",{parentName:"p"},"asterisks and ",(0,l.yg)("em",{parentName:"strong"},"underscores")),"."),(0,l.yg)("p",null,"Strikethrough uses two tildes. ",(0,l.yg)("del",{parentName:"p"},"Scratch this.")),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"lists"},"Lists"),(0,l.yg)("ol",null,(0,l.yg)("li",{parentName:"ol"},"First ordered list item"),(0,l.yg)("li",{parentName:"ol"},"Another item",(0,l.yg)("ul",{parentName:"li"},(0,l.yg)("li",{parentName:"ul"},"Unordered sub-list."))),(0,l.yg)("li",{parentName:"ol"},"Actual numbers don't matter, just that it's a number",(0,l.yg)("ol",{parentName:"li"},(0,l.yg)("li",{parentName:"ol"},"Ordered sub-list"))),(0,l.yg)("li",{parentName:"ol"},"And another item.")),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},"Unordered list can use asterisks")),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},"Or minuses")),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},"Or pluses")),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"links"},"Links"),(0,l.yg)("p",null,(0,l.yg)("a",{parentName:"p",href:"https://www.google.com/"},"I'm an inline-style link")),(0,l.yg)("p",null,(0,l.yg)("a",{parentName:"p",href:"https://www.google.com/",title:"Google's Homepage"},"I'm an inline-style link with title")),(0,l.yg)("p",null,(0,l.yg)("a",{parentName:"p",href:"https://www.mozilla.org/"},"I'm a reference-style link")),(0,l.yg)("p",null,(0,l.yg)("a",{parentName:"p",href:"http://slashdot.org/"},"You can use numbers for reference-style link definitions")),(0,l.yg)("p",null,"Or leave it empty and use the ",(0,l.yg)("a",{parentName:"p",href:"http://www.reddit.com/"},"link text itself"),"."),(0,l.yg)("p",null,"URLs and URLs in angle brackets will automatically get turned into links. ",(0,l.yg)("a",{parentName:"p",href:"http://www.example.com/"},"http://www.example.com/")," or ",(0,l.yg)("a",{parentName:"p",href:"http://www.example.com/"},"http://www.example.com/")," and sometimes example.com (but not on GitHub, for example)."),(0,l.yg)("p",null,"Some text to show that the reference links can follow later."),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"images"},"Images"),(0,l.yg)("p",null,"Here's our logo (hover to see the title text):"),(0,l.yg)("p",null,"Inline-style: ",(0,l.yg)("img",{parentName:"p",src:"https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png",alt:"alt text",title:"Logo Title Text 1"})),(0,l.yg)("p",null,"Reference-style: ",(0,l.yg)("img",{parentName:"p",src:"https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png",alt:"alt text",title:"Logo Title Text 2"})),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"code"},"Code"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-javascript"},"var s = 'JavaScript syntax highlighting';\nalert(s);\n")),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-python"},'s = "Python syntax highlighting"\nprint(s)\n')),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"No language indicated, so no syntax highlighting.\nBut let's throw in a tag.\n")),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-js",metastring:"{2}","{2}":!0},"function highlightMe() {\n console.log('This line can be highlighted!');\n}\n")),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"tables"},"Tables"),(0,l.yg)("p",null,"Colons can be used to align columns."),(0,l.yg)("table",null,(0,l.yg)("thead",{parentName:"table"},(0,l.yg)("tr",{parentName:"thead"},(0,l.yg)("th",{parentName:"tr",align:null},"Tables"),(0,l.yg)("th",{parentName:"tr",align:"center"},"Are"),(0,l.yg)("th",{parentName:"tr",align:"right"},"Cool"))),(0,l.yg)("tbody",{parentName:"table"},(0,l.yg)("tr",{parentName:"tbody"},(0,l.yg)("td",{parentName:"tr",align:null},"col 3 is"),(0,l.yg)("td",{parentName:"tr",align:"center"},"right-aligned"),(0,l.yg)("td",{parentName:"tr",align:"right"},"\\$1600")),(0,l.yg)("tr",{parentName:"tbody"},(0,l.yg)("td",{parentName:"tr",align:null},"col 2 is"),(0,l.yg)("td",{parentName:"tr",align:"center"},"centered"),(0,l.yg)("td",{parentName:"tr",align:"right"},"\\$12")),(0,l.yg)("tr",{parentName:"tbody"},(0,l.yg)("td",{parentName:"tr",align:null},"zebra stripes"),(0,l.yg)("td",{parentName:"tr",align:"center"},"are neat"),(0,l.yg)("td",{parentName:"tr",align:"right"},"\\$1")))),(0,l.yg)("p",null,"There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown."),(0,l.yg)("table",null,(0,l.yg)("thead",{parentName:"table"},(0,l.yg)("tr",{parentName:"thead"},(0,l.yg)("th",{parentName:"tr",align:null},"Markdown"),(0,l.yg)("th",{parentName:"tr",align:null},"Less"),(0,l.yg)("th",{parentName:"tr",align:null},"Pretty"))),(0,l.yg)("tbody",{parentName:"table"},(0,l.yg)("tr",{parentName:"tbody"},(0,l.yg)("td",{parentName:"tr",align:null},(0,l.yg)("em",{parentName:"td"},"Still")),(0,l.yg)("td",{parentName:"tr",align:null},(0,l.yg)("inlineCode",{parentName:"td"},"renders")),(0,l.yg)("td",{parentName:"tr",align:null},(0,l.yg)("strong",{parentName:"td"},"nicely"))),(0,l.yg)("tr",{parentName:"tbody"},(0,l.yg)("td",{parentName:"tr",align:null},"1"),(0,l.yg)("td",{parentName:"tr",align:null},"2"),(0,l.yg)("td",{parentName:"tr",align:null},"3")))),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"blockquotes"},"Blockquotes"),(0,l.yg)("blockquote",null,(0,l.yg)("p",{parentName:"blockquote"},"Blockquotes are very handy in email to emulate reply text. This line is part of the same quote.")),(0,l.yg)("p",null,"Quote break."),(0,l.yg)("blockquote",null,(0,l.yg)("p",{parentName:"blockquote"},"This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can ",(0,l.yg)("em",{parentName:"p"},"put")," ",(0,l.yg)("strong",{parentName:"p"},"Markdown")," into a blockquote.")),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"inline-html"},"Inline HTML"),(0,l.yg)("dl",null,(0,l.yg)("dt",null,"Definition list"),(0,l.yg)("dd",null,"Is something people use sometimes."),(0,l.yg)("dt",null,"Markdown in HTML"),(0,l.yg)("dd",null,"Does *not* work **very** well. Use HTML ",(0,l.yg)("em",null,"tags"),".")),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"line-breaks"},"Line Breaks"),(0,l.yg)("p",null,"Here's a line for us to start with."),(0,l.yg)("p",null,"This line is separated from the one above by two newlines, so it will be a ",(0,l.yg)("em",{parentName:"p"},"separate paragraph"),"."),(0,l.yg)("p",null,"This line is also a separate paragraph, but... This line is only separated by a single newline, so it's a separate line in the ",(0,l.yg)("em",{parentName:"p"},"same paragraph"),"."),(0,l.yg)("hr",null),(0,l.yg)("h2",{id:"admonitions"},"Admonitions"),(0,l.yg)("admonition",{type:"note"},(0,l.yg)("p",{parentName:"admonition"},"This is a note")),(0,l.yg)("admonition",{type:"tip"},(0,l.yg)("p",{parentName:"admonition"},"This is a tip")),(0,l.yg)("admonition",{type:"important"},(0,l.yg)("p",{parentName:"admonition"},"This is important")),(0,l.yg)("admonition",{type:"caution"},(0,l.yg)("p",{parentName:"admonition"},"This is a caution")),(0,l.yg)("admonition",{type:"warning"},(0,l.yg)("p",{parentName:"admonition"},"This is a warning")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/d1a25e88.02c8e59a.js b/build/assets/js/d1a25e88.02c8e59a.js new file mode 100644 index 00000000..8324948b --- /dev/null +++ b/build/assets/js/d1a25e88.02c8e59a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8965],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>y});var r=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var g=r.createContext({}),l=function(e){var t=r.useContext(g),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(g.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,g=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=l(n),d=a,y=u["".concat(g,".").concat(d)]||u[d]||c[d]||i;return n?r.createElement(y,s(s({ref:t},p),{},{components:n})):r.createElement(y,s({ref:t},p))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,s=new Array(i);s[0]=d;var o={};for(var g in t)hasOwnProperty.call(t,g)&&(o[g]=t[g]);o.originalType=e,o[u]="string"==typeof e?e:a,s[1]=o;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>y,frontMatter:()=>g,metadata:()=>p,toc:()=>c});var r=n(8168),a=n(8587),i=(n(6540),n(5680)),s=n(6025),o=["components"],g={id:"upgrade-gns3",title:"Upgrade GNS3",sidebar_label:"Upgrade GNS3"},l=void 0,p={unversionedId:"getting-started/installation/upgrade-gns3",id:"getting-started/installation/upgrade-gns3",title:"Upgrade GNS3",description:"Upgrading the GNS3 Client",source:"@site/docs/getting-started/installation/upgrade-gns3.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/upgrade-gns3",permalink:"/docs/getting-started/installation/upgrade-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/upgrade-gns3.md",tags:[],version:"current",frontMatter:{id:"upgrade-gns3",title:"Upgrade GNS3",sidebar_label:"Upgrade GNS3"},sidebar:"someSidebar",previous:{title:"One GNS3 server, multiple clients",permalink:"/docs/getting-started/installation/one-server-multiple-clients"},next:{title:"GNS3 on Equinix",permalink:"/docs/getting-started/installation/gns3-on-equinix"}},u={},c=[{value:"Upgrading the GNS3 Client",id:"upgrading-the-gns3-client",level:2},{value:"Windows / MacOS",id:"windows--macos",level:3},{value:"Linux packages",id:"linux-packages",level:3},{value:"Upgrading the GNS3 VM",id:"upgrading-the-gns3-vm",level:2}],d={toc:c};function y(e){var t=e.components,n=(0,a.A)(e,o);return(0,i.yg)("wrapper",(0,r.A)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"upgrading-the-gns3-client"},"Upgrading the GNS3 Client"),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Backup your topologies before upgrading.")),(0,i.yg)("h3",{id:"windows--macos"},"Windows / MacOS"),(0,i.yg)("p",null,"Just install the new version on top of the previous installation."),(0,i.yg)("h3",{id:"linux-packages"},"Linux packages"),(0,i.yg)("p",null,"If you are using Linux packages just upgrade GNS3 via your system package upgrade."),(0,i.yg)("h2",{id:"upgrading-the-gns3-vm"},"Upgrading the GNS3 VM"),(0,i.yg)("p",null,"Your GNS3 VM version need to be the same version as the GNS3 client."),(0,i.yg)("admonition",{type:"caution"},(0,i.yg)("p",{parentName:"admonition"},"You will find methods on the internet about using the pip command. Do not use it for the GNS3 VM, this will upgrade GNS3 but not the dependencies.")),(0,i.yg)("admonition",{type:"note"},(0,i.yg)("p",{parentName:"admonition"},"Before upgrading it we recommend that you snapshot your GNS3 VM in your virtualization software (VMware or VirtualBox). In case of issue this will allow you to rollback.")),(0,i.yg)("p",null,"In order to upgrade, press the ",(0,i.yg)("strong",{parentName:"p"},"Enter")," key at the GNS3 VM ",(0,i.yg)("strong",{parentName:"p"},"Information")," screen (",(0,i.yg)("strong",{parentName:"p"},"OK")," is the only option on that screen):"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/1.jpg")}),(0,i.yg)("p",null,"Press the ",(0,i.yg)("strong",{parentName:"p"},"Down arrow key")," to highlight ",(0,i.yg)("strong",{parentName:"p"},"Upgrade"),", and press ",(0,i.yg)("strong",{parentName:"p"},"Enter"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/2.jpg")}),(0,i.yg)("p",null,"You'll be presented with a warning to take a snapshot of the GNS3 VM, in case something goes awry during the upgrade process, as it can break your existing GNS3 VM. This option is highly recommended before proceeding!"),(0,i.yg)("p",null,"To continue with the upgrade process, ensure ",(0,i.yg)("strong",{parentName:"p"},"Yes")," is highlighted, and press ",(0,i.yg)("strong",{parentName:"p"},"Enter"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/3.jpg")}),(0,i.yg)("p",null,"As mentioned in the above screenshot, the GNS3 VM will reboot at the end of this process.\nYou can also change the version branch in use by your GNS3 VM. Use the arrow keys to highlight ",(0,i.yg)("strong",{parentName:"p"},"Channel"),", and press ",(0,i.yg)("strong",{parentName:"p"},"Enter"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/4.jpg")}),(0,i.yg)("p",null,"You will be presented with a warning that this option is only for testers. If you do wish to proceed, ensure ",(0,i.yg)("strong",{parentName:"p"},"Continue")," is highlighted, and press ",(0,i.yg)("strong",{parentName:"p"},"Enter"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/5.jpg")}),(0,i.yg)("p",null,"You will next be presented with a listing of the available release channels. It\u2019s highly recommended to stick with the ",(0,i.yg)("strong",{parentName:"p"},"Stable")," release channel!"),(0,i.yg)("p",null,"If you still wish to change the release channel, use the arrow keys to select the release channel you want to use, and press ",(0,i.yg)("strong",{parentName:"p"},"Enter"),". (the ",(0,i.yg)("strong",{parentName:"p"},"OK")," option is already selected):"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/6.jpg")}),(0,i.yg)("p",null,"To safely back out of this screen, press the ",(0,i.yg)("strong",{parentName:"p"},"Tab")," key, use the arrow keys to select ",(0,i.yg)("strong",{parentName:"p"},"Cancel"),", and press ",(0,i.yg)("strong",{parentName:"p"},"Enter"),":"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/7.jpg")}),(0,i.yg)("p",null,"This return you back to the main GNS3 VM menu, without changing the release channel:"),(0,i.yg)("img",{alt:"screenshot",src:(0,s.A)("img/getting-started/installation/upgrade-gns3/8.jpg")}))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/d5a0d1e6.8df28664.js b/build/assets/js/d5a0d1e6.8df28664.js new file mode 100644 index 00000000..6b30ada1 --- /dev/null +++ b/build/assets/js/d5a0d1e6.8df28664.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9469],{5680:(e,t,n)=>{n.d(t,{xA:()=>c,yg:()=>m});var i=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),d=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=d(e.components);return i.createElement(l.Provider,{value:t},e.children)},g="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=d(n),u=o,m=g["".concat(l,".").concat(u)]||g[u]||p[u]||r;return n?i.createElement(m,a(a({ref:t},c),{},{components:n})):i.createElement(m,a({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,a=new Array(r);a[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[g]="string"==typeof e?e:o,a[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>g,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var i=n(8168),o=n(8587),r=(n(6540),n(5680)),a=n(6025),s=["components"],l={id:"esxi",title:"Install the GNS3 VM on ESXi",sidebar_label:"ESXi"},d=void 0,c={unversionedId:"getting-started/installation/esxi",id:"getting-started/installation/esxi",title:"Install the GNS3 VM on ESXi",description:"VMware ESXi and VMware workstation are two totally different products. If you want instructions for VMware Workstation or VMware Fusion read this document.",source:"@site/docs/getting-started/installation/esxi.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/esxi",permalink:"/docs/getting-started/installation/esxi",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/esxi.md",tags:[],version:"current",frontMatter:{id:"esxi",title:"Install the GNS3 VM on ESXi",sidebar_label:"ESXi"},sidebar:"someSidebar",previous:{title:"Linux",permalink:"/docs/getting-started/installation/linux"},next:{title:"Remote Server",permalink:"/docs/getting-started/installation/remote-server"}},g={},p=[{value:"ESXi Version",id:"esxi-version",level:2},{value:"Download the GNS3 VM",id:"download-the-gns3-vm",level:2},{value:"Import the VM",id:"import-the-vm",level:2},{value:"Create the VM",id:"create-the-vm",level:3},{value:"Nested virtualization",id:"nested-virtualization",level:3},{value:"Cloud node support",id:"cloud-node-support",level:3},{value:"Security",id:"security",level:3},{value:"Add the VM in GNS3",id:"add-the-vm-in-gns3",level:2},{value:"Use it as a central server",id:"use-it-as-a-central-server",level:3},{value:"Additional compute process for my local server",id:"additional-compute-process-for-my-local-server",level:3},{value:"Access to the GNS3 VM via internet",id:"access-to-the-gns3-vm-via-internet",level:3}],u={toc:p};function m(e){var t=e.components,n=(0,o.A)(e,s);return(0,r.yg)("wrapper",(0,i.A)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"VMware ESXi and VMware workstation are two totally different products. If you want instructions for VMware Workstation or VMware Fusion ",(0,r.yg)("a",{parentName:"p",href:"../setup-wizard-gns3-vm"},"read this document"),".")),(0,r.yg)("p",null,"GNS3 provides a GNS3 VM for ESXi. It has Ubuntu preinstalled with GNS3 and preconfigured. GNS3 will not control your ESXi and by default ESXi limit what GNS3 can do, you will need to configure ESXi in order to properly run the GNS3 VM.3 VM."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Before using GNS3 on ESXi you need to know how to use it locally.")),(0,r.yg)("h2",{id:"esxi-version"},"ESXi Version"),(0,r.yg)("p",null,"This documentation cover only ESXi 6.5 using the web interface. The GNS3 VM is known to work with ESXi 5.5 and 6.0 but configuration interface will be different. The vSphere UI is also not explained here."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"VMware fixed the bug related to GNS3 after the official release of 6.5 so make sure to apply all updates. Especially you need to have the last web interface installed: ",(0,r.yg)("a",{parentName:"p",href:"https://labs.vmware.com/flings/esxi-embedded-host-client/"},"https://labs.vmware.com/flings/esxi-embedded-host-client/"))),(0,r.yg)("h2",{id:"download-the-gns3-vm"},"Download the GNS3 VM"),(0,r.yg)("p",null,"Read this documentation for download links. ",(0,r.yg)("a",{parentName:"p",href:"https://docs.gns3.com/1Bn-s1Izkjp13HxcPF4b8QSGfkWJYG_dpMt9U1DQjvZ4/index.html"},"https://docs.gns3.com/1Bn-s1Izkjp13HxcPF4b8QSGfkWJYG_dpMt9U1DQjvZ4/index.html")," CHECKLINK"),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Be careful to download the ESXi version for VMware and not the Workstation or VirtualBox version.")),(0,r.yg)("h2",{id:"import-the-vm"},"Import the VM"),(0,r.yg)("h3",{id:"create-the-vm"},"Create the VM"),(0,r.yg)("p",null,"Open the web interface and create a new VM:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/1.jpg")}),(0,r.yg)("p",null,"Choose \u201dDeploy a virtual machine from an OVF or OVA file\u201d"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/2.jpg")}),(0,r.yg)("p",null," Enter the name and upload the .ova of the GNS3 or if your OS unzip the OVA when extract the zip all the files:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/3.jpg")}),(0,r.yg)("p",null,"Select the datastore of your choice and continue."),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/4.jpg")}),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/5.jpg")}),(0,r.yg)("p",null,"At the end of wizard wait for disk upload:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/6.jpg")}),(0,r.yg)("h3",{id:"nested-virtualization"},"Nested virtualization"),(0,r.yg)("p",null,"After booting the VM you will see that KVM is not available:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/7.jpg")}),(0,r.yg)("p",null,"This prevent fast Qemu VM; in order to solve that we need to allow the nested virtualization."),(0,r.yg)("p",null,"Stop the VM and edit the settings. You need to check expose hardware assisted virtualization:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/8.jpg")}),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Previous Version of ESXi"),"\nIf you want do expose nested version on previous version. You need to edit the .vmx file and change the settings inside:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'hypervisor.cpuid.v0 = "FALSE"\nvhv.enable= "TRUE"\n')),(0,r.yg)("h3",{id:"cloud-node-support"},"Cloud node support"),(0,r.yg)("p",null,"By default VMware for security reason will block forged packets, which means the cloud will not work. To fix that create a new port group:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/9.jpg")}),(0,r.yg)("p",null,"And accept everything:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/10.jpg")}),(0,r.yg)("p",null,"Edit the VM settings to use the new network:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/11.jpg")}),(0,r.yg)("h3",{id:"security"},"Security"),(0,r.yg)("p",null,"GNS3 has no auth enabled by default. It\u2019s your duty to restrict access to it at the network level. Remember that someone controlling GNS3 could inject traffic in your network and run any VM of his choice."),(0,r.yg)("h2",{id:"add-the-vm-in-gns3"},"Add the VM in GNS3"),(0,r.yg)("p",null,"Since GNS3 2.0 you have two way for adding the VM in GNS3."),(0,r.yg)("h3",{id:"use-it-as-a-central-server"},"Use it as a central server"),(0,r.yg)("p",null,"With this method you can share a GNS3 instance with multiple clients. All the settings, images, projects will be stored on the GNS3 VM in ESXi. It\u2019s the common way to deploy GNS3 for multiple users."),(0,r.yg)("p",null,"Read documentation ",(0,r.yg)("a",{parentName:"p",href:"one-server-multiple-clients"},"here"),"."),(0,r.yg)("h3",{id:"additional-compute-process-for-my-local-server"},"Additional compute process for my local server"),(0,r.yg)("p",null,"If you want to keep data local and run some workload on your computer you can use it as remote compute node. First add the node in the remote server:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/12.jpg")}),(0,r.yg)("p",null,"Apply the settings. After that you need to alias the GNS3 VM as your remote server."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Why alias the remote server as the GNS3 VM? This allow portability, if you move the project to another computer the GNS3 VM alias could be to an instance of VMware Workstation, Virtualbox or a Cloud server")),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/13.jpg")}),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Default port of GNS3 VM is 80.")),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/getting-started/installation/esxi/14.jpg")}),(0,r.yg)("h3",{id:"access-to-the-gns3-vm-via-internet"},"Access to the GNS3 VM via internet"),(0,r.yg)("admonition",{type:"caution"},(0,r.yg)("p",{parentName:"admonition"},"Do not expose the GNS3 VM directly on the internet or via port redirection. It will not work. The correct and secure way is to use a VPN.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/d7f44f17.36955e2b.js b/build/assets/js/d7f44f17.36955e2b.js new file mode 100644 index 00000000..066db06c --- /dev/null +++ b/build/assets/js/d7f44f17.36955e2b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[668],{1966:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/build/assets/js/d8d6327f.f4bc3823.js b/build/assets/js/d8d6327f.f4bc3823.js new file mode 100644 index 00000000..9e87a856 --- /dev/null +++ b/build/assets/js/d8d6327f.f4bc3823.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[9029],{5680:(e,n,o)=>{o.d(n,{xA:()=>d,yg:()=>h});var t=o(6540);function a(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function r(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,t)}return o}function i(e){for(var n=1;n=0||(a[o]=e[o]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var s=t.createContext({}),u=function(e){var n=t.useContext(s),o=n;return e&&(o="function"==typeof e?e(n):i(i({},n),e)),o},d=function(e){var n=u(e.components);return t.createElement(s.Provider,{value:n},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var o=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(o),m=a,h=c["".concat(s,".").concat(m)]||c[m]||p[m]||r;return o?t.createElement(h,i(i({ref:n},d),{},{components:o})):t.createElement(h,i({ref:n},d))}));function h(e,n){var o=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var u=2;u{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var t=o(8168),a=o(8587),r=(o(6540),o(5680)),i=o(6025),l=["components"],s={id:"troubleshoot-gns3",title:"Troubleshoot GNS3",sidebar_label:"Troubleshoot GNS3"},u=void 0,d={unversionedId:"troubleshooting-faq/troubleshoot-gns3",id:"troubleshooting-faq/troubleshoot-gns3",title:"Troubleshoot GNS3",description:"Installation Problems",source:"@site/docs/troubleshooting-faq/troubleshoot-gns3.md",sourceDirName:"troubleshooting-faq",slug:"/troubleshooting-faq/troubleshoot-gns3",permalink:"/docs/troubleshooting-faq/troubleshoot-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/troubleshooting-faq/troubleshoot-gns3.md",tags:[],version:"current",frontMatter:{id:"troubleshoot-gns3",title:"Troubleshoot GNS3",sidebar_label:"Troubleshoot GNS3"},sidebar:"someSidebar",previous:{title:"Configure GNS3 to use an additional remote server",permalink:"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server"},next:{title:"General FAQ",permalink:"/docs/troubleshooting-faq/general-faq"}},c={},p=[{value:"Installation Problems",id:"installation-problems",level:2},{value:"On MacOSX",id:"on-macosx",level:3},{value:"On Microsoft Windows",id:"on-microsoft-windows",level:3},{value:"On linux",id:"on-linux",level:3},{value:"Dynamips",id:"dynamips",level:2},{value:"My IOS configuration is not saving",id:"my-ios-configuration-is-not-saving",level:3},{value:"My router crash",id:"my-router-crash",level:3},{value:"Dynamips take 100% of my CPU",id:"dynamips-take-100-of-my-cpu",level:3},{value:"VMware",id:"vmware",level:2},{value:"\u201cVMware vmrun tool could not be found\u201d when using VMware workstation player",id:"vmware-vmrun-tool-could-not-be-found-when-using-vmware-workstation-player",level:3},{value:"vmrun exit with Unknown error",id:"vmrun-exit-with-unknown-error",level:3},{value:"vmrun timeout",id:"vmrun-timeout",level:3},{value:"I can't find VMWare virtual machines in GNS3",id:"i-cant-find-vmware-virtual-machines-in-gns3",level:3},{value:"VirtualBox",id:"virtualbox",level:2},{value:"Invalid VBoxManage executable name VirtualBox.exe",id:"invalid-vboxmanage-executable-name-virtualboxexe",level:3},{value:"Cannot start VM because hardware virtualization (VT-x/AMD-V) is already used by another software like VMware or KVM",id:"cannot-start-vm-because-hardware-virtualization-vt-xamd-v-is-already-used-by-another-software-like-vmware-or-kvm",level:3},{value:"The following physical network interfaces were not found: vboxnet0",id:"the-following-physical-network-interfaces-were-not-found-vboxnet0",level:3},{value:"QEMU",id:"qemu",level:2},{value:"ASA",id:"asa",level:3},{value:"I have trouble with my ASA 8",id:"i-have-trouble-with-my-asa-8",level:3},{value:"KVM acceleration cannot be used (/dev/kvm doesn't exist). You can turn off KVM support in the gns3_server.conf by adding enable_kvm = false to the Qemu section",id:"kvm-acceleration-cannot-be-used-devkvm-doesnt-exist-you-can-turn-off-kvm-support-in-the-gns3_serverconf-by-adding-enable_kvm--false-to-the-qemu-section",level:3},{value:"IOU",id:"iou",level:2},{value:"IOU process has stopped, return code",id:"iou-process-has-stopped-return-code",level:3},{value:"My IOS configuration is not saving",id:"my-ios-configuration-is-not-saving-1",level:3},{value:"VPCS",id:"vpcs",level:2},{value:"My VPCS configuration is not saving",id:"my-vpcs-configuration-is-not-saving",level:3},{value:"Links",id:"links",level:2},{value:"My link between a device on my local machine and a remote device is not working",id:"my-link-between-a-device-on-my-local-machine-and-a-remote-device-is-not-working",level:3},{value:"When I use a SSH tunnel link is not working",id:"when-i-use-a-ssh-tunnel-link-is-not-working",level:3},{value:"When I connect to a server behind a nat link is not working",id:"when-i-connect-to-a-server-behind-a-nat-link-is-not-working",level:3},{value:"GNS3 VM",id:"gns3-vm",level:2},{value:"KVM support available : false",id:"kvm-support-available--false",level:3},{value:"I can\u2019t use KVM on ESXi",id:"i-cant-use-kvm-on-esxi",level:3},{value:"Could not find the default VM directory with VMware player",id:"could-not-find-the-default-vm-directory-with-vmware-player",level:3},{value:"KVM is not working on VirtualBox",id:"kvm-is-not-working-on-virtualbox",level:3},{value:"Error while executing VMware command",id:"error-while-executing-vmware-command",level:3},{value:"Cloud",id:"cloud",level:2},{value:"I can\u2019t use the cloud on ESXi",id:"i-cant-use-the-cloud-on-esxi",level:3},{value:"I have issue with a VMnet",id:"i-have-issue-with-a-vmnet",level:3},{value:"My cloud doesn\u2019t work on Windows",id:"my-cloud-doesnt-work-on-windows",level:3},{value:"OSX",id:"osx",level:2},{value:"GNS3 is not working in tmux on OSX",id:"gns3-is-not-working-in-tmux-on-osx",level:3},{value:"Windows",id:"windows",level:2},{value:"QSslSocket: cannot resolve SSL_set_alpn_protos",id:"qsslsocket-cannot-resolve-ssl_set_alpn_protos",level:3},{value:"Connection Problems",id:"connection-problems",level:2},{value:"Unable to connect to remote server error 404 /v3/version",id:"unable-to-connect-to-remote-server-error-404-v3version",level:3}],m={toc:p};function h(e){var n=e.components,o=(0,a.A)(e,l);return(0,r.yg)("wrapper",(0,t.A)({},m,o,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"installation-problems"},"Installation Problems"),(0,r.yg)("h3",{id:"on-macosx"},"On MacOSX"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"THE DMG IS DAMAGED")),(0,r.yg)("p",null,"You need to allow untrusted applications in your OSX settings."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u201cGNS3\u201d CAN\u2019T BE OPENED BECAUSE IT IS FROM AN UNIDENTIFIED DEVELOPER.")),(0,r.yg)("p",null,"You need to allow untrusted applications in your OSX settings."),(0,r.yg)("h3",{id:"on-microsoft-windows"},"On Microsoft Windows"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"UPDATE FOR UNIVERSAL C RUNTIME IN WINDOWS KB2999226")),(0,r.yg)("p",null,"If GNS3 ask you for Update for Universal C Runtime in Windows KB2999226 you need to install it. In theory this is distributed via Windows Update but you can force manual installation:"),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://support.microsoft.com/en-us/kb/2999226"},"https://support.microsoft.com/en-us/kb/2999226")),(0,r.yg)("p",null,"On Window 7 you need service pack 1."),(0,r.yg)("p",null,"If you can't install it you need to investigate why Windows Update is no longer working on your system it could be a virus blocking all updates including security updates."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL IS MISSING")),(0,r.yg)("p",null,"Make sure all the Windows update are installed and your computer as reboot. On Window 7 you need service pack 1. If not working download:\n",(0,r.yg)("a",{parentName:"p",href:"http://download.microsoft.com/download/8/5/e/85edb843-93af-4daa-ad1e-c33dfa95b2ea/vc_redist.x64.exe"},"http://download.microsoft.com/download/8/5/e/85edb843-93af-4daa-ad1e-c33dfa95b2ea/vc_redist.x64.exe")),(0,r.yg)("p",null,"Install and reboot"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"GNS3 STOP WORKING WHEN I OPEN A FILE")),(0,r.yg)("p",null,"If you have Dell Backup and Recovery (or Alien Respawn for Alienware) you need to uninstall or upgrade it to version >= 1.9.2.8. This software conflict with other application using Qt."),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"http://en.community.dell.com/support-forums/software-os/f/3526/t/19634253"},"http://en.community.dell.com/support-forums/software-os/f/3526/t/19634253")),(0,r.yg)("h3",{id:"on-linux"},"On linux"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"ICON ARE TINY"),"\nSolution from fedora wiki:"),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://fedoraproject.org/wiki/Common_F25_bugs#Application_issues"},"https://fedoraproject.org/wiki/Common_F25_bugs#Application_issues")),(0,r.yg)("p",null,"Start gns3 in a terminal like this:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"QT_SCALE_FACTOR=1 gns3\n")),(0,r.yg)("h2",{id:"dynamips"},"Dynamips"),(0,r.yg)("p",null,"If you have any issue with Dynamips make sure you are using one of the recommended images listed ",(0,r.yg)("a",{parentName:"p",href:"../emulators/cisco-ios-images-for-dynamips"},"here")),(0,r.yg)("h3",{id:"my-ios-configuration-is-not-saving"},"My IOS configuration is not saving"),(0,r.yg)("p",null,"Like a real hardware you need to save the configuration before the device is powered off. You can do that with write memory command."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1# write memory\n")),(0,r.yg)("h3",{id:"my-router-crash"},"My router crash"),(0,r.yg)("p",null,"This could be due to not enough memory."),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Video: ",(0,r.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=CQB9Ohhh6qU"},"https://www.youtube.com/watch?v=CQB9Ohhh6qU"))),(0,r.yg)("h3",{id:"dynamips-take-100-of-my-cpu"},"Dynamips take 100% of my CPU"),(0,r.yg)("p",null,"This could be an invalid IDLE PC value. Edit your router and fix it."),(0,r.yg)("h2",{id:"vmware"},"VMware"),(0,r.yg)("h3",{id:"vmware-vmrun-tool-could-not-be-found-when-using-vmware-workstation-player"},"\u201cVMware vmrun tool could not be found\u201d when using VMware workstation player"),(0,r.yg)("p",null,"The free version of VMware doesn\u2019t provide vmrun the command line utility for controlling VMware your need to download it for free from ",(0,r.yg)("a",{parentName:"p",href:"https://www.vmware.com/support/developer/vix-api/"},"https://www.vmware.com/support/developer/vix-api/")),(0,r.yg)("h3",{id:"vmrun-exit-with-unknown-error"},"vmrun exit with Unknown error"),(0,r.yg)("p",null,"This error mean VMware has failed due to an internal error. But the VMware tools don\u2019t provide informations when something is wrong on his side."),(0,r.yg)("p",null,"This could be :"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"The VM is corrupted"),(0,r.yg)("li",{parentName:"ul"},"Your VMware installation as expired"),(0,r.yg)("li",{parentName:"ul"},"VMware ask you something in the GUI"),(0,r.yg)("li",{parentName:"ul"},"Permissions issue with your VMware installation")),(0,r.yg)("p",null,"It\u2019s very important to run GNS3 and VMware under the same user."),(0,r.yg)("p",null,"How to troubleshoot:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Start the faulty VM in the GUI"),(0,r.yg)("li",{parentName:"ul"},"If VM is not working reimport it"),(0,r.yg)("li",{parentName:"ul"},"If the VM doesn\u2019t work try to import a different VM"),(0,r.yg)("li",{parentName:"ul"},"If this VM doesn\u2019t work reinstall GNS3")),(0,r.yg)("h3",{id:"vmrun-timeout"},"vmrun timeout"),(0,r.yg)("p",null,"This issue is often related to a problem with your antivirus / firewall."),(0,r.yg)("p",null,"See the official answer from VMware:"),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2050353"},"https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2050353")),(0,r.yg)("h3",{id:"i-cant-find-vmware-virtual-machines-in-gns3"},"I can't find VMWare virtual machines in GNS3"),(0,r.yg)("p",null,"The player version of VMware have limitation and if your VM are not in the default directory sometimes GNS3 could not found the VM."),(0,r.yg)("p",null,"This problem doesn\u2019t occur with the paid version of VMware because a central database is available to third parties applications."),(0,r.yg)("h2",{id:"virtualbox"},"VirtualBox"),(0,r.yg)("h3",{id:"invalid-vboxmanage-executable-name-virtualboxexe"},"Invalid VBoxManage executable name VirtualBox.exe"),(0,r.yg)("p",null,"In the GNS3 settings the path for your VBoxManage is incorrect. VirtualBox.exe is the VirtualBox executable, VBoxManage is the application from VirtualBox for controlling VirtualBox it\u2019s two different executables."),(0,r.yg)("h3",{id:"cannot-start-vm-because-hardware-virtualization-vt-xamd-v-is-already-used-by-another-software-like-vmware-or-kvm"},"Cannot start VM because hardware virtualization (VT-x/AMD-V) is already used by another software like VMware or KVM"),(0,r.yg)("p",null,"Another virtualization software (VMware, Qemu with KVM, Hyper-V...) is already running on your computer and use your CPU hardware virtualization. Only one program can benefits of the hardware acceleration. You need to stop the other program if you want to start VirtualBox."),(0,r.yg)("h3",{id:"the-following-physical-network-interfaces-were-not-found-vboxnet0"},"The following physical network interfaces were not found: vboxnet0"),(0,r.yg)("p",null,"The default VirtualBox interface network interface are not installed on your system. You can fix that in VirtualBox preference or by reinstalling VirtualBox."),(0,r.yg)("h2",{id:"qemu"},"QEMU"),(0,r.yg)("h3",{id:"asa"},"ASA"),(0,r.yg)("p",null,"Make sure to read the documentation:\n",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com/support/docs/asa-2"},"https://gns3.com/support/docs/asa-2"),"\nAnd follow the recommendation."),(0,r.yg)("h3",{id:"i-have-trouble-with-my-asa-8"},"I have trouble with my ASA 8"),(0,r.yg)("p",null,"Asa 8 is not supported use ASAv instead:\n",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com/support/docs/asa-2"},"https://gns3.com/support/docs/asa-2")),(0,r.yg)("h3",{id:"kvm-acceleration-cannot-be-used-devkvm-doesnt-exist-you-can-turn-off-kvm-support-in-the-gns3_serverconf-by-adding-enable_kvm--false-to-the-qemu-section"},"KVM acceleration cannot be used (/dev/kvm doesn't exist). You can turn off KVM support in the gns3_server.conf by adding enable_kvm = false to the ","[Qemu]"," section"),(0,r.yg)("p",null,"This mean the remote server where you try to run Qemu doesn\u2019t support KVM (hardware acceleration for Qemu). Read this documentation to enable it if possible: KVM support available: false"),(0,r.yg)("p",null,"To ignore this error in the file ~/.config/GNS3/gns3_server.conf add:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"[Qemu]\nenable_kvm = false\n")),(0,r.yg)("h2",{id:"iou"},"IOU"),(0,r.yg)("h3",{id:"iou-process-has-stopped-return-code"},"IOU process has stopped, return code"),(0,r.yg)("p",null,"If you see this error the image has crashed. IOU is an experimental technology from Cisco and have no warranty to be stable. The best is to try with a different images."),(0,r.yg)("h3",{id:"my-ios-configuration-is-not-saving-1"},"My IOS configuration is not saving"),(0,r.yg)("p",null,"Like a real hardware you need to save the configuration before the device is powered off. You can do that with write memory command."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"R1# write memory\n")),(0,r.yg)("h2",{id:"vpcs"},"VPCS"),(0,r.yg)("h3",{id:"my-vpcs-configuration-is-not-saving"},"My VPCS configuration is not saving"),(0,r.yg)("p",null,"Like a real hardware you need to save the configuration before the device is powered off. You can do that with the save command."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"PC1> save\n")),(0,r.yg)("h2",{id:"links"},"Links"),(0,r.yg)("h3",{id:"my-link-between-a-device-on-my-local-machine-and-a-remote-device-is-not-working"},"My link between a device on my local machine and a remote device is not working"),(0,r.yg)("p",null,"GNS3 will communicate between device on random UDP port (you can configure the port range in the configuration file of the server and in the GUI). This mean both server need to be able to communicate directly on this ports check your firewall rules."),(0,r.yg)("h3",{id:"when-i-use-a-ssh-tunnel-link-is-not-working"},"When I use a SSH tunnel link is not working"),(0,r.yg)("p",null,"SSH tunnel is not supported, use a VPN like OpenVPN instead"),(0,r.yg)("h3",{id:"when-i-connect-to-a-server-behind-a-nat-link-is-not-working"},"When I connect to a server behind a nat link is not working"),(0,r.yg)("p",null,"NAT is not supported, use a VPN like OpenVPN instead"),(0,r.yg)("h2",{id:"gns3-vm"},"GNS3 VM"),(0,r.yg)("h3",{id:"kvm-support-available--false"},"KVM support available : false"),(0,r.yg)("p",null,"The virtualisation software where the GNS3 VM is running doesn\u2019t support nested virtualization. Many possible reason:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"VirtualBox doesn\u2019t support it; you can\u2019t enable it"),(0,r.yg)("li",{parentName:"ul"},"Your CPU doesn\u2019t support virtualization"),(0,r.yg)("li",{parentName:"ul"},"The virtualization instructions are not enabled in your BIOS"),(0,r.yg)("li",{parentName:"ul"},"The hardware virtualization is not enabled for this VM in VMware"),(0,r.yg)("li",{parentName:"ul"},"For ESXi it\u2019s require manual operation (see below)")),(0,r.yg)("h3",{id:"i-cant-use-kvm-on-esxi"},"I can\u2019t use KVM on ESXi"),(0,r.yg)("p",null,"In order to use KVM (hardware acceleration for Qemu VMS) you need to enable the nested virtualization on the GNS3 VM in ESXi. Depending on how you administrate the ESXi it could be a checkbox in your interface or a configuration file to change."),(0,r.yg)("h3",{id:"could-not-find-the-default-vm-directory-with-vmware-player"},"Could not find the default VM directory with VMware player"),(0,r.yg)("p",null,"A limitation of the free version of VMware player doesn\u2019t allow you to change the default VM directory for third parties applications."),(0,r.yg)("p",null,"You can fix it by:\nEditing the file %Appdata%\\VMware\\preferences.ini\nAnd add a line like this:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'prefvmx.defaultvmpath = "F:\\My Documents\\Virtual Machines"\n')),(0,r.yg)("h3",{id:"kvm-is-not-working-on-virtualbox"},"KVM is not working on VirtualBox"),(0,r.yg)("p",null,"It\u2019s a limitation of VirtualBox. If you want to use KVM in a VM you need VMware."),(0,r.yg)("h3",{id:"error-while-executing-vmware-command"},"Error while executing VMware command"),(0,r.yg)("p",null,"If you see a dialog like that:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/troubleshooting-faq/troubleshoot-gns3/1.jpg")}),(0,r.yg)("p",null,"This mean GNS3 try to send a command to VMware but it\u2019s doesn\u2019t work due to an issue with your VMware installation."),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"First try to run the command in a terminal to see if VMware don\u2019t ask you something in a message dialog (when launched from GNS3 VMware will fail but will not display dialog)"),(0,r.yg)("li",{parentName:"ul"},"Make sure GNS3 and VMware run under the same user. If you use \u201cRun as administrator\u201d it will start GNS3 under a different user than you standard user and VMware will not know how to connect."),(0,r.yg)("li",{parentName:"ul"},"If you use VMware player make sure you have the last VIX api installed"),(0,r.yg)("li",{parentName:"ul"},"If you use VMware workstation make sure the VIX api is not installed")),(0,r.yg)("h2",{id:"cloud"},"Cloud"),(0,r.yg)("h3",{id:"i-cant-use-the-cloud-on-esxi"},"I can\u2019t use the cloud on ESXi"),(0,r.yg)("p",null,"If you are on ESXi by default for security reason you are not allowed to inject raw packet in an interface. You need to enable the promiscuous mode on the interface."),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1004099"},"https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1004099")),(0,r.yg)("h3",{id:"i-have-issue-with-a-vmnet"},"I have issue with a VMnet"),(0,r.yg)("p",null,"Do not directly use a VMnet in a cloud. Instead use the built in support for VMware (go to preferences / VMware and add the VM)."),(0,r.yg)("h3",{id:"my-cloud-doesnt-work-on-windows"},"My cloud doesn\u2019t work on Windows"),(0,r.yg)("p",null,"Try to replace Winpcap by Npcap:\n",(0,r.yg)("a",{parentName:"p",href:"https://github.com/nmap/npcap/releases"},"https://github.com/nmap/npcap/releases"),"\nIf you didn\u2019t reboot since GNS3 install you could also try to reboot."),(0,r.yg)("h2",{id:"osx"},"OSX"),(0,r.yg)("h3",{id:"gns3-is-not-working-in-tmux-on-osx"},"GNS3 is not working in tmux on OSX"),(0,r.yg)("p",null,"You need to fix your tmux configuration:"),(0,r.yg)("p",null,(0,r.yg)("a",{parentName:"p",href:"https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard"},"https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard")),(0,r.yg)("h2",{id:"windows"},"Windows"),(0,r.yg)("h3",{id:"qsslsocket-cannot-resolve-ssl_set_alpn_protos"},"QSslSocket: cannot resolve SSL_set_alpn_protos"),(0,r.yg)("p",null,"You have an old Open SSL installation on your system. This installation take the priority on GNS3 bundled version. You need to upgrade your Open SSL or uinstall it."),(0,r.yg)("h2",{id:"connection-problems"},"Connection Problems"),(0,r.yg)("h3",{id:"unable-to-connect-to-remote-server-error-404-v3version"},"Unable to connect to remote server ",(0,r.yg)("inlineCode",{parentName:"h3"},"error 404 /v3/version")),(0,r.yg)("p",null,"You are using a newer version of the GNS3 GUI than the GNS3 Server (V3 GUI and V2 Server), either upgrade the GNS3 Server or use an older version of the GNS3 GUI."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/d907171e.482d8822.js b/build/assets/js/d907171e.482d8822.js new file mode 100644 index 00000000..f5757616 --- /dev/null +++ b/build/assets/js/d907171e.482d8822.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[2935],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>g});var o=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),d=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=d(n),h=a,g=u["".concat(l,".").concat(h)]||u[h]||c[h]||r;return n?o.createElement(g,i(i({ref:t},p),{},{components:n})):o.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var o=n(8168),a=n(8587),r=(n(6540),n(5680)),i=n(6025),s=["components"],l={id:"download-gns3-vm",title:"Downloading the GNS3 VM",sidebar_label:"Download the GNS3 VM"},d=void 0,p={unversionedId:"getting-started/installation/download-gns3-vm",id:"getting-started/installation/download-gns3-vm",title:"Downloading the GNS3 VM",description:"Which Virtualization Software? VirtualBox or VMware?",source:"@site/docs/getting-started/installation/download-gns3-vm.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/download-gns3-vm",permalink:"/docs/getting-started/installation/download-gns3-vm",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/download-gns3-vm.md",tags:[],version:"current",frontMatter:{id:"download-gns3-vm",title:"Downloading the GNS3 VM",sidebar_label:"Download the GNS3 VM"},sidebar:"someSidebar",previous:{title:"Remote Server",permalink:"/docs/getting-started/installation/remote-server"},next:{title:"Download for Windows 32-bit",permalink:"/docs/getting-started/installation/download-32-bit"}},u={},c=[{value:"Which Virtualization Software? VirtualBox or VMware?",id:"which-virtualization-software-virtualbox-or-vmware",level:2},{value:"Downloading the VM",id:"downloading-the-vm",level:2}],h={toc:c};function g(e){var t=e.components,n=(0,a.A)(e,s);return(0,r.yg)("wrapper",(0,o.A)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"which-virtualization-software-virtualbox-or-vmware"},"Which Virtualization Software? VirtualBox or VMware?"),(0,r.yg)("p",null,"In this document we will explain the import of the GNS3 VM for VMware, but instructions for VirtualBox are similar (instructions for using the new Hyper-V and KVM versions of the GNS3 VM will be discussed in a separate post)."),(0,r.yg)("p",null,"VMware is a better option because it\u2019s faster and supports nested virtualization (the VMs inside the VM are accelerated by your CPU). The speed difference is important and some VMs will be too slow on VirtualBox* (see note below)."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"For GNS3 1.3 please read ",(0,r.yg)("a",{parentName:"p",href:"download-32-bit"},"this documentation"),".")),(0,r.yg)("p",null,"Users running the GNS3 VM in Workstation Player should look at Note 3 at the end of the article, for a fix with WS Player 15.x versions and VIX 1.17"),(0,r.yg)("h2",{id:"downloading-the-vm"},"Downloading the VM"),(0,r.yg)("p",null,"You can obtain the GNS3-VM in several ways. You can download it via ",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com/software/download-vm"},"https://gns3.com/software/download-vm"),". Select either the Virtualbox, VMware Workstation/Fusion, VMware ESXi versions, or HyperV."),(0,r.yg)("p",null,"These will be .zip archives, so make sure you choose \u201cSave as\u2026\u201d when downloading them, and then extract them for import into your hypervisor of choice."),(0,r.yg)("p",null,"The second option is to browse to the ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-gui/releases"},"GNS3 release page on github"),", where you can download the GNS3 application, the various versions of the GNS3 VM, and the source code from the same section:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/download-gns3-vm/1.jpg")}),(0,r.yg)("admonition",{type:"caution"},(0,r.yg)("p",{parentName:"admonition"},"Running the VirtualBox version on VMware or the VMware version on VirtualBox will not work")),(0,r.yg)("admonition",{type:"caution"},(0,r.yg)("p",{parentName:"admonition"},"VMware Workstation and VMware ESXi require different GNS3 VM files")),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"VMware Fusion is the marketing name for VMware Workstation on Mac OSX")),(0,r.yg)("p",null,"A third option is to download it via a provided link in the GNS3 Setup Wizard:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/download-gns3-vm/2.jpg")}),(0,r.yg)("p",null,"When you click that embedded link, it will automatically start downloading the GNS3-VM .zip file from the GNS3 github release page. "),(0,r.yg)("p",null,"In order to see this particular option, you\u2019ll need to choose the \u201cRun modern IOS (IOSv or IOU), ASA, and appliances from non-Cisco manufacturers\u201d option in the Setup Wizard, as shown below, since this indicates that you will want to use the GNS3-VM (the other two indicate either local or remote server use only):"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/getting-started/installation/download-gns3-vm/3.jpg")}),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"The GNS3 VM has a built in upgrade mechanism so you will not need to download again for every release.")),(0,r.yg)("p",null,"You can get 20% off ",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/software/workstation-pro-15"},"VMware Workstation Pro")," and ",(0,r.yg)("a",{parentName:"p",href:"https://gns3.com/marketplace/software/fusion-8"},"VMware Fusion")," thanks to our deal with VMware."),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Nested hardware virtualization functionality, and nested paging, were added to Virtualbox starting in version 6.0, but with a caveat: It is currently only available to users with desktops/laptops that have AMD CPUs (such as their recent Ryzen processors). Support for this feature with Intel CPUs has been stated to be forthcoming. "),(0,r.yg)("p",{parentName:"admonition"},"This means that with supported CPUs, it is viable to run the GNS3 VM in Virtualbox 6.x (Virtualbox 6.0.12 was the latest tested, as of this writing). Questions about when Intel CPU h/w virt will be available for Virtualbox should be directed to the Virtualbox support forums only, not the GNS3 forums!")),(0,r.yg)("p",null,"Use of Virtualbox to run the GNS3 VM will be covered in a separate article"),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Users running the GNS3 VM in WS Player have been reporting issues with the available versions of VIX and Player 15.x. A workaround for the problem is located in this forum thread.")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/de112a60.eab8c354.js b/build/assets/js/de112a60.eab8c354.js new file mode 100644 index 00000000..274d6b77 --- /dev/null +++ b/build/assets/js/de112a60.eab8c354.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[3273],{5680:(e,r,t)=>{t.d(r,{xA:()=>l,yg:()=>f});var o=t(6540);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var u=o.createContext({}),c=function(e){var r=o.useContext(u),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},l=function(e){var r=c(e.components);return o.createElement(u.Provider,{value:r},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var r=e.children;return o.createElement(o.Fragment,{},r)}},p=o.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=c(t),p=n,f=d["".concat(u,".").concat(p)]||d[p]||g[p]||i;return t?o.createElement(f,a(a({ref:r},l),{},{components:t})):o.createElement(f,a({ref:r},l))}));function f(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,a=new Array(i);a[0]=p;var s={};for(var u in r)hasOwnProperty.call(r,u)&&(s[u]=r[u]);s.originalType=e,s[d]="string"==typeof e?e:n,a[1]=s;for(var c=2;c{t.r(r),t.d(r,{assets:()=>d,contentTitle:()=>c,default:()=>f,frontMatter:()=>u,metadata:()=>l,toc:()=>g});var o=t(8168),n=t(8587),i=(t(6540),t(5680)),a=t(6025),s=["components"],u={id:"configure-gns3-to-use-an-additional-remote-server",title:"Configure GNS3 to use an additional remote server",sidebar_label:"Configure GNS3 to use an additional remote server"},c=void 0,l={unversionedId:"how-to-guides/configure-gns3-to-use-an-additional-remote-server",id:"how-to-guides/configure-gns3-to-use-an-additional-remote-server",title:"Configure GNS3 to use an additional remote server",description:"Configure GNS3 to use an additional remote server",source:"@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md",sourceDirName:"how-to-guides",slug:"/how-to-guides/configure-gns3-to-use-an-additional-remote-server",permalink:"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md",tags:[],version:"current",frontMatter:{id:"configure-gns3-to-use-an-additional-remote-server",title:"Configure GNS3 to use an additional remote server",sidebar_label:"Configure GNS3 to use an additional remote server"},sidebar:"someSidebar",previous:{title:"How to use applications with the GNS3 Web interface",permalink:"/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui"},next:{title:"Troubleshoot GNS3",permalink:"/docs/troubleshooting-faq/troubleshoot-gns3"}},d={},g=[{value:"Configure GNS3 to use an additional remote server",id:"configure-gns3-to-use-an-additional-remote-server",level:2}],p={toc:g};function f(e){var r=e.components,t=(0,n.A)(e,s);return(0,i.yg)("wrapper",(0,o.A)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,i.yg)("h2",{id:"configure-gns3-to-use-an-additional-remote-server"},"Configure GNS3 to use an additional remote server"),(0,i.yg)("p",null,"In ",(0,i.yg)("strong",{parentName:"p"},"Preferences > Remote")," servers add this server:\nAdd and apply."),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/how-to-guides/configure-gns3-to-use-an-additional-remote-server/1.jpg")}),(0,i.yg)("p",null,"When you create a new VM, select Remote server in the wizard:"),(0,i.yg)("img",{alt:"screenshot",src:(0,a.A)("img/how-to-guides/configure-gns3-to-use-an-additional-remote-server/2.jpg")}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/e20c0e82.1125a30d.js b/build/assets/js/e20c0e82.1125a30d.js new file mode 100644 index 00000000..13647aeb --- /dev/null +++ b/build/assets/js/e20c0e82.1125a30d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[6038],{5680:(e,n,t)=>{t.d(n,{xA:()=>c,yg:()=>y});var o=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var g=o.createContext({}),l=function(e){var n=o.useContext(g),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},c=function(e){var n=l(e.components);return o.createElement(g.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},u=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,g=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(t),u=r,y=d["".concat(g,".").concat(u)]||d[u]||p[u]||a;return t?o.createElement(y,i(i({ref:n},c),{},{components:t})):o.createElement(y,i({ref:n},c))}));function y(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=u;var s={};for(var g in n)hasOwnProperty.call(n,g)&&(s[g]=n[g]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>y,frontMatter:()=>g,metadata:()=>c,toc:()=>p});var o=t(8168),r=t(8587),a=(t(6540),t(5680)),i=t(6025),s=["components"],g={id:"connect-gns3-internet",title:"Connect GNS3 to the Internet (local server)",sidebar_label:"Connect GNS3 to the Internet"},l=void 0,c={unversionedId:"using-gns3/advanced/connect-gns3-internet",id:"using-gns3/advanced/connect-gns3-internet",title:"Connect GNS3 to the Internet (local server)",description:"Introduction",source:"@site/docs/using-gns3/advanced/connect-gns3-internet.md",sourceDirName:"using-gns3/advanced",slug:"/using-gns3/advanced/connect-gns3-internet",permalink:"/docs/using-gns3/advanced/connect-gns3-internet",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/advanced/connect-gns3-internet.md",tags:[],version:"current",frontMatter:{id:"connect-gns3-internet",title:"Connect GNS3 to the Internet (local server)",sidebar_label:"Connect GNS3 to the Internet"},sidebar:"someSidebar",previous:{title:"Link Control",permalink:"/docs/using-gns3/beginners/link-control"},next:{title:"The NAT node",permalink:"/docs/using-gns3/advanced/the-nat-node"}},d={},p=[{value:"Introduction",id:"introduction",level:2},{value:"Local Install",id:"local-install",level:2}],u={toc:p};function y(e){var n=e.components,t=(0,r.A)(e,s);return(0,a.yg)("wrapper",(0,o.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h2",{id:"introduction"},"Introduction"),(0,a.yg)("p",null,"This document explains how to connect GNS3 topologies to the Internet when using a local GNS3 server."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Use of the NAT node to allow topology nodes to access the internet is also an option. It is simpler than using the Cloud node, but devices on your LAN and the Internet will not be able to access them directly. Instructions on using the NAT node are covered here.")),(0,a.yg)("p",null,"The topology created in this document looks as follows:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/1.jpg")}),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"Ensure that your PC firewall is not blocking GNS3 traffic. If necessary, turn off your PC\u2019s firewall.")),(0,a.yg)("h2",{id:"local-install"},"Local Install"),(0,a.yg)("p",null,"The following steps show you how to connect a local GNS3 installation to the Internet. In this document a simple topology of two Cisco routers are used to demonstrate:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Adding a cloud to the GNS3 topology"),(0,a.yg)("li",{parentName:"ul"},"Configuring IP addressing"),(0,a.yg)("li",{parentName:"ul"},"Configuring DNS resolution"),(0,a.yg)("li",{parentName:"ul"},"Configuring NAT on the Cisco router"),(0,a.yg)("li",{parentName:"ul"},"Advertising Routes in OSPF"),(0,a.yg)("li",{parentName:"ul"},"Testing")),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},"To create a new GNS3 topology, select a group of devices in the ",(0,a.yg)("strong",{parentName:"li"},"Devices Toolbar")," by clicking the ",(0,a.yg)("strong",{parentName:"li"},"Browse Routers")," button")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/2.jpg")}),(0,a.yg)("ol",{start:2},(0,a.yg)("li",{parentName:"ol"},"The routers available will depend on your GNS3 configuration. In this example both a local router and GNS3 VM router are available.")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/3.jpg")}),(0,a.yg)("ol",{start:3},(0,a.yg)("li",{parentName:"ol"},"Drag and drop a ",(0,a.yg)("strong",{parentName:"li"},"local")," router to the GNS3 ",(0,a.yg)("strong",{parentName:"li"},"Workspace"),". An instance of the node becomes available in the ",(0,a.yg)("strong",{parentName:"li"},"Workspace"),":")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/4.jpg")}),(0,a.yg)("ol",{start:4},(0,a.yg)("li",{parentName:"ol"},"Drag and drop another ",(0,a.yg)("strong",{parentName:"li"},"local server")," router to the GNS3 ",(0,a.yg)("strong",{parentName:"li"},"Workspace"),":")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/5.jpg")}),(0,a.yg)("ol",{start:5},(0,a.yg)("li",{parentName:"ol"},"Click the ",(0,a.yg)("strong",{parentName:"li"},"End devices")," button:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/6.jpg")}),(0,a.yg)("ol",{start:6},(0,a.yg)("li",{parentName:"ol"},"Drag and drop a ",(0,a.yg)("strong",{parentName:"li"},"Cloud")," node to the ",(0,a.yg)("strong",{parentName:"li"},"Workspace"),", select a ",(0,a.yg)("strong",{parentName:"li"},"local server"),", and then click ",(0,a.yg)("strong",{parentName:"li"},"OK"),":")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/7.jpg")}),(0,a.yg)("ol",{start:7},(0,a.yg)("li",{parentName:"ol"},"The ",(0,a.yg)("strong",{parentName:"li"},"Cloud")," node will now appear in the ",(0,a.yg)("strong",{parentName:"li"},"Workspace"),":")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/8.jpg")}),(0,a.yg)("ol",{start:8},(0,a.yg)("li",{parentName:"ol"},"Click the ",(0,a.yg)("strong",{parentName:"li"},"Toolbar Device")," button again to collapse the group:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/9.jpg")}),(0,a.yg)("ol",{start:9},(0,a.yg)("li",{parentName:"ol"},"Right click on the ",(0,a.yg)("strong",{parentName:"li"},"Cloud")," and then click ",(0,a.yg)("strong",{parentName:"li"},"Configure"),":")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/10.jpg")}),(0,a.yg)("ol",{start:10},(0,a.yg)("li",{parentName:"ol"},"A list of available Ethernet interfaces is listed:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/11.jpg")}),(0,a.yg)("p",null,"Use of physical interfaces is recommended. However, it is possible to use other interfaces, like a bridge interface, or a wireless interface. Configuring those is outside the scope of this article."),(0,a.yg)("p",null,"Below are examples of enabling \u201cshow special ethernet interfaces\u201d, and then viewing the dropdown list:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/12.jpg")}),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/13.jpg")}),(0,a.yg)("ol",{start:11},(0,a.yg)("li",{parentName:"ol"},"Click the ",(0,a.yg)("strong",{parentName:"li"},"Add a Link")," button to start adding links to your topology. The mouse cursor will change to indicate that links can be added:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/14.jpg")}),(0,a.yg)("ol",{start:12},(0,a.yg)("li",{parentName:"ol"},"Click on the first router topology to display available interfaces (this is device dependant):")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/15.jpg")}),(0,a.yg)("ol",{start:13},(0,a.yg)("li",{parentName:"ol"},"Click the interface and then select the cloud in the topology to connect the interface to it. In this example FastEthernet 0/0 on R1 was selected. Next, click on the Cloud node, to see a list of available interfaces:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/16.jpg")}),(0,a.yg)("p",null,"(notice that the listed interfaces on the Cloud node matches what we saw in its properties)"),(0,a.yg)("ol",{start:14},(0,a.yg)("li",{parentName:"ol"},"Select an interface on the ",(0,a.yg)("strong",{parentName:"li"},"Cloud")," to complete the connection. In this example, ",(0,a.yg)("strong",{parentName:"li"},"Ethernet")," on ",(0,a.yg)("strong",{parentName:"li"},"Cloud 1")," was selected:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/17.jpg")}),(0,a.yg)("ol",{start:15},(0,a.yg)("li",{parentName:"ol"},"Add another link between R2 and R1:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/18.jpg")}),(0,a.yg)("ol",{start:16},(0,a.yg)("li",{parentName:"ol"},"Click the ",(0,a.yg)("strong",{parentName:"li"},"Add a Link")," button to stop adding links. The mouse cursor will change back to normal to indicate that you have stopped adding links:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/19.jpg")}),(0,a.yg)("ol",{start:17},(0,a.yg)("li",{parentName:"ol"},"If not already done, click the ",(0,a.yg)("strong",{parentName:"li"},"Show/Hide interface labels")," button on the ",(0,a.yg)("strong",{parentName:"li"},"GNS3 Toolbar")," to display interface labels in your topology:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/20.jpg")}),(0,a.yg)("ol",{start:18},(0,a.yg)("li",{parentName:"ol"},"You are now ready to power on your network devices. Click the Start/Resume button on the GNS3 Toolbar to start up your network devices:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/21.jpg")}),(0,a.yg)("ol",{start:19},(0,a.yg)("li",{parentName:"ol"},"You are now ready to configure your devices. Click the ",(0,a.yg)("strong",{parentName:"li"},"Console connect to all devices")," button on the ",(0,a.yg)("strong",{parentName:"li"},"Toolbar")," to open a connection to every device in the topology:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/22.jpg")}),(0,a.yg)("ol",{start:20},(0,a.yg)("li",{parentName:"ol"},"A console connection is opened to each router in the topology:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/23.jpg")}),(0,a.yg)("ol",{start:21},(0,a.yg)("li",{parentName:"ol"},"Configure IP addresses:")),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Option 1: DHCP"),"\nIf using DHCP, configure R1 as follows:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1# configure terminal\nR1(config)# interface FastEthernet 0/0\nR1(config-if)# ip address dhcp\nR1(config-if)# no shutdown\nR1(config-if)# end\nR1#\n")),(0,a.yg)("p",null,"Result: An IP address is allocated to the router by the DHCP server:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1#\n*Mar 1 00:03:14.831: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.1.29, mask 255.255.255.0, hostname R1\n")),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Option 2: Manual configuration"),"\nIf configuring static IP address, configure R1 with an IP address in the same subnet as your local PC:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1# configure terminal\nR1(config)# interface FastEthernet 0/0\nR1(config-if)# ip address 192.168.1.123 255.255.255.0\nR1(config-if)# no shutdown\nR1(config-if)# exit\n")),(0,a.yg)("p",null,"Configure a default gateway:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1(config)# ip route 0.0.0.0 0.0.0.0 192.168.1.249\nR1(config)# end\n")),(0,a.yg)("ol",{start:22},(0,a.yg)("li",{parentName:"ol"},"Ping the router\u2019s default gateway:")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1# ping 192.168.1.249\n\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 192.168.1.249, timeout is 2 seconds:\n.!!!!\nSuccess rate is 80 percent (4/5), round-trip min/avg/max = 8/17/36 ms\nR1#\n")),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Result")," Pings should succeed."),(0,a.yg)("ol",{start:23},(0,a.yg)("li",{parentName:"ol"},"Ensure that the router is configured to use the correct DNS server:")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1# configure terminal\n\nR1(config)# ip domain-lookup\nR1(config)# ip name-server 8.8.8.8\nR1(config)# end\nR1#\n")),(0,a.yg)("ol",{start:24},(0,a.yg)("li",{parentName:"ol"},"Ping google.com:")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},'R1# ping google.com\n\n\nTranslating "google.com"...domain server (8.8.8.8) [OK]\n\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 216.58.198.174, timeout is 2 seconds:\n!!!!!\nSuccess rate is 100 percent (5/5), round-trip min/avg/max = 12/19/24 ms\nR1#\n')),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Result")," Pings succeed."),(0,a.yg)("p",null,"If your pings don\u2019t succeed, ensure that you have connectivity to your default gateway and ensure that the default gateway is configured for NAT to translate the address allocated to the GNS3 router."),(0,a.yg)("ol",{start:25},(0,a.yg)("li",{parentName:"ol"},"Configure IP addressing on the Internal GNS3 network:")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/advanced/connect-gns3-internet/24.jpg")}),(0,a.yg)("p",null,"Configuration on the routers:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1 R1# configure terminal\n\nR1(config)# interface FastEthernet 0/1\nR1(config-if)# ip address 10.1.1.1 255.255.255.0\nR1(config-if)# no shutdown\nR1(config-if)# exit\nR1(config)#\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R2R2# configure terminal\nR2(config)# interface FastEthernet 0/0\nR2(config-if)# ip address 10.1.1.2 255.255.255.0\nR2(config-if)# no shutdown\nR2(config-if)# exit\nR2(config)#\n")),(0,a.yg)("ol",{start:26},(0,a.yg)("li",{parentName:"ol"},"Configure OSPF on R1 and R2 and advertise a default route:")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1R1(config)# router ospf 1\nR1(config-router)# network 10.0.0.0 0.255.255.255 area 0\nR1(config-router)# default-information originate\nR1(config-router)# end\nR1#\n\nR2R2(config)# router ospf 1\nR2(config-router)# network 10.0.0.0 0.255.255.255 area 0\nR2(config-router)# end\nR2#\n\nResult OSPF neighbor relationships are established:\n\nR1*Mar 1 00:19:24.431: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.2 on FastEthernet0/1 from LOADING to FULL, Loading Done\nR1#\n\nR2*Mar 1 00:19:24.467: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.123 on FastEthernet0/0 from LOADING to FULL, Loading Done\nR2#\n")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"If the OSPF relationships are not formed, check your configuration. Make sure you have configured IP addresses correctly, enabled the interfaces and cabled the GNS3 network correctly.")),(0,a.yg)("ol",{start:27},(0,a.yg)("li",{parentName:"ol"},"Configure DNS settings on R2:")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R2# configure terminal\n\nR2(config)# ip domain-lookup\nR2(config)# ip name-server 8.8.8.8\nR2(config)# end\nR2#\n")),(0,a.yg)("ol",{start:28},(0,a.yg)("li",{parentName:"ol"},"R2 will not be able to ping Internet devices until you configure NAT on R1 (or enable routing between R1 and your Internet gateway). In this example, the Internet gateway does not support routing, so NAT will be configured on R1:\nR1# configure terminal")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"R1# configure terminal\nR1(config)# interface FastEthernet 0/0\nR1(config-if)# ip nat outside\nR1(config-if)# interface FastEthernet 0/1\nR1(config-if)# ip nat inside\nR1(config)# ip nat inside source list 1 interface FastEthernet 0/0 overload\nR1(config)# access-list 1 permit 10.0.0.0 0.255.255.255\nR1(config)# end\nR1# write memory\n")),(0,a.yg)("ol",{start:29},(0,a.yg)("li",{parentName:"ol"},"Test R2 connectivity to the Internet:")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},'R2# ping google.com\n\nTranslating "google.com"...domain server (8.8.8.8) [OK]\n\nType escape sequence to abort.\nSending 5, 100-byte ICMP Echos to 74.125.140.138, timeout is 2 seconds:\n.!!!!\nSuccess rate is 80 percent (4/5), round-trip min/avg/max = 36/40/44 ms\nR2# write memory\n')),(0,a.yg)("p",null,"Result R2 is able to ping devices on the Internet."),(0,a.yg)("ol",{start:30},(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"Congratulations!")," You have configure Internet connectivity from GNS3.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/ecc29b0a.95b99b3f.js b/build/assets/js/ecc29b0a.95b99b3f.js new file mode 100644 index 00000000..5a7aeaa6 --- /dev/null +++ b/build/assets/js/ecc29b0a.95b99b3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[4860],{5680:(e,t,o)=>{o.d(t,{xA:()=>c,yg:()=>g});var n=o(6540);function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var t=1;t=0||(i[o]=e[o]);return i}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}var l=n.createContext({}),u=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):r(r({},t),e)),o},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,i=e.mdxType,s=e.originalType,l=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),p=u(o),h=i,g=p["".concat(l,".").concat(h)]||p[h]||d[h]||s;return o?n.createElement(g,r(r({ref:t},c),{},{components:o})):n.createElement(g,r({ref:t},c))}));function g(e,t){var o=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var s=o.length,r=new Array(s);r[0]=h;var a={};for(var l in t)hasOwnProperty.call(t,l)&&(a[l]=t[l]);a.originalType=e,a[p]="string"==typeof e?e:i,r[1]=a;for(var u=2;u{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>g,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=o(8168),i=o(8587),s=(o(6540),o(5680)),r=o(6025),a=["components"],l={id:"gns3-security",title:"GNS3 Security",sidebar_label:"GNS3 Security"},u=void 0,c={unversionedId:"using-gns3/administration/gns3-security",id:"using-gns3/administration/gns3-security",title:"GNS3 Security",description:"Users of GNS3 need to bear in mind that it is a tool designed to be used for experimentation/learning, not for managing Virtual Machines or appliances in a production environment.",source:"@site/docs/using-gns3/administration/gns3-security.md",sourceDirName:"using-gns3/administration",slug:"/using-gns3/administration/gns3-security",permalink:"/docs/using-gns3/administration/gns3-security",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/gns3-security.md",tags:[],version:"current",frontMatter:{id:"gns3-security",title:"GNS3 Security",sidebar_label:"GNS3 Security"},sidebar:"someSidebar",previous:{title:"Running the GNS3 server as a daemon",permalink:"/docs/using-gns3/administration/running-gns3-server-as-daemon"},next:{title:"Client server SSL encryption",permalink:"/docs/using-gns3/administration/client-server-ssl-encryption"}},p={},d=[{value:"Report Security Issues",id:"report-security-issues",level:2},{value:"Downloads of GNS3",id:"downloads-of-gns3",level:2},{value:"Access to the source code",id:"access-to-the-source-code",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Threat in GNS3 itself",id:"threat-in-gns3-itself",level:2},{value:"Injection of packets into the virtual networks",id:"injection-of-packets-into-the-virtual-networks",level:3},{value:"Details by Technologies",id:"details-by-technologies",level:2},{value:"Ubridge",id:"ubridge",level:3},{value:"VirtualBox",id:"virtualbox",level:3},{value:"VMware",id:"vmware",level:3},{value:"IOU",id:"iou",level:3},{value:"Dynamips",id:"dynamips",level:3},{value:"Qemu/KVM",id:"qemukvm",level:3},{value:"VPCS",id:"vpcs",level:3},{value:"Docker",id:"docker",level:3},{value:"Winpcap/Npcap",id:"winpcapnpcap",level:3},{value:"Wireshark",id:"wireshark",level:3},{value:"The GNS3 VM",id:"the-gns3-vm",level:2},{value:"Running GNS3 as root",id:"running-gns3-as-root",level:2},{value:"Remote Server",id:"remote-server",level:2},{value:"Remote Server on Remote Sites",id:"remote-server-on-remote-sites",level:2},{value:"Multiple Users Environment",id:"multiple-users-environment",level:3},{value:"Why do GNS3 and anti-virus / firewall suites not work together sometimes?",id:"why-do-gns3-and-anti-virus--firewall-suites-not-work-together-sometimes",level:2},{value:"Possible Improvements",id:"possible-improvements",level:2},{value:"Rate limit authentications",id:"rate-limit-authentications",level:3},{value:"Turn off unused features",id:"turn-off-unused-features",level:3},{value:"Running the server in a container",id:"running-the-server-in-a-container",level:3},{value:"Quotas for users",id:"quotas-for-users",level:3},{value:"True multiple users support",id:"true-multiple-users-support",level:3},{value:"Limit possible binaries for Qemu",id:"limit-possible-binaries-for-qemu",level:3},{value:"Expose console via the API instead of telnet",id:"expose-console-via-the-api-instead-of-telnet",level:3},{value:"Bind virtual networks to a specific IP",id:"bind-virtual-networks-to-a-specific-ip",level:3},{value:"Known Issues",id:"known-issues",level:2},{value:"GNS3 1.5.3 Local privilege escalation attack on OSX",id:"gns3-153--local-privilege-escalation-attack-on-osx",level:3},{value:"Conclusion",id:"conclusion",level:2}],h={toc:d};function g(e){var t=e.components,o=(0,i.A)(e,a);return(0,s.yg)("wrapper",(0,n.A)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("p",null,"Users of GNS3 need to bear in mind that it is a tool designed to be used for experimentation/learning, not for managing Virtual Machines or appliances in a production environment."),(0,s.yg)("p",null,"The demographic of GNS3 users is very broad, ranging from networking students, through to systems administrators in large corporations."),(0,s.yg)("p",null,"GNS3 is designed for allowing full control via the GUI. We have prioritised making GNS3 as user friendly as possible, as opposed to hardening the application against every possible security threat. Although our focus is not currently on application security, we do encourage contributions of this nature to the project, and understand this is an extremely important part of our the application\u2019s development."),(0,s.yg)("p",null,"This document aims to cover the possible attack vectors and security considerations every good administrator should consider before installing/using GNS3."),(0,s.yg)("p",null,"The choice of making GNS3 useable without the need of a VM and multi platform offers a powerful solution to users even with low resources computers but increases the attack surface."),(0,s.yg)("p",null,"The best is to consider that if someone has access to a running GNS3 server, he has access to the account where the server is running. We try to limit that, but due to the nature of the experimentation running in GNS3 the gns3 server has powerful control on the account."),(0,s.yg)("h2",{id:"report-security-issues"},"Report Security Issues"),(0,s.yg)("p",null,"If you find a security issue please report it to ",(0,s.yg)("a",{parentName:"p",href:"mailto:developers@gns3.net"},"developers@gns3.net")),(0,s.yg)("p",null,"If you want to use PGP, you can also mail:"),(0,s.yg)("p",null,(0,s.yg)("a",{parentName:"p",href:"mailto:julien@gns3.net"},"julien@gns3.net")," with the PGP key available here: ",(0,s.yg)("a",{parentName:"p",href:"https://keybase.io/jduponchelle"},"https://keybase.io/jduponchelle")),(0,s.yg)("p",null,"Please give us some time to solve the issue before public publications. The project is partially run by volunteers in their free time, especially the publication of the packages on various distributions."),(0,s.yg)("h2",{id:"downloads-of-gns3"},"Downloads of GNS3"),(0,s.yg)("p",null,"GNS3 is free on our website. Download it from the official website ",(0,s.yg)("a",{parentName:"p",href:"http://www.gns3.com"},"http://www.gns3.com")," or from our github ",(0,s.yg)("a",{parentName:"p",href:"http://github.com/GNS3/gns3-gui"},"http://github.com/GNS3/gns3-gui"),". Also SolarWinds provide an official mirror:"),(0,s.yg)("p",null,(0,s.yg)("a",{parentName:"p",href:"http://www.solarwinds.com/free-tools/gns3-network-emulator"},"http://www.solarwinds.com/free-tools/gns3-network-emulator")),(0,s.yg)("p",null,"We also provide nightly build: ",(0,s.yg)("a",{parentName:"p",href:"https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/"},"https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/")," but we recommend using stable releases."),(0,s.yg)("p",null,"For linux see: ",(0,s.yg)("a",{parentName:"p",href:"../../getting-started/installation/linux"},"Installation on Linux")),(0,s.yg)("p",null,"Please do not use any third party download sites as they might inject malicious code into the installer. Windows versions are signed with a GNS3 certificate."),(0,s.yg)("img",{alt:"screenshot",src:(0,r.A)("img/using-gns3/administration/gns3-security/1.jpg")}),(0,s.yg)("admonition",{type:"note"},(0,s.yg)("p",{parentName:"admonition"},"It\u2019s not possible to screen capture UAC prompts in Win7/Win 10 anymore, so an older example has been left in place for illustration purposes)")),(0,s.yg)("h2",{id:"access-to-the-source-code"},"Access to the source code"),(0,s.yg)("p",null,"GNS3 is open source and you can access the source code and audit it. The whole development process is transparent, and you can follow it live on our repositories."),(0,s.yg)("h2",{id:"how-it-works"},"How it works"),(0,s.yg)("p",null,"GNS3 is split into two parts: The GUI and a server. The server is controlled via HTTP by the GUI. The server is responsible for starting the emulators. The server - by default when started by the GUI - is protected by an HTTP basic auth using a random password."),(0,s.yg)("h2",{id:"threat-in-gns3-itself"},"Threat in GNS3 itself"),(0,s.yg)("p",null,"When the GNS3 server is run on a local computer, it has access to the entire filesystem. This allows users to use images located in different locations of the file system."),(0,s.yg)("p",null,"To summarize; if the GNS3 server process is compromised, it will have access to the entire filesystem."),(0,s.yg)("p",null,"Depending on your computer configuration, or the topologies where you are running any appliances, it is possible to access to your physical network. It is not possible to prevent this, as GNS3 requires network access for certain use cases."),(0,s.yg)("p",null,"Also when an emulator starts, often it will expose its console to the network via the same IP as the GNS3 server. With physical equipment, this is the equivalent to having physical access to the console port of a device."),(0,s.yg)("h3",{id:"injection-of-packets-into-the-virtual-networks"},"Injection of packets into the virtual networks"),(0,s.yg)("p",null,"Due to limitation of some emulators, the virtual network listens on all IPs. This means you can inject packet inside and exploit a security hole in a running image."),(0,s.yg)("h2",{id:"details-by-technologies"},"Details by Technologies"),(0,s.yg)("p",null,"GNS3 is a wrapper on proprietary and open source technologies. This means the security level depends on the security of those technologies."),(0,s.yg)("p",null,"The main danger is a rogue image trying to take control of your computer by a process escalation."),(0,s.yg)("admonition",{type:"caution"},(0,s.yg)("p",{parentName:"admonition"},"Use images only from trusted sources!")),(0,s.yg)("h3",{id:"ubridge"},"Ubridge"),(0,s.yg)("p",null,"Ubridge is the component of GNS3 running as root, in order to allow injection of packets in the computer network interface. Because it\u2019s running as root, it\u2019s the main risk of privilege escalation. In Linux and Windows we have limited permission to access to the network, but ubridge has full access in OSX. The code is short, open source, and easy to audit. If you want to help on security, this is a good starting point."),(0,s.yg)("h3",{id:"virtualbox"},"VirtualBox"),(0,s.yg)("p",null,"We control VirtualBox with their official command line tool. The dangers are limited to security hole in VirtualBox itself. Due to the fact that Oracle has full time developers on this product, we can consider this technology safe if you use the latest stable release."),(0,s.yg)("h3",{id:"vmware"},"VMware"),(0,s.yg)("p",null,"We control VMware with their official command line tool (VIX) and a program for us to create network bridges: ubridge. The dangers are limited to security holes in VMware itself or ubridge. Due to the fact VMware as full time developers on this product, we can consider this technology safe if you use the latest stable release."),(0,s.yg)("h3",{id:"iou"},"IOU"),(0,s.yg)("p",null,"IOU from CISCO is just a Linux binary. This mean any binary could potentially be run as an IOU image. Don't use IOU images from unknown sources."),(0,s.yg)("h3",{id:"dynamips"},"Dynamips"),(0,s.yg)("p",null,"We control Dynamips via the Dynamips hypervisor. Dynamips emulates portions of the hardware used in certain CISCO routers. The probability of a way to make a fake IOS and taking control of the running process is high. But, it will be complex to use in the wild, because involves means modifying a real IOS image for this use."),(0,s.yg)("p",null,"It\u2019s perhaps also possible to crash the generic switch/hub with special crafted packets."),(0,s.yg)("h3",{id:"qemukvm"},"Qemu/KVM"),(0,s.yg)("p",null,"We control Qemu with their official command line tool. The dangers are limited to security holes in Qemu itself. Due to the fact Qemu has a large and active community, as well as corporations using it in production, we can consider this technology safe as long as you use the latest stable release, and follow Qemu recommendations."),(0,s.yg)("p",null,"For x86, running Qemu without KVM could lead to security problems as that part is not audited."),(0,s.yg)("p",null,(0,s.yg)("a",{parentName:"p",href:"http://wiki.qemu-project.org/SecurityProcess"},"http://wiki.qemu-project.org/SecurityProcess")),(0,s.yg)("p",null,"KVM uses a kernel extension, so make sure the kernel is up to date."),(0,s.yg)("h3",{id:"vpcs"},"VPCS"),(0,s.yg)("p",null,"We control VPCS by the VPCS command line tool. We have discovered issues in some releases with the inputs, the probability of a possible process escalation is considered high until someone conducts a full audit of the source code."),(0,s.yg)("h3",{id:"docker"},"Docker"),(0,s.yg)("p",null,"We control docker via the Docker API. Due to the fact Docker has a large and active community, and well as corporations using it in production, we can consider this technology safe as long as you use the latest stable release."),(0,s.yg)("p",null,"Docker uses a kernel extension, so make sure the kernel is up to date."),(0,s.yg)("h3",{id:"winpcapnpcap"},"Winpcap/Npcap"),(0,s.yg)("p",null,"For injecting packets into your physical network, we use the winpcap or npcap libraries in Windows. Use the latest stable version to avoid trouble."),(0,s.yg)("h3",{id:"wireshark"},"Wireshark"),(0,s.yg)("p",null,"To analyze captured packets, we provide Wireshark. Use the latest version to avoid trouble.\n",(0,s.yg)("a",{parentName:"p",href:"https://www.wireshark.org/security/"},"https://www.wireshark.org/security/")),(0,s.yg)("h2",{id:"the-gns3-vm"},"The GNS3 VM"),(0,s.yg)("p",null,"The GNS3 VM allows you to run emulators in an isolated and standard environment. You can improve the VM security by changing its password, and adding authentication to the GNS3 server ( this required that you configure the GNS3 VM as remote server)."),(0,s.yg)("p",null,"With the GNS3 VM you have the same security level offered by Unetlab or Cisco VIRL."),(0,s.yg)("h2",{id:"running-gns3-as-root"},"Running GNS3 as root"),(0,s.yg)("p",null,"It's common to see users running GNS3 as root or Windows Administrator. We recommend that this be avoided, unless you absolutely need it. Even if you want to ignore this security problems, this could also lead to bugs (VirtualBox and VMware don't like that)."),(0,s.yg)("p",null,"Starting from version 1.4 the ability to run VirtualBox has a different user has been removed because this option created too many corner cases for security, and was too hard to be correctly used by users."),(0,s.yg)("p",null,"We do our best to work around OS limitations, to avoid the need to run GNS3 as root/administrator"),(0,s.yg)("h2",{id:"remote-server"},"Remote Server"),(0,s.yg)("p",null,"GNS3 could be run on a remote computer. Don't do that on an untrusted network. In the current state of GNS3 the security level for this is low because you can brute force the server (see the improvement sections) or just get access to the emulator consoles."),(0,s.yg)("p",null,"When the server starts, by default the user can only access the images and project directory. If you want a full access to the filesystem like what we do when used on your local computer, you need to start the server with the --local flag."),(0,s.yg)("h2",{id:"remote-server-on-remote-sites"},"Remote Server on Remote Sites"),(0,s.yg)("p",null,"We recommend the use of a VPN tunnel to protect your communication. You can use SSL or SSH to protect GNS3 communication but the emulator console will be available to the world. A VPN will offer you security for GNS3 and the emulators."),(0,s.yg)("h3",{id:"multiple-users-environment"},"Multiple Users Environment"),(0,s.yg)("p",null,"At the beginning, GNS3 was a tool for learning Cisco on your own computer. GNS3 evolved and now the server can be shared between multiple users, but with the following limitations:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"You have no quota for resources, anyone can take all computer resources"),(0,s.yg)("li",{parentName:"ul"},"No isolation on filesystem; if you know the project uuid of someone\u2019s project, you can access it"),(0,s.yg)("li",{parentName:"ul"},"You can access other\u2019s consoles if you scan the port range")),(0,s.yg)("p",null,"You have the same security problems that you can experience when you share a physical lab between students. A bad user could cut a cable and connect it to someone else\u2019s console..."),(0,s.yg)("h2",{id:"why-do-gns3-and-anti-virus--firewall-suites-not-work-together-sometimes"},"Why do GNS3 and anti-virus / firewall suites not work together sometimes?"),(0,s.yg)("p",null,"Antivirus are designed with a standard user in mind. GNS3 build virtual network and capture stuff on this network. This behavior exists only in a small amount of software (GNS3, VirtualBox, VMware, Hyper-V) and the fact GNS3 make virtual network between different technologies is unique."),(0,s.yg)("p",null,"Also GNS3 is a kind of a hypervisor managing multiple processes. The communication with these process is made via TCP sockets. Sometimes \u201csmart\u201d firewalls see that as an attack."),(0,s.yg)("p",null,"GNS3 is open source; you can audit our code and even rebuild your own binaries."),(0,s.yg)("h2",{id:"possible-improvements"},"Possible Improvements"),(0,s.yg)("p",null,"If you want to improve the security, here are some issues where we need help."),(0,s.yg)("h3",{id:"rate-limit-authentications"},"Rate limit authentications"),(0,s.yg)("p",null,"In order to avoid an attack from a different user of the computer, we can protect the server with a rate limiter. It's usable for external connections and not required for a local server because ( by default) we only listen on the loopback interface."),(0,s.yg)("h3",{id:"turn-off-unused-features"},"Turn off unused features"),(0,s.yg)("p",null,"One improvement is to reduce the attack surface by turning off unused modules like IOU."),(0,s.yg)("h3",{id:"running-the-server-in-a-container"},"Running the server in a container"),(0,s.yg)("p",null,"Though we haven\u2019t tested it yet, running a GNS3 server in a dedicated container can potentially protect the user."),(0,s.yg)("h3",{id:"quotas-for-users"},"Quotas for users"),(0,s.yg)("p",null,"To avoid a user consuming all the resources in a shared environment."),(0,s.yg)("h3",{id:"true-multiple-users-support"},"True multiple users support"),(0,s.yg)("p",null,"Create a notion of users in GNS3 and set users as owner of a project and prevent other users from gaining unauthorized access to it."),(0,s.yg)("h3",{id:"limit-possible-binaries-for-qemu"},"Limit possible binaries for Qemu"),(0,s.yg)("p",null,"A way for admin to limit the list of qemu accessible binaries in order to prevent people from trying to use unexpected programs."),(0,s.yg)("h3",{id:"expose-console-via-the-api-instead-of-telnet"},"Expose console via the API instead of telnet"),(0,s.yg)("p",null,"By default, most emulators support only telnet for remote access. An improvement could be to expose console via the API (like in the docker remote API). This would allow use of GNS3 authentication to protect the console access."),(0,s.yg)("h3",{id:"bind-virtual-networks-to-a-specific-ip"},"Bind virtual networks to a specific IP"),(0,s.yg)("p",null,"Restrict how emulator listen for packets."),(0,s.yg)("h2",{id:"known-issues"},"Known Issues"),(0,s.yg)("h3",{id:"gns3-153--local-privilege-escalation-attack-on-osx"},"GNS3 1.5.3 Local privilege escalation attack on OSX"),(0,s.yg)("p",null,(0,s.yg)("a",{parentName:"p",href:"https://gns3.com/discussions/gns3-local-privilege-escalation-"},"https://gns3.com/discussions/gns3-local-privilege-escalation-")),(0,s.yg)("p",null,"Reported by Hacker House:\n",(0,s.yg)("a",{parentName:"p",href:"https://www.myhackerhouse.com/gns-3-ubridge-local-privilege-escalation-attack-0day/"},"https://www.myhackerhouse.com/gns-3-ubridge-local-privilege-escalation-attack-0day/")),(0,s.yg)("p",null,"Fixed in 1.5.4 and 2.0.0 releases"),(0,s.yg)("h2",{id:"conclusion"},"Conclusion"),(0,s.yg)("p",null,"The first point to check is the images. When you download an image from an unknown website, you take on additional risks, though it's the same risk you take when you download any program for your computer."),(0,s.yg)("p",null,"By running emulators in a VM, like the GNS3 VM on a single user computer, you can avoid most of the issues."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/f09f0737.52e14fdf.js b/build/assets/js/f09f0737.52e14fdf.js new file mode 100644 index 00000000..34e2a1cd --- /dev/null +++ b/build/assets/js/f09f0737.52e14fdf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[7549],{5680:(e,n,t)=>{t.d(n,{xA:()=>p,yg:()=>d});var o=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=o.createContext({}),c=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=c(e.components);return o.createElement(l.Provider,{value:n},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},m=o.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(t),m=i,d=u["".concat(l,".").concat(m)]||u[m]||g[m]||r;return t?o.createElement(d,a(a({ref:n},p),{},{components:t})):o.createElement(d,a({ref:n},p))}));function d(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,a=new Array(r);a[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[u]="string"==typeof e?e:i,a[1]=s;for(var c=2;c{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>d,frontMatter:()=>l,metadata:()=>p,toc:()=>g});var o=t(8168),i=t(8587),r=(t(6540),t(5680)),a=t(6025),s=["components"],l={id:"non-native-iou-for-windows-and-osx",title:"Non-Native IOU for Windows and OSX",sidebar_label:"Non-Native IOU for Windows and OSX"},c=void 0,p={unversionedId:"emulators/non-native-iou-for-windows-and-osx",id:"emulators/non-native-iou-for-windows-and-osx",title:"Non-Native IOU for Windows and OSX",description:"IOU is IOS on Unix (Solaris, if you want to be specific). It's a version of IOS compiled to run on workstations. It's faster and lighter than emulation. Cisco transitioned to IOL images, which are x86-64 compatible versions of IOS that natively run in Linux. Since everyone and their kid brother still refers to IOL images as \u201cIOU\u201d, that convention is used for the remainder of this document.",source:"@site/docs/emulators/non-native-iou-for-windows-and-osx.md",sourceDirName:"emulators",slug:"/emulators/non-native-iou-for-windows-and-osx",permalink:"/docs/emulators/non-native-iou-for-windows-and-osx",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/non-native-iou-for-windows-and-osx.md",tags:[],version:"current",frontMatter:{id:"non-native-iou-for-windows-and-osx",title:"Non-Native IOU for Windows and OSX",sidebar_label:"Non-Native IOU for Windows and OSX"},sidebar:"someSidebar",previous:{title:"Cisco IOS images for Dynamips",permalink:"/docs/emulators/cisco-ios-images-for-dynamips"},next:{title:"Adding VMware VMs to GNS3 Topologies",permalink:"/docs/emulators/adding-vmware-vms-to-gns3-topologies"}},u={},g=[{value:"GNS3 VM",id:"gns3-vm",level:2},{value:"License",id:"license",level:3},{value:"Add the images:",id:"add-the-images",level:3}],m={toc:g};function d(e){var n=e.components,t=(0,i.A)(e,s);return(0,r.yg)("wrapper",(0,o.A)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"IOU is IOS on Unix (Solaris, if you want to be specific). It's a version of IOS compiled to run on workstations. It's faster and lighter than emulation. Cisco transitioned to IOL images, which are x86-64 compatible versions of IOS that natively run in Linux. Since everyone and their kid brother still refers to IOL images as \u201cIOU\u201d, that convention is used for the remainder of this document."),(0,r.yg)("p",null,"Please note that GNS3 can not provide you images or licences."),(0,r.yg)("h2",{id:"gns3-vm"},"GNS3 VM"),(0,r.yg)("p",null,"Since IOU images can be run in Linux, you will need to use a Linux VM to use it when running GNS3. For Windows/Mac OSX users, the GNS3 VM is available. Use of the GNS3 VM is optional for users running GNS3 natively in Linux."),(0,r.yg)("p",null,"First, you need to configure the GNS3 VM. so read the documentation ",(0,r.yg)("a",{parentName:"p",href:"../getting-started/installation/download-gns3-vm"},"here"),"."),(0,r.yg)("h3",{id:"license"},"License"),(0,r.yg)("p",null,"You will need a license for your GNS3 VM to run IOU. This licence is provided by Cisco. We called this license file iourc"),(0,r.yg)("p",null,"The content of the licence file will be like this:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"[license]\ngns3vm = 42aa42bb42cc84ff;\n")),(0,r.yg)("admonition",{type:"caution"},(0,r.yg)("p",{parentName:"admonition"},"This is not a real licence! You must provide your licence. Only Cisco can provide you an IOU license, so don\u2019t bother asking for it (or the images) on the GNS3 user forum!")),(0,r.yg)("p",null,"Save this file somewhere on your disk.",(0,r.yg)("br",{parentName:"p"}),"\n","In the GNS3 GUI, click ",(0,r.yg)("strong",{parentName:"p"},"Edit -> Preferences -> IOS on UNIX"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/1.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Browse")," to select your IOU license file, then click ",(0,r.yg)("strong",{parentName:"p"},"OK")," to proceed:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/2.jpg")}),(0,r.yg)("h3",{id:"add-the-images"},"Add the images:"),(0,r.yg)("p",null,"In the GNS3 Preferences menu, select IOU Devices, then click New:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/3.jpg")}),(0,r.yg)("p",null,"As this article uses the GNS3 VM in Windows 10, that\u2019s the only available option in the ",(0,r.yg)("strong",{parentName:"p"},"Server type")," window, so click ",(0,r.yg)("strong",{parentName:"p"},"Next>")," to proceed:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/4.jpg")}),(0,r.yg)("p",null,"(Linux users can run IOU images via the local server. If a remote server has been set up, then that optional will become available)"),(0,r.yg)("p",null,"Next, you will be prompted to:"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"Give the device a name"),(0,r.yg)("li",{parentName:"ol"},"Select an image type. (L2 image and L3 image are selectable in the dropdown menu)"),(0,r.yg)("li",{parentName:"ol"},"Browse your filesystem to select the IOU image you want to import.")),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/5.jpg")}),(0,r.yg)("p",null,"In the below example, an ",(0,r.yg)("strong",{parentName:"p"},"L2 IOU image")," was used, the ",(0,r.yg)("strong",{parentName:"p"},"type"),": was left set to ",(0,r.yg)("strong",{parentName:"p"},"\u201cL2 image\u201d"),", and it was given the name ",(0,r.yg)("strong",{parentName:"p"},"\u201cL2\u201d"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/6.jpg")}),(0,r.yg)("p",null,"Click ",(0,r.yg)("strong",{parentName:"p"},"Finish")," to complete the import process:"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/7.jpg")}),(0,r.yg)("p",null,"Your device is now listed among the ",(0,r.yg)("strong",{parentName:"p"},"IOU device templates"),":"),(0,r.yg)("img",{alt:"screenshot",src:(0,a.A)("img/emulators/non-native-iou-for-windows-and-osx/8.jpg")}),(0,r.yg)("p",null,"Your IOU device will be selectable in the ",(0,r.yg)("strong",{parentName:"p"},"Switches")," or ",(0,r.yg)("strong",{parentName:"p"},"Routers")," device lists, depending on whether an L2 or L3 IOU image was used."),(0,r.yg)("p",null,"(both types appear in the ",(0,r.yg)("strong",{parentName:"p"},"All Devices")," list)"),(0,r.yg)("p",null,"There are also IOU appliance templates available in the ",(0,r.yg)("a",{parentName:"p",href:"https://www.gns3.com/marketplace/appliances"},"Appliances")," section of the GNS3 Marketplace to atuomate this process. Downloading .gns3a appliance templates, and using the Import Appliance wizard to import appliances, are covered in these articles:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("a",{parentName:"li",href:"../using-gns3/beginners/install-from-marketplace"},"Install an appliance from the GNS3 Marketplace")),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("a",{parentName:"li",href:"../using-gns3/beginners/import-gns3-appliance"},"Import GNS3 appliance"))),(0,r.yg)("p",null,"You will still need to provide your own IOU license file, and images, regardless of the import method used."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/f1f73209.5cfbe529.js b/build/assets/js/f1f73209.5cfbe529.js new file mode 100644 index 00000000..7366e2d9 --- /dev/null +++ b/build/assets/js/f1f73209.5cfbe529.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[687],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>h});var r=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(n),d=o,h=u["".concat(s,".").concat(d)]||u[d]||g[d]||a;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>p,toc:()=>g});var r=n(8168),o=n(8587),a=(n(6540),n(5680)),i=n(6025),c=["components"],s={id:"create-a-docker-container-for-gns3",title:"Create a docker container for GNS3",sidebar_label:"Create a docker container for GNS3"},l=void 0,p={unversionedId:"emulators/create-a-docker-container-for-gns3",id:"emulators/create-a-docker-container-for-gns3",title:"Create a docker container for GNS3",description:"This tutorial is for users who never used Docker, and would like to create a Docker container for GNS3.",source:"@site/docs/emulators/create-a-docker-container-for-gns3.md",sourceDirName:"emulators",slug:"/emulators/create-a-docker-container-for-gns3",permalink:"/docs/emulators/create-a-docker-container-for-gns3",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/emulators/create-a-docker-container-for-gns3.md",tags:[],version:"current",frontMatter:{id:"create-a-docker-container-for-gns3",title:"Create a docker container for GNS3",sidebar_label:"Create a docker container for GNS3"},sidebar:"someSidebar",previous:{title:"Docker support in GNS3",permalink:"/docs/emulators/docker-support-in-gns3"},next:{title:"VPCS",permalink:"/docs/emulators/vpcs"}},u={},g=[],d={toc:g};function h(e){var t=e.components,n=(0,o.A)(e,c);return(0,a.yg)("wrapper",(0,r.A)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"This tutorial is for users who never used Docker, and would like to create a Docker container for GNS3."),(0,a.yg)("p",null,"First, you need to connect to the GNS3 VM and open a shell. Press the Enter key while ",(0,a.yg)("strong",{parentName:"p"},"< OK >")," is highlighted:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/1.jpg")}),(0,a.yg)("p",null,"On the next screen, press the Down arrow key until Shell is highlighted, and press the Enter key again. This will take you into Bash, which is the default shell used in Ubuntu:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/2.jpg")}),(0,a.yg)("p",null,"The Docker containers are created using a file called Dockerfile."),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/builder/"},"https://docs.docker.com/engine/reference/builder/")),(0,a.yg)("p",null,"Type this command to create the Dockerfile, using the nano text editor:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"nano Dockerfile\n")),(0,a.yg)("p",null,"While in nano, add the following two lines:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"FROM ubuntu:16.04\nRUN apt-get update && apt-get install -y nmap\n")),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/3.jpg")}),(0,a.yg)("p",null,"To save the file, press Ctrl+O, and then Ctrl+X to exit nano.\nAfter, that run:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"docker build -t joe/nmap .\n")),(0,a.yg)("p",null,"This will build a container named joe/nmap (where \u201cjoe\u201d is your username) based on ubuntu 16.04, and with nmap installed. You can find all the base containers here: ",(0,a.yg)("a",{parentName:"p",href:"https://hub.docker.com/r/gns3/"},"https://hub.docker.com/r/gns3/")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Docker will cache each step of the build process.")),(0,a.yg)("p",null,"If the build was successful, you should see a message indicating that at the end of the output."),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/4.jpg")}),(0,a.yg)("p",null,"(the build time will vary, based on what you\u2019re adding to the container, plus your PC)"),(0,a.yg)("p",null,"Now we can use our container in GNS3. Click ",(0,a.yg)("strong",{parentName:"p"},"Edit->Preferences->Docker Containers->New"),", like before, but instead of specifying a ",(0,a.yg)("strong",{parentName:"p"},"\u201cNew Image\u201d"),", you\u2019ll select ",(0,a.yg)("strong",{parentName:"p"},"\u201cExisting image\u201d"),", and then pick the one you just created from the dropdown list, and click ",(0,a.yg)("strong",{parentName:"p"},"Next>")," to continue:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/5.jpg")}),(0,a.yg)("p",null,"Give the container a name, and click ",(0,a.yg)("strong",{parentName:"p"},"Next>"),":"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/6.jpg")}),(0,a.yg)("p",null,"Specify the number of adapters you want this container to use. As this example is just acting like a simple linux host, we can stick with default of 1 interface, so click ",(0,a.yg)("strong",{parentName:"p"},"Next>")," to continue:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/7.jpg")}),(0,a.yg)("p",null,"We aren\u2019t going to specify a start command this time, so click Next> to continue:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/8.jpg")}),(0,a.yg)("p",null,"We\u2019ll leave the console type set to telnet (we don\u2019t need to use VNC/HTTP/HTTPS for this example), so click ",(0,a.yg)("strong",{parentName:"p"},"Next>")," to continue:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/9.jpg")}),(0,a.yg)("p",null,"We won\u2019t be specifying any environmental variables this time, as the defaults are fine for this example, so click ",(0,a.yg)("strong",{parentName:"p"},"Finish")," to complete this configuration process. Back at the main Preferences screen, click ",(0,a.yg)("strong",{parentName:"p"},"OK")," to exit it."),(0,a.yg)("p",null," This \u201cnmap\u201d container will be listed in the ",(0,a.yg)("strong",{parentName:"p"},"End Devices")," toolbar. Since it already exists in the GNS3 VM, there\u2019s no need for the \u201cdocker pull\u201d step that would occur, if we were going to use a container from Docker Hub."),(0,a.yg)("p",null,"Prior to the following screenshot, the nmap container was assigned a static IP address, and connected to a router that had been preconfigured to allow SSH access to it."),(0,a.yg)("p",null,"A quick test was run using the ",(0,a.yg)("inlineCode",{parentName:"p"},"nmap --script ssh2-enum-algos target_ip")," command. NMAP checks the target device, to see which SSH key exchange algorithms it supports. There are plenty of other uses for NMAP, but this was just a simple test, to prove that it was functional:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/10.jpg")}),(0,a.yg)("p",null,"You can replace the shell with a command of your choice using the CMD directive, which causes the container to start with that command/utility running immediately on boot. "),(0,a.yg)("p",null,"Back in the GNS3 VM CLI, open Dockerfile again to edit it (it\u2019s \u201cnano Dockerfile\u201d, just like before):"),(0,a.yg)("p",null,"Change the Dockerfile to this:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"FROM ubuntu:16.04\nRUN apt-get update && apt-get install -y nmap\nRUN apt-get install -y htop\nCMD htop\n")),(0,a.yg)("p",null,"(the two additional lines have been set to bold). Next, rebuild the container again:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"docker build -t joe/nmap .\n")),(0,a.yg)("p",null,"You will need to remove the container from your topology and add it again, in order to see the change:"),(0,a.yg)("img",{alt:"screenshot",src:(0,i.A)("img/emulators/create-a-docker-container-for-gns3/11.jpg")}),(0,a.yg)("p",null,"Instead of seeing a bash prompt, the container automatically launches the HTOP utility."),(0,a.yg)("p",null,"At each reboot, the data changed in your container is lost (it\u2019s not persistent). If you want persistence, you need to use the VOLUME directive in Dockerfile:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},'FROM ubuntu:16.04\nRUN mkdir /test\nRUN echo "hello" > /test/world\nVOLUME /test\nWORKDIR /test\n')),(0,a.yg)("p",null,"After that, you can publish your container to the world, allowing anyone to able to use it, just by typing the container name in the docker image field. It\u2019s free to create an account on ",(0,a.yg)("a",{parentName:"p",href:"https://hub.docker.com/"},"Docker Hub")," for this purpose. "),(0,a.yg)("p",null,"To publish your container to Docker Hub via a \u201cdocker push\u201d, run the following commands in the GNS3 VM CLI:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"docker login\ndocker push joe/hello\n")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"You will need to replace joe with your Docker hub username.")),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"More Samples:"),"\n",(0,a.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-registry/tree/master/docker"},"https://github.com/GNS3/gns3-registry/tree/master/docker")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/f24bf796.ed66ca8d.js b/build/assets/js/f24bf796.ed66ca8d.js new file mode 100644 index 00000000..47aa9776 --- /dev/null +++ b/build/assets/js/f24bf796.ed66ca8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8241],{5680:(e,n,t)=>{t.d(n,{xA:()=>g,yg:()=>m});var r=t(6540);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n=0||(s[t]=e[t]);return s}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}var l=r.createContext({}),u=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},g=function(e){var n=u(e.components);return r.createElement(l.Provider,{value:n},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,s=e.mdxType,o=e.originalType,l=e.parentName,g=a(e,["components","mdxType","originalType","parentName"]),c=u(t),d=s,m=c["".concat(l,".").concat(d)]||c[d]||p[d]||o;return t?r.createElement(m,i(i({ref:n},g),{},{components:t})):r.createElement(m,i({ref:n},g))}));function m(e,n){var t=arguments,s=n&&n.mdxType;if("string"==typeof e||s){var o=t.length,i=new Array(o);i[0]=d;var a={};for(var l in n)hasOwnProperty.call(n,l)&&(a[l]=n[l]);a.originalType=e,a[c]="string"==typeof e?e:s,i[1]=a;for(var u=2;u{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>m,frontMatter:()=>l,metadata:()=>g,toc:()=>p});var r=t(8168),s=t(8587),o=(t(6540),t(5680)),i=t(6025),a=["components"],l={id:"running-gns3-server-as-daemon",title:"Running the GNS3 server as a daemon",sidebar_label:"Running the GNS3 server as a daemon"},u=void 0,g={unversionedId:"using-gns3/administration/running-gns3-server-as-daemon",id:"using-gns3/administration/running-gns3-server-as-daemon",title:"Running the GNS3 server as a daemon",description:"You will find a sample init script for various systems inside the init directory of the gns3-server project//github.com/GNS3/gns3-server/tree/master/init",source:"@site/docs/using-gns3/administration/running-gns3-server-as-daemon.md",sourceDirName:"using-gns3/administration",slug:"/using-gns3/administration/running-gns3-server-as-daemon",permalink:"/docs/using-gns3/administration/running-gns3-server-as-daemon",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/administration/running-gns3-server-as-daemon.md",tags:[],version:"current",frontMatter:{id:"running-gns3-server-as-daemon",title:"Running the GNS3 server as a daemon",sidebar_label:"Running the GNS3 server as a daemon"},sidebar:"someSidebar",previous:{title:"GNS3 server configuration file",permalink:"/docs/using-gns3/administration/gns3-server-configuration-file"},next:{title:"GNS3 Security",permalink:"/docs/using-gns3/administration/gns3-security"}},c={},p=[{value:"Upstart",id:"upstart",level:2},{value:"Systemd",id:"systemd",level:2}],d={toc:p};function m(e){var n=e.components,t=(0,s.A)(e,a);return(0,o.yg)("wrapper",(0,r.A)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"You will find a sample init script for various systems inside the init directory of the gns3-server project: ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-server/tree/master/init"},"https://github.com/GNS3/gns3-server/tree/master/init")),(0,o.yg)("p",null,"Useful parameters to launch the server with are:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"--daemon start process as a daemon"),(0,o.yg)("li",{parentName:"ul"},"--log logfile store output in a logfile"),(0,o.yg)("li",{parentName:"ul"},"--pid pidfile store the pid of the running process in a file and prevent double execution")),(0,o.yg)("p",null,"All the init script require the creation of a GNS3 user. It is possible to change it to another user:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo adduser gns3\n")),(0,o.yg)("p",null,"You will need to install some dependencies first. For example, in Ubuntu 18.04.3, you\u2019ll need to install the following:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"python3-setuptools\npython3-aiohttp\npython3-psutil\npython3-jsonschema\ngit\n")),(0,o.yg)("admonition",{type:"note"},(0,o.yg)("p",{parentName:"admonition"},"This does not install other items, like ubridge, qemu-kvm, docker, wireshark, etc\u2026 This just the necessary dependencies needed to build the gns3-server daemon.")),(0,o.yg)("p",null,"In Bash, you can download the gns3-server code via the following command:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"git clone https://github.com/GNS3/gns3-server.git\n")),(0,o.yg)("p",null,"Next, enter the gns3-server directory that\u2019s been created:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"cd gns3-server\n")),(0,o.yg)("p",null,"If you need a specific branch to match the version used by the clients, you can view a list of branches via this command:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"git tag\n")),(0,o.yg)("p",null,"Here\u2019s an example of the list:"),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/running-gns3-server-as-daemon/1.jpg")}),(0,o.yg)("p",null,"(hit Ctrl+Z to exit the list)\nTo change the branch used, you\u2019ll use this command:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"git checkout tags/branch_version -b branch_version\n")),(0,o.yg)("p",null,"For example, if the clients have GNS3 2.2.1 installed, you\u2019ll use this command to build v2.2.1 of the gns3-server:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"git checkout tags/v2.2.1 -b v2.2.1\n")),(0,o.yg)("p",null,"Next, you\u2019ll use this command to build the gns3-server daemon:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo python3 setup.py install\n")),(0,o.yg)("p",null,"This step may take a few minutes to complete (it will vary, based on your PC), but upon successful completion, you\u2019ll see this:"),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/running-gns3-server-as-daemon2.jpg")}),(0,o.yg)("p",null,"Next. you\u2019ll need to enter the ",(0,o.yg)("inlineCode",{parentName:"p"},"/gns3-server/init")," sub-directory, and copy one of two files. Which one you use, will depend on whether your version of linux uses upstart or systemd to launch daemons:+-"),(0,o.yg)("h2",{id:"upstart"},"Upstart"),(0,o.yg)("p",null,"For ubuntu < 15.04"),(0,o.yg)("p",null,"You must copy gns3.conf.upstart to /etc/init/gns3.conf and run these commands:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo cp gns3.conf.upstart /etc/init/gns3.conf\nsudo chown root /etc/init/gns3.conf\n")),(0,o.yg)("p",null,"To launch the daemon, use this command:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo service gns3 start\n")),(0,o.yg)("h2",{id:"systemd"},"Systemd"),(0,o.yg)("p",null,"You must copy gns3.service.systemd to /lib/systemd/system/gns3.service and run these commands:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo cp gns3.service.systemd /etc/systemd/system/gns3.service\nsudo systemctl daemon-reload\n")),(0,o.yg)("p",null,"Run this command to start the gns3 daemon:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo systemctl start gns3\n")),(0,o.yg)("p",null,"Next, run this command to ensure that the daemon is active and running, or see if there is an issue:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo systemctl status gns3\n")),(0,o.yg)("p",null,"Ideally, you\u2019ll see something like this:"),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/running-gns3-server-as-daemon3.jpg")}),(0,o.yg)("p",null,"(press Ctrl+Z to exit this screen. Doing so will not shut down the daemon.)"),(0,o.yg)("p",null,"NOTE: you may need to allow TCP port 3080 through the firewall, if it isn\u2019t already. In ubuntu, you\u2019d use the following command:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo ufw allow 3080/tcp\n")),(0,o.yg)("p",null,"To set the gns3-server daemon to always launch on boot/reload, use the following command:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"sudo systemctl enable gns3\n")),(0,o.yg)("p",null,"(you\u2019ll see a symlink created)"),(0,o.yg)("p",null,"At any time, you can run ",(0,o.yg)("inlineCode",{parentName:"p"},"sudo systemctl status gns3")," to check on the running daemon, as well as see which nodes it\u2019s running on behalf of the clients . In the below example, it\u2019s active, and running three instances of IOSv in a topology:"),(0,o.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/running-gns3-server-as-daemon4.jpg")}))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/f2fb7d9a.7ec5bb64.js b/build/assets/js/f2fb7d9a.7ec5bb64.js new file mode 100644 index 00000000..05ee1589 --- /dev/null +++ b/build/assets/js/f2fb7d9a.7ec5bb64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[5884],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>g});var r=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(n),m=i,g=c["".concat(s,".").concat(m)]||c[m]||d[m]||a;return n?r.createElement(g,o(o({ref:t},p),{},{components:n})):r.createElement(g,o({ref:t},p))}));function g(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>g,frontMatter:()=>s,metadata:()=>p,toc:()=>d});var r=n(8168),i=n(8587),a=(n(6540),n(5680)),o=n(6025),l=["components"],s={id:"one-server-multiple-clients",title:"One GNS3 server, multiple clients",sidebar_label:"One GNS3 server, multiple clients"},u=void 0,p={unversionedId:"getting-started/installation/one-server-multiple-clients",id:"getting-started/installation/one-server-multiple-clients",title:"One GNS3 server, multiple clients",description:"This documentation is only for GNS3 2.0 and later",source:"@site/docs/getting-started/installation/one-server-multiple-clients.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/one-server-multiple-clients",permalink:"/docs/getting-started/installation/one-server-multiple-clients",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/one-server-multiple-clients.md",tags:[],version:"current",frontMatter:{id:"one-server-multiple-clients",title:"One GNS3 server, multiple clients",sidebar_label:"One GNS3 server, multiple clients"},sidebar:"someSidebar",previous:{title:"Download for Windows 32-bit",permalink:"/docs/getting-started/installation/download-32-bit"},next:{title:"Upgrade GNS3",permalink:"/docs/getting-started/installation/upgrade-gns3"}},c={},d=[{value:"Setup the Server",id:"setup-the-server",level:2},{value:"What is the difference with a remote GNS3 VM?",id:"what-is-the-difference-with-a-remote-gns3-vm",level:3},{value:"Setup your Clients",id:"setup-your-clients",level:2}],m={toc:d};function g(e){var t=e.components,n=(0,i.A)(e,l);return(0,a.yg)("wrapper",(0,r.A)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"This documentation is only for GNS3 2.0 and later")),(0,a.yg)("p",null,"Since GNS3 2.0 you can use a central GNS3 Server and multiple GNS3 clients. The projects and devices templates will be share and synchronize with all users. All changes are real time if you put a node in a project other user will see it immediately. Your appliances images will be uploaded via the GUI and stored on the remote server."),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"This is an advanced usage. We recommend that the administrator which setup this installation try before with a local installation.")),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"There is no user isolation, all users can view all projects and modify them")),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Video: ",(0,a.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=hVPW5ijvNFo"},"https://www.youtube.com/watch?v=hVPW5ijvNFo"))),(0,a.yg)("h2",{id:"setup-the-server"},"Setup the Server"),(0,a.yg)("p",null,"First you need to install the GNS3 server."),(0,a.yg)("p",null,"Two options:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"./remote-server"},"Install on a remote server")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"./esxi"},"Use the GNS3 VM for ESXi as your server"))),(0,a.yg)("p",null,"If you use the GNS3 VM for ESXi it\u2019s your remote server, you don\u2019t need a remote server and the GNS3 VM."),(0,a.yg)("h3",{id:"what-is-the-difference-with-a-remote-gns3-vm"},"What is the difference with a remote GNS3 VM?"),(0,a.yg)("p",null,"When you use a remote GNS3 VM you have a GNS3 server running on your local machines and all the settings are stored on the local machine. Here, the settings are shared on stored on the remote server."),(0,a.yg)("h2",{id:"setup-your-clients"},"Setup your Clients"),(0,a.yg)("p",null,"If you want to use a local GNS3 installation and a remote installation you can use the ",(0,a.yg)("a",{parentName:"p",href:"../../using-gns3/advanced/settings-profiles"},"settings profiles"),". At startup in the setup wizard choose ",(0,a.yg)("strong",{parentName:"p"},"Run appliances on a remote server")),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/one-server-multiple-clients/1.jpg")}),(0,a.yg)("p",null,"And put the server settings:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/one-server-multiple-clients/2.jpg")}),(0,a.yg)("p",null,"Click ",(0,a.yg)("strong",{parentName:"p"},"Finish")," in the next window, to complete the setup:"),(0,a.yg)("img",{alt:"screenshot",src:(0,o.A)("img/getting-started/installation/one-server-multiple-clients/3.jpg")}),(0,a.yg)("p",null,"That\u2019s all!"),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"You probably don\u2019t need to configure the GNS3 VM or an additional remote server. If you need to use the GNS3 VM you should think about using Linux . Additional servers are required only if you need more compute power.")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/f37eaf51.0fe4e01a.js b/build/assets/js/f37eaf51.0fe4e01a.js new file mode 100644 index 00000000..7b5e65c2 --- /dev/null +++ b/build/assets/js/f37eaf51.0fe4e01a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[5177],{5680:(e,t,n)=>{n.d(t,{xA:()=>u,yg:()=>y});var r=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=p(n),c=a,y=d["".concat(s,".").concat(c)]||d[c]||g[c]||l;return n?r.createElement(y,i(i({ref:t},u),{},{components:n})):r.createElement(y,i({ref:t},u))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:a,i[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>d});var r=n(8168),a=n(8587),l=(n(6540),n(5680)),i=["components"],o={id:"linux",title:"GNS3 Linux Install",sidebar_label:"Linux"},s=void 0,p={unversionedId:"getting-started/installation/linux",id:"getting-started/installation/linux",title:"GNS3 Linux Install",description:"Ubuntu-based distributions (64-bit only)",source:"@site/docs/getting-started/installation/linux.md",sourceDirName:"getting-started/installation",slug:"/getting-started/installation/linux",permalink:"/docs/getting-started/installation/linux",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/getting-started/installation/linux.md",tags:[],version:"current",frontMatter:{id:"linux",title:"GNS3 Linux Install",sidebar_label:"Linux"},sidebar:"someSidebar",previous:{title:"Mac",permalink:"/docs/getting-started/installation/mac"},next:{title:"ESXi",permalink:"/docs/getting-started/installation/esxi"}},u={},d=[{value:"Ubuntu-based distributions (64-bit only)",id:"ubuntu-based-distributions-64-bit-only",level:2},{value:"Debian-based distributions",id:"debian-based-distributions",level:2},{value:"Arch-based distributions",id:"arch-based-distributions",level:2},{value:"To launch the GNS3 Server",id:"to-launch-the-gns3-server",level:2}],g={toc:d};function c(e){var t=e.components,n=(0,a.A)(e,i);return(0,l.yg)("wrapper",(0,r.A)({},g,n,{components:t,mdxType:"MDXLayout"}),(0,l.yg)("h2",{id:"ubuntu-based-distributions-64-bit-only"},"Ubuntu-based distributions (64-bit only)"),(0,l.yg)("p",null,"These instructions are for Ubuntu and all distributions based on it (like Linux Mint)."),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo add-apt-repository ppa:gns3/ppa\nsudo apt update \nsudo apt install gns3-gui gns3-server\n")),(0,l.yg)("p",null,"(when prompted whether non-root users should be allowed to use wireshark and ubridge, select \u2018Yes\u2019 both times)"),(0,l.yg)("p",null,(0,l.yg)("strong",{parentName:"p"},"If you want IOU support")),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo dpkg --add-architecture i386\nsudo apt update\nsudo apt install gns3-iou\n")),(0,l.yg)("p",null,(0,l.yg)("strong",{parentName:"p"},"To install Docker CE (Xenial_and_newer)")),(0,l.yg)("p",null,"Remove any old versions:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo apt remove docker docker-engine docker.io\nsudo snap remove docker\n")),(0,l.yg)("p",null,"Install the following packages:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo apt-get install apt-transport-https ca-certificates curl software-properties-common\n")),(0,l.yg)("p",null,"Import the official Docker GPG key:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -\n")),(0,l.yg)("p",null,"Add the appropriate repo:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},'sudo add-apt-repository \\\n"deb [arch=amd64] https://download.docker.com/linux/ubuntu \\\n $(. /etc/os-release && echo $VERSION_CODENAME) stable"\n')),(0,l.yg)("p",null,"Install Docker-CE:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo apt update\nsudo apt install docker-ce\n")),(0,l.yg)("p",null,"Finally, add your user to the following groups:"),(0,l.yg)("p",null,(0,l.yg)("em",{parentName:"p"},"ubridge libvirt kvm wireshark docker")),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"sudo usermod -aG ubridge,libvirt,kvm,wireshark,docker $(whoami)\n")),(0,l.yg)("p",null,"Restart your user session by logging out and back in, or restarting the system."),(0,l.yg)("h2",{id:"debian-based-distributions"},"Debian-based distributions"),(0,l.yg)("p",null,"GNS3 is not available through apt; you will have to use ",(0,l.yg)("inlineCode",{parentName:"p"},"pipx"),"."),(0,l.yg)("p",null,"Refresh apt:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-bash"},"sudo apt update\n")),(0,l.yg)("p",null,"Install python and the required emulation & gui packages:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-bash"},"sudo apt install python3 python3-pip pipx python3-pyqt5 python3-pyqt5.qtwebsockets python3-pyqt5.qtsvg qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst dynamips software-properties-common ca-certificates curl gnupg2 \n")),(0,l.yg)("p",null,"Use pipx to install gns3:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-bash"},"pipx install gns3-server\npipx install gns3-gui\n")),(0,l.yg)("p",null,"To launch the GUI, we will need to prepare the virtual environment. Inject the GNS server and QT elements:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-bash"},"pipx inject gns3-gui gns3-server PyQt5\n")),(0,l.yg)("p",null,"Finally, launch with ",(0,l.yg)("inlineCode",{parentName:"p"},"gns3"),"."),(0,l.yg)("h2",{id:"arch-based-distributions"},"Arch-based distributions"),(0,l.yg)("p",null,"To install GNS3 on Archlinux you will need yay to install from Arch Users Repository ( AUR ), thats if it's not already installed."),(0,l.yg)("p",null,(0,l.yg)("inlineCode",{parentName:"p"},"yay")," can be acquired either by compiling it from source or by downloading the pre-built binary version provided by GitHub Actions."),(0,l.yg)("p",null,"For the source method:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-bash"},"pacman -S --needed git base-devel\ngit clone https://aur.archlinux.org/yay.git\ncd yay\nmakepkg -si\n")),(0,l.yg)("p",null,"For the binary option:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre",className:"language-bash"},"pacman -S --needed git base-devel\ngit clone https://aur.archlinux.org/yay-bin.git\ncd yay-bin\nmakepkg -si\n")),(0,l.yg)("p",null,"Then proceed with the setup process and confirm the installation."),(0,l.yg)("p",null,"For more detailed instructions, you can refer to the ",(0,l.yg)("a",{parentName:"p",href:"https://github.com/Jguer/yay"},"yay repository"),"."),(0,l.yg)("p",null,(0,l.yg)("strong",{parentName:"p"},"Install Prerequesits + docker:")),(0,l.yg)("p",null,"Next we will install pre-requesit packages from the same AUR source. Please note that mixing installation source may lead to unfuncional application or unstability:"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"yay -S qemu docker vpcs dynamips libvirt ubridge inetutils\n")),(0,l.yg)("p",null,(0,l.yg)("strong",{parentName:"p"},"Install GNS3 Server and GUI")," "),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"yay -S gns3-server gns3-gui \n")),(0,l.yg)("p",null,(0,l.yg)("strong",{parentName:"p"},"Finalize installation")),(0,l.yg)("p",null,"Finally you we need to add your user to the gns3 groups as demonstrated earlier and do reboot. "),(0,l.yg)("h2",{id:"to-launch-the-gns3-server"},"To launch the GNS3 Server"),(0,l.yg)("pre",null,(0,l.yg)("code",{parentName:"pre"},"gns3server\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/f95c72e9.bab3fd3a.js b/build/assets/js/f95c72e9.bab3fd3a.js new file mode 100644 index 00000000..a3e05a18 --- /dev/null +++ b/build/assets/js/f95c72e9.bab3fd3a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[1850],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>g});var o=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=o.createContext({}),c=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),d=i,g=u["".concat(s,".").concat(d)]||u[d]||h[d]||a;return n?o.createElement(g,r(r({ref:t},p),{},{components:n})):o.createElement(g,r({ref:t},p))}));function g(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,r=new Array(a);r[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,r[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>g,frontMatter:()=>s,metadata:()=>p,toc:()=>h});var o=n(8168),i=n(8587),a=(n(6540),n(5680)),r=n(6025),l=["components"],s={id:"how-to-use-console-applications-with-the-web-ui",title:"How to use applications with the GNS3 Web interface",sidebar_label:"How to use applications with the GNS3 Web interface"},c=void 0,p={unversionedId:"how-to-guides/how-to-use-console-applications-with-the-web-ui",id:"how-to-guides/how-to-use-console-applications-with-the-web-ui",title:"How to use applications with the GNS3 Web interface",description:"A web client pack must be installed on your operating system in order to launch local applications needed to work with the GNS3 Web interface. We currently support Telnet, VNC, SPICE and packet capture applications.",source:"@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md",sourceDirName:"how-to-guides",slug:"/how-to-guides/how-to-use-console-applications-with-the-web-ui",permalink:"/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md",tags:[],version:"current",frontMatter:{id:"how-to-use-console-applications-with-the-web-ui",title:"How to use applications with the GNS3 Web interface",sidebar_label:"How to use applications with the GNS3 Web interface"},sidebar:"someSidebar",previous:{title:"Importing vMX and vQFX into GNS3",permalink:"/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3"},next:{title:"Configure GNS3 to use an additional remote server",permalink:"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server"}},u={},h=[{value:"Web-Ui",id:"web-ui",level:3},{value:"Installation on Windows",id:"installation-on-windows",level:3},{value:"Installation on macOS",id:"installation-on-macos",level:3},{value:"Installation on Linux",id:"installation-on-linux",level:3},{value:"Usage",id:"usage",level:3}],d={toc:h};function g(e){var t=e.components,n=(0,i.A)(e,l);return(0,a.yg)("wrapper",(0,o.A)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"A web client pack must be installed on your operating system in order to launch local applications needed to work with the GNS3 Web interface. We currently support Telnet, VNC, SPICE and packet capture applications."),(0,a.yg)("p",null,"Please remember to run the GNS3 Web interface with Chrome or Firefox. Also, please note the Web client is currently in Beta version and still needs some polishing. For example packet capture will not work with a GNS3 server that requires authentication (this will be fixed in a future release)."),(0,a.yg)("p",null,"Additionally, we have plans for an HTML5 console support so native consoles won\u2019t be required."),(0,a.yg)("h3",{id:"web-ui"},"Web-Ui"),(0,a.yg)("p",null,"The Web-ui is bundled with the GNS3 server. After starting the GNS3 server, the web-ui can be accessed on ",(0,a.yg)("inlineCode",{parentName:"p"},"http://localhost:3080")," assuming the default host and port are used or ",(0,a.yg)("inlineCode",{parentName:"p"},"http://VM_IP_ADDR:80")," if using the GNS3 VM."),(0,a.yg)("h3",{id:"installation-on-windows"},"Installation on Windows"),(0,a.yg)("p",null,"Make sure the GNS3 WebClient option is ticked when installing GNS3 then follow the installation process. Protocol handlers are registered during the installation."),(0,a.yg)("img",{alt:"screenshot",src:(0,r.A)("img/how-to-guides/how-to-use-console-applications-with-the-web-ui/1.jpg")}),(0,a.yg)("h3",{id:"installation-on-macos"},"Installation on macOS"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/GNS3/gns3-webclient-pack/releases/download/v1.0.0b2/GNS3.WebClient.pack-1.0.0b2.dmg"},"WebClient pack from here")),(0,a.yg)("li",{parentName:"ol"},"Drag and drop the app from the DMG into /Applications. Start the app at least once to register the protocol handlers.")),(0,a.yg)("h3",{id:"installation-on-linux"},"Installation on Linux"),(0,a.yg)("p",null,"Please ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/GNS3/gns3-webclient-pack/blob/master/README.md"},"read this document to install on Linux")," (via PPA, PyPi or manually). Use the \u201cgns3-webclient-config\u201d command to start from a terminal."),(0,a.yg)("h3",{id:"usage"},"Usage"),(0,a.yg)("p",null,"The WebClient has 2 executables. The webclient configurator to edit settings like the console software paths and the webclient launcher that actually launches applications based on the clicked URL in the GNS3 web interface. Different protocol handlers are registered to open the webclient launcher during the WebClient installation."),(0,a.yg)("p",null,"The first step is to configure your application paths or leave by default."),(0,a.yg)("img",{alt:"screenshot",src:(0,r.A)("img/how-to-guides/how-to-use-console-applications-with-the-web-ui/2.jpg")}),(0,a.yg)("p",null,"Then launch the Web Ui, start a node, right click on it and select \u201cconsole\u201d. Alternatively, just right click on a link and select \u201cStart capture\u201d to start a packet capture and start Wireshark."),(0,a.yg)("p",null,"Choose \u201cOpen GNS3 WebClient launcher\u201d to start your application when using Google Chrome web browser."),(0,a.yg)("img",{alt:"screenshot",src:(0,r.A)("img/how-to-guides/how-to-use-console-applications-with-the-web-ui/3.jpg")}),(0,a.yg)("p",null,"On Firefox web browser, select the GNS3 WebClient launcher and tick \u201cRemember my choice for gns3+telnet links\u201d then click on \u201cOpen link\u201d. You won\u2019t have to do this again the next time."),(0,a.yg)("img",{alt:"screenshot",src:(0,r.A)("img/how-to-guides/how-to-use-console-applications-with-the-web-ui/4.jpg")}))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/fc549e88.1b8335bb.js b/build/assets/js/fc549e88.1b8335bb.js new file mode 100644 index 00000000..66dd36a5 --- /dev/null +++ b/build/assets/js/fc549e88.1b8335bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[3207],{5680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>g});var a=t(6540);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=c(t),d=o,g=m["".concat(s,".").concat(d)]||m[d]||p[d]||r;return t?a.createElement(g,i(i({ref:n},u),{},{components:t})):a.createElement(g,i({ref:n},u))}));function g(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=d;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[m]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{t.r(n),t.d(n,{assets:()=>m,contentTitle:()=>c,default:()=>g,frontMatter:()=>s,metadata:()=>u,toc:()=>p});var a=t(8168),o=t(8587),r=(t(6540),t(5680)),i=t(6025),l=["components"],s={id:"the-console-terminal",title:"The console terminal",sidebar_label:"The console terminal"},c=void 0,u={unversionedId:"using-gns3/beginners/the-console-terminal",id:"using-gns3/beginners/the-console-terminal",title:"The console terminal",description:"GNS3 uses Solar-PuTTY as the default console terminal in Windows* (see note), and will attempt to use the default system terminal in other operating systems (gnome-terminal, for example, in vanilla Ubuntu).",source:"@site/docs/using-gns3/beginners/the-console-terminal.md",sourceDirName:"using-gns3/beginners",slug:"/using-gns3/beginners/the-console-terminal",permalink:"/docs/using-gns3/beginners/the-console-terminal",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/using-gns3/beginners/the-console-terminal.md",tags:[],version:"current",frontMatter:{id:"the-console-terminal",title:"The console terminal",sidebar_label:"The console terminal"},sidebar:"someSidebar",previous:{title:"Switching and GNS3",permalink:"/docs/using-gns3/beginners/switching-and-gns3"},next:{title:"Install an appliance from the GNS3 Marketplace",permalink:"/docs/using-gns3/beginners/install-from-marketplace"}},m={},p=[{value:"Change the Terminal",id:"change-the-terminal",level:2},{value:"Use a custom Terminal",id:"use-a-custom-terminal",level:2},{value:"Use a different terminal just one at a time",id:"use-a-different-terminal-just-one-at-a-time",level:2}],d={toc:p};function g(e){var n=e.components,t=(0,o.A)(e,l);return(0,r.yg)("wrapper",(0,a.A)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"GNS3 uses Solar-PuTTY as the default console terminal in Windows* (see note), and will attempt to use the default system terminal in other operating systems (gnome-terminal, for example, in vanilla Ubuntu). "),(0,r.yg)("p",null,"You can direct GNS3 to use one of multiple other popular terminals (as options are provided in a handy dropdown selection menu), you can also create and save custom entries for any console applications (if needed), as well as temporarily use a custom console on a per-node basis in a project."),(0,r.yg)("h2",{id:"change-the-terminal"},"Change the Terminal"),(0,r.yg)("p",null,"In ",(0,r.yg)("strong",{parentName:"p"},"Edit->Preferences->General preferences->Console applications"),", you can edit the command used to start the console application."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/the-console-terminal/1.jpg")}),(0,r.yg)("p",null,"And choose a predefined command"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/the-console-terminal/2.jpg")}),(0,r.yg)("p",null,"Below are the predefined commands currently included:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/the-console-terminal/3.jpg")}),(0,r.yg)("h2",{id:"use-a-custom-terminal"},"Use a custom Terminal"),(0,r.yg)("p",null,"If you choose Custom and Save, you can add a non-supported terminal to the dropdown list:"),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/the-console-terminal/4.jpg")}),(0,r.yg)("p",null,"Modify the highlighted section above to include the application\u2019s executable, along with any necessary variables required."),(0,r.yg)("p",null,"If the console application isn\u2019t part of your PATH environment variable, you\u2019ll need to include the full directory path to it. For example, you\u2019d add \u201cC:\\Program Files\\some-console-app\\program.exe\u201d, and then any necessary variables. It\u2019s outside the scope of this document to cover editing your PATH environment variable, or cover all the possible variables available for the many console applications available."),(0,r.yg)("h2",{id:"use-a-different-terminal-just-one-at-a-time"},"Use a different terminal just one at a time"),(0,r.yg)("p",null,"If you right-click on node in a topology you can open a different terminal than the default."),(0,r.yg)("img",{alt:"screenshot",src:(0,i.A)("img/using-gns3/beginners/the-console-terminal/5.jpg")}),(0,r.yg)("p",null,"Now that Solar-Putty is the default, David Bombal has created some videos on how you can customize it to your liking:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Video: ",(0,r.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=mQKbXMIxHSk"},"https://www.youtube.com/watch?v=mQKbXMIxHSk")),(0,r.yg)("li",{parentName:"ul"},"Video: ",(0,r.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=Q2TnxcJa0wI"},"https://www.youtube.com/watch?v=Q2TnxcJa0wI")),(0,r.yg)("li",{parentName:"ul"},"Video: ",(0,r.yg)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=shoDldraAsE"},"https://www.youtube.com/watch?v=shoDldraAsE"))),(0,r.yg)("admonition",{type:"note"},(0,r.yg)("p",{parentName:"admonition"},"Solar PuTTY is only included by default, if you download the GNS3 AIO installer for Windows from gns3.com directly. If you downloaded that installer from, say, github, then vanilla PuTTY will be the default terminal emulator used, instead."),(0,r.yg)("p",{parentName:"admonition"},"You can still download Solar-PuTTY from SolarWinds (it\u2019s free), copy/paste the Solar-PuTTY executable to the main GNS3 installation folder, and then direct GNS3 to use it as the default console application, by editing the preferences (as shown above).")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/fff7c774.5d187db1.js b/build/assets/js/fff7c774.5d187db1.js new file mode 100644 index 00000000..d21203c4 --- /dev/null +++ b/build/assets/js/fff7c774.5d187db1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[285],{5680:(e,r,t)=>{t.d(r,{xA:()=>l,yg:()=>m});var n=t(6540);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var i=n.createContext({}),s=function(e){var r=n.useContext(i),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},l=function(e){var r=s(e.components);return n.createElement(i.Provider,{value:r},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},f=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),p=s(t),f=o,m=p["".concat(i,".").concat(f)]||p[f]||d[f]||a;return t?n.createElement(m,c(c({ref:r},l),{},{components:t})):n.createElement(m,c({ref:r},l))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,c=new Array(a);c[0]=f;var u={};for(var i in r)hasOwnProperty.call(r,i)&&(u[i]=r[i]);u.originalType=e,u[p]="string"==typeof e?e:o,c[1]=u;for(var s=2;s{t.r(r),t.d(r,{Highlight:()=>d,assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>u,metadata:()=>s,toc:()=>p});var n=t(8168),o=t(8587),a=(t(6540),t(5680)),c=["components"],u={id:"mdx",title:"Powered by MDX"},i=void 0,s={unversionedId:"docusaurus-reference/mdx",id:"docusaurus-reference/mdx",title:"Powered by MDX",description:"You can write JSX and use React components within your Markdown thanks to MDX.",source:"@site/docs/docusaurus-reference/mdx.md",sourceDirName:"docusaurus-reference",slug:"/docusaurus-reference/mdx",permalink:"/docs/docusaurus-reference/mdx",draft:!1,editUrl:"https://github.com/mother/gns3-docs/blob/master/docs/docusaurus-reference/mdx.md",tags:[],version:"current",frontMatter:{id:"mdx",title:"Powered by MDX"}},l={},p=[],d=function(e){var r=e.children,t=e.color;return(0,a.yg)("span",{style:{backgroundColor:t,borderRadius:"2px",color:"#fff",padding:"0.2rem"}},r)},f={toc:p,Highlight:d};function m(e){var r=e.components,t=(0,o.A)(e,c);return(0,a.yg)("wrapper",(0,n.A)({},f,t,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"You can write JSX and use React components within your Markdown thanks to ",(0,a.yg)("a",{parentName:"p",href:"https://mdxjs.com/"},"MDX"),"."),(0,a.yg)(d,{color:"#25c2a0",mdxType:"Highlight"},"Docusaurus green")," and ",(0,a.yg)(d,{color:"#1877F2",mdxType:"Highlight"},"Facebook blue")," are my favorite colors.",(0,a.yg)("p",null,"I can write ",(0,a.yg)("strong",{parentName:"p"},"Markdown")," alongside my ",(0,a.yg)("em",{parentName:"p"},"JSX"),"!"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/build/assets/js/main.66bc444b.js b/build/assets/js/main.66bc444b.js new file mode 100644 index 00000000..f839acf9 --- /dev/null +++ b/build/assets/js/main.66bc444b.js @@ -0,0 +1,2 @@ +/*! For license information please see main.66bc444b.js.LICENSE.txt */ +(self.webpackChunkgns_3_docs=self.webpackChunkgns_3_docs||[]).push([[8792],{9188:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(6540);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},870:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{A:()=>p});var r=n(6540),a=n(8168),o=n(3259),i=n.n(o),l=n(4054);const s={"058140c7":[function(){return n.e(1789).then(n.bind(n,7851))},"@site/docs/contribute/contribute-to-gns3.md",7851],"079cfff5":[function(){return n.e(5315).then(n.bind(n,8163))},"@site/docs/using-gns3/advanced/move-from-iouvm-gns3-vm.md",8163],"0874f9a4":[function(){return n.e(6522).then(n.bind(n,559))},"@site/docs/using-gns3/beginners/gns3-styles.md",559],"0ba241d4":[function(){return n.e(8389).then(n.bind(n,1e3))},"@site/docs/using-gns3/advanced/settings-profiles.md",1e3],"0d02c885":[function(){return n.e(4621).then(n.bind(n,922))},"@site/docs/getting-started/installation/download-32-bit.md",922],"0fa70dcc":[function(){return n.e(9423).then(n.bind(n,7391))},"@site/docs/contribute/how-to-debug-web-ui-guide.md",7391],17896441:[function(){return Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,5344))},"@theme/DocItem",5344],"1a4e3797":[function(){return Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,5598))},"@theme/SearchPage",5598],"1aacdf1a":[function(){return n.e(3057).then(n.bind(n,3438))},"@site/docs/using-gns3/advanced/create-a-new-version-for-an-appliance.md",3438],"1be23e60":[function(){return n.e(537).then(n.bind(n,4368))},"@site/docs/getting-started/installation/remote-server.md",4368],"1be78505":[function(){return Promise.all([n.e(1869),n.e(8714)]).then(n.bind(n,10))},"@theme/DocPage",10],"1e94eb74":[function(){return n.e(9414).then(n.bind(n,9881))},"@site/docs/using-gns3/advanced/hubs-and-switches.md",9881],"25877efd":[function(){return n.e(2569).then(n.bind(n,1835))},"@site/docs/troubleshooting-faq/where-do-i-get-ios-images.md",1835],"2f261fb5":[function(){return n.e(2425).then(n.bind(n,8274))},"@site/docs/docusaurus-reference/doc3.md",8274],"322a49c4":[function(){return n.e(7131).then(n.bind(n,9782))},"@site/docs/getting-started/what-is-gns3.md",9782],"3cd311f2":[function(){return n.e(2584).then(n.bind(n,4002))},"@site/docs/how-to-guides/cisco-asa.md",4002],"3d5a80f7":[function(){return n.e(4665).then(n.bind(n,6217))},"@site/docs/getting-started/installation/mac.md",6217],"3dbbbf4c":[function(){return n.e(4389).then(n.bind(n,1727))},"@site/docs/contribute/development-of-gns3.md",1727],"48d9d6a9":[function(){return n.e(4734).then(n.bind(n,2751))},"@site/docs/using-gns3/design/why-gns3-uses-uuid.md",2751],"5c632b0c":[function(){return n.e(7313).then(n.bind(n,5372))},"@site/docs/using-gns3/beginners/the-gns3-gui.md",5372],"5d09215c":[function(){return n.e(174).then(n.bind(n,1680))},"@site/docs/emulators/adding-vmware-vms-to-gns3-topologies.md",1680],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(n,4784))},"@generated/docusaurus.config",4784],"63f216fb":[function(){return n.e(3855).then(n.bind(n,892))},"@site/docs/using-gns3/beginners/link-control.md",892],"65700f29":[function(){return n.e(2892).then(n.bind(n,8855))},"@site/docs/getting-started/installation/windows.md",8855],"6c7f686e":[function(){return n.e(5680).then(n.bind(n,7648))},"@site/docs/using-gns3/administration/client-server-ssl-encryption.md",7648],"6dc9a2ef":[function(){return n.e(9081).then(n.bind(n,4645))},"@site/docs/emulators/which-emulators-should-i-use.md",4645],"6ff99807":[function(){return n.e(2404).then(n.bind(n,8951))},"@site/docs/getting-started/installation/gns3-on-equinix.md",8951],"76e08b6a":[function(){return n.e(6274).then(n.bind(n,2610))},"@site/docs/using-gns3/advanced/special-ip-addresses.md",2610],"79bc4fa4":[function(){return n.e(1731).then(n.bind(n,5675))},"@site/docs/getting-started/your-first-gns3-topology.md",5675],"7bc39c0f":[function(){return n.e(5740).then(n.bind(n,7616))},"@site/docs/using-gns3/advanced/configuration-transfer-qemu-vms.md",7616],"7bf20783":[function(){return n.e(9800).then(n.bind(n,6007))},"@site/docs/using-gns3/beginners/install-from-marketplace.md",6007],"7df75973":[function(){return n.e(271).then(n.bind(n,5546))},"@site/docs/using-gns3/administration/scale-gns3.md",5546],"830399a1":[function(){return n.e(4123).then(n.bind(n,9411))},"@site/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3.md",9411],"84f53706":[function(){return n.e(1488).then(n.bind(n,4423))},"@site/docs/using-gns3/beginners/switching-and-gns3.md",4423],"89f8e59d":[function(){return n.e(8797).then(n.bind(n,3295))},"@site/docs/using-gns3/advanced/port-name-formatting.md",3295],"90d7c7d0":[function(){return n.e(9729).then(n.bind(n,299))},"@site/docs/troubleshooting-faq/general-faq.md",299],"935f2afb":[function(){return n.e(8581).then(n.t.bind(n,5610,19))},"~docs/default/version-current-metadata-prop-751.json",5610],"99d2c9c4":[function(){return n.e(8878).then(n.t.bind(n,7757,19))},"/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7757],"9bd9ba21":[function(){return n.e(1927).then(n.bind(n,3143))},"@site/docs/using-gns3/design/architecture.md",3143],"9cda237f":[function(){return n.e(2696).then(n.bind(n,4147))},"@site/docs/using-gns3/administration/gns3-server-configuration-file.md",4147],a0fedaae:[function(){return n.e(8572).then(n.bind(n,3765))},"@site/docs/using-gns3/beginners/change-node-symbol.md",3765],a72e2c34:[function(){return n.e(4052).then(n.bind(n,8423))},"@site/docs/emulators/docker-support-in-gns3.md",8423],a94aed5d:[function(){return n.e(4296).then(n.bind(n,5378))},"@site/docs/getting-started/setup-wizard-local-server.md",5378],aa11fbf4:[function(){return n.e(2669).then(n.bind(n,5418))},"@site/docs/using-gns3/beginners/import-gns3-appliance.md",5418],ae444171:[function(){return n.e(7128).then(n.bind(n,2481))},"@site/docs/getting-started/your-first-cisco-topology.md",2481],b38459e8:[function(){return n.e(23).then(n.bind(n,8353))},"@site/docs/docusaurus-reference/doc2.md",8353],c0738d6f:[function(){return n.e(2672).then(n.bind(n,2889))},"@site/docs/emulators/cisco-ios-images-for-dynamips.md",2889],c1bbe575:[function(){return n.e(8545).then(n.bind(n,1396))},"@site/docs/using-gns3/advanced/the-nat-node.md",1396],c36fddde:[function(){return n.e(6440).then(n.bind(n,9471))},"@site/docs/emulators/qemu-system-uuid.md",9471],c4f5d8e4:[function(){return Promise.all([n.e(1869),n.e(2634)]).then(n.bind(n,2468))},"@site/src/pages/index.js",2468],c561a9f7:[function(){return n.e(3183).then(n.bind(n,4457))},"@site/docs/emulators/vpcs.md",4457],c9496258:[function(){return n.e(1341).then(n.t.bind(n,4061,19))},"/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",4061],cb052573:[function(){return n.e(5648).then(n.bind(n,2040))},"@site/docs/getting-started/setup-wizard-gns3-vm.md",2040],cd180604:[function(){return n.e(475).then(n.bind(n,8244))},"@site/docs/docusaurus-reference/doc1.md",8244],d1a25e88:[function(){return n.e(8965).then(n.bind(n,2200))},"@site/docs/getting-started/installation/upgrade-gns3.md",2200],d5a0d1e6:[function(){return n.e(9469).then(n.bind(n,7091))},"@site/docs/getting-started/installation/esxi.md",7091],d7f44f17:[function(){return n.e(668).then(n.t.bind(n,1966,19))},"/Users/stevenyuen/Sites/gns3-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",1966],d8d6327f:[function(){return n.e(9029).then(n.bind(n,580))},"@site/docs/troubleshooting-faq/troubleshoot-gns3.md",580],d907171e:[function(){return n.e(2935).then(n.bind(n,4450))},"@site/docs/getting-started/installation/download-gns3-vm.md",4450],de112a60:[function(){return n.e(3273).then(n.bind(n,9426))},"@site/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server.md",9426],e20c0e82:[function(){return n.e(6038).then(n.bind(n,8270))},"@site/docs/using-gns3/advanced/connect-gns3-internet.md",8270],ecc29b0a:[function(){return n.e(4860).then(n.bind(n,2558))},"@site/docs/using-gns3/administration/gns3-security.md",2558],f09f0737:[function(){return n.e(7549).then(n.bind(n,6199))},"@site/docs/emulators/non-native-iou-for-windows-and-osx.md",6199],f1f73209:[function(){return n.e(687).then(n.bind(n,9374))},"@site/docs/emulators/create-a-docker-container-for-gns3.md",9374],f24bf796:[function(){return n.e(8241).then(n.bind(n,1731))},"@site/docs/using-gns3/administration/running-gns3-server-as-daemon.md",1731],f2fb7d9a:[function(){return n.e(5884).then(n.bind(n,2692))},"@site/docs/getting-started/installation/one-server-multiple-clients.md",2692],f37eaf51:[function(){return n.e(5177).then(n.bind(n,800))},"@site/docs/getting-started/installation/linux.md",800],f95c72e9:[function(){return n.e(1850).then(n.bind(n,6970))},"@site/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui.md",6970],fc549e88:[function(){return n.e(3207).then(n.bind(n,2309))},"@site/docs/using-gns3/beginners/the-console-terminal.md",2309],fff7c774:[function(){return n.e(285).then(n.bind(n,8494))},"@site/docs/docusaurus-reference/mdx.md",8494]};function u(e){var t=e.error,n=e.retry,a=e.pastDelay;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(6921),d=n(3102);function f(e,t){if("*"===e)return i()({loading:u,loader:function(){return n.e(1774).then(n.bind(n,1774))},modules:["@theme/NotFound"],webpack:function(){return[1774]},render:function(e,t){var n=e.default;return r.createElement(d.W,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});var o=l[e+"-"+t],f={},p=[],m=[],g=(0,c.A)(o);return Object.entries(g).forEach((function(e){var t=e[0],n=e[1],r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:function(){return m},render:function(t,n){var i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((function(t){var n=t[0],r=t[1],a=r.default;if(!a)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((function(e){return"default"!==e})).forEach((function(e){a[e]=r[e]}));var o=i,l=n.split(".");l.slice(0,-1).forEach((function(e){o=o[e]})),o[l[l.length-1]]=a}));var l=i.__comp;delete i.__comp;var s=i.__context;return delete i.__context,r.createElement(d.W,{value:s},r.createElement(l,(0,a.A)({},i,n)))}})}const p=[{path:"/search",component:f("/search","9aa"),exact:!0},{path:"/docs",component:f("/docs","6d6"),routes:[{path:"/docs/",component:f("/docs/","989"),exact:!0,sidebar:"someSidebar"},{path:"/docs/contribute/contribute-to-gns3",component:f("/docs/contribute/contribute-to-gns3","6d1"),exact:!0,sidebar:"someSidebar"},{path:"/docs/contribute/development-of-gns3",component:f("/docs/contribute/development-of-gns3","1f9"),exact:!0,sidebar:"someSidebar"},{path:"/docs/contribute/how-to-debug-web-ui-guide",component:f("/docs/contribute/how-to-debug-web-ui-guide","700"),exact:!0,sidebar:"someSidebar"},{path:"/docs/docusaurus-reference/doc1",component:f("/docs/docusaurus-reference/doc1","817"),exact:!0},{path:"/docs/docusaurus-reference/doc2",component:f("/docs/docusaurus-reference/doc2","e71"),exact:!0},{path:"/docs/docusaurus-reference/doc3",component:f("/docs/docusaurus-reference/doc3","0fc"),exact:!0},{path:"/docs/docusaurus-reference/mdx",component:f("/docs/docusaurus-reference/mdx","b91"),exact:!0},{path:"/docs/emulators/adding-vmware-vms-to-gns3-topologies",component:f("/docs/emulators/adding-vmware-vms-to-gns3-topologies","2a0"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/cisco-ios-images-for-dynamips",component:f("/docs/emulators/cisco-ios-images-for-dynamips","914"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/create-a-docker-container-for-gns3",component:f("/docs/emulators/create-a-docker-container-for-gns3","d4c"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/docker-support-in-gns3",component:f("/docs/emulators/docker-support-in-gns3","afd"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/non-native-iou-for-windows-and-osx",component:f("/docs/emulators/non-native-iou-for-windows-and-osx","1d8"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/qemu-system-uuid",component:f("/docs/emulators/qemu-system-uuid","83c"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/vpcs",component:f("/docs/emulators/vpcs","757"),exact:!0,sidebar:"someSidebar"},{path:"/docs/emulators/which-emulators-should-i-use",component:f("/docs/emulators/which-emulators-should-i-use","3ee"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/download-32-bit",component:f("/docs/getting-started/installation/download-32-bit","5e4"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/download-gns3-vm",component:f("/docs/getting-started/installation/download-gns3-vm","4c8"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/esxi",component:f("/docs/getting-started/installation/esxi","417"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/gns3-on-equinix",component:f("/docs/getting-started/installation/gns3-on-equinix","c02"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/linux",component:f("/docs/getting-started/installation/linux","d02"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/mac",component:f("/docs/getting-started/installation/mac","f97"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/one-server-multiple-clients",component:f("/docs/getting-started/installation/one-server-multiple-clients","abd"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/remote-server",component:f("/docs/getting-started/installation/remote-server","c64"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/upgrade-gns3",component:f("/docs/getting-started/installation/upgrade-gns3","e2e"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/installation/windows",component:f("/docs/getting-started/installation/windows","9a0"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/setup-wizard-gns3-vm",component:f("/docs/getting-started/setup-wizard-gns3-vm","388"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/setup-wizard-local-server",component:f("/docs/getting-started/setup-wizard-local-server","801"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/your-first-cisco-topology",component:f("/docs/getting-started/your-first-cisco-topology","c5b"),exact:!0,sidebar:"someSidebar"},{path:"/docs/getting-started/your-first-gns3-topology",component:f("/docs/getting-started/your-first-gns3-topology","e89"),exact:!0,sidebar:"someSidebar"},{path:"/docs/how-to-guides/cisco-asa",component:f("/docs/how-to-guides/cisco-asa","7b8"),exact:!0,sidebar:"someSidebar"},{path:"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server",component:f("/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server","65c"),exact:!0,sidebar:"someSidebar"},{path:"/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui",component:f("/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui","2f7"),exact:!0,sidebar:"someSidebar"},{path:"/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3",component:f("/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3","ff5"),exact:!0,sidebar:"someSidebar"},{path:"/docs/troubleshooting-faq/general-faq",component:f("/docs/troubleshooting-faq/general-faq","f9d"),exact:!0,sidebar:"someSidebar"},{path:"/docs/troubleshooting-faq/troubleshoot-gns3",component:f("/docs/troubleshooting-faq/troubleshoot-gns3","315"),exact:!0,sidebar:"someSidebar"},{path:"/docs/troubleshooting-faq/where-do-i-get-ios-images",component:f("/docs/troubleshooting-faq/where-do-i-get-ios-images","555"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/administration/client-server-ssl-encryption",component:f("/docs/using-gns3/administration/client-server-ssl-encryption","a24"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/administration/gns3-security",component:f("/docs/using-gns3/administration/gns3-security","2a4"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/administration/gns3-server-configuration-file",component:f("/docs/using-gns3/administration/gns3-server-configuration-file","879"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/administration/running-gns3-server-as-daemon",component:f("/docs/using-gns3/administration/running-gns3-server-as-daemon","156"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/administration/scale-gns3",component:f("/docs/using-gns3/administration/scale-gns3","b8a"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/configuration-transfer-qemu-vms",component:f("/docs/using-gns3/advanced/configuration-transfer-qemu-vms","43d"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/connect-gns3-internet",component:f("/docs/using-gns3/advanced/connect-gns3-internet","a1d"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/create-a-new-version-for-an-appliance",component:f("/docs/using-gns3/advanced/create-a-new-version-for-an-appliance","65f"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/hubs-and-switches",component:f("/docs/using-gns3/advanced/hubs-and-switches","3bf"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/move-from-iouvm-gns3-vm",component:f("/docs/using-gns3/advanced/move-from-iouvm-gns3-vm","9cf"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/port-name-formatting",component:f("/docs/using-gns3/advanced/port-name-formatting","a66"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/settings-profiles",component:f("/docs/using-gns3/advanced/settings-profiles","ab3"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/special-ip-addresses",component:f("/docs/using-gns3/advanced/special-ip-addresses","e61"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/advanced/the-nat-node",component:f("/docs/using-gns3/advanced/the-nat-node","e85"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/change-node-symbol",component:f("/docs/using-gns3/beginners/change-node-symbol","5ff"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/gns3-styles",component:f("/docs/using-gns3/beginners/gns3-styles","d6a"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/import-gns3-appliance",component:f("/docs/using-gns3/beginners/import-gns3-appliance","46e"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/install-from-marketplace",component:f("/docs/using-gns3/beginners/install-from-marketplace","ebc"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/link-control",component:f("/docs/using-gns3/beginners/link-control","787"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/switching-and-gns3",component:f("/docs/using-gns3/beginners/switching-and-gns3","215"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/the-console-terminal",component:f("/docs/using-gns3/beginners/the-console-terminal","77e"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/beginners/the-gns3-gui",component:f("/docs/using-gns3/beginners/the-gns3-gui","613"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/design/architecture",component:f("/docs/using-gns3/design/architecture","6e1"),exact:!0,sidebar:"someSidebar"},{path:"/docs/using-gns3/design/why-gns3-uses-uuid",component:f("/docs/using-gns3/design/why-gns3-uses-uuid","0ef"),exact:!0,sidebar:"someSidebar"}]},{path:"/",component:f("/","151"),exact:!0},{path:"*",component:f("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>o});var r=n(6540),a=r.createContext(!1);function o(e){var t=e.children,n=(0,r.useState)(!1),o=n[0],i=n[1];return(0,r.useEffect)((function(){i(!0)}),[]),r.createElement(a.Provider,{value:o},t)}},5660:(e,t,n)=>{"use strict";var r=n(6540),a=n(961),o=n(4625),i=n(545),l=n(8193);const s=[n(1911),n(119),n(6134),n(6294),n(1043)];var u=n(8328),c=n(6347),d=n(2831);function f(e){var t=e.children;return r.createElement(r.Fragment,null,t)}var p=n(8168),m=n(5260),g=n(4586),h=n(6025),v=n(6342),b=n(9024),y=n(2131),w=n(4090),k=n(2967),E=n(1463);function S(){var e=(0,g.A)().i18n,t=e.defaultLocale,n=e.localeConfigs,a=(0,y.o)();return r.createElement(m.A,null,Object.entries(n).map((function(e){var t=e[0],n=e[1].htmlLang;return r.createElement("link",{key:t,rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:n})})),r.createElement("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){var t=e.permalink,n=(0,g.A)().siteConfig.url,a=function(){var e=(0,g.A)().siteConfig.url,t=(0,c.zy)().pathname;return e+(0,h.A)(t)}(),o=t?""+n+t:a;return r.createElement(m.A,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function T(){var e=(0,g.A)().i18n.currentLocale,t=(0,v.p)(),n=t.metadata,a=t.image;return r.createElement(r.Fragment,null,r.createElement(m.A,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.w})),a&&r.createElement(b.be,{image:a}),r.createElement(x,null),r.createElement(S,null),r.createElement(E.A,{tag:k.Cy,locale:e}),r.createElement(m.A,null,n.map((function(e,t){return r.createElement("meta",(0,p.A)({key:t},e))}))))}var A=new Map;function C(e){if(A.has(e.pathname))return Object.assign({},e,{pathname:A.get(e.pathname)});if((0,d.u)(u.A,e.pathname).some((function(e){return!0===e.route.exact})))return A.set(e.pathname,e.pathname),e;var t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),Object.assign({},e,{pathname:t})}var _=n(6125),P=n(6988),R=n(7387);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/{"use strict";n.d(t,{o:()=>c,l:()=>d});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-D2TYZDQ4ZW"],"anonymizeIP":false,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"getting-started/what-is-gns3","docs":[{"id":"contribute/contribute-to-gns3","path":"/docs/contribute/contribute-to-gns3","sidebar":"someSidebar"},{"id":"contribute/development-of-gns3","path":"/docs/contribute/development-of-gns3","sidebar":"someSidebar"},{"id":"contribute/how-to-debug-web-ui-guide","path":"/docs/contribute/how-to-debug-web-ui-guide","sidebar":"someSidebar"},{"id":"docusaurus-reference/doc1","path":"/docs/docusaurus-reference/doc1"},{"id":"docusaurus-reference/doc2","path":"/docs/docusaurus-reference/doc2"},{"id":"docusaurus-reference/doc3","path":"/docs/docusaurus-reference/doc3"},{"id":"docusaurus-reference/mdx","path":"/docs/docusaurus-reference/mdx"},{"id":"emulators/adding-vmware-vms-to-gns3-topologies","path":"/docs/emulators/adding-vmware-vms-to-gns3-topologies","sidebar":"someSidebar"},{"id":"emulators/cisco-ios-images-for-dynamips","path":"/docs/emulators/cisco-ios-images-for-dynamips","sidebar":"someSidebar"},{"id":"emulators/create-a-docker-container-for-gns3","path":"/docs/emulators/create-a-docker-container-for-gns3","sidebar":"someSidebar"},{"id":"emulators/docker-support-in-gns3","path":"/docs/emulators/docker-support-in-gns3","sidebar":"someSidebar"},{"id":"emulators/non-native-iou-for-windows-and-osx","path":"/docs/emulators/non-native-iou-for-windows-and-osx","sidebar":"someSidebar"},{"id":"emulators/qemu-system-uuid","path":"/docs/emulators/qemu-system-uuid","sidebar":"someSidebar"},{"id":"emulators/vpcs","path":"/docs/emulators/vpcs","sidebar":"someSidebar"},{"id":"emulators/which-emulators-should-i-use","path":"/docs/emulators/which-emulators-should-i-use","sidebar":"someSidebar"},{"id":"getting-started/installation/download-32-bit","path":"/docs/getting-started/installation/download-32-bit","sidebar":"someSidebar"},{"id":"getting-started/installation/download-gns3-vm","path":"/docs/getting-started/installation/download-gns3-vm","sidebar":"someSidebar"},{"id":"getting-started/installation/esxi","path":"/docs/getting-started/installation/esxi","sidebar":"someSidebar"},{"id":"getting-started/installation/gns3-on-equinix","path":"/docs/getting-started/installation/gns3-on-equinix","sidebar":"someSidebar"},{"id":"getting-started/installation/linux","path":"/docs/getting-started/installation/linux","sidebar":"someSidebar"},{"id":"getting-started/installation/mac","path":"/docs/getting-started/installation/mac","sidebar":"someSidebar"},{"id":"getting-started/installation/one-server-multiple-clients","path":"/docs/getting-started/installation/one-server-multiple-clients","sidebar":"someSidebar"},{"id":"getting-started/installation/remote-server","path":"/docs/getting-started/installation/remote-server","sidebar":"someSidebar"},{"id":"getting-started/installation/upgrade-gns3","path":"/docs/getting-started/installation/upgrade-gns3","sidebar":"someSidebar"},{"id":"getting-started/installation/windows","path":"/docs/getting-started/installation/windows","sidebar":"someSidebar"},{"id":"getting-started/setup-wizard-gns3-vm","path":"/docs/getting-started/setup-wizard-gns3-vm","sidebar":"someSidebar"},{"id":"getting-started/setup-wizard-local-server","path":"/docs/getting-started/setup-wizard-local-server","sidebar":"someSidebar"},{"id":"getting-started/what-is-gns3","path":"/docs/","sidebar":"someSidebar"},{"id":"getting-started/your-first-cisco-topology","path":"/docs/getting-started/your-first-cisco-topology","sidebar":"someSidebar"},{"id":"getting-started/your-first-gns3-topology","path":"/docs/getting-started/your-first-gns3-topology","sidebar":"someSidebar"},{"id":"how-to-guides/cisco-asa","path":"/docs/how-to-guides/cisco-asa","sidebar":"someSidebar"},{"id":"how-to-guides/configure-gns3-to-use-an-additional-remote-server","path":"/docs/how-to-guides/configure-gns3-to-use-an-additional-remote-server","sidebar":"someSidebar"},{"id":"how-to-guides/how-to-use-console-applications-with-the-web-ui","path":"/docs/how-to-guides/how-to-use-console-applications-with-the-web-ui","sidebar":"someSidebar"},{"id":"how-to-guides/importing-vmx-and-vqfx-into-gns3","path":"/docs/how-to-guides/importing-vmx-and-vqfx-into-gns3","sidebar":"someSidebar"},{"id":"troubleshooting-faq/general-faq","path":"/docs/troubleshooting-faq/general-faq","sidebar":"someSidebar"},{"id":"troubleshooting-faq/troubleshoot-gns3","path":"/docs/troubleshooting-faq/troubleshoot-gns3","sidebar":"someSidebar"},{"id":"troubleshooting-faq/where-do-i-get-ios-images","path":"/docs/troubleshooting-faq/where-do-i-get-ios-images","sidebar":"someSidebar"},{"id":"using-gns3/administration/client-server-ssl-encryption","path":"/docs/using-gns3/administration/client-server-ssl-encryption","sidebar":"someSidebar"},{"id":"using-gns3/administration/gns3-security","path":"/docs/using-gns3/administration/gns3-security","sidebar":"someSidebar"},{"id":"using-gns3/administration/gns3-server-configuration-file","path":"/docs/using-gns3/administration/gns3-server-configuration-file","sidebar":"someSidebar"},{"id":"using-gns3/administration/running-gns3-server-as-daemon","path":"/docs/using-gns3/administration/running-gns3-server-as-daemon","sidebar":"someSidebar"},{"id":"using-gns3/administration/scale-gns3","path":"/docs/using-gns3/administration/scale-gns3","sidebar":"someSidebar"},{"id":"using-gns3/advanced/configuration-transfer-qemu-vms","path":"/docs/using-gns3/advanced/configuration-transfer-qemu-vms","sidebar":"someSidebar"},{"id":"using-gns3/advanced/connect-gns3-internet","path":"/docs/using-gns3/advanced/connect-gns3-internet","sidebar":"someSidebar"},{"id":"using-gns3/advanced/create-a-new-version-for-an-appliance","path":"/docs/using-gns3/advanced/create-a-new-version-for-an-appliance","sidebar":"someSidebar"},{"id":"using-gns3/advanced/hubs-and-switches","path":"/docs/using-gns3/advanced/hubs-and-switches","sidebar":"someSidebar"},{"id":"using-gns3/advanced/move-from-iouvm-gns3-vm","path":"/docs/using-gns3/advanced/move-from-iouvm-gns3-vm","sidebar":"someSidebar"},{"id":"using-gns3/advanced/port-name-formatting","path":"/docs/using-gns3/advanced/port-name-formatting","sidebar":"someSidebar"},{"id":"using-gns3/advanced/settings-profiles","path":"/docs/using-gns3/advanced/settings-profiles","sidebar":"someSidebar"},{"id":"using-gns3/advanced/special-ip-addresses","path":"/docs/using-gns3/advanced/special-ip-addresses","sidebar":"someSidebar"},{"id":"using-gns3/advanced/the-nat-node","path":"/docs/using-gns3/advanced/the-nat-node","sidebar":"someSidebar"},{"id":"using-gns3/beginners/change-node-symbol","path":"/docs/using-gns3/beginners/change-node-symbol","sidebar":"someSidebar"},{"id":"using-gns3/beginners/gns3-styles","path":"/docs/using-gns3/beginners/gns3-styles","sidebar":"someSidebar"},{"id":"using-gns3/beginners/import-gns3-appliance","path":"/docs/using-gns3/beginners/import-gns3-appliance","sidebar":"someSidebar"},{"id":"using-gns3/beginners/install-from-marketplace","path":"/docs/using-gns3/beginners/install-from-marketplace","sidebar":"someSidebar"},{"id":"using-gns3/beginners/link-control","path":"/docs/using-gns3/beginners/link-control","sidebar":"someSidebar"},{"id":"using-gns3/beginners/switching-and-gns3","path":"/docs/using-gns3/beginners/switching-and-gns3","sidebar":"someSidebar"},{"id":"using-gns3/beginners/the-console-terminal","path":"/docs/using-gns3/beginners/the-console-terminal","sidebar":"someSidebar"},{"id":"using-gns3/beginners/the-gns3-gui","path":"/docs/using-gns3/beginners/the-gns3-gui","sidebar":"someSidebar"},{"id":"using-gns3/design/architecture","path":"/docs/using-gns3/design/architecture","sidebar":"someSidebar"},{"id":"using-gns3/design/why-gns3-uses-uuid","path":"/docs/using-gns3/design/why-gns3-uses-uuid","sidebar":"someSidebar"}],"draftIds":[],"sidebars":{"someSidebar":{"link":{"path":"/docs/","label":"getting-started/what-is-gns3"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"1.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.1"}}}');var u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){var t=e.children;return r.createElement(c.Provider,{value:u},t)}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(7387),a=n(6540),o=n(8193),i=n(5260),l=n(440),s=n(8511);function u(e){var t=e.error,n=e.tryAgain;return a.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},a.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),a.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),a.createElement(c,{error:t}))}function c(e){var t=e.error,n=(0,l.getErrorCausalChain)(t).map((function(e){return e.message})).join("\n\nCause:\n");return a.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function d(e){var t=e.error,n=e.tryAgain;return a.createElement(p,{fallback:function(){return a.createElement(u,{error:t,tryAgain:n})}},a.createElement(i.A,null,a.createElement("title",null,"Page Error")),a.createElement(s.A,null,a.createElement(u,{error:t,tryAgain:n})))}var f=function(e){return a.createElement(d,e)},p=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){o.A.canUseDOM&&this.setState({error:e})},n.render=function(){var e=this,t=this.props.children,n=this.state.error;if(n){var r,a={error:n,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:f)(a)}return null!=t?t:null},t}(a.Component)},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document;const a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(545);function o(e){return r.createElement(a.mg,e)}},5489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(8168),a=n(8587),o=n(6540),i=n(4625),l=n(440),s=n(4586),u=n(6654),c=n(8193),d=o.createContext({collectLink:function(){}});var f=n(6025),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m,g=e.isNavLink,h=e.to,v=e.href,b=e.activeClassName,y=e.isActive,w=e["data-noBrokenLinkCheck"],k=e.autoAddBaseUrl,E=void 0===k||k,S=(0,a.A)(e,p),x=(0,s.A)().siteConfig,T=x.trailingSlash,A=x.baseUrl,C=(0,f.h)().withBaseUrl,_=(0,o.useContext)(d),P=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,(function(){return P.current}));var R=h||v;var N,O=(0,u.A)(R),L=null==R?void 0:R.replace("pathname://",""),I=void 0!==L?(N=L,E&&function(e){return e.startsWith("/")}(N)?C(N):N):void 0;I&&O&&(I=(0,l.applyTrailingSlash)(I,{trailingSlash:T,baseUrl:A}));var D=(0,o.useRef)(!1),M=g?i.k2:i.N_,F=c.A.canUseIntersectionObserver,B=(0,o.useRef)(),j=function(){D.current||null==I||(window.docusaurus.preload(I),D.current=!0)};(0,o.useEffect)((function(){return!F&&O&&null!=I&&window.docusaurus.prefetch(I),function(){F&&B.current&&B.current.disconnect()}}),[B,I,F,O]);var z=null!=(n=null==(m=I)?void 0:m.startsWith("#"))&&n,U=!I||!O||z;return U||w||_.collectLink(I),U?o.createElement("a",(0,r.A)({ref:P,href:I},R&&!O&&{target:"_blank",rel:"noopener noreferrer"},S)):o.createElement(M,(0,r.A)({},S,{onMouseEnter:j,onTouchStart:j,innerRef:function(e){P.current=e,F&&e&&O&&(B.current=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(B.current.unobserve(e),B.current.disconnect(),null!=I&&window.docusaurus.prefetch(I))}))})),B.current.observe(e))},to:I},g&&{isActive:y,activeClassName:b}))}const g=o.forwardRef(m)},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>s,T:()=>l});var r=n(6540);function a(e,t){var n=e.split(/(\{\w+\})/).map((function(e,n){if(n%2==1){var r=null==t?void 0:t[e.slice(1,-1)];if(void 0!==r)return r}return e}));return n.some((function(e){return(0,r.isValidElement)(e)}))?n.map((function(e,t){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e})).filter((function(e){return""!==e})):n.join("")}var o=n(2654);function i(e){var t,n,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=o[null!=r?r:a])?n:a)?t:r}function l(e,t){return a(i({message:e.message,id:e.id}),t)}function s(e){var t=e.children,n=e.id,o=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});var r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,h:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.url,i=(0,r.useCallback)((function(e,r){return function(e,t,n,r){var a=void 0===r?{}:r,i=a.forcePrependBaseUrl,l=void 0!==i&&i,s=a.absolute,u=void 0!==s&&s;if(!n||n.startsWith("#")||(0,o.z)(n))return n;if(l)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;var c=n.startsWith(t)?n:t+n.replace(/^\//,"");return u?e+c:c}(n,t,e,r)}),[n,t]);return{withBaseUrl:i}}function l(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});function r(e){var t={};return function e(n,r){Object.entries(n).forEach((function(n){var a,o=n[0],i=n[1],l=r?r+"."+o:o;"object"==typeof(a=i)&&a&&Object.keys(a).length>0?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>o,o:()=>a});var r=n(6540),a=r.createContext(null);function o(e){var t=e.children,n=e.value,o=r.useContext(a),i=(0,r.useMemo)((function(){return function(e){var t=e.parent,n=e.value;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}var r=Object.assign({},t.data,null==n?void 0:n.data);return{plugin:t.plugin,data:r}}({parent:o,value:n})}),[o,n]);return r.createElement(a.Provider,{value:i},t)}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>v,vT:()=>p,gk:()=>m,Gy:()=>d,HW:()=>b,ht:()=>f,r7:()=>h,jh:()=>g});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});var n=(0,a.A)().globalData[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}var l=function(e){return e.versions.find((function(e){return e.isLast}))};function s(e,t){var n=l(e);return[].concat(e.versions.filter((function(e){return e!==n})),[n]).find((function(e){return!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})}))}function u(e,t){var n,a,o=s(e,t),i=null==o?void 0:o.docs.find((function(e){return!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(n=i.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===n&&(a[e.name]=t)}))})),a):{}}}var c={},d=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:c},f=function(e){return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});var r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0})};function p(e){return void 0===e&&(e={}),function(e,t,n){void 0===n&&(n={});var a=Object.entries(e).sort((function(e,t){return t[1].path.localeCompare(e[1].path)})).find((function(e){var n=e[1];return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return o}(d(),(0,r.zy)().pathname,e)}function m(e){void 0===e&&(e={});var t=p(e),n=(0,r.zy)().pathname;if(t)return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function g(e){return f(e).versions}function h(e){var t=f(e);return l(t)}function v(e){return u(f(e),(0,r.zy)().pathname)}function b(e){return function(e,t){var n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(f(e),(0,r.zy)().pathname)}},1911:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate:function(e){var t=e.location,n=e.previousLocation;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((function(){window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var t=e.location,n=e.previousLocation;if(n&&t.pathname!==n.pathname){var r=window.setTimeout((function(){a().start()}),200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},6134:(e,t,n)=>{"use strict";var r,a,o=n(1258),i=n(4784);r=o.A,a=i.default.themeConfig.prism.additionalLanguages,globalThis.Prism=r,a.forEach((function(e){n(8692)("./prism-"+e)})),delete globalThis.Prism},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const a="iconExternalLink_nPIU";function o(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,i=void 0===o?13.5:o;return r.createElement("svg",{width:n,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},8511:(e,t,n)=>{"use strict";n.d(t,{A:()=>Jt});var r=n(6540),a=n(870),o=n(7489),i=n(9024),l=n(8168),s=n(6347),u=n(1312),c=n(5062),d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){var e=(0,r.useRef)(null),t=(0,s.W6)().action,n=(0,r.useCallback)((function(e){e.preventDefault();var t,n=null!=(t=document.querySelector("main:first-of-type"))?t:document.getElementById(d);n&&f(n)}),[]);return(0,c.$)((function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}var m=(0,u.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){var t,n=null!=(t=e.children)?t:m,a=p(),o=a.containerRef,i=a.onClick;return r.createElement("div",{ref:o,role:"region","aria-label":m},r.createElement("a",(0,l.A)({},e,{href:"#"+d,onClick:i}),n))}var h=n(7559),v=n(4090);const b="skipToContent_fXgn";function y(){return r.createElement(g,{className:b})}var w=n(6342),k=n(5041),E=n(8587),S=["width","height","color","strokeWidth","className"];function x(e){var t=e.width,n=void 0===t?21:t,a=e.height,o=void 0===a?21:a,i=e.color,s=void 0===i?"currentColor":i,u=e.strokeWidth,c=void 0===u?1.2:u,d=(e.className,(0,E.A)(e,S));return r.createElement("svg",(0,l.A)({viewBox:"0 0 15 15",width:n,height:o},d),r.createElement("g",{stroke:s,strokeWidth:c},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const T="closeButton_CVFx";function A(e){return r.createElement("button",(0,l.A)({type:"button","aria-label":(0,u.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.A)("clean-btn close",T,e.className)}),r.createElement(x,{width:14,height:14,strokeWidth:3.1}))}const C="content_knG7";function _(e){var t=(0,w.p)().announcementBar.content;return r.createElement("div",(0,l.A)({},e,{className:(0,a.A)(C,e.className),dangerouslySetInnerHTML:{__html:t}}))}const P="announcementBar_mb4j",R="announcementBarPlaceholder_vyr4",N="announcementBarClose_gvF7",O="announcementBarContent_xLdY";function L(){var e=(0,w.p)().announcementBar,t=(0,k.Mj)(),n=t.isActive,a=t.close;if(!n)return null;var o=e.backgroundColor,i=e.textColor,l=e.isCloseable;return r.createElement("div",{className:P,style:{backgroundColor:o,color:i},role:"banner"},l&&r.createElement("div",{className:R}),r.createElement(_,{className:O}),l&&r.createElement(A,{onClick:a,className:N}))}var I=n(2069),D=n(3104);var M=n(3807),F=n(5600),B=r.createContext(null);function j(e){var t,n,a,o,i,l,s,u=e.children,c=(t=(0,I.M)(),n=(0,F.YL)(),a=(0,r.useState)(!1),o=a[0],i=a[1],l=null!==n.component,s=(0,M.ZC)(l),(0,r.useEffect)((function(){l&&!s&&i(!0)}),[l,s]),(0,r.useEffect)((function(){l?t.shown||i(!0):i(!1)}),[t.shown,l]),(0,r.useMemo)((function(){return[o,i]}),[o]));return r.createElement(B.Provider,{value:c},u)}function z(e){if(e.component){var t=e.component;return r.createElement(t,e.props)}}function U(){var e=(0,r.useContext)(B);if(!e)throw new M.dV("NavbarSecondaryMenuDisplayProvider");var t=e[0],n=e[1],a=(0,r.useCallback)((function(){return n(!1)}),[n]),o=(0,F.YL)();return(0,r.useMemo)((function(){return{shown:t,hide:a,content:z(o)}}),[a,o,t])}function q(e){var t=e.header,n=e.primaryMenu,o=e.secondaryMenu,i=U().shown;return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var G=n(5293),$=n(2303);function H(e){return r.createElement("svg",(0,l.A)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function V(e){return r.createElement("svg",(0,l.A)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const W={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function K(e){var t=e.className,n=e.buttonClassName,o=e.value,i=e.onChange,l=(0,$.A)(),s=(0,u.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.A)(W.toggle,t)},r.createElement("button",{className:(0,a.A)("clean-btn",W.toggleButton,!l&&W.toggleButtonDisabled,n),type:"button",onClick:function(){return i("dark"===o?"light":"dark")},disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(H,{className:(0,a.A)(W.toggleIcon,W.lightToggleIcon)}),r.createElement(V,{className:(0,a.A)(W.toggleIcon,W.darkToggleIcon)})))}const Q=r.memo(K),Y="darkNavbarColorModeToggle_X3D1";function X(e){var t=e.className,n=(0,w.p)().navbar.style,a=(0,w.p)().colorMode.disableSwitch,o=(0,G.G)(),i=o.colorMode,l=o.setColorMode;return a?null:r.createElement(Q,{className:t,buttonClassName:"dark"===n?Y:void 0,value:i,onChange:l})}var Z=n(3465);function J(){return r.createElement(Z.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function ee(){var e=(0,I.M)();return r.createElement("button",{type:"button","aria-label":(0,u.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:function(){return e.toggle()}},r.createElement(x,{color:"var(--ifm-color-emphasis-600)"}))}function te(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(J,null),r.createElement(X,{className:"margin-right--md"}),r.createElement(ee,null))}var ne=n(5489),re=n(6025),ae=n(6654),oe=n(1252),ie=n(3186),le=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function se(e){var t=e.activeBasePath,n=e.activeBaseRegex,a=e.to,o=e.href,i=e.label,s=e.html,u=e.isDropdownLink,c=e.prependBaseUrlToHref,d=(0,E.A)(e,le),f=(0,re.A)(a),p=(0,re.A)(t),m=(0,re.A)(o,{forcePrependBaseUrl:!0}),g=i&&o&&!(0,ae.A)(o),h=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,g&&r.createElement(ie.A,u&&{width:12,height:12}))};return o?r.createElement(ne.A,(0,l.A)({href:c?m:o},d,h)):r.createElement(ne.A,(0,l.A)({to:f,isNavLink:!0},(t||n)&&{isActive:function(e,t){return n?(0,oe.G)(n,t.pathname):t.pathname.startsWith(p)}},d,h))}var ue=["className","isDropdownItem"],ce=["className","isDropdownItem"],de=["mobile","position"];function fe(e){var t=e.className,n=e.isDropdownItem,o=void 0!==n&&n,i=(0,E.A)(e,ue),s=r.createElement(se,(0,l.A)({className:(0,a.A)(o?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:o},i));return o?r.createElement("li",null,s):s}function pe(e){var t=e.className,n=(e.isDropdownItem,(0,E.A)(e,ce));return r.createElement("li",{className:"menu__list-item"},r.createElement(se,(0,l.A)({className:(0,a.A)("menu__link",t)},n)))}function me(e){var t,n=e.mobile,a=void 0!==n&&n,o=(e.position,(0,E.A)(e,de)),i=a?pe:fe;return r.createElement(i,(0,l.A)({},o,{activeClassName:null!=(t=o.activeClassName)?t:a?"menu__link--active":"navbar__link--active"}))}var ge=n(1422),he=n(9169),ve=n(4586);var be=["items","position","className","onClick"],ye=["items","className","position","onClick"],we=["mobile"];function ke(e,t){return e.some((function(e){return function(e,t){return!!(0,he.ys)(e.to,t)||!!(0,oe.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function Ee(e){var t,n=e.items,o=e.position,i=e.className,s=(e.onClick,(0,E.A)(e,be)),u=(0,r.useRef)(null),c=(0,r.useState)(!1),d=c[0],f=c[1];return(0,r.useEffect)((function(){var e=function(e){u.current&&!u.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d})},r.createElement(se,(0,l.A)({"aria-haspopup":"true","aria-expanded":d,role:"button",href:s.to?void 0:"#",className:(0,a.A)("navbar__link",i)},s,{onClick:s.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),f(!d))}}),null!=(t=s.children)?t:s.label),r.createElement("ul",{className:"dropdown__menu"},n.map((function(e,t){return r.createElement(ut,(0,l.A)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))}))))}function Se(e){var t,n,o=e.items,i=e.className,u=(e.position,e.onClick),c=(0,E.A)(e,ye),d=(n=(0,ve.A)().siteConfig.baseUrl,(0,s.zy)().pathname.replace(n,"/")),f=ke(o,d),p=(0,ge.u)({initialState:function(){return!f}}),m=p.collapsed,g=p.toggleCollapsed,h=p.setCollapsed;return(0,r.useEffect)((function(){f&&h(!f)}),[d,f,h]),r.createElement("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":m})},r.createElement(se,(0,l.A)({role:"button",className:(0,a.A)("menu__link menu__link--sublist menu__link--sublist-caret",i)},c,{onClick:function(e){e.preventDefault(),g()}}),null!=(t=c.children)?t:c.label),r.createElement(ge.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:m},o.map((function(e,t){return r.createElement(ut,(0,l.A)({mobile:!0,isDropdownItem:!0,onClick:u,activeClassName:"menu__link--active"},e,{key:t}))}))))}function xe(e){var t=e.mobile,n=void 0!==t&&t,a=(0,E.A)(e,we),o=n?Se:Ee;return r.createElement(o,a)}var Te=n(2131),Ae=["width","height"];function Ce(e){var t=e.width,n=void 0===t?20:t,a=e.height,o=void 0===a?20:a,i=(0,E.A)(e,Ae);return r.createElement("svg",(0,l.A)({viewBox:"0 0 24 24",width:n,height:o,"aria-hidden":!0},i),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const _e="iconLanguage_nlXk";var Pe=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function Re(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var Ne=n(9188),Oe=["translations"];function Le(){return Le=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var Fe="Ctrl";var Be=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=Me(e,Oe),i=a.buttonText,l=void 0===i?"Search":i,s=a.buttonAriaLabel,u=void 0===s?"Search":s,c=Ie((0,r.useState)(null),2),d=c[0],f=c[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(Fe))}),[]),r.createElement("button",Le({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(Ne.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Fe?r.createElement(Re,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),je=n(5260),ze=n(4255),Ue=n(1062),qe=n(2967);var Ge=n(961);const $e={button:{buttonText:(0,u.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,u.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,u.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,u.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,u.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,u.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,u.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,u.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,u.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,u.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,u.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,u.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,u.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,u.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,u.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,u.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,u.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,u.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,u.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,u.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,u.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,u.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,u.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,u.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,u.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,u.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,u.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};var He=["contextualSearch","externalUrlRegex"],Ve=null;function We(e){var t=e.hit,n=e.children;return r.createElement(ne.A,{to:t.url},n)}function Ke(e){var t=e.state,n=e.onClose,a=(0,ze.w)();return r.createElement(ne.A,{to:a(t.query),onClick:n},r.createElement(u.A,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Qe(e){var t,a,o,i,u,c=e.contextualSearch,d=e.externalUrlRegex,f=(0,E.A)(e,He),p=(0,ve.A)().siteMetadata,m=(0,Ue.C)(),g=["language:"+(o=(0,qe.af)()).locale,o.tags.map((function(e){return"docusaurus_tag:"+e}))],h=null!=(t=null==(a=f.searchParameters)?void 0:a.facetFilters)?t:[],v=c?(i=h,[].concat((u=function(e){return"string"==typeof e?[e]:e})(g),u(i))):h,b=Object.assign({},f.searchParameters,{facetFilters:v}),y=(0,s.W6)(),w=(0,r.useRef)(null),k=(0,r.useRef)(null),S=(0,r.useState)(!1),x=S[0],T=S[1],A=(0,r.useState)(void 0),C=A[0],_=A[1],P=(0,r.useCallback)((function(){return Ve?Promise.resolve():Promise.all([n.e(9462).then(n.bind(n,9462)),Promise.all([n.e(1869),n.e(8913)]).then(n.bind(n,8913)),Promise.all([n.e(1869),n.e(416)]).then(n.bind(n,416))]).then((function(e){var t=e[0].DocSearchModal;Ve=t}))}),[]),R=(0,r.useCallback)((function(){P().then((function(){w.current=document.createElement("div"),document.body.insertBefore(w.current,document.body.firstChild),T(!0)}))}),[P,T]),N=(0,r.useCallback)((function(){var e;T(!1),null==(e=w.current)||e.remove()}),[T]),O=(0,r.useCallback)((function(e){P().then((function(){T(!0),_(e.key)}))}),[P,T,_]),L=(0,r.useRef)({navigate:function(e){var t=e.itemUrl;(0,oe.G)(d,t)?window.location.href=t:y.push(t)}}).current,I=(0,r.useRef)((function(e){return f.transformItems?f.transformItems(e):e.map((function(e){return Object.assign({},e,{url:m(e.url)})}))})).current,D=(0,r.useMemo)((function(){return function(e){return r.createElement(Ke,(0,l.A)({},e,{onClose:N}))}}),[N]),M=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",p.docusaurusVersion),e}),[p.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:x,onOpen:R,onClose:N,onInput:O,searchButtonRef:k}),r.createElement(r.Fragment,null,r.createElement(je.A,null,r.createElement("link",{rel:"preconnect",href:"https://"+f.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),r.createElement(Be,{onTouchStart:P,onFocus:P,onMouseOver:P,onClick:R,ref:k,translations:$e.button}),x&&Ve&&w.current&&(0,Ge.createPortal)(r.createElement(Ve,(0,l.A)({onClose:N,initialScrollY:window.scrollY,initialQuery:C,navigator:L,transformItems:I,hitComponent:We,transformSearchClient:M},f.searchPagePath&&{resultsFooterComponent:D},f,{searchParameters:b,placeholder:$e.placeholder,translations:$e.modal})),w.current))}function Ye(){var e=(0,ve.A)().siteConfig;return r.createElement(Qe,e.themeConfig.algolia)}const Xe="searchBox_ZlJk";function Ze(e){var t=e.children,n=e.className;return r.createElement("div",{className:(0,a.A)(n,Xe)},t)}var Je=n(4070),et=n(7460),tt=["docId","label","docsPluginId"];var nt=["sidebarId","label","docsPluginId"];var rt=["label","to","docsPluginId"];var at=n(5597),ot=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],it=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};const lt={default:me,localeDropdown:function(e){var t=e.mobile,n=e.dropdownItemsBefore,a=e.dropdownItemsAfter,o=(0,E.A)(e,Pe),i=(0,ve.A)().i18n,c=i.currentLocale,d=i.locales,f=i.localeConfigs,p=(0,Te.o)(),m=(0,s.zy)(),g=m.search,h=m.hash,v=d.map((function(e){var n=""+("pathname://"+p.createUrl({locale:e,fullyQualified:!1}))+g+h;return{label:f[e].label,lang:f[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===c?t?"menu__link--active":"dropdown__link--active":""}})),b=[].concat(n,v,a),y=t?(0,u.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):f[c].label;return r.createElement(xe,(0,l.A)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(Ce,{className:_e}),y),items:b}))},search:function(e){var t=e.mobile,n=e.className;return t?null:r.createElement(Ze,{className:n},r.createElement(Ye,null))},dropdown:xe,html:function(e){var t=e.value,n=e.className,o=e.mobile,i=void 0!==o&&o,l=e.isDropdownItem,s=void 0!==l&&l,u=s?"li":"div";return r.createElement(u,{className:(0,a.A)({navbar__item:!i&&!s,"menu__list-item":i},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){var t=e.docId,n=e.label,a=e.docsPluginId,o=(0,E.A)(e,tt),i=(0,Je.zK)(a).activeDoc,s=(0,et.QB)(t,a);return null===s?null:r.createElement(me,(0,l.A)({exact:!0},o,{isActive:function(){return(null==i?void 0:i.path)===s.path||!(null==i||!i.sidebar)&&i.sidebar===s.sidebar},label:null!=n?n:s.id,to:s.path}))},docSidebar:function(e){var t=e.sidebarId,n=e.label,a=e.docsPluginId,o=(0,E.A)(e,nt),i=(0,Je.zK)(a).activeDoc,s=(0,et.fW)(t,a).link;if(!s)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return r.createElement(me,(0,l.A)({exact:!0},o,{isActive:function(){return(null==i?void 0:i.sidebar)===t},label:null!=n?n:s.label,to:s.path}))},docsVersion:function(e){var t=e.label,n=e.to,a=e.docsPluginId,o=(0,E.A)(e,rt),i=(0,et.Vd)(a)[0],s=null!=t?t:i.label,u=null!=n?n:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(i).path;return r.createElement(me,(0,l.A)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){var t=e.mobile,n=e.docsPluginId,a=e.dropdownActiveClassDisabled,o=e.dropdownItemsBefore,i=e.dropdownItemsAfter,c=(0,E.A)(e,ot),d=(0,s.zy)(),f=d.search,p=d.hash,m=(0,Je.zK)(n),g=(0,Je.jh)(n),h=(0,at.g1)(n).savePreferredVersionName,v=g.map((function(e){var t,n=null!=(t=m.alternateDocVersions[e.name])?t:it(e);return{label:e.label,to:""+n.path+f+p,isActive:function(){return e===m.activeVersion},onClick:function(){return h(e.name)}}})),b=[].concat(o,v,i),y=(0,et.Vd)(n)[0],w=t&&b.length>1?(0,u.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):y.label,k=t&&b.length>1?void 0:it(y).path;return b.length<=1?r.createElement(me,(0,l.A)({},c,{mobile:t,label:w,to:k,isActive:a?function(){return!1}:void 0})):r.createElement(xe,(0,l.A)({},c,{mobile:t,label:w,to:k,items:b,isActive:a?function(){return!1}:void 0}))}};var st=["type"];function ut(e){var t=e.type,n=(0,E.A)(e,st),a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=lt[a];if(!o)throw new Error('No NavbarItem component found for type "'+t+'".');return r.createElement(o,n)}function ct(){var e=(0,I.M)(),t=(0,w.p)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map((function(t,n){return r.createElement(ut,(0,l.A)({mobile:!0},t,{onClick:function(){return e.toggle()},key:n}))})))}function dt(e){return r.createElement("button",(0,l.A)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function ft(){var e=0===(0,w.p)().navbar.items.length,t=U();return r.createElement(r.Fragment,null,!e&&r.createElement(dt,{onClick:function(){return t.hide()}}),t.content)}function pt(){var e,t=(0,I.M)();return void 0===(e=t.shown)&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e]),t.shouldRender?r.createElement(q,{header:r.createElement(te,null),primaryMenu:r.createElement(ct,null),secondaryMenu:r.createElement(ft,null)}):null}const mt="navbarHideable_m1mJ",gt="navbarHidden_jGov";function ht(e){return r.createElement("div",(0,l.A)({role:"presentation"},e,{className:(0,a.A)("navbar-sidebar__backdrop",e.className)}))}function vt(e){var t=e.children,n=(0,w.p)().navbar,o=n.hideOnScroll,i=n.style,l=(0,I.M)(),s=function(e){var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),l=(0,r.useCallback)((function(e){null!==e&&(i.current=e.getBoundingClientRect().height)}),[]);return(0,D.Mq)((function(t,n){var r=t.scrollY;if(e)if(r=l?a(!1):r+u0&&r.createElement(zt,{links:n}),logo:a&&r.createElement($t,{logo:a}),copyright:t&&r.createElement(Ht,{copyright:t})})}const Kt=r.memo(Wt);var Qt=(0,M.fM)([G.a,k.oq,D.Tv,at.VQ,i.Jx,function(e){var t=e.children;return r.createElement(F.y_,null,r.createElement(I.e,null,r.createElement(j,null,t)))}]);function Yt(e){var t=e.children;return r.createElement(Qt,null,t)}function Xt(e){var t=e.error,n=e.tryAgain;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(kt,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Et,{error:t})))))}const Zt="mainWrapper_z2l0";function Jt(e){var t=e.children,n=e.noFooter,l=e.wrapperClassName,s=e.title,u=e.description;return(0,v.J)(),r.createElement(Yt,null,r.createElement(i.be,{title:s,description:u}),r.createElement(y,null),r.createElement(L,null),r.createElement(Nt,null),r.createElement("div",{id:d,className:(0,a.A)(h.G.wrapper.main,Zt,l)},r.createElement(o.A,{fallback:function(e){return r.createElement(Xt,e)}},t)),!n&&r.createElement(Kt,null))}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(8168),a=n(8587),o=n(6540),i=n(5489),l=n(6025),s=n(4586),u=n(6342),c=n(1653),d=["imageClassName","titleClassName"];function f(e){var t=e.logo,n=e.alt,r=e.imageClassName,a={light:(0,l.A)(t.src),dark:(0,l.A)(t.srcDark||t.src)},i=o.createElement(c.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?o.createElement("div",{className:r},i):i}function p(e){var t,n=(0,s.A)().siteConfig.title,c=(0,u.p)().navbar,p=c.title,m=c.logo,g=e.imageClassName,h=e.titleClassName,v=(0,a.A)(e,d),b=(0,l.A)((null==m?void 0:m.href)||"/"),y=p?"":n,w=null!=(t=null==m?void 0:m.alt)?t:y;return o.createElement(i.A,(0,r.A)({to:b},v,(null==m?void 0:m.target)&&{target:m.target}),m&&o.createElement(f,{logo:m,alt:w,imageClassName:g}),null!=p&&o.createElement("b",{className:h},p))}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(5260);function o(e){var t=e.locale,n=e.version,o=e.tag,i=t;return r.createElement(a.A,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},1653:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var r=n(8168),a=n(8587),o=n(6540),i=n(870),l=n(2303),s=n(5293);const u={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};var c=["sources","className","alt"];function d(e){var t=(0,l.A)(),n=(0,s.G)().colorMode,d=e.sources,f=e.className,p=e.alt,m=(0,a.A)(e,c),g=t?"dark"===n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,g.map((function(e){return o.createElement("img",(0,r.A)({key:e,src:d[e],alt:p,className:(0,i.A)(u.themedImage,u["themedImage--"+e],f)},m))})))}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>c});var r=n(8168),a=n(8587),o=n(6540),i=n(8193),l=n(3109),s=["collapsed"],u=["lazy"];function c(e){var t=e.initialState,n=(0,o.useState)(null!=t&&t),r=n[0],a=n[1],i=(0,o.useCallback)((function(){a((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:a,toggleCollapsed:i}}var d={display:"none",overflow:"hidden",height:"0px"},f={display:"block",overflow:"visible",height:"auto"};function p(e,t){var n=t?d:f;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function m(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,a=(0,o.useRef)(!1);(0,o.useEffect)((function(){var e,o=t.current;function i(){var e,t,n=o.scrollHeight,a=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,l.O)())return 1;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+a+"ms "+(null!=(t=null==r?void 0:r.easing)?t:"ease-in-out"),height:n+"px"}}function s(){var e=i();o.style.transition=e.transition,o.style.height=e.height}if(!a.current)return p(o,n),void(a.current=!0);return o.style.willChange="height",e=requestAnimationFrame((function(){n?(s(),requestAnimationFrame((function(){o.style.height=d.height,o.style.overflow=d.overflow}))):(o.style.display="block",requestAnimationFrame((function(){s()})))})),function(){return cancelAnimationFrame(e)}}),[t,n,r])}function g(e){if(!i.A.canUseDOM)return e?d:f}function h(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,a=e.children,i=e.animation,l=e.onCollapseTransitionEnd,s=e.className,u=e.disableSSRStyle,c=(0,o.useRef)(null);return m({collapsibleRef:c,collapsed:r,animation:i}),o.createElement(n,{ref:c,style:u?void 0:g(r),onTransitionEnd:function(e){"height"===e.propertyName&&(p(c.current,r),null==l||l(r))},className:s},a)}function v(e){var t=e.collapsed,n=(0,a.A)(e,s),i=(0,o.useState)(!t),l=i[0],u=i[1],c=(0,o.useState)(t),d=c[0],f=c[1];return(0,o.useLayoutEffect)((function(){t||u(!0)}),[t]),(0,o.useLayoutEffect)((function(){l&&f(t)}),[l,t]),l?o.createElement(h,(0,r.A)({},n,{collapsed:d})):null}function b(e){var t=e.lazy,n=(0,a.A)(e,u),r=t?v:h;return o.createElement(r,n)}},5041:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>m,oq:()=>p});var r=n(6540),a=n(2303),o=n(9466),i=n(3807),l=n(6342),s=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),c=function(){return"true"===s.get()},d=function(e){return s.set(String(e))},f=r.createContext(null);function p(e){var t=e.children,n=function(){var e=(0,l.p)().announcementBar,t=(0,a.A)(),n=(0,r.useState)((function(){return!!t&&c()})),o=n[0],i=n[1];(0,r.useEffect)((function(){i(c())}),[]);var s=(0,r.useCallback)((function(){d(!0),i(!0)}),[]);return(0,r.useEffect)((function(){if(e){var t=e.id,n=u.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;u.set(t),r&&d(!1),!r&&c()||i(!1)}}),[e]),(0,r.useMemo)((function(){return{isActive:!!e&&!o,close:s}}),[e,o,s])}();return r.createElement(f.Provider,{value:n},t)}function m(){var e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>h,a:()=>g});var r=n(6540),a=n(8193),o=n(3807),i=n(9466),l=n(6342),s=r.createContext(void 0),u="theme",c=(0,i.Wf)(u),d="light",f="dark",p=function(e){return e===f?f:d};function m(){var e=(0,l.p)().colorMode,t=e.defaultMode,n=e.disableSwitch,o=e.respectPrefersColorScheme,i=(0,r.useState)(function(e){return a.A.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e)}(t)),s=i[0],m=i[1];(0,r.useEffect)((function(){n&&c.del()}),[n]);var g=(0,r.useCallback)((function(e,n){void 0===n&&(n={});var r=n.persist,a=void 0===r||r;e?(m(e),a&&function(e){c.set(p(e))}(e)):(m(o?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:t),c.del())}),[o,t]);(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",p(s))}),[s]),(0,r.useEffect)((function(){if(!n){var e=function(e){if(e.key===u){var t=c.get();null!==t&&g(p(t))}};return window.addEventListener("storage",e),function(){return window.removeEventListener("storage",e)}}}),[n,g]);var h=(0,r.useRef)(!1);return(0,r.useEffect)((function(){if(!n||o){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=function(){window.matchMedia("print").matches||h.current?h.current=window.matchMedia("print").matches:g(null)};return e.addListener(t),function(){return e.removeListener(t)}}}),[g,n,o]),(0,r.useMemo)((function(){return{colorMode:s,setColorMode:g,get isDarkTheme(){return s===f},setLightTheme:function(){g(d)},setDarkTheme:function(){g(f)}}}),[s,g])}function g(e){var t=e.children,n=m();return r.createElement(s.Provider,{value:n},t)}function h(){var e=(0,r.useContext)(s);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>v,XK:()=>w,g1:()=>y});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),l=n(7460),s=n(3807),u=n(9466),c=function(e){return"docs-preferred-version-"+e},d=function(e,t,n){(0,u.Wf)(c(e),{persistence:t}).set(n)},f=function(e,t){return(0,u.Wf)(c(e),{persistence:t}).get()},p=function(e,t){(0,u.Wf)(c(e),{persistence:t}).del()};var m=r.createContext(null);function g(){var e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((function(){return Object.keys(e)}),[e]),o=(0,r.useState)((function(){return function(e){return Object.fromEntries(e.map((function(e){return[e,{preferredVersionName:null}]})))}(n)})),l=o[0],s=o[1];return(0,r.useEffect)((function(){s(function(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(t.map((function(e){return[e,(t=e,a=f(t,n),r[t].versions.some((function(e){return e.name===a}))?{preferredVersionName:a}:(p(t,n),{preferredVersionName:null}))];var t,a})))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[l,(0,r.useMemo)((function(){return{savePreferredVersion:function(e,n){d(e,t,n),s((function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))}))}}}),[t])]}function h(e){var t=e.children,n=g();return r.createElement(m.Provider,{value:n},t)}function v(e){var t=e.children;return l.C5?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){var e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function y(e){var t;void 0===e&&(e=o.W);var n=(0,a.ht)(e),i=b(),l=i[0],s=i[1],u=l[e].preferredVersionName;return{preferredVersion:null!=(t=n.versions.find((function(e){return e.name===u})))?t:null,savePreferredVersionName:(0,r.useCallback)((function(t){s.savePreferredVersion(e,t)}),[s,e])}}function w(){var e=(0,a.Gy)(),t=b()[0];var n=Object.keys(e);return Object.fromEntries(n.map((function(n){return[n,(r=n,o=e[r],i=t[r].preferredVersionName,null!=(a=o.versions.find((function(e){return e.name===i})))?a:null)];var r,a,o,i})))}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,t:()=>s});var r=n(6540),a=n(3807),o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){var t=e.children,n=e.name,a=e.items,o=(0,r.useMemo)((function(){return n&&a?{name:n,items:a}:null}),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){var e=(0,r.useContext)(i);if(e===o)throw new a.dV("DocsSidebarProvider");return e}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>d});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(3807),u=r.createContext(void 0);function c(){var e,t=(e=(0,a.YL)(),0===(0,l.p)().navbar.items.length&&!e.component),n=(0,o.l)(),s=!t&&"mobile"===n,u=(0,r.useState)(!1),c=u[0],d=u[1];(0,i.$Z)((function(){if(c)return d(!1),!1}));var f=(0,r.useCallback)((function(){d((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===n&&d(!1)}),[n]),(0,r.useMemo)((function(){return{disabled:t,shouldRender:s,toggle:f,shown:c}}),[t,s,f,c])}function d(e){var t=e.children,n=c();return r.createElement(u.Provider,{value:n},t)}function f(){var e=r.useContext(u);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>s,YL:()=>l,y_:()=>i});var r=n(6540),a=n(3807),o=r.createContext(null);function i(e){var t=e.children,n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){var e=(0,r.useContext)(o);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){var t=e.component,n=e.props,i=(0,r.useContext)(o);if(!i)throw new a.dV("NavbarSecondaryMenuContentProvider");var l=i[1],s=(0,a.Be)(n);return(0,r.useEffect)((function(){l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((function(){return function(){return l({component:null,props:null})}}),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540),a="navigation-with-keyboard";function o(){(0,r.useEffect)((function(){function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),function(){document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4255:(e,t,n)=>{"use strict";n.d(t,{b:()=>i,w:()=>l});var r=n(6540),a=n(4586),o=n(7485);function i(){return(0,o.l)("q")}function l(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.themeConfig.algolia.searchPagePath;return(0,r.useCallback)((function(e){return""+t+n+"?q="+encodeURIComponent(e)}),[t,n])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>u});var r=n(6540),a=n(8193),o="desktop",i="mobile",l="ssr";function s(){return a.A.canUseDOM?window.innerWidth>996?o:i:l}function u(){var e=(0,r.useState)((function(){return s()})),t=e[0],n=e[1];return(0,r.useEffect)((function(){function e(){n(s())}return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),t}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:function(e){return"theme-admonition-"+e}},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},7460:(e,t,n)=>{"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{_o:()=>m,w8:()=>h,C5:()=>p,mz:()=>E,Vd:()=>y,QB:()=>k,fW:()=>w,OF:()=>b});var o=n(6540),i=n(6347),l=n(2831),s=n(4070),u=n(5597),c=n(6588);function d(e){return Array.from(new Set(e))}var f=n(9169),p=!!s.Gy;function m(e){if(e.href)return e.href;for(var t,n=a(e.items);!(t=n()).done;){var r=t.value;if("link"===r.type)return r.href;if("category"===r.type){var o=m(r);if(o)return o}}}var g=function(e,t){return void 0!==e&&(0,f.ys)(e,t)};function h(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||function(e,t){return e.some((function(e){return h(e,t)}))}(e.items,t))}function v(e){var t=e.sidebarItems,n=e.pathname,r=e.onlyCategories,o=void 0!==r&&r,i=[];return function e(t){for(var r,l=a(t);!(r=l()).done;){var s=r.value;if("category"===s.type&&((0,f.ys)(s.href,n)||e(s.items))||"link"===s.type&&(0,f.ys)(s.href,n))return o&&"category"!==s.type||i.unshift(s),!0}return!1}(t),i}function b(){var e,t=(0,c.t)(),n=(0,i.zy)().pathname;return!1!==(null==(e=(0,s.vT)())?void 0:e.pluginData.breadcrumbs)&&t?v({sidebarItems:t.items,pathname:n}):null}function y(e){var t=(0,s.zK)(e).activeVersion,n=(0,u.g1)(e).preferredVersion,r=(0,s.r7)(e);return(0,o.useMemo)((function(){return d([t,n,r].filter(Boolean))}),[t,n,r])}function w(e,t){var n=y(t);return(0,o.useMemo)((function(){var t=n.flatMap((function(e){return e.sidebars?Object.entries(e.sidebars):[]})),r=t.find((function(t){return t[0]===e}));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map((function(e){return e[0]})).join("\n- "));return r[1]}),[e,n])}function k(e,t){var n=y(t);return(0,o.useMemo)((function(){var t=n.flatMap((function(e){return e.docs})),r=t.find((function(t){return t.id===e}));if(!r){if(n.flatMap((function(e){return e.draftIds})).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(n.length>1?"s":"")+' "'+n.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+d(t.map((function(e){return e.id}))).join("\n- "))}return r}),[e,n])}function E(e){var t=e.route,n=e.versionMetadata,r=(0,i.zy)(),a=t.routes,o=a.find((function(e){return(0,i.B6)(r.pathname,e)}));if(!o)return null;var s=o.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,l.v)(a),sidebarName:s,sidebarItems:u}}},481:(e,t,n)=>{"use strict";n.d(t,{s:()=>a});var r=n(4586);function a(e){var t=(0,r.A)().siteConfig,n=t.title,a=t.titleDelimiter;return null!=e&&e.trim().length?e.trim()+" "+a+" "+n:n}},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>l,l:()=>u});var r=n(6540),a=n(6347),o=n(9888),i=n(3807);function l(e){!function(e){var t=(0,a.W6)(),n=(0,i._q)(e);(0,r.useEffect)((function(){return t.block((function(e,t){return n(e,t)}))}),[t,n])}((function(t,n){if("POP"===n)return e(t,n)}))}function s(e){return t=function(t){return null===e?null:new URLSearchParams(t.location.search).get(e)},n=(0,a.W6)(),(0,o.useSyncExternalStore)(n.listen,(function(){return t(n)}),(function(){return t(n)}));var t,n}function u(e){var t,n,o=null!=(t=s(e))?t:"",i=(n=(0,a.W6)(),(0,r.useCallback)((function(e,t,r){var a=new URLSearchParams(n.location.search);t?a.set(e,t):a.delete(e),(null!=r&&r.push?n.push:n.replace)({search:a.toString()})}),[n]));return[o,(0,r.useCallback)((function(t,n){i(e,t,n)}),[i,e])]}},9024:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>c,Jx:()=>p});var r=n(6540),a=n(9423),o=n(5260),i=n(3102);function l(){var e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(6025),u=n(481);function c(e){var t=e.title,n=e.description,a=e.keywords,i=e.image,l=e.children,c=(0,u.s)(t),d=(0,s.h)().withBaseUrl,f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.A,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}var d=r.createContext(void 0);function f(e){var t=e.className,n=e.children,i=r.useContext(d),l=(0,a.A)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.A,null,r.createElement("html",{className:l})),n)}function p(e){var t=e.children,n=l(),o="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),i="plugin-id-"+n.plugin.id;return r.createElement(f,{className:(0,a.A)(o,i)},t)}},3807:(e,t,n)=>{"use strict";n.d(t,{dV:()=>m,fM:()=>h,_q:()=>f,ZC:()=>p,Be:()=>g});var r=n(8634),a=n(7387);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=n(3662);function l(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(l=function(){return!!e})()}function s(e,t,n){if(l())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&(0,i.A)(a,n.prototype),a}function u(e){var t="function"==typeof Map?new Map:void 0;return u=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return s(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),(0,i.A)(n,e)},u(e)}var c=n(6540),d=n(8193).A.canUseDOM?c.useLayoutEffect:c.useEffect;function f(e){var t=(0,c.useRef)(e);return d((function(){t.current=e}),[e]),(0,c.useCallback)((function(){return t.current.apply(t,arguments)}),[])}function p(e){var t=(0,c.useRef)();return d((function(){t.current=e})),t.current}var m=function(e){function t(t,n){var a,o,i,l,s;return(s=e.call(this)||this).name="ReactContextError",s.message="Hook "+(null!=(a=null==(o=s.stack)||null==(i=o.split("\n")[1])||null==(l=i.match((0,r.A)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:l.groups.name)?a:"")+" is called outside the <"+t+">. "+(null!=n?n:""),s}return(0,a.A)(t,e),t}(u(Error));function g(e){var t=Object.entries(e);return t.sort((function(e,t){return e[0].localeCompare(t[0])})),(0,c.useMemo)((function(){return e}),t.flat())}function h(e){return function(t){var n=t.children;return c.createElement(c.Fragment,null,e.reduceRight((function(e,t){return c.createElement(t,null,e)}),n))}}},1252:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){var n=function(e){var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){var e=(0,o.A)().siteConfig.baseUrl;return(0,r.useMemo)((function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap((function(e){var t;return null!=(t=e.routes)?t:[]})))}(e.routes)}({routes:a.A,baseUrl:e})}),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>d,Tv:()=>s,gk:()=>f});var r=n(6540),a=n(8193),o=n(2303),i=n(3807);var l=r.createContext(void 0);function s(e){var t,n=e.children,a=(t=(0,r.useRef)(!0),(0,r.useMemo)((function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}}),[]));return r.createElement(l.Provider,{value:a},n)}function u(){var e=(0,r.useContext)(l);if(null==e)throw new i.dV("ScrollControllerProvider");return e}var c=function(){return a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function d(e,t){void 0===t&&(t=[]);var n=u().scrollEventsEnabledRef,a=(0,r.useRef)(c()),o=(0,i._q)(e);(0,r.useEffect)((function(){var e=function(){if(n.current){var e=c();o(e,a.current),a.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}}),[o,n].concat(t))}function f(){var e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(n){e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(n):function(e){var t=null,n=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(n&&a>e||!n&&a{"use strict";n.d(t,{Cy:()=>i,af:()=>s,tU:()=>l});var r=n(4070),a=n(4586),o=n(5597),i="default";function l(e,t){return"docs-"+e+"-"+t}function s(){var e=(0,a.A)().i18n,t=(0,r.Gy)(),n=(0,r.gk)(),s=(0,o.XK)();var u=[i].concat(Object.keys(t).map((function(e){var r,a=(null==n?void 0:n.activePlugin.pluginId)===e?n.activeVersion:void 0,o=s[e],i=t[e].versions.find((function(e){return e.isLast}));return l(e,(null!=(r=null!=a?a:o)?r:i).name)})));return{locale:e.currentLocale,tags:u}}},9466:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>s});n(6540),n(9888);var r="localStorage";function a(e){var t=e.key,n=e.oldValue,r=e.newValue,a=e.storage;if(n!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}var i=!1;var l={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:t,set:t,del:t,listen:t}}(e);var n=o(null==t?void 0:t.persistence);return null===n?l:{get:function(){try{return n.getItem(e)}catch(t){return console.error("Docusaurus storage error, can't get key="+e,t),null}},set:function(t){try{var r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(o){console.error("Docusaurus storage error, can't set "+e+"="+t,o)}},del:function(){try{var t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(r){console.error("Docusaurus storage error, can't delete key="+e,r)}},listen:function(t){try{var r=function(r){r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),function(){return window.removeEventListener("storage",r)}}catch(a){return console.error("Docusaurus storage error, can't listen for changes of key="+e,a),function(){}}}}}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>o});var r=n(4586),a=n(6347);function o(){var e=(0,r.A)(),t=e.siteConfig,n=t.baseUrl,o=t.url,i=e.i18n,l=i.defaultLocale,s=i.currentLocale,u=(0,a.zy)().pathname,c=s===l?n:n.replace("/"+s+"/","/"),d=u.replace(n,"");return{createUrl:function(e){var t=e.locale;return""+(e.fullyQualified?o:"")+function(e){return e===l?""+c:""+c+e+"/"}(t)+d}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(3807);function i(e){var t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((function(){n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},8126:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},1062:(e,t,n)=>{"use strict";n.d(t,{C:()=>l});var r=n(6540),a=n(1252),o=n(6025),i=n(8126);function l(){var e=(0,o.h)().withBaseUrl,t=(0,i.c)().algolia,n=t.externalUrlRegex,l=t.replaceSearchResultPathname;return(0,r.useCallback)((function(t){var r=new URL(t);if((0,a.G)(n,r.href))return t;var o=""+(r.pathname+r.hash);return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(o,l))}),[e,n,l])}},2983:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var a,o=e.split(/[#?]/)[0],i="/"===o||o===r?o:(a=o,n?function(e){return e.endsWith("/")?e:e+"/"}(a):function(e){return e.endsWith("/")?e.slice(0,-1):e}(a));return e.replace(o,i)}},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t].concat(e(t.cause)):[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>A,yJ:()=>p,sC:()=>_,AO:()=>f});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8997);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5228:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(e),u=1;u{"use strict";n.d(t,{A:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var T,A=1;if(b){if(!(T=o(k,S,e,v))||T.index>=e.length)break;var C=T.index,_=T.index+T[0].length,P=S;for(P+=E.value.length;C>=P;)P+=(E=E.next).value.length;if(S=P-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(P<_||"string"==typeof R.value);R=R.next)A++,P+=R.value.length;A--,x=e.slice(S,P),T.index-=S}else if(!(T=o(k,0,x,v)))continue;C=T.index;var N=T[0],O=x.slice(0,C),L=x.slice(C+N.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(O&&(D=s(t,D,O),S+=O.length),u(t,D,A),E=s(t,D,new a(f,h?r.tokenize(N,h):N,y,N)),L&&s(t,E,L),A>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var g=[p];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),a=n(8380),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),o.add(e)}))}i.silent=!1,e.exports=i},8692:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=8692},3157:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var g in f={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),a=n(5228),o=n(9982);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n