Introducing the single Installation script for F5 NGINX Instance Manager

F5 NGINX Instance Manager (NIM) is a centralised management tool designed to simplify the administration and monitoring of F5 NGINX instances across various environments, including on-premises, cloud, and hybrid infrastructures. It provides a single interface to efficiently oversee multiple NGINX instances, making it particularly useful for organisations using NGINX at scale.

In the past, installing NGINX Instance Manager and its dependencies could often be a tedious and error-prone process. Whether you’re dealing with databases, NGINX proxies, or multiple components that require manual configuration, the time and effort involved can quickly add up. This is where our new single-installation script comes into play.

Designed to streamline and simplify the installation of NGINX Instance Manager, this script allows you to set up everything you need on a supported operating system with minimal effort. Gone are the days of hunting for specific installation commands, configuring dependencies manually, or worrying about compatibility issues between different systems. With this script, you can install NGINX Instance Manager, the Clickhouse database, and NGINX proxy components in one seamless operation.

 

Key Features:

  • One-command installation: The script automates the installation of NGINX Instance Manager, Clickhouse database, and the NGINX proxy. Just run the script, and it takes care of everything.
  • Cross-platform compatibility: The script supports all the operating systems specified in our technical specification document, making it versatile for different environments.
  • Offline installation support: For users working in environments without internet access, the script can pull all necessary binaries from our software repository, enabling installation on a disconnected host. Simply gather the required binaries beforehand, and you’re good to go!
  • License key integration: The only thing you’ll need to run the script in a fresh operating system environment are your license keys. This makes the process even easier, as there’s no need for additional setup steps.

 

What you need

  • A fresh machine with one of the supported operating systems installed.
  • Download the JSON web token, SSL certificate, and private key for NGINX Instance Manager from MyF5 (including trials). You can use the same files as F5 NGINX Plus in your MyF5 portal.
  • Download the script here.

 

Step 1 - Download and run the installation script

By default, the script:

  • Assumes you’re connected to the internet for installations and upgrades
  • Reads SSL files from the /etc/ssl/nginx directory
  • Installs the latest version of NGINX Open Source
  • Installs Clickhouse
  • Installs the latest version of NGINX Instance Manager

 

If you want to use the script with non-default options (e.g. to use NGINX Plus instead of Open Source), use these switches:

  • To point to a repository key stored in a directory other than /etc/ssl/nginx: -k /path/to/your/<nginx-repo.key> file
  • To point to a repository certificate stored in a directory other than /etc/ssl/nginx: -c /path/to/your/<nginx-repo.crt> file
  • To install NGINX Plus (instead of NGINX OSS): -p <nginx_plus_version> -j /path/to/licence.jwt

 

You also need to specify the current operating system. To get the latest list supported by the script, run the following command:

 

grep '\-d distribution' install-nim-bundle.sh

 

To see other options in the script, run:

 

sudo bash install-nim-bundle.sh -h

 

For example, to use the script to install NGINX Instance Manager on Ubuntu 24.04, with repository keys in the default /etc/ssl/nginx directory, with the latest version of NGINX Plus, run the following command:

 

sudo bash install-nim-bundle.sh -n latest -d ubuntu24.04 -j /path/to/license.jwt

 

In most cases, the script completes the installation of NGINX Instance Manager and associated packages. At the end of the process, you’ll see an auto generated password. Save that password. You’ll need it when you sign in to NGINX Instance Manager.

 

Step 2 – Access NGINX Instance Manager

To access the NGINX Instance Manager web interface, open a web browser and go to https://<NIM_FQDN>, replacing <NIM_FQDN> with the Fully Qualified Domain Name of your NGINX Instance Manager host.

 

The default administrator username is admin, and the generated password is saved, in encrypted format, to the /etc/nms/nginx/.htpasswd file. The password was displayed in the terminal during installation. If you’d like to change this password, refer to the “Set or Change User Passwords” section in the Basic Authentication topic.

 

 

This single-installation solution significantly reduces the complexity of deploying Instance Manager, whether you’re operating in a connected or disconnected environment. Now, all it takes is a simple command to get everything up and running.

 

For more information and alternative options when using the script for NGINX Instance manager, please see the instructions here.

