Documentation
¶
Overview ¶
Package junos provides automation for Junos (Juniper Networks) devices, as well as interaction with Junos Space.
Index ¶
- type AddressEntry
- type AddressFamily
- type AddressSet
- type ArpEntry
- type ArpTable
- type AuthMethod
- type BGPPeer
- type BGPTable
- type Chassis
- type CommitEntry
- type CommitHistory
- type EnvironmentItem
- type EnvironmentTable
- type EthernetSwitchingTable
- type FileSystem
- type FirewallPolicy
- type HardwareInventory
- type IKESAs
- type IKESecurityAssociation
- type IPSecSABlock
- type IPSecSAs
- type IPSecSecurityAssociation
- type ISISDatabaseEntry
- type ISISDatabaseTable
- type Interfaces
- type Junos
- func (j *Junos) Close() error
- func (j *Junos) Command(cmd string, format ...string) (string, error)
- func (j *Junos) CommandText(cmd string) (string, error)
- func (j *Junos) Commit() error
- func (j *Junos) CommitAt(timeStr string, message ...string) error
- func (j *Junos) CommitCheck() error
- func (j *Junos) CommitConfirm(delay int) error
- func (j *Junos) CommitFull() error
- func (j *Junos) CommitHistory() (*CommitHistory, error)
- func (j *Junos) Config(path interface{}, format string, commit bool) error
- func (j *Junos) ConvertAddressBook() []string
- func (j *Junos) Diff(rollback int) (string, error)
- func (j *Junos) GatherFacts() error
- func (j *Junos) GetConfig(format string, section ...string) (string, error)
- func (j *Junos) HasPendingChanges() (bool, error)
- func (j *Junos) Lock() error
- func (j *Junos) RPC(rpc string) (string, error)
- func (j *Junos) Reboot() error
- func (j *Junos) Rescue(action string) error
- func (j *Junos) Rollback(option interface{}) error
- func (j *Junos) SetCommitTimeout(delay int)
- func (j *Junos) Unlock() error
- func (j *Junos) View(view string, option ...string) (*Views, error)
- type L2MACEntry
- type LLDPNeighbor
- type LLDPNeighbors
- type LogicalInterface
- type MACEntry
- type MPLSLSPEntry
- type MPLSLSPTable
- type Module
- type NetconfOK
- type OSPFAreaHeader
- type OSPFDatabaseEntry
- type OSPFDatabaseTable
- type OSPFNeighbor
- type OSPFNeighborTable
- type PhysicalInterface
- type RSVPSession
- type RSVPSessionData
- type Route
- type RouteTable
- type RoutingEngine
- type RoutingTable
- type Rule
- type SecurityContext
- type SecurityZones
- type SourceNatEntry
- type SourceNats
- type StaticNatEntry
- type StaticNats
- type Storage
- type SubModule
- type SubSubModule
- type SubSubSubModule
- type SystemStorage
- type TrimmedString
- type VCMember
- type VCMemberNeighbor
- type Views
- type VirtualChassis
- type Vlan
- type Vlans
- type Zone
- type ZoneInterface
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddressEntry ¶
type AddressEntry struct {
Name string `xml:"name"`
IP string `xml:"ip-prefix,omitempty"`
DNSName string `xml:"dns-name>name,omitempty"`
Wildcard string `xml:"wildcard-address>name,omitempty"`
}
AddressEntry contains information about each individual address-book entry.
type AddressFamily ¶
type AddressFamily struct {
Name TrimmedString `xml:"address-family-name"`
AggregatedEthernet TrimmedString `xml:"ae-bundle-name,omitempty"`
CIDR TrimmedString `xml:"interface-address>ifa-destination"`
IPAddress TrimmedString `xml:"interface-address>ifa-local"`
MTU TrimmedString `xml:"mtu"`
}
type AddressSet ¶
type AddressSet struct {
Name string `xml:"name"`
AddressEntries []AddressEntry `xml:"address"`
}
AddressSet contains all of the address-sets (groups) in the address-book.
type ArpEntry ¶
type ArpEntry struct {
MACAddress TrimmedString `xml:"mac-address"`
IPAddress TrimmedString `xml:"ip-address"`
Interface TrimmedString `xml:"interface-name"`
}
ArpEntry holds each individual ARP entry.
type ArpTable ¶
type ArpTable struct {
Count int `xml:"arp-entry-count"`
Entries []ArpEntry `xml:"arp-table-entry"`
}
ArpTable contains the ARP table on the device.
type AuthMethod ¶
AuthMethod defines how we want to authenticate to the device. If using a username and password to authenticate, the Credentials field must be populated like so:
[]string{"user", "password"}
If you are using an SSH prviate key for authentication, you must provide the username, path to the private key, and passphrase. On most systems, the private key is found in the following location:
~/.ssh/id_rsa
If you do not have a passphrase tied to your private key, then you can omit this field.
type BGPPeer ¶
type BGPPeer struct {
Address TrimmedString `xml:"peer-address"`
ASN int `xml:"peer-as"`
InputMessages int `xml:"input-messages"`
OutputMessages int `xml:"output-messages"`
QueuedRoutes int `xml:"route-queue-count"`
Flaps int `xml:"flap-count"`
ElapsedTime TrimmedString `xml:"elapsed-time"`
State TrimmedString `xml:"peer-state"`
RoutingTable TrimmedString `xml:"bgp-rib>name"`
ActivePrefixes int `xml:"bgp-rib>active-prefix-count"`
ReceivedPrefixes int `xml:"bgp-rib>received-prefix-count"`
AcceptedPrefixes int `xml:"bgp-rib>accepted-prefix-count"`
SuppressedPrefixes int `xml:"bgp-rib>suppressed-prefix-count"`
}
BGPPeer contains information about each individual BGP peer.
type BGPTable ¶
type BGPTable struct {
TotalGroups int `xml:"group-count"`
TotalPeers int `xml:"peer-count"`
DownPeers int `xml:"down-peer-count"`
Entries []BGPPeer `xml:"bgp-peer"`
}
BGPTable contains information about every BGP peer configured on the device.
type Chassis ¶
type Chassis struct {
Name TrimmedString `xml:"name"`
SerialNumber TrimmedString `xml:"serial-number"`
Description TrimmedString `xml:"description"`
Modules []Module `xml:"chassis-module"`
}
Chassis contains all of the hardware information for each chassis, such as a clustered pair of SRX's or a virtual-chassis configuration.
type CommitEntry ¶
type CommitEntry struct {
Sequence int `xml:"sequence-number"`
User string `xml:"user"`
Method string `xml:"client"`
Log string `xml:"log"`
Comment string `xml:"comment"`
Timestamp string `xml:"date-time"`
}
CommitEntry holds information about each prevous commit.
type CommitHistory ¶
type CommitHistory struct {
Entries []CommitEntry `xml:"commit-history"`
}
CommitHistory holds all of the commit entries.
func (CommitHistory) String ¶
func (c CommitHistory) String() string
type EnvironmentItem ¶
type EnvironmentItem struct {
Name TrimmedString `xml:"name"`
Class TrimmedString `xml:"class"`
Status TrimmedString `xml:"status"`
Temperature TrimmedString `xml:"temperature"`
}
type EnvironmentTable ¶
type EnvironmentTable struct {
EnvironmentItems []EnvironmentItem `xml:"environment-item"`
}
type EthernetSwitchingTable ¶
type EthernetSwitchingTable struct {
Entries []L2MACEntry `xml:"l2ng-l2ald-mac-entry-vlan"`
}
EthernetSwitchingTable contains the ethernet-switching table on the device.
type FileSystem ¶
type FileSystem struct {
Name TrimmedString `xml:"filesystem-name"`
TotalBlocks int `xml:"total-blocks"`
UsedBlocks int `xml:"used-blocks"`
AvailableBlocks int `xml:"available-blocks"`
UsedPercent TrimmedString `xml:"used-percent"`
MountedOn TrimmedString `xml:"mounted-on"`
}
FileSystem contains the information for each partition.
type FirewallPolicy ¶
type FirewallPolicy struct {
XMLName xml.Name `xml:"security-policies"`
Entries []SecurityContext `xml:"security-context"`
}
FirewallPolicy contains the entire firewall policy for the device.
type HardwareInventory ¶
type HardwareInventory struct {
Chassis []Chassis `xml:"chassis"`
}
HardwareInventory contains all the hardware information about the device.
type IKESAs ¶
type IKESAs struct {
IKESecurityAssociations []IKESecurityAssociation `xml:"ike-security-associations"`
}
get-ike-security-associations-information
type IKESecurityAssociation ¶
type IKESecurityAssociation struct {
IKESARemoteAddress TrimmedString `xml:"ike-sa-remote-address"`
IKESAIndex int `xml:"ike-sa-index"`
IKESAState TrimmedString `xml:"ike-sa-state"`
IKESAInitiatorCookie TrimmedString `xml:"ike-sa-initiator-cookie"`
IKESAResponderCookie TrimmedString `xml:"ike-sa-responder-cookie"`
IKESAExchangeType TrimmedString `xml:"ike-sa-exchange-type"`
}
type IPSecSABlock ¶
type IPSecSABlock struct {
SABlockState TrimmedString `xml:"sa-block-state"`
IPSecSecurityAssociations []IPSecSecurityAssociation `xml:"ipsec-security-associations"`
}
type IPSecSAs ¶
type IPSecSAs struct {
TotalActiveTunnels int `xml:"total-active-tunnels"`
TotalIPSecSAs int `xml:"total-ipsec-sas"`
IPSecSecurityAssociationsBlock IPSecSABlock `xml:"ipsec-security-associations-block"`
}
get-security-associations-information
type IPSecSecurityAssociation ¶
type IPSecSecurityAssociation struct {
SADirection TrimmedString `xml:"sa-direction"`
SATunnelIndex int `xml:"sa-tunnel-index"`
SASPI TrimmedString `xml:"sa-spi"`
SAAUXSPI TrimmedString `xml:"sa-aux-spi"`
SARemoteGateway TrimmedString `xml:"sa-remote-gateway"`
SAPort int `xml:"sa-port"`
SAVPNMonitoringState TrimmedString `xml:"sa-vpn-monitoring-state"`
SAProtocol TrimmedString `xml:"sa-protocol"`
SAESPEncryptionProtocol TrimmedString `xml:"sa-esp-encryption-protocol"`
SAHMACAlgorithm TrimmedString `xml:"sa-hmac-algorithm"`
SAHardLifetime int `xml:"sa-hard-lifetime"`
SALifesizeRemaining TrimmedString `xml:"sa-lifesize-remaining"`
SAVirtualSystem TrimmedString `xml:"sa-virtual-system"`
}
type ISISDatabaseEntry ¶
type ISISDatabaseEntry struct {
LSPID TrimmedString `xml:"lsp-id"`
SequenceNumber TrimmedString `xml:"sequence-number"`
Checksum TrimmedString `xml:"checksum"`
RemainingLifetime int `xml:"remaining-lifetime"`
LSPAttributes TrimmedString `xml:"lsp-attributes"`
}
type ISISDatabaseTable ¶
type ISISDatabaseTable struct {
Level int `xml:"level"`
LSPCount int `xml:"lsp-count"`
ISISDatabaseEntries []ISISDatabaseEntry `xml:"isis-database-entry"`
}
get-isis-database-information
type Interfaces ¶
type Interfaces struct {
Entries []PhysicalInterface `xml:"physical-interface"`
}
Interfaces contains information about every interface on the device.
type Junos ¶
type Junos struct {
Session *netconf.Session
Hostname string
RoutingEngines int
Platform []RoutingEngine
CommitTimeout time.Duration
}
Junos contains our session state.
func NewSession ¶
func NewSession(host string, auth *AuthMethod) (*Junos, error)
NewSession establishes a new connection to a Junos device that we will use to run our commands against. Authentication methods are defined using the AuthMethod struct, and are as follows:
username and password, SSH private key (with or without passphrase)
Please view the package documentation for AuthMethod on how to use these methods.
NOTE: most users should use this function, instead of the other NewSession* functions
func NewSessionFromNetconf ¶
NewSessionFromNetconf uses an existing netconf.Session to run our commands against
This is especially useful if you need to customize the SSH connection beyond what's supported in NewSession().
func NewSessionWithConfig ¶
func NewSessionWithConfig(host string, clientConfig *ssh.ClientConfig) (*Junos, error)
NewSessionWithConfig establishes a new connection to a Junos device that we will use to run our commands against.
This is especially useful if you need to customize the SSH connection beyond what's supported in NewSession().
func (*Junos) Command ¶
Command executes any operational mode command, such as "show" or "request". If you wish to return the results of the command, specify the format, which must be "text" or "xml" as the second parameter (optional).
func (*Junos) CommitCheck ¶
func (*Junos) CommitConfirm ¶
func (*Junos) CommitFull ¶
CommitFull does a full commit on the configuration, which requires all daemons to check and evaluate the new configuration. Useful for when you get an error with a commit or when you've changed the configuration significantly.
func (*Junos) CommitHistory ¶
func (j *Junos) CommitHistory() (*CommitHistory, error)
CommitHistory gathers all the information about the previous 5 commits.
func (*Junos) Config ¶
Config loads a given configuration file from your local machine, a remote (FTP or HTTP server) location, or via configuration statements from variables (type string or []string) within your script. Format must be "set", "text" or "xml".
func (*Junos) ConvertAddressBook ¶
ConvertAddressBook will generate the configuration needed to migrate from a zone-based address book to a global one. You can then use Config() to apply the changes if necessary.
func (*Junos) Diff ¶
Diff compares candidate config to current (rollback 0) or previous rollback. This is equivalent to 'show | compare' or 'show | compare rollback X' when in configuration mode.
func (*Junos) GatherFacts ¶
func (*Junos) GetConfig ¶
GetConfig returns the configuration starting at the given section. If section is omitted, the entire configuration is returned. Format must be "text" or "xml".
func (*Junos) HasPendingChanges ¶
HasPendingChanges reports whether there are uncommitted candidate configuration changes.
func (*Junos) Rescue ¶
Rescue will create or delete the rescue configuration given "save" or "delete" for the action.
func (*Junos) Rollback ¶
Rollback loads and commits the configuration of a given rollback number or rescue state, by specifying "rescue".
func (*Junos) SetCommitTimeout ¶
SetCommitTimeout will add the given delay time (in seconds) to the following commit functions: Lock(), Commit() and Unlock(). When configuring multiple devices, or having a large configuration to push, this can greatly reduce errors (especially if you're dealing with latency).
type L2MACEntry ¶
type L2MACEntry struct {
GlobalMACCount int `xml:"mac-count-global"`
LearnedMACCount int `xml:"learnt-mac-count"`
RoutingInstance TrimmedString `xml:"l2ng-l2-mac-routing-instance"`
VlanID int `xml:"l2ng-l2-vlan-id"`
MACEntries []MACEntry `xml:"l2ng-mac-entry"`
}
L2MACEntry contains information about every MAC address on each VLAN.
type LLDPNeighbor ¶
type LLDPNeighbor struct {
LocalPortId TrimmedString `xml:"lldp-local-port-id"`
LocalParentInterfaceName TrimmedString `xml:"lldp-local-parent-interface-name"`
RemoteChassisIdSubtype TrimmedString `xml:"lldp-remote-chassis-id-subtype"`
RemoteChassisId TrimmedString `xml:"lldp-remote-chassis-id"`
RemotePortDescription TrimmedString `xml:"lldp-remote-port-description"`
RemotePortId TrimmedString `xml:"lldp-remote-port-id"`
RemoteSystemName TrimmedString `xml:"lldp-remote-system-name"`
}
type LLDPNeighbors ¶
type LLDPNeighbors struct {
Entries []LLDPNeighbor `xml:"lldp-neighbor-information"`
}
type LogicalInterface ¶
type LogicalInterface struct {
Name TrimmedString `xml:"name"`
LocalIndex int `xml:"local-index"`
SNMPIndex int `xml:"snmp-index"`
Encapsulation TrimmedString `xml:"encapsulation"`
LAGInputPackets uint64 `xml:"lag-traffic-statistics>lag-bundle>input-packets"`
LAGInputPps int `xml:"lag-traffic-statistics>lag-bundle>input-pps"`
LAGInputBytes int `xml:"lag-traffic-statistics>lag-bundle>input-bytes"`
LAGInputBps int `xml:"lag-traffic-statistics>lag-bundle>input-bps"`
LAGOutputPackets uint64 `xml:"lag-traffic-statistics>lag-bundle>output-packets"`
LAGOutputPps int `xml:"lag-traffic-statistics>lag-bundle>output-pps"`
LAGOutputBytes int `xml:"lag-traffic-statistics>lag-bundle>output-bytes"`
LAGOutputBps int `xml:"lag-traffic-statistics>lag-bundle>output-bps"`
ZoneName TrimmedString `xml:"logical-interface-zone-name"`
InputPackets uint64 `xml:"traffic-statistics>input-packets"`
OutputPackets uint64 `xml:"traffic-statistics>output-packets"`
AddressFamilies []AddressFamily `xml:"address-family"`
LinkAddress TrimmedString `xml:"link-address,omitempty"`
}
LogicalInterface contains information about the logical interfaces tied to a physical interface.
type MACEntry ¶
type MACEntry struct {
VlanName TrimmedString `xml:"l2ng-l2-mac-vlan-name"`
MACAddress TrimmedString `xml:"l2ng-l2-mac-address"`
Age TrimmedString `xml:"l2ng-l2-mac-age"`
Flags TrimmedString `xml:"l2ng-l2-mac-flags"`
LogicalInterface TrimmedString `xml:"l2ng-l2-mac-logical-interface"`
}
MACEntry contains information about each individual MAC address. Flags are: S - static MAC, D - dynamic MAC, L - locally learned, P - persistent static, SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC.
type MPLSLSPEntry ¶
type MPLSLSPEntry struct {
DestinationAddress TrimmedString `xml:"destination-address"`
SourceAddress TrimmedString `xml:"source-address"`
LSPState TrimmedString `xml:"lsp-state"`
RouteCount int `xml:"route-count"`
ActivePath TrimmedString `xml:"active-path"`
IsPrimary bool `xml:"is-primary"`
Name TrimmedString `xml:"lsp-name"`
LSPDescription TrimmedString `xml:"lsp-description"`
}
type MPLSLSPTable ¶
type MPLSLSPTable struct {
RSVPSessionDataEntry RSVPSessionData `xml:"rsvp-session-data"`
}
type Module ¶
type Module struct {
Name TrimmedString `xml:"name"`
Version TrimmedString `xml:"version,omitempty"`
PartNumber TrimmedString `xml:"part-number"`
SerialNumber TrimmedString `xml:"serial-number"`
Description TrimmedString `xml:"description"`
CLEICode TrimmedString `xml:"clei-code"`
ModuleNumber TrimmedString `xml:"module-number"`
SubModules []SubModule `xml:"chassis-sub-module"`
}
Module contains information about each individual module.
type OSPFAreaHeader ¶
type OSPFAreaHeader struct {
OSPFArea TrimmedString `xml:"ospf-area"`
}
type OSPFDatabaseEntry ¶
type OSPFDatabaseEntry struct {
LSAType TrimmedString `xml:"lsa-type"`
LSAID TrimmedString `xml:"lsa-id"`
AdvertisingRouter TrimmedString `xml:"advertising-router"`
SequenceNumber TrimmedString `xml:"sequence-number"`
Age int `xml:"age"`
Options TrimmedString `xml:"options"`
Checksum TrimmedString `xml:"checksum"`
LSALength int `xml:"lsa-length"`
OurEntry bool `xml:"our-entry"`
}
type OSPFDatabaseTable ¶
type OSPFDatabaseTable struct {
OSPFAreaHeaders []OSPFAreaHeader `xml:"ospf-area-header"`
OSPFDatabaseEntries []OSPFDatabaseEntry `xml:"ospf-database"`
}
type OSPFNeighbor ¶
type OSPFNeighbor struct {
NeighborAddress TrimmedString `xml:"neighbor-address"`
InterfaceName TrimmedString `xml:"interface-name"`
OSPFNeighborState TrimmedString `xml:"ospf-neighbor-state"`
NeighborID TrimmedString `xml:"neighbor-id"`
NeighborPriority int `xml:"neighbor-priority"`
ActivityTimer int `xml:"activity-timer"`
}
type OSPFNeighborTable ¶
type OSPFNeighborTable struct {
OSPFNeighbors []OSPFNeighbor `xml:"ospf-neighbor"`
}
type PhysicalInterface ¶
type PhysicalInterface struct {
Name TrimmedString `xml:"name"`
AdminStatus TrimmedString `xml:"admin-status"`
OperStatus TrimmedString `xml:"oper-status"`
LocalIndex int `xml:"local-index"`
SNMPIndex int `xml:"snmp-index"`
LinkLevelType TrimmedString `xml:"link-level-type"`
InterfaceType TrimmedString `xml:"if-type"`
MTU TrimmedString `xml:"mtu"`
LinkMode TrimmedString `xml:"link-mode"`
Speed TrimmedString `xml:"speed"`
FlowControl TrimmedString `xml:"if-flow-control"`
AutoNegotiation TrimmedString `xml:"if-auto-negotiation"`
HardwarePhysicalAddress TrimmedString `xml:"hardware-physical-address"`
Flapped TrimmedString `xml:"interface-flapped"`
InputBps int `xml:"traffic-statistics>input-bps"`
InputPps int `xml:"traffic-statistics>input-pps"`
OutputBps int `xml:"traffic-statistics>output-bps"`
OutputPps int `xml:"traffic-statistics>output-pps"`
LogicalInterfaces []LogicalInterface `xml:"logical-interface"`
}
PhysicalInterface contains information about each individual physical interface.
type RSVPSession ¶
type RSVPSession struct {
MPLSLSP MPLSLSPEntry `xml:"mpls-lsp"`
}
type RSVPSessionData ¶
type RSVPSessionData struct {
SessionType TrimmedString `xml:"session-type"`
Count int `xml:"session-count"`
RSVPSessions []RSVPSession `xml:"rsvp-session"`
DisplayCount int `xml:"display-count"`
UpCount int `xml:"up-count"`
DownCount int `xml:"down-count"`
}
type Route ¶
type Route struct {
Destination TrimmedString `xml:"rt-destination"`
Active TrimmedString `xml:"rt-entry>active-tag"`
Protocol TrimmedString `xml:"rt-entry>protocol-name"`
Preference int `xml:"rt-entry>preference"`
Age TrimmedString `xml:"rt-entry>age"`
NextHop TrimmedString `xml:"rt-entry>nh>to,omitempty"`
NextHopInterface TrimmedString `xml:"rt-entry>nh>via,omitempty"`
NextHopTable TrimmedString `xml:"rt-entry>nh>nh-table,omitempty"`
NextHopLocalInterface TrimmedString `xml:"rt-entry>nh>nh-local-interface,omitempty"`
}
Route holds information about each individual route.
type RouteTable ¶
type RouteTable struct {
Name TrimmedString `xml:"table-name"`
TotalRoutes int `xml:"total-route-count"`
ActiveRoutes int `xml:"active-route-count"`
HolddownRoutes int `xml:"holddown-route-count"`
HiddenRoutes int `xml:"hidden-routes"`
Entries []Route `xml:"rt"`
}
RouteTable holds all the route information for each table.
type RoutingEngine ¶
RoutingEngine contains the hardware and software information for each route engine.
type RoutingTable ¶
type RoutingTable struct {
RouteTables []RouteTable `xml:"route-table"`
}
RoutingTable contains every routing table on the device.
type Rule ¶
type Rule struct {
Name TrimmedString `xml:"policy-name"`
State TrimmedString `xml:"policy-state"`
Identifier int `xml:"policy-identifier"`
ScopeIdentifier int `xml:"scope-policy-identifier"`
SequenceNumber int `xml:"policy-sequence-number"`
SourceAddresses []TrimmedString `xml:"source-addresses>source-address>address-name"`
DestinationAddresses []TrimmedString `xml:"destination-addresses>destination-address>address-name"`
Applications []TrimmedString `xml:"applications>application>application-name"`
SourceIdentities []TrimmedString `xml:"source-identities>source-identity>role-name"`
PolicyAction TrimmedString `xml:"policy-action>action-type"`
PolicyTCPOptions struct {
SYNCheck TrimmedString `xml:"policy-tcp-options-syn-check"`
SequenceCheck TrimmedString `xml:"policy-tcp-options-sequence-check"`
} `xml:"policy-action>policy-tcp-options"`
}
Rule contains each individual element that makes up a security policy rule.
type SecurityContext ¶
type SecurityContext struct {
SourceZone TrimmedString `xml:"context-information>source-zone-name"`
DestinationZone TrimmedString `xml:"context-information>destination-zone-name"`
Rules []Rule `xml:"policies>policy-information"`
}
SecurityContext contains the policies for each context, such as rules from trust to untrust zones.
type SecurityZones ¶
type SecurityZones struct {
XMLName xml.Name `xml:"configuration"`
Zones []Zone `xml:"security>zones>security-zone"`
}
SecurityZones contains all of our security-zone information.
type SourceNatEntry ¶
type SourceNatEntry struct {
Name TrimmedString `xml:"rule-name"`
SetName TrimmedString `xml:"rule-set-name"`
ID TrimmedString `xml:"rule-id"`
RuleMatchingPosition int `xml:"rule-matching-position"`
FromContext TrimmedString `xml:"rule-from-context"`
FromZone TrimmedString `xml:"rule-from-context-name"`
ToContext TrimmedString `xml:"rule-to-context"`
ToZone TrimmedString `xml:"rule-to-context-name"`
SourceAddressLowRange TrimmedString `xml:"source-address-range-entry>rule-source-address-low-range"`
SourceAddressHighRange TrimmedString `xml:"source-address-range-entryrule-source-address-high-range"`
SourceAddresses []TrimmedString `xml:"source-address-range-entry>rule-source-address"`
DestinationAddresses []TrimmedString `xml:"destination-address-range-entry>rule-destination-address"`
DestinationPortLow int `xml:"destination-port-entry>rule-destination-port-low"`
DestinationPortHigh int `xml:"destination-port-entry>rule-destination-port-high"`
SourcePortLow int `xml:"source-port-entry>rule-source-port-low"`
SourcePortHigh int `xml:"source-port-entry>rule-source-port-high"`
SourceNatProtocol TrimmedString `xml:"src-nat-protocol-entry"`
RuleAction TrimmedString `xml:"source-nat-rule-action-entry>source-nat-rule-action"`
PersistentNatType TrimmedString `xml:"source-nat-rule-action-entry>persistent-nat-type"`
PersistentNatMappingType TrimmedString `xml:"source-nat-rule-action-entry>persistent-nat-mapping-type"`
PersistentNatTimeout int `xml:"source-nat-rule-action-entry>persistent-nat-timeout"`
PersistentNatMaxSession int `xml:"source-nat-rule-action-entry>persistent-nat-max-session"`
TranslationHits int `xml:"source-nat-rule-hits-entry>rule-translation-hits"`
SuccessfulSessions int `xml:"source-nat-rule-hits-entry>succ-hits"`
ConcurrentHits int `xml:"source-nat-rule-hits-entry>concurrent-hits"`
}
SourceNatEntry holds each individual source NAT entry.
type SourceNats ¶
type SourceNats struct {
Count int
Entries []SourceNatEntry `xml:"source-nat-rule-entry"`
}
SourceNats contains the source NATs configured on the device.
type StaticNatEntry ¶
type StaticNatEntry struct {
Name TrimmedString `xml:"rule-name"`
SetName TrimmedString `xml:"rule-set-name"`
ID TrimmedString `xml:"rule-id"`
RuleMatchingPosition int `xml:"rule-matching-position"`
FromContext TrimmedString `xml:"rule-from-context"`
FromZone TrimmedString `xml:"rule-from-context-name"`
SourceAddressLowRange TrimmedString `xml:"static-source-address-range-entry>rule-source-address-low-range"`
SourceAddressHighRange TrimmedString `xml:"static-source-address-range-entry>rule-source-address-high-range"`
DestinaionAddressPrefix TrimmedString `xml:"rule-destination-address-prefix"`
DestinationPortLow int `xml:"rule-destination-port-low"`
DestinationPortHigh int `xml:"rule-destination-port-high"`
HostAddressPrefix TrimmedString `xml:"rule-host-address-prefix"`
HostPortLow int `xml:"rule-host-port-low"`
HostPortHigh int `xml:"rule-host-port-high"`
Netmask TrimmedString `xml:"rule-address-netmask"`
RoutingInstance TrimmedString `xml:"rule-host-routing-instance"`
TranslationHits int `xml:"rule-translation-hits"`
SuccessfulSessions int `xml:"succ-hits"`
ConcurrentHits int `xml:"concurrent-hits"`
}
StaticNatEntry holds each individual static NAT entry.
type StaticNats ¶
type StaticNats struct {
Count int
Entries []StaticNatEntry `xml:"static-nat-rule-entry"`
}
StaticNats contains the static NATs configured on the device.
type Storage ¶
type Storage struct {
Entries []SystemStorage `xml:"system-storage-information"`
}
Storage contains information about all of the file systems on the device.
type SubModule ¶
type SubModule struct {
Name TrimmedString `xml:"name"`
Version TrimmedString `xml:"version,omitempty"`
PartNumber TrimmedString `xml:"part-number"`
SerialNumber TrimmedString `xml:"serial-number"`
Description TrimmedString `xml:"description"`
CLEICode TrimmedString `xml:"clei-code"`
ModuleNumber TrimmedString `xml:"module-number"`
SubSubModules []SubSubModule `xml:"chassis-sub-sub-module"`
}
SubModule contains information about each individual sub-module.
type SubSubModule ¶
type SubSubModule struct {
Name TrimmedString `xml:"name"`
Version TrimmedString `xml:"version,omitempty"`
PartNumber TrimmedString `xml:"part-number"`
SerialNumber TrimmedString `xml:"serial-number"`
Description TrimmedString `xml:"description"`
SubSubSubModules []SubSubSubModule `xml:"chassis-sub-sub-sub-module"`
}
SubSubModule contains information about each sub-sub module, such as SFP's.
type SubSubSubModule ¶
type SubSubSubModule struct {
Name TrimmedString `xml:"name"`
Version TrimmedString `xml:"version,omitempty"`
PartNumber TrimmedString `xml:"part-number"`
SerialNumber TrimmedString `xml:"serial-number"`
Description TrimmedString `xml:"description"`
}
SubSubSubModule contains information about each sub-sub-sub module, such as SFP's on a PIC, which is tied to a MIC on an MX.
type SystemStorage ¶
type SystemStorage struct {
FileSystems []FileSystem `xml:"filesystem"`
}
SystemStorage stores the file system information for each node, routing-engine, etc. on the device.
type TrimmedString ¶
type TrimmedString string
func (TrimmedString) String ¶
func (t TrimmedString) String() string
func (*TrimmedString) UnmarshalXML ¶
func (t *TrimmedString) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
type VCMember ¶
type VCMember struct {
Status TrimmedString `xml:"member-status"`
ID int `xml:"member-id"`
FPCSlot TrimmedString `xml:"fpc-slot"`
SerialNumber TrimmedString `xml:"member-serial-number"`
Model TrimmedString `xml:"member-model"`
Priority int `xml:"member-priority"`
MixedMode TrimmedString `xml:"member-mixed-mode"`
RouteMode TrimmedString `xml:"member-route-mode"`
Role TrimmedString `xml:"member-role"`
Neighbors []VCMemberNeighbor `xml:"neighbor-list>neighbor"`
}
VCMember contains information about each individual virtual-chassis member.
type VCMemberNeighbor ¶
type VCMemberNeighbor struct {
ID int `xml:"neighbor-id"`
Interface TrimmedString `xml:"neighbor-interface"`
}
VCMemberNeighbor contains information about each virtual-chassis member neighbor.
type Views ¶
type Views struct {
Arp ArpTable
BGP BGPTable
EthernetSwitch EthernetSwitchingTable
FirewallPolicy FirewallPolicy
Interface Interfaces
Inventory HardwareInventory
LLDPNeighbors LLDPNeighbors
Route RoutingTable
SourceNat SourceNats
StaticNat StaticNats
Storage Storage
VirtualChassis VirtualChassis
Vlan Vlans
Environment EnvironmentTable
IKESAs IKESAs
IPSecSAs IPSecSAs
OSPFNeighbor OSPFNeighborTable
OSPFDatabase OSPFDatabaseTable
ISISDatabase ISISDatabaseTable
LSPs MPLSLSPTable
}
Views contains the information for the specific views. Note that some views aren't available for specific hardware platforms, such as the "VirtualChassis" view on an SRX.
type VirtualChassis ¶
type VirtualChassis struct {
PreProvisionedVCID TrimmedString `xml:"preprovisioned-virtual-chassis-information>virtual-chassis-id"`
PreProvisionedVCMode TrimmedString `xml:"preprovisioned-virtual-chassis-information>virtual-chassis-mode"`
Members []VCMember `xml:"member-list>member"`
}
VirtualChassis contains information regarding the virtual-chassis setup for the device.
type Vlan ¶
type Vlan struct {
Name TrimmedString `xml:"l2ng-l2rtb-vlan-name"`
Tag int `xml:"l2ng-l2rtb-vlan-tag"`
MemberInterfaces []TrimmedString `xml:"l2ng-l2rtb-vlan-member>l2ng-l2rtb-vlan-member-interface"`
}
Vlan contains information about each individual VLAN.
type Vlans ¶
type Vlans struct {
Entries []Vlan `xml:"l2ng-l2ald-vlan-instance-group"`
}
Vlans contains all of the VLAN information on the device.
type Zone ¶
type Zone struct {
Name string `xml:"name"`
AddressEntries []AddressEntry `xml:"address-book>address"`
AddressSets []AddressSet `xml:"address-book>address-set"`
ZoneInterfaces []ZoneInterface `xml:"interfaces"`
}
Zone contains information about each individual security-zone.
type ZoneInterface ¶
type ZoneInterface struct {
Name string `xml:"name"`
}
ZoneInterface contains a list of all interfaces that belong to the zone.
