-- *******************************************************************
-- Juniper enterprise Network Address Translation (NAT) MIB.
--
-- Copyright (c) 2001-2007, Juniper Networks, Inc.
-- All rights reserved.
--
-- The contents of this document are subject to change without notice.
-- *******************************************************************

	JUNIPER-JS-NAT-MIB DEFINITIONS ::= BEGIN

	IMPORTS

        Gauge32, Integer32,
        NOTIFICATION-TYPE,
    	MODULE-IDENTITY, OBJECT-TYPE	FROM SNMPv2-SMI

	InterfaceIndex                  FROM IF-MIB

	DateAndTime,
    	DisplayString		        FROM SNMPv2-TC 
        InetAddressIPv4 	        FROM INET-ADDRESS-MIB

	jnxJsNAT                        FROM JUNIPER-JS-SMI;


	jnxJsNatMIB  	MODULE-IDENTITY
    	LAST-UPDATED  "200704132022Z" -- April 13, 2007
    	ORGANIZATION  "Juniper Networks, Inc."
    	CONTACT-INFO
					"Juniper Technical Assistance Center
						Juniper Networks, Inc.
						1194 N. Mathilda Avenue
						Sunnyvale, CA 94089

						E-mail: support@juniper.net
						HTTP://www.juniper.net"
    	DESCRIPTION
            "This module defines the object that are used to monitor
             network address translation attributes."

        REVISION        "200704132022Z" -- April 13, 2007
    	DESCRIPTION 	"Creation Date"

    ::= { jnxJsNAT 1 }   


    jnxJsNatNotifications OBJECT IDENTIFIER ::= { jnxJsNatMIB 0 }
    jnxJsNatObjects       OBJECT IDENTIFIER ::= { jnxJsNatMIB 1 }
    jnxJsNatTrapVars      OBJECT IDENTIFIER ::= { jnxJsNatMIB 2 }


    -- ***************************************************************
    -- Source NAT (Network Address Translation) Table  
    -- ***************************************************************

    jnxJsSrcNatNumOfEntries OBJECT-TYPE
        SYNTAX      Gauge32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Total number of dynamic addresses being translated.  

			 jnxJsSrcNatNumOfEntries provides the total number 
		     of entries in the jnxJsSrcNatTable. "
            ::= { jnxJsNatObjects 1 }
	

    jnxJsSrcNatTable OBJECT-TYPE
        SYNTAX        SEQUENCE OF JnxJsSrcNatEntry 
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "This table exposes the source NAT translation 
			 attributes of the translated addresses. 

			 When performing source IP address translation, the device 
			 translates the original source IP address and/or port 
			 number to different one.  The resource, address source pools
			 provide the security device with a supply of addresses from 
			 which to draw when performing source network address translation.

			 The security device has the following types of source pools:
				- source pool with PAT (Port Address Translation)
				- source pool without PAT
				- Static Source Pool

			 This table contains information on source IP address 
			 translation only."
    	::= { jnxJsNatObjects 2 }   

    jnxJsSrcNatEntry OBJECT-TYPE
        SYNTAX        JnxJsSrcNatEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "Source NAT address entries.  It is indexed by the address  
			 pool table and the address allocated. "
        INDEX   { jnxJsNatSrcIpPoolName,
				  jnxJsNatSrcGlobalAddr  }
        ::= { jnxJsSrcNatTable 1 }

    JnxJsSrcNatEntry ::= SEQUENCE
    {
        jnxJsNatSrcIpPoolName			DisplayString,
		jnxJsNatSrcGlobalAddr			InetAddressIPv4,
		jnxJsNatSrcPortPoolType			INTEGER,
		jnxJsNatSrcNumOfPortInuse 		INTEGER,
		jnxJsNatSrcNumOfSessions 		INTEGER,
		jnxJsNatSrcAssocatedIf 			InterfaceIndex
    }


    jnxJsNatSrcIpPoolName OBJECT-TYPE
        SYNTAX        DisplayString (SIZE(1..32)) 
        MAX-ACCESS    accessible-for-notify 
        STATUS        current
        DESCRIPTION
        	"The name of dynamic source IP address pool. 

			 This is the address pool where the translated   
			 address is allocated from. "
		::= { jnxJsSrcNatEntry 1 }

	jnxJsNatSrcGlobalAddr OBJECT-TYPE
        SYNTAX        InetAddressIPv4
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
        	"The name of dynamic source IP address allocated from 
		 	the address pool used in the NAT translation. "
		::= { jnxJsSrcNatEntry 2 }

	jnxJsNatSrcPortPoolType OBJECT-TYPE
        SYNTAX        INTEGER {
						withPAT 		(1),
						withoutPAT		(2),
						static 			(3)
						} 		 	
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
        	"Source NAT can do address translation with or without port 
		 	 address translation (PAT).  The source port pool type indicates
			 whether the address translation is done with port or without
         	 the port, or if it is a static translation.
		
			 withPAT(Source Pool with PAT): the security device translates 
			 both source IP address and port number of the packets 

			 withoutPAT (Source Pool without PAT): the device performs source 
			 network address translation for the IP address without 
			 performing port address translation (PAT) for the source port
             number.

			 Static translation means that one range of IP addresses is 
		     statically mapped one to one to a shifted range of IP addresses. 
			 "
		::= { jnxJsSrcNatEntry 3 }

	jnxJsNatSrcNumOfPortInuse OBJECT-TYPE
        SYNTAX        INTEGER
        MAX-ACCESS    read-only 
        STATUS        current
        DESCRIPTION
       	 	"The number of ports in use for this NAT address entry.

			 This attribute is only applicable to NAT translation with 
			 PAT."
		::= { jnxJsSrcNatEntry 4 }

	jnxJsNatSrcNumOfSessions OBJECT-TYPE
        SYNTAX        INTEGER
        MAX-ACCESS    read-only 
        STATUS        current
        DESCRIPTION
        	"The number of sessions are in use based on this NAT address 
			 entry.

			 This attribute is only applicable to NAT translation without PAT."
		::= { jnxJsSrcNatEntry 5 }

	jnxJsNatSrcAssocatedIf OBJECT-TYPE
        SYNTAX        InterfaceIndex
        MAX-ACCESS    read-only 
        STATUS        current
        DESCRIPTION
        	"The index of interface associated with this NAT address entry. 

                 This is an unique value, greater than zero, for each 
                 interface."
		::= { jnxJsSrcNatEntry 6 }


    -- ***************************************************************
    --  Port Usage of Interface Source Pool 
    -- ***************************************************************

    jnxJsNatIfSrcPoolPortTable OBJECT-TYPE
        SYNTAX        SEQUENCE OF JnxJsNatIfSrcPoolPortEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
			"This table monitors the port usage of the NAT interface 
			 source IP address pool.

			 Interface source pool is pre-defined.  This source pool is
			 referenced in a policy it is configured.  The security 
			 device translates the source IP address to the address of
             the egress interface for the traffic matching a policy which 
             references interface source pool.  The security device always 
             applies port address translation (PAT) for interface source
             pool. "
        ::= { jnxJsNatObjects 3 }  

    jnxJsNatIfSrcPoolPortEntry OBJECT-TYPE
        SYNTAX        JnxJsNatIfSrcPoolPortEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "Source NAT address entries.  It is indexed by the address  
             pool table and the address. "
        INDEX   { jnxJsNatIfSrcPoolIndex }
        ::= { jnxJsNatIfSrcPoolPortTable 1 }

    JnxJsNatIfSrcPoolPortEntry ::= SEQUENCE
    {
		jnxJsNatIfSrcPoolIndex 		         INTEGER,
		jnxJsNatIfSrcPoolTotalSinglePorts    INTEGER,
		jnxJsNatIfSrcPoolAllocSinglePorts    INTEGER,
        jnxJsNatIfSrcPoolTotalTwinPorts      INTEGER,
        jnxJsNatIfSrcPoolAllocTwinPorts      INTEGER
    }

    jnxJsNatIfSrcPoolIndex OBJECT-TYPE
        SYNTAX        INTEGER(0..2147483647)
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
        	"The index of the port pool of this address pool."
    ::= { jnxJsNatIfSrcPoolPortEntry 1 }

    jnxJsNatIfSrcPoolTotalSinglePorts OBJECT-TYPE
        SYNTAX        INTEGER
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
        	"The total number of single ports in a port pool."
    ::= { jnxJsNatIfSrcPoolPortEntry 2 }

    jnxJsNatIfSrcPoolAllocSinglePorts OBJECT-TYPE
        SYNTAX        INTEGER
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
        	"The number of single ports in a port pool allocated 
			 or inuse."
    ::= { jnxJsNatIfSrcPoolPortEntry 3 }

    jnxJsNatIfSrcPoolTotalTwinPorts OBJECT-TYPE
        SYNTAX        INTEGER
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
        	"The total number of twin ports in a port pool."
    ::= { jnxJsNatIfSrcPoolPortEntry 4 }

    jnxJsNatIfSrcPoolAllocTwinPorts OBJECT-TYPE
        SYNTAX        INTEGER
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
        	"The number of twin ports in a port pool allocated 
			 or inuse."
    ::= { jnxJsNatIfSrcPoolPortEntry 5 }



    -- ***************************************************************
    --  NAT Trap definition
    -- ***************************************************************

    --
    -- NAT Address Pool Utilization Threshold Status 
    -- 
    jnxJsNatAddrPoolThresholdStatus NOTIFICATION-TYPE
		OBJECTS			{ jnxJsNatSrcIpPoolName,
						  jnxJsNatAddrPoolUtil }
        STATUS          current
        DESCRIPTION
             "The NAT address pool untilization threshold status
              trap signifies that the address pool utilization
              is either exceeds certain percentage, or clear of 
              that percentage.
					
			  jnxJsNatSrcIpPoolName is the name of the resource pool
			  jnxJsNatAddrPoolUtil is the percentage of utilization 
              of the address pool." 
        ::= { jnxJsNatNotifications 1 }
	
	--
	-- Trap variables 
	-- 
	jnxJsNatAddrPoolUtil OBJECT-TYPE
		SYNTAX      Integer32 (0..100)
		MAX-ACCESS  accessible-for-notify
		STATUS      current
		DESCRIPTION
			"The dynamic address pool utilization in percentage."
        ::= { jnxJsNatTrapVars 1 }


    -- ***************************************************************
    --  END of File 
    -- ***************************************************************

END 