"}},"componentScriptGroups({\"componentId\":\"custom.widget.Beta_MetaNav\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"component({\"componentId\":\"custom.widget.Beta_Footer\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[\"message:278561\"],\"name\":\"TkbMessagePage\",\"props\":{},\"url\":\"https://community.f5.com/kb/codeshare/perl-arx-network/278561\"}}})":{"__typename":"ComponentRenderResult","html":"
 
 
 
 
 

\"F5 ©2024 F5, Inc. All rights reserved.
Trademarks Policies Privacy California Privacy Do Not Sell My Personal Information
"}},"componentScriptGroups({\"componentId\":\"custom.widget.Beta_Footer\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"component({\"componentId\":\"custom.widget.Tag_Manager_Helper\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[\"message:278561\"],\"name\":\"TkbMessagePage\",\"props\":{},\"url\":\"https://community.f5.com/kb/codeshare/perl-arx-network/278561\"}}})":{"__typename":"ComponentRenderResult","html":" "}},"componentScriptGroups({\"componentId\":\"custom.widget.Tag_Manager_Helper\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"component({\"componentId\":\"custom.widget.Consent_Blackbar\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[\"message:278561\"],\"name\":\"TkbMessagePage\",\"props\":{},\"url\":\"https://community.f5.com/kb/codeshare/perl-arx-network/278561\"}}})":{"__typename":"ComponentRenderResult","html":"
"}},"componentScriptGroups({\"componentId\":\"custom.widget.Consent_Blackbar\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/QueryHandler\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageView/MessageViewStandard\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/ThreadedReplyList\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/ThreadedReplyList-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageReplyCallToAction\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageBody\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageBody-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageCustomFields\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageCustomFields-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRevision\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRevision-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageReplyButton\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageReplyButton-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageAuthorBio\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/guides/GuideBottomNavigation\"]})":[{"__ref":"CachedAsset:text:en_US-components/guides/GuideBottomNavigation-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/customComponent/CustomComponent\"]})":[{"__ref":"CachedAsset:text:en_US-components/customComponent/CustomComponent-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/tags/TagView/TagViewChip\"]})":[{"__ref":"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserRank\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserRank-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserRegistrationDate\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserRegistrationDate-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1752854977732"}],"cachedText({\"lastModified\":\"1752854977732\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/ranks/UserRankLabel\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1752854977732"}]},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"User:user:-1":{"__typename":"User","id":"user:-1","entityType":"USER","eventPath":"community:zihoc95639/user:-1","uid":-1,"login":"Former Member","email":"","avatar":null,"rank":null,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":"ANONYMOUS","registrationTime":null,"confirmEmailStatus":false,"registrationAccessLevel":"VIEW","ssoRegistrationFields":[]},"ssoId":null,"profileSettings":{"__typename":"ProfileSettings","dateDisplayStyle":{"__typename":"InheritableStringSettingWithPossibleValues","key":"layout.friendly_dates_enabled","value":"false","localValue":"true","possibleValues":["true","false"]},"dateDisplayFormat":{"__typename":"InheritableStringSetting","key":"layout.format_pattern_date","value":"dd-MMM-yyyy","localValue":"MM-dd-yyyy"},"language":{"__typename":"InheritableStringSettingWithPossibleValues","key":"profile.language","value":"en-US","localValue":null,"possibleValues":["en-US","en-GB","fr-FR","de-DE","ja-JP","pt-PT","pt-BR","es-ES"]},"repliesSortOrder":{"__typename":"InheritableStringSettingWithPossibleValues","key":"config.user_replies_sort_order","value":"DEFAULT","localValue":"DEFAULT","possibleValues":["DEFAULT","LIKES","PUBLISH_TIME","REVERSE_PUBLISH_TIME"]}},"deleted":false},"CachedAsset:pages-1752855176954":{"__typename":"CachedAsset","id":"pages-1752855176954","value":[{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetInvolved.MvpProgram","type":"COMMUNITY","urlPath":"/c/how-do-i/get-involved/mvp-program","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetInvolved.AdvocacyProgram","type":"COMMUNITY","urlPath":"/c/how-do-i/get-involved/advocacy-program","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetHelp.NonCustomer","type":"COMMUNITY","urlPath":"/c/how-do-i/get-help/non-customer","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetHelp.F5Customer","type":"COMMUNITY","urlPath":"/c/how-do-i/get-help/f5-customer","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"WorkstreamsPage","type":"COMMUNITY","urlPath":"/workstreams","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetInvolved","type":"COMMUNITY","urlPath":"/c/how-do-i/get-involved","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.Learn","type":"COMMUNITY","urlPath":"/c/how-do-i/learn","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1739501996000,"localOverride":null,"page":{"id":"Test","type":"CUSTOM","urlPath":"/custom-test-2","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetHelp.Community","type":"COMMUNITY","urlPath":"/c/how-do-i/get-help/community","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetInvolved.ContributeCode","type":"COMMUNITY","urlPath":"/c/how-do-i/get-involved/contribute-code","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.Learn.AboutIrules","type":"COMMUNITY","urlPath":"/c/how-do-i/learn/about-irules","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetHelp.F5Support","type":"COMMUNITY","urlPath":"/c/how-do-i/get-help/f5-support","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HealthCheckPage","type":"COMMUNITY","urlPath":"/health","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetHelp","type":"COMMUNITY","urlPath":"/c/how-do-i/get-help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI.GetHelp.SecurityIncident","type":"COMMUNITY","urlPath":"/c/how-do-i/get-help/security-incident","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"GroupHubPostPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1752855176954,"localOverride":null,"page":{"id":"HowDoI","type":"COMMUNITY","urlPath":"/c/how-do-i","__typename":"PageDescriptor"},"__typename":"PageResource"}],"localOverride":false},"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0":{"__typename":"CachedAsset","id":"text:en_US-components/context/AppContext/AppContextProvider-0","value":{"noCommunity":"Cannot find community","noUser":"Cannot find current user","noNode":"Cannot find node with id {nodeId}","noMessage":"Cannot find message with id {messageId}","userBanned":"We're sorry, but you have been banned from using this site.","userBannedReason":"You have been banned for the following reason: {reason}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-0","value":{"title":"Loading..."},"localOverride":false},"Rank:rank:47":{"__typename":"Rank","id":"rank:47","position":5,"name":"Historic F5 Account","color":"949494","icon":null,"rankStyle":"OUTLINE"},"User:user:200589":{"__typename":"User","id":"user:200589","uid":200589,"login":"wangh_97509","deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://community.f5.com/t5/s/zihoc95639/m_assets/avatars/default/avatar-8.svg?time=0"},"rank":{"__ref":"Rank:rank:47"},"email":"","messagesCount":12,"biography":null,"topicsCount":11,"kudosReceivedCount":0,"kudosGivenCount":0,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2010-07-01T01:00:00.000-07:00","confirmEmailStatus":null},"followersCount":null,"solutionsCount":0},"Category:category:CrowdSRC":{"__typename":"Category","id":"category:CrowdSRC","entityType":"CATEGORY","displayId":"CrowdSRC","nodeType":"category","depth":1,"title":"CrowdSRC","shortTitle":"CrowdSRC","parent":{"__ref":"Category:category:top"},"categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:top":{"__typename":"Category","id":"category:top","entityType":"CATEGORY","displayId":"top","nodeType":"category","depth":0,"title":"Top","shortTitle":"Top"},"Tkb:board:codeshare":{"__typename":"Tkb","id":"board:codeshare","entityType":"TKB","displayId":"codeshare","nodeType":"board","depth":2,"conversationStyle":"TKB","repliesProperties":{"__typename":"RepliesProperties","sortOrder":"PUBLISH_TIME","repliesFormat":"threaded"},"tagProperties":{"__typename":"TagNodeProperties","tagsEnabled":{"__typename":"PolicyResult","failureReason":null}},"requireTags":true,"tagType":"FREEFORM_AND_PRESET","description":"Have some code. Share some code.","title":"CodeShare","shortTitle":"CodeShare","parent":{"__ref":"Category:category:CrowdSRC"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:zihoc95639"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:CrowdSRC"}}]},"userContext":{"__typename":"NodeUserContext","canAddAttachments":false,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"theme":{"__ref":"Theme:customTheme1"},"boardPolicies":{"__typename":"BoardPolicies","canViewSpamDashBoard":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.access_spam_quarantine.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.access_spam_quarantine.allowed.accessDenied","args":[]}},"canArchiveMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.content_archivals.enable_content_archival_settings.accessDenied","key":"error.lithium.policies.content_archivals.enable_content_archival_settings.accessDenied","args":[]}},"canPublishArticleOnCreate":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","args":[]}},"canReadNode":{"__typename":"PolicyResult","failureReason":null}},"isManualSortOrderAvailable":false,"tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"linkProperties":{"__typename":"LinkProperties","isExternalLinkWarningEnabled":false}},"TkbTopicMessage:message:278561":{"__typename":"TkbTopicMessage","uid":278561,"subject":"Perl ARX Network","id":"message:278561","entityType":"TKB_ARTICLE","eventPath":"category:CrowdSRC/community:zihoc95639board:codeshare/message:278561","revisionNum":3,"repliesCount":0,"author":{"__ref":"User:user:200589"},"depth":0,"hasGivenKudo":false,"helpful":null,"board":{"__ref":"Tkb:board:codeshare"},"conversation":{"__ref":"Conversation:conversation:278561"},"messagePolicies":{"__typename":"MessagePolicies","canPublishArticleOnEdit":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","args":[]}},"canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"contentWorkflow":{"__typename":"ContentWorkflow","state":"PUBLISH","scheduledPublishTime":null,"scheduledTimezone":null,"userContext":{"__typename":"MessageWorkflowContext","canSubmitForReview":null,"canEdit":false,"canRecall":null,"canSubmitForPublication":null,"canReturnToAuthor":null,"canPublish":null,"canReturnToReview":null,"canSchedule":false},"shortScheduledTimezone":null},"readOnly":false,"editFrozen":false,"showMoveIndicator":false,"moderationData":{"__ref":"ModerationData:moderation_data:278561"},"teaser":"","body":"

Problem this snippet solves:

This script is an example of how to use the iControl interfaces provided by an ARX to retrieve all networks and their configurations, statuses and statistics on an ARX.

How to use this snippet:

ARXNetworkExample.pl --url  --user  --pass 

\n

Prerequisites

\n
  1. SOAP::Lite perl module
  2. An F5 ARX system running release V6.02.000 or later and configured with at least one configured network.
  3. Management access on the ARX must be permitted for HTTPs-API or HTTP-API services.

Code :

#!/usr/bin/perl\n#-------------------------------------------------------------------------------\n# The contents of this file are subject to the \"END USER LICENSE AGREEMENT \n# FOR F5 Software Development Kit for iControl\"; you may not use this file \n# except in compliance with the License. The License is included in the \n# iControl Software Development Kit.\n#\n# Software distributed under the License is distributed on an \"AS IS\"\n# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See\n# the License for the specific language governing rights and limitations\n# under the License.\n#\n# The Original Code is iControl Code and related documentation\n# distributed by F5.\n#\n# The Initial Developer of the Original Code is F5 Networks,\n# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2012\n# F5 Networks, Inc. All Rights Reserved.  iControl (TM) is a registered \n# trademark of F5 Networks, Inc.\n#\n# Alternatively, the contents of this file may be used under the terms\n# of the GNU General Public License (the \"GPL\"), in which case the\n# provisions of GPL are applicable instead of those above.  If you wish\n# to allow use of your version of this file only under the terms of the\n# GPL and not to allow others to use your version of this file under the\n# License, indicate your decision by deleting the provisions above and\n# replace them with the notice and other provisions required by the GPL.\n# If you do not delete the provisions above, a recipient may use your\n# version of this file under either the License or the GPL.\n#-------------------------------------------------------------------------------\n#\n# Description\n#\n# This script is an example of how to use the iControl interfaces provided by\n# an ARX to retrieve all networks and their configurations, statuses and\n# statistics on an ARX.\n#\n# Usage: ARXNetworkExample.pl --url  --user  --pass \n#\n# Prerequisites:\n#\n# This script requires the following:\n#\n#   * SOAP::Lite perl module\n#   * An F5 ARX system configured with at least one configured network.\n#   * Management access on the ARX must be permitted for HTTP-API and HTTPS-API\n#     services.\n#\n# For more information on ARX configuration, please consult the\n# documentation that was provided with your ARX system.\n#-------------------------------------------------------------------------------\n\n# SOAP::Lite lets us send SOAP requests and parse them\nuse SOAP::Lite\n    autotype => 0,\n    default_ns => 'urn:iControl';\n\n# If you need to debug problems with your script, you can use the +trace \n# option with SOAP::Lite and it will print the XML sent to and received from\n# the server:\n#\n# use SOAP::Lite\n#     autotype => 0,\n#     default_ns => 'urn:iControl' + trace;\n\n# Getopt::Long lets us easily parse command line options\nuse Getopt::Long;\n\nuse POSIX qw(strftime);\n\nuse Carp;\n\nuse strict;\nuse warnings;\n\n#-------------------------------------------------------------------------------\n# Main program logic\n#-------------------------------------------------------------------------------\n\nour ($url, $user, $pass);\n\n# Load command line options - if the load fails, then we print the usage\n# instructions and exit.\nif (!GetOptions(\"url=s\" =>  \\$url,\n                \"user=s\" => \\$user,\n                \"pass=s\" => \\$pass)) {\n    usage();\n    exit(1);\n}\n\n# If any arguments were skipped, print the usage instructions and exit.\nif (!defined $url || !defined $user || !defined $pass) {\n    usage();\n    exit(1);\n}\n\n# The service path for interface \"Interface\" is this:\n#\n# http://:/api/services/Interface\n#\nmy $networkServiceUrl = $url . \"/api/services/Network\";\n\n# In order for SOAP to access a web service, it needs to read the WSDL\n# for the interface you want to use.  The WSDL file for an interface\n# called \"Interface\" is available via http/https on the ARX at:\n#\n# http://:/api/services/Interface?wsdl\n#\n# If you need a WSDL 2.0 version, that is also available at:\n#\n# http://:/arx-api/wsdl/Interface.wsdl2\n#\n# In this case, we're using the Network interface and we're \n# interested in using the WSDL 1.1 version.\n#\nmy $networkWsdlUrl = $networkServiceUrl . \"?wsdl\";\n\n# Now we build our SOAP::Lite object using the service and WSDL\n# URLs\nmy $networkSoap = SOAP::Lite->new(proxy   => $networkServiceUrl,\n                                  service => $networkWsdlUrl);\n\n#-------------------------------------------------------------------------------\n# get_list\n#-------------------------------------------------------------------------------\n\nmy @networkList = ();\n\nprint \"Calling the \\\"get_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \nour $securityHeader = getSecurityHeader($user, $pass);\n\nmy $networkSoapResult = $networkSoap->get_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @networkList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#networkList < 0) {\n        print(\"The list of networks returned from the call to the \\\"get_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"Networks:\\n\";\n\n        foreach my $network (@networkList) {\n            print \"$network\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_stats\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_stats\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#networkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_stats(SOAP::Data->name('interface_ids')->value(@networkList), \n                                                 $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_stats\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @networkStats = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $networkStat (@networkStats) {\n            my $id = $networkStat->{'id'};\n\n            print \"----------------------------------------------\\n\";\n            print \"Network: \", $id, \"\\n\";\n            print \"----------------------------------------------\\n\\n\";\n\n            print \"id: \", $id, \"\\n\";\n\n            my $collisions = $networkStat->{'collisions'};\n            print \"collisions: \", $collisions, \"\\n\";\n\n            my $crc_errors = $networkStat->{'crc_errors'};\n            print \"crc_errors: \", $crc_errors, \"\\n\";\n\n            my $discarded = $networkStat->{'discarded'};\n            print \"discarded: \", $discarded, \"\\n\";\n\n\n            my $rx_broadcast = $networkStat->{'rx_broadcast'};\n            print \"rx_broadcast: \", $rx_broadcast, \"\\n\";\n\n            my $rx_multicast = $networkStat->{'rx_multicast'};\n            print \"rx_multicast: \", $rx_multicast, \"\\n\";\n\n            my $rx_octets = $networkStat->{'rx_octets'};\n            print \"rx_octets: \", $rx_octets, \"\\n\";\n\n            my $rx_total = $networkStat->{'rx_total'};\n            print \"rx_total: \", $rx_total, \"\\n\";\n\n            my $rx_unicast = $networkStat->{'rx_unicast'};\n            print \"rx_unicast: \", $rx_unicast, \"\\n\";\n\n            my $tx_broadcast = $networkStat->{'tx_broadcast'};\n            print \"tx_broadcast: \", $tx_broadcast, \"\\n\";\n\n            my $tx_multicast = $networkStat->{'tx_multicast'};\n            print \"tx_multicast: \", $tx_multicast, \"\\n\";\n\n            my $tx_octets = $networkStat->{'tx_octets'};\n            print \"tx_octets: \", $tx_octets, \"\\n\";\n\n            my $tx_total = $networkStat->{'tx_total'};\n            print \"tx_total: \", $tx_total, \"\\n\";\n\n            my $tx_unicast = $networkStat->{'tx_unicast'};\n            print \"tx_unicast: \", $tx_unicast, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_gigabit_interface_list\n#-------------------------------------------------------------------------------\n\nmy @gigabitNetworkList = ();\n\nprint \"Calling the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_gigabit_interface_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @gigabitNetworkList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#gigabitNetworkList < 0) {\n        print(\"The list of networks returned from the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"Gigabit Network Ports:\\n\";\n\n        foreach my $gigabitNetworkPort (@gigabitNetworkList) {\n            my $slot = $gigabitNetworkPort->{'slot'};\n            print \"slot: \", $slot, \"\\n\";\n\n            my $port = $gigabitNetworkPort->{'port'};\n            print \"port: \", $port, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_gigabit_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#gigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapGigabitNetworkList = ConvertNetworkPortToSoapData(\\@gigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_gigabit_interface_configuration(SOAP::Data->name('ports')->value(@soapGigabitNetworkList), \n                                                                           $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @gigabitInterfaceConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $gigabitInterfaceConfig (@gigabitInterfaceConfigs) {\n            if (exists $gigabitInterfaceConfig->{'port'}) {\n                my $gigabitInterfacePort = $gigabitInterfaceConfig->{'port'};\n\n                my $slot = $gigabitInterfacePort->{'slot'};\n                my $port = $gigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $description = $gigabitInterfaceConfig->{'description'};\n            print \"description: \", $description, \"\\n\";\n\n            my $flow_control_receive = $gigabitInterfaceConfig->{'flow_control_receive'};\n            print \"flow_control_receive: \", $flow_control_receive, \"\\n\";\n\n            my $flow_control_send = $gigabitInterfaceConfig->{'flow_control_send'};\n            print \"flow_control_send: \", $flow_control_send, \"\\n\";\n\n            my $redundancy_protocol = $gigabitInterfaceConfig->{'redundancy_protocol'};\n            print \"redundancy_protocol: \", $redundancy_protocol, \"\\n\";\n\n            my $speed = $gigabitInterfaceConfig->{'speed'};\n            print \"speed: \", $speed, \"\\n\";\n\n            my $enable = $gigabitInterfaceConfig->{'enable'};\n            print \"enable: \", $enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_gigabit_interface_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#gigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapGigabitNetworkList = ConvertNetworkPortToSoapData(\\@gigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_gigabit_interface_status(SOAP::Data->name('ports')->value(@soapGigabitNetworkList), \n                                                                    $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @gigabitInterfaceStatuses = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $gigabitInterfaceStatus (@gigabitInterfaceStatuses) {\n            if (exists $gigabitInterfaceStatus->{'port'}) {\n                my $gigabitInterfacePort = $gigabitInterfaceStatus->{'port'};\n\n                my $slot = $gigabitInterfacePort->{'slot'};\n                my $port = $gigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $type = $gigabitInterfaceStatus->{'type'};\n            print \"type: \", $type, \"\\n\";\n\n            my $mode = $gigabitInterfaceStatus->{'mode'};\n            print \"mode: \", $mode, \"\\n\";\n\n            my $enabled = $gigabitInterfaceStatus->{'enabled'};\n            print \"enabled: \", $enabled, \"\\n\";\n\n            my $link_status = $gigabitInterfaceStatus->{'link_status'};\n            print \"link_status: \", $link_status, \"\\n\";\n\n            my $speed = $gigabitInterfaceStatus->{'speed'};\n            print \"speed: \", $speed, \"\\n\";\n\n            my $mac = $gigabitInterfaceStatus->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            my $accept_all_frame = $gigabitInterfaceStatus->{'accept_all_frame'};\n            print \"accept_all_frame: \", $accept_all_frame, \"\\n\";\n\n            my $mtu_size = $gigabitInterfaceStatus->{'mtu_size'};\n            print \"mtu_size: \", $mtu_size, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ten_gigabit_interface_list\n#-------------------------------------------------------------------------------\n\nmy @tenGigabitNetworkList = ();\n\nprint \"Calling the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_ten_gigabit_interface_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @tenGigabitNetworkList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#tenGigabitNetworkList < 0) {\n        print(\"The list of networks returned from the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"Ten Gigabit Network Ports:\\n\";\n\n        foreach my $tenGigabitNetworkPort (@tenGigabitNetworkList) {\n            my $slot = $tenGigabitNetworkPort->{'slot'};\n            print \"slot: \", $slot, \"\\n\";\n\n            my $port = $tenGigabitNetworkPort->{'port'};\n            print \"port: \", $port, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ten_gigabit_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ten_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#tenGigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapTenGigabitNetworkList = ConvertNetworkPortToSoapData(\\@tenGigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ten_gigabit_interface_configuration(SOAP::Data->name('ports')->value(@soapTenGigabitNetworkList), \n                                                                               $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ten_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @tenGigabitInterfaceConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $tenGigabitInterfaceConfig (@tenGigabitInterfaceConfigs) {\n            if (exists $tenGigabitInterfaceConfig->{'port'}) {\n                my $tenGigabitInterfacePort = $tenGigabitInterfaceConfig->{'port'};\n\n                my $slot = $tenGigabitInterfacePort->{'slot'};\n                my $port = $tenGigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Ten Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $description = $tenGigabitInterfaceConfig->{'description'};\n            print \"description: \", $description, \"\\n\";\n\n            my $flow_control_receive = $tenGigabitInterfaceConfig->{'flow_control_receive'};\n            print \"flow_control_receive: \", $flow_control_receive, \"\\n\";\n\n            my $flow_control_send = $tenGigabitInterfaceConfig->{'flow_control_send'};\n            print \"flow_control_send: \", $flow_control_send, \"\\n\";\n\n            my $redundancy_protocol = $tenGigabitInterfaceConfig->{'redundancy_protocol'};\n            print \"redundancy_protocol: \", $redundancy_protocol, \"\\n\";\n\n            my $enable = $tenGigabitInterfaceConfig->{'enable'};\n            print \"enable: \", $enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ten_gigabit_interface_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ten_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#tenGigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapTenGigabitNetworkList = ConvertNetworkPortToSoapData(\\@tenGigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ten_gigabit_interface_status(SOAP::Data->name('ports')->value(@soapTenGigabitNetworkList), \n                                                                        $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ten_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @tenGigabitInterfaceStatuses = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $tenGigabitInterfaceStatus (@tenGigabitInterfaceStatuses) {\n            if (exists $tenGigabitInterfaceStatus->{'port'}) {\n                my $tenGigabitInterfacePort = $tenGigabitInterfaceStatus->{'port'};\n\n                my $slot = $tenGigabitInterfacePort->{'slot'};\n                my $port = $tenGigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Ten Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $type = $tenGigabitInterfaceStatus->{'type'};\n            print \"type: \", $type, \"\\n\";\n\n            my $mode = $tenGigabitInterfaceStatus->{'mode'};\n            print \"mode: \", $mode, \"\\n\";\n\n            my $enabled = $tenGigabitInterfaceStatus->{'enabled'};\n            print \"enabled: \", $enabled, \"\\n\";\n\n            my $link_status = $tenGigabitInterfaceStatus->{'link_status'};\n            print \"link_status: \", $link_status, \"\\n\";\n\n            my $speed = $tenGigabitInterfaceStatus->{'speed'};\n            print \"speed: \", $speed, \"\\n\";\n\n            my $mac = $tenGigabitInterfaceStatus->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            my $accept_all_frame = $tenGigabitInterfaceStatus->{'accept_all_frame'};\n            print \"accept_all_frame: \", $accept_all_frame, \"\\n\";\n\n            my $mtu_size = $tenGigabitInterfaceStatus->{'mtu_size'};\n            print \"mtu_size: \", $mtu_size, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_interface_spanning_tree_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#gigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapGigabitNetworkList = ConvertNetworkPortToSoapData(\\@gigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_interface_spanning_tree_configuration(SOAP::Data->name('ports')->value(@soapGigabitNetworkList), \n                                                                                 $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @networkIfSpanningTreeConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $networkIfSpanningTreeConfig (@networkIfSpanningTreeConfigs) {\n            if (exists $networkIfSpanningTreeConfig->{'port'}) {\n                my $networkIfSpanningTreePort = $networkIfSpanningTreeConfig->{'port'};\n\n                my $slot = $networkIfSpanningTreePort->{'slot'};\n                my $port = $networkIfSpanningTreePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $spanning_tree_cost = $networkIfSpanningTreeConfig->{'spanning_tree_cost'};\n            print \"spanning_tree_cost: \", $spanning_tree_cost, \"\\n\";\n\n            my $spanning_tree_priority = $networkIfSpanningTreeConfig->{'spanning_tree_priority'};\n            print \"spanning_tree_priority: \", $spanning_tree_priority, \"\\n\";\n\n            my $spanning_tree_edgeport = $networkIfSpanningTreeConfig->{'spanning_tree_edgeport'};\n            print \"spanning_tree_edgeport: \", $spanning_tree_edgeport, \"\\n\";\n\n            my $spanning_tree_force_migration = $networkIfSpanningTreeConfig->{'spanning_tree_force_migration'};\n            print \"spanning_tree_force_migration: \", $spanning_tree_force_migration, \"\\n\";\n\n            my $spanning_tree_enable = $networkIfSpanningTreeConfig->{'spanning_tree_enable'};\n            print \"spanning_tree_enable: \", $spanning_tree_enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_interface_spanning_tree_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#tenGigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapTenGigabitNetworkList = ConvertNetworkPortToSoapData(\\@tenGigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_interface_spanning_tree_configuration(SOAP::Data->name('ports')->value(@soapTenGigabitNetworkList), \n                                                                                 $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @networkIfSpanningTreeConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $networkIfSpanningTreeConfig (@networkIfSpanningTreeConfigs) {\n            if (exists $networkIfSpanningTreeConfig->{'port'}) {\n                my $networkIfSpanningTreePort = $networkIfSpanningTreeConfig->{'port'};\n\n                my $slot = $networkIfSpanningTreePort->{'slot'};\n                my $port = $networkIfSpanningTreePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Ten Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $spanning_tree_cost = $networkIfSpanningTreeConfig->{'spanning_tree_cost'};\n            print \"spanning_tree_cost: \", $spanning_tree_cost, \"\\n\";\n\n            my $spanning_tree_priority = $networkIfSpanningTreeConfig->{'spanning_tree_priority'};\n            print \"spanning_tree_priority: \", $spanning_tree_priority, \"\\n\";\n\n            my $spanning_tree_edgeport = $networkIfSpanningTreeConfig->{'spanning_tree_edgeport'};\n            print \"spanning_tree_edgeport: \", $spanning_tree_edgeport, \"\\n\";\n\n            my $spanning_tree_force_migration = $networkIfSpanningTreeConfig->{'spanning_tree_force_migration'};\n            print \"spanning_tree_force_migration: \", $spanning_tree_force_migration, \"\\n\";\n\n            my $spanning_tree_enable = $networkIfSpanningTreeConfig->{'spanning_tree_enable'};\n            print \"spanning_tree_enable: \", $spanning_tree_enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_mgmt_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_mgmt_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_mgmt_interface_configuration($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_mgmt_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n    my $mgmtIfConfig = $networkSoapResult->result;\n\n    if (exists $mgmtIfConfig->{'port'}) {\n        my $mgmtIfPort = $mgmtIfConfig->{'port'};\n\n        my $slot = $mgmtIfPort->{'slot'};\n        my $port = $mgmtIfPort->{'port'};\n\n        print \"----------------------------------------------\\n\";\n        print \"Management Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n        print \"----------------------------------------------\\n\\n\";\n\n        print \"port:\\n\";\n        print \" slot: \", $slot, \"\\n\";\n        print \" port: \", $port, \"\\n\";\n    }\n\n    my $description = $mgmtIfConfig->{'description'};\n    print \"description: \", $description, \"\\n\";\n\n    my $ip_address = $mgmtIfConfig->{'ip_address'};\n    print \"ip_address: \", $ip_address, \"\\n\";\n\n    my $ip_mask = $mgmtIfConfig->{'ip_mask'};\n    print \"ip_mask: \", $ip_mask, \"\\n\";\n\n    my $speed = $mgmtIfConfig->{'speed'};\n    print \"speed: \", $speed, \"\\n\";\n\n    my $enable = $mgmtIfConfig->{'enable'};\n    print \"enable: \", $enable, \"\\n\";\n    print \"\\n\";\n}\n\n#-------------------------------------------------------------------------------\n# get_mgmt_interface_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_mgmt_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_mgmt_interface_status($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_mgmt_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n    my $mgmtIfStatus = $networkSoapResult->result;\n\n    if (exists $mgmtIfStatus->{'port'}) {\n        my $mgmtIfPort = $mgmtIfStatus->{'port'};\n\n        my $slot = $mgmtIfPort->{'slot'};\n        my $port = $mgmtIfPort->{'port'};\n\n        print \"----------------------------------------------\\n\";\n        print \"Management Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n        print \"----------------------------------------------\\n\\n\";\n\n        print \"port:\\n\";\n        print \" slot: \", $slot, \"\\n\";\n        print \" port: \", $port, \"\\n\";\n    }\n\n    my $type = $mgmtIfStatus->{'type'};\n    print \"type: \", $type, \"\\n\";\n\n    my $mode = $mgmtIfStatus->{'mode'};\n    print \"mode: \", $mode, \"\\n\";\n\n    my $enabled = $mgmtIfStatus->{'enabled'};\n    print \"enabled: \", $enabled, \"\\n\";\n\n    my $link_status = $mgmtIfStatus->{'link_status'};\n    print \"link_status: \", $link_status, \"\\n\";\n\n    my $speed = $mgmtIfStatus->{'speed'};\n    print \"speed: \", $speed, \"\\n\";\n\n    my $mac = $mgmtIfStatus->{'mac'};\n    print \"mac: \", $mac, \"\\n\";\n\n    my $accept_all_frame = $mgmtIfStatus->{'accept_all_frame'};\n    print \"accept_all_frame: \", $accept_all_frame, \"\\n\";\n\n    my $mtu_size = $mgmtIfStatus->{'mtu_size'};\n    print \"mtu_size: \", $mtu_size, \"\\n\";\n    print \"\\n\";\n}\n\n#-------------------------------------------------------------------------------\n# get_vlan_interface_list\n#-------------------------------------------------------------------------------\n\nmy @vlanList = ();\n\nprint \"Calling the \\\"get_vlan_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_vlan_interface_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_vlan_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @vlanList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#vlanList < 0) {\n        print(\"The list of VLAN interfaces returned from the call to the \\\"get_vlan_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"VLAN Interfaces:\\n\";\n\n        foreach my $vlan (@vlanList) {\n            print \"$vlan\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_vlan_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_vlan_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#vlanList < 0) {\n    print(\"The list of VLAN interfaces returned from the call to the \\\"get_vlan_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_vlan_interface_configuration(SOAP::Data->name('ids')->value(@vlanList), \n                                                                        $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_vlan_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @vlanConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $vlanConfig (@vlanConfigs) {\n            my $id = $vlanConfig->{'id'};\n\n            print \"----------------------------------------------\\n\";\n            print \"VLAN Interface: \", $id, \"\\n\";\n            print \"----------------------------------------------\\n\\n\";\n\n            print \"id: \", $id, \"\\n\";\n\n            my $description = $vlanConfig->{'description'};\n            print \"description: \", $description, \"\\n\";\n\n            my $ip_address = $vlanConfig->{'ip_address'};\n            print \"ip_address: \", $ip_address, \"\\n\";\n\n            my $ip_mask = $vlanConfig->{'ip_mask'};\n            print \"ip_mask: \", $ip_mask, \"\\n\";\n\n            my $redundancy = $vlanConfig->{'redundancy'};\n            print \"redundancy: \", $redundancy, \"\\n\";\n\n            my $enable = $vlanConfig->{'enable'};\n            print \"enable: \", $enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ip_proxy_list\n#-------------------------------------------------------------------------------\n\nmy @ipProxyList = ();\n\nprint \"Calling the \\\"get_ip_proxy_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_ip_proxy_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @ipProxyList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#ipProxyList < 0) {\n        print(\"The list of IP Proxies returned from the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"IP Proxies:\\n\";\n\n        foreach my $ipProxy (@ipProxyList) {\n            print \"$ipProxy\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ip_proxy_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ip_proxy_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#ipProxyList < 0) {\n    print(\"The list of IP Proxies returned from the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ip_proxy_configuration(SOAP::Data->name('ip_address')->value(@ipProxyList), \n                                                                  $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ip_proxy_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @ipProxyConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $ipProxyConfig (@ipProxyConfigs) {\n            my $proxy_address = $ipProxyConfig->{'proxy_address'};\n\n            print \"----------------------------------------------\\n\";\n            print \"IP Proxy Address: \", $proxy_address, \"\\n\";\n            print \"----------------------------------------------\\n\\n\";\n\n            print \"proxy_address: \", $proxy_address, \"\\n\";\n\n            my $mask = $ipProxyConfig->{'mask'};\n            print \"mask: \", $mask, \"\\n\";\n\n            my $mac = $ipProxyConfig->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            if (exists $ipProxyConfig->{'processor'}) {\n                my $ipProxyProc = $ipProxyConfig->{'processor'};\n                print \"processor:\\n\";\n\n                my $slot = $ipProxyProc->{'slot'};\n                print \" slot: \", $slot, \"\\n\";\n\n                my $processor = $ipProxyProc->{'processor'};\n                print \" processor: \", $processor, \"\\n\";\n                print \"\\n\";\n            }\n\n            my $vlan = $ipProxyConfig->{'vlan'};\n            print \"vlan: \", $vlan, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ip_proxy_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ip_proxy_status\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#ipProxyList < 0) {\n    print(\"The list of IP Proxies returned from the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ip_proxy_status(SOAP::Data->name('ip_address')->value(@ipProxyList), \n                                                           $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ip_proxy_status\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @ipProxyStatuses = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $ipProxyStatus (@ipProxyStatuses) {\n            my $proxy_address = $ipProxyStatus->{'proxy_address'};\n            print \"proxy_address: \", $proxy_address, \"\\n\";\n\n            my $mac = $ipProxyStatus->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            my $owner = $ipProxyStatus->{'owner'};\n            print \"owner: \", $owner, \"\\n\";\n\n            my $in_use_by = $ipProxyStatus->{'in_use_by'};\n            print \"in_use_by: \", $in_use_by, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n\n#-------------------------------------------------------------------------------\n# End of main program logic\n#-------------------------------------------------------------------------------\n\n\n#-------------------------------------------------------------------------------\n# sub usage\n#-------------------------------------------------------------------------------\nsub usage\n{\n    print \"\\nUsage: ARXNetworkExample.pl --url  --user  --pass \\n\";\n    print \"\\n\";\n    print \"Argument  Description\\n\";\n    print \"--------  -----------\\n\";\n    print \"--url     The base URL of the web service on the ARX. Both http and https\\n\";\n    print \"          are supported. The format is:\\n\";\n    print \"\\n\";\n    print \"          http(s)://:\\n\";\n    print \"\\n\";\n    print \"          : DNS resolvable hostname or IP address\\n\";\n    print \"          :     83 for http or 843 for https\\n\";\n    print \"\\n\";\n    print \"--user    The username for authentication.\\n\";\n    print \"--pass    The password for authentication.\\n\";\n    print \"\\n\";\n}\n\n#-------------------------------------------------------------------------------\n# sub getSecurityHeader(user, pass)\n#\n# This subroutine builds a security header that will be used for\n# authentication.  This type of security header is required for all calls to\n# iControl::ARX interfaces, so it makes sense to have this subroutine stored in\n# a library for common access.\n#-------------------------------------------------------------------------------\nsub getSecurityHeader\n{\n    my $user = shift;\n    my $pass = shift;\n    my $now = time();\n    my $then = time() + 60;\n    my $created = strftime(\"%Y-%m-%dT%H:%M:%S\", gmtime($now)) . 'Z';\n    my $expires = strftime(\"%Y-%m-%dT%H:%M:%S\", gmtime($then)) . 'Z';\n\n    my $secExt = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';\n    my $secUtil = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';\n    my $securityHeader = SOAP::Header->name(\"wsse:Security\")->attr(\n            {\n                'xmlns:wsse'=> $secExt,\n                'xmlns:wsu'=> $secUtil\n            }\n    );\n    my $timestamp = SOAP::Data->name(\"wsu:Timestamp\" =>\n                            \\SOAP::Data->value(\n                                SOAP::Data->name('wsu:Created')->value($created)\n                                                               ->type(''),\n                                SOAP::Data->name('wsu:Expires')->value($expires)\n                                                               ->type('')));\n    my $usernameTokenType = \n        \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\";\n    my $usernameToken = SOAP::Data->name(\"wsse:UsernameToken\" =>\n                            \\SOAP::Data->value(\n                                SOAP::Data->name('wsse:Username')->value($user)\n                                                                 ->type(''),\n                                SOAP::Data->name('wsse:Password')->value($pass)\n                                                                 ->type('')\n                                                                 ->attr({'Type'=>$usernameTokenType})));\n\n    $securityHeader->value(\\SOAP::Data->value($timestamp, $usernameToken));\n\n    return $securityHeader;\n}\n\nsub objdump\n{\n    my ($obj, $indent) = @_;\n    my $content = '';\n\n    if (!defined $obj) {\n        return $content;\n    }\n\n    if (!defined $indent) {\n        $indent = '    ';\n    }\n\n    my $type = ref $obj;\n\n    if (!defined $type || $type eq '' || $type eq 'SCALAR') {\n        $content = $content . $indent . $obj . \"\\n\";\n    }\n    elsif ($type eq 'ARRAY') {\n        foreach my $node (@$obj) {\n            $content = $content . objdump($node, $indent);\n        }\n    }\n    else {\n        my $key;\n        my $value;\n\n        while (($key, $value) = each %$obj) {\n            my $type2 = ref $value;\n            if (!defined $type2 || $type2 eq '' || $type2 eq 'SCALAR') {\n                $content = $content . $indent . \"\\'$key\\' => $value;\\n\";\n            }\n            else {\n                $content = $content . $indent . \"\\'$key\\' => {\\n\";\n                $content = $content . objdump($value, $indent.'    ');\n                $content = $content . $indent . \"}\\n\";\n            }\n        }\n    }\n\n    return $content;\n}\n\nsub ConvertNetworkPortToSoapData\n{\n    my ($portListRef) = @_;\n    my @dataArray;\n    \n    foreach my $port (@$portListRef) {\n        my $sport = SOAP::Data->name(\"ports\")->value(\\SOAP::Data->value(\n                                                    SOAP::Data->name(\"slot\")->value($port->{'slot'}),\n                                                    SOAP::Data->name(\"port\")->value($port->{'port'})));\n         push(@dataArray, $sport);\n    }\n    \n    return @dataArray;\n}
","body@stringLength":"47962","rawBody":"

Problem this snippet solves:

This script is an example of how to use the iControl interfaces provided by an ARX to retrieve all networks and their configurations, statuses and statistics on an ARX.

How to use this snippet:

ARXNetworkExample.pl --url  --user  --pass 

\n

Prerequisites

\n
  1. SOAP::Lite perl module
  2. An F5 ARX system running release V6.02.000 or later and configured with at least one configured network.
  3. Management access on the ARX must be permitted for HTTPs-API or HTTP-API services.

Code :

#!/usr/bin/perl\n#-------------------------------------------------------------------------------\n# The contents of this file are subject to the \"END USER LICENSE AGREEMENT \n# FOR F5 Software Development Kit for iControl\"; you may not use this file \n# except in compliance with the License. The License is included in the \n# iControl Software Development Kit.\n#\n# Software distributed under the License is distributed on an \"AS IS\"\n# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See\n# the License for the specific language governing rights and limitations\n# under the License.\n#\n# The Original Code is iControl Code and related documentation\n# distributed by F5.\n#\n# The Initial Developer of the Original Code is F5 Networks,\n# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2012\n# F5 Networks, Inc. All Rights Reserved.  iControl (TM) is a registered \n# trademark of F5 Networks, Inc.\n#\n# Alternatively, the contents of this file may be used under the terms\n# of the GNU General Public License (the \"GPL\"), in which case the\n# provisions of GPL are applicable instead of those above.  If you wish\n# to allow use of your version of this file only under the terms of the\n# GPL and not to allow others to use your version of this file under the\n# License, indicate your decision by deleting the provisions above and\n# replace them with the notice and other provisions required by the GPL.\n# If you do not delete the provisions above, a recipient may use your\n# version of this file under either the License or the GPL.\n#-------------------------------------------------------------------------------\n#\n# Description\n#\n# This script is an example of how to use the iControl interfaces provided by\n# an ARX to retrieve all networks and their configurations, statuses and\n# statistics on an ARX.\n#\n# Usage: ARXNetworkExample.pl --url  --user  --pass \n#\n# Prerequisites:\n#\n# This script requires the following:\n#\n#   * SOAP::Lite perl module\n#   * An F5 ARX system configured with at least one configured network.\n#   * Management access on the ARX must be permitted for HTTP-API and HTTPS-API\n#     services.\n#\n# For more information on ARX configuration, please consult the\n# documentation that was provided with your ARX system.\n#-------------------------------------------------------------------------------\n\n# SOAP::Lite lets us send SOAP requests and parse them\nuse SOAP::Lite\n    autotype => 0,\n    default_ns => 'urn:iControl';\n\n# If you need to debug problems with your script, you can use the +trace \n# option with SOAP::Lite and it will print the XML sent to and received from\n# the server:\n#\n# use SOAP::Lite\n#     autotype => 0,\n#     default_ns => 'urn:iControl' + trace;\n\n# Getopt::Long lets us easily parse command line options\nuse Getopt::Long;\n\nuse POSIX qw(strftime);\n\nuse Carp;\n\nuse strict;\nuse warnings;\n\n#-------------------------------------------------------------------------------\n# Main program logic\n#-------------------------------------------------------------------------------\n\nour ($url, $user, $pass);\n\n# Load command line options - if the load fails, then we print the usage\n# instructions and exit.\nif (!GetOptions(\"url=s\" =>  \\$url,\n                \"user=s\" => \\$user,\n                \"pass=s\" => \\$pass)) {\n    usage();\n    exit(1);\n}\n\n# If any arguments were skipped, print the usage instructions and exit.\nif (!defined $url || !defined $user || !defined $pass) {\n    usage();\n    exit(1);\n}\n\n# The service path for interface \"Interface\" is this:\n#\n# http://:/api/services/Interface\n#\nmy $networkServiceUrl = $url . \"/api/services/Network\";\n\n# In order for SOAP to access a web service, it needs to read the WSDL\n# for the interface you want to use.  The WSDL file for an interface\n# called \"Interface\" is available via http/https on the ARX at:\n#\n# http://:/api/services/Interface?wsdl\n#\n# If you need a WSDL 2.0 version, that is also available at:\n#\n# http://:/arx-api/wsdl/Interface.wsdl2\n#\n# In this case, we're using the Network interface and we're \n# interested in using the WSDL 1.1 version.\n#\nmy $networkWsdlUrl = $networkServiceUrl . \"?wsdl\";\n\n# Now we build our SOAP::Lite object using the service and WSDL\n# URLs\nmy $networkSoap = SOAP::Lite->new(proxy   => $networkServiceUrl,\n                                  service => $networkWsdlUrl);\n\n#-------------------------------------------------------------------------------\n# get_list\n#-------------------------------------------------------------------------------\n\nmy @networkList = ();\n\nprint \"Calling the \\\"get_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \nour $securityHeader = getSecurityHeader($user, $pass);\n\nmy $networkSoapResult = $networkSoap->get_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @networkList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#networkList < 0) {\n        print(\"The list of networks returned from the call to the \\\"get_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"Networks:\\n\";\n\n        foreach my $network (@networkList) {\n            print \"$network\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_stats\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_stats\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#networkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_stats(SOAP::Data->name('interface_ids')->value(@networkList), \n                                                 $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_stats\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @networkStats = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $networkStat (@networkStats) {\n            my $id = $networkStat->{'id'};\n\n            print \"----------------------------------------------\\n\";\n            print \"Network: \", $id, \"\\n\";\n            print \"----------------------------------------------\\n\\n\";\n\n            print \"id: \", $id, \"\\n\";\n\n            my $collisions = $networkStat->{'collisions'};\n            print \"collisions: \", $collisions, \"\\n\";\n\n            my $crc_errors = $networkStat->{'crc_errors'};\n            print \"crc_errors: \", $crc_errors, \"\\n\";\n\n            my $discarded = $networkStat->{'discarded'};\n            print \"discarded: \", $discarded, \"\\n\";\n\n\n            my $rx_broadcast = $networkStat->{'rx_broadcast'};\n            print \"rx_broadcast: \", $rx_broadcast, \"\\n\";\n\n            my $rx_multicast = $networkStat->{'rx_multicast'};\n            print \"rx_multicast: \", $rx_multicast, \"\\n\";\n\n            my $rx_octets = $networkStat->{'rx_octets'};\n            print \"rx_octets: \", $rx_octets, \"\\n\";\n\n            my $rx_total = $networkStat->{'rx_total'};\n            print \"rx_total: \", $rx_total, \"\\n\";\n\n            my $rx_unicast = $networkStat->{'rx_unicast'};\n            print \"rx_unicast: \", $rx_unicast, \"\\n\";\n\n            my $tx_broadcast = $networkStat->{'tx_broadcast'};\n            print \"tx_broadcast: \", $tx_broadcast, \"\\n\";\n\n            my $tx_multicast = $networkStat->{'tx_multicast'};\n            print \"tx_multicast: \", $tx_multicast, \"\\n\";\n\n            my $tx_octets = $networkStat->{'tx_octets'};\n            print \"tx_octets: \", $tx_octets, \"\\n\";\n\n            my $tx_total = $networkStat->{'tx_total'};\n            print \"tx_total: \", $tx_total, \"\\n\";\n\n            my $tx_unicast = $networkStat->{'tx_unicast'};\n            print \"tx_unicast: \", $tx_unicast, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_gigabit_interface_list\n#-------------------------------------------------------------------------------\n\nmy @gigabitNetworkList = ();\n\nprint \"Calling the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_gigabit_interface_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @gigabitNetworkList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#gigabitNetworkList < 0) {\n        print(\"The list of networks returned from the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"Gigabit Network Ports:\\n\";\n\n        foreach my $gigabitNetworkPort (@gigabitNetworkList) {\n            my $slot = $gigabitNetworkPort->{'slot'};\n            print \"slot: \", $slot, \"\\n\";\n\n            my $port = $gigabitNetworkPort->{'port'};\n            print \"port: \", $port, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_gigabit_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#gigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapGigabitNetworkList = ConvertNetworkPortToSoapData(\\@gigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_gigabit_interface_configuration(SOAP::Data->name('ports')->value(@soapGigabitNetworkList), \n                                                                           $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @gigabitInterfaceConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $gigabitInterfaceConfig (@gigabitInterfaceConfigs) {\n            if (exists $gigabitInterfaceConfig->{'port'}) {\n                my $gigabitInterfacePort = $gigabitInterfaceConfig->{'port'};\n\n                my $slot = $gigabitInterfacePort->{'slot'};\n                my $port = $gigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $description = $gigabitInterfaceConfig->{'description'};\n            print \"description: \", $description, \"\\n\";\n\n            my $flow_control_receive = $gigabitInterfaceConfig->{'flow_control_receive'};\n            print \"flow_control_receive: \", $flow_control_receive, \"\\n\";\n\n            my $flow_control_send = $gigabitInterfaceConfig->{'flow_control_send'};\n            print \"flow_control_send: \", $flow_control_send, \"\\n\";\n\n            my $redundancy_protocol = $gigabitInterfaceConfig->{'redundancy_protocol'};\n            print \"redundancy_protocol: \", $redundancy_protocol, \"\\n\";\n\n            my $speed = $gigabitInterfaceConfig->{'speed'};\n            print \"speed: \", $speed, \"\\n\";\n\n            my $enable = $gigabitInterfaceConfig->{'enable'};\n            print \"enable: \", $enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_gigabit_interface_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#gigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapGigabitNetworkList = ConvertNetworkPortToSoapData(\\@gigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_gigabit_interface_status(SOAP::Data->name('ports')->value(@soapGigabitNetworkList), \n                                                                    $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @gigabitInterfaceStatuses = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $gigabitInterfaceStatus (@gigabitInterfaceStatuses) {\n            if (exists $gigabitInterfaceStatus->{'port'}) {\n                my $gigabitInterfacePort = $gigabitInterfaceStatus->{'port'};\n\n                my $slot = $gigabitInterfacePort->{'slot'};\n                my $port = $gigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $type = $gigabitInterfaceStatus->{'type'};\n            print \"type: \", $type, \"\\n\";\n\n            my $mode = $gigabitInterfaceStatus->{'mode'};\n            print \"mode: \", $mode, \"\\n\";\n\n            my $enabled = $gigabitInterfaceStatus->{'enabled'};\n            print \"enabled: \", $enabled, \"\\n\";\n\n            my $link_status = $gigabitInterfaceStatus->{'link_status'};\n            print \"link_status: \", $link_status, \"\\n\";\n\n            my $speed = $gigabitInterfaceStatus->{'speed'};\n            print \"speed: \", $speed, \"\\n\";\n\n            my $mac = $gigabitInterfaceStatus->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            my $accept_all_frame = $gigabitInterfaceStatus->{'accept_all_frame'};\n            print \"accept_all_frame: \", $accept_all_frame, \"\\n\";\n\n            my $mtu_size = $gigabitInterfaceStatus->{'mtu_size'};\n            print \"mtu_size: \", $mtu_size, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ten_gigabit_interface_list\n#-------------------------------------------------------------------------------\n\nmy @tenGigabitNetworkList = ();\n\nprint \"Calling the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_ten_gigabit_interface_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @tenGigabitNetworkList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#tenGigabitNetworkList < 0) {\n        print(\"The list of networks returned from the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"Ten Gigabit Network Ports:\\n\";\n\n        foreach my $tenGigabitNetworkPort (@tenGigabitNetworkList) {\n            my $slot = $tenGigabitNetworkPort->{'slot'};\n            print \"slot: \", $slot, \"\\n\";\n\n            my $port = $tenGigabitNetworkPort->{'port'};\n            print \"port: \", $port, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ten_gigabit_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ten_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#tenGigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapTenGigabitNetworkList = ConvertNetworkPortToSoapData(\\@tenGigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ten_gigabit_interface_configuration(SOAP::Data->name('ports')->value(@soapTenGigabitNetworkList), \n                                                                               $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ten_gigabit_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @tenGigabitInterfaceConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $tenGigabitInterfaceConfig (@tenGigabitInterfaceConfigs) {\n            if (exists $tenGigabitInterfaceConfig->{'port'}) {\n                my $tenGigabitInterfacePort = $tenGigabitInterfaceConfig->{'port'};\n\n                my $slot = $tenGigabitInterfacePort->{'slot'};\n                my $port = $tenGigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Ten Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $description = $tenGigabitInterfaceConfig->{'description'};\n            print \"description: \", $description, \"\\n\";\n\n            my $flow_control_receive = $tenGigabitInterfaceConfig->{'flow_control_receive'};\n            print \"flow_control_receive: \", $flow_control_receive, \"\\n\";\n\n            my $flow_control_send = $tenGigabitInterfaceConfig->{'flow_control_send'};\n            print \"flow_control_send: \", $flow_control_send, \"\\n\";\n\n            my $redundancy_protocol = $tenGigabitInterfaceConfig->{'redundancy_protocol'};\n            print \"redundancy_protocol: \", $redundancy_protocol, \"\\n\";\n\n            my $enable = $tenGigabitInterfaceConfig->{'enable'};\n            print \"enable: \", $enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ten_gigabit_interface_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ten_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#tenGigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_ten_gigabit_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapTenGigabitNetworkList = ConvertNetworkPortToSoapData(\\@tenGigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ten_gigabit_interface_status(SOAP::Data->name('ports')->value(@soapTenGigabitNetworkList), \n                                                                        $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ten_gigabit_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @tenGigabitInterfaceStatuses = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $tenGigabitInterfaceStatus (@tenGigabitInterfaceStatuses) {\n            if (exists $tenGigabitInterfaceStatus->{'port'}) {\n                my $tenGigabitInterfacePort = $tenGigabitInterfaceStatus->{'port'};\n\n                my $slot = $tenGigabitInterfacePort->{'slot'};\n                my $port = $tenGigabitInterfacePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Ten Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $type = $tenGigabitInterfaceStatus->{'type'};\n            print \"type: \", $type, \"\\n\";\n\n            my $mode = $tenGigabitInterfaceStatus->{'mode'};\n            print \"mode: \", $mode, \"\\n\";\n\n            my $enabled = $tenGigabitInterfaceStatus->{'enabled'};\n            print \"enabled: \", $enabled, \"\\n\";\n\n            my $link_status = $tenGigabitInterfaceStatus->{'link_status'};\n            print \"link_status: \", $link_status, \"\\n\";\n\n            my $speed = $tenGigabitInterfaceStatus->{'speed'};\n            print \"speed: \", $speed, \"\\n\";\n\n            my $mac = $tenGigabitInterfaceStatus->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            my $accept_all_frame = $tenGigabitInterfaceStatus->{'accept_all_frame'};\n            print \"accept_all_frame: \", $accept_all_frame, \"\\n\";\n\n            my $mtu_size = $tenGigabitInterfaceStatus->{'mtu_size'};\n            print \"mtu_size: \", $mtu_size, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_interface_spanning_tree_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#gigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapGigabitNetworkList = ConvertNetworkPortToSoapData(\\@gigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_interface_spanning_tree_configuration(SOAP::Data->name('ports')->value(@soapGigabitNetworkList), \n                                                                                 $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @networkIfSpanningTreeConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $networkIfSpanningTreeConfig (@networkIfSpanningTreeConfigs) {\n            if (exists $networkIfSpanningTreeConfig->{'port'}) {\n                my $networkIfSpanningTreePort = $networkIfSpanningTreeConfig->{'port'};\n\n                my $slot = $networkIfSpanningTreePort->{'slot'};\n                my $port = $networkIfSpanningTreePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $spanning_tree_cost = $networkIfSpanningTreeConfig->{'spanning_tree_cost'};\n            print \"spanning_tree_cost: \", $spanning_tree_cost, \"\\n\";\n\n            my $spanning_tree_priority = $networkIfSpanningTreeConfig->{'spanning_tree_priority'};\n            print \"spanning_tree_priority: \", $spanning_tree_priority, \"\\n\";\n\n            my $spanning_tree_edgeport = $networkIfSpanningTreeConfig->{'spanning_tree_edgeport'};\n            print \"spanning_tree_edgeport: \", $spanning_tree_edgeport, \"\\n\";\n\n            my $spanning_tree_force_migration = $networkIfSpanningTreeConfig->{'spanning_tree_force_migration'};\n            print \"spanning_tree_force_migration: \", $spanning_tree_force_migration, \"\\n\";\n\n            my $spanning_tree_enable = $networkIfSpanningTreeConfig->{'spanning_tree_enable'};\n            print \"spanning_tree_enable: \", $spanning_tree_enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_interface_spanning_tree_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#tenGigabitNetworkList < 0) {\n    print(\"The list of networks returned from the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    my @soapTenGigabitNetworkList = ConvertNetworkPortToSoapData(\\@tenGigabitNetworkList);\n\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_interface_spanning_tree_configuration(SOAP::Data->name('ports')->value(@soapTenGigabitNetworkList), \n                                                                                 $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_interface_spanning_tree_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @networkIfSpanningTreeConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $networkIfSpanningTreeConfig (@networkIfSpanningTreeConfigs) {\n            if (exists $networkIfSpanningTreeConfig->{'port'}) {\n                my $networkIfSpanningTreePort = $networkIfSpanningTreeConfig->{'port'};\n\n                my $slot = $networkIfSpanningTreePort->{'slot'};\n                my $port = $networkIfSpanningTreePort->{'port'};\n\n                print \"----------------------------------------------\\n\";\n                print \"Ten Gigabit Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n                print \"----------------------------------------------\\n\\n\";\n\n                print \"port:\\n\";\n                print \" slot: \", $slot, \"\\n\";\n                print \" port: \", $port, \"\\n\";\n            }\n\n            my $spanning_tree_cost = $networkIfSpanningTreeConfig->{'spanning_tree_cost'};\n            print \"spanning_tree_cost: \", $spanning_tree_cost, \"\\n\";\n\n            my $spanning_tree_priority = $networkIfSpanningTreeConfig->{'spanning_tree_priority'};\n            print \"spanning_tree_priority: \", $spanning_tree_priority, \"\\n\";\n\n            my $spanning_tree_edgeport = $networkIfSpanningTreeConfig->{'spanning_tree_edgeport'};\n            print \"spanning_tree_edgeport: \", $spanning_tree_edgeport, \"\\n\";\n\n            my $spanning_tree_force_migration = $networkIfSpanningTreeConfig->{'spanning_tree_force_migration'};\n            print \"spanning_tree_force_migration: \", $spanning_tree_force_migration, \"\\n\";\n\n            my $spanning_tree_enable = $networkIfSpanningTreeConfig->{'spanning_tree_enable'};\n            print \"spanning_tree_enable: \", $spanning_tree_enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_mgmt_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_mgmt_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_mgmt_interface_configuration($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_mgmt_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n    my $mgmtIfConfig = $networkSoapResult->result;\n\n    if (exists $mgmtIfConfig->{'port'}) {\n        my $mgmtIfPort = $mgmtIfConfig->{'port'};\n\n        my $slot = $mgmtIfPort->{'slot'};\n        my $port = $mgmtIfPort->{'port'};\n\n        print \"----------------------------------------------\\n\";\n        print \"Management Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n        print \"----------------------------------------------\\n\\n\";\n\n        print \"port:\\n\";\n        print \" slot: \", $slot, \"\\n\";\n        print \" port: \", $port, \"\\n\";\n    }\n\n    my $description = $mgmtIfConfig->{'description'};\n    print \"description: \", $description, \"\\n\";\n\n    my $ip_address = $mgmtIfConfig->{'ip_address'};\n    print \"ip_address: \", $ip_address, \"\\n\";\n\n    my $ip_mask = $mgmtIfConfig->{'ip_mask'};\n    print \"ip_mask: \", $ip_mask, \"\\n\";\n\n    my $speed = $mgmtIfConfig->{'speed'};\n    print \"speed: \", $speed, \"\\n\";\n\n    my $enable = $mgmtIfConfig->{'enable'};\n    print \"enable: \", $enable, \"\\n\";\n    print \"\\n\";\n}\n\n#-------------------------------------------------------------------------------\n# get_mgmt_interface_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_mgmt_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_mgmt_interface_status($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_mgmt_interface_status\\\" method of the ARX Network interface.\\n\\n\";\n\n    my $mgmtIfStatus = $networkSoapResult->result;\n\n    if (exists $mgmtIfStatus->{'port'}) {\n        my $mgmtIfPort = $mgmtIfStatus->{'port'};\n\n        my $slot = $mgmtIfPort->{'slot'};\n        my $port = $mgmtIfPort->{'port'};\n\n        print \"----------------------------------------------\\n\";\n        print \"Management Interface: slot: \", $slot, \", port: \", $port, \"\\n\";\n        print \"----------------------------------------------\\n\\n\";\n\n        print \"port:\\n\";\n        print \" slot: \", $slot, \"\\n\";\n        print \" port: \", $port, \"\\n\";\n    }\n\n    my $type = $mgmtIfStatus->{'type'};\n    print \"type: \", $type, \"\\n\";\n\n    my $mode = $mgmtIfStatus->{'mode'};\n    print \"mode: \", $mode, \"\\n\";\n\n    my $enabled = $mgmtIfStatus->{'enabled'};\n    print \"enabled: \", $enabled, \"\\n\";\n\n    my $link_status = $mgmtIfStatus->{'link_status'};\n    print \"link_status: \", $link_status, \"\\n\";\n\n    my $speed = $mgmtIfStatus->{'speed'};\n    print \"speed: \", $speed, \"\\n\";\n\n    my $mac = $mgmtIfStatus->{'mac'};\n    print \"mac: \", $mac, \"\\n\";\n\n    my $accept_all_frame = $mgmtIfStatus->{'accept_all_frame'};\n    print \"accept_all_frame: \", $accept_all_frame, \"\\n\";\n\n    my $mtu_size = $mgmtIfStatus->{'mtu_size'};\n    print \"mtu_size: \", $mtu_size, \"\\n\";\n    print \"\\n\";\n}\n\n#-------------------------------------------------------------------------------\n# get_vlan_interface_list\n#-------------------------------------------------------------------------------\n\nmy @vlanList = ();\n\nprint \"Calling the \\\"get_vlan_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_vlan_interface_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_vlan_interface_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @vlanList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#vlanList < 0) {\n        print(\"The list of VLAN interfaces returned from the call to the \\\"get_vlan_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"VLAN Interfaces:\\n\";\n\n        foreach my $vlan (@vlanList) {\n            print \"$vlan\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_vlan_interface_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_vlan_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#vlanList < 0) {\n    print(\"The list of VLAN interfaces returned from the call to the \\\"get_vlan_interface_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_vlan_interface_configuration(SOAP::Data->name('ids')->value(@vlanList), \n                                                                        $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_vlan_interface_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @vlanConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $vlanConfig (@vlanConfigs) {\n            my $id = $vlanConfig->{'id'};\n\n            print \"----------------------------------------------\\n\";\n            print \"VLAN Interface: \", $id, \"\\n\";\n            print \"----------------------------------------------\\n\\n\";\n\n            print \"id: \", $id, \"\\n\";\n\n            my $description = $vlanConfig->{'description'};\n            print \"description: \", $description, \"\\n\";\n\n            my $ip_address = $vlanConfig->{'ip_address'};\n            print \"ip_address: \", $ip_address, \"\\n\";\n\n            my $ip_mask = $vlanConfig->{'ip_mask'};\n            print \"ip_mask: \", $ip_mask, \"\\n\";\n\n            my $redundancy = $vlanConfig->{'redundancy'};\n            print \"redundancy: \", $redundancy, \"\\n\";\n\n            my $enable = $vlanConfig->{'enable'};\n            print \"enable: \", $enable, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ip_proxy_list\n#-------------------------------------------------------------------------------\n\nmy @ipProxyList = ();\n\nprint \"Calling the \\\"get_ip_proxy_list\\\" method of the ARX Network interface.\\n\\n\";\n\n# Build a security header \n$securityHeader = getSecurityHeader($user, $pass);\n\n$networkSoapResult = $networkSoap->get_ip_proxy_list($securityHeader);\n\nif (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n    print(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n}\nelse {\n    print \"Printing the results of the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface.\\n\\n\";\n\n    @ipProxyList = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n    if ($#ipProxyList < 0) {\n        print(\"The list of IP Proxies returned from the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface was empty.\\n\");\n    }\n    else {\n        print \"IP Proxies:\\n\";\n\n        foreach my $ipProxy (@ipProxyList) {\n            print \"$ipProxy\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ip_proxy_configuration\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ip_proxy_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#ipProxyList < 0) {\n    print(\"The list of IP Proxies returned from the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ip_proxy_configuration(SOAP::Data->name('ip_address')->value(@ipProxyList), \n                                                                  $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ip_proxy_configuration\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @ipProxyConfigs = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $ipProxyConfig (@ipProxyConfigs) {\n            my $proxy_address = $ipProxyConfig->{'proxy_address'};\n\n            print \"----------------------------------------------\\n\";\n            print \"IP Proxy Address: \", $proxy_address, \"\\n\";\n            print \"----------------------------------------------\\n\\n\";\n\n            print \"proxy_address: \", $proxy_address, \"\\n\";\n\n            my $mask = $ipProxyConfig->{'mask'};\n            print \"mask: \", $mask, \"\\n\";\n\n            my $mac = $ipProxyConfig->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            if (exists $ipProxyConfig->{'processor'}) {\n                my $ipProxyProc = $ipProxyConfig->{'processor'};\n                print \"processor:\\n\";\n\n                my $slot = $ipProxyProc->{'slot'};\n                print \" slot: \", $slot, \"\\n\";\n\n                my $processor = $ipProxyProc->{'processor'};\n                print \" processor: \", $processor, \"\\n\";\n                print \"\\n\";\n            }\n\n            my $vlan = $ipProxyConfig->{'vlan'};\n            print \"vlan: \", $vlan, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n#-------------------------------------------------------------------------------\n# get_ip_proxy_status\n#-------------------------------------------------------------------------------\n\nprint \"Calling the \\\"get_ip_proxy_status\\\" method of the ARX Network interface.\\n\\n\";\n\nif ($#ipProxyList < 0) {\n    print(\"The list of IP Proxies returned from the call to the \\\"get_ip_proxy_list\\\" method of the ARX Network interface was empty.\\n\");\n}\nelse {\n    # Build a security header \n    $securityHeader = getSecurityHeader($user, $pass);\n\n    $networkSoapResult = $networkSoap->get_ip_proxy_status(SOAP::Data->name('ip_address')->value(@ipProxyList), \n                                                           $securityHeader);\n\n    if (defined $networkSoapResult->fault && $networkSoapResult->fault) {\n        confess(\"SOAP request failed:\\n\" . objdump($networkSoapResult->fault) . \"\\n\");\n    }\n    else {\n        print \"Printing the results of the call to the \\\"get_ip_proxy_status\\\" method of the ARX Network interface.\\n\\n\";\n\n        my @ipProxyStatuses = ($networkSoapResult->result, $networkSoapResult->paramsout);\n\n        foreach my $ipProxyStatus (@ipProxyStatuses) {\n            my $proxy_address = $ipProxyStatus->{'proxy_address'};\n            print \"proxy_address: \", $proxy_address, \"\\n\";\n\n            my $mac = $ipProxyStatus->{'mac'};\n            print \"mac: \", $mac, \"\\n\";\n\n            my $owner = $ipProxyStatus->{'owner'};\n            print \"owner: \", $owner, \"\\n\";\n\n            my $in_use_by = $ipProxyStatus->{'in_use_by'};\n            print \"in_use_by: \", $in_use_by, \"\\n\";\n            print \"\\n\";\n        }\n\n        print \"\\n\";\n    }\n}\n\n\n#-------------------------------------------------------------------------------\n# End of main program logic\n#-------------------------------------------------------------------------------\n\n\n#-------------------------------------------------------------------------------\n# sub usage\n#-------------------------------------------------------------------------------\nsub usage\n{\n    print \"\\nUsage: ARXNetworkExample.pl --url  --user  --pass \\n\";\n    print \"\\n\";\n    print \"Argument  Description\\n\";\n    print \"--------  -----------\\n\";\n    print \"--url     The base URL of the web service on the ARX. Both http and https\\n\";\n    print \"          are supported. The format is:\\n\";\n    print \"\\n\";\n    print \"          http(s)://:\\n\";\n    print \"\\n\";\n    print \"          : DNS resolvable hostname or IP address\\n\";\n    print \"          :     83 for http or 843 for https\\n\";\n    print \"\\n\";\n    print \"--user    The username for authentication.\\n\";\n    print \"--pass    The password for authentication.\\n\";\n    print \"\\n\";\n}\n\n#-------------------------------------------------------------------------------\n# sub getSecurityHeader(user, pass)\n#\n# This subroutine builds a security header that will be used for\n# authentication.  This type of security header is required for all calls to\n# iControl::ARX interfaces, so it makes sense to have this subroutine stored in\n# a library for common access.\n#-------------------------------------------------------------------------------\nsub getSecurityHeader\n{\n    my $user = shift;\n    my $pass = shift;\n    my $now = time();\n    my $then = time() + 60;\n    my $created = strftime(\"%Y-%m-%dT%H:%M:%S\", gmtime($now)) . 'Z';\n    my $expires = strftime(\"%Y-%m-%dT%H:%M:%S\", gmtime($then)) . 'Z';\n\n    my $secExt = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';\n    my $secUtil = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';\n    my $securityHeader = SOAP::Header->name(\"wsse:Security\")->attr(\n            {\n                'xmlns:wsse'=> $secExt,\n                'xmlns:wsu'=> $secUtil\n            }\n    );\n    my $timestamp = SOAP::Data->name(\"wsu:Timestamp\" =>\n                            \\SOAP::Data->value(\n                                SOAP::Data->name('wsu:Created')->value($created)\n                                                               ->type(''),\n                                SOAP::Data->name('wsu:Expires')->value($expires)\n                                                               ->type('')));\n    my $usernameTokenType = \n        \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\";\n    my $usernameToken = SOAP::Data->name(\"wsse:UsernameToken\" =>\n                            \\SOAP::Data->value(\n                                SOAP::Data->name('wsse:Username')->value($user)\n                                                                 ->type(''),\n                                SOAP::Data->name('wsse:Password')->value($pass)\n                                                                 ->type('')\n                                                                 ->attr({'Type'=>$usernameTokenType})));\n\n    $securityHeader->value(\\SOAP::Data->value($timestamp, $usernameToken));\n\n    return $securityHeader;\n}\n\nsub objdump\n{\n    my ($obj, $indent) = @_;\n    my $content = '';\n\n    if (!defined $obj) {\n        return $content;\n    }\n\n    if (!defined $indent) {\n        $indent = '    ';\n    }\n\n    my $type = ref $obj;\n\n    if (!defined $type || $type eq '' || $type eq 'SCALAR') {\n        $content = $content . $indent . $obj . \"\\n\";\n    }\n    elsif ($type eq 'ARRAY') {\n        foreach my $node (@$obj) {\n            $content = $content . objdump($node, $indent);\n        }\n    }\n    else {\n        my $key;\n        my $value;\n\n        while (($key, $value) = each %$obj) {\n            my $type2 = ref $value;\n            if (!defined $type2 || $type2 eq '' || $type2 eq 'SCALAR') {\n                $content = $content . $indent . \"\\'$key\\' => $value;\\n\";\n            }\n            else {\n                $content = $content . $indent . \"\\'$key\\' => {\\n\";\n                $content = $content . objdump($value, $indent.'    ');\n                $content = $content . $indent . \"}\\n\";\n            }\n        }\n    }\n\n    return $content;\n}\n\nsub ConvertNetworkPortToSoapData\n{\n    my ($portListRef) = @_;\n    my @dataArray;\n    \n    foreach my $port (@$portListRef) {\n        my $sport = SOAP::Data->name(\"ports\")->value(\\SOAP::Data->value(\n                                                    SOAP::Data->name(\"slot\")->value($port->{'slot'}),\n                                                    SOAP::Data->name(\"port\")->value($port->{'port'})));\n         push(@dataArray, $sport);\n    }\n    \n    return @dataArray;\n}
","kudosSumWeight":0,"postTime":"2015-02-24T13:58:22.000-08:00","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"TagEdge","cursor":"MjUuNHwyLjF8b3wxMHxfTlZffDE","node":{"__typename":"Tag","id":"tag:devops","text":"devops","time":"2011-10-19T17:50:55.000-07:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuNHwyLjF8b3wxMHxfTlZffDI","node":{"__typename":"Tag","id":"tag:iControl","text":"iControl","time":"2022-01-24T02:29:45.068-08:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuNHwyLjF8b3wxMHxfTlZffDM","node":{"__typename":"Tag","id":"tag:perl","text":"perl","time":"2022-01-24T02:31:41.712-08:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}}]},"timeToRead":20,"rawTeaser":"","introduction":"","currentRevision":{"__ref":"Revision:revision:278561_3"},"latestVersion":{"__typename":"FriendlyVersion","major":"3","minor":"0"},"metrics":{"__typename":"MessageMetrics","views":356},"read":false,"visibilityScope":"PUBLIC","canonicalUrl":null,"seoTitle":null,"seoDescription":null,"placeholder":false,"originalMessageForPlaceholder":null,"contributors":{"__typename":"UserConnection","edges":[]},"nonCoAuthorContributors":{"__typename":"UserConnection","edges":[]},"coAuthors":{"__typename":"UserConnection","edges":[]},"tkbMessagePolicies":{"__typename":"TkbMessagePolicies","canDoAuthoringActionsOnTkb":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.tkb.policy_can_do_authoring_action.accessDenied","key":"error.lithium.policies.tkb.policy_can_do_authoring_action.accessDenied","args":[]}}},"archivalData":null,"replies":{"__typename":"MessageConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"customFields":[],"revisions({\"constraints\":{\"isPublished\":{\"eq\":true}}})":{"__typename":"RevisionConnection","totalCount":3}},"Conversation:conversation:278561":{"__typename":"Conversation","id":"conversation:278561","solved":false,"topic":{"__ref":"TkbTopicMessage:message:278561"},"lastPostingActivityTime":"2023-06-06T12:24:41.964-07:00","lastPostTime":"2015-02-24T13:58:22.000-08:00","unreadReplyCount":0,"isSubscribed":false},"ModerationData:moderation_data:278561":{"__typename":"ModerationData","id":"moderation_data:278561","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"Revision:revision:278561_3":{"__typename":"Revision","id":"revision:278561_3","lastEditTime":"2023-06-06T12:24:41.964-07:00"},"CachedAsset:theme:customTheme1-1752854978764":{"__typename":"CachedAsset","id":"theme:customTheme1-1752854978764","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["custom"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"android-chrome-512x512-1748534255255.png","imageLastModified":"1748534256856","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"F5-devCentral-HR-color-reverse-1750868999153.png","imageLastModified":"1750869001512","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"fluid","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_PAGE_CONTENT","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"5px","borderRadius":"5px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"14px","paddingXHero":"42px","fontStyle":"NORMAL","fontWeight":"500","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"#0072B0","primaryBgHoverColor":"hsl(201.10000000000002, 100%, 29.3%)","primaryBgActiveColor":"hsl(201.10000000000002, 100%, 24.2%)","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px #0072B0, 0 0 0 4px rgba(0, 114, 176, 0.2)","secondaryTextColor":"var(--lia-bs-white)","secondaryTextHoverColor":"var(--lia-bs-white)","secondaryTextActiveColor":"var(--lia-bs-white)","secondaryBgColor":"#0072B0","secondaryBgHoverColor":"hsl(201.10000000000002, 100%, 29.3%)","secondaryBgActiveColor":"hsl(201.10000000000002, 100%, 24.2%)","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px #0072B0, 0 0 0 4px rgba(0, 114, 176, 0.2)","tertiaryTextColor":"#0072B0","tertiaryTextHoverColor":"hsl(201.10000000000002, 100%, 32.8%)","tertiaryTextActiveColor":"hsl(201.10000000000002, 100%, 31.1%)","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"rgba(0, 114, 176, 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid rgba(0, 114, 176, 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px #0072B0, 0 0 0 4px rgba(0, 114, 176, 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-300)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-300-h), var(--lia-bs-gray-300-s), calc(var(--lia-bs-gray-300-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-300-h), var(--lia-bs-gray-300-s), calc(var(--lia-bs-gray-300-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px #0072B0, 0 0 0 4px rgba(0, 114, 176, 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"DARK","sideContent":"DARK","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.16)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.12)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-primary)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"500","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","defaultMessageFontFamily":"var(--lia-bs-font-family-base)","forumColor":"#0C5C8D","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#62C026","blogColor":"#730015","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#C20025","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#F3704B","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#EE4B5B","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#491B62","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#949494","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#0072B0","secondary":"#333333","bodyText":"#222222","bodyBg":"#F5F5F5","info":"#1D9CD3","success":"#62C026","warning":"#FFD651","danger":"#C20025","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#C20025","#081B85","#009639","#B3C6D7","#7CC0EB","#F29A36","#B2D7EB","#66AFD7","#007ABC","#343434","#0E6EB9","#0072B0"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"email":{"link":{"color":"#0069D4","hoverColor":"#0061c2","decoration":"none","hoverDecoration":"underline","__typename":"EmailLinkSettings"},"border":{"color":"#e4e4e4","__typename":"EmailBorderSettings"},"buttons":{"borderRadiusLg":"5px","paddingXLg":"16px","paddingYLg":"7px","fontWeight":"700","primaryTextColor":"#ffffff","primaryTextHoverColor":"#ffffff","primaryBgColor":"#0069D4","primaryBgHoverColor":"#005cb8","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","__typename":"EmailButtonsSettings"},"panel":{"borderRadius":"5px","borderColor":"#e4e4e4","__typename":"EmailPanelSettings"},"__typename":"EmailThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Neusa Next Pro Wide Bold","fontStyle":"NORMAL","fontWeight":"700","h1FontSize":"30px","h2FontSize":"25px","h3FontSize":"20px","h4FontSize":"18px","h5FontSize":"16px","h6FontSize":"16px","lineHeight":"1.1","subHeaderFontSize":"11px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":null,"imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"14px","defaultMessageHeaderMarginBottom":"10px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"10px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"14px","specialMessageHeaderMarginBottom":"10px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"10px","tableBgColor":"transparent","tableBorderColor":"var(--lia-bs-gray-700)","tableBorderStyle":"solid","tableCellPaddingX":"5px","tableCellPaddingY":"5px","tableTextColor":"var(--lia-bs-body-color)","tableVerticalAlign":"middle","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Proxima Nova A Medium","fontStyleBase":"NORMAL","fontWeightBase":"500","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.2","fontSizeBase":"15px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"13px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[{"source":"SERVER","name":"Proxima Nova A Medium","styles":[{"style":"NORMAL","weight":"500","__typename":"FontStyleData"}],"assetNames":["ProximaNovaAMedium-normal-500.woff2"],"__typename":"CustomFont"},{"source":"SERVER","name":"Neusa Next Pro Wide Bold","styles":[{"style":"NORMAL","weight":"700","__typename":"FontStyleData"}],"assetNames":["NeusaNextProWideBold-normal-700.woff2"],"__typename":"CustomFont"}],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1752854977732","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:quilt:f5.prod:pages/kbs/TkbMessagePage:board:codeshare-1752854976767":{"__typename":"CachedAsset","id":"quilt:f5.prod:pages/kbs/TkbMessagePage:board:codeshare-1752854976767","value":{"id":"TkbMessagePage","container":{"id":"Common","headerProps":{"backgroundImageProps":null,"backgroundColor":null,"addComponents":null,"removeComponents":["community.widget.bannerWidget"],"componentOrder":null,"__typename":"QuiltContainerSectionProps"},"headerComponentProps":{"community.widget.breadcrumbWidget":{"disableLastCrumbForDesktop":false}},"footerProps":null,"footerComponentProps":null,"items":[{"id":"message-list","layout":"MAIN_SIDE","bgColor":"transparent","showTitle":true,"showDescription":true,"textPosition":"CENTER","textColor":"var(--lia-bs-body-color)","sectionEditLevel":null,"bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"MainSideQuiltSection","columnMap":{"main":[{"id":"tkbs.widget.tkbArticleWidget","className":"lia-tkb-container","props":{"contributorListType":"panel","showHelpfulness":false,"showTimestamp":true,"showGuideNavigationSection":true,"showVersion":true,"lazyLoad":false,"editLevel":"CONFIGURE"},"__typename":"QuiltComponent"}],"side":[{"id":"featuredWidgets.widget.featuredContentWidget","className":null,"props":{"instanceId":"featuredWidgets.widget.featuredContentWidget-1702666556326","layoutProps":{"layout":"card","layoutOptions":{"useRepliesCount":false,"useAuthorRank":false,"useTimeToRead":true,"useKudosCount":false,"useViewCount":true,"usePreviewMedia":true,"useBody":false,"useCenteredCardContent":false,"useTags":true,"useTimestamp":false,"useBoardLink":true,"useAuthorLink":false,"useSolvedBadge":true}},"titleSrOnly":false,"showPager":true,"pageSize":3,"lazyLoad":true},"__typename":"QuiltComponent"},{"id":"messages.widget.relatedContentWidget","className":null,"props":{"hideIfEmpty":true,"enablePagination":true,"useTitle":true,"listVariant":{"type":"listGroup"},"pageSize":3,"style":"list","pagerVariant":{"type":"loadMore"},"viewVariant":{"type":"inline","props":{"useRepliesCount":true,"useMedia":true,"useAuthorRank":false,"useNode":true,"useTimeToRead":true,"useSpoilerFreeBody":true,"useKudosCount":true,"useNodeLink":true,"useViewCount":true,"usePreviewMedia":false,"useBody":false,"timeStampType":"postTime","useTags":true,"clampSubjectLines":2,"useBoardIcon":false,"useMessageTimeLink":true,"clampBodyLines":3,"useTextBody":true,"useSolvedBadge":true,"useAvatar":true,"useAuthorLogin":true,"useUnreadCount":true}},"lazyLoad":true,"panelType":"divider"},"__typename":"QuiltComponent"}],"__typename":"MainSideSectionColumns"}}],"__typename":"QuiltContainer"},"__typename":"Quilt","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1752854977732","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit My Settings.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. Resend email."},"localOverride":false},"CachedAsset:text:en_US-pages/kbs/TkbMessagePage-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-pages/kbs/TkbMessagePage-1752854977732","value":{"title":"{contextMessageSubject} | {communityTitle}","errorMissing":"This article cannot be found","name":"TKB Message Page","section.message-list.title":"","archivedMessageTitle":"This Content Has Been Archived","section.erPqcf.title":"","section.erPqcf.description":"","section.message-list.description":""},"localOverride":false},"CachedAsset:quiltWrapper:f5.prod:Common:1752854977236":{"__typename":"CachedAsset","id":"quiltWrapper:f5.prod:Common:1752854977236","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"#343434","items":[{"id":"custom.widget.GainsightShared","props":{"widgetVisibility":"signedInOnly","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Beta_MetaNav","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"community.widget.navbarWidget","props":{"showUserName":false,"showRegisterLink":true,"useIconLanguagePicker":true,"useLabelLanguagePicker":true,"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","linkFontWeight":"700","controllerHighlightColor":"#F29A36","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkFontSize":"15px","linkBoxShadowHover":"none","backgroundOpacity":1,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","linkTextBorderBottom":"none","hamburgerColor":"var(--lia-nav-controller-icon-color)","brandLogoHeight":"48px","linkLetterSpacing":"normal","linkBgHoverColor":"transparent","collapseMenuDividerOpacity":0.16,"paddingBottom":"10px","dropdownPaddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"unset","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","linkJustifyContent":"center","linkColor":"var(--lia-bs-white)","collapseMenuDividerBg":"var(--lia-nav-link-color)","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","controllerTextColor":"var(--lia-nav-controller-icon-color)","background":{"imageAssetName":"","color":"var(--lia-bs-body-color)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-white)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"2px solid var(--lia-bs-white)","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","linkPaddingX":"10px","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","paddingTop":"10px","linkPaddingY":"5px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.1)","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkBgColor":"transparent","linkDropdownPaddingY":"9px","controllerIconColor":"var(--lia-bs-white)","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"var(--lia-bs-white)"},"links":{"sideLinks":[],"logoLinks":[],"mainLinks":[{"children":[{"linkType":"INTERNAL","id":"migrated-link-1","params":{"boardId":"TechnicalForum","categoryId":"Forums"},"routeName":"ForumBoardPage"},{"linkType":"INTERNAL","id":"migrated-link-2","params":{"boardId":"WaterCooler","categoryId":"Forums"},"routeName":"ForumBoardPage"}],"linkType":"INTERNAL","id":"migrated-link-0","params":{"categoryId":"Forums"},"routeName":"CategoryPage"},{"children":[{"linkType":"INTERNAL","id":"migrated-link-4","params":{"boardId":"codeshare","categoryId":"CrowdSRC"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"migrated-link-5","params":{"boardId":"communityarticles","categoryId":"CrowdSRC"},"routeName":"TkbBoardPage"}],"linkType":"INTERNAL","id":"migrated-link-3","params":{"categoryId":"CrowdSRC"},"routeName":"CategoryPage"},{"children":[{"linkType":"INTERNAL","id":"migrated-link-7","params":{"boardId":"TechnicalArticles","categoryId":"Articles"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"article-series","params":{"boardId":"article-series","categoryId":"Articles"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"security-insights","params":{"boardId":"security-insights","categoryId":"Articles"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"migrated-link-8","params":{"boardId":"DevCentralNews","categoryId":"Articles"},"routeName":"TkbBoardPage"}],"linkType":"INTERNAL","id":"migrated-link-6","params":{"categoryId":"Articles"},"routeName":"CategoryPage"},{"children":[{"linkType":"INTERNAL","id":"migrated-link-10","params":{"categoryId":"CommunityGroups"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"migrated-link-11","params":{"categoryId":"F5-Groups"},"routeName":"CategoryPage"}],"linkType":"INTERNAL","id":"migrated-link-9","params":{"categoryId":"GroupsCategory"},"routeName":"CategoryPage"},{"children":[],"linkType":"INTERNAL","id":"migrated-link-12","params":{"boardId":"Events","categoryId":"top"},"routeName":"EventBoardPage"},{"children":[],"linkType":"INTERNAL","id":"migrated-link-13","params":{"boardId":"Suggestions","categoryId":"top"},"routeName":"IdeaBoardPage"},{"children":[],"linkType":"EXTERNAL","id":"Common-external-link","url":"https://community.f5.com/c/how-do-i","target":"SELF"}]},"className":"QuiltComponent_lia-component-edit-mode__lQ9Z6","showSearchIcon":false,"languagePickerStyle":"iconAndLabel"},"__typename":"QuiltComponent"},{"id":"community.widget.bannerWidget","props":{"backgroundColor":"#343434","visualEffects":{"showBottomBorder":false},"backgroundImageProps":{"backgroundSize":"COVER","backgroundPosition":"CENTER_CENTER","backgroundRepeat":"NO_REPEAT"},"fontColor":"var(--lia-bs-white)"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":{"backgroundColor":"#343434","linkHighlightColor":"#FFFFFF","visualEffects":{"showBottomBorder":true},"backgroundOpacity":100,"linkTextColor":"#FFFFFF"},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"var(--lia-bs-body-color)","items":[{"id":"custom.widget.Beta_Footer","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Tag_Manager_Helper","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Consent_Blackbar","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1752854977732","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist.","redirectToRelatedPage.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.message":"The content you are trying to access is archived","redirectToRelatedPage.message":"The content you are trying to access is archived","relatedUrl.archivalLink.flyoutMessage":"The content you are trying to access is archived View Archived Content"},"localOverride":false},"CachedAsset:component:custom.widget.GainsightShared-en-us-1752854997353":{"__typename":"CachedAsset","id":"component:custom.widget.GainsightShared-en-us-1752854997353","value":{"component":{"id":"custom.widget.GainsightShared","template":{"id":"GainsightShared","markupLanguage":"HTML","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"Shared functions for Gainsight integration","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.GainsightShared","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"TEXTHTML","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"Shared functions for Gainsight integration","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Beta_MetaNav-en-us-1752854997353":{"__typename":"CachedAsset","id":"component:custom.widget.Beta_MetaNav-en-us-1752854997353","value":{"component":{"id":"custom.widget.Beta_MetaNav","template":{"id":"Beta_MetaNav","markupLanguage":"HANDLEBARS","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"MetaNav menu at the top of every page.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Beta_MetaNav","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"MetaNav menu at the top of every page.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Beta_Footer-en-us-1752854997353":{"__typename":"CachedAsset","id":"component:custom.widget.Beta_Footer-en-us-1752854997353","value":{"component":{"id":"custom.widget.Beta_Footer","template":{"id":"Beta_Footer","markupLanguage":"HANDLEBARS","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"DevCentral´s custom footer.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Beta_Footer","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"DevCentral´s custom footer.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Tag_Manager_Helper-en-us-1752854997353":{"__typename":"CachedAsset","id":"component:custom.widget.Tag_Manager_Helper-en-us-1752854997353","value":{"component":{"id":"custom.widget.Tag_Manager_Helper","template":{"id":"Tag_Manager_Helper","markupLanguage":"HANDLEBARS","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"Helper widget to inject Tag Manager scripts into head element","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Tag_Manager_Helper","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"Helper widget to inject Tag Manager scripts into head element","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Consent_Blackbar-en-us-1752854997353":{"__typename":"CachedAsset","id":"component:custom.widget.Consent_Blackbar-en-us-1752854997353","value":{"component":{"id":"custom.widget.Consent_Blackbar","template":{"id":"Consent_Blackbar","markupLanguage":"HTML","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Consent_Blackbar","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"TEXTHTML","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1752854977732","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBanner-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBanner-1752854977732","value":{"messageMarkedAsSpam":"This post has been marked as spam","messageMarkedAsSpam@board:TKB":"This article has been marked as spam","messageMarkedAsSpam@board:BLOG":"This post has been marked as spam","messageMarkedAsSpam@board:FORUM":"This discussion has been marked as spam","messageMarkedAsSpam@board:OCCASION":"This event has been marked as spam","messageMarkedAsSpam@board:IDEA":"This idea has been marked as spam","manageSpam":"Manage Spam","messageMarkedAsAbuse":"This post has been marked as abuse","messageMarkedAsAbuse@board:TKB":"This article has been marked as abuse","messageMarkedAsAbuse@board:BLOG":"This post has been marked as abuse","messageMarkedAsAbuse@board:FORUM":"This discussion has been marked as abuse","messageMarkedAsAbuse@board:OCCASION":"This event has been marked as abuse","messageMarkedAsAbuse@board:IDEA":"This idea has been marked as abuse","preModCommentAuthorText":"This comment will be published as soon as it is approved","preModCommentModeratorText":"This comment is awaiting moderation","messageMarkedAsOther":"This post has been rejected due to other reasons","messageMarkedAsOther@board:TKB":"This article has been rejected due to other reasons","messageMarkedAsOther@board:BLOG":"This post has been rejected due to other reasons","messageMarkedAsOther@board:FORUM":"This discussion has been rejected due to other reasons","messageMarkedAsOther@board:OCCASION":"This event has been rejected due to other reasons","messageMarkedAsOther@board:IDEA":"This idea has been rejected due to other reasons","messageArchived":"This post was archived on {date}","relatedUrl":"View Related Content","relatedContentText":"Showing related content","archivedContentLink":"View Archived Content"},"localOverride":false},"CachedAsset:text:en_US-components/tkbs/TkbArticleWidget-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/tkbs/TkbArticleWidget-1752854977732","value":{},"localOverride":false},"Category:category:Forums":{"__typename":"Category","id":"category:Forums","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Forum:board:TechnicalForum":{"__typename":"Forum","id":"board:TechnicalForum","forumPolicies":{"__typename":"ForumPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Forum:board:WaterCooler":{"__typename":"Forum","id":"board:WaterCooler","forumPolicies":{"__typename":"ForumPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Articles":{"__typename":"Category","id":"category:Articles","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:TechnicalArticles":{"__typename":"Tkb","id":"board:TechnicalArticles","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:DevCentralNews":{"__typename":"Tkb","id":"board:DevCentralNews","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:GroupsCategory":{"__typename":"Category","id":"category:GroupsCategory","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:F5-Groups":{"__typename":"Category","id":"category:F5-Groups","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:CommunityGroups":{"__typename":"Category","id":"category:CommunityGroups","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Occasion:board:Events":{"__typename":"Occasion","id":"board:Events","boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"occasionPolicies":{"__typename":"OccasionPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Idea:board:Suggestions":{"__typename":"Idea","id":"board:Suggestions","boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"ideaPolicies":{"__typename":"IdeaPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:communityarticles":{"__typename":"Tkb","id":"board:communityarticles","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:security-insights":{"__typename":"Tkb","id":"board:security-insights","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:article-series":{"__typename":"Tkb","id":"board:article-series","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"CachedAsset:text:en_US-components/community/Navbar-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1752854977732","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content","migrated-link-9":"Groups","migrated-link-7":"Technical Articles","migrated-link-8":"DevCentral News","migrated-link-1":"Technical Forum","migrated-link-10":"Community Groups","migrated-link-2":"Water Cooler","migrated-link-11":"F5 Groups","Common-external-link":"How Do I...?","migrated-link-0":"Forums","article-series":"Article Series","migrated-link-5":"Community Articles","migrated-link-6":"Articles","security-insights":"Security Insights","migrated-link-3":"CrowdSRC","migrated-link-4":"CodeShare","migrated-link-12":"Events","migrated-link-13":"Suggestions"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1752854977732","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1752854977732","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1752854977732","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1752854977732","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLink-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1752854977732","value":{"place":"Place {name}"},"localOverride":false},"QueryVariables:TopicReplyList:message:278561:3":{"__typename":"QueryVariables","id":"TopicReplyList:message:278561:3","value":{"id":"message:278561","first":10,"sorts":{"postTime":{"direction":"ASC"}},"repliesFirst":3,"repliesFirstDepthThree":1,"repliesSorts":{"postTime":{"direction":"ASC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":true,"useBody":true,"useKudosCount":true,"useTimeToRead":false,"useMedia":false,"useReadOnlyIcon":false,"useRepliesCount":true,"useSearchSnippet":false,"useAcceptedSolutionButton":false,"useSolvedBadge":false,"useAttachments":false,"attachmentsFirst":5,"useTags":true,"useNodeAncestors":false,"useUserHoverCard":false,"useNodeHoverCard":false,"useModerationStatus":true,"usePreviewSubjectModal":false,"useMessageStatus":true}},"ROOT_MUTATION":{"__typename":"Mutation"},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1752854977732","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1752854977732","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewStandard-1752854977732","value":{"anonymous":"Anonymous","author":"{messageAuthorLogin}","authorBy":"{messageAuthorLogin}","board":"{messageBoardTitle}","replyToUser":" to {parentAuthor}","showMoreReplies":"Show More","replyText":"Reply","repliesText":"Replies","markedAsSolved":"Marked as Solution","messageStatus":"Status: ","statusChanged":"Status changed: {previousStatus} to {currentStatus}","statusAdded":"Status added: {status}","statusRemoved":"Status removed: {status}","labelExpand":"expand replies","labelCollapse":"collapse replies","unhelpfulReason.reason1":"Content is outdated","unhelpfulReason.reason2":"Article is missing information","unhelpfulReason.reason3":"Content is for a different Product","unhelpfulReason.reason4":"Doesn't match what I was searching for"},"localOverride":false},"CachedAsset:text:en_US-components/messages/ThreadedReplyList-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/ThreadedReplyList-1752854977732","value":{"title":"{count, plural, one{# Reply} other{# Replies}}","title@board:BLOG":"{count, plural, one{# Comment} other{# Comments}}","title@board:TKB":"{count, plural, one{# Comment} other{# Comments}}","title@board:IDEA":"{count, plural, one{# Comment} other{# Comments}}","title@board:OCCASION":"{count, plural, one{# Comment} other{# Comments}}","noRepliesTitle":"No Replies","noRepliesTitle@board:BLOG":"No Comments","noRepliesTitle@board:TKB":"No Comments","noRepliesTitle@board:IDEA":"No Comments","noRepliesTitle@board:OCCASION":"No Comments","noRepliesDescription":"Be the first to reply","noRepliesDescription@board:BLOG":"Be the first to comment","noRepliesDescription@board:TKB":"Be the first to comment","noRepliesDescription@board:IDEA":"Be the first to comment","noRepliesDescription@board:OCCASION":"Be the first to comment","messageReadOnlyAlert:BLOG":"Comments have been turned off for this post","messageReadOnlyAlert:TKB":"Comments have been turned off for this article","messageReadOnlyAlert:IDEA":"Comments have been turned off for this idea","messageReadOnlyAlert:FORUM":"Replies have been turned off for this discussion","messageReadOnlyAlert:OCCASION":"Comments have been turned off for this event"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyCallToAction-1752854977732","value":{"leaveReply":"Leave a reply...","leaveReply@board:BLOG@message:root":"Leave a comment...","leaveReply@board:TKB@message:root":"Leave a comment...","leaveReply@board:IDEA@message:root":"Leave a comment...","leaveReply@board:OCCASION@message:root":"Leave a comment...","repliesTurnedOff.FORUM":"Replies are turned off for this topic","repliesTurnedOff.BLOG":"Comments are turned off for this topic","repliesTurnedOff.TKB":"Comments are turned off for this topic","repliesTurnedOff.IDEA":"Comments are turned off for this topic","repliesTurnedOff.OCCASION":"Comments are turned off for this topic","infoText":"Stop poking me!"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1752854977732","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1752854977732","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1752854977732","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRevision-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRevision-1752854977732","value":{"lastUpdatedDatePublished":"{publishCount, plural, one{Published} other{Updated}} {date}","lastUpdatedDateDraft":"Created {date}","version":"Version {major}.{minor}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1752854977732","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageAuthorBio-1752854977732","value":{"sendMessage":"Send Message","actionMessage":"Follow this blog board to get notified when there's new activity","coAuthor":"CO-PUBLISHER","contributor":"CONTRIBUTOR","userProfile":"View Profile","iconlink":"Go to {name} {type}"},"localOverride":false},"CachedAsset:text:en_US-components/guides/GuideBottomNavigation-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/guides/GuideBottomNavigation-1752854977732","value":{"nav.label":"Previous/Next Page","nav.previous":"Previous","nav.next":"Next"},"localOverride":false},"CachedAsset:text:en_US-components/customComponent/CustomComponent-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/customComponent/CustomComponent-1752854977732","value":{"errorMessage":"Error rendering component id: {customComponentId}","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagView/TagViewChip-1752854977732","value":{"tagLabelName":"Tag name {tagName}"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1752854977732","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1752854977732","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserRegistrationDate-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserRegistrationDate-1752854977732","value":{"noPrefix":"{date}","withPrefix":"Joined {date}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1752854977732","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1752854977732":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1752854977732","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false}}}},"page":"/kbs/TkbMessagePage/TkbMessagePage","query":{"boardId":"codeshare","messageSubject":"perl-arx-network","messageId":"278561"},"buildId":"3XH0qYWYCnEYycuN5W4S8","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","surveysEnabled":true,"openTelemetry":{"clientEnabled":false,"configName":"f5","serviceVersion":"25.4.0","universe":"prod","collector":"http://localhost:4318","logLevel":"error","routeChangeAllowedTime":"5000","headers":"","enableDiagnostic":"false","maxAttributeValueLength":"4095"},"apolloDevToolsEnabled":false,"quiltLazyLoadThreshold":"3"},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["components_customComponent_CustomComponent","components_community_Navbar_NavbarWidget","components_community_Breadcrumb_BreadcrumbWidget","components_tkbs_TkbArticleWidget","components_messages_MessageView_MessageViewStandard","components_messages_ThreadedReplyList","components_customComponent_CustomComponentContent_TemplateContent","components_customComponent_CustomComponentContent_HtmlContent","shared_client_components_common_List_UnwrappedList","components_tags_TagView","components_tags_TagView_TagViewChip","components_customComponent_CustomComponentContent_CustomComponentScripts"],"appGip":true,"scriptLoader":[]}